diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..ae64e38 Binary files /dev/null and b/.DS_Store differ diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 0000000..73fa02f --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,190 @@ +version: 2 +jobs: + build: + docker: + - image: zondax/circleci:latest + steps: + - checkout + - run: git submodule update --init --recursive + - run: cmake -DCMAKE_BUILD_TYPE=Debug . && make + # Unfortunately need to disable leak sanitizer https://github.com/google/sanitizers/issues/916 + # Still run all other ASAN components + - run: GTEST_COLOR=1 ASAN_OPTIONS=detect_leaks=0 ctest -VV + + build_only_rust: + docker: + - image: zondax/rust-ci:latest + steps: + - checkout + - run: + name: rustfmt + command: | + cd ~/project/app/rust + cargo fmt --version + cargo fmt -- --check + - run: + name: clippy + command: | + cd ~/project/app/rust + cargo clippy --version + cargo clippy --all-features --all-targets || true + - run: + name: audit + command: | + cd ~/project/app/rust + cargo audit --version + cargo audit + - run: + name: run tests + command: | + cd ~/project/app/rust + cargo test + + build_ledger: + docker: + - image: zondax/builder-bolos:latest + working_directory: ~/project + environment: + BOLOS_SDK: /home/zondax/project/deps/nanos-secure-sdk + BOLOS_ENV: /opt/bolos + steps: + - checkout + # Docker entrypoint is not considered + - run: git submodule update --init --recursive + - run: + name: Build Standard light parser app + command: | + source /home/zondax/.cargo/env + make + - run: + name: Build Standard full parser app + command: | + source /home/zondax/.cargo/env + SUPPORT_SR25519=1 SUBSTRATE_PARSER_FULL=1 make + - run: + name: Build SR25519 app + command: | + source /home/zondax/.cargo/env + SUPPORT_SR25519=1 make + + test_zemu: + machine: + image: ubuntu-2004:202101-01 + resource_class: large + working_directory: ~/repo + environment: + BASH_ENV: "/opt/circleci/.nvm/nvm.sh" + steps: + - checkout + - run: git submodule update --init --recursive + - run: sudo apt-get update -y && sudo apt-get install -y libusb-1.0.0 libudev-dev + - run: + name: Install rust + command: | + sudo apt-get update + sudo apt-get install -y cmake binutils-dev libcurl4-openssl-dev libiberty-dev libelf-dev libdw-dev + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- --no-modify-path --default-toolchain none -y; + no_output_timeout: 1800s + - run: + name: Install node + yarn + command: | + nvm install 14.4.0 + nvm use 14.4.0 + npm install -g yarn + - run: + name: Build Ledger app + command: | + SUBSTRATE_PARSER_FULL=1 make buildS + make clean + SUBSTRATE_PARSER_FULL=1 make buildX + - run: + name: Build/Install build js deps + command: | + nvm use 14.4.0 + export PATH=~/.cargo/bin:$PATH + make zemu_install + - run: + name: Run zemu tests + command: | + nvm use 14.4.0 + export PATH=~/.cargo/bin:$PATH + make zemu_test + + test_zemu_sr25519: + machine: + image: ubuntu-2004:202101-01 + resource_class: large + working_directory: ~/repo + environment: + BASH_ENV: "/opt/circleci/.nvm/nvm.sh" + steps: + - checkout + - run: git submodule update --init --recursive + - run: sudo apt-get update -y && sudo apt-get install -y libusb-1.0.0 libudev-dev + - run: + name: Install rust + command: | + sudo apt-get update + sudo apt-get install -y cmake binutils-dev libcurl4-openssl-dev libiberty-dev libelf-dev libdw-dev + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- --no-modify-path --default-toolchain none -y; + no_output_timeout: 1800s + - run: + name: Install node + yarn + command: | + nvm install 14.4.0 + nvm use 14.4.0 + npm install -g yarn + - run: + name: Build Ledger app + command: | + make SUBSTRATE_PARSER_FULL=1 build_sr25519 + - run: + name: Build/Install build js deps + command: | + nvm use 14.4.0 + export PATH=~/.cargo/bin:$PATH + make zemu_install + - run: + name: Run zemu tests for sr25519 + command: | + nvm use 14.4.0 + export PATH=~/.cargo/bin:$PATH + cd tests_zemu && yarn testSR25519 + + build_package: + docker: + - image: zondax/builder-bolos@sha256:0e0097c01ef3c6c964fea8d8b6e3a584f4ff209a04ec68b6b2b4aeab64379c23 + environment: + BOLOS_SDK: /home/zondax/project/deps/nanos-secure-sdk + BOLOS_ENV: /opt/bolos + steps: + - checkout + - run: git submodule update --init --recursive + - run: + name: Build + command: | + source /home/zondax/.cargo/env + cd /home/zondax/project + make + - run: /home/zondax/go/bin/ghr -t ${GITHUB_TOKEN} -u ${CIRCLE_PROJECT_USERNAME} -r ${CIRCLE_PROJECT_REPONAME} -c ${CIRCLE_SHA1} -delete $(/home/zondax/project/app/pkg/installer_s.sh version) /home/zondax/project/app/pkg/installer_s.sh + +workflows: + version: 2 + + default: + jobs: + - build + - build_only_rust + - build_ledger + - test_zemu + - test_zemu_sr25519 + - build_package: + requires: + - build + - build_ledger + - test_zemu + - test_zemu_sr25519 + filters: + branches: + only: + - master diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..2d7db14 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,16 @@ +# top-most EditorConfig file +root = true + +[*] +charset = utf-8 +trim_trailing_whitespace = true +end_of_line = lf +insert_final_newline = true + +[*.{c,h,cpp,hpp}] +indent_style = space +indent_size = 4 + +[*.{yml,sh}] +indent_style = space +indent_size = 2 diff --git a/.gdbinit b/.gdbinit new file mode 100644 index 0000000..8abe1fb --- /dev/null +++ b/.gdbinit @@ -0,0 +1,11 @@ +# https://www.jetbrains.com/help/clion/configuring-debugger-options.html#gdbinit-lldbinit +# +# You need to create `$HOME/.gdbinit` with the following content: +# set auto-load local-gdbinit on +# add-auto-load-safe-path / + +set architecture arm +handle SIGILL nostop pass noprint +add-symbol-file app/bin/app.elf 0x40000000 +set backtrace limit 20 +b *0x40000000 diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml new file mode 100644 index 0000000..304767d --- /dev/null +++ b/.github/workflows/main.yml @@ -0,0 +1,153 @@ +name: Build +on: [push] + +jobs: + configure: + runs-on: ubuntu-latest + outputs: + uid_gid: ${{ steps.get-user.outputs.uid_gid }} + steps: + - id: get-user + run: echo "::set-output name=uid_gid::$(id -u):$(id -g)" + + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + with: + submodules: true + - name: Install deps + run: | + sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 10 + make deps + brew install conan + - run: cmake -DCMAKE_BUILD_TYPE=Debug . && make + - run: GTEST_COLOR=1 ASAN_OPTIONS=detect_leaks=0 ctest -VV + + build_only_rust: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + with: + submodules: true + - name: Install deps + run: | + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y + - name: rustfmt + run: | + cd ./app/rust + cargo fmt --version + cargo fmt -- --check + - name: clippy + run: | + cd ./app/rust + cargo clippy --version + cargo clippy --all-features --all-targets || true + - name: audit + run: | + cd ./app/rust + cargo audit --version + cargo audit + - name: run tests + run: | + cd ./app/rust + cargo test + + build_ledger: + needs: configure + runs-on: ubuntu-latest + container: + image: zondax/builder-bolos:latest + options: --user ${{ needs.configure.outputs.uid_gid }} + env: + BOLOS_SDK: /__w/ledger-edgeware/ledger-edgeware/deps/nanos-secure-sdk + BOLOS_ENV: /opt/bolos + HOME: /home/zondax_circle + steps: + - name: Checkout + uses: actions/checkout@v2 + with: + submodules: true + - name: Build Standard app + shell: bash -l {0} + run: | + source $HOME/.cargo/env + make + - name: Build SR25519 app + shell: bash -l {0} + run: | + source $HOME/.cargo/env + SUPPORT_SR25519=1 make + + test_zemu: + runs-on: ubuntu-latest + steps: + - name: Test + run: | + id + echo $HOME + echo $DISPLAY + - name: Checkout + uses: actions/checkout@v2 + with: + submodules: true + - run: sudo apt-get update -y && sudo apt-get install -y libusb-1.0.0 libudev-dev + - name: Install rust + run: | + sudo apt-get update + sudo apt-get install -y cmake binutils-dev libcurl4-openssl-dev libiberty-dev libelf-dev libdw-dev + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- --no-modify-path --default-toolchain none -y; + - name: Install node + uses: actions/setup-node@v2 + with: + node-version: '14.4.0' + - name: Install yarn + run: | + npm install -g yarn + - name: Build Ledger app + run: | + make build_full_parser_s + make clean + make build_full_parser_x + - name: Build/Install build js deps + run: | + export PATH=~/.cargo/bin:$PATH + make zemu_install + - name: Run zemu tests + run: | + export PATH=~/.cargo/bin:$PATH + make zemu_test + + test_zemu_sr25519: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v2 + with: + submodules: true + - run: sudo apt-get update -y && sudo apt-get install -y libusb-1.0.0 libudev-dev + - name: Install rust + run: | + sudo apt-get update + sudo apt-get install -y cmake binutils-dev libcurl4-openssl-dev libiberty-dev libelf-dev libdw-dev + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- --no-modify-path --default-toolchain none -y; + - name: Install node + uses: actions/setup-node@v2 + with: + node-version: '14.4.0' + - name: Install yarn + run: | + npm install -g yarn + - name: Build Ledger app + run: | + make build_sr25519 + - name: Build/Install build js deps + run: | + export PATH=~/.cargo/bin:$PATH + make zemu_install + - name: Run zemu tests for sr25519 + run: | + export PATH=~/.cargo/bin:$PATH + cd tests_zemu && yarn testSR25519 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..12aea63 --- /dev/null +++ b/.gitignore @@ -0,0 +1,86 @@ +# Created by .ignore support plugin (hsz.mobi) +### C template +# Prerequisites +*.d + +# Object files +*.o +*.ko +*.obj +*.elf + +# Linker output +*.ilk +*.map +*.exp + +# Precompiled Headers +*.gch +*.pch + +# Libraries +*.lib +*.a +*.la +*.lo + +# Shared objects (inc. Windows DLLs) +*.dll +*.so +*.so.* +*.dylib + +# Executables +*.exe +*.out +*.app +*.i*86 +*.x86_64 +*.hex + +# Debug files +*.dSYM/ +*.su +*.idb +*.pdb + +# Kernel Module Compile Results +*.mod* +*.cmd +.tmp_versions/ +modules.order +Module.symvers +Mkfile.old +dkms.conf + +\cmake-build-debug +\.idea/ +/tmp/ +/deps/nano2-sdk/ + +# Created by cmake +googletest-download/ +googletest-src/ +googletest-build/ +CMakeFiles/ +CMakeCache.txt +unittests +*.cmake +Testing/ +cmake-build-fuzz/ + +# Others +/cmake-build-debug/ +/cmake-build-fuzz/ +\.idea +/app/bin/ +/app/debug/ +/app/obj/ + +tests_zemu/yarn.lock +/tests_zemu/snapshots-tmp/ +/build +/fuzz-*.log +/fuzz/corpora +/tests_tools/target/ +!/tests_tools/neon/yarn.lock diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..a5e87aa --- /dev/null +++ b/.gitmodules @@ -0,0 +1,12 @@ +[submodule "deps/nanos-secure-sdk"] + path = deps/nanos-secure-sdk + url = https://github.com/LedgerHQ/nanos-secure-sdk.git +[submodule "deps/BLAKE2"] + path = deps/BLAKE2 + url = https://github.com/BLAKE2/BLAKE2 +[submodule "cmake/cmake-modules"] + path = cmake/cmake-modules + url = https://github.com/bilke/cmake-modules.git +[submodule "deps/nanox-secure-sdk"] + path = deps/nanox-secure-sdk + url = https://github.com/LedgerHQ/nanox-secure-sdk.git diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..28f544e --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,171 @@ +#******************************************************************************* +#* (c) 2020 Zondax GmbH +#* +#* Licensed under the Apache License, Version 2.0 (the "License"); +#* you may not use this file except in compliance with the License. +#* You may obtain a copy of the License at +#* +#* http://www.apache.org/licenses/LICENSE-2.0 +#* +#* Unless required by applicable law or agreed to in writing, software +#* distributed under the License is distributed on an "AS IS" BASIS, +#* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +#* See the License for the specific language governing permissions and +#* limitations under the License. +#******************************************************************************** +cmake_minimum_required(VERSION 3.0) +project(ledger-edgeware VERSION 0.0.0) +enable_testing() + +cmake_policy(SET CMP0025 NEW) +set(CMAKE_CXX_STANDARD 11) + +option(ENABLE_FUZZING "Build with fuzzing instrumentation and build fuzz targets" OFF) +option(ENABLE_COVERAGE "Build with source code coverage instrumentation" OFF) +option(ENABLE_SANITIZERS "Build with ASAN and UBSAN" OFF) + +string(APPEND CMAKE_C_FLAGS " -fno-omit-frame-pointer -g") +string(APPEND CMAKE_CXX_FLAGS " -fno-omit-frame-pointer -g") +string(APPEND CMAKE_LINKER_FLAGS " -fno-omit-frame-pointer -g") + +add_definitions(-DAPP_STANDARD) +add_definitions(-DSUBSTRATE_PARSER_FULL) + +if(ENABLE_FUZZING) + add_definitions(-DFUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION=1) + SET(ENABLE_SANITIZERS ON CACHE BOOL "Sanitizer automatically enabled" FORCE) + SET(CMAKE_BUILD_TYPE Debug) + + if (DEFINED ENV{FUZZ_LOGGING}) + add_definitions(-DFUZZING_LOGGING) + message(FATAL_ERROR "Fuzz logging enabled") + endif() + + set(CMAKE_CXX_CLANG_TIDY clang-tidy -checks=-*,bugprone-*,cert-*,clang-analyzer-*,-cert-err58-cpp,misc-*,-bugprone-suspicious-include) + + if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") + # require at least clang 3.2 + if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 10.0) + message(FATAL_ERROR "Clang version must be at least 10.0!") + endif() + else() + message(FATAL_ERROR + "You are using an unsupported compiler! Fuzzing only works with Clang 10.\n" + "1. Install clang-10 \n" + "2. Pass -DCMAKE_C_COMPILER=clang-10 -DCMAKE_CXX_COMPILER=clang++-10") + endif() + + string(APPEND CMAKE_C_FLAGS " -fsanitize=fuzzer-no-link") + string(APPEND CMAKE_CXX_FLAGS " -fsanitize=fuzzer-no-link") + string(APPEND CMAKE_LINKER_FLAGS " -fsanitize=fuzzer-no-link") +endif() + +if(ENABLE_COVERAGE) + string(APPEND CMAKE_C_FLAGS " -fprofile-instr-generate -fcoverage-mapping") + string(APPEND CMAKE_CXX_FLAGS " -fprofile-instr-generate -fcoverage-mapping") + string(APPEND CMAKE_LINKER_FLAGS " -fprofile-instr-generate -fcoverage-mapping") +endif() + +if(ENABLE_SANITIZERS) + string(APPEND CMAKE_C_FLAGS " -fsanitize=address,undefined -fsanitize-recover=address,undefined") + string(APPEND CMAKE_CXX_FLAGS " -fsanitize=address,undefined -fsanitize-recover=address,undefined") + string(APPEND CMAKE_LINKER_FLAGS " -fsanitize=address,undefined -fsanitize-recover=address,undefined") +endif() + +include(cmake/conan/CMakeLists.txt) +add_subdirectory(cmake/gtest) + +set (RETRIEVE_MAJOR_CMD + "cat ${CMAKE_CURRENT_SOURCE_DIR}/app/Makefile.version | grep APPVERSION_M | cut -b 14- | tr -d '\n'" +) +set (RETRIEVE_MINOR_CMD + "cat ${CMAKE_CURRENT_SOURCE_DIR}/app/Makefile.version | grep APPVERSION_N | cut -b 14- | tr -d '\n'" +) +execute_process( + COMMAND bash "-c" ${RETRIEVE_MAJOR_CMD} + RESULT_VARIABLE MAJOR_RESULT + OUTPUT_VARIABLE MAJOR_VERSION +) +execute_process( + COMMAND bash "-c" ${RETRIEVE_MINOR_CMD} + RESULT_VARIABLE MINOR_RESULT + OUTPUT_VARIABLE MINOR_VERSION +) + +message(STATUS "LEDGER_MAJOR_VERSION [${MAJOR_RESULT}]: ${MAJOR_VERSION}" ) +message(STATUS "LEDGER_MINOR_VERSION [${MINOR_RESULT}]: ${MINOR_VERSION}" ) + +add_definitions( + -DLEDGER_MAJOR_VERSION=${MAJOR_VERSION} + -DLEDGER_MINOR_VERSION=${MINOR_VERSION} +) + +############################################################## +############################################################## +# static libs +file(GLOB_RECURSE LIB_SRC + ${CMAKE_CURRENT_SOURCE_DIR}/deps/BLAKE2/ref/blake2b-ref.c + ${CMAKE_CURRENT_SOURCE_DIR}/deps/ledger-zxlib/src/app_mode.c + ${CMAKE_CURRENT_SOURCE_DIR}/deps/ledger-zxlib/src/base58.c + ${CMAKE_CURRENT_SOURCE_DIR}/deps/ledger-zxlib/src/bignum.c + ${CMAKE_CURRENT_SOURCE_DIR}/deps/ledger-zxlib/src/hexutils.c + ${CMAKE_CURRENT_SOURCE_DIR}/deps/ledger-zxlib/src/zxmacros.c + ${CMAKE_CURRENT_SOURCE_DIR}/deps/ledger-zxlib/src/zbuffer.c + ${CMAKE_CURRENT_SOURCE_DIR}/deps/ledger-zxlib/src/zxformat.c + #### + ${CMAKE_CURRENT_SOURCE_DIR}/app/src/crypto_helper.c + ${CMAKE_CURRENT_SOURCE_DIR}/app/src/parser.c + ${CMAKE_CURRENT_SOURCE_DIR}/app/src/parser_impl.c + ${CMAKE_CURRENT_SOURCE_DIR}/app/src/parser_txdef.c + ${CMAKE_CURRENT_SOURCE_DIR}/app/src/substrate*.c + ) + +add_library(app_lib STATIC ${LIB_SRC}) +target_include_directories(app_lib PUBLIC + ${CMAKE_CURRENT_SOURCE_DIR}/deps/BLAKE2/ref + ${CMAKE_CURRENT_SOURCE_DIR}/deps/ledger-zxlib/include + ${CMAKE_CURRENT_SOURCE_DIR}/app/src + ${CMAKE_CURRENT_SOURCE_DIR}/app/src/lib + ${CMAKE_CURRENT_SOURCE_DIR}/app/src/common + ) + +############################################################## +############################################################## +# Tests +file(GLOB_RECURSE TESTS_SRC + ${CMAKE_CURRENT_SOURCE_DIR}/tests/*.cpp) + +add_executable(unittests ${TESTS_SRC}) +target_include_directories(unittests PRIVATE + ${gtest_SOURCE_DIR}/include + ${gmock_SOURCE_DIR}/include + ${CONAN_INCLUDE_DIRS_FMT} + ${CONAN_INCLUDE_DIRS_JSONCPP} + ${CMAKE_CURRENT_SOURCE_DIR}/app/src + ${CMAKE_CURRENT_SOURCE_DIR}/app/src/lib + ) + +target_link_libraries(unittests PRIVATE + gtest_main + app_lib + CONAN_PKG::fmt + CONAN_PKG::jsoncpp) + +add_compile_definitions(TESTVECTORS_DIR="${CMAKE_CURRENT_SOURCE_DIR}/tests/") +add_test(unittests ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/unittests) +set_tests_properties(unittests PROPERTIES WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/tests) + +############################################################## +############################################################## +# Fuzz Targets +if(ENABLE_FUZZING) + set(FUZZ_TARGETS + parser_parse + ) + + foreach(target ${FUZZ_TARGETS}) + add_executable(fuzz-${target} ${CMAKE_CURRENT_SOURCE_DIR}/fuzz/${target}.cpp) + target_link_libraries(fuzz-${target} PRIVATE app_lib) + target_link_options(fuzz-${target} PRIVATE "-fsanitize=fuzzer") + endforeach() +endif() diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..0fa613e --- /dev/null +++ b/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Zondax GmbH + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..ff0ad95 --- /dev/null +++ b/Makefile @@ -0,0 +1,54 @@ +#******************************************************************************* +#* (c) 2019 Zondax GmbH +#* +#* Licensed under the Apache License, Version 2.0 (the "License"); +#* you may not use this file except in compliance with the License. +#* You may obtain a copy of the License at +#* +#* http://www.apache.org/licenses/LICENSE-2.0 +#* +#* Unless required by applicable law or agreed to in writing, software +#* distributed under the License is distributed on an "AS IS" BASIS, +#* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +#* See the License for the specific language governing permissions and +#* limitations under the License. +#******************************************************************************** + +# We use BOLOS_SDK to determine the development environment that is being used +# BOLOS_SDK IS DEFINED We use the plain Makefile for Ledger +# BOLOS_SDK NOT DEFINED We use a containerized build approach + +#TESTS_JS_PACKAGE = "@zondax/ledger-polkadot" +#TESTS_JS_DIR = $(CURDIR)/../ledger-polkadot-js + +ifeq ($(BOLOS_SDK),) +# In this case, there is not predefined SDK and we run dockerized +include $(CURDIR)/deps/ledger-zxlib/dockerized_build.mk + +else +default: + $(MAKE) -C app +%: + $(info "Calling app Makefile for target $@") + COIN=$(COIN) $(MAKE) -C app $@ +endif + +build_sr25519: SUPPORT_SR25519=1 # Alternative app purpose +build_sr25519: SUBSTRATE_PARSER_FULL=1 # Use full parser +build_sr25519: buildS + cp $(CURDIR)/app/bin/app.elf $(CURDIR)/app/output/app_sr25519.elf + cp $(CURDIR)/app/bin/app.elf $(CURDIR)/app/bin/app_sr25519.elf + +build_full_parser_s: SUBSTRATE_PARSER_FULL=1 +build_full_parser_s: buildS + +build_full_parser_x: SUBSTRATE_PARSER_FULL=1 +build_full_parser_x: buildX + +tests_tools_build: + cd tests_tools/neon && yarn install + +tests_tools_test: tests_tools_build + cd tests_tools/neon && yarn test + +zemu_install: tests_tools_build diff --git a/README.md b/README.md new file mode 100644 index 0000000..c1d3ecc --- /dev/null +++ b/README.md @@ -0,0 +1,267 @@ +# Ledger Edgeware app +[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) +[![CircleCI](https://circleci.com/gh/Zondax/ledger-edgeware.svg?style=shield&circle-token=1347836eec60736c630e1785834c4b3b0e8db221)](https://circleci.com/gh/Zondax/ledger-edgeware) + +>NOTE: The minor value in the version number indicates runtime compatibility. For instance: 0.1042.1, Indicates that the app is compatible with runtime 1042* + +This project contains the Edgeware app (https://edgewa.re/) for Ledger Nano S and X. + +- Ledger Nano S/X BOLOS app +- Specs / Documentation +- C++ unit tests +- Zemu tests + +## ATTENTION + +Please: + +- **Do not use in production** +- **Do not use a Ledger device with funds for development purposes.** +- **Have a separate and marked device that is used ONLY for development and testing** + +Tip: + +- In releases, you will find a precompiled test app. If you are just curious, you can run `install_app.sh` and avoid building. + +## Download and install + +*Once the app is approved by Ledger, it will be available in their app store (Ledger Live). +You can get builds generated by CircleCI from the release tab. THESE ARE UNVETTED DEVELOPMENT RELEASES* + +Download a release from here (https://github.com/Zondax/ledger-edgeware/releases). You only need `installer_s.sh` + +If the file is not executable, run +```sh +chmod +x ./installer_s.sh +``` + +then run: + +```sh +./installer_s.sh load +``` + +# Development + +## Preconditions + +- Be sure you checkout submodules too: + + ``` + git submodule update --init --recursive + ``` + +- Install Docker CE + - Instructions can be found here: https://docs.docker.com/install/ + +- We only officially support Ubuntu. Install the following packages: + ``` + sudo apt update && apt-get -y install build-essential git wget cmake \ + libssl-dev libgmp-dev autoconf libtool + ``` + +- Install `node > v14.0`. We typically recommend using `n` + +- You will need python 3 and then run + - `make deps` + +- This project requires Ledger firmware 1.6.1 + - The current repository keeps track of Ledger's SDK but it is possible to override it by changing the git submodule. + +*Warning*: Some IDEs may not use the same python interpreter or virtual enviroment as the one you used when running `pip`. +If you see conan is not found, check that you installed the package in the same interpreter as the one that launches `cmake`. + +## How to build ? + +> We like clion or vscode but let's have some reproducible command line steps +> + +- Building the app itself + + If you installed the what is described above, just run: + ```bash + make + ``` + +## Running tests + +- Running rust tests (x64) + + If you installed the what is described above, just run: + ```bash + make rust_test + ``` + +- Running C/C++ tests (x64) + + If you installed the what is described above, just run: + ```bash + make cpp_test + ``` + +- Running device emulation+integration tests!! + + ```bash + Use Zemu! Explained below! + ``` + +## How to test with Zemu? + +> What is Zemu?? Great you asked!! +> As part of this project, we are making public a beta version of our internal testing+emulation framework for Ledger apps. +> +> Npm Package here: https://www.npmjs.com/package/@zondax/zemu +> +> Repo here: https://github.com/Zondax/zemu + +Let's go! First install everything: +> At this moment, if you change the app you will need to run `make` before running the test again. + +```bash +make zemu_install +``` + +Then you can run JS tests: + +```bash +make zemu_test +``` + +To run a single specific test: + +> At the moment, the recommendation is to run from the IDE. Remember to run `make` if you change the app. + +## How to debug a Ledger app? + +You can use vscode or clion to debug the app. We recommend using CLion but we provide a vscode (unsupported) configuration too. + +### Preconditions + +If you are using CLion, you need to a configuration file in your home directory: `$HOME/.gdbinit` with the following content: + +``` +set auto-load local-gdbinit on +add-auto-load-safe-path / +``` + +### Warnings + +There are a few things to take into account when enabling Ledger App debugging: + +- Once you enable the local .gdbinit that is located in your project workspace. You **will break** local Rust debugging in your host. The reason is that debugging unit tests will use the same `.gdbinit` configuration that sets the environment to ARM. We are looking at some possible fixes. For now, if you want to debug unit tests instead of the ledger app, you need to comment out the lines in `.gdbinit` + +### Debugging + +1. Build your app + + ```bash + make + ``` + +2. Define your debug scenario + + Open `tests/zemu/tools/debug.mjs` and look for the line: + + ```bash + /// TIP you can use zemu commands here to take the app ... + ``` + + You can adjust this code to get the emulator to trigger a breakpoint in your app: + - send clicks + - send APDUs, etc + +3. Launch the emulator in debug mode + + > If you didnt install Zemu yet (previous section), then run `make zemu_install` + + ```bash + make zemu_debug + ``` + + The emulator will launch and immediately stop. You should see a black window + +4. Configure Clion debugger + + Your configuration should look similar to this: + + ![image](docs/img/clion_debugging.png) + + Check that the path mappings are correct + +5. Start CLion debugger + + You will hit a breakpoint in main. + Add breakpoints in other places and continue. + + Enjoy :) + +## Using a real device + +### How to prepare your DEVELOPMENT! device: + +> You can use an emulated device for development. This is only required if you are using a physical device +> +> **Please do not use a Ledger device with funds for development purposes.** +>> +> **Have a separate and marked device that is used ONLY for development and testing** + + There are a few additional steps that increase reproducibility and simplify development: + +**1 - Ensure your device works in your OS** +- In Linux hosts it might be necessary to adjust udev rules, etc. + + Refer to Ledger documentation: https://support.ledger.com/hc/en-us/articles/115005165269-Fix-connection-issues + +**2 - Set a test mnemonic** + +Many of our integration tests expect the device to be configured with a known test mnemonic. + +- Plug your device while pressing the right button + +- Your device will show "Recovery" in the screen + +- Double click + +- Run `make dev_init`. This will take about 2 minutes. The device will be initialized to: + + ``` + PIN: 5555 + Mnemonic: equip will roof matter pink blind book anxiety banner elbow sun young + ``` + +**3 - Add a development certificate** + +- Plug your device while pressing the right button + +- Your device will show "Recovery" in the screen + +- Click both buttons at the same time + +- Enter your pin if necessary + +- Run `make dev_ca`. The device will receive a development certificate to avoid constant manual confirmations. + +## Building the Ledger App + +### Loading into your development device + +The Makefile will build the firmware in a docker container and leave the binary in the correct directory. + +- Build + + ``` + make # Builds the app + ``` + +- Upload to a device + + The following command will upload the application to the ledger: + + _Warning: The application will be deleted before uploading._ + ``` + make load # Builds and loads the app to the device + ``` + +## APDU Specifications + +- [APDU Protocol](docs/APDUSPEC.md) diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 0000000..760c384 --- /dev/null +++ b/app/.gitignore @@ -0,0 +1,52 @@ +# Prerequisites +*.d + +# Compiled Object files +*.slo +*.lo +*.o +*.obj + +# Precompiled Headers +*.gch +*.pch + +# Compiled Dynamic libraries +*.so +*.dylib +*.dll + +# Fortran module files +*.mod +*.smod + +# Compiled Static libraries +*.lai +*.la +*.a +*.lib + +# Executables +*.exe +*.out +*.app + +# OS related files +.DS_Store + +# Others +cmake-build-debug/ +\.idea/workspace\.xml +\.idea/ + +glyphs/glyphs\.h +glyphs/glyphs\.c +obj/ +bin/ +debug/ +bin/app.sha256 +bin/app.apdu + +\output/app.* +pkg/zxtool.sh +pkg/installer_?.sh diff --git a/app/LICENSE b/app/LICENSE new file mode 100644 index 0000000..2bd06e2 --- /dev/null +++ b/app/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2019 Zondax GmbH + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/app/Makefile b/app/Makefile new file mode 100755 index 0000000..34835fd --- /dev/null +++ b/app/Makefile @@ -0,0 +1,250 @@ +#******************************************************************************* +# Ledger App +# (c) 2018-2020 Zondax GmbH +# (c) 2017 Ledger +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#******************************************************************************* + +ifeq ($(BOLOS_SDK),) +$(error BOLOS_SDK is not set) +endif + +MY_DIR := $(dir $(lastword $(MAKEFILE_LIST))) + +all: bin/app.elf + @echo "#!/usr/bin/env bash" > $(OUTPUT_INSTALLER) + @echo "APPNAME=\"${APPNAME}\"" >> $(OUTPUT_INSTALLER) + @echo "APPVERSION=\"${APPVERSION}\"" >> $(OUTPUT_INSTALLER) + @echo "APPPATH=\""${APPPATH}"\"" >> $(OUTPUT_INSTALLER) + @echo "LOAD_PARAMS=\"${COMMON_LOAD_PARAMS}\"" >> $(OUTPUT_INSTALLER) + @echo "DELETE_PARAMS=\"${COMMON_DELETE_PARAMS}\"" >> $(OUTPUT_INSTALLER) + @echo "APPHEX=\"" >> $(OUTPUT_INSTALLER) + @cat $(CURDIR)/bin/app.hex >> $(OUTPUT_INSTALLER) + @echo "\"" >> $(OUTPUT_INSTALLER) + @cat $(CURDIR)/../deps/ledger-zxlib/scripts/template.sh >> $(OUTPUT_INSTALLER) + @chmod +x $(OUTPUT_INSTALLER) + @cp $(CURDIR)/bin/* $(CURDIR)/output + @cp $(CURDIR)/output/app.elf ${OUTPUT_ELF} + @rm $(CURDIR)/output/app.elf + +include $(BOLOS_SDK)/Makefile.defines + +#DEFINES = APP_SECRET_MODE_ENABLED + +ifeq ($(APP_TESTING),1) +DEFINES += APP_TESTING +DEFINES += ZEMU_LOGGING +$(info ************ LOGGING ENABLED ************) +endif + +ifeq ($(SUPPORT_SR25519),1) +DEFINES += SUPPORT_SR25519 +$(info ************ SR25519 ENABLED ************) +endif + +ifeq ($(SUBSTRATE_PARSER_FULL),1) +DEFINES += SUBSTRATE_PARSER_FULL +$(info ************ FULL PARSER ENABLED ************) +endif + +ifndef COIN +COIN=EDG +endif + +include $(CURDIR)/Makefile.version + +$(info COIN = [$(COIN)]) +ifeq ($(COIN),EDG) +# Main app configuration +DEFINES += APP_STANDARD +ifeq ($(TARGET_NAME),TARGET_NANOX) +DEFINES += SUBSTRATE_PARSER_FULL +endif +APPNAME = "Edgeware" +APPPATH = "44'/747'" + +else ifeq ($(COIN),DOT_XL) +# XXL app configuration +DEFINES += APP_STANDARD SUBSTRATE_PARSER_FULL +APPNAME = "Edgeware XL" +APPPATH = "44'/747'" + +else +define error_message + + +COIN value not supported: [$(COIN)] + + +endef +$(error "$(error_message)") +endif + +APP_LOAD_PARAMS = --appFlags 0x200 --delete $(COMMON_LOAD_PARAMS) --path $(APPPATH) + +ifeq ($(TARGET_NAME),TARGET_NANOS) +APP_STACK_SIZE:=2820 +ICONNAME:=$(CURDIR)/nanos_icon.gif +OUTPUT_ELF:= $(CURDIR)/output/app_s.elf +OUTPUT_INSTALLER:= $(CURDIR)/pkg/installer_s.sh +endif + +ifeq ($(TARGET_NAME),TARGET_NANOX) +ICONNAME:=$(CURDIR)/nanox_icon.gif +OUTPUT_ELF:= $(CURDIR)/output/app_x.elf +OUTPUT_INSTALLER:= $(CURDIR)/pkg/installer_x.sh +endif + +$(info TARGET_NAME = [$(TARGET_NAME)]) +$(info ICONNAME = [$(ICONNAME)]) + +ifndef ICONNAME +$(error ICONNAME is not set) +endif + +############ +# Platform + +DEFINES += UNUSED\(x\)=\(void\)x +DEFINES += PRINTF\(...\)= + +APPVERSION=$(APPVERSION_M).$(APPVERSION_N).$(APPVERSION_P) +DEFINES += APPVERSION=\"$(APPVERSION)\" + +DEFINES += OS_IO_SEPROXYHAL +DEFINES += HAVE_BAGL HAVE_SPRINTF +DEFINES += HAVE_IO_USB HAVE_L4_USBLIB IO_USB_MAX_ENDPOINTS=7 IO_HID_EP_LENGTH=64 HAVE_USB_APDU + +DEFINES += LEDGER_MAJOR_VERSION=$(APPVERSION_M) LEDGER_MINOR_VERSION=$(APPVERSION_N) LEDGER_PATCH_VERSION=$(APPVERSION_P) + +DEFINES += USB_SEGMENT_SIZE=64 +DEFINES += HAVE_BOLOS_APP_STACK_CANARY + +DEFINES += HAVE_WEBUSB WEBUSB_URL_SIZE_B=0 WEBUSB_URL="" + +ifeq ($(TARGET_NAME),TARGET_NANOX) +DEFINES += IO_SEPROXYHAL_BUFFER_SIZE_B=300 + +DEFINES += HAVE_GLO096 +DEFINES += HAVE_BAGL BAGL_WIDTH=128 BAGL_HEIGHT=64 +DEFINES += HAVE_BAGL_ELLIPSIS # long label truncation feature +DEFINES += HAVE_BAGL_FONT_OPEN_SANS_REGULAR_11PX +DEFINES += HAVE_BAGL_FONT_OPEN_SANS_EXTRABOLD_11PX +DEFINES += HAVE_BAGL_FONT_OPEN_SANS_LIGHT_16PX + +DEFINES += HAVE_UX_FLOW + +DEFINES += HAVE_BLE +DEFINES += HAVE_BLE_APDU BLE_COMMAND_TIMEOUT_MS=2000 + +SDK_SOURCE_PATH += lib_blewbxx lib_blewbxx_impl +else +# Assume Nano S +DEFINES += IO_SEPROXYHAL_BUFFER_SIZE_B=128 +DEFINES += HAVE_BOLOS_UX COMPLIANCE_UX_160 HAVE_UX_LEGACY +endif + +# X specific + +#Feature temporarily disabled +DEFINES += LEDGER_SPECIFIC + +# Compiler, assembler, and linker + +ifneq ($(BOLOS_ENV),) +$(info BOLOS_ENV is $(BOLOS_ENV)) +CLANGPATH := $(BOLOS_ENV)/clang-arm-fropi/bin/ +GCCPATH := $(BOLOS_ENV)/gcc-arm-none-eabi-5_3-2016q1/bin/ +else +$(info BOLOS_ENV is not set: falling back to CLANGPATH and GCCPATH) +endif + +ifeq ($(CLANGPATH),) +$(info CLANGPATH is not set: clang will be used from PATH) +endif + +ifeq ($(GCCPATH),) +$(info GCCPATH is not set: arm-none-eabi-* will be used from PATH) +endif + +######################### + +CC := $(CLANGPATH)clang +CFLAGS += -O3 -Os -Wno-unknown-pragmas + +AS := $(GCCPATH)arm-none-eabi-gcc +AFLAGS += + +LD := $(GCCPATH)arm-none-eabi-gcc +LDFLAGS += -O3 -Os +LDFLAGS += -z muldefs +LDLIBS += -lm -lgcc -lc +LDLIBS += -Lrust/target/thumbv6m-none-eabi/release -lrslib + +########################## +GLYPH_SRC_DIR = glyphs +INCLUDES_PATH += $(MY_DIR)/glyphs +include $(BOLOS_SDK)/Makefile.glyphs + +APP_SOURCE_PATH += $(MY_DIR)/src +APP_SOURCE_PATH += $(MY_DIR)/glyphs +APP_SOURCE_PATH += $(MY_DIR)/rust/include +APP_SOURCE_PATH += $(MY_DIR)/../deps/ledger-zxlib/include +APP_SOURCE_PATH += $(MY_DIR)/../deps/ledger-zxlib/src +APP_SOURCE_PATH += $(MY_DIR)/../deps/ledger-zxlib/app/common + +SDK_SOURCE_PATH += lib_stusb lib_stusb_impl +SDK_SOURCE_PATH += lib_ux + +.PHONY: rust +rust: + cd rust && CARGO_HOME="$(CURDIR)/rust/.cargo" cargo build --target thumbv6m-none-eabi --release + +# Before linking, we need to be sure rust lib is there +bin/app.elf: rust + +build_full_parser_s: SUBSTRATE_PARSER_FULL=1 +build_full_parser_s: buildS + +build_full_parser_x: SUBSTRATE_PARSER_FULL=1 +build_full_parser_x: buildX + +.PHONY: rust_clean +rust_clean: + cd rust && CARGO_HOME="$(CURDIR)/rust/.cargo" cargo clean + +clean: rust_clean + +# load, delete and listvariants are provided to comply with Ledger requirements +.PHONY: load +load: + python -m ledgerblue.loadApp $(APP_LOAD_PARAMS) + +.PHONY: delete +delete: + python -m ledgerblue.deleteApp $(COMMON_DELETE_PARAMS) + +# Import generic rules from the SDK +include $(BOLOS_SDK)/Makefile.rules + +#add dependency on custom makefile filename +dep/%.d: %.c Makefile + +.PHONY: listvariants +listvariants: +ifeq ($(TARGET_NAME),TARGET_NANOS) + @echo VARIANTS COIN EDG EDG_XL +else ifeq ($(TARGET_NAME),TARGET_NANOX) + @echo VARIANTS COIN EDG +endif diff --git a/app/Makefile.version b/app/Makefile.version new file mode 100644 index 0000000..8fab5a3 --- /dev/null +++ b/app/Makefile.version @@ -0,0 +1,6 @@ +# This is the `transaction_version` field of `Runtime` +APPVERSION_M=1 +# This is the `spec_version` field of `Runtime` +APPVERSION_N=45 +# This is the `impl_version` field of `Runtime` +APPVERSION_P=0 diff --git a/app/glyphs/icon_app.gif b/app/glyphs/icon_app.gif new file mode 100644 index 0000000..280a47e Binary files /dev/null and b/app/glyphs/icon_app.gif differ diff --git a/app/glyphs/icon_back.gif b/app/glyphs/icon_back.gif new file mode 100644 index 0000000..a2a7e6d Binary files /dev/null and b/app/glyphs/icon_back.gif differ diff --git a/app/glyphs/icon_crossmark.gif b/app/glyphs/icon_crossmark.gif new file mode 100644 index 0000000..2dcf9d9 Binary files /dev/null and b/app/glyphs/icon_crossmark.gif differ diff --git a/app/glyphs/icon_dashboard.gif b/app/glyphs/icon_dashboard.gif new file mode 100644 index 0000000..33d9b0a Binary files /dev/null and b/app/glyphs/icon_dashboard.gif differ diff --git a/app/glyphs/icon_eye.gif b/app/glyphs/icon_eye.gif new file mode 100644 index 0000000..df4bb82 Binary files /dev/null and b/app/glyphs/icon_eye.gif differ diff --git a/app/glyphs/icon_key.gif b/app/glyphs/icon_key.gif new file mode 100644 index 0000000..1830d46 Binary files /dev/null and b/app/glyphs/icon_key.gif differ diff --git a/app/glyphs/icon_refresh.gif b/app/glyphs/icon_refresh.gif new file mode 100644 index 0000000..a6606de Binary files /dev/null and b/app/glyphs/icon_refresh.gif differ diff --git a/app/glyphs/icon_validate_14.gif b/app/glyphs/icon_validate_14.gif new file mode 100644 index 0000000..ccb5cab Binary files /dev/null and b/app/glyphs/icon_validate_14.gif differ diff --git a/app/glyphs/icon_warning.gif b/app/glyphs/icon_warning.gif new file mode 100644 index 0000000..280a47e Binary files /dev/null and b/app/glyphs/icon_warning.gif differ diff --git a/app/nanos_icon.gif b/app/nanos_icon.gif new file mode 100644 index 0000000..280a47e Binary files /dev/null and b/app/nanos_icon.gif differ diff --git a/app/nanox_icon.gif b/app/nanox_icon.gif new file mode 100644 index 0000000..a4fcc74 Binary files /dev/null and b/app/nanox_icon.gif differ diff --git a/app/output/.gitkeep b/app/output/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/app/pkg/.gitkeep b/app/pkg/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/app/rust/.cargo/.gitignore b/app/rust/.cargo/.gitignore new file mode 100644 index 0000000..2249544 --- /dev/null +++ b/app/rust/.cargo/.gitignore @@ -0,0 +1,3 @@ +registry/ +.package-cache + diff --git a/app/rust/.cargo/config b/app/rust/.cargo/config new file mode 100644 index 0000000..dbe610e --- /dev/null +++ b/app/rust/.cargo/config @@ -0,0 +1,9 @@ +[build] + +[target.thumbv6m-none-eabi] +rustflags = [ + "--emit", "asm", + "-C", "relocation-model=ropi", + "-C", "link-arg=-nostartfiles", + "-C", "link-arg=-Tlink.ld", +] diff --git a/app/rust/.gitignore b/app/rust/.gitignore new file mode 100644 index 0000000..2f7896d --- /dev/null +++ b/app/rust/.gitignore @@ -0,0 +1 @@ +target/ diff --git a/app/rust/Cargo.lock b/app/rust/Cargo.lock new file mode 100644 index 0000000..1f3ac45 --- /dev/null +++ b/app/rust/Cargo.lock @@ -0,0 +1,507 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +[[package]] +name = "aho-corasick" +version = "0.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7404febffaa47dac81aa44dba71523c9d069b1bdc50a77db41195149e17f68e5" +dependencies = [ + "memchr", +] + +[[package]] +name = "arrayref" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" + +[[package]] +name = "arrayvec" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" + +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi", + "libc", + "winapi", +] + +[[package]] +name = "block-buffer" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" +dependencies = [ + "block-padding", + "byte-tools", + "byteorder", + "generic-array 0.12.4", +] + +[[package]] +name = "block-padding" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5" +dependencies = [ + "byte-tools", +] + +[[package]] +name = "byte-tools" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" + +[[package]] +name = "byteorder" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "curve25519-dalek" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "434e1720189a637d44fe464f4df1e6eb900b4835255b14354497c78af37d9bb8" +dependencies = [ + "byteorder", + "digest 0.8.1", + "rand_core", + "subtle", + "zeroize", +] + +[[package]] +name = "curve25519-dalek" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f627126b946c25a4638eec0ea634fc52506dea98db118aae985118ce7c3d723f" +dependencies = [ + "byteorder", + "digest 0.9.0", + "rand_core", + "subtle", + "zeroize", +] + +[[package]] +name = "digest" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" +dependencies = [ + "generic-array 0.12.4", +] + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array 0.14.4", +] + +[[package]] +name = "env_logger" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44533bbbb3bb3c1fa17d9f2e4e38bbbaf8396ba82193c4cb1b6445d711445d36" +dependencies = [ + "atty", + "humantime", + "log", + "regex", + "termcolor", +] + +[[package]] +name = "fake-simd" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" + +[[package]] +name = "generic-array" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffdf9f34f1447443d37393cc6c2b8313aebddcd96906caf34e54c68d8e57d7bd" +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 = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "hermit-abi" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "322f4de77956e22ed0e5032c359a0f1273f1f7f0d79bfa3b8ffbc730d7fbcc5c" +dependencies = [ + "libc", +] + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hex-literal" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "961de220ec9a91af2e1e5bd80d02109155695e516771762381ef8581317066e0" +dependencies = [ + "hex-literal-impl", + "proc-macro-hack", +] + +[[package]] +name = "hex-literal-impl" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "853f769599eb31de176303197b7ba4973299c38c7a7604a6bc88c3eef05b9b46" +dependencies = [ + "proc-macro-hack", +] + +[[package]] +name = "humantime" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f" +dependencies = [ + "quick-error", +] + +[[package]] +name = "keccak" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" + +[[package]] +name = "libc" +version = "0.2.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "538c092e5586f4cdd7dd8078c4a79220e3e168880218124dcbce860f0ea938c6" + +[[package]] +name = "log" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "memchr" +version = "2.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ee1c47aaa256ecabcaea351eae4a9b01ef39ed810004e298d2511ed284b1525" + +[[package]] +name = "merlin" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e261cf0f8b3c42ded9f7d2bb59dea03aa52bc8a1cbc7482f9fc3fd1229d3b42" +dependencies = [ + "byteorder", + "keccak", + "rand_core", + "zeroize", +] + +[[package]] +name = "opaque-debug" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" + +[[package]] +name = "panic-halt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de96540e0ebde571dc55c73d60ef407c653844e6f9a1e2fdbd40c07b9252d812" + +[[package]] +name = "ppv-lite86" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857" + +[[package]] +name = "proc-macro-hack" +version = "0.5.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" + +[[package]] +name = "proc-macro2" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71" +dependencies = [ + "unicode-xid", +] + +[[package]] +name = "quick-error" +version = "1.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" + +[[package]] +name = "quote" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "rand_chacha", + "rand_core", + "rand_hc", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core", +] + +[[package]] +name = "regex" +version = "1.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "957056ecddbeba1b26965114e191d2e8589ce74db242b6ea25fc4062427a5c19" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.6.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5f089152e60f62d28b835fbff2cd2e8dc0baf1ac13343bef92ab7eed84548" + +[[package]] +name = "rslib" +version = "0.1.0" +dependencies = [ + "curve25519-dalek 3.0.2", + "env_logger", + "getrandom", + "hex", + "hex-literal", + "log", + "merlin", + "panic-halt", + "rand", + "schnorrkel", + "zeroize", +] + +[[package]] +name = "schnorrkel" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "021b403afe70d81eea68f6ea12f6b3c9588e5d536a94c3bf80f15e7faa267862" +dependencies = [ + "arrayref", + "arrayvec", + "curve25519-dalek 2.1.2", + "merlin", + "rand_core", + "sha2", + "subtle", + "zeroize", +] + +[[package]] +name = "sha2" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a256f46ea78a0c0d9ff00077504903ac881a1dafdc20da66545699e7776b3e69" +dependencies = [ + "block-buffer", + "digest 0.8.1", + "fake-simd", + "opaque-debug", +] + +[[package]] +name = "subtle" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e81da0851ada1f3e9d4312c704aa4f8806f0f9d69faaf8df2f3464b4a9437c2" + +[[package]] +name = "syn" +version = "1.0.64" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fd9d1e9976102a03c542daa2eff1b43f9d72306342f3f8b3ed5fb8908195d6f" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + +[[package]] +name = "synstructure" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b834f2d66f734cb897113e34aaff2f1ab4719ca946f9a7358dba8f8064148701" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "unicode-xid", +] + +[[package]] +name = "termcolor" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dfed899f0eb03f32ee8c6a0aabdb8a7949659e3466561fc0adf54e26d88c5f4" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "typenum" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "879f6906492a7cd215bfa4cf595b600146ccfac0c79bcbd1f3000162af5e8b06" + +[[package]] +name = "unicode-xid" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" + +[[package]] +name = "version_check" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe" + +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +dependencies = [ + "winapi", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "zeroize" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81a974bcdd357f0dca4d41677db03436324d45a4c9ed2d0b873a5a360ce41c36" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3f369ddb18862aba61aa49bf31e74d29f0f162dec753063200e1dc084345d16" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] diff --git a/app/rust/Cargo.toml b/app/rust/Cargo.toml new file mode 100644 index 0000000..0ecf51f --- /dev/null +++ b/app/rust/Cargo.toml @@ -0,0 +1,47 @@ +[package] +authors = ["Zondax GmbH "] +name = "rslib" +version = "0.1.0" +edition = "2018" +readme = "README.md" + +[lib] +name = "rslib" +crate-type = ["staticlib"] + +[dependencies] +rand={ version = "0.7.3", default-features = false} +merlin = {version = "2.0.0", default-features=false} +zeroize = {version = "1.1.1", default-features=false} + +[target.'cfg(target_arch = "x86_64")'.dependencies] +getrandom = {version="0.1.14", default-features=false} + +[dependencies.curve25519-dalek] +version = "3.0.0" +default-features = false +features=["u32_backend"] + +[dependencies.schnorrkel] +version = "0.9.1" +default-features = false +features=["u32_backend"] + +[dev-dependencies] +hex-literal = "0.2.1" +hex = "0.4.2" +env_logger = "0.7.1" +log = "0.4.8" + +[target.thumbv6m-none-eabi.dev-dependencies] +panic-halt = "0.2.0" + +[profile.release] +lto=false +codegen-units = 1 +debug=true +opt-level = "s" + +[profile.dev] +panic = "abort" + diff --git a/app/rust/include/rslib.h b/app/rust/include/rslib.h new file mode 100644 index 0000000..8e26766 --- /dev/null +++ b/app/rust/include/rslib.h @@ -0,0 +1,8 @@ +#pragma once + +#include + +void get_sr25519_sk(uint8_t *sk_ed25519_expanded); + +void sign_sr25519_phase1(const uint8_t *sk_ed25519_expanded, const uint8_t *pk, const uint8_t *context_ptr, uint32_t context_len, const uint8_t *msg_ptr, uint32_t msg_len, uint8_t *sig_ptr); +void sign_sr25519_phase2(const uint8_t *sk_ed25519_expanded, const uint8_t *pk, const uint8_t *context_ptr, uint32_t context_len, const uint8_t *msg_ptr, uint32_t msg_len, uint8_t *sig_ptr); diff --git a/app/rust/src/bolos.rs b/app/rust/src/bolos.rs new file mode 100644 index 0000000..bbfba41 --- /dev/null +++ b/app/rust/src/bolos.rs @@ -0,0 +1,84 @@ +/******************************************************************************* +* (c) 2020 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +//! Rust interfaces to Ledger SDK APIs. +#[cfg(test)] +use curve25519_dalek::constants::RISTRETTO_BASEPOINT_POINT; +use curve25519_dalek::scalar::Scalar; +#[cfg(test)] +#[cfg(target_arch = "x86_64")] +use getrandom::getrandom; +use merlin::TranscriptRng; +use rand::{CryptoRng, RngCore}; + +extern "C" { + fn cx_rng(buffer: *mut u8, len: u32); + fn zemu_log_stack(buffer: *const u8); + fn check_app_canary(); +} + +#[cfg(not(test))] +pub fn c_zemu_log_stack(s: &[u8]) { + unsafe { zemu_log_stack(s.as_ptr()) } +} + +#[cfg(test)] +pub fn c_zemu_log_stack(s: &[u8]) {} + +pub fn c_check_app_canary() { + unsafe { check_app_canary() } +} + +pub struct Trng; + +impl RngCore for Trng { + fn next_u32(&mut self) -> u32 { + let mut out = [0; 4]; + self.fill_bytes(&mut out); + u32::from_le_bytes(out) + } + + fn next_u64(&mut self) -> u64 { + let mut out = [0; 8]; + self.fill_bytes(&mut out); + u64::from_le_bytes(out) + } + + #[cfg(not(target_arch = "x86_64"))] + fn fill_bytes(&mut self, dest: &mut [u8]) { + c_zemu_log_stack(b"fill_bytes\x00".as_ref()); + + unsafe { + cx_rng(dest.as_mut_ptr(), dest.len() as u32); + } + } + + #[cfg(target_arch = "x86_64")] + #[cfg(test)] + fn fill_bytes(&mut self, dest: &mut [u8]) { + getrandom(dest); + } + + #[cfg(target_arch = "x86_64")] + #[cfg(not(test))] + fn fill_bytes(&mut self, _dest: &mut [u8]) {} + + fn try_fill_bytes(&mut self, dest: &mut [u8]) -> Result<(), rand::Error> { + self.fill_bytes(dest); + Ok(()) + } +} + +impl CryptoRng for Trng {} diff --git a/app/rust/src/lib.rs b/app/rust/src/lib.rs new file mode 100644 index 0000000..1e97cb7 --- /dev/null +++ b/app/rust/src/lib.rs @@ -0,0 +1,281 @@ +/******************************************************************************* +* (c) 2020 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#![no_std] +#![no_builtins] +#![allow(dead_code, unused_imports)] + +extern crate core; +#[cfg(test)] +#[macro_use] +extern crate hex_literal; + +use core::convert::TryInto; +use core::mem; +use core::panic::PanicInfo; +use core::slice::{from_raw_parts, from_raw_parts_mut}; + +use curve25519_dalek::scalar::Scalar; +use merlin::{Transcript, TranscriptRng, TranscriptRngBuilder}; +use rand::RngCore; +use schnorrkel::context::{SigningContext, SigningTranscript}; +use schnorrkel::{PublicKey, SecretKey}; +use zeroize::Zeroize; + +use crate::bolos::*; + +mod bolos; + +fn debug(_msg: &str) {} + +#[cfg(not(test))] +#[panic_handler] +fn panic(_info: &PanicInfo) -> ! { + loop {} +} + +#[inline(never)] +fn mult_with_secret(k: &mut Scalar, sk: &[u8]) { + let mut skbytes = [0u8; 32]; + skbytes.copy_from_slice(&sk[0..32]); + let s = Scalar::from_bits(skbytes); + *k *= s; +} + +#[inline(never)] +fn add_witness(k: &mut Scalar, x: [u8; 32]) -> [u8; 32] { + let r = Scalar::from_bits(x); + *k += r; + k.to_bytes() +} + +#[inline(never)] +fn get_challenge_scalar(k: &mut Scalar, tr: &mut Transcript) { + let mut kbytes = [0u8; 64]; + tr.challenge_bytes(b"sign:c", &mut kbytes); + *k += Scalar::from_bytes_mod_order_wide(&kbytes); +} + +#[inline(never)] +fn get_witness_bytes_custom(br: &mut Transcript, nonce_seeds: &[&[u8]]) -> [u8; 32] { + c_zemu_log_stack(b"witness_bytes\x00".as_ref()); + let mut x = [0u8; 32]; + for ns in nonce_seeds { + br.append_message(b"nonce-bytes", ns); + } + { + let random_bytes = { + let mut bytes = [0u8; 32]; + Trng.fill_bytes(&mut bytes); + bytes + }; + br.append_message(b"rng", &random_bytes); + } + br.challenge_bytes(b"witness-bytes", &mut x); + br.zeroize(); + x +} + +#[no_mangle] +pub extern "C" fn sign_sr25519_phase1( + sk_ristretto_expanded_ptr: *const u8, + pk_ptr: *const u8, + context_ptr: *const u8, + context_len: usize, + msg_ptr: *const u8, + msg_len: usize, + sig_ptr: *mut u8, +) { + c_zemu_log_stack(b"sign_sr25519\x00".as_ref()); + + let sk_ristretto_expanded = + unsafe { from_raw_parts(sk_ristretto_expanded_ptr as *const u8, 64) }; + let pk = unsafe { from_raw_parts(pk_ptr as *const u8, 32) }; + let context = unsafe { from_raw_parts(context_ptr as *const u8, context_len) }; + let message = unsafe { from_raw_parts(msg_ptr as *const u8, msg_len) }; + let signature = unsafe { from_raw_parts_mut(sig_ptr as *mut u8, 64) }; + + let mut signtranscript = Transcript::new(b"SigningContext"); + signtranscript.append_message(b"", context); + signtranscript.append_message(b"sign-bytes", message); + signtranscript.append_message(b"proto-name", b"Schnorr-sig"); //proto name + signtranscript.append_message(b"sign:pk", pk); //commitpoint: pk + + let x = get_witness_bytes_custom(&mut signtranscript, &[&sk_ristretto_expanded[32..]]); + signature[32..64].copy_from_slice(&x); +} + +#[no_mangle] +pub extern "C" fn sign_sr25519_phase2( + sk_ristretto_expanded_ptr: *const u8, + pk_ptr: *const u8, + context_ptr: *const u8, + context_len: usize, + msg_ptr: *const u8, + msg_len: usize, + sig_ptr: *mut u8, +) { + c_zemu_log_stack(b"sign_sr25519\x00".as_ref()); + + let sk_ristretto_expanded = + unsafe { from_raw_parts(sk_ristretto_expanded_ptr as *const u8, 64) }; + let pk = unsafe { from_raw_parts(pk_ptr as *const u8, 32) }; + let context = unsafe { from_raw_parts(context_ptr as *const u8, context_len) }; + let message = unsafe { from_raw_parts(msg_ptr as *const u8, msg_len) }; + let signature = unsafe { from_raw_parts_mut(sig_ptr as *mut u8, 64) }; + + let mut signtranscript = Transcript::new(b"SigningContext"); + signtranscript.append_message(b"", context); + signtranscript.append_message(b"sign-bytes", message); + signtranscript.append_message(b"proto-name", b"Schnorr-sig"); //proto name + signtranscript.append_message(b"sign:pk", pk); //commitpoint: pk + signtranscript.append_message(b"sign:R", &signature[0..32]); //commitpoint: pk + + let mut x = [0u8; 32]; + x.copy_from_slice(&signature[32..64]); + + let mut k = Scalar::zero(); + get_challenge_scalar(&mut k, &mut signtranscript); + + mult_with_secret(&mut k, sk_ristretto_expanded); + signature[32..].copy_from_slice(&add_witness(&mut k, x)); + signature[63] |= 128; +} + +#[no_mangle] +pub extern "C" fn get_sr25519_sk(sk_ed25519_expanded_ptr: *mut u8) { + let sk_ed25519_expanded = unsafe { from_raw_parts_mut(sk_ed25519_expanded_ptr as *mut u8, 64) }; + let secret: SecretKey = SecretKey::from_ed25519_bytes(&sk_ed25519_expanded[..]).unwrap(); + sk_ed25519_expanded.copy_from_slice(&secret.to_bytes()); +} + +#[cfg(test)] +mod tests { + use curve25519_dalek::constants::RISTRETTO_BASEPOINT_POINT; + use curve25519_dalek::edwards::EdwardsPoint; + use curve25519_dalek::scalar::Scalar; + use log::{debug, info}; + use schnorrkel::{context::*, Keypair, PublicKey, SecretKey, Signature}; + + use crate::*; + use core::ops::Mul; + + fn init_logging() { + let _ = env_logger::builder().is_test(true).try_init(); + } + + fn ristretto_scalarmult(sk: &[u8], pk: &mut [u8]) { + let mut seckey = [0u8; 32]; + seckey.copy_from_slice(&sk[0..32]); + let pubkey = RISTRETTO_BASEPOINT_POINT + .mul(Scalar::from_bits(seckey)) + .compress() + .0; + pk.copy_from_slice(&pubkey); + } + + #[test] + fn test_sign_verify() { + let mut sk_ed25519_expanded = [ + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, + 0x06, 0x07, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x00, 0x01, 0x02, 0x03, + 0x04, 0x05, 0x06, 0x07, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x00, 0x01, + 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, + ]; + + let pk_expected = "b65abc66a8fdeac1197d03daa6c3791d0c0799a52db6b7127b1cd12d46e34364"; + + let secret = SecretKey::from_ed25519_bytes(&sk_ed25519_expanded).unwrap(); + + let mut pk = [0u8; 32]; + get_sr25519_sk(sk_ed25519_expanded.as_mut_ptr()); + + ristretto_scalarmult(&sk_ed25519_expanded, &mut pk); + + assert_eq!(hex::encode(pk), pk_expected); + + let context = b"good"; + let msg = b"test message"; + let mut signature = [0u8; 64]; + + sign_sr25519_phase1( + secret.to_bytes().as_ptr(), + pk.as_ptr(), + context.as_ptr(), + context.len(), + msg.as_ptr(), + msg.len(), + signature.as_mut_ptr(), + ); + + let mut x = [0u8; 32]; + x.copy_from_slice(&signature[32..64]); + + ristretto_scalarmult(&x, &mut signature[0..32]); + + sign_sr25519_phase2( + secret.to_bytes().as_ptr(), + pk.as_ptr(), + context.as_ptr(), + context.len(), + msg.as_ptr(), + msg.len(), + signature.as_mut_ptr(), + ); + + let keypair: Keypair = Keypair::from(secret); + + let mut sigledger = [0u8; 64]; + hex::decode_to_slice("48fdbe5cf3524bdd078ac711565d658a3053d10660749959883c4710f49d9948b2d5f829bea6800897dc6ea0150ca11075cc36b75bfcf3712aafb8e1bd10bf8f",&mut sigledger).expect("dec"); + + let self_sig = Signature::from_bytes(&signature).unwrap(); + let self_sig_ledger = Signature::from_bytes(&sigledger).unwrap(); + + let vers = signing_context(context); + + assert!( + keypair.verify(vers.bytes(msg), &self_sig).is_ok(), + "Verification of a valid signature failed!" + ); + assert!( + keypair.verify(vers.bytes(msg), &self_sig_ledger).is_ok(), + "Verification of a valid signature from ledger failed!" + ); + } + + #[test] + fn get_public_key_c() { + init_logging(); + + let mut sk_ed25519_expanded = [ + 0x00, 0x01, 0x02, 0x03, 04, 0x5, 0x06, 0x07, 0x00, 0x01, 0x02, 0x03, 04, 0x5, 0x06, + 0x07, 0x00, 0x01, 0x02, 0x03, 04, 0x5, 0x06, 0x07, 0x00, 0x01, 0x02, 0x03, 04, 0x5, + 0x06, 0x07, 0x00, 0x01, 0x02, 0x03, 04, 0x5, 0x06, 0x07, 0x00, 0x01, 0x02, 0x03, 04, + 0x5, 0x06, 0x07, 0x00, 0x01, 0x02, 0x03, 04, 0x5, 0x06, 0x07, 0x00, 0x01, 0x02, 0x03, + 04, 0x5, 0x06, 0x07, + ]; + + let pk_expected = "b65abc66a8fdeac1197d03daa6c3791d0c0799a52db6b7127b1cd12d46e34364"; + + let mut pk = [0u8; 32]; + get_sr25519_sk(sk_ed25519_expanded.as_mut_ptr()); + + ristretto_scalarmult(&sk_ed25519_expanded, &mut pk); + + info!("{:?}", hex::encode(pk)); + assert_eq!(hex::encode(pk), pk_expected); + } +} diff --git a/app/script.ld b/app/script.ld new file mode 100644 index 0000000..c612695 --- /dev/null +++ b/app/script.ld @@ -0,0 +1,171 @@ +/******************************************************************************* +* Ledger Blue - Secure firmware +* (c) 2019 Zondax GmbH +* (c) 2016, 2017 Ledger +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +/** + * Global chip memory layout and constants + * + */ + +MEMORY +{ + DISCARD (rwx) : ORIGIN = 0xd0000000, LENGTH = 1M + + FLASH (rx) : ORIGIN = 0xc0d00000, LENGTH = 400K + SRAM (rwx) : ORIGIN = 0x20001800, LENGTH = 4K +} + +PAGE_SIZE = 64; +STACK_SIZE = 2820; +END_STACK = ORIGIN(SRAM) + LENGTH(SRAM); + +SECTIONS +{ + ENTRY(main) + + /****************************************************************/ + /* This section locates the code in FLASH */ + /****************************************************************/ + + /** put text in Flash memory, VMA will be equal to LMA */ + .text : + { + /* provide start code symbol, shall be zero */ + _text = .; + _nvram = .; + + PROVIDE(_setjmp = setjmp); /*thanks clang*/ + + /* ensure main is always @ 0xC0D00000 */ + *(.boot*) + + /* place the other code and rodata defined BUT nvram variables that are displaced in a r/w area */ + *(.text*) + *(.rodata) + *(.rodata.[^N]*) /*.data.rel.ro* not here to detect invalid PIC usage */ + *(.rodata.N[^_]*) + + . = ALIGN(4); + + /* all code placed */ + _etext = .; + + . = ALIGN(PAGE_SIZE); + + _nvram_data = .; + + /* NVM data (ex-filesystem) */ + *(.bss.N_* .rodata.N_*) + + . = ALIGN(PAGE_SIZE); + _envram_data = .; + + _install_parameters = .; + _envram = .; + + } > FLASH = 0x00 + + .data (NOLOAD): + { + . = ALIGN(4); + + /** + * Place RAM initialized variables + */ + _data = .; + + *(vtable) + *(.data*) + + _edata = .; + + } > DISCARD /*> SRAM AT>FLASH = 0x00 */ + + .bss : + { + /** + * Place RAM uninitialized variables + */ + _bss = .; + *(.bss*) + _ebss = .; + + + /** + * Reserve stack size + */ + . = ALIGN(4); + app_stack_canary = .; + PROVIDE(app_stack_canary = .); + . += 4; + _stack_validation = .; + . = _stack_validation + STACK_SIZE; + _stack = ABSOLUTE(END_STACK) - STACK_SIZE; + PROVIDE( _stack = ABSOLUTE(END_STACK) - STACK_SIZE); + _estack = ABSOLUTE(END_STACK); + PROVIDE( _estack = ABSOLUTE(END_STACK) ); + + } > SRAM = 0x00 + + /****************************************************************/ + /* DEBUG */ + /****************************************************************/ + + /* remove the debugging information from the standard libraries */ + DEBUG (NOLOAD) : + { + libc.a ( * ) + libm.a ( * ) + libgcc.a ( * ) + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } + + /* Stabs debugging sections. */ + .stab 0 : { *(.stab) } + .stabstr 0 : { *(.stabstr) } + .stab.excl 0 : { *(.stab.excl) } + .stab.exclstr 0 : { *(.stab.exclstr) } + .stab.index 0 : { *(.stab.index) } + .stab.indexstr 0 : { *(.stab.indexstr) } + .comment 0 : { *(.comment) } + /* DWARF debug sections. + Symbols in the DWARF debugging sections are relative to the beginning + of the section so we begin them at 0. */ + /* DWARF 1 */ + .debug 0 : { *(.debug) } + .line 0 : { *(.line) } + /* GNU DWARF 1 extensions */ + .debug_srcinfo 0 : { *(.debug_srcinfo) } + .debug_sfnames 0 : { *(.debug_sfnames) } + /* DWARF 1.1 and DWARF 2 */ + .debug_aranges 0 : { *(.debug_aranges) } + .debug_pubnames 0 : { *(.debug_pubnames) } + /* DWARF 2 */ + .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } + .debug_abbrev 0 : { *(.debug_abbrev) } + .debug_line 0 : { *(.debug_line) } + .debug_frame 0 : { *(.debug_frame) } + .debug_str 0 : { *(.debug_str) } + .debug_loc 0 : { *(.debug_loc) } + .debug_macinfo 0 : { *(.debug_macinfo) } + /* SGI/MIPS DWARF 2 extensions */ + .debug_weaknames 0 : { *(.debug_weaknames) } + .debug_funcnames 0 : { *(.debug_funcnames) } + .debug_typenames 0 : { *(.debug_typenames) } + .debug_varnames 0 : { *(.debug_varnames) } + +} diff --git a/app/src/addr.c b/app/src/addr.c new file mode 100644 index 0000000..e3999ae --- /dev/null +++ b/app/src/addr.c @@ -0,0 +1,59 @@ +/******************************************************************************* +* (c) 2020 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include +#include "coin.h" +#include "zxerror.h" +#include "zxmacros.h" +#include "app_mode.h" +#include "crypto.h" + +zxerr_t addr_getNumItems(uint8_t *num_items) { + zemu_log_stack("addr_getNumItems"); + *num_items = 1; + if (app_mode_expert()) { + *num_items = 2; + } + return zxerr_ok; +} + +zxerr_t addr_getItem(int8_t displayIdx, + char *outKey, uint16_t outKeyLen, + char *outVal, uint16_t outValLen, + uint8_t pageIdx, uint8_t *pageCount) { + char buffer[30]; + snprintf(buffer, sizeof(buffer), "addr_getItem %d/%d", displayIdx, pageIdx); + zemu_log_stack(buffer); + switch (displayIdx) { + case 0: + snprintf(outKey, outKeyLen, "Address"); + pageString(outVal, outValLen, (char *) (G_io_apdu_buffer + PK_LEN_25519), pageIdx, pageCount); + return zxerr_ok; + case 1: { + if (!app_mode_expert()) { + return zxerr_no_data; + } + + snprintf(outKey, outKeyLen, "Your Path"); + char buffer[300]; + bip32_to_str(buffer, sizeof(buffer), hdPath, HDPATH_LEN_DEFAULT); + pageString(outVal, outValLen, buffer, pageIdx, pageCount); + return zxerr_ok; + } + default: + return zxerr_no_data; + } +} diff --git a/app/src/addr.h b/app/src/addr.h new file mode 100644 index 0000000..0140671 --- /dev/null +++ b/app/src/addr.h @@ -0,0 +1,34 @@ +/******************************************************************************* +* (c) 2020 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +/// Return the number of items in the address view +zxerr_t addr_getNumItems(uint8_t *num_items); + +/// Gets an specific item from the address view (including paging) +zxerr_t addr_getItem(int8_t displayIdx, + char *outKey, uint16_t outKeyLen, + char *outValue, uint16_t outValueLen, + uint8_t pageIdx, uint8_t *pageCount); + +#ifdef __cplusplus +} +#endif diff --git a/app/src/allowlist.c b/app/src/allowlist.c new file mode 100644 index 0000000..e69de29 diff --git a/app/src/allowlist.h b/app/src/allowlist.h new file mode 100644 index 0000000..e69de29 diff --git a/app/src/apdu_handler.c b/app/src/apdu_handler.c new file mode 100644 index 0000000..fd3e179 --- /dev/null +++ b/app/src/apdu_handler.c @@ -0,0 +1,289 @@ +/******************************************************************************* +* (c) 2018, 2019 Zondax GmbH +* (c) 2016 Ledger +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "app_main.h" + +#include +#include +#include +#include + +#include "view.h" +#include "actions.h" +#include "tx.h" +#include "addr.h" +#include "crypto.h" +#include "coin.h" +#include "zxmacros.h" +#include "secret.h" +#include "app_mode.h" + +void extractHDPath(uint32_t rx, uint32_t offset) { + if ((rx - offset) < sizeof(uint32_t) * HDPATH_LEN_DEFAULT) { + THROW(APDU_CODE_WRONG_LENGTH); + } + + MEMCPY(hdPath, G_io_apdu_buffer + offset, sizeof(uint32_t) * HDPATH_LEN_DEFAULT); + + const bool mainnet = hdPath[0] == HDPATH_0_DEFAULT && + hdPath[1] == HDPATH_1_DEFAULT; + + if (!mainnet) { + THROW(APDU_CODE_DATA_INVALID); + } + +#ifdef APP_SECRET_MODE_ENABLED + if (app_mode_secret()) { + hdPath[1] = HDPATH_1_RECOVERY; + } +#endif +} + +__Z_INLINE bool process_chunk(volatile uint32_t *tx, uint32_t rx) { + zemu_log("process_chunk\n"); + const uint8_t payloadType = G_io_apdu_buffer[OFFSET_PAYLOAD_TYPE]; +#ifndef SUPPORT_SR25519 + if (G_io_apdu_buffer[OFFSET_P2] != 0) { + THROW(APDU_CODE_INVALIDP1P2); + } +#endif + if (rx < OFFSET_DATA) { + THROW(APDU_CODE_WRONG_LENGTH); + } + + uint32_t added; + switch (payloadType) { + case 0: + zemu_log("process_chunk - init\n"); + tx_initialize(); + tx_reset(); + extractHDPath(rx, OFFSET_DATA); + return false; + case 1: + zemu_log("process_chunk - add \n"); + added = tx_append(&(G_io_apdu_buffer[OFFSET_DATA]), rx - OFFSET_DATA); + if (added != rx - OFFSET_DATA) { + THROW(APDU_CODE_OUTPUT_BUFFER_TOO_SMALL); + } + return false; + case 2: + zemu_log("process_chunk - end \n"); + added = tx_append(&(G_io_apdu_buffer[OFFSET_DATA]), rx - OFFSET_DATA); + if (added != rx - OFFSET_DATA) { + THROW(APDU_CODE_OUTPUT_BUFFER_TOO_SMALL); + } + return true; + } + + THROW(APDU_CODE_INVALIDP1P2); +} + +__Z_INLINE void handle_getversion(volatile uint32_t *flags, volatile uint32_t *tx, uint32_t rx) { + G_io_apdu_buffer[0] = 0; + +#if defined(APP_TESTING) + G_io_apdu_buffer[0] = 0x01; +#endif + + G_io_apdu_buffer[1] = (LEDGER_MAJOR_VERSION >> 8) & 0xFF; + G_io_apdu_buffer[2] = (LEDGER_MAJOR_VERSION >> 0) & 0xFF; + + G_io_apdu_buffer[3] = (LEDGER_MINOR_VERSION >> 8) & 0xFF; + G_io_apdu_buffer[4] = (LEDGER_MINOR_VERSION >> 0) & 0xFF; + + G_io_apdu_buffer[5] = (LEDGER_PATCH_VERSION >> 8) & 0xFF; + G_io_apdu_buffer[6] = (LEDGER_PATCH_VERSION >> 0) & 0xFF; + + G_io_apdu_buffer[7] = !IS_UX_ALLOWED; + + G_io_apdu_buffer[8] = (TARGET_ID >> 24) & 0xFF; + G_io_apdu_buffer[9] = (TARGET_ID >> 16) & 0xFF; + G_io_apdu_buffer[10] = (TARGET_ID >> 8) & 0xFF; + G_io_apdu_buffer[11] = (TARGET_ID >> 0) & 0xFF; + + *tx += 12; + THROW(APDU_CODE_OK); +} + +__Z_INLINE void handleGetAddr(volatile uint32_t *flags, volatile uint32_t *tx, uint32_t rx) { + extractHDPath(rx, OFFSET_DATA); + + const uint8_t requireConfirmation = G_io_apdu_buffer[OFFSET_P1]; + const uint8_t addr_type = G_io_apdu_buffer[OFFSET_P2]; + const key_kind_e key_type = get_key_type(addr_type); + + zxerr_t zxerr = app_fill_address(key_type); + if(zxerr != zxerr_ok){ + *tx = 0; + THROW(APDU_CODE_DATA_INVALID); + } + if (requireConfirmation) { + view_review_init(addr_getItem, addr_getNumItems, app_reply_address); + view_review_show(); + *flags |= IO_ASYNCH_REPLY; + return; + } + *tx = action_addrResponseLen; + THROW(APDU_CODE_OK); +} + +#ifdef SUPPORT_SR25519 +__Z_INLINE void handleSignSr25519(volatile uint32_t *flags, volatile uint32_t *tx, uint32_t rx) { + zxerr_t err = app_sign_sr25519(); + if(err != zxerr_ok){ + *tx = 0; + THROW(APDU_CODE_DATA_INVALID); + } + + CHECK_APP_CANARY() + + const char *error_msg = tx_parse(); + CHECK_APP_CANARY() + if (error_msg != NULL) { + int error_msg_length = strlen(error_msg); + MEMCPY(G_io_apdu_buffer, error_msg, error_msg_length); + *tx += (error_msg_length); + THROW(APDU_CODE_DATA_INVALID); + } + + view_review_init(tx_getItem, tx_getNumItems, app_return_sr25519); + view_review_show(); + *flags |= IO_ASYNCH_REPLY; +} +#endif + +__Z_INLINE void handleSignEd25519(volatile uint32_t *flags, volatile uint32_t *tx, uint32_t rx) { + const char *error_msg = tx_parse(); + CHECK_APP_CANARY() + if (error_msg != NULL) { + int error_msg_length = strlen(error_msg); + MEMCPY(G_io_apdu_buffer, error_msg, error_msg_length); + *tx += (error_msg_length); + THROW(APDU_CODE_DATA_INVALID); + } + + view_review_init(tx_getItem, tx_getNumItems, app_sign_ed25519); + view_review_show(); + *flags |= IO_ASYNCH_REPLY; +} + +__Z_INLINE void handleSign(volatile uint32_t *flags, volatile uint32_t *tx, uint32_t rx) { + zemu_log("handleSign\n"); + if (!process_chunk(tx, rx)) { + THROW(APDU_CODE_OK); + } + if (app_mode_secret()) { + app_mode_set_secret(false); + } + const uint8_t addr_type = G_io_apdu_buffer[OFFSET_P2]; + const key_kind_e key_type = get_key_type(addr_type); + + *tx = 0; + switch (key_type) { + case key_ed25519: + handleSignEd25519(flags, tx, rx); + break; +#ifdef SUPPORT_SR25519 + case key_sr25519: + handleSignSr25519(flags, tx, rx); + break; +#endif + default: { + THROW(APDU_CODE_DATA_INVALID); + } + } +} + +#if defined(APP_TESTING) +void handleTest(volatile uint32_t *flags, volatile uint32_t *tx, uint32_t rx) { + THROW(APDU_CODE_OK); +} +#endif + +void handleApdu(volatile uint32_t *flags, volatile uint32_t *tx, uint32_t rx) { + uint16_t sw = 0; + + BEGIN_TRY + { + TRY + { + if (G_io_apdu_buffer[OFFSET_CLA] != CLA) { + THROW(APDU_CODE_CLA_NOT_SUPPORTED); + } + + if (rx < APDU_MIN_LENGTH) { + THROW(APDU_CODE_WRONG_LENGTH); + } + + switch (G_io_apdu_buffer[OFFSET_INS]) { + case INS_GET_VERSION: { + handle_getversion(flags, tx, rx); + break; + } + + case INS_GET_ADDR: { + if( os_global_pin_is_validated() != BOLOS_UX_OK ) { + THROW(APDU_CODE_COMMAND_NOT_ALLOWED); + } + handleGetAddr(flags, tx, rx); + break; + } + + case INS_SIGN: { + if( os_global_pin_is_validated() != BOLOS_UX_OK ) { + THROW(APDU_CODE_COMMAND_NOT_ALLOWED); + } + handleSign(flags, tx, rx); + break; + } + +#if defined(APP_TESTING) + case INS_TEST: { + handleTest(flags, tx, rx); + THROW(APDU_CODE_OK); + break; + } +#endif + default: + THROW(APDU_CODE_INS_NOT_SUPPORTED); + } + } + CATCH(EXCEPTION_IO_RESET) + { + THROW(EXCEPTION_IO_RESET); + } + CATCH_OTHER(e) + { + switch (e & 0xF000) { + case 0x6000: + case APDU_CODE_OK: + sw = e; + break; + default: + sw = 0x6800 | (e & 0x7FF); + break; + } + G_io_apdu_buffer[*tx] = sw >> 8; + G_io_apdu_buffer[*tx + 1] = sw; + *tx += 2; + } + FINALLY + { + } + } + END_TRY; +} diff --git a/app/src/c_api/rust.c b/app/src/c_api/rust.c new file mode 100644 index 0000000..1d512f5 --- /dev/null +++ b/app/src/c_api/rust.c @@ -0,0 +1,5 @@ +#include +#include "os.h" +#include "cx.h" +#include "zxmacros.h" + diff --git a/app/src/coin.h b/app/src/coin.h new file mode 100644 index 0000000..e2b5188 --- /dev/null +++ b/app/src/coin.h @@ -0,0 +1,64 @@ +/******************************************************************************* +* (c) 2020 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +#define CLA 0x94 + +#define HDPATH_LEN_DEFAULT 5 +#define HDPATH_0_DEFAULT (0x80000000 | 0x2c) +#define HDPATH_1_DEFAULT (0x80000000 | 0x20b) +#define HDPATH_1_RECOVERY (0x80000000 | 0x162) + +#define SK_LEN_25519 64u +#define SCALAR_LEN_ED25519 32u +#define SIG_PLUS_TYPE_LEN 65u + +#define PK_LEN_25519 32u +#define MAX_SIGN_SIZE 256u +#define BLAKE2B_DIGEST_SIZE 32u + +typedef enum { + key_ed25519 = 0, + +#if defined(SUPPORT_SR25519) + key_sr25519 = 1 +#endif + +} key_kind_e; + +// Coin Specific +#define PK_ADDRESS_TYPE COIN_ADDR_TYPE_EDGEWARE +#define SUPPORTED_TX_VERSION_CURRENT LEDGER_MAJOR_VERSION +#define SUPPORTED_TX_VERSION_PREVIOUS (LEDGER_MAJOR_VERSION - 1) +#define SUPPORTED_MINIMUM_SPEC_VERSION 45 + +#define COIN_AMOUNT_DECIMAL_PLACES 18 + +#define COIN_GENESIS_HASH "0000000000000000000000000000000000000000000000000000000000000000" // FIXME: Review +#define COIN_NAME "Edgeware" +#define COIN_TICKER "EDG" + +#define COIN_SECRET_REQUIRED_CLICKS 0 + +#include "coin_standard.h" + +#ifdef __cplusplus +} +#endif diff --git a/app/src/coin_ss58.h b/app/src/coin_ss58.h new file mode 100644 index 0000000..365248a --- /dev/null +++ b/app/src/coin_ss58.h @@ -0,0 +1,30 @@ +/******************************************************************************* +* (c) 2020 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +#define COIN_ADDR_TYPE_POLKADOT 0 +#define COIN_ADDR_TYPE_KUSAMA 2 +#define COIN_ADDR_TYPE_EDGEWARE 7 +#define COIN_ADDR_TYPE_KULUPU 16 +#define COIN_ADDR_TYPE_DOTHEREUM 20 + +#ifdef __cplusplus +} +#endif diff --git a/app/src/coin_standard.h b/app/src/coin_standard.h new file mode 100644 index 0000000..3b301b3 --- /dev/null +++ b/app/src/coin_standard.h @@ -0,0 +1,39 @@ +/******************************************************************************* +* (c) 2019 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include "coin_ss58.h" + + +#define HDPATH_2_DEFAULT (0x80000000u | 0u) +#define HDPATH_3_DEFAULT (0u) +#define HDPATH_4_DEFAULT (0u) + +#define MENU_MAIN_APP_LINE1 "Edgeware" +#define MENU_MAIN_APP_LINE2 "Ready" +#define MENU_MAIN_APP_LINE2_SECRET "RECOVERY" +#define APPVERSION_LINE1 "Edgeware" +#define APPVERSION_LINE2 "v" APPVERSION + +#ifdef __cplusplus +} +#endif diff --git a/app/src/common/actions.c b/app/src/common/actions.c new file mode 100644 index 0000000..893d234 --- /dev/null +++ b/app/src/common/actions.c @@ -0,0 +1,20 @@ +/******************************************************************************* +* (c) 2016 Ledger +* (c) 2019 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "actions.h" + +uint16_t action_addrResponseLen; diff --git a/app/src/common/actions.h b/app/src/common/actions.h new file mode 100644 index 0000000..8cc5bd7 --- /dev/null +++ b/app/src/common/actions.h @@ -0,0 +1,117 @@ +/******************************************************************************* +* (c) 2019 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#pragma once + +#include +#include "crypto.h" +#include "tx.h" +#include "apdu_codes.h" +#include +#include "coin.h" +#include "zxerror.h" + +extern uint16_t action_addrResponseLen; +extern uint16_t action_signResponseLen; + +#ifdef SUPPORT_SR25519 +__Z_INLINE zxerr_t app_sign_sr25519() { + const uint8_t *message = tx_get_buffer(); + const uint16_t messageLength = tx_get_buffer_length(); + uint16_t replyLen = 0; + zxerr_t zxerr; + zxerr = crypto_sign_sr25519_prephase(G_io_apdu_buffer, IO_APDU_BUFFER_SIZE - 3, message, messageLength); + if (zxerr != zxerr_ok) { + MEMZERO(G_io_apdu_buffer, IO_APDU_BUFFER_SIZE); + return zxerr; + } + zxerr = crypto_sign_sr25519(G_io_apdu_buffer, IO_APDU_BUFFER_SIZE - 3, &replyLen); + return zxerr; +} +#endif + +__Z_INLINE void app_sign_ed25519() { + const uint8_t *message = tx_get_buffer(); + const uint16_t messageLength = tx_get_buffer_length(); + uint16_t replyLen = 0; + zxerr_t err = crypto_sign_ed25519(G_io_apdu_buffer, IO_APDU_BUFFER_SIZE - 3, + message, messageLength, &replyLen); + if (err != zxerr_ok) { + set_code(G_io_apdu_buffer, 0, APDU_CODE_SIGN_VERIFY_ERROR); + io_exchange(CHANNEL_APDU | IO_RETURN_AFTER_TX, 2); + } else { + set_code(G_io_apdu_buffer, SIG_PLUS_TYPE_LEN, APDU_CODE_OK); + io_exchange(CHANNEL_APDU | IO_RETURN_AFTER_TX, SIG_PLUS_TYPE_LEN + 2); + } +} + +#ifdef SUPPORT_SR25519 +__Z_INLINE void app_return_sr25519() { + MEMCPY(G_io_apdu_buffer, (void *) &N_sr25519_signdata.signature, SIG_PLUS_TYPE_LEN); + zxerr_t zxerr = zeroize_sr25519_signdata(); + + if (zxerr != zxerr_ok) { + set_code(G_io_apdu_buffer, 0, APDU_CODE_SIGN_VERIFY_ERROR); + io_exchange(CHANNEL_APDU | IO_RETURN_AFTER_TX, 2); + } else { + set_code(G_io_apdu_buffer, SIG_PLUS_TYPE_LEN, APDU_CODE_OK); + io_exchange(CHANNEL_APDU | IO_RETURN_AFTER_TX, SIG_PLUS_TYPE_LEN + 2); + } +} +#endif + +__Z_INLINE void app_reject() { + zeroize_sr25519_signdata(); + set_code(G_io_apdu_buffer, 0, APDU_CODE_COMMAND_NOT_ALLOWED); + io_exchange(CHANNEL_APDU | IO_RETURN_AFTER_TX, 2); +} + +__Z_INLINE zxerr_t app_fill_address(key_kind_e addressKind) { + // Put data directly in the apdu buffer + MEMZERO(G_io_apdu_buffer, IO_APDU_BUFFER_SIZE); + CHECK_ZXERR(crypto_fillAddress(addressKind, + G_io_apdu_buffer, IO_APDU_BUFFER_SIZE - 2, + &action_addrResponseLen)); + return zxerr_ok; +} + +__Z_INLINE key_kind_e get_key_type(uint8_t num) { +#ifdef SUPPORT_SR25519 + switch (num) { + case 0x00: + return key_ed25519; + case 0x01: + return key_sr25519; + } + return 0xff; +#else + return key_ed25519; +#endif +} + +__Z_INLINE void app_reply_error() { + zeroize_sr25519_signdata(); + set_code(G_io_apdu_buffer, 0, APDU_CODE_DATA_INVALID); + io_exchange(CHANNEL_APDU | IO_RETURN_AFTER_TX, 2); +} + +__Z_INLINE void app_reply_address() { + if (action_addrResponseLen == 0) { + app_reply_error(); + return; + } + set_code(G_io_apdu_buffer, action_addrResponseLen, APDU_CODE_OK); + io_exchange(CHANNEL_APDU | IO_RETURN_AFTER_TX, action_addrResponseLen + 2); +} diff --git a/app/src/common/app_main.c b/app/src/common/app_main.c new file mode 100644 index 0000000..cbe8782 --- /dev/null +++ b/app/src/common/app_main.c @@ -0,0 +1,199 @@ +/******************************************************************************* +* (c) 2018, 2019 Zondax GmbH +* (c) 2016 Ledger +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "app_main.h" + +#include +#include +#include +#include + +#include "view.h" +#include "actions.h" +#include "tx.h" +#include "crypto.h" +#include "coin.h" +#include "zxmacros.h" +#include "app_mode.h" + +unsigned char G_io_seproxyhal_spi_buffer[IO_SEPROXYHAL_BUFFER_SIZE_B]; + +unsigned char io_event(unsigned char channel) { + switch (G_io_seproxyhal_spi_buffer[0]) { + case SEPROXYHAL_TAG_FINGER_EVENT: // + UX_FINGER_EVENT(G_io_seproxyhal_spi_buffer); + break; + + case SEPROXYHAL_TAG_BUTTON_PUSH_EVENT: // for Nano S + UX_BUTTON_PUSH_EVENT(G_io_seproxyhal_spi_buffer); + break; + + case SEPROXYHAL_TAG_DISPLAY_PROCESSED_EVENT: + if (!UX_DISPLAYED()) + UX_DISPLAYED_EVENT(); + break; + + case SEPROXYHAL_TAG_TICKER_EVENT: { // + UX_TICKER_EVENT(G_io_seproxyhal_spi_buffer, { + if (UX_ALLOWED) { + UX_REDISPLAY(); + } + }); + break; + } + + // unknown events are acknowledged + default: + UX_DEFAULT_EVENT(); + break; + } + if (!io_seproxyhal_spi_is_status_sent()) { + io_seproxyhal_general_status(); + } + return 1; // DO NOT reset the current APDU transport +} + +unsigned short io_exchange_al(unsigned char channel, unsigned short tx_len) { + switch (channel & ~(IO_FLAGS)) { + case CHANNEL_KEYBOARD: + break; + + // multiplexed io exchange over a SPI channel and TLV encapsulated protocol + case CHANNEL_SPI: + if (tx_len) { + io_seproxyhal_spi_send(G_io_apdu_buffer, tx_len); + + if (channel & IO_RESET_AFTER_REPLIED) { + reset(); + } + return 0; // nothing received from the master so far (it's a tx + // transaction) + } else { + return io_seproxyhal_spi_recv(G_io_apdu_buffer, sizeof(G_io_apdu_buffer), 0); + } + + default: + THROW(INVALID_PARAMETER); + } + return 0; +} + +void handle_generic_apdu(volatile uint32_t *flags, volatile uint32_t *tx, uint32_t rx) { + if (rx > 4 && os_memcmp(G_io_apdu_buffer, "\xE0\x01\x00\x00", 4) == 0) { + // Respond to get device info command + uint8_t *p = G_io_apdu_buffer; + // Target ID 4 bytes + p[0] = (TARGET_ID >> 24) & 0xFF; + p[1] = (TARGET_ID >> 16) & 0xFF; + p[2] = (TARGET_ID >> 8) & 0xFF; + p[3] = (TARGET_ID >> 0) & 0xFF; + p += 4; + // SE Version [length][non-terminated string] + *p = os_version(p + 1, 64); + p = p + 1 + *p; + // Flags [length][flags] + *p = 0; + p++; + // MCU Version [length][non-terminated string] + *p = os_seph_version(p + 1, 64); + p = p + 1 + *p; + + *tx = p - G_io_apdu_buffer; + THROW(APDU_CODE_OK); + } +} + +void app_init() { + io_seproxyhal_init(); + +#ifdef TARGET_NANOX + // grab the current plane mode setting + G_io_app.plane_mode = os_setting_get(OS_SETTING_PLANEMODE, NULL, 0); +#endif // TARGET_NANOX + + USB_power(0); + USB_power(1); + app_mode_reset(); + zeroize_sr25519_signdata(); + view_idle_show(0, NULL); + +#ifdef HAVE_BLE + // Enable Bluetooth + BLE_power(0, NULL); + BLE_power(1, "Nano X"); +#endif // HAVE_BLE + +} + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wmissing-noreturn" + +void app_main() { + volatile uint32_t rx = 0, tx = 0, flags = 0; + + for (;;) { + volatile uint16_t sw = 0; + + BEGIN_TRY; + { + TRY; + { + rx = tx; + tx = 0; + + rx = io_exchange(CHANNEL_APDU | flags, rx); + flags = 0; + CHECK_APP_CANARY() + + if (rx == 0) + THROW(APDU_CODE_EMPTY_BUFFER); + + handle_generic_apdu(&flags, &tx, rx); + CHECK_APP_CANARY() + + handleApdu(&flags, &tx, rx); + CHECK_APP_CANARY() + } + CATCH(EXCEPTION_IO_RESET) + { + // reset IO and UX before continuing + app_init(); + continue; + } + CATCH_OTHER(e); + { + switch (e & 0xF000) { + case 0x6000: + case 0x9000: + sw = e; + break; + default: + sw = 0x6800 | (e & 0x7FF); + break; + } + G_io_apdu_buffer[tx] = sw >> 8; + G_io_apdu_buffer[tx + 1] = sw; + tx += 2; + } + FINALLY; + {} + } + END_TRY; + } +} + +#pragma clang diagnostic pop diff --git a/app/src/common/app_main.h b/app/src/common/app_main.h new file mode 100644 index 0000000..4d21bb7 --- /dev/null +++ b/app/src/common/app_main.h @@ -0,0 +1,50 @@ +/******************************************************************************* +* (c) 2016 Ledger +* (c) 2018 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#pragma once + +#include +#include "apdu_codes.h" + +#define OFFSET_CLA 0 +#define OFFSET_INS 1 //< Instruction offset +#define OFFSET_P1 2 //< P1 +#define OFFSET_P2 3 //< P2 +#define OFFSET_DATA_LEN 4 //< Data Length +#define OFFSET_DATA 5 //< Data offset + +#define APDU_MIN_LENGTH 5 + +#define OFFSET_PAYLOAD_TYPE OFFSET_P1 + +#define INS_GET_VERSION 0x00 +#define INS_GET_ADDR 0x01 +#define INS_SIGN 0x02 + +#define INS_ALLOWLIST_GET_PUBKEY 0x90 +#define INS_ALLOWLIST_SET_PUBKEY 0x91 +#define INS_ALLOWLIST_GET_HASH 0x92 +#define INS_ALLOWLIST_UPLOAD 0x93 + +#if defined(APP_TESTING) +#define INS_TEST 0xFF +#endif + +void app_init(); + +void app_main(); + +void handleApdu(volatile uint32_t *flags, volatile uint32_t *tx, uint32_t rx); diff --git a/app/src/common/main.c b/app/src/common/main.c new file mode 100644 index 0000000..87150f0 --- /dev/null +++ b/app/src/common/main.c @@ -0,0 +1,43 @@ +/******************************************************************************* +* (c) 2016 Ledger +* (c) 2018, 2019 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#include "app_main.h" +#include "view.h" + +#include + +__attribute__((section(".boot"))) int +main(void) { + // exit critical section + __asm volatile("cpsie i"); + + view_init(); + os_boot(); + + BEGIN_TRY + { + TRY + { + app_init(); + app_main(); + } + CATCH_OTHER(e) + {} + FINALLY + {} + } + END_TRY; +} diff --git a/app/src/common/parser.h b/app/src/common/parser.h new file mode 100644 index 0000000..2ba3aa9 --- /dev/null +++ b/app/src/common/parser.h @@ -0,0 +1,45 @@ +/******************************************************************************* +* (c) 2019 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +#include "parser_impl.h" + +const char *parser_getErrorDescription(parser_error_t err); + +//// parses a tx buffer +parser_error_t parser_parse(parser_context_t *ctx, const uint8_t *data, size_t dataLen, parser_tx_t *tx_obj); + +//// verifies tx fields +parser_error_t parser_validate(const parser_context_t *ctx); + +//// returns the number of items in the current parsing context +parser_error_t parser_getNumItems(const parser_context_t *ctx, uint8_t *num_items); + +// retrieves a readable output for each field / page +parser_error_t parser_getItem(const parser_context_t *ctx, + uint8_t displayIdx, + char *outKey, uint16_t outKeyLen, + char *outVal, uint16_t outValLen, + uint8_t pageIdx, uint8_t *pageCount); + +#ifdef __cplusplus +} +#endif diff --git a/app/src/common/parser_common.h b/app/src/common/parser_common.h new file mode 100644 index 0000000..9e06875 --- /dev/null +++ b/app/src/common/parser_common.h @@ -0,0 +1,66 @@ +/******************************************************************************* +* (c) 2019 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +#include "parser_txdef.h" +#include +#include + +#define CHECK_PARSER_ERR(__CALL) { \ + parser_error_t __err = __CALL; \ + CHECK_APP_CANARY() \ + if (__err!=parser_ok) return __err;} + +typedef enum { + // Generic errors + parser_ok = 0, + parser_no_data, + parser_init_context_empty, + parser_display_idx_out_of_range, + parser_display_page_out_of_range, + parser_unexpected_error, + // Coin specific + parser_unexpected_address_type, + parser_spec_not_supported, + parser_tx_version_not_supported, + parser_not_allowed, + parser_not_supported, + parser_unexpected_buffer_end, + parser_unexpected_value, + parser_value_out_of_range, + parser_value_too_many_bytes, + parser_unexpected_module, + parser_unexpected_callIndex, + parser_unexpected_unparsed_bytes, + parser_print_not_supported, + parser_tx_nesting_limit_reached, + parser_tx_call_vec_too_large, +} parser_error_t; + +typedef struct { + const uint8_t *buffer; + uint16_t bufferLen; + uint16_t offset; + parser_tx_t *tx_obj; +} parser_context_t; + +#ifdef __cplusplus +} +#endif diff --git a/app/src/common/tx.c b/app/src/common/tx.c new file mode 100644 index 0000000..b05c192 --- /dev/null +++ b/app/src/common/tx.c @@ -0,0 +1,141 @@ +/******************************************************************************* +* (c) 2019 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "tx.h" +#include "apdu_codes.h" +#include "buffering.h" +#include "parser.h" +#include +#include "zxmacros.h" +#include "zbuffer.h" + +#if defined(TARGET_NANOX) +#define RAM_BUFFER_SIZE 8192 +#define FLASH_BUFFER_SIZE 16384 +#elif defined(TARGET_NANOS) +#define RAM_BUFFER_SIZE 0 +#define FLASH_BUFFER_SIZE 8192 +#endif + +// Ram +uint8_t ram_buffer[RAM_BUFFER_SIZE]; + +// Flash +typedef struct { + uint8_t buffer[FLASH_BUFFER_SIZE]; +} storage_t; + +#if defined(TARGET_NANOS) || defined(TARGET_NANOX) +storage_t NV_CONST N_appdata_impl __attribute__ ((aligned(64))); +#define N_appdata (*(NV_VOLATILE storage_t *)PIC(&N_appdata_impl)) +#endif + +parser_context_t ctx_parsed_tx; + +void tx_initialize() { + buffering_init( + ram_buffer, + sizeof(ram_buffer), + (uint8_t *) N_appdata.buffer, + sizeof(N_appdata.buffer) + ); +} + +void tx_reset() { + buffering_reset(); +} + +uint32_t tx_append(unsigned char *buffer, uint32_t length) { + return buffering_append(buffer, length); +} + +uint32_t tx_get_buffer_length() { + return buffering_get_buffer()->pos; +} + +uint8_t *tx_get_buffer() { + return buffering_get_buffer()->data; +} + +const char *tx_parse() { + parser_tx_t *tx_obj; + + zb_allocate(sizeof(parser_tx_t)); + zb_get((uint8_t **) &tx_obj); + + uint8_t err = parser_parse( + &ctx_parsed_tx, + tx_get_buffer(), + tx_get_buffer_length(), + tx_obj); + + if (err != parser_ok) { + return parser_getErrorDescription(err); + } + + err = parser_validate(&ctx_parsed_tx); + CHECK_APP_CANARY() + + if (err != parser_ok) { + return parser_getErrorDescription(err); + } + + return NULL; +} + +void tx_parse_reset() { + zb_deallocate(); +} + +zxerr_t tx_getNumItems(uint8_t *num_items) { + parser_error_t err = parser_getNumItems(&ctx_parsed_tx, num_items); + + if (err != parser_ok) { + return zxerr_no_data; + } + + return zxerr_ok; +} + +zxerr_t tx_getItem(int8_t displayIdx, + char *outKey, uint16_t outKeyLen, + char *outVal, uint16_t outValLen, + uint8_t pageIdx, uint8_t *pageCount) { + uint8_t numItems = 0; + + CHECK_ZXERR(tx_getNumItems(&numItems)) + + if (displayIdx < 0 || displayIdx > numItems) { + return zxerr_no_data; + } + + parser_error_t err = parser_getItem(&ctx_parsed_tx, + displayIdx, + outKey, outKeyLen, + outVal, outValLen, + pageIdx, pageCount); + + // Convert error codes + if (err == parser_no_data || + err == parser_display_idx_out_of_range || + err == parser_display_page_out_of_range) + return zxerr_no_data; + + if (err != parser_ok) + return zxerr_unknown; + + return zxerr_ok; +} diff --git a/app/src/common/tx.h b/app/src/common/tx.h new file mode 100644 index 0000000..b84b915 --- /dev/null +++ b/app/src/common/tx.h @@ -0,0 +1,54 @@ +/******************************************************************************* +* (c) 2019 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#pragma once + +#include "os.h" +#include "coin.h" +#include "zxerror.h" + +void tx_initialize(); + +/// Clears the transaction buffer +void tx_reset(); + +/// Appends buffer to the end of the current transaction buffer +/// Transaction buffer will grow until it reaches the maximum allowed size +/// \param buffer +/// \param length +/// \return It returns an error message if the buffer is too small. +uint32_t tx_append(unsigned char *buffer, uint32_t length); + +/// Returns size of the raw json transaction buffer +/// \return +uint32_t tx_get_buffer_length(); + +/// Returns the raw json transaction buffer +/// \return +uint8_t *tx_get_buffer(); + +/// Parse message stored in transaction buffer +/// This function should be called as soon as full buffer data is loaded. +/// \return It returns NULL if data is valid or error message otherwise. +const char *tx_parse(); + +/// Return the number of items in the transaction +zxerr_t tx_getNumItems(uint8_t *num_items); + +/// Gets an specific item from the transaction (including paging) +zxerr_t tx_getItem(int8_t displayIdx, + char *outKey, uint16_t outKeyLen, + char *outValue, uint16_t outValueLen, + uint8_t pageIdx, uint8_t *pageCount); diff --git a/app/src/crypto.c b/app/src/crypto.c new file mode 100644 index 0000000..8e51212 --- /dev/null +++ b/app/src/crypto.c @@ -0,0 +1,248 @@ +/******************************************************************************* +* (c) 2019 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "crypto.h" +#include "base58.h" +#include "coin.h" +#include "cx.h" +#include "rslib.h" +#include "zxmacros.h" +#include "ristretto.h" + +uint16_t sr25519_signdataLen; +uint32_t hdPath[HDPATH_LEN_DEFAULT]; + +zxerr_t crypto_extractPublicKey(key_kind_e addressKind, const uint32_t path[HDPATH_LEN_DEFAULT], + uint8_t *pubKey, uint16_t pubKeyLen) { + cx_ecfp_public_key_t cx_publicKey; + cx_ecfp_private_key_t cx_privateKey; + uint8_t privateKeyData[SK_LEN_25519]; + MEMZERO(privateKeyData, SK_LEN_25519); + + if (pubKeyLen < PK_LEN_25519) { + return zxerr_invalid_crypto_settings; + } + + BEGIN_TRY + { + TRY + { + // Generate keys + os_perso_derive_node_bip32_seed_key( + HDW_NORMAL, + CX_CURVE_Ed25519, + path, + HDPATH_LEN_DEFAULT, + privateKeyData, + NULL, + NULL, + 0); + + switch (addressKind) { + case key_ed25519: { + cx_ecfp_init_private_key(CX_CURVE_Ed25519, privateKeyData, 32, &cx_privateKey); + cx_ecfp_init_public_key(CX_CURVE_Ed25519, NULL, 0, &cx_publicKey); + cx_ecfp_generate_pair(CX_CURVE_Ed25519, &cx_publicKey, &cx_privateKey, 1); + for (unsigned int i = 0; i < PK_LEN_25519; i++) { + pubKey[i] = cx_publicKey.W[64 - i]; + } + + if ((cx_publicKey.W[PK_LEN_25519] & 1) != 0) { + pubKey[31] |= 0x80; + } + break; + } +#ifdef SUPPORT_SR25519 + case key_sr25519: + get_sr25519_sk(privateKeyData); + crypto_scalarmult_ristretto255_base_sdk(pubKey, privateKeyData); + break; +#endif + default: + CLOSE_TRY; + return zxerr_invalid_crypto_settings; + } + } + FINALLY + { + MEMZERO(&cx_privateKey, sizeof(cx_privateKey)); + MEMZERO(privateKeyData, SK_LEN_25519); + } + } + END_TRY; + + return zxerr_ok; +} + +zxerr_t crypto_sign_ed25519(uint8_t *signature, uint16_t signatureMaxlen, + const uint8_t *message, uint16_t messageLen, + uint16_t *signatureLen) { + const uint8_t *toSign = message; + uint8_t messageDigest[BLAKE2B_DIGEST_SIZE]; + + if (messageLen > MAX_SIGN_SIZE) { + // Hash it + cx_blake2b_t ctx; + cx_blake2b_init(&ctx, 256); + cx_hash(&ctx.header, CX_LAST, message, messageLen, messageDigest, BLAKE2B_DIGEST_SIZE); + toSign = messageDigest; + messageLen = BLAKE2B_DIGEST_SIZE; + } + + cx_ecfp_private_key_t cx_privateKey; + uint8_t privateKeyData[SK_LEN_25519]; + int signatureLength = 0; + unsigned int info = 0; + + BEGIN_TRY + { + TRY + { + // Generate keys + os_perso_derive_node_bip32_seed_key( + HDW_NORMAL, + CX_CURVE_Ed25519, + hdPath, + HDPATH_LEN_DEFAULT, + privateKeyData, + NULL, + NULL, + 0); + + cx_ecfp_init_private_key(CX_CURVE_Ed25519, privateKeyData, SCALAR_LEN_ED25519, &cx_privateKey); + + // Sign + *signature = PREFIX_SIGNATURE_TYPE_ED25519; + signatureLength = cx_eddsa_sign(&cx_privateKey, + CX_LAST, + CX_SHA512, + toSign, + messageLen, + NULL, + 0, + signature + 1, + signatureMaxlen - 1, + &info); + + } + CATCH_ALL + { + MEMZERO(&cx_privateKey, sizeof(cx_privateKey)); + *signatureLen = 0; + CLOSE_TRY; + return zxerr_unknown; + }; + FINALLY + { + MEMZERO(&cx_privateKey, sizeof(cx_privateKey)); + MEMZERO(privateKeyData, SK_LEN_25519); + MEMZERO(signature + signatureLength + 1, signatureMaxlen - signatureLength - 1); + } + } + END_TRY; + return zxerr_ok; +} + +#ifdef SUPPORT_SR25519 +zxerr_t crypto_sign_sr25519_prephase(uint8_t *buffer, uint16_t bufferLen, + const uint8_t *message, uint16_t messageLen) { + if (messageLen > MAX_SIGN_SIZE) { + uint8_t messageDigest[BLAKE2B_DIGEST_SIZE]; + cx_blake2b_t *ctx = (cx_blake2b_t *) buffer; + cx_blake2b_init(ctx, 256); + cx_hash(&ctx->header, CX_LAST, message, messageLen, messageDigest, BLAKE2B_DIGEST_SIZE); + MEMCPY_NV((void *) &N_sr25519_signdata.signdata, messageDigest, BLAKE2B_DIGEST_SIZE); + sr25519_signdataLen = BLAKE2B_DIGEST_SIZE; + } else { + MEMCPY_NV((void *) &N_sr25519_signdata.signdata, (void *) message, messageLen); + sr25519_signdataLen = messageLen; + } + + MEMZERO(buffer, bufferLen); + uint8_t privateKeyData[SK_LEN_25519]; + MEMZERO(privateKeyData, SK_LEN_25519); + os_perso_derive_node_bip32_seed_key( + HDW_NORMAL, + CX_CURVE_Ed25519, + hdPath, + HDPATH_LEN_DEFAULT, + privateKeyData, + NULL, + NULL, + 0); + + uint8_t pubkey[PK_LEN_25519]; + MEMZERO(pubkey, PK_LEN_25519); + get_sr25519_sk(privateKeyData); + crypto_scalarmult_ristretto255_base_sdk(pubkey, privateKeyData); + MEMCPY_NV((void *) &N_sr25519_signdata.sk, privateKeyData, SK_LEN_25519); + MEMCPY_NV((void *) &N_sr25519_signdata.pk, pubkey, PK_LEN_25519); + MEMZERO(buffer, bufferLen); + return zxerr_ok; +} + +zxerr_t crypto_sign_sr25519(uint8_t *signature, uint16_t signatureMaxlen, + uint16_t *signatureLen) { + + BEGIN_TRY + { + TRY + { + if (signatureMaxlen < MIN_BUFFER_LENGTH) { + CLOSE_TRY; + return zxerr_invalid_crypto_settings; + } + *signature = PREFIX_SIGNATURE_TYPE_SR25519; + sign_sr25519_phase1((uint8_t *) &N_sr25519_signdata.sk, (uint8_t *) &N_sr25519_signdata.pk, NULL, 0, + (uint8_t *) &N_sr25519_signdata.signdata, sr25519_signdataLen, signature + 1); + crypto_scalarmult_ristretto255_base_sdk(signature + 1, signature + 1 + PK_LEN_25519); + sign_sr25519_phase2((uint8_t *) &N_sr25519_signdata.sk, (uint8_t *) &N_sr25519_signdata.pk, NULL, 0, + (uint8_t *) &N_sr25519_signdata.signdata, sr25519_signdataLen, signature + 1); + MEMCPY_NV((void *) &N_sr25519_signdata.signature, signature, SIG_PLUS_TYPE_LEN); + } + CATCH_ALL + { + CLOSE_TRY; + return zxerr_unknown; + }; + FINALLY + { + MEMZERO(signature + SIG_PLUS_TYPE_LEN, signatureMaxlen - SIG_PLUS_TYPE_LEN); + } + } + END_TRY; + return zxerr_ok; +} +#endif + +zxerr_t crypto_fillAddress(key_kind_e addressKind, uint8_t *buffer, uint16_t bufferLen, uint16_t *addrResponseLen) { + if (bufferLen < PK_LEN_25519 + SS58_ADDRESS_MAX_LEN) { + return 0; + } + MEMZERO(buffer, bufferLen); + CHECK_ZXERR(crypto_extractPublicKey(addressKind, hdPath, buffer, bufferLen)); + + size_t outLen = crypto_SS58EncodePubkey(buffer + PK_LEN_25519, + bufferLen - PK_LEN_25519, + PK_ADDRESS_TYPE, buffer); + if (outLen == 0) { + MEMZERO(buffer, bufferLen); + return zxerr_unknown; + } + + *addrResponseLen = PK_LEN_25519 + outLen; + return zxerr_ok; +} diff --git a/app/src/crypto.h b/app/src/crypto.h new file mode 100644 index 0000000..20643e7 --- /dev/null +++ b/app/src/crypto.h @@ -0,0 +1,99 @@ +/******************************************************************************* +* (c) 2019 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include "coin.h" +#include +#include +#include "zxerror.h" + +#ifdef SUPPORT_SR25519 +// Flash +typedef struct { + uint8_t sk[SK_LEN_25519]; + uint8_t pk[PK_LEN_25519]; + uint8_t signdata[MAX_SIGN_SIZE]; + uint8_t signature[SIG_PLUS_TYPE_LEN]; +} sr25519_signdata_t; + +extern uint16_t sr25519_signdataLen; + +#if defined(TARGET_NANOS) || defined(TARGET_NANOX) +sr25519_signdata_t NV_CONST N_srdata_impl __attribute__ ((aligned(64))); +#define N_sr25519_signdata (*(NV_VOLATILE sr25519_signdata_t *)PIC(&N_srdata_impl)) +#endif + +zxerr_t zeroize_sr25519_signdata() { + uint8_t dummysk[SK_LEN_25519]; + MEMZERO(dummysk, SK_LEN_25519); + uint8_t dummypk[PK_LEN_25519]; + MEMZERO(dummypk, PK_LEN_25519); + uint8_t dummysigndata[MAX_SIGN_SIZE]; + MEMZERO(dummysigndata, MAX_SIGN_SIZE); + uint8_t dummysignature[SIG_PLUS_TYPE_LEN]; + MEMZERO(dummysignature, SIG_PLUS_TYPE_LEN); + + MEMCPY_NV((void *) &N_sr25519_signdata.sk, dummysk, SK_LEN_25519); + MEMCPY_NV((void *) &N_sr25519_signdata.pk, dummypk, PK_LEN_25519); + MEMCPY_NV((void *) &N_sr25519_signdata.signdata, dummysigndata, MAX_SIGN_SIZE); + MEMCPY_NV((void *) &N_sr25519_signdata.signature, dummysignature, SIG_PLUS_TYPE_LEN); + sr25519_signdataLen = 0; + return zxerr_ok; +} + +#else + +zxerr_t zeroize_sr25519_signdata() { + return zxerr_ok; +} + +#endif + +//#define SS58_BLAKE_PREFIX (const unsigned char *) "SS58PRE" +//#define SS58_BLAKE_PREFIX_LEN 7 +#define SS58_ADDRESS_MAX_LEN 60u + +#define PREFIX_SIGNATURE_TYPE_ED25519 0 +#define PREFIX_SIGNATURE_TYPE_SR25519 1 +#define PREFIX_SIGNATURE_TYPE_EDCSA 2 +#define MIN_BUFFER_LENGTH 235 +#define START_BUFFER 33 + +extern uint32_t hdPath[HDPATH_LEN_DEFAULT]; + +uint8_t crypto_SS58EncodePubkey(uint8_t *buffer, uint16_t buffer_len, + uint8_t addressType, const uint8_t *pubkey); + +zxerr_t crypto_fillAddress(key_kind_e addressKind, uint8_t *buffer, uint16_t bufferLen, uint16_t *addrResponseLen); + +zxerr_t crypto_sign_sr25519_prephase(uint8_t *buffer, uint16_t bufferLen, const uint8_t *message, uint16_t messageLen); + +zxerr_t crypto_sign_sr25519(uint8_t *signature, uint16_t signatureMaxlen, + uint16_t *signatureLen); + +zxerr_t crypto_sign_ed25519(uint8_t *signature, uint16_t signatureMaxlen, + const uint8_t *message, uint16_t messageLen, + uint16_t *signatureLen); + +#ifdef __cplusplus +} +#endif diff --git a/app/src/crypto_helper.c b/app/src/crypto_helper.c new file mode 100644 index 0000000..199414c --- /dev/null +++ b/app/src/crypto_helper.c @@ -0,0 +1,73 @@ +/******************************************************************************* +* (c) 2019 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "crypto_helper.h" +#include "base58.h" + +#if defined(TARGET_NANOS) || defined(TARGET_NANOX) +#include "cx.h" + +int ss58hash(const unsigned char *in, unsigned int inLen, + unsigned char *out, unsigned int outLen) { + + cx_blake2b_t ctx; + cx_blake2b_init(&ctx, 512); + cx_hash(&ctx.header, 0, SS58_BLAKE_PREFIX, SS58_BLAKE_PREFIX_LEN, NULL, 0); + cx_hash(&ctx.header, CX_LAST, in, inLen, out, outLen); + + return 0; +} +#else + +#include +#include "blake2.h" + +int ss58hash(const unsigned char *in, unsigned int inLen, + unsigned char *out, unsigned int outLen) { + blake2b_state s; + blake2b_init(&s, 64); + blake2b_update(&s, SS58_BLAKE_PREFIX, SS58_BLAKE_PREFIX_LEN); + blake2b_update(&s, in, inLen); + blake2b_final(&s, out, outLen); + return 0; +} + +#endif + +uint8_t crypto_SS58EncodePubkey(uint8_t *buffer, uint16_t buffer_len, + uint8_t addressType, const uint8_t *pubkey) { + if (buffer == NULL || buffer_len < SS58_ADDRESS_MAX_LEN) { + return 0; + } + if (pubkey == NULL) { + return 0; + } + MEMZERO(buffer, buffer_len); + + uint8_t unencoded[35]; + uint8_t hash[64]; + + unencoded[0] = addressType; // address type + MEMCPY(unencoded + 1, pubkey, 32); // account id + ss58hash((uint8_t *) unencoded, 33, hash, 64); + unencoded[33] = hash[0]; + unencoded[34] = hash[1]; + + size_t outLen = buffer_len; + encode_base58(unencoded, 35, buffer, &outLen); + + return outLen; +} diff --git a/app/src/crypto_helper.h b/app/src/crypto_helper.h new file mode 100644 index 0000000..090875f --- /dev/null +++ b/app/src/crypto_helper.h @@ -0,0 +1,38 @@ +/******************************************************************************* +* (c) 2019 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include "coin.h" +#include +#include +#include "zxerror.h" + +#define SS58_BLAKE_PREFIX (const unsigned char *) "SS58PRE" +#define SS58_BLAKE_PREFIX_LEN 7 +#define SS58_ADDRESS_MAX_LEN 60u + +uint8_t crypto_SS58EncodePubkey(uint8_t *buffer, uint16_t buffer_len, + uint8_t addressType, const uint8_t *pubkey); + +#ifdef __cplusplus +} +#endif diff --git a/app/src/parser.c b/app/src/parser.c new file mode 100644 index 0000000..b193b10 --- /dev/null +++ b/app/src/parser.c @@ -0,0 +1,257 @@ +/******************************************************************************* +* (c) 2019 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include +#include +#include "zbuffer.h" +#include "app_mode.h" +#include "parser.h" +#include "coin.h" +#include "coin_ss58.h" +#include "substrate_dispatch.h" + +#if defined(TARGET_NANOX) +// For some reason NanoX requires this function +void __assert_fail(const char * assertion, const char * file, unsigned int line, const char * function){ + while(1) {}; +} +#endif + +#define FIELD_FIXED_TOTAL_COUNT 7 + +#define FIELD_METHOD 0 +#define FIELD_NETWORK 1 +#define FIELD_NONCE 2 +#define FIELD_TIP 3 +#define FIELD_ERA_PHASE 4 +#define FIELD_ERA_PERIOD 5 +#define FIELD_BLOCK_HASH 6 + +#define EXPERT_FIELDS_TOTAL_COUNT 5 + +parser_error_t parser_parse(parser_context_t *ctx, const uint8_t *data, size_t dataLen, parser_tx_t *tx_obj) { + CHECK_PARSER_ERR(parser_init(ctx, data, dataLen)) + ctx->tx_obj = tx_obj; + ctx->tx_obj->nestCallIdx.slotIdx = 0; + ctx->tx_obj->nestCallIdx._lenBuffer = 0; + ctx->tx_obj->nestCallIdx._ptr = NULL; + ctx->tx_obj->nestCallIdx._nextPtr = NULL; + ctx->tx_obj->nestCallIdx.isTail = true; + parser_error_t err = _readTx(ctx, ctx->tx_obj); + CTX_CHECK_AVAIL(ctx, 0) + zb_check_canary(); + + return err; +} + +__Z_INLINE bool parser_show_expert_fields() { + return app_mode_expert(); +} + +bool parser_show_tip(const parser_context_t *ctx){ + if (ctx->tx_obj->tip.value.len <= 4) { + uint64_t v; + _getValue(&ctx->tx_obj->tip.value, &v); + if ( v == 0 ){ + return false; + } + } + return true; +} + +parser_error_t parser_validate(const parser_context_t *ctx) { + // Iterate through all items to check that all can be shown and are valid + uint8_t numItems = 0; + CHECK_PARSER_ERR(parser_getNumItems(ctx, &numItems)); + + char tmpKey[40]; + char tmpVal[40]; + + for (uint8_t idx = 0; idx < numItems; idx++) { + uint8_t pageCount = 0; + CHECK_PARSER_ERR(parser_getItem(ctx, idx, tmpKey, sizeof(tmpKey), tmpVal, sizeof(tmpVal), 0, &pageCount)) + } + + return parser_ok; +} + +parser_error_t parser_getNumItems(const parser_context_t *ctx, uint8_t *num_items) { + uint8_t methodArgCount = _getMethod_NumItems(ctx->tx_obj->transactionVersion, + ctx->tx_obj->callIndex.moduleIdx, + ctx->tx_obj->callIndex.idx); + + uint8_t total = FIELD_FIXED_TOTAL_COUNT; + if(!parser_show_tip(ctx)){ + total -= 1; + } + if(!parser_show_expert_fields()){ + total -= EXPERT_FIELDS_TOTAL_COUNT; + + for (uint8_t argIdx = 0; argIdx < methodArgCount; argIdx++) { + bool isArgExpert = _getMethod_ItemIsExpert(ctx->tx_obj->transactionVersion, + ctx->tx_obj->callIndex.moduleIdx, + ctx->tx_obj->callIndex.idx, argIdx); + if(isArgExpert) { + methodArgCount--; + } + } + } + + *num_items = total + methodArgCount; + return parser_ok; +} + +parser_error_t parser_getItem(const parser_context_t *ctx, + uint8_t displayIdx, + char *outKey, uint16_t outKeyLen, + char *outVal, uint16_t outValLen, + uint8_t pageIdx, uint8_t *pageCount) { + MEMZERO(outKey, outKeyLen); + MEMZERO(outVal, outValLen); + snprintf(outKey, outKeyLen, "?"); + snprintf(outVal, outValLen, "?"); + *pageCount = 1; + + uint8_t numItems; + CHECK_PARSER_ERR(parser_getNumItems(ctx, &numItems)) + CHECK_APP_CANARY() + + if (displayIdx < 0 || displayIdx >= numItems) { + return parser_no_data; + } + + parser_error_t err = parser_ok; + if (displayIdx == FIELD_METHOD) { + snprintf(outKey, outKeyLen, "%s", _getMethod_ModuleName(ctx->tx_obj->transactionVersion, ctx->tx_obj->callIndex.moduleIdx)); + snprintf(outVal, outValLen, "%s", _getMethod_Name(ctx->tx_obj->transactionVersion, + ctx->tx_obj->callIndex.moduleIdx, + ctx->tx_obj->callIndex.idx)); + return err; + } + + // VARIABLE ARGUMENTS + uint8_t methodArgCount = _getMethod_NumItems(ctx->tx_obj->transactionVersion, + ctx->tx_obj->callIndex.moduleIdx, + ctx->tx_obj->callIndex.idx); + uint8_t argIdx = displayIdx - 1; + + + if (!parser_show_expert_fields()) { + // Search for the next non expert item + while ((argIdx < methodArgCount) && _getMethod_ItemIsExpert(ctx->tx_obj->transactionVersion, + ctx->tx_obj->callIndex.moduleIdx, + ctx->tx_obj->callIndex.idx, argIdx)) { + argIdx++; + displayIdx++; + } + } + + if (argIdx < methodArgCount) { + snprintf(outKey, outKeyLen, "%s", + _getMethod_ItemName(ctx->tx_obj->transactionVersion, + ctx->tx_obj->callIndex.moduleIdx, + ctx->tx_obj->callIndex.idx, + argIdx)); + + err = _getMethod_ItemValue(ctx->tx_obj->transactionVersion, + &ctx->tx_obj->method, + ctx->tx_obj->callIndex.moduleIdx, ctx->tx_obj->callIndex.idx, argIdx, + outVal, outValLen, + pageIdx, pageCount); + return err; + } else { + // CONTINUE WITH FIXED ARGUMENTS + displayIdx -= methodArgCount; + if( displayIdx == FIELD_NETWORK ){ + if (_getAddressType() == PK_ADDRESS_TYPE) { + if(parser_show_expert_fields()){ + snprintf(outKey, outKeyLen, "Chain"); + snprintf(outVal, outValLen, COIN_NAME); + return err; + } + }else { + snprintf(outKey, outKeyLen, "Genesis Hash"); + _toStringHash(&ctx->tx_obj->genesisHash, + outVal, outValLen, + pageIdx, pageCount); + return err; + } + } + + if( !parser_show_expert_fields() ){ + displayIdx++; + } + + if( displayIdx == FIELD_NONCE && parser_show_expert_fields()) { + snprintf(outKey, outKeyLen, "Nonce"); + return _toStringCompactIndex(&ctx->tx_obj->nonce, + outVal, outValLen, + pageIdx, pageCount); + } + + if( !parser_show_expert_fields() ){ + displayIdx++; + } + + if( displayIdx == FIELD_TIP && parser_show_tip(ctx)) { + snprintf(outKey, outKeyLen, "Tip"); + err = _toStringCompactBalance(&ctx->tx_obj->tip, + outVal, outValLen, + pageIdx, pageCount); + if( err != parser_ok ) return err; + number_inplace_trimming(outVal); + return err; + } + + if(!parser_show_tip(ctx)){ + displayIdx++; + } + + if( displayIdx == FIELD_ERA_PHASE && parser_show_expert_fields() ) { + snprintf(outKey, outKeyLen, "Era Phase"); + uint64_to_str(outVal, outValLen, ctx->tx_obj->era.phase); + return err; + } + + if( !parser_show_expert_fields() ){ + displayIdx++; + } + + if( displayIdx == FIELD_ERA_PERIOD && parser_show_expert_fields() ) { + snprintf(outKey, outKeyLen, "Era Period"); + uint64_to_str(outVal, outValLen, ctx->tx_obj->era.period); + return err; + } + + if( !parser_show_expert_fields() ){ + displayIdx++; + } + + if( displayIdx == FIELD_BLOCK_HASH && parser_show_expert_fields() ) { + snprintf(outKey, outKeyLen, "Block"); + _toStringHash(&ctx->tx_obj->blockHash, + outVal, outValLen, + pageIdx, pageCount); + return err; + } + + return parser_no_data; + } + +} + + + diff --git a/app/src/parser_impl.c b/app/src/parser_impl.c new file mode 100644 index 0000000..f5c4bae --- /dev/null +++ b/app/src/parser_impl.c @@ -0,0 +1,522 @@ +/******************************************************************************* +* (c) 2019 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include +#include "parser_impl.h" +#include "parser_txdef.h" +#include "coin.h" +#include "crypto_helper.h" +#include "bignum.h" +#include "coin_ss58.h" +#include "substrate_types.h" +#include "substrate_dispatch.h" + +parser_error_t parser_init_context(parser_context_t *ctx, + const uint8_t *buffer, + uint16_t bufferSize) { + ctx->offset = 0; + ctx->buffer = NULL; + ctx->bufferLen = 0; + + if (bufferSize == 0 || buffer == NULL) { + // Not available, use defaults + return parser_init_context_empty; + } + + ctx->buffer = buffer; + ctx->bufferLen = bufferSize; + return parser_ok; +} + +parser_error_t parser_init(parser_context_t *ctx, const uint8_t *buffer, uint16_t bufferSize) { + CHECK_PARSER_ERR(parser_init_context(ctx, buffer, bufferSize)) + return parser_ok; +} + +const char *parser_getErrorDescription(parser_error_t err) { + switch (err) { + // General errors + case parser_ok: + return "No error"; + case parser_no_data: + return "No more data"; + case parser_init_context_empty: + return "Initialized empty context"; + case parser_display_idx_out_of_range: + return "display_idx_out_of_range"; + case parser_display_page_out_of_range: + return "display_page_out_of_range"; + // Coin specific + case parser_spec_not_supported: + return "Spec version not supported"; + case parser_tx_version_not_supported: + return "Txn version not supported"; + case parser_not_allowed: + return "Not allowed"; + case parser_not_supported: + return "Not supported"; + case parser_unexpected_buffer_end: + return "Unexpected buffer end"; + case parser_unexpected_value: + return "Unexpected value"; + case parser_value_out_of_range: + return "Value out of range"; + case parser_value_too_many_bytes: + return "Value too many bytes"; + case parser_unexpected_module: + return "Unexpected module"; + case parser_unexpected_callIndex: + return "Unexpected call index"; + case parser_unexpected_unparsed_bytes: + return "Unexpected unparsed bytes"; + case parser_print_not_supported: + return "Value cannot be printed"; + case parser_tx_nesting_limit_reached: + return "Max nested calls reached"; + case parser_tx_call_vec_too_large: + return "Call vector exceeds limit"; + default: + return "Unrecognized error code"; + } +} + +GEN_DEF_READFIX_UNSIGNED(8) + +GEN_DEF_READFIX_UNSIGNED(16) + +GEN_DEF_READFIX_UNSIGNED(32) + +GEN_DEF_READFIX_UNSIGNED(64) + +parser_error_t _readBool(parser_context_t *c, pd_bool_t *v) { + CHECK_INPUT(); + + const uint8_t p = *(c->buffer + c->offset); + CTX_CHECK_AND_ADVANCE(c, 1) + + switch (p) { + case 0x00: + *v = bool_false; + break; + case 0x01: + *v = bool_true; + break; + default: + return parser_unexpected_value; + } + return parser_ok; +} + +parser_error_t _readCompactInt(parser_context_t *c, compactInt_t *v) { + CHECK_INPUT(); + + v->ptr = c->buffer + c->offset; + const uint8_t mode = *v->ptr & 0x03u; // get mode from two least significant bits + + uint64_t tmp; + switch (mode) { + case 0: // single byte + v->len = 1; + CTX_CHECK_AND_ADVANCE(c, v->len) + _getValue(v, &tmp); + break; + case 1: // 2-byte + v->len = 2; + CTX_CHECK_AND_ADVANCE(c, v->len) + _getValue(v, &tmp); + break; + case 2: // 4-byte + v->len = 4; + CTX_CHECK_AND_ADVANCE(c, v->len) + _getValue(v, &tmp); + break; + case 3: // bigint + v->len = (*v->ptr >> 2u) + 4 + 1; + CTX_CHECK_AND_ADVANCE(c, v->len) + break; + default: + // this is actually impossible + return parser_unexpected_value; + } + + return parser_ok; +} + +parser_error_t _getValue(const compactInt_t *c, uint64_t *v) { + *v = 0; + + switch (c->len) { + case 1: + *v = (*c->ptr) >> 2u; + break; + case 2: + *v = (*c->ptr) >> 2u; + *v += *(c->ptr + 1) << 6u; + if (*v < 64) { + return parser_value_out_of_range; + } + break; + case 4: + *v = (*c->ptr) >> 2u; + *v += *(c->ptr + 1) << 6u; + *v += *(c->ptr + 2) << (8u + 6u); + *v += *(c->ptr + 3) << (16u + 6u); + if (*v < 16383) { + return parser_value_out_of_range; + } + break; + default: + return parser_value_out_of_range; + } + + return parser_ok; +} + +parser_error_t _toStringCompactInt(const compactInt_t *c, + uint8_t decimalPlaces, + char postfix, + char prefix[], + char *outValue, uint16_t outValueLen, + uint8_t pageIdx, uint8_t *pageCount) { + char bufferUI[200]; + MEMZERO(outValue, outValueLen); + MEMZERO(bufferUI, sizeof(bufferUI)); + *pageCount = 1; + + if (c->len <= 4) { + uint64_t v; + _getValue(c, &v); + if (uint64_to_str(bufferUI, sizeof(bufferUI), v) != NULL) { + return parser_unexpected_value; + } + } else { + // This is longer number + uint8_t bcdOut[100]; + const uint16_t bcdOutLen = sizeof(bcdOut); + + bignumLittleEndian_to_bcd(bcdOut, bcdOutLen, c->ptr + 1, c->len - 1); + if (!bignumLittleEndian_bcdprint(bufferUI, sizeof(bufferUI), bcdOut, bcdOutLen)) + return parser_unexpected_buffer_end; + } + + // Format number + if (intstr_to_fpstr_inplace(bufferUI, sizeof(bufferUI), decimalPlaces) == 0){ + return parser_unexpected_value; + } + + // Add prefix + if (strlen(prefix) > 0) { + size_t size = strlen(bufferUI) + strlen(prefix) + 2; + char _tmpBuffer[200]; + MEMZERO(_tmpBuffer, sizeof(_tmpBuffer)); + strcat(_tmpBuffer, prefix); + strcat(_tmpBuffer, " "); + strcat(_tmpBuffer, bufferUI); + // print length: strlen(value) + strlen(prefix) + strlen(" ") + strlen("\0") + MEMZERO(bufferUI, sizeof(bufferUI)); + snprintf(bufferUI, size, "%s", _tmpBuffer); + } + + // Add postfix + if (postfix > 32 && postfix < 127) { + const uint16_t p = strlen(bufferUI); + bufferUI[p] = postfix; + } + + pageString(outValue, outValueLen, bufferUI, pageIdx, pageCount); + + return parser_ok; +} + +////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////// + +parser_error_t _readCallIndex(parser_context_t *c, pd_CallIndex_t *v) { + CHECK_INPUT(); + + CHECK_ERROR(_readUInt8(c, &v->moduleIdx)); + CHECK_ERROR(_readUInt8(c, &v->idx)); + return parser_ok; +} + +parser_error_t _readEra(parser_context_t *c, pd_ExtrinsicEra_t *v) { + CHECK_INPUT(); + // https://github.com/paritytech/substrate/blob/fc3adc87dc806237eb7371c1d21055eea1702be0/core/sr-primitives/src/generic/era.rs#L117 + + v->type = eEraImmortal; + + uint8_t first; + CHECK_ERROR(_readUInt8(c, &first)); + if (first == 0) { return parser_ok; } + + v->type = eEraMortal; + uint64_t encoded = first; + CHECK_ERROR(_readUInt8(c, &first)); + encoded += (uint64_t) first << 8u; + + v->period = 2U << (encoded % (1u << 4u)); + uint64_t quantize_factor = (v->period >> 12u); + quantize_factor = (quantize_factor == 0 ? 1 : quantize_factor); + + v->phase = (encoded >> 4u) * quantize_factor; + + if (v->period >= 4 && v->phase < v->period) { + return parser_ok; + } + + return parser_unexpected_value; +} + +//////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////// + +parser_error_t _readCompactIndex(parser_context_t *c, pd_CompactIndex_t *v) { + CHECK_INPUT(); + CHECK_ERROR(_readCompactInt(c, &v->index)); + return parser_ok; +} + +parser_error_t _readCompactBalance(parser_context_t *c, pd_CompactBalance_t *v) { + CHECK_INPUT(); + CHECK_ERROR(_readCompactInt(c, &v->value)); + return parser_ok; +} + +parser_error_t _toStringCompactIndex(const pd_CompactIndex_t *v, + char *outValue, uint16_t outValueLen, + uint8_t pageIdx, uint8_t *pageCount) { + return _toStringCompactInt(&v->index, 0, 0, "", outValue, outValueLen, pageIdx, pageCount); +} + +parser_error_t _toStringCompactBalance(const pd_CompactBalance_t *v, + char *outValue, uint16_t outValueLen, + uint8_t pageIdx, uint8_t *pageCount) { + CHECK_ERROR(_toStringCompactInt(&v->value, COIN_AMOUNT_DECIMAL_PLACES, 0, COIN_TICKER, outValue, outValueLen, pageIdx, pageCount)) + number_inplace_trimming(outValue); + return parser_ok; +} + +//////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////// + +parser_error_t _checkVersions(parser_context_t *c) { + // Methods are not length delimited so in order to retrieve the specVersion + // it is necessary to parse from the back. + // The transaction is expect to end in + // [4 bytes] specVersion + // [4 bytes] transactionVersion + // [32 bytes] genesisHash + // [32 bytes] blockHash + const uint16_t specOffsetFromBack = 4 + 4 + 32 + 32; + if (c->bufferLen < specOffsetFromBack) { + return parser_unexpected_buffer_end; + } + + uint8_t *p = (uint8_t *) (c->buffer + c->bufferLen - specOffsetFromBack); + uint32_t specVersion = 0; + specVersion += (uint32_t) p[0] << 0u; + specVersion += (uint32_t) p[1] << 8u; + specVersion += (uint32_t) p[2] << 16u; + specVersion += (uint32_t) p[3] << 24u; + + p += 4; + uint32_t transactionVersion = 0; + transactionVersion += (uint32_t) p[0] << 0u; + transactionVersion += (uint32_t) p[1] << 8u; + transactionVersion += (uint32_t) p[2] << 16u; + transactionVersion += (uint32_t) p[3] << 24u; + + if (transactionVersion != (SUPPORTED_TX_VERSION_CURRENT) && + transactionVersion != (SUPPORTED_TX_VERSION_PREVIOUS) ) { + return parser_tx_version_not_supported; + } + + if (specVersion < SUPPORTED_MINIMUM_SPEC_VERSION) { + return parser_spec_not_supported; + } + + c->tx_obj->specVersion = specVersion; + c->tx_obj->transactionVersion = transactionVersion; + + return parser_ok; +} + +uint8_t __address_type; + +uint8_t _getAddressType() { + return __address_type; +} + +uint8_t _detectAddressType(const parser_context_t *c) { + char hashstr[65]; + uint8_t pc; + + if (c->tx_obj->genesisHash._ptr != NULL) { + _toStringHash(&c->tx_obj->genesisHash, hashstr, 65, 0, &pc); + + // Compare with known genesis hashes + if (strcmp(hashstr, COIN_GENESIS_HASH) == 0) { + return PK_ADDRESS_TYPE; + } + } + + return 42; +} + +parser_error_t _readTx(parser_context_t *c, parser_tx_t *v) { + CHECK_INPUT(); + + // Reverse parse to retrieve spec before forward parsing + CHECK_ERROR(_checkVersions(c)); + + // Now forward parse + CHECK_ERROR(_readCallIndex(c, &v->callIndex)); + CHECK_ERROR(_readMethod(c, v->callIndex.moduleIdx, v->callIndex.idx, &v->method)); + CHECK_ERROR(_readEra(c, &v->era)); + CHECK_ERROR(_readCompactIndex(c, &v->nonce)); + CHECK_ERROR(_readCompactBalance(c, &v->tip)); + CHECK_ERROR(_readUInt32(c, &v->specVersion)); + CHECK_ERROR(_readUInt32(c, &v->transactionVersion)); + CHECK_ERROR(_readHash(c, &v->genesisHash)); + CHECK_ERROR(_readHash(c, &v->blockHash)); + + if (c->offset < c->bufferLen) { + return parser_unexpected_unparsed_bytes; + } + + if (c->offset > c->bufferLen) { + return parser_unexpected_buffer_end; + } + + __address_type = _detectAddressType(c); + + return parser_ok; +} + +//////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////// + +parser_error_t _readAddress(parser_context_t *c, pd_Address_t *v) { + CHECK_INPUT(); + // Based on + // https://github.com/paritytech/substrate/blob/fc3adc87dc806237eb7371c1d21055eea1702be0/srml/indices/src/address.rs#L66 + + uint8_t tmp; + CHECK_ERROR(_readUInt8(c, &tmp)); + + switch (tmp) { + case 0xFF: { + v->type = eAddressId; + v->idPtr = c->buffer + c->offset; + CTX_CHECK_AND_ADVANCE(c, 32); + break; + } + case 0xFE: { + compactInt_t ci; + CHECK_ERROR(_readCompactInt(c, &ci)); + + v->type = eAddressIndex; + CHECK_ERROR(_getValue(&ci, &v->idx)); + + if (v->idx <= 0xffffffffu) { + return parser_unexpected_value; + } + break; + } + case 0xFD: { + uint32_t tmpval; + CHECK_ERROR(_readUInt32(c, &tmpval)); + v->type = eAddressIndex; + v->idx = tmpval; + if (v->idx <= 0xFFFF) { + return parser_unexpected_value; + } + break; + } + case 0xFC: { + uint16_t tmpval; + CHECK_ERROR(_readUInt16(c, &tmpval)); + v->type = eAddressIndex; + v->idx = tmpval; + if (v->idx <= 0xEF) { + return parser_unexpected_value; + } + break; + } + default: + if (tmp <= 0xEF) { + v->type = eAddressIndex; + v->idx = tmp; + return parser_ok; + } + + return parser_unexpected_value; + } + + return parser_ok; +} + +parser_error_t _toStringPubkeyAsAddress(const uint8_t *pubkey, + char *outValue, uint16_t outValueLen, + uint8_t pageIdx, uint8_t *pageCount) { + char bufferUI[200]; + + if (crypto_SS58EncodePubkey((uint8_t *) bufferUI, sizeof(bufferUI), __address_type, pubkey) == 0) { + return parser_no_data; + } + + pageString(outValue, outValueLen, bufferUI, pageIdx, pageCount); + if (pageIdx >= *pageCount) { + return parser_no_data; + } + return parser_ok; +} + +parser_error_t _toStringAddress(const pd_Address_t *v, + char *outValue, uint16_t outValueLen, + uint8_t pageIdx, uint8_t *pageCount) { + MEMZERO(outValue, outValueLen); + if (v == NULL) { + return parser_ok; + } + + *pageCount = 1; + switch (v->type) { + case eAddressIndex: + return parser_not_supported; + case eAddressId: { + return _toStringPubkeyAsAddress(v->idPtr, + outValue, outValueLen, + pageIdx, pageCount); + } + } + + return parser_ok; +} diff --git a/app/src/parser_impl.h b/app/src/parser_impl.h new file mode 100644 index 0000000..2f79e8c --- /dev/null +++ b/app/src/parser_impl.h @@ -0,0 +1,198 @@ +/******************************************************************************* +* (c) 2019 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#pragma once + +#include "parser_common.h" +#include +#include "zxtypes.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include + + +// Checks that there are at least SIZE bytes available in the buffer +#define CTX_CHECK_AVAIL(CTX, SIZE) \ + if ( (CTX) == NULL || ((CTX)->offset + SIZE) > (CTX)->bufferLen) { return parser_unexpected_buffer_end; } + +#define CTX_CHECK_AND_ADVANCE(CTX, SIZE) \ + CTX_CHECK_AVAIL((CTX), (SIZE)) \ + (CTX)->offset += (SIZE); + +// Checks function input is valid +#define CHECK_INPUT() \ + if (v == NULL) { return parser_no_data; } \ + CTX_CHECK_AVAIL(c, 1) // Checks that there is something available in the buffer + +#define CLEAN_AND_CHECK() \ + MEMZERO(outValue, outValueLen); \ + if (v == NULL) { *pageCount = 0; return parser_no_data; } + +#define GEN_DEF_READARRAY(SIZE) \ + v->_ptr = c->buffer + c->offset; \ + CTX_CHECK_AND_ADVANCE(c, SIZE) \ + return parser_ok; + +#define GEN_DEF_TOSTRING_ARRAY(SIZE) \ + CLEAN_AND_CHECK(); \ + if (v->_ptr == NULL || outValueLen == 0 ) return parser_unexpected_buffer_end; \ + const uint16_t outLenNormalized = (outValueLen - 1) / 2; \ + *pageCount = SIZE / outLenNormalized; \ + if (SIZE % outLenNormalized != 0) *pageCount+=1; \ + const uint16_t pageOffset = pageIdx * outLenNormalized; \ + uint16_t loopmax = outLenNormalized; \ + if (loopmax > SIZE - pageOffset) loopmax = SIZE - pageOffset; \ + for (uint16_t i = 0; i < loopmax; i++) { \ + const uint16_t offset = i << 1u; \ + const uint8_t *c = v->_ptr + pageOffset; \ + snprintf(outValue + offset, outValueLen - offset, "%02x", c[i]); \ + } \ + return parser_ok; + +#define GEN_DEF_TOSTRING_ENUM(NAME) \ +(*pageCount)++; \ +if(pageIdx == 0) { snprintf(outValue, outValueLen, NAME ); \ +return parser_ok; \ +} \ +pageIdx--; \ + +#define GEN_DEC_READFIX_UNSIGNED(BITS) parser_error_t _readUInt ## BITS(parser_context_t *ctx, uint ## BITS ##_t *value) +#define GEN_DEF_READFIX_UNSIGNED(BITS) parser_error_t _readUInt ## BITS(parser_context_t *ctx, uint ## BITS ##_t *value) \ +{ \ + if (value == NULL) return parser_no_data; \ + *value = 0u; \ + for(uint8_t i=0u; i < (BITS##u>>3u); i++, ctx->offset++) { \ + if (ctx->offset >= ctx->bufferLen) return parser_unexpected_buffer_end; \ + *value += (uint ## BITS ##_t) *(ctx->buffer + ctx->offset) << (8u*i); \ + } \ + return parser_ok; \ +} + +GEN_DEC_READFIX_UNSIGNED(8); +GEN_DEC_READFIX_UNSIGNED(16); +GEN_DEC_READFIX_UNSIGNED(32); +GEN_DEC_READFIX_UNSIGNED(64); + +#define GEN_DEF_READVECTOR(TYPE) \ + pd_##TYPE##_t dummy; \ + compactInt_t clen; \ + CHECK_PARSER_ERR(_readCompactInt(c, &clen)); \ + CHECK_PARSER_ERR(_getValue(&clen, &v->_len)); \ + v->_ptr = c->buffer + c->offset; \ + v->_lenBuffer = c->offset; \ + for (uint64_t i = 0; i < v->_len; i++ ) CHECK_ERROR(_read##TYPE(c, &dummy)); \ + v->_lenBuffer = c->offset - v->_lenBuffer; \ + return parser_ok; + +#define GEN_DEF_READVECTOR_VERSION(TYPE, VERSION) \ + pd_##TYPE##_V##VERSION##_t dummy; \ + compactInt_t clen; \ + CHECK_PARSER_ERR(_readCompactInt(c, &clen)); \ + CHECK_PARSER_ERR(_getValue(&clen, &v->_len)); \ + v->_ptr = c->buffer + c->offset; \ + v->_lenBuffer = c->offset; \ + for (uint64_t i = 0; i < v->_len; i++ ) CHECK_ERROR(_read##TYPE##_V##VERSION (c, &dummy)); \ + v->_lenBuffer = c->offset - v->_lenBuffer; \ + return parser_ok; + +#define GEN_DEF_READVECTOR_ITEM(VEC, TYPE, INDEX, VALUE) \ + parser_context_t ctx; \ + parser_init(&ctx, VEC._ptr, VEC._lenBuffer); \ + compactInt_t clen; \ + CHECK_PARSER_ERR(_readCompactInt(&ctx, &clen)); \ + if ((INDEX) >= VEC._len) return parser_no_data; \ + for (uint64_t i = 0; i < VEC._len; i++ ) CHECK_PARSER_ERR(_read_cro_##TYPE(&ctx, &VALUE)); \ + return parser_ok; + +#define GEN_DEF_TOSTRING_VECTOR(TYPE) \ + CLEAN_AND_CHECK() \ + /* count number of pages, then output specific */ \ + *pageCount = 0; \ + pd_##TYPE##_t tmp; \ + parser_context_t ctx; \ + uint8_t chunkPageCount; \ + uint16_t currentPage, currentTotalPage = 0; \ + if(v->_len == 0) { \ + *pageCount = 1; \ + snprintf(outValue, outValueLen, ""); \ + return parser_ok; \ + } \ + /* We need to do it twice because there is no memory to keep intermediate results*/ \ + /* First count*/ \ + parser_init(&ctx, v->_ptr, v->_lenBuffer);\ + for (uint16_t i = 0; i < v->_len; i++) {\ + CHECK_ERROR(_read##TYPE(&ctx, &tmp));\ + CHECK_ERROR(_toString##TYPE(&tmp, outValue, outValueLen, 0, &chunkPageCount));\ + (*pageCount)+=chunkPageCount;\ + }\ + /* Then iterate until we can print the corresponding chunk*/ \ + parser_init(&ctx, v->_ptr, v->_lenBuffer);\ + for (uint16_t i = 0; i < v->_len; i++) {\ + CHECK_ERROR(_read##TYPE(&ctx, &tmp));\ + chunkPageCount = 1;\ + currentPage = 0;\ + while (currentPage < chunkPageCount) {\ + CHECK_ERROR(_toString##TYPE(&tmp, outValue, outValueLen, currentPage, &chunkPageCount));\ + if (currentTotalPage == pageIdx) { return parser_ok; } \ + currentPage++;\ + currentTotalPage++;\ + }\ + };\ + return parser_print_not_supported; + +parser_error_t parser_init(parser_context_t *ctx, const uint8_t *buffer, uint16_t bufferSize); + +parser_error_t _readBool(parser_context_t *c, pd_bool_t *value); + +parser_error_t _readCompactInt(parser_context_t *c, compactInt_t *v); + +parser_error_t _readCompactBalance(parser_context_t *c, pd_CompactBalance_t *v); + +parser_error_t _getValue(const compactInt_t *c, uint64_t *v); + +parser_error_t _readCallIndex(parser_context_t *c, pd_CallIndex_t *v); + +parser_error_t _readEra(parser_context_t *c, pd_ExtrinsicEra_t *v); + +parser_error_t _readTx(parser_context_t *c, parser_tx_t *v); + +uint8_t _getAddressType(); + +parser_error_t _toStringCompactInt(const compactInt_t *c, uint8_t decimalPlaces, + char postfix, + char prefix[], + char *outValue, uint16_t outValueLen, + uint8_t pageIdx, uint8_t *pageCount); + +parser_error_t _toStringCompactIndex(const pd_CompactIndex_t *v, + char *outValue, uint16_t outValueLen, + uint8_t pageIdx, uint8_t *pageCount); + +parser_error_t _toStringPubkeyAsAddress(const uint8_t *pubkey, + char *outValue, uint16_t outValueLen, + uint8_t pageIdx, uint8_t *pageCount); + +parser_error_t _toStringCompactBalance(const pd_CompactBalance_t *v, + char *outValue, uint16_t outValueLen, + uint8_t pageIdx, uint8_t *pageCount); + +#ifdef __cplusplus +} +#endif diff --git a/app/src/parser_txdef.c b/app/src/parser_txdef.c new file mode 100644 index 0000000..7a345ec --- /dev/null +++ b/app/src/parser_txdef.c @@ -0,0 +1,17 @@ +/******************************************************************************* +* (c) 2019 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#include +#include "parser_txdef.h" diff --git a/app/src/parser_txdef.h b/app/src/parser_txdef.h new file mode 100644 index 0000000..738cf5d --- /dev/null +++ b/app/src/parser_txdef.h @@ -0,0 +1,52 @@ +/******************************************************************************* +* (c) 2019 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include "substrate_methods.h" + +#ifdef TARGET_NANOX +#define MAX_CALL_NESTING_SIZE 6 +#define MAX_CALL_VEC_SIZE 6 +#else +#define MAX_CALL_NESTING_SIZE 2 +#define MAX_CALL_VEC_SIZE 5 +#endif + +typedef struct { + pd_CallIndex_t callIndex; + pd_Method_t method; + + pd_ExtrinsicEra_t era; + pd_CompactIndex_t nonce; + pd_CompactBalance_t tip; + uint32_t specVersion; + uint32_t transactionVersion; + + pd_Hash_t genesisHash; + pd_Hash_t blockHash; + + pd_NestCallIdx_t nestCallIdx; +} parser_tx_t; + +#ifdef __cplusplus +} +#endif diff --git a/app/src/ristretto.c b/app/src/ristretto.c new file mode 100644 index 0000000..5953134 --- /dev/null +++ b/app/src/ristretto.c @@ -0,0 +1,273 @@ +/******************************************************************************* +* (c) 2021 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#include +#include "ristretto.h" +#include "cx.h" +#include "rslib.h" + +unsigned char const ED25519_GEN[ED25519_SDKPOINT_BYTES] = { + //uncompressed + 0x04, + //x + 0x21, 0x69, 0x36, 0xd3, 0xcd, 0x6e, 0x53, 0xfe, 0xc0, 0xa4, 0xe2, 0x31, 0xfd, 0xd6, 0xdc, 0x5c, + 0x69, 0x2c, 0xc7, 0x60, 0x95, 0x25, 0xa7, 0xb2, 0xc9, 0x56, 0x2d, 0x60, 0x8f, 0x25, 0xd5, 0x1a, + //y + 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, + 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x58 +}; + +unsigned char const ED25519_FIELD_SIZE[ED25519_SCALAR_BYTES] = { + // q: 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed + 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xed}; + +unsigned char const ED25519_POW225[ED25519_SCALAR_BYTES] = { + // (q-5)/8 + 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd}; + +unsigned char const ED25519_FIELD_ZERO[ED25519_SCALAR_BYTES] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +const fe25519_sdk fe25519_sqrtm1_sdk = { + 0x2b, 0x83, 0x24, 0x80, 0x4f, 0xc1, 0xdf, 0x0b, 0x2b, 0x4d, + 0x00, 0x99, 0x3d, 0xfb, 0xd7, 0xa7, 0x2f, 0x43, 0x18, 0x06, + 0xad, 0x2f, 0xe4, 0x78, 0xc4, 0xee, 0x1b, 0x27, 0x4a, 0x0e, 0xa0, 0xb0 +}; + +const fe25519_sdk ed25519_invsqrtamd_sdk = { + 0x78, 0x6c, 0x89, 0x05, 0xcf, 0xaf, 0xfc, 0xa2, 0x16, 0xc2, + 0x7b, 0x91, 0xfe, 0x01, 0xd8, 0x40, 0x9d, 0x2f, 0x16, 0x17, + 0x5a, 0x41, 0x72, 0xbe, 0x99, 0xc8, 0xfd, 0xaa, 0x80, 0x5d, 0x40, 0xea +}; + +void fe25519_add_sdk(fe25519_sdk h, const fe25519_sdk f, const fe25519_sdk g) +{ + cx_math_addm(h, f, g, ED25519_FIELD_SIZE, ED25519_SCALAR_BYTES); +} + +void fe25519_sub_sdk(fe25519_sdk h, const fe25519_sdk f, const fe25519_sdk g) +{ + cx_math_subm(h, f, g, ED25519_FIELD_SIZE, ED25519_SCALAR_BYTES); +} + +void fe25519_mul_sdk(fe25519_sdk h, const fe25519_sdk f, const fe25519_sdk g) +{ + cx_math_multm(h, f, g, ED25519_FIELD_SIZE, ED25519_SCALAR_BYTES); +} + +void fe25519_sq_sdk(fe25519_sdk h, const fe25519_sdk f) +{ + cx_math_multm(h, f, f, ED25519_FIELD_SIZE, ED25519_SCALAR_BYTES); +} + +void fe25519_1_sdk(fe25519_sdk h) +{ + MEMZERO(&h[0], sizeof(fe25519_sdk)); + h[ED25519_SCALAR_BYTES-1] = 1; +} + +int fe25519_iszero_sdk(fe25519_sdk h) +{ + return cx_math_is_zero(h,ED25519_SCALAR_BYTES); +} + +int fe25519_isnegative_sdk(const fe25519_sdk f) +{ + return f[ED25519_SCALAR_BYTES-1] & 1; +} + +void fe25519_neg_sdk(fe25519_sdk h, const fe25519_sdk f) +{ + cx_math_subm(h, ED25519_FIELD_ZERO, f, ED25519_FIELD_SIZE, ED25519_SCALAR_BYTES); +} + +void fe25519_copy_sdk(const fe25519_sdk h, const fe25519_sdk f) +{ + MEMCPY((void *) h, f, sizeof(fe25519_sdk)); +} + +//TODO: check this for constant-time +void fe25519_cmov_sdk(fe25519_sdk f, const fe25519_sdk g, unsigned int b) +{ + uint8_t mask = (uint8_t) (-(int8_t) b); + uint8_t h[ED25519_SCALAR_BYTES]; + uint8_t x[ED25519_SCALAR_BYTES]; + for(int i = 0; i < ED25519_SCALAR_BYTES; i++){ + h[i] = f[i]; + x[i] = h[i] ^ g[i]; + x[i] &= mask; + f[i] = f[i] ^ x[i]; + } +} + +void fe25519_cneg_sdk(fe25519_sdk h, const fe25519_sdk f, unsigned int b) +{ + fe25519_sdk negf; + + fe25519_neg_sdk(negf, f); + fe25519_copy_sdk(h, f); + fe25519_cmov_sdk(h, negf, b); +} + +void fe25519_abs_sdk(fe25519_sdk h, const fe25519_sdk f) +{ + fe25519_cneg_sdk(h, f, fe25519_isnegative_sdk(f)); +} + +void fe25519_tobytes_sdk(unsigned char *s, const fe25519_sdk f) +{ + uint8_t tmp = 0; + MEMCPY(s, f, sizeof(fe25519_sdk)); + SWAP_ENDIAN(&s[0], tmp); +} + +void fe25519_pow22523_sdk(fe25519_sdk out, const fe25519_sdk z) +{ + cx_math_powm(out, z, ED25519_POW225, ED25519_SCALAR_BYTES, ED25519_FIELD_SIZE, ED25519_SCALAR_BYTES); +} + +int ristretto255_sqrt_ratio_m1_sdk(fe25519_sdk x, const fe25519_sdk u, const fe25519_sdk v) +{ + fe25519_sdk v3; + fe25519_sdk vxx; + fe25519_sdk m_root_check, p_root_check, f_root_check; + fe25519_sdk x_sqrtm1; + int has_m_root, has_p_root, has_f_root; + + fe25519_sq_sdk(v3, v); + fe25519_mul_sdk(v3, v3, v); /* v3 = v^3 */ + fe25519_sq_sdk(x, v3); + fe25519_mul_sdk(x, x, u); + fe25519_mul_sdk(x, x, v); /* x = uv^7 */ + + fe25519_pow22523_sdk(x, x); /* x = (uv^7)^((q-5)/8) */ + fe25519_mul_sdk(x, x, v3); + fe25519_mul_sdk(x, x, u); /* x = uv^3(uv^7)^((q-5)/8) */ + + fe25519_sq_sdk(vxx, x); + fe25519_mul_sdk(vxx, vxx, v); /* vx^2 */ + fe25519_sub_sdk(m_root_check, vxx, u); /* vx^2-u */ + fe25519_add_sdk(p_root_check, vxx, u); /* vx^2+u */ + fe25519_mul_sdk(f_root_check, u, fe25519_sqrtm1_sdk); /* u*sqrt(-1) */ + fe25519_add_sdk(f_root_check, vxx, f_root_check); /* vx^2+u*sqrt(-1) */ + has_m_root = fe25519_iszero_sdk(m_root_check); + has_p_root = fe25519_iszero_sdk(p_root_check); + has_f_root = fe25519_iszero_sdk(f_root_check); + fe25519_mul_sdk(x_sqrtm1,x, fe25519_sqrtm1_sdk); + + fe25519_cmov_sdk(x, x_sqrtm1, has_p_root | has_f_root); + fe25519_abs_sdk(x, x); + + return has_m_root | has_p_root; +} + +void ristretto255_p3_tobytes_sdk(fe25519_sdk s, const ge25519_p3_sdk *h) +{ + fe25519_sdk den1, den2; + fe25519_sdk den_inv; + fe25519_sdk eden; + fe25519_sdk inv_sqrt; + fe25519_sdk ix, iy; + fe25519_sdk one; + fe25519_sdk s_; + fe25519_sdk t_z_inv; + fe25519_sdk u1, u2; + fe25519_sdk u1_u2u2; + fe25519_sdk x_, y_; + fe25519_sdk x_z_inv; + fe25519_sdk z_inv; + fe25519_sdk zmy; + int rotate; + + fe25519_add_sdk(u1, h->Z, h->Y); /* u1 = Z+Y */ + fe25519_sub_sdk(zmy, h->Z, h->Y); /* zmy = Z-Y */ + fe25519_mul_sdk(u1, u1, zmy); /* u1 = (Z+Y)*(Z-Y) */ + fe25519_mul_sdk(u2, h->X, h->Y); /* u2 = X*Y */ + + fe25519_sq_sdk(u1_u2u2, u2); /* u1_u2u2 = u2^2 */ + fe25519_mul_sdk(u1_u2u2, u1, u1_u2u2); /* u1_u2u2 = u1*u2^2 */ + + fe25519_1_sdk(one); + ristretto255_sqrt_ratio_m1_sdk(inv_sqrt, one, u1_u2u2); + + fe25519_mul_sdk(den1, inv_sqrt, u1); + fe25519_mul_sdk(den2, inv_sqrt, u2); + fe25519_mul_sdk(z_inv, den1, den2); + fe25519_mul_sdk(z_inv, z_inv, h->T); + + fe25519_mul_sdk(ix, h->X, fe25519_sqrtm1_sdk); + fe25519_mul_sdk(iy, h->Y, fe25519_sqrtm1_sdk); + + fe25519_mul_sdk(eden, den1, ed25519_invsqrtamd_sdk); + + fe25519_mul_sdk(t_z_inv, h->T, z_inv); + rotate = fe25519_isnegative_sdk(t_z_inv); + + fe25519_copy_sdk(x_, h->X); + fe25519_copy_sdk(y_, h->Y); + fe25519_copy_sdk(den_inv, den2); + + fe25519_cmov_sdk(x_, iy, rotate); + + fe25519_cmov_sdk(y_, ix, rotate); + fe25519_cmov_sdk(den_inv, eden, rotate); + + fe25519_mul_sdk(x_z_inv, x_, z_inv); + fe25519_cneg_sdk(y_, y_, fe25519_isnegative_sdk(x_z_inv)); + + fe25519_sub_sdk(s_, h->Z, y_); + fe25519_mul_sdk(s_, den_inv, s_); + fe25519_abs_sdk(s, s_); +} + + +int crypto_scalarmult_ristretto255_base_sdk(unsigned char *q,const unsigned char *n) +{ + unsigned char *t = q; + unsigned int i; + for (i = 0; i < ED25519_SCALAR_BYTES; ++i) { + t[i] = n[ED25519_SCALAR_BYTES-1-i]; + } + t[0] &= 127; + + uint8_t Pxy[ED25519_SDKPOINT_BYTES]; + memcpy(Pxy, ED25519_GEN, sizeof(Pxy)); + cx_ecfp_scalar_mult(CX_CURVE_Ed25519, Pxy, sizeof(Pxy), t, ED25519_SCALAR_BYTES); + + ge25519_p3_sdk Q_sdk; + MEMZERO(&Q_sdk, sizeof(ge25519_p3_sdk)); + MEMCPY(Q_sdk.X, &Pxy[1],ED25519_SCALAR_BYTES); + MEMCPY(Q_sdk.Y, &Pxy[1+ED25519_SCALAR_BYTES],ED25519_SCALAR_BYTES); + fe25519_1_sdk(Q_sdk.Z); + fe25519_mul_sdk(Q_sdk.T, Q_sdk.X,Q_sdk.Y); + + fe25519_sdk s; + + ristretto255_p3_tobytes_sdk(s, &Q_sdk); + + if (fe25519_iszero_sdk(s)) { + return -1; + } + + fe25519_tobytes_sdk(q,s); + + return 0; +} \ No newline at end of file diff --git a/app/src/ristretto.h b/app/src/ristretto.h new file mode 100644 index 0000000..abfa9f2 --- /dev/null +++ b/app/src/ristretto.h @@ -0,0 +1,43 @@ +/******************************************************************************* +* (c) 2021 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#define ED25519_SCALAR_BYTES 32 +#define RISTRETTO_BYTES 32 +#define ED25519_SDKPOINT_BYTES 65 + +typedef unsigned char fe25519_sdk[ED25519_SCALAR_BYTES]; + +typedef struct { + fe25519_sdk X; + fe25519_sdk Y; + fe25519_sdk Z; + fe25519_sdk T; +} ge25519_p3_sdk; + +#define SWAP_BYTES(x, y, tmp) { \ + tmp = x; \ + x = y; \ + y = tmp;\ +} + +#define SWAP_ENDIAN(x, tmp) { \ + for (int i = 0; i < ED25519_SCALAR_BYTES/2; i++){ \ + SWAP_BYTES(*(x + i), *(x + (ED25519_SCALAR_BYTES-1-i)), tmp); \ + } \ +} + +void ristretto255_p3_tobytes_sdk(unsigned char *s, const ge25519_p3_sdk *h); +int crypto_scalarmult_ristretto255_base_sdk(unsigned char *q, const unsigned char *n); \ No newline at end of file diff --git a/app/src/secret.c b/app/src/secret.c new file mode 100644 index 0000000..6efc258 --- /dev/null +++ b/app/src/secret.c @@ -0,0 +1,64 @@ +/******************************************************************************* +* (c) 2020 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "os.h" +#include "cx.h" +#include "coin.h" +#include "app_main.h" +#include "tx.h" +#include "view.h" +#include "app_mode.h" + +void secret_accept() { +#ifdef APP_SECRET_MODE_ENABLED + app_mode_set_secret(true); + view_idle_show(0, NULL); +#endif +} + +static char *secret_message = + "USE AT YOUR OWN RISK!! " + "You are about to enable the KSM recovery mode." + "If you are not sure why you are here, reject or unplug your device immediately." + "Activating this mode will temporarily allow you to sign transactions using Polkadot keys"; + +zxerr_t secret_getNumItems(uint8_t *num_items) { + zemu_log_stack("secret_getNumItems"); + *num_items = 1; + return zxerr_ok; +} + +zxerr_t secret_getItem(int8_t displayIdx, + char *outKey, uint16_t outKeyLen, + char *outVal, uint16_t outValLen, + uint8_t pageIdx, uint8_t *pageCount) { + if (displayIdx != 0) { + return zxerr_no_data; + } + + snprintf(outKey, outKeyLen, "WARNING!"); + pageString(outVal, outValLen, (char *) PIC(secret_message), pageIdx, pageCount); + return zxerr_ok; +} + +zxerr_t secret_enabled() { +#ifdef APP_SECRET_MODE_ENABLED + zemu_log("RECOVERY TRIGGERED"); + view_review_init(secret_getItem, secret_getNumItems, secret_accept); + view_review_show(); +#endif + return zxerr_ok; +} diff --git a/app/src/secret.h b/app/src/secret.h new file mode 100644 index 0000000..678d40c --- /dev/null +++ b/app/src/secret.h @@ -0,0 +1,37 @@ +/******************************************************************************* +* (c) 2018 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#pragma once + +#include "zxmacros.h" +#include +#include "zxerror.h" + +#ifdef __cplusplus +extern "C" { +#endif + +zxerr_t secret_enabled(); + +zxerr_t secret_getNumItems(uint8_t *num_items); + +zxerr_t secret_getItem(int8_t displayIdx, + char *outKey, uint16_t outKeyLen, + char *outValue, uint16_t outValueLen, + uint8_t pageIdx, uint8_t *pageCount); + +#ifdef __cplusplus +} +#endif diff --git a/app/src/substrate_dispatch.c b/app/src/substrate_dispatch.c new file mode 100644 index 0000000..f38c6aa --- /dev/null +++ b/app/src/substrate_dispatch.c @@ -0,0 +1,166 @@ +/******************************************************************************* +* (c) 2019 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#include "substrate_dispatch.h" +#include "parser_impl.h" + +#include "allowlist.h" +#include "zxmacros.h" +#include + +parser_error_t _readMethod( + parser_context_t* c, + uint8_t moduleIdx, + uint8_t callIdx, + pd_Method_t* method) +{ + switch (c->tx_obj->transactionVersion) { + case 1: + return _readMethod_V1(c, moduleIdx, callIdx, &method->V1); + default: + return parser_not_supported; + } +} + +uint8_t _getMethod_NumItems(uint32_t transactionVersion, uint8_t moduleIdx, uint8_t callIdx) +{ + switch (transactionVersion) { + case 1: + return _getMethod_NumItems_V1(moduleIdx, callIdx); + default: + return parser_not_supported; + } +} + +const char* _getMethod_ModuleName(uint32_t transactionVersion, uint8_t moduleIdx) +{ + switch (transactionVersion) { + case 1: + return _getMethod_ModuleName_V1(moduleIdx); + default: + return NULL; + } +} + +const char* _getMethod_Name(uint32_t transactionVersion, uint8_t moduleIdx, uint8_t callIdx) +{ + switch (transactionVersion) { + case 1: + return _getMethod_Name_V1(moduleIdx, callIdx); + default: + return 0; + } +} + +const char* _getMethod_ItemName(uint32_t transactionVersion, uint8_t moduleIdx, uint8_t callIdx, uint8_t itemIdx) +{ + switch (transactionVersion) { + case 1: + return _getMethod_ItemName_V1(moduleIdx, callIdx, itemIdx); + default: + return NULL; + } +} + +parser_error_t _getMethod_ItemValue(uint32_t transactionVersion, pd_Method_t* m, uint8_t moduleIdx, uint8_t callIdx, + uint8_t itemIdx, char* outValue, uint16_t outValueLen, + uint8_t pageIdx, uint8_t* pageCount) +{ + switch (transactionVersion) { + case 1: + return _getMethod_ItemValue_V1(&m->V1, moduleIdx, callIdx, itemIdx, outValue, + outValueLen, pageIdx, pageCount); + default: + return parser_not_supported; + } +} + +bool _getMethod_ItemIsExpert(uint32_t transactionVersion, uint8_t moduleIdx, uint8_t callIdx, uint8_t itemIdx) +{ + switch (transactionVersion) { + case 1: + return _getMethod_ItemIsExpert_V1(moduleIdx, callIdx, itemIdx); + default: + return false; + } +} + +bool _getMethod_IsNestingSupported(uint32_t transactionVersion, uint8_t moduleIdx, uint8_t callIdx) +{ + switch (transactionVersion) { + case 1: + return _getMethod_IsNestingSupported_V1(moduleIdx, callIdx); + default: + return false; + } +} + +//Special getters +#if defined(APP_RESTRICTED) +parser_error_t parser_validate_staking_targets(parser_context_t* c) +{ + if (!allowlist_is_active()) { + return parser_not_allowed; + } + + const uint8_t* targets_ptr; + uint64_t targets_lenBuffer; + uint64_t targets_len; + + switch (c->tx_obj->transactionVersion) { + case 1: { + pd_VecLookupSource_V1_t targets = c->tx_obj->method.V1.basic.staking_nominate_V1.targets; + targets_ptr = targets._ptr; + targets_lenBuffer = targets._lenBuffer; + targets_len = targets._len; + break; + } + default: + return parser_not_supported; + } + + parser_context_t ctx; + parser_init(&ctx, targets_ptr, targets_lenBuffer); + switch (c->tx_obj->transactionVersion) { + case 1: { + for (uint16_t i = 0; i < targets_len; i++) { + pd_LookupSource_V1_t lookupSource; + CHECK_ERROR(_readLookupSource_V1(&ctx, &lookupSource)); + char buffer[100]; + uint8_t dummy; + CHECK_ERROR(_toStringLookupSource_V1(&lookupSource, buffer, sizeof(buffer), 0, &dummy)); + if (!allowlist_item_validate(buffer)) { + return parser_not_allowed; + } + } + break; + } + + default: + return parser_not_supported; + } + + return parser_ok; +} + +GEN_DEF_GETCALL(STAKING); +GEN_DEF_GETCALL(STAKING_VALIDATE); +GEN_DEF_GETCALL(STAKING_SET_PAYEE); +GEN_DEF_GETCALL(STAKING_CHILL); +GEN_DEF_GETCALL(STAKING_NOMINATE); +GEN_DEF_GETCALL(SESSION); +GEN_DEF_GETCALL(SESSION_SET_KEYS); +GEN_DEF_GETCALL(SESSION_PURGE_KEYS); +#endif diff --git a/app/src/substrate_dispatch.h b/app/src/substrate_dispatch.h new file mode 100644 index 0000000..7846f34 --- /dev/null +++ b/app/src/substrate_dispatch.h @@ -0,0 +1,73 @@ +/******************************************************************************* +* (c) 2019 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +#include "parser_common.h" +#include "stdbool.h" +#include "substrate_dispatch_V1.h" +#include +#include + +#define GEN_GETCALL(CALL) _getpdCall_##CALL(ctx->tx_obj->transactionVersion) +#define GEN_DEC_GETCALL(CALL) uint32_t _getpdCall_##CALL(uint32_t txVersion) +#define GEN_DEF_GETCALL(CALL) \ + uint32_t _getpdCall_##CALL(uint32_t txVersion) \ + { \ + switch (txVersion) { \ + \ + case 1: \ + return PD_CALL_##CALL##_V1; \ + \ + default: \ + return 0; \ + } \ + } + +parser_error_t _readMethod(parser_context_t* c, uint8_t moduleIdx, uint8_t callIdx, pd_Method_t* method); +uint8_t _getMethod_NumItems(uint32_t transactionVersion, uint8_t moduleIdx, uint8_t callIdx); +const char* _getMethod_ModuleName(uint32_t transactionVersion, uint8_t moduleIdx); +const char* _getMethod_Name(uint32_t transactionVersion, uint8_t moduleIdx, uint8_t callIdx); +const char* _getMethod_ItemName(uint32_t transactionVersion, uint8_t moduleIdx, uint8_t callIdx, uint8_t itemIdx); + +parser_error_t _getMethod_ItemValue( + uint32_t transactionVersion, + pd_Method_t* m, uint8_t moduleIdx, uint8_t callIdx, uint8_t itemIdx, + char* outValue, uint16_t outValueLen, + uint8_t pageIdx, uint8_t* pageCount); + +bool _getMethod_ItemIsExpert(uint32_t transactionVersion, uint8_t moduleIdx, uint8_t callIdx, uint8_t itemIdx); +bool _getMethod_IsNestingSupported(uint32_t transactionVersion, uint8_t moduleIdx, uint8_t callIdx); + +//Special getters +#if defined(APP_RESTRICTED) +parser_error_t parser_validate_staking_targets(parser_context_t* c); +GEN_DEC_GETCALL(STAKING); +GEN_DEC_GETCALL(STAKING_VALIDATE); +GEN_DEC_GETCALL(STAKING_SET_PAYEE); +GEN_DEC_GETCALL(STAKING_CHILL); +GEN_DEC_GETCALL(STAKING_NOMINATE); +GEN_DEC_GETCALL(SESSION); +GEN_DEC_GETCALL(SESSION_SET_KEYS); +GEN_DEC_GETCALL(SESSION_PURGE_KEYS); +#endif + +#ifdef __cplusplus +} +#endif diff --git a/app/src/substrate_dispatch_V1.c b/app/src/substrate_dispatch_V1.c new file mode 100644 index 0000000..cae5ac6 --- /dev/null +++ b/app/src/substrate_dispatch_V1.c @@ -0,0 +1,7983 @@ +/******************************************************************************* +* (c) 2019 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "substrate_dispatch_V1.h" +#include "substrate_strings.h" +#include "zxmacros.h" +#include + +__Z_INLINE parser_error_t _readMethod_utility_batch_V1( + parser_context_t* c, pd_utility_batch_V1_t* m) +{ + CHECK_ERROR(_readVecCall(c, &m->calls)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_utility_batch_all_V1( + parser_context_t* c, pd_utility_batch_all_V1_t* m) +{ + CHECK_ERROR(_readVecCall(c, &m->calls)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_balances_transfer_V1( + parser_context_t* c, pd_balances_transfer_V1_t* m) +{ + CHECK_ERROR(_readLookupSource_V1(c, &m->dest)) + CHECK_ERROR(_readCompactBalance(c, &m->value)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_balances_transfer_keep_alive_V1( + parser_context_t* c, pd_balances_transfer_keep_alive_V1_t* m) +{ + CHECK_ERROR(_readLookupSource_V1(c, &m->dest)) + CHECK_ERROR(_readCompactBalance(c, &m->value)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_staking_bond_V1( + parser_context_t* c, pd_staking_bond_V1_t* m) +{ + CHECK_ERROR(_readLookupSource_V1(c, &m->controller)) + CHECK_ERROR(_readCompactBalanceOf(c, &m->value)) + CHECK_ERROR(_readRewardDestination_V1(c, &m->payee)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_staking_bond_extra_V1( + parser_context_t* c, pd_staking_bond_extra_V1_t* m) +{ + CHECK_ERROR(_readCompactBalanceOf(c, &m->max_additional)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_staking_unbond_V1( + parser_context_t* c, pd_staking_unbond_V1_t* m) +{ + CHECK_ERROR(_readCompactBalanceOf(c, &m->value)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_staking_withdraw_unbonded_V1( + parser_context_t* c, pd_staking_withdraw_unbonded_V1_t* m) +{ + CHECK_ERROR(_readu32(c, &m->num_slashing_spans)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_staking_validate_V1( + parser_context_t* c, pd_staking_validate_V1_t* m) +{ + CHECK_ERROR(_readValidatorPrefs_V1(c, &m->prefs)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_staking_nominate_V1( + parser_context_t* c, pd_staking_nominate_V1_t* m) +{ + CHECK_ERROR(_readVecLookupSource_V1(c, &m->targets)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_staking_chill_V1( + parser_context_t* c, pd_staking_chill_V1_t* m) +{ + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_staking_set_payee_V1( + parser_context_t* c, pd_staking_set_payee_V1_t* m) +{ + CHECK_ERROR(_readRewardDestination_V1(c, &m->payee)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_staking_payout_stakers_V1( + parser_context_t* c, pd_staking_payout_stakers_V1_t* m) +{ + CHECK_ERROR(_readAccountId_V1(c, &m->validator_stash)) + CHECK_ERROR(_readEraIndex_V1(c, &m->era)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_staking_rebond_V1( + parser_context_t* c, pd_staking_rebond_V1_t* m) +{ + CHECK_ERROR(_readCompactBalanceOf(c, &m->value)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_session_set_keys_V1( + parser_context_t* c, pd_session_set_keys_V1_t* m) +{ + CHECK_ERROR(_readKeys_V1(c, &m->keys)) + CHECK_ERROR(_readBytes(c, &m->proof)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_session_purge_keys_V1( + parser_context_t* c, pd_session_purge_keys_V1_t* m) +{ + return parser_ok; +} + +#ifdef SUBSTRATE_PARSER_FULL +__Z_INLINE parser_error_t _readMethod_system_fill_block_V1( + parser_context_t* c, pd_system_fill_block_V1_t* m) +{ + CHECK_ERROR(_readPerbill_V1(c, &m->_ratio)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_system_remark_V1( + parser_context_t* c, pd_system_remark_V1_t* m) +{ + CHECK_ERROR(_readBytes(c, &m->_remark)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_system_set_heap_pages_V1( + parser_context_t* c, pd_system_set_heap_pages_V1_t* m) +{ + CHECK_ERROR(_readu64(c, &m->pages)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_system_set_code_V1( + parser_context_t* c, pd_system_set_code_V1_t* m) +{ + CHECK_ERROR(_readBytes(c, &m->code)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_system_set_code_without_checks_V1( + parser_context_t* c, pd_system_set_code_without_checks_V1_t* m) +{ + CHECK_ERROR(_readBytes(c, &m->code)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_system_set_changes_trie_config_V1( + parser_context_t* c, pd_system_set_changes_trie_config_V1_t* m) +{ + CHECK_ERROR(_readOptionChangesTrieConfiguration_V1(c, &m->changes_trie_config)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_system_set_storage_V1( + parser_context_t* c, pd_system_set_storage_V1_t* m) +{ + CHECK_ERROR(_readVecKeyValue_V1(c, &m->items)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_system_kill_storage_V1( + parser_context_t* c, pd_system_kill_storage_V1_t* m) +{ + CHECK_ERROR(_readVecKey_V1(c, &m->keys)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_system_kill_prefix_V1( + parser_context_t* c, pd_system_kill_prefix_V1_t* m) +{ + CHECK_ERROR(_readKey_V1(c, &m->prefix)) + CHECK_ERROR(_readu32(c, &m->_subkeys)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_system_suicide_V1( + parser_context_t* c, pd_system_suicide_V1_t* m) +{ + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_utility_as_derivative_V1( + parser_context_t* c, pd_utility_as_derivative_V1_t* m) +{ + CHECK_ERROR(_readu16(c, &m->index)) + CHECK_ERROR(_readCall(c, &m->call)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_timestamp_set_V1( + parser_context_t* c, pd_timestamp_set_V1_t* m) +{ + CHECK_ERROR(_readCompactMoment_V1(c, &m->now)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_authorship_set_uncles_V1( + parser_context_t* c, pd_authorship_set_uncles_V1_t* m) +{ + CHECK_ERROR(_readVecHeader(c, &m->new_uncles)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_indices_claim_V1( + parser_context_t* c, pd_indices_claim_V1_t* m) +{ + CHECK_ERROR(_readAccountIndex_V1(c, &m->index)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_indices_transfer_V1( + parser_context_t* c, pd_indices_transfer_V1_t* m) +{ + CHECK_ERROR(_readAccountId_V1(c, &m->new_)) + CHECK_ERROR(_readAccountIndex_V1(c, &m->index)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_indices_free_V1( + parser_context_t* c, pd_indices_free_V1_t* m) +{ + CHECK_ERROR(_readAccountIndex_V1(c, &m->index)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_indices_force_transfer_V1( + parser_context_t* c, pd_indices_force_transfer_V1_t* m) +{ + CHECK_ERROR(_readAccountId_V1(c, &m->new_)) + CHECK_ERROR(_readAccountIndex_V1(c, &m->index)) + CHECK_ERROR(_readbool(c, &m->freeze)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_indices_freeze_V1( + parser_context_t* c, pd_indices_freeze_V1_t* m) +{ + CHECK_ERROR(_readAccountIndex_V1(c, &m->index)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_balances_set_balance_V1( + parser_context_t* c, pd_balances_set_balance_V1_t* m) +{ + CHECK_ERROR(_readLookupSource_V1(c, &m->who)) + CHECK_ERROR(_readCompactBalance(c, &m->new_free)) + CHECK_ERROR(_readCompactBalance(c, &m->new_reserved)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_balances_force_transfer_V1( + parser_context_t* c, pd_balances_force_transfer_V1_t* m) +{ + CHECK_ERROR(_readLookupSource_V1(c, &m->source)) + CHECK_ERROR(_readLookupSource_V1(c, &m->dest)) + CHECK_ERROR(_readCompactBalance(c, &m->value)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_staking_set_controller_V1( + parser_context_t* c, pd_staking_set_controller_V1_t* m) +{ + CHECK_ERROR(_readLookupSource_V1(c, &m->controller)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_staking_set_validator_count_V1( + parser_context_t* c, pd_staking_set_validator_count_V1_t* m) +{ + CHECK_ERROR(_readCompactu32(c, &m->new_)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_staking_increase_validator_count_V1( + parser_context_t* c, pd_staking_increase_validator_count_V1_t* m) +{ + CHECK_ERROR(_readCompactu32(c, &m->additional)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_staking_scale_validator_count_V1( + parser_context_t* c, pd_staking_scale_validator_count_V1_t* m) +{ + CHECK_ERROR(_readPercent_V1(c, &m->factor)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_staking_force_no_eras_V1( + parser_context_t* c, pd_staking_force_no_eras_V1_t* m) +{ + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_staking_force_new_era_V1( + parser_context_t* c, pd_staking_force_new_era_V1_t* m) +{ + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_staking_set_invulnerables_V1( + parser_context_t* c, pd_staking_set_invulnerables_V1_t* m) +{ + CHECK_ERROR(_readVecAccountId_V1(c, &m->invulnerables)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_staking_force_unstake_V1( + parser_context_t* c, pd_staking_force_unstake_V1_t* m) +{ + CHECK_ERROR(_readAccountId_V1(c, &m->stash)) + CHECK_ERROR(_readu32(c, &m->num_slashing_spans)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_staking_force_new_era_always_V1( + parser_context_t* c, pd_staking_force_new_era_always_V1_t* m) +{ + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_staking_cancel_deferred_slash_V1( + parser_context_t* c, pd_staking_cancel_deferred_slash_V1_t* m) +{ + CHECK_ERROR(_readEraIndex_V1(c, &m->era)) + CHECK_ERROR(_readVecu32(c, &m->slash_indices)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_staking_set_history_depth_V1( + parser_context_t* c, pd_staking_set_history_depth_V1_t* m) +{ + CHECK_ERROR(_readCompactEraIndex_V1(c, &m->new_history_depth)) + CHECK_ERROR(_readCompactu32(c, &m->_era_items_deleted)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_staking_reap_stash_V1( + parser_context_t* c, pd_staking_reap_stash_V1_t* m) +{ + CHECK_ERROR(_readAccountId_V1(c, &m->stash)) + CHECK_ERROR(_readu32(c, &m->num_slashing_spans)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_staking_submit_election_solution_V1( + parser_context_t* c, pd_staking_submit_election_solution_V1_t* m) +{ + CHECK_ERROR(_readVecValidatorIndex_V1(c, &m->winners)) + CHECK_ERROR(_readCompactAssignments_V1(c, &m->compact)) + CHECK_ERROR(_readElectionScore_V1(c, &m->score)) + CHECK_ERROR(_readEraIndex_V1(c, &m->era)) + CHECK_ERROR(_readElectionSize_V1(c, &m->size)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_staking_submit_election_solution_unsigned_V1( + parser_context_t* c, pd_staking_submit_election_solution_unsigned_V1_t* m) +{ + CHECK_ERROR(_readVecValidatorIndex_V1(c, &m->winners)) + CHECK_ERROR(_readCompactAssignments_V1(c, &m->compact)) + CHECK_ERROR(_readElectionScore_V1(c, &m->score)) + CHECK_ERROR(_readEraIndex_V1(c, &m->era)) + CHECK_ERROR(_readElectionSize_V1(c, &m->size)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_democracy_propose_V1( + parser_context_t* c, pd_democracy_propose_V1_t* m) +{ + CHECK_ERROR(_readHash(c, &m->proposal_hash)) + CHECK_ERROR(_readCompactBalanceOf(c, &m->value)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_democracy_second_V1( + parser_context_t* c, pd_democracy_second_V1_t* m) +{ + CHECK_ERROR(_readCompactPropIndex_V1(c, &m->proposal)) + CHECK_ERROR(_readCompactu32(c, &m->seconds_upper_bound)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_democracy_vote_V1( + parser_context_t* c, pd_democracy_vote_V1_t* m) +{ + CHECK_ERROR(_readCompactReferendumIndex_V1(c, &m->ref_index)) + CHECK_ERROR(_readAccountVote_V1(c, &m->vote)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_democracy_emergency_cancel_V1( + parser_context_t* c, pd_democracy_emergency_cancel_V1_t* m) +{ + CHECK_ERROR(_readReferendumIndex_V1(c, &m->ref_index)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_democracy_external_propose_V1( + parser_context_t* c, pd_democracy_external_propose_V1_t* m) +{ + CHECK_ERROR(_readHash(c, &m->proposal_hash)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_democracy_external_propose_majority_V1( + parser_context_t* c, pd_democracy_external_propose_majority_V1_t* m) +{ + CHECK_ERROR(_readHash(c, &m->proposal_hash)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_democracy_external_propose_default_V1( + parser_context_t* c, pd_democracy_external_propose_default_V1_t* m) +{ + CHECK_ERROR(_readHash(c, &m->proposal_hash)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_democracy_fast_track_V1( + parser_context_t* c, pd_democracy_fast_track_V1_t* m) +{ + CHECK_ERROR(_readHash(c, &m->proposal_hash)) + CHECK_ERROR(_readBlockNumber(c, &m->voting_period)) + CHECK_ERROR(_readBlockNumber(c, &m->delay)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_democracy_veto_external_V1( + parser_context_t* c, pd_democracy_veto_external_V1_t* m) +{ + CHECK_ERROR(_readHash(c, &m->proposal_hash)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_democracy_cancel_referendum_V1( + parser_context_t* c, pd_democracy_cancel_referendum_V1_t* m) +{ + CHECK_ERROR(_readCompactReferendumIndex_V1(c, &m->ref_index)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_democracy_cancel_queued_V1( + parser_context_t* c, pd_democracy_cancel_queued_V1_t* m) +{ + CHECK_ERROR(_readReferendumIndex_V1(c, &m->which)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_democracy_delegate_V1( + parser_context_t* c, pd_democracy_delegate_V1_t* m) +{ + CHECK_ERROR(_readAccountId_V1(c, &m->to)) + CHECK_ERROR(_readConviction_V1(c, &m->conviction)) + CHECK_ERROR(_readBalanceOf(c, &m->balance)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_democracy_undelegate_V1( + parser_context_t* c, pd_democracy_undelegate_V1_t* m) +{ + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_democracy_clear_public_proposals_V1( + parser_context_t* c, pd_democracy_clear_public_proposals_V1_t* m) +{ + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_democracy_note_preimage_V1( + parser_context_t* c, pd_democracy_note_preimage_V1_t* m) +{ + CHECK_ERROR(_readBytes(c, &m->encoded_proposal)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_democracy_note_preimage_operational_V1( + parser_context_t* c, pd_democracy_note_preimage_operational_V1_t* m) +{ + CHECK_ERROR(_readBytes(c, &m->encoded_proposal)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_democracy_note_imminent_preimage_V1( + parser_context_t* c, pd_democracy_note_imminent_preimage_V1_t* m) +{ + CHECK_ERROR(_readBytes(c, &m->encoded_proposal)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_democracy_note_imminent_preimage_operational_V1( + parser_context_t* c, pd_democracy_note_imminent_preimage_operational_V1_t* m) +{ + CHECK_ERROR(_readBytes(c, &m->encoded_proposal)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_democracy_reap_preimage_V1( + parser_context_t* c, pd_democracy_reap_preimage_V1_t* m) +{ + CHECK_ERROR(_readHash(c, &m->proposal_hash)) + CHECK_ERROR(_readCompactu32(c, &m->proposal_len_upper_bound)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_democracy_unlock_V1( + parser_context_t* c, pd_democracy_unlock_V1_t* m) +{ + CHECK_ERROR(_readAccountId_V1(c, &m->target)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_democracy_remove_vote_V1( + parser_context_t* c, pd_democracy_remove_vote_V1_t* m) +{ + CHECK_ERROR(_readReferendumIndex_V1(c, &m->index)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_democracy_remove_other_vote_V1( + parser_context_t* c, pd_democracy_remove_other_vote_V1_t* m) +{ + CHECK_ERROR(_readAccountId_V1(c, &m->target)) + CHECK_ERROR(_readReferendumIndex_V1(c, &m->index)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_democracy_enact_proposal_V1( + parser_context_t* c, pd_democracy_enact_proposal_V1_t* m) +{ + CHECK_ERROR(_readHash(c, &m->proposal_hash)) + CHECK_ERROR(_readReferendumIndex_V1(c, &m->index)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_democracy_blacklist_V1( + parser_context_t* c, pd_democracy_blacklist_V1_t* m) +{ + CHECK_ERROR(_readHash(c, &m->proposal_hash)) + CHECK_ERROR(_readOptionReferendumIndex_V1(c, &m->maybe_ref_index)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_democracy_cancel_proposal_V1( + parser_context_t* c, pd_democracy_cancel_proposal_V1_t* m) +{ + CHECK_ERROR(_readCompactPropIndex_V1(c, &m->prop_index)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_council_set_members_V1( + parser_context_t* c, pd_council_set_members_V1_t* m) +{ + CHECK_ERROR(_readVecAccountId_V1(c, &m->new_members)) + CHECK_ERROR(_readOptionAccountId_V1(c, &m->prime)) + CHECK_ERROR(_readMemberCount_V1(c, &m->old_count)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_council_execute_V1( + parser_context_t* c, pd_council_execute_V1_t* m) +{ + CHECK_ERROR(_readProposal(c, &m->proposal)) + CHECK_ERROR(_readCompactu32(c, &m->length_bound)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_council_propose_V1( + parser_context_t* c, pd_council_propose_V1_t* m) +{ + CHECK_ERROR(_readCompactMemberCount_V1(c, &m->threshold)) + CHECK_ERROR(_readProposal(c, &m->proposal)) + CHECK_ERROR(_readCompactu32(c, &m->length_bound)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_council_vote_V1( + parser_context_t* c, pd_council_vote_V1_t* m) +{ + CHECK_ERROR(_readHash(c, &m->proposal)) + CHECK_ERROR(_readCompactProposalIndex_V1(c, &m->index)) + CHECK_ERROR(_readbool(c, &m->approve)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_council_close_V1( + parser_context_t* c, pd_council_close_V1_t* m) +{ + CHECK_ERROR(_readHash(c, &m->proposal_hash)) + CHECK_ERROR(_readCompactProposalIndex_V1(c, &m->index)) + CHECK_ERROR(_readCompactWeight_V1(c, &m->proposal_weight_bound)) + CHECK_ERROR(_readCompactu32(c, &m->length_bound)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_council_disapprove_proposal_V1( + parser_context_t* c, pd_council_disapprove_proposal_V1_t* m) +{ + CHECK_ERROR(_readHash(c, &m->proposal_hash)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_elections_vote_V1( + parser_context_t* c, pd_elections_vote_V1_t* m) +{ + CHECK_ERROR(_readVecAccountId_V1(c, &m->votes)) + CHECK_ERROR(_readCompactBalanceOf(c, &m->value)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_elections_remove_voter_V1( + parser_context_t* c, pd_elections_remove_voter_V1_t* m) +{ + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_elections_report_defunct_voter_V1( + parser_context_t* c, pd_elections_report_defunct_voter_V1_t* m) +{ + CHECK_ERROR(_readDefunctVoter_V1(c, &m->defunct)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_elections_submit_candidacy_V1( + parser_context_t* c, pd_elections_submit_candidacy_V1_t* m) +{ + CHECK_ERROR(_readCompactu32(c, &m->candidate_count)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_elections_renounce_candidacy_V1( + parser_context_t* c, pd_elections_renounce_candidacy_V1_t* m) +{ + CHECK_ERROR(_readRenouncing_V1(c, &m->renouncing)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_elections_remove_member_V1( + parser_context_t* c, pd_elections_remove_member_V1_t* m) +{ + CHECK_ERROR(_readLookupSource_V1(c, &m->who)) + CHECK_ERROR(_readbool(c, &m->has_replacement)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_grandpa_report_equivocation_V1( + parser_context_t* c, pd_grandpa_report_equivocation_V1_t* m) +{ + CHECK_ERROR(_readGrandpaEquivocationProof_V1(c, &m->equivocation_proof)) + CHECK_ERROR(_readKeyOwnerProof_V1(c, &m->key_owner_proof)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_grandpa_report_equivocation_unsigned_V1( + parser_context_t* c, pd_grandpa_report_equivocation_unsigned_V1_t* m) +{ + CHECK_ERROR(_readGrandpaEquivocationProof_V1(c, &m->equivocation_proof)) + CHECK_ERROR(_readKeyOwnerProof_V1(c, &m->key_owner_proof)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_grandpa_note_stalled_V1( + parser_context_t* c, pd_grandpa_note_stalled_V1_t* m) +{ + CHECK_ERROR(_readBlockNumber(c, &m->delay)) + CHECK_ERROR(_readBlockNumber(c, &m->best_finalized_block_number)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_treasury_propose_spend_V1( + parser_context_t* c, pd_treasury_propose_spend_V1_t* m) +{ + CHECK_ERROR(_readCompactBalanceOf(c, &m->value)) + CHECK_ERROR(_readLookupSource_V1(c, &m->beneficiary)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_treasury_reject_proposal_V1( + parser_context_t* c, pd_treasury_reject_proposal_V1_t* m) +{ + CHECK_ERROR(_readCompactProposalIndex_V1(c, &m->proposal_id)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_treasury_approve_proposal_V1( + parser_context_t* c, pd_treasury_approve_proposal_V1_t* m) +{ + CHECK_ERROR(_readCompactProposalIndex_V1(c, &m->proposal_id)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_contracts_update_schedule_V1( + parser_context_t* c, pd_contracts_update_schedule_V1_t* m) +{ + CHECK_ERROR(_readSchedule_V1(c, &m->schedule)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_contracts_put_code_V1( + parser_context_t* c, pd_contracts_put_code_V1_t* m) +{ + CHECK_ERROR(_readBytes(c, &m->code)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_contracts_call_V1( + parser_context_t* c, pd_contracts_call_V1_t* m) +{ + CHECK_ERROR(_readLookupSource_V1(c, &m->dest)) + CHECK_ERROR(_readCompactBalanceOf(c, &m->value)) + CHECK_ERROR(_readCompactGas_V1(c, &m->gas_limit)) + CHECK_ERROR(_readBytes(c, &m->data)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_contracts_instantiate_V1( + parser_context_t* c, pd_contracts_instantiate_V1_t* m) +{ + CHECK_ERROR(_readCompactBalanceOf(c, &m->endowment)) + CHECK_ERROR(_readCompactGas_V1(c, &m->gas_limit)) + CHECK_ERROR(_readCodeHash_V1(c, &m->code_hash)) + CHECK_ERROR(_readBytes(c, &m->data)) + CHECK_ERROR(_readBytes(c, &m->salt)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_contracts_claim_surcharge_V1( + parser_context_t* c, pd_contracts_claim_surcharge_V1_t* m) +{ + CHECK_ERROR(_readAccountId_V1(c, &m->dest)) + CHECK_ERROR(_readOptionAccountId_V1(c, &m->aux_sender)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_sudo_sudo_V1( + parser_context_t* c, pd_sudo_sudo_V1_t* m) +{ + CHECK_ERROR(_readCall(c, &m->call)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_sudo_sudo_unchecked_weight_V1( + parser_context_t* c, pd_sudo_sudo_unchecked_weight_V1_t* m) +{ + CHECK_ERROR(_readCall(c, &m->call)) + CHECK_ERROR(_readWeight_V1(c, &m->_weight)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_sudo_set_key_V1( + parser_context_t* c, pd_sudo_set_key_V1_t* m) +{ + CHECK_ERROR(_readLookupSource_V1(c, &m->new_)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_sudo_sudo_as_V1( + parser_context_t* c, pd_sudo_sudo_as_V1_t* m) +{ + CHECK_ERROR(_readLookupSource_V1(c, &m->who)) + CHECK_ERROR(_readCall(c, &m->call)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_imonline_heartbeat_V1( + parser_context_t* c, pd_imonline_heartbeat_V1_t* m) +{ + CHECK_ERROR(_readHeartbeat(c, &m->heartbeat)) + CHECK_ERROR(_readSignature_V1(c, &m->_signature)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_identity_add_registrar_V1( + parser_context_t* c, pd_identity_add_registrar_V1_t* m) +{ + CHECK_ERROR(_readAccountId_V1(c, &m->account)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_identity_set_identity_V1( + parser_context_t* c, pd_identity_set_identity_V1_t* m) +{ + CHECK_ERROR(_readIdentityInfo_V1(c, &m->info)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_identity_set_subs_V1( + parser_context_t* c, pd_identity_set_subs_V1_t* m) +{ + CHECK_ERROR(_readVecTupleAccountIdData_V1(c, &m->subs)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_identity_clear_identity_V1( + parser_context_t* c, pd_identity_clear_identity_V1_t* m) +{ + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_identity_request_judgement_V1( + parser_context_t* c, pd_identity_request_judgement_V1_t* m) +{ + CHECK_ERROR(_readCompactRegistrarIndex_V1(c, &m->reg_index)) + CHECK_ERROR(_readCompactBalanceOf(c, &m->max_fee)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_identity_cancel_request_V1( + parser_context_t* c, pd_identity_cancel_request_V1_t* m) +{ + CHECK_ERROR(_readRegistrarIndex_V1(c, &m->reg_index)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_identity_set_fee_V1( + parser_context_t* c, pd_identity_set_fee_V1_t* m) +{ + CHECK_ERROR(_readCompactRegistrarIndex_V1(c, &m->index)) + CHECK_ERROR(_readCompactBalanceOf(c, &m->fee)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_identity_set_account_id_V1( + parser_context_t* c, pd_identity_set_account_id_V1_t* m) +{ + CHECK_ERROR(_readCompactRegistrarIndex_V1(c, &m->index)) + CHECK_ERROR(_readAccountId_V1(c, &m->new_)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_identity_set_fields_V1( + parser_context_t* c, pd_identity_set_fields_V1_t* m) +{ + CHECK_ERROR(_readCompactRegistrarIndex_V1(c, &m->index)) + CHECK_ERROR(_readIdentityFields_V1(c, &m->fields)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_identity_provide_judgement_V1( + parser_context_t* c, pd_identity_provide_judgement_V1_t* m) +{ + CHECK_ERROR(_readCompactRegistrarIndex_V1(c, &m->reg_index)) + CHECK_ERROR(_readLookupSource_V1(c, &m->target)) + CHECK_ERROR(_readIdentityJudgement_V1(c, &m->judgement)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_identity_kill_identity_V1( + parser_context_t* c, pd_identity_kill_identity_V1_t* m) +{ + CHECK_ERROR(_readLookupSource_V1(c, &m->target)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_identity_add_sub_V1( + parser_context_t* c, pd_identity_add_sub_V1_t* m) +{ + CHECK_ERROR(_readLookupSource_V1(c, &m->sub)) + CHECK_ERROR(_readData(c, &m->data)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_identity_rename_sub_V1( + parser_context_t* c, pd_identity_rename_sub_V1_t* m) +{ + CHECK_ERROR(_readLookupSource_V1(c, &m->sub)) + CHECK_ERROR(_readData(c, &m->data)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_identity_remove_sub_V1( + parser_context_t* c, pd_identity_remove_sub_V1_t* m) +{ + CHECK_ERROR(_readLookupSource_V1(c, &m->sub)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_identity_quit_sub_V1( + parser_context_t* c, pd_identity_quit_sub_V1_t* m) +{ + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_recovery_as_recovered_V1( + parser_context_t* c, pd_recovery_as_recovered_V1_t* m) +{ + CHECK_ERROR(_readAccountId_V1(c, &m->account)) + CHECK_ERROR(_readCall(c, &m->call)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_recovery_set_recovered_V1( + parser_context_t* c, pd_recovery_set_recovered_V1_t* m) +{ + CHECK_ERROR(_readAccountId_V1(c, &m->lost)) + CHECK_ERROR(_readAccountId_V1(c, &m->rescuer)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_recovery_create_recovery_V1( + parser_context_t* c, pd_recovery_create_recovery_V1_t* m) +{ + CHECK_ERROR(_readVecAccountId_V1(c, &m->friends)) + CHECK_ERROR(_readu16(c, &m->threshold)) + CHECK_ERROR(_readBlockNumber(c, &m->delay_period)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_recovery_initiate_recovery_V1( + parser_context_t* c, pd_recovery_initiate_recovery_V1_t* m) +{ + CHECK_ERROR(_readAccountId_V1(c, &m->account)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_recovery_vouch_recovery_V1( + parser_context_t* c, pd_recovery_vouch_recovery_V1_t* m) +{ + CHECK_ERROR(_readAccountId_V1(c, &m->lost)) + CHECK_ERROR(_readAccountId_V1(c, &m->rescuer)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_recovery_claim_recovery_V1( + parser_context_t* c, pd_recovery_claim_recovery_V1_t* m) +{ + CHECK_ERROR(_readAccountId_V1(c, &m->account)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_recovery_close_recovery_V1( + parser_context_t* c, pd_recovery_close_recovery_V1_t* m) +{ + CHECK_ERROR(_readAccountId_V1(c, &m->rescuer)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_recovery_remove_recovery_V1( + parser_context_t* c, pd_recovery_remove_recovery_V1_t* m) +{ + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_recovery_cancel_recovered_V1( + parser_context_t* c, pd_recovery_cancel_recovered_V1_t* m) +{ + CHECK_ERROR(_readAccountId_V1(c, &m->account)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_vesting_vest_V1( + parser_context_t* c, pd_vesting_vest_V1_t* m) +{ + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_vesting_vest_other_V1( + parser_context_t* c, pd_vesting_vest_other_V1_t* m) +{ + CHECK_ERROR(_readLookupSource_V1(c, &m->target)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_vesting_vested_transfer_V1( + parser_context_t* c, pd_vesting_vested_transfer_V1_t* m) +{ + CHECK_ERROR(_readLookupSource_V1(c, &m->target)) + CHECK_ERROR(_readVestingInfo_V1(c, &m->schedule)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_vesting_force_vested_transfer_V1( + parser_context_t* c, pd_vesting_force_vested_transfer_V1_t* m) +{ + CHECK_ERROR(_readLookupSource_V1(c, &m->source)) + CHECK_ERROR(_readLookupSource_V1(c, &m->target)) + CHECK_ERROR(_readVestingInfo_V1(c, &m->schedule)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_scheduler_schedule_V1( + parser_context_t* c, pd_scheduler_schedule_V1_t* m) +{ + CHECK_ERROR(_readBlockNumber(c, &m->when)) + CHECK_ERROR(_readOptionPeriod_V1(c, &m->maybe_periodic)) + CHECK_ERROR(_readPriority_V1(c, &m->priority)) + CHECK_ERROR(_readCall(c, &m->call)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_scheduler_cancel_V1( + parser_context_t* c, pd_scheduler_cancel_V1_t* m) +{ + CHECK_ERROR(_readBlockNumber(c, &m->when)) + CHECK_ERROR(_readu32(c, &m->index)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_scheduler_schedule_named_V1( + parser_context_t* c, pd_scheduler_schedule_named_V1_t* m) +{ + CHECK_ERROR(_readBytes(c, &m->id)) + CHECK_ERROR(_readBlockNumber(c, &m->when)) + CHECK_ERROR(_readOptionPeriod_V1(c, &m->maybe_periodic)) + CHECK_ERROR(_readPriority_V1(c, &m->priority)) + CHECK_ERROR(_readCall(c, &m->call)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_scheduler_cancel_named_V1( + parser_context_t* c, pd_scheduler_cancel_named_V1_t* m) +{ + CHECK_ERROR(_readBytes(c, &m->id)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_scheduler_schedule_after_V1( + parser_context_t* c, pd_scheduler_schedule_after_V1_t* m) +{ + CHECK_ERROR(_readBlockNumber(c, &m->after)) + CHECK_ERROR(_readOptionPeriod_V1(c, &m->maybe_periodic)) + CHECK_ERROR(_readPriority_V1(c, &m->priority)) + CHECK_ERROR(_readCall(c, &m->call)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_scheduler_schedule_named_after_V1( + parser_context_t* c, pd_scheduler_schedule_named_after_V1_t* m) +{ + CHECK_ERROR(_readBytes(c, &m->id)) + CHECK_ERROR(_readBlockNumber(c, &m->after)) + CHECK_ERROR(_readOptionPeriod_V1(c, &m->maybe_periodic)) + CHECK_ERROR(_readPriority_V1(c, &m->priority)) + CHECK_ERROR(_readCall(c, &m->call)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_proxy_proxy_V1( + parser_context_t* c, pd_proxy_proxy_V1_t* m) +{ + CHECK_ERROR(_readAccountId_V1(c, &m->real)) + CHECK_ERROR(_readOptionProxyType_V1(c, &m->force_proxy_type)) + CHECK_ERROR(_readCall(c, &m->call)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_proxy_add_proxy_V1( + parser_context_t* c, pd_proxy_add_proxy_V1_t* m) +{ + CHECK_ERROR(_readAccountId_V1(c, &m->delegate)) + CHECK_ERROR(_readProxyType_V1(c, &m->proxy_type)) + CHECK_ERROR(_readBlockNumber(c, &m->delay)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_proxy_remove_proxy_V1( + parser_context_t* c, pd_proxy_remove_proxy_V1_t* m) +{ + CHECK_ERROR(_readAccountId_V1(c, &m->delegate)) + CHECK_ERROR(_readProxyType_V1(c, &m->proxy_type)) + CHECK_ERROR(_readBlockNumber(c, &m->delay)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_proxy_remove_proxies_V1( + parser_context_t* c, pd_proxy_remove_proxies_V1_t* m) +{ + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_proxy_anonymous_V1( + parser_context_t* c, pd_proxy_anonymous_V1_t* m) +{ + CHECK_ERROR(_readProxyType_V1(c, &m->proxy_type)) + CHECK_ERROR(_readBlockNumber(c, &m->delay)) + CHECK_ERROR(_readu16(c, &m->index)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_proxy_kill_anonymous_V1( + parser_context_t* c, pd_proxy_kill_anonymous_V1_t* m) +{ + CHECK_ERROR(_readAccountId_V1(c, &m->spawner)) + CHECK_ERROR(_readProxyType_V1(c, &m->proxy_type)) + CHECK_ERROR(_readu16(c, &m->index)) + CHECK_ERROR(_readCompactBlockNumber(c, &m->height)) + CHECK_ERROR(_readCompactu32(c, &m->ext_index)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_proxy_announce_V1( + parser_context_t* c, pd_proxy_announce_V1_t* m) +{ + CHECK_ERROR(_readAccountId_V1(c, &m->real)) + CHECK_ERROR(_readCallHashOf_V1(c, &m->call_hash)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_proxy_remove_announcement_V1( + parser_context_t* c, pd_proxy_remove_announcement_V1_t* m) +{ + CHECK_ERROR(_readAccountId_V1(c, &m->real)) + CHECK_ERROR(_readCallHashOf_V1(c, &m->call_hash)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_proxy_reject_announcement_V1( + parser_context_t* c, pd_proxy_reject_announcement_V1_t* m) +{ + CHECK_ERROR(_readAccountId_V1(c, &m->delegate)) + CHECK_ERROR(_readCallHashOf_V1(c, &m->call_hash)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_proxy_proxy_announced_V1( + parser_context_t* c, pd_proxy_proxy_announced_V1_t* m) +{ + CHECK_ERROR(_readAccountId_V1(c, &m->delegate)) + CHECK_ERROR(_readAccountId_V1(c, &m->real)) + CHECK_ERROR(_readOptionProxyType_V1(c, &m->force_proxy_type)) + CHECK_ERROR(_readCall(c, &m->call)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_multisig_as_multi_threshold_1_V1( + parser_context_t* c, pd_multisig_as_multi_threshold_1_V1_t* m) +{ + CHECK_ERROR(_readVecAccountId_V1(c, &m->other_signatories)) + CHECK_ERROR(_readCall(c, &m->call)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_multisig_as_multi_V1( + parser_context_t* c, pd_multisig_as_multi_V1_t* m) +{ + CHECK_ERROR(_readu16(c, &m->threshold)) + CHECK_ERROR(_readVecAccountId_V1(c, &m->other_signatories)) + CHECK_ERROR(_readOptionTimepoint_V1(c, &m->maybe_timepoint)) + CHECK_ERROR(_readOpaqueCall_V1(c, &m->call)) + CHECK_ERROR(_readbool(c, &m->store_call)) + CHECK_ERROR(_readWeight_V1(c, &m->max_weight)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_multisig_approve_as_multi_V1( + parser_context_t* c, pd_multisig_approve_as_multi_V1_t* m) +{ + CHECK_ERROR(_readu16(c, &m->threshold)) + CHECK_ERROR(_readVecAccountId_V1(c, &m->other_signatories)) + CHECK_ERROR(_readOptionTimepoint_V1(c, &m->maybe_timepoint)) + CHECK_ERROR(_readu8_array_32_V1(c, &m->call_hash)) + CHECK_ERROR(_readWeight_V1(c, &m->max_weight)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_multisig_cancel_as_multi_V1( + parser_context_t* c, pd_multisig_cancel_as_multi_V1_t* m) +{ + CHECK_ERROR(_readu16(c, &m->threshold)) + CHECK_ERROR(_readVecAccountId_V1(c, &m->other_signatories)) + CHECK_ERROR(_readTimepoint_V1(c, &m->timepoint)) + CHECK_ERROR(_readu8_array_32_V1(c, &m->call_hash)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_assets_create_V1( + parser_context_t* c, pd_assets_create_V1_t* m) +{ + CHECK_ERROR(_readCompactAssetId_V1(c, &m->id)) + CHECK_ERROR(_readLookupSource_V1(c, &m->admin)) + CHECK_ERROR(_readu32(c, &m->max_zombies)) + CHECK_ERROR(_readTAssetBalance_V1(c, &m->min_balance)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_assets_force_create_V1( + parser_context_t* c, pd_assets_force_create_V1_t* m) +{ + CHECK_ERROR(_readCompactAssetId_V1(c, &m->id)) + CHECK_ERROR(_readLookupSource_V1(c, &m->owner)) + CHECK_ERROR(_readCompactu32(c, &m->max_zombies)) + CHECK_ERROR(_readCompactTAssetBalance_V1(c, &m->min_balance)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_assets_destroy_V1( + parser_context_t* c, pd_assets_destroy_V1_t* m) +{ + CHECK_ERROR(_readCompactAssetId_V1(c, &m->id)) + CHECK_ERROR(_readCompactu32(c, &m->zombies_witness)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_assets_force_destroy_V1( + parser_context_t* c, pd_assets_force_destroy_V1_t* m) +{ + CHECK_ERROR(_readCompactAssetId_V1(c, &m->id)) + CHECK_ERROR(_readCompactu32(c, &m->zombies_witness)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_assets_mint_V1( + parser_context_t* c, pd_assets_mint_V1_t* m) +{ + CHECK_ERROR(_readCompactAssetId_V1(c, &m->id)) + CHECK_ERROR(_readLookupSource_V1(c, &m->beneficiary)) + CHECK_ERROR(_readCompactTAssetBalance_V1(c, &m->amount)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_assets_burn_V1( + parser_context_t* c, pd_assets_burn_V1_t* m) +{ + CHECK_ERROR(_readCompactAssetId_V1(c, &m->id)) + CHECK_ERROR(_readLookupSource_V1(c, &m->who)) + CHECK_ERROR(_readCompactTAssetBalance_V1(c, &m->amount)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_assets_transfer_V1( + parser_context_t* c, pd_assets_transfer_V1_t* m) +{ + CHECK_ERROR(_readCompactAssetId_V1(c, &m->id)) + CHECK_ERROR(_readLookupSource_V1(c, &m->target)) + CHECK_ERROR(_readCompactTAssetBalance_V1(c, &m->amount)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_assets_force_transfer_V1( + parser_context_t* c, pd_assets_force_transfer_V1_t* m) +{ + CHECK_ERROR(_readCompactAssetId_V1(c, &m->id)) + CHECK_ERROR(_readLookupSource_V1(c, &m->source)) + CHECK_ERROR(_readLookupSource_V1(c, &m->dest)) + CHECK_ERROR(_readCompactTAssetBalance_V1(c, &m->amount)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_assets_freeze_V1( + parser_context_t* c, pd_assets_freeze_V1_t* m) +{ + CHECK_ERROR(_readCompactAssetId_V1(c, &m->id)) + CHECK_ERROR(_readLookupSource_V1(c, &m->who)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_assets_thaw_V1( + parser_context_t* c, pd_assets_thaw_V1_t* m) +{ + CHECK_ERROR(_readCompactAssetId_V1(c, &m->id)) + CHECK_ERROR(_readLookupSource_V1(c, &m->who)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_assets_transfer_ownership_V1( + parser_context_t* c, pd_assets_transfer_ownership_V1_t* m) +{ + CHECK_ERROR(_readCompactAssetId_V1(c, &m->id)) + CHECK_ERROR(_readLookupSource_V1(c, &m->new_owner)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_assets_set_team_V1( + parser_context_t* c, pd_assets_set_team_V1_t* m) +{ + CHECK_ERROR(_readCompactAssetId_V1(c, &m->id)) + CHECK_ERROR(_readLookupSource_V1(c, &m->issuer)) + CHECK_ERROR(_readLookupSource_V1(c, &m->admin)) + CHECK_ERROR(_readLookupSource_V1(c, &m->freezer)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_assets_set_max_zombies_V1( + parser_context_t* c, pd_assets_set_max_zombies_V1_t* m) +{ + CHECK_ERROR(_readCompactAssetId_V1(c, &m->id)) + CHECK_ERROR(_readCompactu32(c, &m->max_zombies)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_treasuryreward_set_current_payout_V1( + parser_context_t* c, pd_treasuryreward_set_current_payout_V1_t* m) +{ + CHECK_ERROR(_readBalanceOf(c, &m->payout)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_treasuryreward_set_minting_interval_V1( + parser_context_t* c, pd_treasuryreward_set_minting_interval_V1_t* m) +{ + CHECK_ERROR(_readBlockNumber(c, &m->interval)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_ethereum_transact_V1( + parser_context_t* c, pd_ethereum_transact_V1_t* m) +{ + CHECK_ERROR(_readEthTransaction_V1(c, &m->transaction)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_evm_withdraw_V1( + parser_context_t* c, pd_evm_withdraw_V1_t* m) +{ + CHECK_ERROR(_readH160_V1(c, &m->address)) + CHECK_ERROR(_readBalanceOf(c, &m->value)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_evm_call_V1( + parser_context_t* c, pd_evm_call_V1_t* m) +{ + CHECK_ERROR(_readH160_V1(c, &m->source)) + CHECK_ERROR(_readH160_V1(c, &m->target)) + CHECK_ERROR(_readBytes(c, &m->input)) + CHECK_ERROR(_readU256_V1(c, &m->value)) + CHECK_ERROR(_readu32(c, &m->gas_limit)) + CHECK_ERROR(_readU256_V1(c, &m->gas_price)) + CHECK_ERROR(_readOptionU256_V1(c, &m->nonce)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_evm_create_V1( + parser_context_t* c, pd_evm_create_V1_t* m) +{ + CHECK_ERROR(_readH160_V1(c, &m->source)) + CHECK_ERROR(_readBytes(c, &m->init)) + CHECK_ERROR(_readU256_V1(c, &m->value)) + CHECK_ERROR(_readu32(c, &m->gas_limit)) + CHECK_ERROR(_readU256_V1(c, &m->gas_price)) + CHECK_ERROR(_readOptionU256_V1(c, &m->nonce)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_evm_create2_V1( + parser_context_t* c, pd_evm_create2_V1_t* m) +{ + CHECK_ERROR(_readH160_V1(c, &m->source)) + CHECK_ERROR(_readBytes(c, &m->init)) + CHECK_ERROR(_readH256_V1(c, &m->salt)) + CHECK_ERROR(_readU256_V1(c, &m->value)) + CHECK_ERROR(_readu32(c, &m->gas_limit)) + CHECK_ERROR(_readU256_V1(c, &m->gas_price)) + CHECK_ERROR(_readOptionU256_V1(c, &m->nonce)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_chainbridge_set_threshold_V1( + parser_context_t* c, pd_chainbridge_set_threshold_V1_t* m) +{ + CHECK_ERROR(_readu32(c, &m->threshold)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_chainbridge_set_resource_V1( + parser_context_t* c, pd_chainbridge_set_resource_V1_t* m) +{ + CHECK_ERROR(_readResourceId_V1(c, &m->id)) + CHECK_ERROR(_readBytes(c, &m->method)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_chainbridge_remove_resource_V1( + parser_context_t* c, pd_chainbridge_remove_resource_V1_t* m) +{ + CHECK_ERROR(_readResourceId_V1(c, &m->id)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_chainbridge_whitelist_chain_V1( + parser_context_t* c, pd_chainbridge_whitelist_chain_V1_t* m) +{ + CHECK_ERROR(_readChainId_V1(c, &m->id)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_chainbridge_add_relayer_V1( + parser_context_t* c, pd_chainbridge_add_relayer_V1_t* m) +{ + CHECK_ERROR(_readAccountId_V1(c, &m->v)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_chainbridge_remove_relayer_V1( + parser_context_t* c, pd_chainbridge_remove_relayer_V1_t* m) +{ + CHECK_ERROR(_readAccountId_V1(c, &m->v)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_chainbridge_acknowledge_proposal_V1( + parser_context_t* c, pd_chainbridge_acknowledge_proposal_V1_t* m) +{ + CHECK_ERROR(_readDepositNonce_V1(c, &m->nonce)) + CHECK_ERROR(_readChainId_V1(c, &m->src_id)) + CHECK_ERROR(_readResourceId_V1(c, &m->r_id)) + CHECK_ERROR(_readProposal(c, &m->call)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_chainbridge_reject_proposal_V1( + parser_context_t* c, pd_chainbridge_reject_proposal_V1_t* m) +{ + CHECK_ERROR(_readDepositNonce_V1(c, &m->nonce)) + CHECK_ERROR(_readChainId_V1(c, &m->src_id)) + CHECK_ERROR(_readResourceId_V1(c, &m->r_id)) + CHECK_ERROR(_readProposal(c, &m->call)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_chainbridge_eval_vote_state_V1( + parser_context_t* c, pd_chainbridge_eval_vote_state_V1_t* m) +{ + CHECK_ERROR(_readDepositNonce_V1(c, &m->nonce)) + CHECK_ERROR(_readChainId_V1(c, &m->src_id)) + CHECK_ERROR(_readProposal(c, &m->prop)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_edgebridge_transfer_native_V1( + parser_context_t* c, pd_edgebridge_transfer_native_V1_t* m) +{ + CHECK_ERROR(_readBalanceOf(c, &m->amount)) + CHECK_ERROR(_readBytes(c, &m->recipient)) + CHECK_ERROR(_readChainId_V1(c, &m->dest_id)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_edgebridge_transfer_V1( + parser_context_t* c, pd_edgebridge_transfer_V1_t* m) +{ + CHECK_ERROR(_readAccountId_V1(c, &m->to)) + CHECK_ERROR(_readBalanceOf(c, &m->amount)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_bounties_propose_bounty_V1( + parser_context_t* c, pd_bounties_propose_bounty_V1_t* m) +{ + CHECK_ERROR(_readCompactBalanceOf(c, &m->value)) + CHECK_ERROR(_readBytes(c, &m->description)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_bounties_approve_bounty_V1( + parser_context_t* c, pd_bounties_approve_bounty_V1_t* m) +{ + CHECK_ERROR(_readCompactBountyIndex_V1(c, &m->bounty_id)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_bounties_propose_curator_V1( + parser_context_t* c, pd_bounties_propose_curator_V1_t* m) +{ + CHECK_ERROR(_readCompactBountyIndex_V1(c, &m->bounty_id)) + CHECK_ERROR(_readLookupSource_V1(c, &m->curator)) + CHECK_ERROR(_readCompactBalanceOf(c, &m->fee)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_bounties_unassign_curator_V1( + parser_context_t* c, pd_bounties_unassign_curator_V1_t* m) +{ + CHECK_ERROR(_readCompactBountyIndex_V1(c, &m->bounty_id)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_bounties_accept_curator_V1( + parser_context_t* c, pd_bounties_accept_curator_V1_t* m) +{ + CHECK_ERROR(_readCompactBountyIndex_V1(c, &m->bounty_id)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_bounties_award_bounty_V1( + parser_context_t* c, pd_bounties_award_bounty_V1_t* m) +{ + CHECK_ERROR(_readCompactBountyIndex_V1(c, &m->bounty_id)) + CHECK_ERROR(_readLookupSource_V1(c, &m->beneficiary)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_bounties_claim_bounty_V1( + parser_context_t* c, pd_bounties_claim_bounty_V1_t* m) +{ + CHECK_ERROR(_readCompactBountyIndex_V1(c, &m->bounty_id)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_bounties_close_bounty_V1( + parser_context_t* c, pd_bounties_close_bounty_V1_t* m) +{ + CHECK_ERROR(_readCompactBountyIndex_V1(c, &m->bounty_id)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_bounties_extend_bounty_expiry_V1( + parser_context_t* c, pd_bounties_extend_bounty_expiry_V1_t* m) +{ + CHECK_ERROR(_readCompactBountyIndex_V1(c, &m->bounty_id)) + CHECK_ERROR(_readBytes(c, &m->_remark)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_tips_report_awesome_V1( + parser_context_t* c, pd_tips_report_awesome_V1_t* m) +{ + CHECK_ERROR(_readBytes(c, &m->reason)) + CHECK_ERROR(_readAccountId_V1(c, &m->who)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_tips_retract_tip_V1( + parser_context_t* c, pd_tips_retract_tip_V1_t* m) +{ + CHECK_ERROR(_readHash(c, &m->hash)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_tips_tip_new_V1( + parser_context_t* c, pd_tips_tip_new_V1_t* m) +{ + CHECK_ERROR(_readBytes(c, &m->reason)) + CHECK_ERROR(_readAccountId_V1(c, &m->who)) + CHECK_ERROR(_readCompactBalanceOf(c, &m->tip_value)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_tips_tip_V1( + parser_context_t* c, pd_tips_tip_V1_t* m) +{ + CHECK_ERROR(_readHash(c, &m->hash)) + CHECK_ERROR(_readCompactBalanceOf(c, &m->tip_value)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_tips_close_tip_V1( + parser_context_t* c, pd_tips_close_tip_V1_t* m) +{ + CHECK_ERROR(_readHash(c, &m->hash)) + return parser_ok; +} + +__Z_INLINE parser_error_t _readMethod_tips_slash_tip_V1( + parser_context_t* c, pd_tips_slash_tip_V1_t* m) +{ + CHECK_ERROR(_readHash(c, &m->hash)) + return parser_ok; +} + +#endif + +parser_error_t _readMethod_V1( + parser_context_t* c, + uint8_t moduleIdx, + uint8_t callIdx, + pd_Method_V1_t* method) +{ + uint16_t callPrivIdx = ((uint16_t)moduleIdx << 8u) + callIdx; + + switch (callPrivIdx) { + + case 256: /* module 1 call 0 */ + CHECK_ERROR(_readMethod_utility_batch_V1(c, &method->basic.utility_batch_V1)) + break; + case 258: /* module 1 call 2 */ + CHECK_ERROR(_readMethod_utility_batch_all_V1(c, &method->basic.utility_batch_all_V1)) + break; + case 1536: /* module 6 call 0 */ + CHECK_ERROR(_readMethod_balances_transfer_V1(c, &method->basic.balances_transfer_V1)) + break; + case 1539: /* module 6 call 3 */ + CHECK_ERROR(_readMethod_balances_transfer_keep_alive_V1(c, &method->basic.balances_transfer_keep_alive_V1)) + break; + case 2048: /* module 8 call 0 */ + CHECK_ERROR(_readMethod_staking_bond_V1(c, &method->basic.staking_bond_V1)) + break; + case 2049: /* module 8 call 1 */ + CHECK_ERROR(_readMethod_staking_bond_extra_V1(c, &method->basic.staking_bond_extra_V1)) + break; + case 2050: /* module 8 call 2 */ + CHECK_ERROR(_readMethod_staking_unbond_V1(c, &method->basic.staking_unbond_V1)) + break; + case 2051: /* module 8 call 3 */ + CHECK_ERROR(_readMethod_staking_withdraw_unbonded_V1(c, &method->basic.staking_withdraw_unbonded_V1)) + break; + case 2052: /* module 8 call 4 */ + CHECK_ERROR(_readMethod_staking_validate_V1(c, &method->basic.staking_validate_V1)) + break; + case 2053: /* module 8 call 5 */ + CHECK_ERROR(_readMethod_staking_nominate_V1(c, &method->basic.staking_nominate_V1)) + break; + case 2054: /* module 8 call 6 */ + CHECK_ERROR(_readMethod_staking_chill_V1(c, &method->basic.staking_chill_V1)) + break; + case 2055: /* module 8 call 7 */ + CHECK_ERROR(_readMethod_staking_set_payee_V1(c, &method->basic.staking_set_payee_V1)) + break; + case 2066: /* module 8 call 18 */ + CHECK_ERROR(_readMethod_staking_payout_stakers_V1(c, &method->basic.staking_payout_stakers_V1)) + break; + case 2067: /* module 8 call 19 */ + CHECK_ERROR(_readMethod_staking_rebond_V1(c, &method->basic.staking_rebond_V1)) + break; + case 2304: /* module 9 call 0 */ + CHECK_ERROR(_readMethod_session_set_keys_V1(c, &method->basic.session_set_keys_V1)) + break; + case 2305: /* module 9 call 1 */ + CHECK_ERROR(_readMethod_session_purge_keys_V1(c, &method->basic.session_purge_keys_V1)) + break; + +#ifdef SUBSTRATE_PARSER_FULL + case 0: /* module 0 call 0 */ + CHECK_ERROR(_readMethod_system_fill_block_V1(c, &method->basic.system_fill_block_V1)) + break; + case 1: /* module 0 call 1 */ + CHECK_ERROR(_readMethod_system_remark_V1(c, &method->basic.system_remark_V1)) + break; + case 2: /* module 0 call 2 */ + CHECK_ERROR(_readMethod_system_set_heap_pages_V1(c, &method->basic.system_set_heap_pages_V1)) + break; + case 3: /* module 0 call 3 */ + CHECK_ERROR(_readMethod_system_set_code_V1(c, &method->basic.system_set_code_V1)) + break; + case 4: /* module 0 call 4 */ + CHECK_ERROR(_readMethod_system_set_code_without_checks_V1(c, &method->basic.system_set_code_without_checks_V1)) + break; + case 5: /* module 0 call 5 */ + CHECK_ERROR(_readMethod_system_set_changes_trie_config_V1(c, &method->basic.system_set_changes_trie_config_V1)) + break; + case 6: /* module 0 call 6 */ + CHECK_ERROR(_readMethod_system_set_storage_V1(c, &method->basic.system_set_storage_V1)) + break; + case 7: /* module 0 call 7 */ + CHECK_ERROR(_readMethod_system_kill_storage_V1(c, &method->basic.system_kill_storage_V1)) + break; + case 8: /* module 0 call 8 */ + CHECK_ERROR(_readMethod_system_kill_prefix_V1(c, &method->basic.system_kill_prefix_V1)) + break; + case 9: /* module 0 call 9 */ + CHECK_ERROR(_readMethod_system_suicide_V1(c, &method->basic.system_suicide_V1)) + break; + case 257: /* module 1 call 1 */ + CHECK_ERROR(_readMethod_utility_as_derivative_V1(c, &method->basic.utility_as_derivative_V1)) + break; + case 768: /* module 3 call 0 */ + CHECK_ERROR(_readMethod_timestamp_set_V1(c, &method->basic.timestamp_set_V1)) + break; + case 1024: /* module 4 call 0 */ + CHECK_ERROR(_readMethod_authorship_set_uncles_V1(c, &method->basic.authorship_set_uncles_V1)) + break; + case 1280: /* module 5 call 0 */ + CHECK_ERROR(_readMethod_indices_claim_V1(c, &method->basic.indices_claim_V1)) + break; + case 1281: /* module 5 call 1 */ + CHECK_ERROR(_readMethod_indices_transfer_V1(c, &method->basic.indices_transfer_V1)) + break; + case 1282: /* module 5 call 2 */ + CHECK_ERROR(_readMethod_indices_free_V1(c, &method->basic.indices_free_V1)) + break; + case 1283: /* module 5 call 3 */ + CHECK_ERROR(_readMethod_indices_force_transfer_V1(c, &method->basic.indices_force_transfer_V1)) + break; + case 1284: /* module 5 call 4 */ + CHECK_ERROR(_readMethod_indices_freeze_V1(c, &method->basic.indices_freeze_V1)) + break; + case 1537: /* module 6 call 1 */ + CHECK_ERROR(_readMethod_balances_set_balance_V1(c, &method->basic.balances_set_balance_V1)) + break; + case 1538: /* module 6 call 2 */ + CHECK_ERROR(_readMethod_balances_force_transfer_V1(c, &method->basic.balances_force_transfer_V1)) + break; + case 2056: /* module 8 call 8 */ + CHECK_ERROR(_readMethod_staking_set_controller_V1(c, &method->basic.staking_set_controller_V1)) + break; + case 2057: /* module 8 call 9 */ + CHECK_ERROR(_readMethod_staking_set_validator_count_V1(c, &method->basic.staking_set_validator_count_V1)) + break; + case 2058: /* module 8 call 10 */ + CHECK_ERROR(_readMethod_staking_increase_validator_count_V1(c, &method->basic.staking_increase_validator_count_V1)) + break; + case 2059: /* module 8 call 11 */ + CHECK_ERROR(_readMethod_staking_scale_validator_count_V1(c, &method->basic.staking_scale_validator_count_V1)) + break; + case 2060: /* module 8 call 12 */ + CHECK_ERROR(_readMethod_staking_force_no_eras_V1(c, &method->basic.staking_force_no_eras_V1)) + break; + case 2061: /* module 8 call 13 */ + CHECK_ERROR(_readMethod_staking_force_new_era_V1(c, &method->basic.staking_force_new_era_V1)) + break; + case 2062: /* module 8 call 14 */ + CHECK_ERROR(_readMethod_staking_set_invulnerables_V1(c, &method->basic.staking_set_invulnerables_V1)) + break; + case 2063: /* module 8 call 15 */ + CHECK_ERROR(_readMethod_staking_force_unstake_V1(c, &method->basic.staking_force_unstake_V1)) + break; + case 2064: /* module 8 call 16 */ + CHECK_ERROR(_readMethod_staking_force_new_era_always_V1(c, &method->basic.staking_force_new_era_always_V1)) + break; + case 2065: /* module 8 call 17 */ + CHECK_ERROR(_readMethod_staking_cancel_deferred_slash_V1(c, &method->basic.staking_cancel_deferred_slash_V1)) + break; + case 2068: /* module 8 call 20 */ + CHECK_ERROR(_readMethod_staking_set_history_depth_V1(c, &method->basic.staking_set_history_depth_V1)) + break; + case 2069: /* module 8 call 21 */ + CHECK_ERROR(_readMethod_staking_reap_stash_V1(c, &method->basic.staking_reap_stash_V1)) + break; + case 2070: /* module 8 call 22 */ + CHECK_ERROR(_readMethod_staking_submit_election_solution_V1(c, &method->basic.staking_submit_election_solution_V1)) + break; + case 2071: /* module 8 call 23 */ + CHECK_ERROR(_readMethod_staking_submit_election_solution_unsigned_V1(c, &method->basic.staking_submit_election_solution_unsigned_V1)) + break; + case 2560: /* module 10 call 0 */ + CHECK_ERROR(_readMethod_democracy_propose_V1(c, &method->basic.democracy_propose_V1)) + break; + case 2561: /* module 10 call 1 */ + CHECK_ERROR(_readMethod_democracy_second_V1(c, &method->basic.democracy_second_V1)) + break; + case 2562: /* module 10 call 2 */ + CHECK_ERROR(_readMethod_democracy_vote_V1(c, &method->basic.democracy_vote_V1)) + break; + case 2563: /* module 10 call 3 */ + CHECK_ERROR(_readMethod_democracy_emergency_cancel_V1(c, &method->basic.democracy_emergency_cancel_V1)) + break; + case 2564: /* module 10 call 4 */ + CHECK_ERROR(_readMethod_democracy_external_propose_V1(c, &method->basic.democracy_external_propose_V1)) + break; + case 2565: /* module 10 call 5 */ + CHECK_ERROR(_readMethod_democracy_external_propose_majority_V1(c, &method->basic.democracy_external_propose_majority_V1)) + break; + case 2566: /* module 10 call 6 */ + CHECK_ERROR(_readMethod_democracy_external_propose_default_V1(c, &method->basic.democracy_external_propose_default_V1)) + break; + case 2567: /* module 10 call 7 */ + CHECK_ERROR(_readMethod_democracy_fast_track_V1(c, &method->basic.democracy_fast_track_V1)) + break; + case 2568: /* module 10 call 8 */ + CHECK_ERROR(_readMethod_democracy_veto_external_V1(c, &method->basic.democracy_veto_external_V1)) + break; + case 2569: /* module 10 call 9 */ + CHECK_ERROR(_readMethod_democracy_cancel_referendum_V1(c, &method->basic.democracy_cancel_referendum_V1)) + break; + case 2570: /* module 10 call 10 */ + CHECK_ERROR(_readMethod_democracy_cancel_queued_V1(c, &method->basic.democracy_cancel_queued_V1)) + break; + case 2571: /* module 10 call 11 */ + CHECK_ERROR(_readMethod_democracy_delegate_V1(c, &method->basic.democracy_delegate_V1)) + break; + case 2572: /* module 10 call 12 */ + CHECK_ERROR(_readMethod_democracy_undelegate_V1(c, &method->basic.democracy_undelegate_V1)) + break; + case 2573: /* module 10 call 13 */ + CHECK_ERROR(_readMethod_democracy_clear_public_proposals_V1(c, &method->basic.democracy_clear_public_proposals_V1)) + break; + case 2574: /* module 10 call 14 */ + CHECK_ERROR(_readMethod_democracy_note_preimage_V1(c, &method->basic.democracy_note_preimage_V1)) + break; + case 2575: /* module 10 call 15 */ + CHECK_ERROR(_readMethod_democracy_note_preimage_operational_V1(c, &method->basic.democracy_note_preimage_operational_V1)) + break; + case 2576: /* module 10 call 16 */ + CHECK_ERROR(_readMethod_democracy_note_imminent_preimage_V1(c, &method->basic.democracy_note_imminent_preimage_V1)) + break; + case 2577: /* module 10 call 17 */ + CHECK_ERROR(_readMethod_democracy_note_imminent_preimage_operational_V1(c, &method->basic.democracy_note_imminent_preimage_operational_V1)) + break; + case 2578: /* module 10 call 18 */ + CHECK_ERROR(_readMethod_democracy_reap_preimage_V1(c, &method->basic.democracy_reap_preimage_V1)) + break; + case 2579: /* module 10 call 19 */ + CHECK_ERROR(_readMethod_democracy_unlock_V1(c, &method->basic.democracy_unlock_V1)) + break; + case 2580: /* module 10 call 20 */ + CHECK_ERROR(_readMethod_democracy_remove_vote_V1(c, &method->basic.democracy_remove_vote_V1)) + break; + case 2581: /* module 10 call 21 */ + CHECK_ERROR(_readMethod_democracy_remove_other_vote_V1(c, &method->basic.democracy_remove_other_vote_V1)) + break; + case 2582: /* module 10 call 22 */ + CHECK_ERROR(_readMethod_democracy_enact_proposal_V1(c, &method->basic.democracy_enact_proposal_V1)) + break; + case 2583: /* module 10 call 23 */ + CHECK_ERROR(_readMethod_democracy_blacklist_V1(c, &method->basic.democracy_blacklist_V1)) + break; + case 2584: /* module 10 call 24 */ + CHECK_ERROR(_readMethod_democracy_cancel_proposal_V1(c, &method->basic.democracy_cancel_proposal_V1)) + break; + case 2816: /* module 11 call 0 */ + CHECK_ERROR(_readMethod_council_set_members_V1(c, &method->basic.council_set_members_V1)) + break; + case 2817: /* module 11 call 1 */ + CHECK_ERROR(_readMethod_council_execute_V1(c, &method->basic.council_execute_V1)) + break; + case 2818: /* module 11 call 2 */ + CHECK_ERROR(_readMethod_council_propose_V1(c, &method->basic.council_propose_V1)) + break; + case 2819: /* module 11 call 3 */ + CHECK_ERROR(_readMethod_council_vote_V1(c, &method->basic.council_vote_V1)) + break; + case 2820: /* module 11 call 4 */ + CHECK_ERROR(_readMethod_council_close_V1(c, &method->basic.council_close_V1)) + break; + case 2821: /* module 11 call 5 */ + CHECK_ERROR(_readMethod_council_disapprove_proposal_V1(c, &method->basic.council_disapprove_proposal_V1)) + break; + case 3072: /* module 12 call 0 */ + CHECK_ERROR(_readMethod_elections_vote_V1(c, &method->basic.elections_vote_V1)) + break; + case 3073: /* module 12 call 1 */ + CHECK_ERROR(_readMethod_elections_remove_voter_V1(c, &method->basic.elections_remove_voter_V1)) + break; + case 3074: /* module 12 call 2 */ + CHECK_ERROR(_readMethod_elections_report_defunct_voter_V1(c, &method->basic.elections_report_defunct_voter_V1)) + break; + case 3075: /* module 12 call 3 */ + CHECK_ERROR(_readMethod_elections_submit_candidacy_V1(c, &method->basic.elections_submit_candidacy_V1)) + break; + case 3076: /* module 12 call 4 */ + CHECK_ERROR(_readMethod_elections_renounce_candidacy_V1(c, &method->basic.elections_renounce_candidacy_V1)) + break; + case 3077: /* module 12 call 5 */ + CHECK_ERROR(_readMethod_elections_remove_member_V1(c, &method->basic.elections_remove_member_V1)) + break; + case 3584: /* module 14 call 0 */ + CHECK_ERROR(_readMethod_grandpa_report_equivocation_V1(c, &method->basic.grandpa_report_equivocation_V1)) + break; + case 3585: /* module 14 call 1 */ + CHECK_ERROR(_readMethod_grandpa_report_equivocation_unsigned_V1(c, &method->basic.grandpa_report_equivocation_unsigned_V1)) + break; + case 3586: /* module 14 call 2 */ + CHECK_ERROR(_readMethod_grandpa_note_stalled_V1(c, &method->basic.grandpa_note_stalled_V1)) + break; + case 3840: /* module 15 call 0 */ + CHECK_ERROR(_readMethod_treasury_propose_spend_V1(c, &method->basic.treasury_propose_spend_V1)) + break; + case 3841: /* module 15 call 1 */ + CHECK_ERROR(_readMethod_treasury_reject_proposal_V1(c, &method->basic.treasury_reject_proposal_V1)) + break; + case 3842: /* module 15 call 2 */ + CHECK_ERROR(_readMethod_treasury_approve_proposal_V1(c, &method->basic.treasury_approve_proposal_V1)) + break; + case 4096: /* module 16 call 0 */ + CHECK_ERROR(_readMethod_contracts_update_schedule_V1(c, &method->basic.contracts_update_schedule_V1)) + break; + case 4097: /* module 16 call 1 */ + CHECK_ERROR(_readMethod_contracts_put_code_V1(c, &method->basic.contracts_put_code_V1)) + break; + case 4098: /* module 16 call 2 */ + CHECK_ERROR(_readMethod_contracts_call_V1(c, &method->basic.contracts_call_V1)) + break; + case 4099: /* module 16 call 3 */ + CHECK_ERROR(_readMethod_contracts_instantiate_V1(c, &method->basic.contracts_instantiate_V1)) + break; + case 4100: /* module 16 call 4 */ + CHECK_ERROR(_readMethod_contracts_claim_surcharge_V1(c, &method->basic.contracts_claim_surcharge_V1)) + break; + case 4352: /* module 17 call 0 */ + CHECK_ERROR(_readMethod_sudo_sudo_V1(c, &method->basic.sudo_sudo_V1)) + break; + case 4353: /* module 17 call 1 */ + CHECK_ERROR(_readMethod_sudo_sudo_unchecked_weight_V1(c, &method->basic.sudo_sudo_unchecked_weight_V1)) + break; + case 4354: /* module 17 call 2 */ + CHECK_ERROR(_readMethod_sudo_set_key_V1(c, &method->basic.sudo_set_key_V1)) + break; + case 4355: /* module 17 call 3 */ + CHECK_ERROR(_readMethod_sudo_sudo_as_V1(c, &method->basic.sudo_sudo_as_V1)) + break; + case 4608: /* module 18 call 0 */ + CHECK_ERROR(_readMethod_imonline_heartbeat_V1(c, &method->basic.imonline_heartbeat_V1)) + break; + case 5888: /* module 23 call 0 */ + CHECK_ERROR(_readMethod_identity_add_registrar_V1(c, &method->basic.identity_add_registrar_V1)) + break; + case 5889: /* module 23 call 1 */ + CHECK_ERROR(_readMethod_identity_set_identity_V1(c, &method->basic.identity_set_identity_V1)) + break; + case 5890: /* module 23 call 2 */ + CHECK_ERROR(_readMethod_identity_set_subs_V1(c, &method->basic.identity_set_subs_V1)) + break; + case 5891: /* module 23 call 3 */ + CHECK_ERROR(_readMethod_identity_clear_identity_V1(c, &method->basic.identity_clear_identity_V1)) + break; + case 5892: /* module 23 call 4 */ + CHECK_ERROR(_readMethod_identity_request_judgement_V1(c, &method->basic.identity_request_judgement_V1)) + break; + case 5893: /* module 23 call 5 */ + CHECK_ERROR(_readMethod_identity_cancel_request_V1(c, &method->basic.identity_cancel_request_V1)) + break; + case 5894: /* module 23 call 6 */ + CHECK_ERROR(_readMethod_identity_set_fee_V1(c, &method->basic.identity_set_fee_V1)) + break; + case 5895: /* module 23 call 7 */ + CHECK_ERROR(_readMethod_identity_set_account_id_V1(c, &method->basic.identity_set_account_id_V1)) + break; + case 5896: /* module 23 call 8 */ + CHECK_ERROR(_readMethod_identity_set_fields_V1(c, &method->basic.identity_set_fields_V1)) + break; + case 5897: /* module 23 call 9 */ + CHECK_ERROR(_readMethod_identity_provide_judgement_V1(c, &method->basic.identity_provide_judgement_V1)) + break; + case 5898: /* module 23 call 10 */ + CHECK_ERROR(_readMethod_identity_kill_identity_V1(c, &method->basic.identity_kill_identity_V1)) + break; + case 5899: /* module 23 call 11 */ + CHECK_ERROR(_readMethod_identity_add_sub_V1(c, &method->basic.identity_add_sub_V1)) + break; + case 5900: /* module 23 call 12 */ + CHECK_ERROR(_readMethod_identity_rename_sub_V1(c, &method->basic.identity_rename_sub_V1)) + break; + case 5901: /* module 23 call 13 */ + CHECK_ERROR(_readMethod_identity_remove_sub_V1(c, &method->basic.identity_remove_sub_V1)) + break; + case 5902: /* module 23 call 14 */ + CHECK_ERROR(_readMethod_identity_quit_sub_V1(c, &method->basic.identity_quit_sub_V1)) + break; + case 6144: /* module 24 call 0 */ + CHECK_ERROR(_readMethod_recovery_as_recovered_V1(c, &method->basic.recovery_as_recovered_V1)) + break; + case 6145: /* module 24 call 1 */ + CHECK_ERROR(_readMethod_recovery_set_recovered_V1(c, &method->basic.recovery_set_recovered_V1)) + break; + case 6146: /* module 24 call 2 */ + CHECK_ERROR(_readMethod_recovery_create_recovery_V1(c, &method->basic.recovery_create_recovery_V1)) + break; + case 6147: /* module 24 call 3 */ + CHECK_ERROR(_readMethod_recovery_initiate_recovery_V1(c, &method->basic.recovery_initiate_recovery_V1)) + break; + case 6148: /* module 24 call 4 */ + CHECK_ERROR(_readMethod_recovery_vouch_recovery_V1(c, &method->basic.recovery_vouch_recovery_V1)) + break; + case 6149: /* module 24 call 5 */ + CHECK_ERROR(_readMethod_recovery_claim_recovery_V1(c, &method->basic.recovery_claim_recovery_V1)) + break; + case 6150: /* module 24 call 6 */ + CHECK_ERROR(_readMethod_recovery_close_recovery_V1(c, &method->basic.recovery_close_recovery_V1)) + break; + case 6151: /* module 24 call 7 */ + CHECK_ERROR(_readMethod_recovery_remove_recovery_V1(c, &method->basic.recovery_remove_recovery_V1)) + break; + case 6152: /* module 24 call 8 */ + CHECK_ERROR(_readMethod_recovery_cancel_recovered_V1(c, &method->basic.recovery_cancel_recovered_V1)) + break; + case 6400: /* module 25 call 0 */ + CHECK_ERROR(_readMethod_vesting_vest_V1(c, &method->basic.vesting_vest_V1)) + break; + case 6401: /* module 25 call 1 */ + CHECK_ERROR(_readMethod_vesting_vest_other_V1(c, &method->basic.vesting_vest_other_V1)) + break; + case 6402: /* module 25 call 2 */ + CHECK_ERROR(_readMethod_vesting_vested_transfer_V1(c, &method->basic.vesting_vested_transfer_V1)) + break; + case 6403: /* module 25 call 3 */ + CHECK_ERROR(_readMethod_vesting_force_vested_transfer_V1(c, &method->basic.vesting_force_vested_transfer_V1)) + break; + case 6656: /* module 26 call 0 */ + CHECK_ERROR(_readMethod_scheduler_schedule_V1(c, &method->basic.scheduler_schedule_V1)) + break; + case 6657: /* module 26 call 1 */ + CHECK_ERROR(_readMethod_scheduler_cancel_V1(c, &method->basic.scheduler_cancel_V1)) + break; + case 6658: /* module 26 call 2 */ + CHECK_ERROR(_readMethod_scheduler_schedule_named_V1(c, &method->basic.scheduler_schedule_named_V1)) + break; + case 6659: /* module 26 call 3 */ + CHECK_ERROR(_readMethod_scheduler_cancel_named_V1(c, &method->basic.scheduler_cancel_named_V1)) + break; + case 6660: /* module 26 call 4 */ + CHECK_ERROR(_readMethod_scheduler_schedule_after_V1(c, &method->basic.scheduler_schedule_after_V1)) + break; + case 6661: /* module 26 call 5 */ + CHECK_ERROR(_readMethod_scheduler_schedule_named_after_V1(c, &method->basic.scheduler_schedule_named_after_V1)) + break; + case 6912: /* module 27 call 0 */ + CHECK_ERROR(_readMethod_proxy_proxy_V1(c, &method->basic.proxy_proxy_V1)) + break; + case 6913: /* module 27 call 1 */ + CHECK_ERROR(_readMethod_proxy_add_proxy_V1(c, &method->basic.proxy_add_proxy_V1)) + break; + case 6914: /* module 27 call 2 */ + CHECK_ERROR(_readMethod_proxy_remove_proxy_V1(c, &method->basic.proxy_remove_proxy_V1)) + break; + case 6915: /* module 27 call 3 */ + CHECK_ERROR(_readMethod_proxy_remove_proxies_V1(c, &method->basic.proxy_remove_proxies_V1)) + break; + case 6916: /* module 27 call 4 */ + CHECK_ERROR(_readMethod_proxy_anonymous_V1(c, &method->basic.proxy_anonymous_V1)) + break; + case 6917: /* module 27 call 5 */ + CHECK_ERROR(_readMethod_proxy_kill_anonymous_V1(c, &method->basic.proxy_kill_anonymous_V1)) + break; + case 6918: /* module 27 call 6 */ + CHECK_ERROR(_readMethod_proxy_announce_V1(c, &method->basic.proxy_announce_V1)) + break; + case 6919: /* module 27 call 7 */ + CHECK_ERROR(_readMethod_proxy_remove_announcement_V1(c, &method->basic.proxy_remove_announcement_V1)) + break; + case 6920: /* module 27 call 8 */ + CHECK_ERROR(_readMethod_proxy_reject_announcement_V1(c, &method->basic.proxy_reject_announcement_V1)) + break; + case 6921: /* module 27 call 9 */ + CHECK_ERROR(_readMethod_proxy_proxy_announced_V1(c, &method->basic.proxy_proxy_announced_V1)) + break; + case 7168: /* module 28 call 0 */ + CHECK_ERROR(_readMethod_multisig_as_multi_threshold_1_V1(c, &method->basic.multisig_as_multi_threshold_1_V1)) + break; + case 7169: /* module 28 call 1 */ + CHECK_ERROR(_readMethod_multisig_as_multi_V1(c, &method->basic.multisig_as_multi_V1)) + break; + case 7170: /* module 28 call 2 */ + CHECK_ERROR(_readMethod_multisig_approve_as_multi_V1(c, &method->basic.multisig_approve_as_multi_V1)) + break; + case 7171: /* module 28 call 3 */ + CHECK_ERROR(_readMethod_multisig_cancel_as_multi_V1(c, &method->basic.multisig_cancel_as_multi_V1)) + break; + case 7424: /* module 29 call 0 */ + CHECK_ERROR(_readMethod_assets_create_V1(c, &method->basic.assets_create_V1)) + break; + case 7425: /* module 29 call 1 */ + CHECK_ERROR(_readMethod_assets_force_create_V1(c, &method->basic.assets_force_create_V1)) + break; + case 7426: /* module 29 call 2 */ + CHECK_ERROR(_readMethod_assets_destroy_V1(c, &method->basic.assets_destroy_V1)) + break; + case 7427: /* module 29 call 3 */ + CHECK_ERROR(_readMethod_assets_force_destroy_V1(c, &method->basic.assets_force_destroy_V1)) + break; + case 7428: /* module 29 call 4 */ + CHECK_ERROR(_readMethod_assets_mint_V1(c, &method->basic.assets_mint_V1)) + break; + case 7429: /* module 29 call 5 */ + CHECK_ERROR(_readMethod_assets_burn_V1(c, &method->basic.assets_burn_V1)) + break; + case 7430: /* module 29 call 6 */ + CHECK_ERROR(_readMethod_assets_transfer_V1(c, &method->basic.assets_transfer_V1)) + break; + case 7431: /* module 29 call 7 */ + CHECK_ERROR(_readMethod_assets_force_transfer_V1(c, &method->basic.assets_force_transfer_V1)) + break; + case 7432: /* module 29 call 8 */ + CHECK_ERROR(_readMethod_assets_freeze_V1(c, &method->basic.assets_freeze_V1)) + break; + case 7433: /* module 29 call 9 */ + CHECK_ERROR(_readMethod_assets_thaw_V1(c, &method->basic.assets_thaw_V1)) + break; + case 7434: /* module 29 call 10 */ + CHECK_ERROR(_readMethod_assets_transfer_ownership_V1(c, &method->basic.assets_transfer_ownership_V1)) + break; + case 7435: /* module 29 call 11 */ + CHECK_ERROR(_readMethod_assets_set_team_V1(c, &method->basic.assets_set_team_V1)) + break; + case 7436: /* module 29 call 12 */ + CHECK_ERROR(_readMethod_assets_set_max_zombies_V1(c, &method->basic.assets_set_max_zombies_V1)) + break; + case 8192: /* module 32 call 0 */ + CHECK_ERROR(_readMethod_treasuryreward_set_current_payout_V1(c, &method->basic.treasuryreward_set_current_payout_V1)) + break; + case 8193: /* module 32 call 1 */ + CHECK_ERROR(_readMethod_treasuryreward_set_minting_interval_V1(c, &method->basic.treasuryreward_set_minting_interval_V1)) + break; + case 8448: /* module 33 call 0 */ + CHECK_ERROR(_readMethod_ethereum_transact_V1(c, &method->basic.ethereum_transact_V1)) + break; + case 8704: /* module 34 call 0 */ + CHECK_ERROR(_readMethod_evm_withdraw_V1(c, &method->basic.evm_withdraw_V1)) + break; + case 8705: /* module 34 call 1 */ + CHECK_ERROR(_readMethod_evm_call_V1(c, &method->basic.evm_call_V1)) + break; + case 8706: /* module 34 call 2 */ + CHECK_ERROR(_readMethod_evm_create_V1(c, &method->basic.evm_create_V1)) + break; + case 8707: /* module 34 call 3 */ + CHECK_ERROR(_readMethod_evm_create2_V1(c, &method->basic.evm_create2_V1)) + break; + case 8960: /* module 35 call 0 */ + CHECK_ERROR(_readMethod_chainbridge_set_threshold_V1(c, &method->basic.chainbridge_set_threshold_V1)) + break; + case 8961: /* module 35 call 1 */ + CHECK_ERROR(_readMethod_chainbridge_set_resource_V1(c, &method->basic.chainbridge_set_resource_V1)) + break; + case 8962: /* module 35 call 2 */ + CHECK_ERROR(_readMethod_chainbridge_remove_resource_V1(c, &method->basic.chainbridge_remove_resource_V1)) + break; + case 8963: /* module 35 call 3 */ + CHECK_ERROR(_readMethod_chainbridge_whitelist_chain_V1(c, &method->basic.chainbridge_whitelist_chain_V1)) + break; + case 8964: /* module 35 call 4 */ + CHECK_ERROR(_readMethod_chainbridge_add_relayer_V1(c, &method->basic.chainbridge_add_relayer_V1)) + break; + case 8965: /* module 35 call 5 */ + CHECK_ERROR(_readMethod_chainbridge_remove_relayer_V1(c, &method->basic.chainbridge_remove_relayer_V1)) + break; + case 8966: /* module 35 call 6 */ + CHECK_ERROR(_readMethod_chainbridge_acknowledge_proposal_V1(c, &method->basic.chainbridge_acknowledge_proposal_V1)) + break; + case 8967: /* module 35 call 7 */ + CHECK_ERROR(_readMethod_chainbridge_reject_proposal_V1(c, &method->basic.chainbridge_reject_proposal_V1)) + break; + case 8968: /* module 35 call 8 */ + CHECK_ERROR(_readMethod_chainbridge_eval_vote_state_V1(c, &method->basic.chainbridge_eval_vote_state_V1)) + break; + case 9216: /* module 36 call 0 */ + CHECK_ERROR(_readMethod_edgebridge_transfer_native_V1(c, &method->basic.edgebridge_transfer_native_V1)) + break; + case 9217: /* module 36 call 1 */ + CHECK_ERROR(_readMethod_edgebridge_transfer_V1(c, &method->basic.edgebridge_transfer_V1)) + break; + case 9472: /* module 37 call 0 */ + CHECK_ERROR(_readMethod_bounties_propose_bounty_V1(c, &method->basic.bounties_propose_bounty_V1)) + break; + case 9473: /* module 37 call 1 */ + CHECK_ERROR(_readMethod_bounties_approve_bounty_V1(c, &method->basic.bounties_approve_bounty_V1)) + break; + case 9474: /* module 37 call 2 */ + CHECK_ERROR(_readMethod_bounties_propose_curator_V1(c, &method->basic.bounties_propose_curator_V1)) + break; + case 9475: /* module 37 call 3 */ + CHECK_ERROR(_readMethod_bounties_unassign_curator_V1(c, &method->basic.bounties_unassign_curator_V1)) + break; + case 9476: /* module 37 call 4 */ + CHECK_ERROR(_readMethod_bounties_accept_curator_V1(c, &method->basic.bounties_accept_curator_V1)) + break; + case 9477: /* module 37 call 5 */ + CHECK_ERROR(_readMethod_bounties_award_bounty_V1(c, &method->basic.bounties_award_bounty_V1)) + break; + case 9478: /* module 37 call 6 */ + CHECK_ERROR(_readMethod_bounties_claim_bounty_V1(c, &method->basic.bounties_claim_bounty_V1)) + break; + case 9479: /* module 37 call 7 */ + CHECK_ERROR(_readMethod_bounties_close_bounty_V1(c, &method->basic.bounties_close_bounty_V1)) + break; + case 9480: /* module 37 call 8 */ + CHECK_ERROR(_readMethod_bounties_extend_bounty_expiry_V1(c, &method->basic.bounties_extend_bounty_expiry_V1)) + break; + case 9728: /* module 38 call 0 */ + CHECK_ERROR(_readMethod_tips_report_awesome_V1(c, &method->basic.tips_report_awesome_V1)) + break; + case 9729: /* module 38 call 1 */ + CHECK_ERROR(_readMethod_tips_retract_tip_V1(c, &method->basic.tips_retract_tip_V1)) + break; + case 9730: /* module 38 call 2 */ + CHECK_ERROR(_readMethod_tips_tip_new_V1(c, &method->basic.tips_tip_new_V1)) + break; + case 9731: /* module 38 call 3 */ + CHECK_ERROR(_readMethod_tips_tip_V1(c, &method->basic.tips_tip_V1)) + break; + case 9732: /* module 38 call 4 */ + CHECK_ERROR(_readMethod_tips_close_tip_V1(c, &method->basic.tips_close_tip_V1)) + break; + case 9733: /* module 38 call 5 */ + CHECK_ERROR(_readMethod_tips_slash_tip_V1(c, &method->basic.tips_slash_tip_V1)) + break; +#endif + default: + return parser_not_supported; + } + + return parser_ok; +} + +///////////////////////////////////////////////////////////////////////////////// +///////////////////////////////////////////////////////////////////////////////// +///////////////////////////////////////////////////////////////////////////////// +///////////////////////////////////////////////////////////////////////////////// + +const char* _getMethod_ModuleName_V1(uint8_t moduleIdx) +{ + switch (moduleIdx) { + case 1: + return STR_MO_UTILITY; + case 6: + return STR_MO_BALANCES; + case 8: + return STR_MO_STAKING; + case 9: + return STR_MO_SESSION; +#ifdef SUBSTRATE_PARSER_FULL + case 0: + return STR_MO_SYSTEM; + case 3: + return STR_MO_TIMESTAMP; + case 4: + return STR_MO_AUTHORSHIP; + case 5: + return STR_MO_INDICES; + case 10: + return STR_MO_DEMOCRACY; + case 11: + return STR_MO_COUNCIL; + case 12: + return STR_MO_ELECTIONS; + case 14: + return STR_MO_GRANDPA; + case 15: + return STR_MO_TREASURY; + case 16: + return STR_MO_CONTRACTS; + case 17: + return STR_MO_SUDO; + case 18: + return STR_MO_IMONLINE; + case 19: + return STR_MO_AUTHORITYDISCOVERY; + case 20: + return STR_MO_OFFENCES; + case 22: + return STR_MO_RANDOMNESSCOLLECTIVEFLIP; + case 23: + return STR_MO_IDENTITY; + case 24: + return STR_MO_RECOVERY; + case 25: + return STR_MO_VESTING; + case 26: + return STR_MO_SCHEDULER; + case 27: + return STR_MO_PROXY; + case 28: + return STR_MO_MULTISIG; + case 29: + return STR_MO_ASSETS; + case 32: + return STR_MO_TREASURYREWARD; + case 33: + return STR_MO_ETHEREUM; + case 34: + return STR_MO_EVM; + case 35: + return STR_MO_CHAINBRIDGE; + case 36: + return STR_MO_EDGEBRIDGE; + case 37: + return STR_MO_BOUNTIES; + case 38: + return STR_MO_TIPS; +#endif + default: + return NULL; + } + + return NULL; +} + +const char* _getMethod_Name_V1(uint8_t moduleIdx, uint8_t callIdx) +{ + uint16_t callPrivIdx = ((uint16_t)moduleIdx << 8u) + callIdx; + + switch (callPrivIdx) { + case 256: /* module 1 call 0 */ + return STR_ME_BATCH; + case 258: /* module 1 call 2 */ + return STR_ME_BATCH_ALL; + case 1536: /* module 6 call 0 */ + return STR_ME_TRANSFER; + case 1539: /* module 6 call 3 */ + return STR_ME_TRANSFER_KEEP_ALIVE; + case 2048: /* module 8 call 0 */ + return STR_ME_BOND; + case 2049: /* module 8 call 1 */ + return STR_ME_BOND_EXTRA; + case 2050: /* module 8 call 2 */ + return STR_ME_UNBOND; + case 2051: /* module 8 call 3 */ + return STR_ME_WITHDRAW_UNBONDED; + case 2052: /* module 8 call 4 */ + return STR_ME_VALIDATE; + case 2053: /* module 8 call 5 */ + return STR_ME_NOMINATE; + case 2054: /* module 8 call 6 */ + return STR_ME_CHILL; + case 2055: /* module 8 call 7 */ + return STR_ME_SET_PAYEE; + case 2066: /* module 8 call 18 */ + return STR_ME_PAYOUT_STAKERS; + case 2067: /* module 8 call 19 */ + return STR_ME_REBOND; + case 2304: /* module 9 call 0 */ + return STR_ME_SET_KEYS; + case 2305: /* module 9 call 1 */ + return STR_ME_PURGE_KEYS; +#ifdef SUBSTRATE_PARSER_FULL + case 0: /* module 0 call 0 */ + return STR_ME_FILL_BLOCK; + case 1: /* module 0 call 1 */ + return STR_ME_REMARK; + case 2: /* module 0 call 2 */ + return STR_ME_SET_HEAP_PAGES; + case 3: /* module 0 call 3 */ + return STR_ME_SET_CODE; + case 4: /* module 0 call 4 */ + return STR_ME_SET_CODE_WITHOUT_CHECKS; + case 5: /* module 0 call 5 */ + return STR_ME_SET_CHANGES_TRIE_CONFIG; + case 6: /* module 0 call 6 */ + return STR_ME_SET_STORAGE; + case 7: /* module 0 call 7 */ + return STR_ME_KILL_STORAGE; + case 8: /* module 0 call 8 */ + return STR_ME_KILL_PREFIX; + case 9: /* module 0 call 9 */ + return STR_ME_SUICIDE; + case 257: /* module 1 call 1 */ + return STR_ME_AS_DERIVATIVE; + case 768: /* module 3 call 0 */ + return STR_ME_SET; + case 1024: /* module 4 call 0 */ + return STR_ME_SET_UNCLES; + case 1280: /* module 5 call 0 */ + return STR_ME_CLAIM; + case 1281: /* module 5 call 1 */ + return STR_ME_TRANSFER; + case 1282: /* module 5 call 2 */ + return STR_ME_FREE; + case 1283: /* module 5 call 3 */ + return STR_ME_FORCE_TRANSFER; + case 1284: /* module 5 call 4 */ + return STR_ME_FREEZE; + case 1537: /* module 6 call 1 */ + return STR_ME_SET_BALANCE; + case 1538: /* module 6 call 2 */ + return STR_ME_FORCE_TRANSFER; + case 2056: /* module 8 call 8 */ + return STR_ME_SET_CONTROLLER; + case 2057: /* module 8 call 9 */ + return STR_ME_SET_VALIDATOR_COUNT; + case 2058: /* module 8 call 10 */ + return STR_ME_INCREASE_VALIDATOR_COUNT; + case 2059: /* module 8 call 11 */ + return STR_ME_SCALE_VALIDATOR_COUNT; + case 2060: /* module 8 call 12 */ + return STR_ME_FORCE_NO_ERAS; + case 2061: /* module 8 call 13 */ + return STR_ME_FORCE_NEW_ERA; + case 2062: /* module 8 call 14 */ + return STR_ME_SET_INVULNERABLES; + case 2063: /* module 8 call 15 */ + return STR_ME_FORCE_UNSTAKE; + case 2064: /* module 8 call 16 */ + return STR_ME_FORCE_NEW_ERA_ALWAYS; + case 2065: /* module 8 call 17 */ + return STR_ME_CANCEL_DEFERRED_SLASH; + case 2068: /* module 8 call 20 */ + return STR_ME_SET_HISTORY_DEPTH; + case 2069: /* module 8 call 21 */ + return STR_ME_REAP_STASH; + case 2070: /* module 8 call 22 */ + return STR_ME_SUBMIT_ELECTION_SOLUTION; + case 2071: /* module 8 call 23 */ + return STR_ME_SUBMIT_ELECTION_SOLUTION_UNSIGNED; + case 2560: /* module 10 call 0 */ + return STR_ME_PROPOSE; + case 2561: /* module 10 call 1 */ + return STR_ME_SECOND; + case 2562: /* module 10 call 2 */ + return STR_ME_VOTE; + case 2563: /* module 10 call 3 */ + return STR_ME_EMERGENCY_CANCEL; + case 2564: /* module 10 call 4 */ + return STR_ME_EXTERNAL_PROPOSE; + case 2565: /* module 10 call 5 */ + return STR_ME_EXTERNAL_PROPOSE_MAJORITY; + case 2566: /* module 10 call 6 */ + return STR_ME_EXTERNAL_PROPOSE_DEFAULT; + case 2567: /* module 10 call 7 */ + return STR_ME_FAST_TRACK; + case 2568: /* module 10 call 8 */ + return STR_ME_VETO_EXTERNAL; + case 2569: /* module 10 call 9 */ + return STR_ME_CANCEL_REFERENDUM; + case 2570: /* module 10 call 10 */ + return STR_ME_CANCEL_QUEUED; + case 2571: /* module 10 call 11 */ + return STR_ME_DELEGATE; + case 2572: /* module 10 call 12 */ + return STR_ME_UNDELEGATE; + case 2573: /* module 10 call 13 */ + return STR_ME_CLEAR_PUBLIC_PROPOSALS; + case 2574: /* module 10 call 14 */ + return STR_ME_NOTE_PREIMAGE; + case 2575: /* module 10 call 15 */ + return STR_ME_NOTE_PREIMAGE_OPERATIONAL; + case 2576: /* module 10 call 16 */ + return STR_ME_NOTE_IMMINENT_PREIMAGE; + case 2577: /* module 10 call 17 */ + return STR_ME_NOTE_IMMINENT_PREIMAGE_OPERATIONAL; + case 2578: /* module 10 call 18 */ + return STR_ME_REAP_PREIMAGE; + case 2579: /* module 10 call 19 */ + return STR_ME_UNLOCK; + case 2580: /* module 10 call 20 */ + return STR_ME_REMOVE_VOTE; + case 2581: /* module 10 call 21 */ + return STR_ME_REMOVE_OTHER_VOTE; + case 2582: /* module 10 call 22 */ + return STR_ME_ENACT_PROPOSAL; + case 2583: /* module 10 call 23 */ + return STR_ME_BLACKLIST; + case 2584: /* module 10 call 24 */ + return STR_ME_CANCEL_PROPOSAL; + case 2816: /* module 11 call 0 */ + return STR_ME_SET_MEMBERS; + case 2817: /* module 11 call 1 */ + return STR_ME_EXECUTE; + case 2818: /* module 11 call 2 */ + return STR_ME_PROPOSE; + case 2819: /* module 11 call 3 */ + return STR_ME_VOTE; + case 2820: /* module 11 call 4 */ + return STR_ME_CLOSE; + case 2821: /* module 11 call 5 */ + return STR_ME_DISAPPROVE_PROPOSAL; + case 3072: /* module 12 call 0 */ + return STR_ME_VOTE; + case 3073: /* module 12 call 1 */ + return STR_ME_REMOVE_VOTER; + case 3074: /* module 12 call 2 */ + return STR_ME_REPORT_DEFUNCT_VOTER; + case 3075: /* module 12 call 3 */ + return STR_ME_SUBMIT_CANDIDACY; + case 3076: /* module 12 call 4 */ + return STR_ME_RENOUNCE_CANDIDACY; + case 3077: /* module 12 call 5 */ + return STR_ME_REMOVE_MEMBER; + case 3584: /* module 14 call 0 */ + return STR_ME_REPORT_EQUIVOCATION; + case 3585: /* module 14 call 1 */ + return STR_ME_REPORT_EQUIVOCATION_UNSIGNED; + case 3586: /* module 14 call 2 */ + return STR_ME_NOTE_STALLED; + case 3840: /* module 15 call 0 */ + return STR_ME_PROPOSE_SPEND; + case 3841: /* module 15 call 1 */ + return STR_ME_REJECT_PROPOSAL; + case 3842: /* module 15 call 2 */ + return STR_ME_APPROVE_PROPOSAL; + case 4096: /* module 16 call 0 */ + return STR_ME_UPDATE_SCHEDULE; + case 4097: /* module 16 call 1 */ + return STR_ME_PUT_CODE; + case 4098: /* module 16 call 2 */ + return STR_ME_CALL; + case 4099: /* module 16 call 3 */ + return STR_ME_INSTANTIATE; + case 4100: /* module 16 call 4 */ + return STR_ME_CLAIM_SURCHARGE; + case 4352: /* module 17 call 0 */ + return STR_ME_SUDO; + case 4353: /* module 17 call 1 */ + return STR_ME_SUDO_UNCHECKED_WEIGHT; + case 4354: /* module 17 call 2 */ + return STR_ME_SET_KEY; + case 4355: /* module 17 call 3 */ + return STR_ME_SUDO_AS; + case 4608: /* module 18 call 0 */ + return STR_ME_HEARTBEAT; + case 5888: /* module 23 call 0 */ + return STR_ME_ADD_REGISTRAR; + case 5889: /* module 23 call 1 */ + return STR_ME_SET_IDENTITY; + case 5890: /* module 23 call 2 */ + return STR_ME_SET_SUBS; + case 5891: /* module 23 call 3 */ + return STR_ME_CLEAR_IDENTITY; + case 5892: /* module 23 call 4 */ + return STR_ME_REQUEST_JUDGEMENT; + case 5893: /* module 23 call 5 */ + return STR_ME_CANCEL_REQUEST; + case 5894: /* module 23 call 6 */ + return STR_ME_SET_FEE; + case 5895: /* module 23 call 7 */ + return STR_ME_SET_ACCOUNT_ID; + case 5896: /* module 23 call 8 */ + return STR_ME_SET_FIELDS; + case 5897: /* module 23 call 9 */ + return STR_ME_PROVIDE_JUDGEMENT; + case 5898: /* module 23 call 10 */ + return STR_ME_KILL_IDENTITY; + case 5899: /* module 23 call 11 */ + return STR_ME_ADD_SUB; + case 5900: /* module 23 call 12 */ + return STR_ME_RENAME_SUB; + case 5901: /* module 23 call 13 */ + return STR_ME_REMOVE_SUB; + case 5902: /* module 23 call 14 */ + return STR_ME_QUIT_SUB; + case 6144: /* module 24 call 0 */ + return STR_ME_AS_RECOVERED; + case 6145: /* module 24 call 1 */ + return STR_ME_SET_RECOVERED; + case 6146: /* module 24 call 2 */ + return STR_ME_CREATE_RECOVERY; + case 6147: /* module 24 call 3 */ + return STR_ME_INITIATE_RECOVERY; + case 6148: /* module 24 call 4 */ + return STR_ME_VOUCH_RECOVERY; + case 6149: /* module 24 call 5 */ + return STR_ME_CLAIM_RECOVERY; + case 6150: /* module 24 call 6 */ + return STR_ME_CLOSE_RECOVERY; + case 6151: /* module 24 call 7 */ + return STR_ME_REMOVE_RECOVERY; + case 6152: /* module 24 call 8 */ + return STR_ME_CANCEL_RECOVERED; + case 6400: /* module 25 call 0 */ + return STR_ME_VEST; + case 6401: /* module 25 call 1 */ + return STR_ME_VEST_OTHER; + case 6402: /* module 25 call 2 */ + return STR_ME_VESTED_TRANSFER; + case 6403: /* module 25 call 3 */ + return STR_ME_FORCE_VESTED_TRANSFER; + case 6656: /* module 26 call 0 */ + return STR_ME_SCHEDULE; + case 6657: /* module 26 call 1 */ + return STR_ME_CANCEL; + case 6658: /* module 26 call 2 */ + return STR_ME_SCHEDULE_NAMED; + case 6659: /* module 26 call 3 */ + return STR_ME_CANCEL_NAMED; + case 6660: /* module 26 call 4 */ + return STR_ME_SCHEDULE_AFTER; + case 6661: /* module 26 call 5 */ + return STR_ME_SCHEDULE_NAMED_AFTER; + case 6912: /* module 27 call 0 */ + return STR_ME_PROXY; + case 6913: /* module 27 call 1 */ + return STR_ME_ADD_PROXY; + case 6914: /* module 27 call 2 */ + return STR_ME_REMOVE_PROXY; + case 6915: /* module 27 call 3 */ + return STR_ME_REMOVE_PROXIES; + case 6916: /* module 27 call 4 */ + return STR_ME_ANONYMOUS; + case 6917: /* module 27 call 5 */ + return STR_ME_KILL_ANONYMOUS; + case 6918: /* module 27 call 6 */ + return STR_ME_ANNOUNCE; + case 6919: /* module 27 call 7 */ + return STR_ME_REMOVE_ANNOUNCEMENT; + case 6920: /* module 27 call 8 */ + return STR_ME_REJECT_ANNOUNCEMENT; + case 6921: /* module 27 call 9 */ + return STR_ME_PROXY_ANNOUNCED; + case 7168: /* module 28 call 0 */ + return STR_ME_AS_MULTI_THRESHOLD_1; + case 7169: /* module 28 call 1 */ + return STR_ME_AS_MULTI; + case 7170: /* module 28 call 2 */ + return STR_ME_APPROVE_AS_MULTI; + case 7171: /* module 28 call 3 */ + return STR_ME_CANCEL_AS_MULTI; + case 7424: /* module 29 call 0 */ + return STR_ME_CREATE; + case 7425: /* module 29 call 1 */ + return STR_ME_FORCE_CREATE; + case 7426: /* module 29 call 2 */ + return STR_ME_DESTROY; + case 7427: /* module 29 call 3 */ + return STR_ME_FORCE_DESTROY; + case 7428: /* module 29 call 4 */ + return STR_ME_MINT; + case 7429: /* module 29 call 5 */ + return STR_ME_BURN; + case 7430: /* module 29 call 6 */ + return STR_ME_TRANSFER; + case 7431: /* module 29 call 7 */ + return STR_ME_FORCE_TRANSFER; + case 7432: /* module 29 call 8 */ + return STR_ME_FREEZE; + case 7433: /* module 29 call 9 */ + return STR_ME_THAW; + case 7434: /* module 29 call 10 */ + return STR_ME_TRANSFER_OWNERSHIP; + case 7435: /* module 29 call 11 */ + return STR_ME_SET_TEAM; + case 7436: /* module 29 call 12 */ + return STR_ME_SET_MAX_ZOMBIES; + case 8192: /* module 32 call 0 */ + return STR_ME_SET_CURRENT_PAYOUT; + case 8193: /* module 32 call 1 */ + return STR_ME_SET_MINTING_INTERVAL; + case 8448: /* module 33 call 0 */ + return STR_ME_TRANSACT; + case 8704: /* module 34 call 0 */ + return STR_ME_WITHDRAW; + case 8705: /* module 34 call 1 */ + return STR_ME_CALL; + case 8706: /* module 34 call 2 */ + return STR_ME_CREATE; + case 8707: /* module 34 call 3 */ + return STR_ME_CREATE2; + case 8960: /* module 35 call 0 */ + return STR_ME_SET_THRESHOLD; + case 8961: /* module 35 call 1 */ + return STR_ME_SET_RESOURCE; + case 8962: /* module 35 call 2 */ + return STR_ME_REMOVE_RESOURCE; + case 8963: /* module 35 call 3 */ + return STR_ME_WHITELIST_CHAIN; + case 8964: /* module 35 call 4 */ + return STR_ME_ADD_RELAYER; + case 8965: /* module 35 call 5 */ + return STR_ME_REMOVE_RELAYER; + case 8966: /* module 35 call 6 */ + return STR_ME_ACKNOWLEDGE_PROPOSAL; + case 8967: /* module 35 call 7 */ + return STR_ME_REJECT_PROPOSAL; + case 8968: /* module 35 call 8 */ + return STR_ME_EVAL_VOTE_STATE; + case 9216: /* module 36 call 0 */ + return STR_ME_TRANSFER_NATIVE; + case 9217: /* module 36 call 1 */ + return STR_ME_TRANSFER; + case 9472: /* module 37 call 0 */ + return STR_ME_PROPOSE_BOUNTY; + case 9473: /* module 37 call 1 */ + return STR_ME_APPROVE_BOUNTY; + case 9474: /* module 37 call 2 */ + return STR_ME_PROPOSE_CURATOR; + case 9475: /* module 37 call 3 */ + return STR_ME_UNASSIGN_CURATOR; + case 9476: /* module 37 call 4 */ + return STR_ME_ACCEPT_CURATOR; + case 9477: /* module 37 call 5 */ + return STR_ME_AWARD_BOUNTY; + case 9478: /* module 37 call 6 */ + return STR_ME_CLAIM_BOUNTY; + case 9479: /* module 37 call 7 */ + return STR_ME_CLOSE_BOUNTY; + case 9480: /* module 37 call 8 */ + return STR_ME_EXTEND_BOUNTY_EXPIRY; + case 9728: /* module 38 call 0 */ + return STR_ME_REPORT_AWESOME; + case 9729: /* module 38 call 1 */ + return STR_ME_RETRACT_TIP; + case 9730: /* module 38 call 2 */ + return STR_ME_TIP_NEW; + case 9731: /* module 38 call 3 */ + return STR_ME_TIP; + case 9732: /* module 38 call 4 */ + return STR_ME_CLOSE_TIP; + case 9733: /* module 38 call 5 */ + return STR_ME_SLASH_TIP; +#endif + default: + return NULL; + } + + return NULL; +} + +uint8_t _getMethod_NumItems_V1(uint8_t moduleIdx, uint8_t callIdx) +{ + uint16_t callPrivIdx = ((uint16_t)moduleIdx << 8u) + callIdx; + + switch (callPrivIdx) { + case 256: /* module 1 call 0 */ + return 1; + case 258: /* module 1 call 2 */ + return 1; + case 1536: /* module 6 call 0 */ + return 2; + case 1539: /* module 6 call 3 */ + return 2; + case 2048: /* module 8 call 0 */ + return 3; + case 2049: /* module 8 call 1 */ + return 1; + case 2050: /* module 8 call 2 */ + return 1; + case 2051: /* module 8 call 3 */ + return 1; + case 2052: /* module 8 call 4 */ + return 1; + case 2053: /* module 8 call 5 */ + return 1; + case 2054: /* module 8 call 6 */ + return 0; + case 2055: /* module 8 call 7 */ + return 1; + case 2066: /* module 8 call 18 */ + return 2; + case 2067: /* module 8 call 19 */ + return 1; + case 2304: /* module 9 call 0 */ + return 2; + case 2305: /* module 9 call 1 */ + return 0; +#ifdef SUBSTRATE_PARSER_FULL + case 0: /* module 0 call 0 */ + return 1; + case 1: /* module 0 call 1 */ + return 1; + case 2: /* module 0 call 2 */ + return 1; + case 3: /* module 0 call 3 */ + return 1; + case 4: /* module 0 call 4 */ + return 1; + case 5: /* module 0 call 5 */ + return 1; + case 6: /* module 0 call 6 */ + return 1; + case 7: /* module 0 call 7 */ + return 1; + case 8: /* module 0 call 8 */ + return 2; + case 9: /* module 0 call 9 */ + return 0; + case 257: /* module 1 call 1 */ + return 2; + case 768: /* module 3 call 0 */ + return 1; + case 1024: /* module 4 call 0 */ + return 1; + case 1280: /* module 5 call 0 */ + return 1; + case 1281: /* module 5 call 1 */ + return 2; + case 1282: /* module 5 call 2 */ + return 1; + case 1283: /* module 5 call 3 */ + return 3; + case 1284: /* module 5 call 4 */ + return 1; + case 1537: /* module 6 call 1 */ + return 3; + case 1538: /* module 6 call 2 */ + return 3; + case 2056: /* module 8 call 8 */ + return 1; + case 2057: /* module 8 call 9 */ + return 1; + case 2058: /* module 8 call 10 */ + return 1; + case 2059: /* module 8 call 11 */ + return 1; + case 2060: /* module 8 call 12 */ + return 0; + case 2061: /* module 8 call 13 */ + return 0; + case 2062: /* module 8 call 14 */ + return 1; + case 2063: /* module 8 call 15 */ + return 2; + case 2064: /* module 8 call 16 */ + return 0; + case 2065: /* module 8 call 17 */ + return 2; + case 2068: /* module 8 call 20 */ + return 2; + case 2069: /* module 8 call 21 */ + return 2; + case 2070: /* module 8 call 22 */ + return 5; + case 2071: /* module 8 call 23 */ + return 5; + case 2560: /* module 10 call 0 */ + return 2; + case 2561: /* module 10 call 1 */ + return 2; + case 2562: /* module 10 call 2 */ + return 2; + case 2563: /* module 10 call 3 */ + return 1; + case 2564: /* module 10 call 4 */ + return 1; + case 2565: /* module 10 call 5 */ + return 1; + case 2566: /* module 10 call 6 */ + return 1; + case 2567: /* module 10 call 7 */ + return 3; + case 2568: /* module 10 call 8 */ + return 1; + case 2569: /* module 10 call 9 */ + return 1; + case 2570: /* module 10 call 10 */ + return 1; + case 2571: /* module 10 call 11 */ + return 3; + case 2572: /* module 10 call 12 */ + return 0; + case 2573: /* module 10 call 13 */ + return 0; + case 2574: /* module 10 call 14 */ + return 1; + case 2575: /* module 10 call 15 */ + return 1; + case 2576: /* module 10 call 16 */ + return 1; + case 2577: /* module 10 call 17 */ + return 1; + case 2578: /* module 10 call 18 */ + return 2; + case 2579: /* module 10 call 19 */ + return 1; + case 2580: /* module 10 call 20 */ + return 1; + case 2581: /* module 10 call 21 */ + return 2; + case 2582: /* module 10 call 22 */ + return 2; + case 2583: /* module 10 call 23 */ + return 2; + case 2584: /* module 10 call 24 */ + return 1; + case 2816: /* module 11 call 0 */ + return 3; + case 2817: /* module 11 call 1 */ + return 2; + case 2818: /* module 11 call 2 */ + return 3; + case 2819: /* module 11 call 3 */ + return 3; + case 2820: /* module 11 call 4 */ + return 4; + case 2821: /* module 11 call 5 */ + return 1; + case 3072: /* module 12 call 0 */ + return 2; + case 3073: /* module 12 call 1 */ + return 0; + case 3074: /* module 12 call 2 */ + return 1; + case 3075: /* module 12 call 3 */ + return 1; + case 3076: /* module 12 call 4 */ + return 1; + case 3077: /* module 12 call 5 */ + return 2; + case 3584: /* module 14 call 0 */ + return 2; + case 3585: /* module 14 call 1 */ + return 2; + case 3586: /* module 14 call 2 */ + return 2; + case 3840: /* module 15 call 0 */ + return 2; + case 3841: /* module 15 call 1 */ + return 1; + case 3842: /* module 15 call 2 */ + return 1; + case 4096: /* module 16 call 0 */ + return 1; + case 4097: /* module 16 call 1 */ + return 1; + case 4098: /* module 16 call 2 */ + return 4; + case 4099: /* module 16 call 3 */ + return 5; + case 4100: /* module 16 call 4 */ + return 2; + case 4352: /* module 17 call 0 */ + return 1; + case 4353: /* module 17 call 1 */ + return 2; + case 4354: /* module 17 call 2 */ + return 1; + case 4355: /* module 17 call 3 */ + return 2; + case 4608: /* module 18 call 0 */ + return 2; + case 5888: /* module 23 call 0 */ + return 1; + case 5889: /* module 23 call 1 */ + return 1; + case 5890: /* module 23 call 2 */ + return 1; + case 5891: /* module 23 call 3 */ + return 0; + case 5892: /* module 23 call 4 */ + return 2; + case 5893: /* module 23 call 5 */ + return 1; + case 5894: /* module 23 call 6 */ + return 2; + case 5895: /* module 23 call 7 */ + return 2; + case 5896: /* module 23 call 8 */ + return 2; + case 5897: /* module 23 call 9 */ + return 3; + case 5898: /* module 23 call 10 */ + return 1; + case 5899: /* module 23 call 11 */ + return 2; + case 5900: /* module 23 call 12 */ + return 2; + case 5901: /* module 23 call 13 */ + return 1; + case 5902: /* module 23 call 14 */ + return 0; + case 6144: /* module 24 call 0 */ + return 2; + case 6145: /* module 24 call 1 */ + return 2; + case 6146: /* module 24 call 2 */ + return 3; + case 6147: /* module 24 call 3 */ + return 1; + case 6148: /* module 24 call 4 */ + return 2; + case 6149: /* module 24 call 5 */ + return 1; + case 6150: /* module 24 call 6 */ + return 1; + case 6151: /* module 24 call 7 */ + return 0; + case 6152: /* module 24 call 8 */ + return 1; + case 6400: /* module 25 call 0 */ + return 0; + case 6401: /* module 25 call 1 */ + return 1; + case 6402: /* module 25 call 2 */ + return 2; + case 6403: /* module 25 call 3 */ + return 3; + case 6656: /* module 26 call 0 */ + return 4; + case 6657: /* module 26 call 1 */ + return 2; + case 6658: /* module 26 call 2 */ + return 5; + case 6659: /* module 26 call 3 */ + return 1; + case 6660: /* module 26 call 4 */ + return 4; + case 6661: /* module 26 call 5 */ + return 5; + case 6912: /* module 27 call 0 */ + return 3; + case 6913: /* module 27 call 1 */ + return 3; + case 6914: /* module 27 call 2 */ + return 3; + case 6915: /* module 27 call 3 */ + return 0; + case 6916: /* module 27 call 4 */ + return 3; + case 6917: /* module 27 call 5 */ + return 5; + case 6918: /* module 27 call 6 */ + return 2; + case 6919: /* module 27 call 7 */ + return 2; + case 6920: /* module 27 call 8 */ + return 2; + case 6921: /* module 27 call 9 */ + return 4; + case 7168: /* module 28 call 0 */ + return 2; + case 7169: /* module 28 call 1 */ + return 6; + case 7170: /* module 28 call 2 */ + return 5; + case 7171: /* module 28 call 3 */ + return 4; + case 7424: /* module 29 call 0 */ + return 4; + case 7425: /* module 29 call 1 */ + return 4; + case 7426: /* module 29 call 2 */ + return 2; + case 7427: /* module 29 call 3 */ + return 2; + case 7428: /* module 29 call 4 */ + return 3; + case 7429: /* module 29 call 5 */ + return 3; + case 7430: /* module 29 call 6 */ + return 3; + case 7431: /* module 29 call 7 */ + return 4; + case 7432: /* module 29 call 8 */ + return 2; + case 7433: /* module 29 call 9 */ + return 2; + case 7434: /* module 29 call 10 */ + return 2; + case 7435: /* module 29 call 11 */ + return 4; + case 7436: /* module 29 call 12 */ + return 2; + case 8192: /* module 32 call 0 */ + return 1; + case 8193: /* module 32 call 1 */ + return 1; + case 8448: /* module 33 call 0 */ + return 1; + case 8704: /* module 34 call 0 */ + return 2; + case 8705: /* module 34 call 1 */ + return 7; + case 8706: /* module 34 call 2 */ + return 6; + case 8707: /* module 34 call 3 */ + return 7; + case 8960: /* module 35 call 0 */ + return 1; + case 8961: /* module 35 call 1 */ + return 2; + case 8962: /* module 35 call 2 */ + return 1; + case 8963: /* module 35 call 3 */ + return 1; + case 8964: /* module 35 call 4 */ + return 1; + case 8965: /* module 35 call 5 */ + return 1; + case 8966: /* module 35 call 6 */ + return 4; + case 8967: /* module 35 call 7 */ + return 4; + case 8968: /* module 35 call 8 */ + return 3; + case 9216: /* module 36 call 0 */ + return 3; + case 9217: /* module 36 call 1 */ + return 2; + case 9472: /* module 37 call 0 */ + return 2; + case 9473: /* module 37 call 1 */ + return 1; + case 9474: /* module 37 call 2 */ + return 3; + case 9475: /* module 37 call 3 */ + return 1; + case 9476: /* module 37 call 4 */ + return 1; + case 9477: /* module 37 call 5 */ + return 2; + case 9478: /* module 37 call 6 */ + return 1; + case 9479: /* module 37 call 7 */ + return 1; + case 9480: /* module 37 call 8 */ + return 2; + case 9728: /* module 38 call 0 */ + return 2; + case 9729: /* module 38 call 1 */ + return 1; + case 9730: /* module 38 call 2 */ + return 3; + case 9731: /* module 38 call 3 */ + return 2; + case 9732: /* module 38 call 4 */ + return 1; + case 9733: /* module 38 call 5 */ + return 1; +#endif + default: + return 0; + } + + return 0; +} + +const char* _getMethod_ItemName_V1(uint8_t moduleIdx, uint8_t callIdx, uint8_t itemIdx) +{ + uint16_t callPrivIdx = ((uint16_t)moduleIdx << 8u) + callIdx; + + switch (callPrivIdx) { + case 256: /* module 1 call 0 */ + switch (itemIdx) { + case 0: + return STR_IT_calls; + default: + return NULL; + } + case 258: /* module 1 call 2 */ + switch (itemIdx) { + case 0: + return STR_IT_calls; + default: + return NULL; + } + case 1536: /* module 6 call 0 */ + switch (itemIdx) { + case 0: + return STR_IT_dest; + case 1: + return STR_IT_value; + default: + return NULL; + } + case 1539: /* module 6 call 3 */ + switch (itemIdx) { + case 0: + return STR_IT_dest; + case 1: + return STR_IT_value; + default: + return NULL; + } + case 2048: /* module 8 call 0 */ + switch (itemIdx) { + case 0: + return STR_IT_controller; + case 1: + return STR_IT_value; + case 2: + return STR_IT_payee; + default: + return NULL; + } + case 2049: /* module 8 call 1 */ + switch (itemIdx) { + case 0: + return STR_IT_max_additional; + default: + return NULL; + } + case 2050: /* module 8 call 2 */ + switch (itemIdx) { + case 0: + return STR_IT_value; + default: + return NULL; + } + case 2051: /* module 8 call 3 */ + switch (itemIdx) { + case 0: + return STR_IT_num_slashing_spans; + default: + return NULL; + } + case 2052: /* module 8 call 4 */ + switch (itemIdx) { + case 0: + return STR_IT_prefs; + default: + return NULL; + } + case 2053: /* module 8 call 5 */ + switch (itemIdx) { + case 0: + return STR_IT_targets; + default: + return NULL; + } + case 2054: /* module 8 call 6 */ + switch (itemIdx) { + default: + return NULL; + } + case 2055: /* module 8 call 7 */ + switch (itemIdx) { + case 0: + return STR_IT_payee; + default: + return NULL; + } + case 2066: /* module 8 call 18 */ + switch (itemIdx) { + case 0: + return STR_IT_validator_stash; + case 1: + return STR_IT_era; + default: + return NULL; + } + case 2067: /* module 8 call 19 */ + switch (itemIdx) { + case 0: + return STR_IT_value; + default: + return NULL; + } + case 2304: /* module 9 call 0 */ + switch (itemIdx) { + case 0: + return STR_IT_keys; + case 1: + return STR_IT_proof; + default: + return NULL; + } + case 2305: /* module 9 call 1 */ + switch (itemIdx) { + default: + return NULL; + } +#ifdef SUBSTRATE_PARSER_FULL + case 0: /* module 0 call 0 */ + switch (itemIdx) { + case 0: + return STR_IT__ratio; + default: + return NULL; + } + case 1: /* module 0 call 1 */ + switch (itemIdx) { + case 0: + return STR_IT__remark; + default: + return NULL; + } + case 2: /* module 0 call 2 */ + switch (itemIdx) { + case 0: + return STR_IT_pages; + default: + return NULL; + } + case 3: /* module 0 call 3 */ + switch (itemIdx) { + case 0: + return STR_IT_code; + default: + return NULL; + } + case 4: /* module 0 call 4 */ + switch (itemIdx) { + case 0: + return STR_IT_code; + default: + return NULL; + } + case 5: /* module 0 call 5 */ + switch (itemIdx) { + case 0: + return STR_IT_changes_trie_config; + default: + return NULL; + } + case 6: /* module 0 call 6 */ + switch (itemIdx) { + case 0: + return STR_IT_items; + default: + return NULL; + } + case 7: /* module 0 call 7 */ + switch (itemIdx) { + case 0: + return STR_IT_keys; + default: + return NULL; + } + case 8: /* module 0 call 8 */ + switch (itemIdx) { + case 0: + return STR_IT_prefix; + case 1: + return STR_IT__subkeys; + default: + return NULL; + } + case 9: /* module 0 call 9 */ + switch (itemIdx) { + default: + return NULL; + } + case 257: /* module 1 call 1 */ + switch (itemIdx) { + case 0: + return STR_IT_index; + case 1: + return STR_IT_call; + default: + return NULL; + } + case 768: /* module 3 call 0 */ + switch (itemIdx) { + case 0: + return STR_IT_now; + default: + return NULL; + } + case 1024: /* module 4 call 0 */ + switch (itemIdx) { + case 0: + return STR_IT_new_uncles; + default: + return NULL; + } + case 1280: /* module 5 call 0 */ + switch (itemIdx) { + case 0: + return STR_IT_index; + default: + return NULL; + } + case 1281: /* module 5 call 1 */ + switch (itemIdx) { + case 0: + return STR_IT_new_; + case 1: + return STR_IT_index; + default: + return NULL; + } + case 1282: /* module 5 call 2 */ + switch (itemIdx) { + case 0: + return STR_IT_index; + default: + return NULL; + } + case 1283: /* module 5 call 3 */ + switch (itemIdx) { + case 0: + return STR_IT_new_; + case 1: + return STR_IT_index; + case 2: + return STR_IT_freeze; + default: + return NULL; + } + case 1284: /* module 5 call 4 */ + switch (itemIdx) { + case 0: + return STR_IT_index; + default: + return NULL; + } + case 1537: /* module 6 call 1 */ + switch (itemIdx) { + case 0: + return STR_IT_who; + case 1: + return STR_IT_new_free; + case 2: + return STR_IT_new_reserved; + default: + return NULL; + } + case 1538: /* module 6 call 2 */ + switch (itemIdx) { + case 0: + return STR_IT_source; + case 1: + return STR_IT_dest; + case 2: + return STR_IT_value; + default: + return NULL; + } + case 2056: /* module 8 call 8 */ + switch (itemIdx) { + case 0: + return STR_IT_controller; + default: + return NULL; + } + case 2057: /* module 8 call 9 */ + switch (itemIdx) { + case 0: + return STR_IT_new_; + default: + return NULL; + } + case 2058: /* module 8 call 10 */ + switch (itemIdx) { + case 0: + return STR_IT_additional; + default: + return NULL; + } + case 2059: /* module 8 call 11 */ + switch (itemIdx) { + case 0: + return STR_IT_factor; + default: + return NULL; + } + case 2060: /* module 8 call 12 */ + switch (itemIdx) { + default: + return NULL; + } + case 2061: /* module 8 call 13 */ + switch (itemIdx) { + default: + return NULL; + } + case 2062: /* module 8 call 14 */ + switch (itemIdx) { + case 0: + return STR_IT_invulnerables; + default: + return NULL; + } + case 2063: /* module 8 call 15 */ + switch (itemIdx) { + case 0: + return STR_IT_stash; + case 1: + return STR_IT_num_slashing_spans; + default: + return NULL; + } + case 2064: /* module 8 call 16 */ + switch (itemIdx) { + default: + return NULL; + } + case 2065: /* module 8 call 17 */ + switch (itemIdx) { + case 0: + return STR_IT_era; + case 1: + return STR_IT_slash_indices; + default: + return NULL; + } + case 2068: /* module 8 call 20 */ + switch (itemIdx) { + case 0: + return STR_IT_new_history_depth; + case 1: + return STR_IT__era_items_deleted; + default: + return NULL; + } + case 2069: /* module 8 call 21 */ + switch (itemIdx) { + case 0: + return STR_IT_stash; + case 1: + return STR_IT_num_slashing_spans; + default: + return NULL; + } + case 2070: /* module 8 call 22 */ + switch (itemIdx) { + case 0: + return STR_IT_winners; + case 1: + return STR_IT_compact; + case 2: + return STR_IT_score; + case 3: + return STR_IT_era; + case 4: + return STR_IT_size; + default: + return NULL; + } + case 2071: /* module 8 call 23 */ + switch (itemIdx) { + case 0: + return STR_IT_winners; + case 1: + return STR_IT_compact; + case 2: + return STR_IT_score; + case 3: + return STR_IT_era; + case 4: + return STR_IT_size; + default: + return NULL; + } + case 2560: /* module 10 call 0 */ + switch (itemIdx) { + case 0: + return STR_IT_proposal_hash; + case 1: + return STR_IT_value; + default: + return NULL; + } + case 2561: /* module 10 call 1 */ + switch (itemIdx) { + case 0: + return STR_IT_proposal; + case 1: + return STR_IT_seconds_upper_bound; + default: + return NULL; + } + case 2562: /* module 10 call 2 */ + switch (itemIdx) { + case 0: + return STR_IT_ref_index; + case 1: + return STR_IT_vote; + default: + return NULL; + } + case 2563: /* module 10 call 3 */ + switch (itemIdx) { + case 0: + return STR_IT_ref_index; + default: + return NULL; + } + case 2564: /* module 10 call 4 */ + switch (itemIdx) { + case 0: + return STR_IT_proposal_hash; + default: + return NULL; + } + case 2565: /* module 10 call 5 */ + switch (itemIdx) { + case 0: + return STR_IT_proposal_hash; + default: + return NULL; + } + case 2566: /* module 10 call 6 */ + switch (itemIdx) { + case 0: + return STR_IT_proposal_hash; + default: + return NULL; + } + case 2567: /* module 10 call 7 */ + switch (itemIdx) { + case 0: + return STR_IT_proposal_hash; + case 1: + return STR_IT_voting_period; + case 2: + return STR_IT_delay; + default: + return NULL; + } + case 2568: /* module 10 call 8 */ + switch (itemIdx) { + case 0: + return STR_IT_proposal_hash; + default: + return NULL; + } + case 2569: /* module 10 call 9 */ + switch (itemIdx) { + case 0: + return STR_IT_ref_index; + default: + return NULL; + } + case 2570: /* module 10 call 10 */ + switch (itemIdx) { + case 0: + return STR_IT_which; + default: + return NULL; + } + case 2571: /* module 10 call 11 */ + switch (itemIdx) { + case 0: + return STR_IT_to; + case 1: + return STR_IT_conviction; + case 2: + return STR_IT_balance; + default: + return NULL; + } + case 2572: /* module 10 call 12 */ + switch (itemIdx) { + default: + return NULL; + } + case 2573: /* module 10 call 13 */ + switch (itemIdx) { + default: + return NULL; + } + case 2574: /* module 10 call 14 */ + switch (itemIdx) { + case 0: + return STR_IT_encoded_proposal; + default: + return NULL; + } + case 2575: /* module 10 call 15 */ + switch (itemIdx) { + case 0: + return STR_IT_encoded_proposal; + default: + return NULL; + } + case 2576: /* module 10 call 16 */ + switch (itemIdx) { + case 0: + return STR_IT_encoded_proposal; + default: + return NULL; + } + case 2577: /* module 10 call 17 */ + switch (itemIdx) { + case 0: + return STR_IT_encoded_proposal; + default: + return NULL; + } + case 2578: /* module 10 call 18 */ + switch (itemIdx) { + case 0: + return STR_IT_proposal_hash; + case 1: + return STR_IT_proposal_len_upper_bound; + default: + return NULL; + } + case 2579: /* module 10 call 19 */ + switch (itemIdx) { + case 0: + return STR_IT_target; + default: + return NULL; + } + case 2580: /* module 10 call 20 */ + switch (itemIdx) { + case 0: + return STR_IT_index; + default: + return NULL; + } + case 2581: /* module 10 call 21 */ + switch (itemIdx) { + case 0: + return STR_IT_target; + case 1: + return STR_IT_index; + default: + return NULL; + } + case 2582: /* module 10 call 22 */ + switch (itemIdx) { + case 0: + return STR_IT_proposal_hash; + case 1: + return STR_IT_index; + default: + return NULL; + } + case 2583: /* module 10 call 23 */ + switch (itemIdx) { + case 0: + return STR_IT_proposal_hash; + case 1: + return STR_IT_maybe_ref_index; + default: + return NULL; + } + case 2584: /* module 10 call 24 */ + switch (itemIdx) { + case 0: + return STR_IT_prop_index; + default: + return NULL; + } + case 2816: /* module 11 call 0 */ + switch (itemIdx) { + case 0: + return STR_IT_new_members; + case 1: + return STR_IT_prime; + case 2: + return STR_IT_old_count; + default: + return NULL; + } + case 2817: /* module 11 call 1 */ + switch (itemIdx) { + case 0: + return STR_IT_proposal; + case 1: + return STR_IT_length_bound; + default: + return NULL; + } + case 2818: /* module 11 call 2 */ + switch (itemIdx) { + case 0: + return STR_IT_threshold; + case 1: + return STR_IT_proposal; + case 2: + return STR_IT_length_bound; + default: + return NULL; + } + case 2819: /* module 11 call 3 */ + switch (itemIdx) { + case 0: + return STR_IT_proposal; + case 1: + return STR_IT_index; + case 2: + return STR_IT_approve; + default: + return NULL; + } + case 2820: /* module 11 call 4 */ + switch (itemIdx) { + case 0: + return STR_IT_proposal_hash; + case 1: + return STR_IT_index; + case 2: + return STR_IT_proposal_weight_bound; + case 3: + return STR_IT_length_bound; + default: + return NULL; + } + case 2821: /* module 11 call 5 */ + switch (itemIdx) { + case 0: + return STR_IT_proposal_hash; + default: + return NULL; + } + case 3072: /* module 12 call 0 */ + switch (itemIdx) { + case 0: + return STR_IT_votes; + case 1: + return STR_IT_value; + default: + return NULL; + } + case 3073: /* module 12 call 1 */ + switch (itemIdx) { + default: + return NULL; + } + case 3074: /* module 12 call 2 */ + switch (itemIdx) { + case 0: + return STR_IT_defunct; + default: + return NULL; + } + case 3075: /* module 12 call 3 */ + switch (itemIdx) { + case 0: + return STR_IT_candidate_count; + default: + return NULL; + } + case 3076: /* module 12 call 4 */ + switch (itemIdx) { + case 0: + return STR_IT_renouncing; + default: + return NULL; + } + case 3077: /* module 12 call 5 */ + switch (itemIdx) { + case 0: + return STR_IT_who; + case 1: + return STR_IT_has_replacement; + default: + return NULL; + } + case 3584: /* module 14 call 0 */ + switch (itemIdx) { + case 0: + return STR_IT_equivocation_proof; + case 1: + return STR_IT_key_owner_proof; + default: + return NULL; + } + case 3585: /* module 14 call 1 */ + switch (itemIdx) { + case 0: + return STR_IT_equivocation_proof; + case 1: + return STR_IT_key_owner_proof; + default: + return NULL; + } + case 3586: /* module 14 call 2 */ + switch (itemIdx) { + case 0: + return STR_IT_delay; + case 1: + return STR_IT_best_finalized_block_number; + default: + return NULL; + } + case 3840: /* module 15 call 0 */ + switch (itemIdx) { + case 0: + return STR_IT_value; + case 1: + return STR_IT_beneficiary; + default: + return NULL; + } + case 3841: /* module 15 call 1 */ + switch (itemIdx) { + case 0: + return STR_IT_proposal_id; + default: + return NULL; + } + case 3842: /* module 15 call 2 */ + switch (itemIdx) { + case 0: + return STR_IT_proposal_id; + default: + return NULL; + } + case 4096: /* module 16 call 0 */ + switch (itemIdx) { + case 0: + return STR_IT_schedule; + default: + return NULL; + } + case 4097: /* module 16 call 1 */ + switch (itemIdx) { + case 0: + return STR_IT_code; + default: + return NULL; + } + case 4098: /* module 16 call 2 */ + switch (itemIdx) { + case 0: + return STR_IT_dest; + case 1: + return STR_IT_value; + case 2: + return STR_IT_gas_limit; + case 3: + return STR_IT_data; + default: + return NULL; + } + case 4099: /* module 16 call 3 */ + switch (itemIdx) { + case 0: + return STR_IT_endowment; + case 1: + return STR_IT_gas_limit; + case 2: + return STR_IT_code_hash; + case 3: + return STR_IT_data; + case 4: + return STR_IT_salt; + default: + return NULL; + } + case 4100: /* module 16 call 4 */ + switch (itemIdx) { + case 0: + return STR_IT_dest; + case 1: + return STR_IT_aux_sender; + default: + return NULL; + } + case 4352: /* module 17 call 0 */ + switch (itemIdx) { + case 0: + return STR_IT_call; + default: + return NULL; + } + case 4353: /* module 17 call 1 */ + switch (itemIdx) { + case 0: + return STR_IT_call; + case 1: + return STR_IT__weight; + default: + return NULL; + } + case 4354: /* module 17 call 2 */ + switch (itemIdx) { + case 0: + return STR_IT_new_; + default: + return NULL; + } + case 4355: /* module 17 call 3 */ + switch (itemIdx) { + case 0: + return STR_IT_who; + case 1: + return STR_IT_call; + default: + return NULL; + } + case 4608: /* module 18 call 0 */ + switch (itemIdx) { + case 0: + return STR_IT_heartbeat; + case 1: + return STR_IT__signature; + default: + return NULL; + } + case 5888: /* module 23 call 0 */ + switch (itemIdx) { + case 0: + return STR_IT_account; + default: + return NULL; + } + case 5889: /* module 23 call 1 */ + switch (itemIdx) { + case 0: + return STR_IT_info; + default: + return NULL; + } + case 5890: /* module 23 call 2 */ + switch (itemIdx) { + case 0: + return STR_IT_subs; + default: + return NULL; + } + case 5891: /* module 23 call 3 */ + switch (itemIdx) { + default: + return NULL; + } + case 5892: /* module 23 call 4 */ + switch (itemIdx) { + case 0: + return STR_IT_reg_index; + case 1: + return STR_IT_max_fee; + default: + return NULL; + } + case 5893: /* module 23 call 5 */ + switch (itemIdx) { + case 0: + return STR_IT_reg_index; + default: + return NULL; + } + case 5894: /* module 23 call 6 */ + switch (itemIdx) { + case 0: + return STR_IT_index; + case 1: + return STR_IT_fee; + default: + return NULL; + } + case 5895: /* module 23 call 7 */ + switch (itemIdx) { + case 0: + return STR_IT_index; + case 1: + return STR_IT_new_; + default: + return NULL; + } + case 5896: /* module 23 call 8 */ + switch (itemIdx) { + case 0: + return STR_IT_index; + case 1: + return STR_IT_fields; + default: + return NULL; + } + case 5897: /* module 23 call 9 */ + switch (itemIdx) { + case 0: + return STR_IT_reg_index; + case 1: + return STR_IT_target; + case 2: + return STR_IT_judgement; + default: + return NULL; + } + case 5898: /* module 23 call 10 */ + switch (itemIdx) { + case 0: + return STR_IT_target; + default: + return NULL; + } + case 5899: /* module 23 call 11 */ + switch (itemIdx) { + case 0: + return STR_IT_sub; + case 1: + return STR_IT_data; + default: + return NULL; + } + case 5900: /* module 23 call 12 */ + switch (itemIdx) { + case 0: + return STR_IT_sub; + case 1: + return STR_IT_data; + default: + return NULL; + } + case 5901: /* module 23 call 13 */ + switch (itemIdx) { + case 0: + return STR_IT_sub; + default: + return NULL; + } + case 5902: /* module 23 call 14 */ + switch (itemIdx) { + default: + return NULL; + } + case 6144: /* module 24 call 0 */ + switch (itemIdx) { + case 0: + return STR_IT_account; + case 1: + return STR_IT_call; + default: + return NULL; + } + case 6145: /* module 24 call 1 */ + switch (itemIdx) { + case 0: + return STR_IT_lost; + case 1: + return STR_IT_rescuer; + default: + return NULL; + } + case 6146: /* module 24 call 2 */ + switch (itemIdx) { + case 0: + return STR_IT_friends; + case 1: + return STR_IT_threshold; + case 2: + return STR_IT_delay_period; + default: + return NULL; + } + case 6147: /* module 24 call 3 */ + switch (itemIdx) { + case 0: + return STR_IT_account; + default: + return NULL; + } + case 6148: /* module 24 call 4 */ + switch (itemIdx) { + case 0: + return STR_IT_lost; + case 1: + return STR_IT_rescuer; + default: + return NULL; + } + case 6149: /* module 24 call 5 */ + switch (itemIdx) { + case 0: + return STR_IT_account; + default: + return NULL; + } + case 6150: /* module 24 call 6 */ + switch (itemIdx) { + case 0: + return STR_IT_rescuer; + default: + return NULL; + } + case 6151: /* module 24 call 7 */ + switch (itemIdx) { + default: + return NULL; + } + case 6152: /* module 24 call 8 */ + switch (itemIdx) { + case 0: + return STR_IT_account; + default: + return NULL; + } + case 6400: /* module 25 call 0 */ + switch (itemIdx) { + default: + return NULL; + } + case 6401: /* module 25 call 1 */ + switch (itemIdx) { + case 0: + return STR_IT_target; + default: + return NULL; + } + case 6402: /* module 25 call 2 */ + switch (itemIdx) { + case 0: + return STR_IT_target; + case 1: + return STR_IT_schedule; + default: + return NULL; + } + case 6403: /* module 25 call 3 */ + switch (itemIdx) { + case 0: + return STR_IT_source; + case 1: + return STR_IT_target; + case 2: + return STR_IT_schedule; + default: + return NULL; + } + case 6656: /* module 26 call 0 */ + switch (itemIdx) { + case 0: + return STR_IT_when; + case 1: + return STR_IT_maybe_periodic; + case 2: + return STR_IT_priority; + case 3: + return STR_IT_call; + default: + return NULL; + } + case 6657: /* module 26 call 1 */ + switch (itemIdx) { + case 0: + return STR_IT_when; + case 1: + return STR_IT_index; + default: + return NULL; + } + case 6658: /* module 26 call 2 */ + switch (itemIdx) { + case 0: + return STR_IT_id; + case 1: + return STR_IT_when; + case 2: + return STR_IT_maybe_periodic; + case 3: + return STR_IT_priority; + case 4: + return STR_IT_call; + default: + return NULL; + } + case 6659: /* module 26 call 3 */ + switch (itemIdx) { + case 0: + return STR_IT_id; + default: + return NULL; + } + case 6660: /* module 26 call 4 */ + switch (itemIdx) { + case 0: + return STR_IT_after; + case 1: + return STR_IT_maybe_periodic; + case 2: + return STR_IT_priority; + case 3: + return STR_IT_call; + default: + return NULL; + } + case 6661: /* module 26 call 5 */ + switch (itemIdx) { + case 0: + return STR_IT_id; + case 1: + return STR_IT_after; + case 2: + return STR_IT_maybe_periodic; + case 3: + return STR_IT_priority; + case 4: + return STR_IT_call; + default: + return NULL; + } + case 6912: /* module 27 call 0 */ + switch (itemIdx) { + case 0: + return STR_IT_real; + case 1: + return STR_IT_force_proxy_type; + case 2: + return STR_IT_call; + default: + return NULL; + } + case 6913: /* module 27 call 1 */ + switch (itemIdx) { + case 0: + return STR_IT_delegate; + case 1: + return STR_IT_proxy_type; + case 2: + return STR_IT_delay; + default: + return NULL; + } + case 6914: /* module 27 call 2 */ + switch (itemIdx) { + case 0: + return STR_IT_delegate; + case 1: + return STR_IT_proxy_type; + case 2: + return STR_IT_delay; + default: + return NULL; + } + case 6915: /* module 27 call 3 */ + switch (itemIdx) { + default: + return NULL; + } + case 6916: /* module 27 call 4 */ + switch (itemIdx) { + case 0: + return STR_IT_proxy_type; + case 1: + return STR_IT_delay; + case 2: + return STR_IT_index; + default: + return NULL; + } + case 6917: /* module 27 call 5 */ + switch (itemIdx) { + case 0: + return STR_IT_spawner; + case 1: + return STR_IT_proxy_type; + case 2: + return STR_IT_index; + case 3: + return STR_IT_height; + case 4: + return STR_IT_ext_index; + default: + return NULL; + } + case 6918: /* module 27 call 6 */ + switch (itemIdx) { + case 0: + return STR_IT_real; + case 1: + return STR_IT_call_hash; + default: + return NULL; + } + case 6919: /* module 27 call 7 */ + switch (itemIdx) { + case 0: + return STR_IT_real; + case 1: + return STR_IT_call_hash; + default: + return NULL; + } + case 6920: /* module 27 call 8 */ + switch (itemIdx) { + case 0: + return STR_IT_delegate; + case 1: + return STR_IT_call_hash; + default: + return NULL; + } + case 6921: /* module 27 call 9 */ + switch (itemIdx) { + case 0: + return STR_IT_delegate; + case 1: + return STR_IT_real; + case 2: + return STR_IT_force_proxy_type; + case 3: + return STR_IT_call; + default: + return NULL; + } + case 7168: /* module 28 call 0 */ + switch (itemIdx) { + case 0: + return STR_IT_other_signatories; + case 1: + return STR_IT_call; + default: + return NULL; + } + case 7169: /* module 28 call 1 */ + switch (itemIdx) { + case 0: + return STR_IT_threshold; + case 1: + return STR_IT_other_signatories; + case 2: + return STR_IT_maybe_timepoint; + case 3: + return STR_IT_call; + case 4: + return STR_IT_store_call; + case 5: + return STR_IT_max_weight; + default: + return NULL; + } + case 7170: /* module 28 call 2 */ + switch (itemIdx) { + case 0: + return STR_IT_threshold; + case 1: + return STR_IT_other_signatories; + case 2: + return STR_IT_maybe_timepoint; + case 3: + return STR_IT_call_hash; + case 4: + return STR_IT_max_weight; + default: + return NULL; + } + case 7171: /* module 28 call 3 */ + switch (itemIdx) { + case 0: + return STR_IT_threshold; + case 1: + return STR_IT_other_signatories; + case 2: + return STR_IT_timepoint; + case 3: + return STR_IT_call_hash; + default: + return NULL; + } + case 7424: /* module 29 call 0 */ + switch (itemIdx) { + case 0: + return STR_IT_id; + case 1: + return STR_IT_admin; + case 2: + return STR_IT_max_zombies; + case 3: + return STR_IT_min_balance; + default: + return NULL; + } + case 7425: /* module 29 call 1 */ + switch (itemIdx) { + case 0: + return STR_IT_id; + case 1: + return STR_IT_owner; + case 2: + return STR_IT_max_zombies; + case 3: + return STR_IT_min_balance; + default: + return NULL; + } + case 7426: /* module 29 call 2 */ + switch (itemIdx) { + case 0: + return STR_IT_id; + case 1: + return STR_IT_zombies_witness; + default: + return NULL; + } + case 7427: /* module 29 call 3 */ + switch (itemIdx) { + case 0: + return STR_IT_id; + case 1: + return STR_IT_zombies_witness; + default: + return NULL; + } + case 7428: /* module 29 call 4 */ + switch (itemIdx) { + case 0: + return STR_IT_id; + case 1: + return STR_IT_beneficiary; + case 2: + return STR_IT_amount; + default: + return NULL; + } + case 7429: /* module 29 call 5 */ + switch (itemIdx) { + case 0: + return STR_IT_id; + case 1: + return STR_IT_who; + case 2: + return STR_IT_amount; + default: + return NULL; + } + case 7430: /* module 29 call 6 */ + switch (itemIdx) { + case 0: + return STR_IT_id; + case 1: + return STR_IT_target; + case 2: + return STR_IT_amount; + default: + return NULL; + } + case 7431: /* module 29 call 7 */ + switch (itemIdx) { + case 0: + return STR_IT_id; + case 1: + return STR_IT_source; + case 2: + return STR_IT_dest; + case 3: + return STR_IT_amount; + default: + return NULL; + } + case 7432: /* module 29 call 8 */ + switch (itemIdx) { + case 0: + return STR_IT_id; + case 1: + return STR_IT_who; + default: + return NULL; + } + case 7433: /* module 29 call 9 */ + switch (itemIdx) { + case 0: + return STR_IT_id; + case 1: + return STR_IT_who; + default: + return NULL; + } + case 7434: /* module 29 call 10 */ + switch (itemIdx) { + case 0: + return STR_IT_id; + case 1: + return STR_IT_new_owner; + default: + return NULL; + } + case 7435: /* module 29 call 11 */ + switch (itemIdx) { + case 0: + return STR_IT_id; + case 1: + return STR_IT_issuer; + case 2: + return STR_IT_admin; + case 3: + return STR_IT_freezer; + default: + return NULL; + } + case 7436: /* module 29 call 12 */ + switch (itemIdx) { + case 0: + return STR_IT_id; + case 1: + return STR_IT_max_zombies; + default: + return NULL; + } + case 8192: /* module 32 call 0 */ + switch (itemIdx) { + case 0: + return STR_IT_payout; + default: + return NULL; + } + case 8193: /* module 32 call 1 */ + switch (itemIdx) { + case 0: + return STR_IT_interval; + default: + return NULL; + } + case 8448: /* module 33 call 0 */ + switch (itemIdx) { + case 0: + return STR_IT_transaction; + default: + return NULL; + } + case 8704: /* module 34 call 0 */ + switch (itemIdx) { + case 0: + return STR_IT_address; + case 1: + return STR_IT_value; + default: + return NULL; + } + case 8705: /* module 34 call 1 */ + switch (itemIdx) { + case 0: + return STR_IT_source; + case 1: + return STR_IT_target; + case 2: + return STR_IT_input; + case 3: + return STR_IT_value; + case 4: + return STR_IT_gas_limit; + case 5: + return STR_IT_gas_price; + case 6: + return STR_IT_nonce; + default: + return NULL; + } + case 8706: /* module 34 call 2 */ + switch (itemIdx) { + case 0: + return STR_IT_source; + case 1: + return STR_IT_init; + case 2: + return STR_IT_value; + case 3: + return STR_IT_gas_limit; + case 4: + return STR_IT_gas_price; + case 5: + return STR_IT_nonce; + default: + return NULL; + } + case 8707: /* module 34 call 3 */ + switch (itemIdx) { + case 0: + return STR_IT_source; + case 1: + return STR_IT_init; + case 2: + return STR_IT_salt; + case 3: + return STR_IT_value; + case 4: + return STR_IT_gas_limit; + case 5: + return STR_IT_gas_price; + case 6: + return STR_IT_nonce; + default: + return NULL; + } + case 8960: /* module 35 call 0 */ + switch (itemIdx) { + case 0: + return STR_IT_threshold; + default: + return NULL; + } + case 8961: /* module 35 call 1 */ + switch (itemIdx) { + case 0: + return STR_IT_id; + case 1: + return STR_IT_method; + default: + return NULL; + } + case 8962: /* module 35 call 2 */ + switch (itemIdx) { + case 0: + return STR_IT_id; + default: + return NULL; + } + case 8963: /* module 35 call 3 */ + switch (itemIdx) { + case 0: + return STR_IT_id; + default: + return NULL; + } + case 8964: /* module 35 call 4 */ + switch (itemIdx) { + case 0: + return STR_IT_v; + default: + return NULL; + } + case 8965: /* module 35 call 5 */ + switch (itemIdx) { + case 0: + return STR_IT_v; + default: + return NULL; + } + case 8966: /* module 35 call 6 */ + switch (itemIdx) { + case 0: + return STR_IT_nonce; + case 1: + return STR_IT_src_id; + case 2: + return STR_IT_r_id; + case 3: + return STR_IT_call; + default: + return NULL; + } + case 8967: /* module 35 call 7 */ + switch (itemIdx) { + case 0: + return STR_IT_nonce; + case 1: + return STR_IT_src_id; + case 2: + return STR_IT_r_id; + case 3: + return STR_IT_call; + default: + return NULL; + } + case 8968: /* module 35 call 8 */ + switch (itemIdx) { + case 0: + return STR_IT_nonce; + case 1: + return STR_IT_src_id; + case 2: + return STR_IT_prop; + default: + return NULL; + } + case 9216: /* module 36 call 0 */ + switch (itemIdx) { + case 0: + return STR_IT_amount; + case 1: + return STR_IT_recipient; + case 2: + return STR_IT_dest_id; + default: + return NULL; + } + case 9217: /* module 36 call 1 */ + switch (itemIdx) { + case 0: + return STR_IT_to; + case 1: + return STR_IT_amount; + default: + return NULL; + } + case 9472: /* module 37 call 0 */ + switch (itemIdx) { + case 0: + return STR_IT_value; + case 1: + return STR_IT_description; + default: + return NULL; + } + case 9473: /* module 37 call 1 */ + switch (itemIdx) { + case 0: + return STR_IT_bounty_id; + default: + return NULL; + } + case 9474: /* module 37 call 2 */ + switch (itemIdx) { + case 0: + return STR_IT_bounty_id; + case 1: + return STR_IT_curator; + case 2: + return STR_IT_fee; + default: + return NULL; + } + case 9475: /* module 37 call 3 */ + switch (itemIdx) { + case 0: + return STR_IT_bounty_id; + default: + return NULL; + } + case 9476: /* module 37 call 4 */ + switch (itemIdx) { + case 0: + return STR_IT_bounty_id; + default: + return NULL; + } + case 9477: /* module 37 call 5 */ + switch (itemIdx) { + case 0: + return STR_IT_bounty_id; + case 1: + return STR_IT_beneficiary; + default: + return NULL; + } + case 9478: /* module 37 call 6 */ + switch (itemIdx) { + case 0: + return STR_IT_bounty_id; + default: + return NULL; + } + case 9479: /* module 37 call 7 */ + switch (itemIdx) { + case 0: + return STR_IT_bounty_id; + default: + return NULL; + } + case 9480: /* module 37 call 8 */ + switch (itemIdx) { + case 0: + return STR_IT_bounty_id; + case 1: + return STR_IT__remark; + default: + return NULL; + } + case 9728: /* module 38 call 0 */ + switch (itemIdx) { + case 0: + return STR_IT_reason; + case 1: + return STR_IT_who; + default: + return NULL; + } + case 9729: /* module 38 call 1 */ + switch (itemIdx) { + case 0: + return STR_IT_hash; + default: + return NULL; + } + case 9730: /* module 38 call 2 */ + switch (itemIdx) { + case 0: + return STR_IT_reason; + case 1: + return STR_IT_who; + case 2: + return STR_IT_tip_value; + default: + return NULL; + } + case 9731: /* module 38 call 3 */ + switch (itemIdx) { + case 0: + return STR_IT_hash; + case 1: + return STR_IT_tip_value; + default: + return NULL; + } + case 9732: /* module 38 call 4 */ + switch (itemIdx) { + case 0: + return STR_IT_hash; + default: + return NULL; + } + case 9733: /* module 38 call 5 */ + switch (itemIdx) { + case 0: + return STR_IT_hash; + default: + return NULL; + } +#endif + default: + return NULL; + } + + return NULL; +} + +parser_error_t _getMethod_ItemValue_V1( + pd_Method_V1_t* m, + uint8_t moduleIdx, uint8_t callIdx, uint8_t itemIdx, + char* outValue, uint16_t outValueLen, + uint8_t pageIdx, uint8_t* pageCount) +{ + uint16_t callPrivIdx = ((uint16_t)moduleIdx << 8u) + callIdx; + + switch (callPrivIdx) { + case 256: /* module 1 call 0 */ + switch (itemIdx) { + case 0: /* utility_batch_V1 - calls */; + return _toStringVecCall( + &m->basic.utility_batch_V1.calls, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 258: /* module 1 call 2 */ + switch (itemIdx) { + case 0: /* utility_batch_all_V1 - calls */; + return _toStringVecCall( + &m->basic.utility_batch_all_V1.calls, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 1536: /* module 6 call 0 */ + switch (itemIdx) { + case 0: /* balances_transfer_V1 - dest */; + return _toStringLookupSource_V1( + &m->basic.balances_transfer_V1.dest, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* balances_transfer_V1 - value */; + return _toStringCompactBalance( + &m->basic.balances_transfer_V1.value, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 1539: /* module 6 call 3 */ + switch (itemIdx) { + case 0: /* balances_transfer_keep_alive_V1 - dest */; + return _toStringLookupSource_V1( + &m->basic.balances_transfer_keep_alive_V1.dest, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* balances_transfer_keep_alive_V1 - value */; + return _toStringCompactBalance( + &m->basic.balances_transfer_keep_alive_V1.value, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 2048: /* module 8 call 0 */ + switch (itemIdx) { + case 0: /* staking_bond_V1 - controller */; + return _toStringLookupSource_V1( + &m->basic.staking_bond_V1.controller, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* staking_bond_V1 - value */; + return _toStringCompactBalanceOf( + &m->basic.staking_bond_V1.value, + outValue, outValueLen, + pageIdx, pageCount); + case 2: /* staking_bond_V1 - payee */; + return _toStringRewardDestination_V1( + &m->basic.staking_bond_V1.payee, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 2049: /* module 8 call 1 */ + switch (itemIdx) { + case 0: /* staking_bond_extra_V1 - max_additional */; + return _toStringCompactBalanceOf( + &m->basic.staking_bond_extra_V1.max_additional, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 2050: /* module 8 call 2 */ + switch (itemIdx) { + case 0: /* staking_unbond_V1 - value */; + return _toStringCompactBalanceOf( + &m->basic.staking_unbond_V1.value, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 2051: /* module 8 call 3 */ + switch (itemIdx) { + case 0: /* staking_withdraw_unbonded_V1 - num_slashing_spans */; + return _toStringu32( + &m->basic.staking_withdraw_unbonded_V1.num_slashing_spans, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 2052: /* module 8 call 4 */ + switch (itemIdx) { + case 0: /* staking_validate_V1 - prefs */; + return _toStringValidatorPrefs_V1( + &m->basic.staking_validate_V1.prefs, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 2053: /* module 8 call 5 */ + switch (itemIdx) { + case 0: /* staking_nominate_V1 - targets */; + return _toStringVecLookupSource_V1( + &m->basic.staking_nominate_V1.targets, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 2054: /* module 8 call 6 */ + switch (itemIdx) { + default: + return parser_no_data; + } + case 2055: /* module 8 call 7 */ + switch (itemIdx) { + case 0: /* staking_set_payee_V1 - payee */; + return _toStringRewardDestination_V1( + &m->basic.staking_set_payee_V1.payee, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 2066: /* module 8 call 18 */ + switch (itemIdx) { + case 0: /* staking_payout_stakers_V1 - validator_stash */; + return _toStringAccountId_V1( + &m->basic.staking_payout_stakers_V1.validator_stash, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* staking_payout_stakers_V1 - era */; + return _toStringEraIndex_V1( + &m->basic.staking_payout_stakers_V1.era, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 2067: /* module 8 call 19 */ + switch (itemIdx) { + case 0: /* staking_rebond_V1 - value */; + return _toStringCompactBalanceOf( + &m->basic.staking_rebond_V1.value, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 2304: /* module 9 call 0 */ + switch (itemIdx) { + case 0: /* session_set_keys_V1 - keys */; + return _toStringKeys_V1( + &m->basic.session_set_keys_V1.keys, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* session_set_keys_V1 - proof */; + return _toStringBytes( + &m->basic.session_set_keys_V1.proof, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 2305: /* module 9 call 1 */ + switch (itemIdx) { + default: + return parser_no_data; + } +#ifdef SUBSTRATE_PARSER_FULL + case 0: /* module 0 call 0 */ + switch (itemIdx) { + case 0: /* system_fill_block_V1 - _ratio */; + return _toStringPerbill_V1( + &m->basic.system_fill_block_V1._ratio, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 1: /* module 0 call 1 */ + switch (itemIdx) { + case 0: /* system_remark_V1 - _remark */; + return _toStringBytes( + &m->basic.system_remark_V1._remark, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 2: /* module 0 call 2 */ + switch (itemIdx) { + case 0: /* system_set_heap_pages_V1 - pages */; + return _toStringu64( + &m->basic.system_set_heap_pages_V1.pages, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 3: /* module 0 call 3 */ + switch (itemIdx) { + case 0: /* system_set_code_V1 - code */; + return _toStringBytes( + &m->basic.system_set_code_V1.code, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 4: /* module 0 call 4 */ + switch (itemIdx) { + case 0: /* system_set_code_without_checks_V1 - code */; + return _toStringBytes( + &m->basic.system_set_code_without_checks_V1.code, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 5: /* module 0 call 5 */ + switch (itemIdx) { + case 0: /* system_set_changes_trie_config_V1 - changes_trie_config */; + return _toStringOptionChangesTrieConfiguration_V1( + &m->basic.system_set_changes_trie_config_V1.changes_trie_config, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 6: /* module 0 call 6 */ + switch (itemIdx) { + case 0: /* system_set_storage_V1 - items */; + return _toStringVecKeyValue_V1( + &m->basic.system_set_storage_V1.items, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 7: /* module 0 call 7 */ + switch (itemIdx) { + case 0: /* system_kill_storage_V1 - keys */; + return _toStringVecKey_V1( + &m->basic.system_kill_storage_V1.keys, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 8: /* module 0 call 8 */ + switch (itemIdx) { + case 0: /* system_kill_prefix_V1 - prefix */; + return _toStringKey_V1( + &m->basic.system_kill_prefix_V1.prefix, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* system_kill_prefix_V1 - _subkeys */; + return _toStringu32( + &m->basic.system_kill_prefix_V1._subkeys, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 9: /* module 0 call 9 */ + switch (itemIdx) { + default: + return parser_no_data; + } + case 257: /* module 1 call 1 */ + switch (itemIdx) { + case 0: /* utility_as_derivative_V1 - index */; + return _toStringu16( + &m->basic.utility_as_derivative_V1.index, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* utility_as_derivative_V1 - call */; + return _toStringCall( + &m->basic.utility_as_derivative_V1.call, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 768: /* module 3 call 0 */ + switch (itemIdx) { + case 0: /* timestamp_set_V1 - now */; + return _toStringCompactMoment_V1( + &m->basic.timestamp_set_V1.now, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 1024: /* module 4 call 0 */ + switch (itemIdx) { + case 0: /* authorship_set_uncles_V1 - new_uncles */; + return _toStringVecHeader( + &m->basic.authorship_set_uncles_V1.new_uncles, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 1280: /* module 5 call 0 */ + switch (itemIdx) { + case 0: /* indices_claim_V1 - index */; + return _toStringAccountIndex_V1( + &m->basic.indices_claim_V1.index, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 1281: /* module 5 call 1 */ + switch (itemIdx) { + case 0: /* indices_transfer_V1 - new_ */; + return _toStringAccountId_V1( + &m->basic.indices_transfer_V1.new_, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* indices_transfer_V1 - index */; + return _toStringAccountIndex_V1( + &m->basic.indices_transfer_V1.index, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 1282: /* module 5 call 2 */ + switch (itemIdx) { + case 0: /* indices_free_V1 - index */; + return _toStringAccountIndex_V1( + &m->basic.indices_free_V1.index, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 1283: /* module 5 call 3 */ + switch (itemIdx) { + case 0: /* indices_force_transfer_V1 - new_ */; + return _toStringAccountId_V1( + &m->basic.indices_force_transfer_V1.new_, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* indices_force_transfer_V1 - index */; + return _toStringAccountIndex_V1( + &m->basic.indices_force_transfer_V1.index, + outValue, outValueLen, + pageIdx, pageCount); + case 2: /* indices_force_transfer_V1 - freeze */; + return _toStringbool( + &m->basic.indices_force_transfer_V1.freeze, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 1284: /* module 5 call 4 */ + switch (itemIdx) { + case 0: /* indices_freeze_V1 - index */; + return _toStringAccountIndex_V1( + &m->basic.indices_freeze_V1.index, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 1537: /* module 6 call 1 */ + switch (itemIdx) { + case 0: /* balances_set_balance_V1 - who */; + return _toStringLookupSource_V1( + &m->basic.balances_set_balance_V1.who, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* balances_set_balance_V1 - new_free */; + return _toStringCompactBalance( + &m->basic.balances_set_balance_V1.new_free, + outValue, outValueLen, + pageIdx, pageCount); + case 2: /* balances_set_balance_V1 - new_reserved */; + return _toStringCompactBalance( + &m->basic.balances_set_balance_V1.new_reserved, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 1538: /* module 6 call 2 */ + switch (itemIdx) { + case 0: /* balances_force_transfer_V1 - source */; + return _toStringLookupSource_V1( + &m->basic.balances_force_transfer_V1.source, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* balances_force_transfer_V1 - dest */; + return _toStringLookupSource_V1( + &m->basic.balances_force_transfer_V1.dest, + outValue, outValueLen, + pageIdx, pageCount); + case 2: /* balances_force_transfer_V1 - value */; + return _toStringCompactBalance( + &m->basic.balances_force_transfer_V1.value, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 2056: /* module 8 call 8 */ + switch (itemIdx) { + case 0: /* staking_set_controller_V1 - controller */; + return _toStringLookupSource_V1( + &m->basic.staking_set_controller_V1.controller, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 2057: /* module 8 call 9 */ + switch (itemIdx) { + case 0: /* staking_set_validator_count_V1 - new_ */; + return _toStringCompactu32( + &m->basic.staking_set_validator_count_V1.new_, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 2058: /* module 8 call 10 */ + switch (itemIdx) { + case 0: /* staking_increase_validator_count_V1 - additional */; + return _toStringCompactu32( + &m->basic.staking_increase_validator_count_V1.additional, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 2059: /* module 8 call 11 */ + switch (itemIdx) { + case 0: /* staking_scale_validator_count_V1 - factor */; + return _toStringPercent_V1( + &m->basic.staking_scale_validator_count_V1.factor, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 2060: /* module 8 call 12 */ + switch (itemIdx) { + default: + return parser_no_data; + } + case 2061: /* module 8 call 13 */ + switch (itemIdx) { + default: + return parser_no_data; + } + case 2062: /* module 8 call 14 */ + switch (itemIdx) { + case 0: /* staking_set_invulnerables_V1 - invulnerables */; + return _toStringVecAccountId_V1( + &m->basic.staking_set_invulnerables_V1.invulnerables, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 2063: /* module 8 call 15 */ + switch (itemIdx) { + case 0: /* staking_force_unstake_V1 - stash */; + return _toStringAccountId_V1( + &m->basic.staking_force_unstake_V1.stash, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* staking_force_unstake_V1 - num_slashing_spans */; + return _toStringu32( + &m->basic.staking_force_unstake_V1.num_slashing_spans, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 2064: /* module 8 call 16 */ + switch (itemIdx) { + default: + return parser_no_data; + } + case 2065: /* module 8 call 17 */ + switch (itemIdx) { + case 0: /* staking_cancel_deferred_slash_V1 - era */; + return _toStringEraIndex_V1( + &m->basic.staking_cancel_deferred_slash_V1.era, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* staking_cancel_deferred_slash_V1 - slash_indices */; + return _toStringVecu32( + &m->basic.staking_cancel_deferred_slash_V1.slash_indices, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 2068: /* module 8 call 20 */ + switch (itemIdx) { + case 0: /* staking_set_history_depth_V1 - new_history_depth */; + return _toStringCompactEraIndex_V1( + &m->basic.staking_set_history_depth_V1.new_history_depth, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* staking_set_history_depth_V1 - _era_items_deleted */; + return _toStringCompactu32( + &m->basic.staking_set_history_depth_V1._era_items_deleted, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 2069: /* module 8 call 21 */ + switch (itemIdx) { + case 0: /* staking_reap_stash_V1 - stash */; + return _toStringAccountId_V1( + &m->basic.staking_reap_stash_V1.stash, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* staking_reap_stash_V1 - num_slashing_spans */; + return _toStringu32( + &m->basic.staking_reap_stash_V1.num_slashing_spans, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 2070: /* module 8 call 22 */ + switch (itemIdx) { + case 0: /* staking_submit_election_solution_V1 - winners */; + return _toStringVecValidatorIndex_V1( + &m->basic.staking_submit_election_solution_V1.winners, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* staking_submit_election_solution_V1 - compact */; + return _toStringCompactAssignments_V1( + &m->basic.staking_submit_election_solution_V1.compact, + outValue, outValueLen, + pageIdx, pageCount); + case 2: /* staking_submit_election_solution_V1 - score */; + return _toStringElectionScore_V1( + &m->basic.staking_submit_election_solution_V1.score, + outValue, outValueLen, + pageIdx, pageCount); + case 3: /* staking_submit_election_solution_V1 - era */; + return _toStringEraIndex_V1( + &m->basic.staking_submit_election_solution_V1.era, + outValue, outValueLen, + pageIdx, pageCount); + case 4: /* staking_submit_election_solution_V1 - size */; + return _toStringElectionSize_V1( + &m->basic.staking_submit_election_solution_V1.size, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 2071: /* module 8 call 23 */ + switch (itemIdx) { + case 0: /* staking_submit_election_solution_unsigned_V1 - winners */; + return _toStringVecValidatorIndex_V1( + &m->basic.staking_submit_election_solution_unsigned_V1.winners, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* staking_submit_election_solution_unsigned_V1 - compact */; + return _toStringCompactAssignments_V1( + &m->basic.staking_submit_election_solution_unsigned_V1.compact, + outValue, outValueLen, + pageIdx, pageCount); + case 2: /* staking_submit_election_solution_unsigned_V1 - score */; + return _toStringElectionScore_V1( + &m->basic.staking_submit_election_solution_unsigned_V1.score, + outValue, outValueLen, + pageIdx, pageCount); + case 3: /* staking_submit_election_solution_unsigned_V1 - era */; + return _toStringEraIndex_V1( + &m->basic.staking_submit_election_solution_unsigned_V1.era, + outValue, outValueLen, + pageIdx, pageCount); + case 4: /* staking_submit_election_solution_unsigned_V1 - size */; + return _toStringElectionSize_V1( + &m->basic.staking_submit_election_solution_unsigned_V1.size, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 2560: /* module 10 call 0 */ + switch (itemIdx) { + case 0: /* democracy_propose_V1 - proposal_hash */; + return _toStringHash( + &m->basic.democracy_propose_V1.proposal_hash, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* democracy_propose_V1 - value */; + return _toStringCompactBalanceOf( + &m->basic.democracy_propose_V1.value, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 2561: /* module 10 call 1 */ + switch (itemIdx) { + case 0: /* democracy_second_V1 - proposal */; + return _toStringCompactPropIndex_V1( + &m->basic.democracy_second_V1.proposal, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* democracy_second_V1 - seconds_upper_bound */; + return _toStringCompactu32( + &m->basic.democracy_second_V1.seconds_upper_bound, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 2562: /* module 10 call 2 */ + switch (itemIdx) { + case 0: /* democracy_vote_V1 - ref_index */; + return _toStringCompactReferendumIndex_V1( + &m->basic.democracy_vote_V1.ref_index, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* democracy_vote_V1 - vote */; + return _toStringAccountVote_V1( + &m->basic.democracy_vote_V1.vote, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 2563: /* module 10 call 3 */ + switch (itemIdx) { + case 0: /* democracy_emergency_cancel_V1 - ref_index */; + return _toStringReferendumIndex_V1( + &m->basic.democracy_emergency_cancel_V1.ref_index, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 2564: /* module 10 call 4 */ + switch (itemIdx) { + case 0: /* democracy_external_propose_V1 - proposal_hash */; + return _toStringHash( + &m->basic.democracy_external_propose_V1.proposal_hash, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 2565: /* module 10 call 5 */ + switch (itemIdx) { + case 0: /* democracy_external_propose_majority_V1 - proposal_hash */; + return _toStringHash( + &m->basic.democracy_external_propose_majority_V1.proposal_hash, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 2566: /* module 10 call 6 */ + switch (itemIdx) { + case 0: /* democracy_external_propose_default_V1 - proposal_hash */; + return _toStringHash( + &m->basic.democracy_external_propose_default_V1.proposal_hash, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 2567: /* module 10 call 7 */ + switch (itemIdx) { + case 0: /* democracy_fast_track_V1 - proposal_hash */; + return _toStringHash( + &m->basic.democracy_fast_track_V1.proposal_hash, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* democracy_fast_track_V1 - voting_period */; + return _toStringBlockNumber( + &m->basic.democracy_fast_track_V1.voting_period, + outValue, outValueLen, + pageIdx, pageCount); + case 2: /* democracy_fast_track_V1 - delay */; + return _toStringBlockNumber( + &m->basic.democracy_fast_track_V1.delay, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 2568: /* module 10 call 8 */ + switch (itemIdx) { + case 0: /* democracy_veto_external_V1 - proposal_hash */; + return _toStringHash( + &m->basic.democracy_veto_external_V1.proposal_hash, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 2569: /* module 10 call 9 */ + switch (itemIdx) { + case 0: /* democracy_cancel_referendum_V1 - ref_index */; + return _toStringCompactReferendumIndex_V1( + &m->basic.democracy_cancel_referendum_V1.ref_index, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 2570: /* module 10 call 10 */ + switch (itemIdx) { + case 0: /* democracy_cancel_queued_V1 - which */; + return _toStringReferendumIndex_V1( + &m->basic.democracy_cancel_queued_V1.which, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 2571: /* module 10 call 11 */ + switch (itemIdx) { + case 0: /* democracy_delegate_V1 - to */; + return _toStringAccountId_V1( + &m->basic.democracy_delegate_V1.to, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* democracy_delegate_V1 - conviction */; + return _toStringConviction_V1( + &m->basic.democracy_delegate_V1.conviction, + outValue, outValueLen, + pageIdx, pageCount); + case 2: /* democracy_delegate_V1 - balance */; + return _toStringBalanceOf( + &m->basic.democracy_delegate_V1.balance, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 2572: /* module 10 call 12 */ + switch (itemIdx) { + default: + return parser_no_data; + } + case 2573: /* module 10 call 13 */ + switch (itemIdx) { + default: + return parser_no_data; + } + case 2574: /* module 10 call 14 */ + switch (itemIdx) { + case 0: /* democracy_note_preimage_V1 - encoded_proposal */; + return _toStringBytes( + &m->basic.democracy_note_preimage_V1.encoded_proposal, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 2575: /* module 10 call 15 */ + switch (itemIdx) { + case 0: /* democracy_note_preimage_operational_V1 - encoded_proposal */; + return _toStringBytes( + &m->basic.democracy_note_preimage_operational_V1.encoded_proposal, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 2576: /* module 10 call 16 */ + switch (itemIdx) { + case 0: /* democracy_note_imminent_preimage_V1 - encoded_proposal */; + return _toStringBytes( + &m->basic.democracy_note_imminent_preimage_V1.encoded_proposal, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 2577: /* module 10 call 17 */ + switch (itemIdx) { + case 0: /* democracy_note_imminent_preimage_operational_V1 - encoded_proposal */; + return _toStringBytes( + &m->basic.democracy_note_imminent_preimage_operational_V1.encoded_proposal, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 2578: /* module 10 call 18 */ + switch (itemIdx) { + case 0: /* democracy_reap_preimage_V1 - proposal_hash */; + return _toStringHash( + &m->basic.democracy_reap_preimage_V1.proposal_hash, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* democracy_reap_preimage_V1 - proposal_len_upper_bound */; + return _toStringCompactu32( + &m->basic.democracy_reap_preimage_V1.proposal_len_upper_bound, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 2579: /* module 10 call 19 */ + switch (itemIdx) { + case 0: /* democracy_unlock_V1 - target */; + return _toStringAccountId_V1( + &m->basic.democracy_unlock_V1.target, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 2580: /* module 10 call 20 */ + switch (itemIdx) { + case 0: /* democracy_remove_vote_V1 - index */; + return _toStringReferendumIndex_V1( + &m->basic.democracy_remove_vote_V1.index, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 2581: /* module 10 call 21 */ + switch (itemIdx) { + case 0: /* democracy_remove_other_vote_V1 - target */; + return _toStringAccountId_V1( + &m->basic.democracy_remove_other_vote_V1.target, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* democracy_remove_other_vote_V1 - index */; + return _toStringReferendumIndex_V1( + &m->basic.democracy_remove_other_vote_V1.index, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 2582: /* module 10 call 22 */ + switch (itemIdx) { + case 0: /* democracy_enact_proposal_V1 - proposal_hash */; + return _toStringHash( + &m->basic.democracy_enact_proposal_V1.proposal_hash, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* democracy_enact_proposal_V1 - index */; + return _toStringReferendumIndex_V1( + &m->basic.democracy_enact_proposal_V1.index, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 2583: /* module 10 call 23 */ + switch (itemIdx) { + case 0: /* democracy_blacklist_V1 - proposal_hash */; + return _toStringHash( + &m->basic.democracy_blacklist_V1.proposal_hash, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* democracy_blacklist_V1 - maybe_ref_index */; + return _toStringOptionReferendumIndex_V1( + &m->basic.democracy_blacklist_V1.maybe_ref_index, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 2584: /* module 10 call 24 */ + switch (itemIdx) { + case 0: /* democracy_cancel_proposal_V1 - prop_index */; + return _toStringCompactPropIndex_V1( + &m->basic.democracy_cancel_proposal_V1.prop_index, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 2816: /* module 11 call 0 */ + switch (itemIdx) { + case 0: /* council_set_members_V1 - new_members */; + return _toStringVecAccountId_V1( + &m->basic.council_set_members_V1.new_members, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* council_set_members_V1 - prime */; + return _toStringOptionAccountId_V1( + &m->basic.council_set_members_V1.prime, + outValue, outValueLen, + pageIdx, pageCount); + case 2: /* council_set_members_V1 - old_count */; + return _toStringMemberCount_V1( + &m->basic.council_set_members_V1.old_count, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 2817: /* module 11 call 1 */ + switch (itemIdx) { + case 0: /* council_execute_V1 - proposal */; + return _toStringProposal( + &m->basic.council_execute_V1.proposal, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* council_execute_V1 - length_bound */; + return _toStringCompactu32( + &m->basic.council_execute_V1.length_bound, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 2818: /* module 11 call 2 */ + switch (itemIdx) { + case 0: /* council_propose_V1 - threshold */; + return _toStringCompactMemberCount_V1( + &m->basic.council_propose_V1.threshold, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* council_propose_V1 - proposal */; + return _toStringProposal( + &m->basic.council_propose_V1.proposal, + outValue, outValueLen, + pageIdx, pageCount); + case 2: /* council_propose_V1 - length_bound */; + return _toStringCompactu32( + &m->basic.council_propose_V1.length_bound, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 2819: /* module 11 call 3 */ + switch (itemIdx) { + case 0: /* council_vote_V1 - proposal */; + return _toStringHash( + &m->basic.council_vote_V1.proposal, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* council_vote_V1 - index */; + return _toStringCompactProposalIndex_V1( + &m->basic.council_vote_V1.index, + outValue, outValueLen, + pageIdx, pageCount); + case 2: /* council_vote_V1 - approve */; + return _toStringbool( + &m->basic.council_vote_V1.approve, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 2820: /* module 11 call 4 */ + switch (itemIdx) { + case 0: /* council_close_V1 - proposal_hash */; + return _toStringHash( + &m->basic.council_close_V1.proposal_hash, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* council_close_V1 - index */; + return _toStringCompactProposalIndex_V1( + &m->basic.council_close_V1.index, + outValue, outValueLen, + pageIdx, pageCount); + case 2: /* council_close_V1 - proposal_weight_bound */; + return _toStringCompactWeight_V1( + &m->basic.council_close_V1.proposal_weight_bound, + outValue, outValueLen, + pageIdx, pageCount); + case 3: /* council_close_V1 - length_bound */; + return _toStringCompactu32( + &m->basic.council_close_V1.length_bound, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 2821: /* module 11 call 5 */ + switch (itemIdx) { + case 0: /* council_disapprove_proposal_V1 - proposal_hash */; + return _toStringHash( + &m->basic.council_disapprove_proposal_V1.proposal_hash, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 3072: /* module 12 call 0 */ + switch (itemIdx) { + case 0: /* elections_vote_V1 - votes */; + return _toStringVecAccountId_V1( + &m->basic.elections_vote_V1.votes, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* elections_vote_V1 - value */; + return _toStringCompactBalanceOf( + &m->basic.elections_vote_V1.value, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 3073: /* module 12 call 1 */ + switch (itemIdx) { + default: + return parser_no_data; + } + case 3074: /* module 12 call 2 */ + switch (itemIdx) { + case 0: /* elections_report_defunct_voter_V1 - defunct */; + return _toStringDefunctVoter_V1( + &m->basic.elections_report_defunct_voter_V1.defunct, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 3075: /* module 12 call 3 */ + switch (itemIdx) { + case 0: /* elections_submit_candidacy_V1 - candidate_count */; + return _toStringCompactu32( + &m->basic.elections_submit_candidacy_V1.candidate_count, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 3076: /* module 12 call 4 */ + switch (itemIdx) { + case 0: /* elections_renounce_candidacy_V1 - renouncing */; + return _toStringRenouncing_V1( + &m->basic.elections_renounce_candidacy_V1.renouncing, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 3077: /* module 12 call 5 */ + switch (itemIdx) { + case 0: /* elections_remove_member_V1 - who */; + return _toStringLookupSource_V1( + &m->basic.elections_remove_member_V1.who, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* elections_remove_member_V1 - has_replacement */; + return _toStringbool( + &m->basic.elections_remove_member_V1.has_replacement, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 3584: /* module 14 call 0 */ + switch (itemIdx) { + case 0: /* grandpa_report_equivocation_V1 - equivocation_proof */; + return _toStringGrandpaEquivocationProof_V1( + &m->basic.grandpa_report_equivocation_V1.equivocation_proof, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* grandpa_report_equivocation_V1 - key_owner_proof */; + return _toStringKeyOwnerProof_V1( + &m->basic.grandpa_report_equivocation_V1.key_owner_proof, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 3585: /* module 14 call 1 */ + switch (itemIdx) { + case 0: /* grandpa_report_equivocation_unsigned_V1 - equivocation_proof */; + return _toStringGrandpaEquivocationProof_V1( + &m->basic.grandpa_report_equivocation_unsigned_V1.equivocation_proof, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* grandpa_report_equivocation_unsigned_V1 - key_owner_proof */; + return _toStringKeyOwnerProof_V1( + &m->basic.grandpa_report_equivocation_unsigned_V1.key_owner_proof, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 3586: /* module 14 call 2 */ + switch (itemIdx) { + case 0: /* grandpa_note_stalled_V1 - delay */; + return _toStringBlockNumber( + &m->basic.grandpa_note_stalled_V1.delay, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* grandpa_note_stalled_V1 - best_finalized_block_number */; + return _toStringBlockNumber( + &m->basic.grandpa_note_stalled_V1.best_finalized_block_number, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 3840: /* module 15 call 0 */ + switch (itemIdx) { + case 0: /* treasury_propose_spend_V1 - value */; + return _toStringCompactBalanceOf( + &m->basic.treasury_propose_spend_V1.value, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* treasury_propose_spend_V1 - beneficiary */; + return _toStringLookupSource_V1( + &m->basic.treasury_propose_spend_V1.beneficiary, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 3841: /* module 15 call 1 */ + switch (itemIdx) { + case 0: /* treasury_reject_proposal_V1 - proposal_id */; + return _toStringCompactProposalIndex_V1( + &m->basic.treasury_reject_proposal_V1.proposal_id, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 3842: /* module 15 call 2 */ + switch (itemIdx) { + case 0: /* treasury_approve_proposal_V1 - proposal_id */; + return _toStringCompactProposalIndex_V1( + &m->basic.treasury_approve_proposal_V1.proposal_id, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 4096: /* module 16 call 0 */ + switch (itemIdx) { + case 0: /* contracts_update_schedule_V1 - schedule */; + return _toStringSchedule_V1( + &m->basic.contracts_update_schedule_V1.schedule, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 4097: /* module 16 call 1 */ + switch (itemIdx) { + case 0: /* contracts_put_code_V1 - code */; + return _toStringBytes( + &m->basic.contracts_put_code_V1.code, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 4098: /* module 16 call 2 */ + switch (itemIdx) { + case 0: /* contracts_call_V1 - dest */; + return _toStringLookupSource_V1( + &m->basic.contracts_call_V1.dest, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* contracts_call_V1 - value */; + return _toStringCompactBalanceOf( + &m->basic.contracts_call_V1.value, + outValue, outValueLen, + pageIdx, pageCount); + case 2: /* contracts_call_V1 - gas_limit */; + return _toStringCompactGas_V1( + &m->basic.contracts_call_V1.gas_limit, + outValue, outValueLen, + pageIdx, pageCount); + case 3: /* contracts_call_V1 - data */; + return _toStringBytes( + &m->basic.contracts_call_V1.data, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 4099: /* module 16 call 3 */ + switch (itemIdx) { + case 0: /* contracts_instantiate_V1 - endowment */; + return _toStringCompactBalanceOf( + &m->basic.contracts_instantiate_V1.endowment, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* contracts_instantiate_V1 - gas_limit */; + return _toStringCompactGas_V1( + &m->basic.contracts_instantiate_V1.gas_limit, + outValue, outValueLen, + pageIdx, pageCount); + case 2: /* contracts_instantiate_V1 - code_hash */; + return _toStringCodeHash_V1( + &m->basic.contracts_instantiate_V1.code_hash, + outValue, outValueLen, + pageIdx, pageCount); + case 3: /* contracts_instantiate_V1 - data */; + return _toStringBytes( + &m->basic.contracts_instantiate_V1.data, + outValue, outValueLen, + pageIdx, pageCount); + case 4: /* contracts_instantiate_V1 - salt */; + return _toStringBytes( + &m->basic.contracts_instantiate_V1.salt, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 4100: /* module 16 call 4 */ + switch (itemIdx) { + case 0: /* contracts_claim_surcharge_V1 - dest */; + return _toStringAccountId_V1( + &m->basic.contracts_claim_surcharge_V1.dest, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* contracts_claim_surcharge_V1 - aux_sender */; + return _toStringOptionAccountId_V1( + &m->basic.contracts_claim_surcharge_V1.aux_sender, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 4352: /* module 17 call 0 */ + switch (itemIdx) { + case 0: /* sudo_sudo_V1 - call */; + return _toStringCall( + &m->basic.sudo_sudo_V1.call, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 4353: /* module 17 call 1 */ + switch (itemIdx) { + case 0: /* sudo_sudo_unchecked_weight_V1 - call */; + return _toStringCall( + &m->basic.sudo_sudo_unchecked_weight_V1.call, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* sudo_sudo_unchecked_weight_V1 - _weight */; + return _toStringWeight_V1( + &m->basic.sudo_sudo_unchecked_weight_V1._weight, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 4354: /* module 17 call 2 */ + switch (itemIdx) { + case 0: /* sudo_set_key_V1 - new_ */; + return _toStringLookupSource_V1( + &m->basic.sudo_set_key_V1.new_, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 4355: /* module 17 call 3 */ + switch (itemIdx) { + case 0: /* sudo_sudo_as_V1 - who */; + return _toStringLookupSource_V1( + &m->basic.sudo_sudo_as_V1.who, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* sudo_sudo_as_V1 - call */; + return _toStringCall( + &m->basic.sudo_sudo_as_V1.call, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 4608: /* module 18 call 0 */ + switch (itemIdx) { + case 0: /* imonline_heartbeat_V1 - heartbeat */; + return _toStringHeartbeat( + &m->basic.imonline_heartbeat_V1.heartbeat, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* imonline_heartbeat_V1 - _signature */; + return _toStringSignature_V1( + &m->basic.imonline_heartbeat_V1._signature, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 5888: /* module 23 call 0 */ + switch (itemIdx) { + case 0: /* identity_add_registrar_V1 - account */; + return _toStringAccountId_V1( + &m->basic.identity_add_registrar_V1.account, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 5889: /* module 23 call 1 */ + switch (itemIdx) { + case 0: /* identity_set_identity_V1 - info */; + return _toStringIdentityInfo_V1( + &m->basic.identity_set_identity_V1.info, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 5890: /* module 23 call 2 */ + switch (itemIdx) { + case 0: /* identity_set_subs_V1 - subs */; + return _toStringVecTupleAccountIdData_V1( + &m->basic.identity_set_subs_V1.subs, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 5891: /* module 23 call 3 */ + switch (itemIdx) { + default: + return parser_no_data; + } + case 5892: /* module 23 call 4 */ + switch (itemIdx) { + case 0: /* identity_request_judgement_V1 - reg_index */; + return _toStringCompactRegistrarIndex_V1( + &m->basic.identity_request_judgement_V1.reg_index, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* identity_request_judgement_V1 - max_fee */; + return _toStringCompactBalanceOf( + &m->basic.identity_request_judgement_V1.max_fee, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 5893: /* module 23 call 5 */ + switch (itemIdx) { + case 0: /* identity_cancel_request_V1 - reg_index */; + return _toStringRegistrarIndex_V1( + &m->basic.identity_cancel_request_V1.reg_index, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 5894: /* module 23 call 6 */ + switch (itemIdx) { + case 0: /* identity_set_fee_V1 - index */; + return _toStringCompactRegistrarIndex_V1( + &m->basic.identity_set_fee_V1.index, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* identity_set_fee_V1 - fee */; + return _toStringCompactBalanceOf( + &m->basic.identity_set_fee_V1.fee, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 5895: /* module 23 call 7 */ + switch (itemIdx) { + case 0: /* identity_set_account_id_V1 - index */; + return _toStringCompactRegistrarIndex_V1( + &m->basic.identity_set_account_id_V1.index, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* identity_set_account_id_V1 - new_ */; + return _toStringAccountId_V1( + &m->basic.identity_set_account_id_V1.new_, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 5896: /* module 23 call 8 */ + switch (itemIdx) { + case 0: /* identity_set_fields_V1 - index */; + return _toStringCompactRegistrarIndex_V1( + &m->basic.identity_set_fields_V1.index, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* identity_set_fields_V1 - fields */; + return _toStringIdentityFields_V1( + &m->basic.identity_set_fields_V1.fields, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 5897: /* module 23 call 9 */ + switch (itemIdx) { + case 0: /* identity_provide_judgement_V1 - reg_index */; + return _toStringCompactRegistrarIndex_V1( + &m->basic.identity_provide_judgement_V1.reg_index, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* identity_provide_judgement_V1 - target */; + return _toStringLookupSource_V1( + &m->basic.identity_provide_judgement_V1.target, + outValue, outValueLen, + pageIdx, pageCount); + case 2: /* identity_provide_judgement_V1 - judgement */; + return _toStringIdentityJudgement_V1( + &m->basic.identity_provide_judgement_V1.judgement, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 5898: /* module 23 call 10 */ + switch (itemIdx) { + case 0: /* identity_kill_identity_V1 - target */; + return _toStringLookupSource_V1( + &m->basic.identity_kill_identity_V1.target, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 5899: /* module 23 call 11 */ + switch (itemIdx) { + case 0: /* identity_add_sub_V1 - sub */; + return _toStringLookupSource_V1( + &m->basic.identity_add_sub_V1.sub, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* identity_add_sub_V1 - data */; + return _toStringData( + &m->basic.identity_add_sub_V1.data, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 5900: /* module 23 call 12 */ + switch (itemIdx) { + case 0: /* identity_rename_sub_V1 - sub */; + return _toStringLookupSource_V1( + &m->basic.identity_rename_sub_V1.sub, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* identity_rename_sub_V1 - data */; + return _toStringData( + &m->basic.identity_rename_sub_V1.data, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 5901: /* module 23 call 13 */ + switch (itemIdx) { + case 0: /* identity_remove_sub_V1 - sub */; + return _toStringLookupSource_V1( + &m->basic.identity_remove_sub_V1.sub, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 5902: /* module 23 call 14 */ + switch (itemIdx) { + default: + return parser_no_data; + } + case 6144: /* module 24 call 0 */ + switch (itemIdx) { + case 0: /* recovery_as_recovered_V1 - account */; + return _toStringAccountId_V1( + &m->basic.recovery_as_recovered_V1.account, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* recovery_as_recovered_V1 - call */; + return _toStringCall( + &m->basic.recovery_as_recovered_V1.call, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 6145: /* module 24 call 1 */ + switch (itemIdx) { + case 0: /* recovery_set_recovered_V1 - lost */; + return _toStringAccountId_V1( + &m->basic.recovery_set_recovered_V1.lost, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* recovery_set_recovered_V1 - rescuer */; + return _toStringAccountId_V1( + &m->basic.recovery_set_recovered_V1.rescuer, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 6146: /* module 24 call 2 */ + switch (itemIdx) { + case 0: /* recovery_create_recovery_V1 - friends */; + return _toStringVecAccountId_V1( + &m->basic.recovery_create_recovery_V1.friends, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* recovery_create_recovery_V1 - threshold */; + return _toStringu16( + &m->basic.recovery_create_recovery_V1.threshold, + outValue, outValueLen, + pageIdx, pageCount); + case 2: /* recovery_create_recovery_V1 - delay_period */; + return _toStringBlockNumber( + &m->basic.recovery_create_recovery_V1.delay_period, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 6147: /* module 24 call 3 */ + switch (itemIdx) { + case 0: /* recovery_initiate_recovery_V1 - account */; + return _toStringAccountId_V1( + &m->basic.recovery_initiate_recovery_V1.account, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 6148: /* module 24 call 4 */ + switch (itemIdx) { + case 0: /* recovery_vouch_recovery_V1 - lost */; + return _toStringAccountId_V1( + &m->basic.recovery_vouch_recovery_V1.lost, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* recovery_vouch_recovery_V1 - rescuer */; + return _toStringAccountId_V1( + &m->basic.recovery_vouch_recovery_V1.rescuer, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 6149: /* module 24 call 5 */ + switch (itemIdx) { + case 0: /* recovery_claim_recovery_V1 - account */; + return _toStringAccountId_V1( + &m->basic.recovery_claim_recovery_V1.account, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 6150: /* module 24 call 6 */ + switch (itemIdx) { + case 0: /* recovery_close_recovery_V1 - rescuer */; + return _toStringAccountId_V1( + &m->basic.recovery_close_recovery_V1.rescuer, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 6151: /* module 24 call 7 */ + switch (itemIdx) { + default: + return parser_no_data; + } + case 6152: /* module 24 call 8 */ + switch (itemIdx) { + case 0: /* recovery_cancel_recovered_V1 - account */; + return _toStringAccountId_V1( + &m->basic.recovery_cancel_recovered_V1.account, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 6400: /* module 25 call 0 */ + switch (itemIdx) { + default: + return parser_no_data; + } + case 6401: /* module 25 call 1 */ + switch (itemIdx) { + case 0: /* vesting_vest_other_V1 - target */; + return _toStringLookupSource_V1( + &m->basic.vesting_vest_other_V1.target, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 6402: /* module 25 call 2 */ + switch (itemIdx) { + case 0: /* vesting_vested_transfer_V1 - target */; + return _toStringLookupSource_V1( + &m->basic.vesting_vested_transfer_V1.target, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* vesting_vested_transfer_V1 - schedule */; + return _toStringVestingInfo_V1( + &m->basic.vesting_vested_transfer_V1.schedule, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 6403: /* module 25 call 3 */ + switch (itemIdx) { + case 0: /* vesting_force_vested_transfer_V1 - source */; + return _toStringLookupSource_V1( + &m->basic.vesting_force_vested_transfer_V1.source, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* vesting_force_vested_transfer_V1 - target */; + return _toStringLookupSource_V1( + &m->basic.vesting_force_vested_transfer_V1.target, + outValue, outValueLen, + pageIdx, pageCount); + case 2: /* vesting_force_vested_transfer_V1 - schedule */; + return _toStringVestingInfo_V1( + &m->basic.vesting_force_vested_transfer_V1.schedule, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 6656: /* module 26 call 0 */ + switch (itemIdx) { + case 0: /* scheduler_schedule_V1 - when */; + return _toStringBlockNumber( + &m->basic.scheduler_schedule_V1.when, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* scheduler_schedule_V1 - maybe_periodic */; + return _toStringOptionPeriod_V1( + &m->basic.scheduler_schedule_V1.maybe_periodic, + outValue, outValueLen, + pageIdx, pageCount); + case 2: /* scheduler_schedule_V1 - priority */; + return _toStringPriority_V1( + &m->basic.scheduler_schedule_V1.priority, + outValue, outValueLen, + pageIdx, pageCount); + case 3: /* scheduler_schedule_V1 - call */; + return _toStringCall( + &m->basic.scheduler_schedule_V1.call, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 6657: /* module 26 call 1 */ + switch (itemIdx) { + case 0: /* scheduler_cancel_V1 - when */; + return _toStringBlockNumber( + &m->basic.scheduler_cancel_V1.when, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* scheduler_cancel_V1 - index */; + return _toStringu32( + &m->basic.scheduler_cancel_V1.index, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 6658: /* module 26 call 2 */ + switch (itemIdx) { + case 0: /* scheduler_schedule_named_V1 - id */; + return _toStringBytes( + &m->basic.scheduler_schedule_named_V1.id, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* scheduler_schedule_named_V1 - when */; + return _toStringBlockNumber( + &m->basic.scheduler_schedule_named_V1.when, + outValue, outValueLen, + pageIdx, pageCount); + case 2: /* scheduler_schedule_named_V1 - maybe_periodic */; + return _toStringOptionPeriod_V1( + &m->basic.scheduler_schedule_named_V1.maybe_periodic, + outValue, outValueLen, + pageIdx, pageCount); + case 3: /* scheduler_schedule_named_V1 - priority */; + return _toStringPriority_V1( + &m->basic.scheduler_schedule_named_V1.priority, + outValue, outValueLen, + pageIdx, pageCount); + case 4: /* scheduler_schedule_named_V1 - call */; + return _toStringCall( + &m->basic.scheduler_schedule_named_V1.call, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 6659: /* module 26 call 3 */ + switch (itemIdx) { + case 0: /* scheduler_cancel_named_V1 - id */; + return _toStringBytes( + &m->basic.scheduler_cancel_named_V1.id, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 6660: /* module 26 call 4 */ + switch (itemIdx) { + case 0: /* scheduler_schedule_after_V1 - after */; + return _toStringBlockNumber( + &m->basic.scheduler_schedule_after_V1.after, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* scheduler_schedule_after_V1 - maybe_periodic */; + return _toStringOptionPeriod_V1( + &m->basic.scheduler_schedule_after_V1.maybe_periodic, + outValue, outValueLen, + pageIdx, pageCount); + case 2: /* scheduler_schedule_after_V1 - priority */; + return _toStringPriority_V1( + &m->basic.scheduler_schedule_after_V1.priority, + outValue, outValueLen, + pageIdx, pageCount); + case 3: /* scheduler_schedule_after_V1 - call */; + return _toStringCall( + &m->basic.scheduler_schedule_after_V1.call, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 6661: /* module 26 call 5 */ + switch (itemIdx) { + case 0: /* scheduler_schedule_named_after_V1 - id */; + return _toStringBytes( + &m->basic.scheduler_schedule_named_after_V1.id, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* scheduler_schedule_named_after_V1 - after */; + return _toStringBlockNumber( + &m->basic.scheduler_schedule_named_after_V1.after, + outValue, outValueLen, + pageIdx, pageCount); + case 2: /* scheduler_schedule_named_after_V1 - maybe_periodic */; + return _toStringOptionPeriod_V1( + &m->basic.scheduler_schedule_named_after_V1.maybe_periodic, + outValue, outValueLen, + pageIdx, pageCount); + case 3: /* scheduler_schedule_named_after_V1 - priority */; + return _toStringPriority_V1( + &m->basic.scheduler_schedule_named_after_V1.priority, + outValue, outValueLen, + pageIdx, pageCount); + case 4: /* scheduler_schedule_named_after_V1 - call */; + return _toStringCall( + &m->basic.scheduler_schedule_named_after_V1.call, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 6912: /* module 27 call 0 */ + switch (itemIdx) { + case 0: /* proxy_proxy_V1 - real */; + return _toStringAccountId_V1( + &m->basic.proxy_proxy_V1.real, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* proxy_proxy_V1 - force_proxy_type */; + return _toStringOptionProxyType_V1( + &m->basic.proxy_proxy_V1.force_proxy_type, + outValue, outValueLen, + pageIdx, pageCount); + case 2: /* proxy_proxy_V1 - call */; + return _toStringCall( + &m->basic.proxy_proxy_V1.call, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 6913: /* module 27 call 1 */ + switch (itemIdx) { + case 0: /* proxy_add_proxy_V1 - delegate */; + return _toStringAccountId_V1( + &m->basic.proxy_add_proxy_V1.delegate, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* proxy_add_proxy_V1 - proxy_type */; + return _toStringProxyType_V1( + &m->basic.proxy_add_proxy_V1.proxy_type, + outValue, outValueLen, + pageIdx, pageCount); + case 2: /* proxy_add_proxy_V1 - delay */; + return _toStringBlockNumber( + &m->basic.proxy_add_proxy_V1.delay, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 6914: /* module 27 call 2 */ + switch (itemIdx) { + case 0: /* proxy_remove_proxy_V1 - delegate */; + return _toStringAccountId_V1( + &m->basic.proxy_remove_proxy_V1.delegate, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* proxy_remove_proxy_V1 - proxy_type */; + return _toStringProxyType_V1( + &m->basic.proxy_remove_proxy_V1.proxy_type, + outValue, outValueLen, + pageIdx, pageCount); + case 2: /* proxy_remove_proxy_V1 - delay */; + return _toStringBlockNumber( + &m->basic.proxy_remove_proxy_V1.delay, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 6915: /* module 27 call 3 */ + switch (itemIdx) { + default: + return parser_no_data; + } + case 6916: /* module 27 call 4 */ + switch (itemIdx) { + case 0: /* proxy_anonymous_V1 - proxy_type */; + return _toStringProxyType_V1( + &m->basic.proxy_anonymous_V1.proxy_type, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* proxy_anonymous_V1 - delay */; + return _toStringBlockNumber( + &m->basic.proxy_anonymous_V1.delay, + outValue, outValueLen, + pageIdx, pageCount); + case 2: /* proxy_anonymous_V1 - index */; + return _toStringu16( + &m->basic.proxy_anonymous_V1.index, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 6917: /* module 27 call 5 */ + switch (itemIdx) { + case 0: /* proxy_kill_anonymous_V1 - spawner */; + return _toStringAccountId_V1( + &m->basic.proxy_kill_anonymous_V1.spawner, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* proxy_kill_anonymous_V1 - proxy_type */; + return _toStringProxyType_V1( + &m->basic.proxy_kill_anonymous_V1.proxy_type, + outValue, outValueLen, + pageIdx, pageCount); + case 2: /* proxy_kill_anonymous_V1 - index */; + return _toStringu16( + &m->basic.proxy_kill_anonymous_V1.index, + outValue, outValueLen, + pageIdx, pageCount); + case 3: /* proxy_kill_anonymous_V1 - height */; + return _toStringCompactBlockNumber( + &m->basic.proxy_kill_anonymous_V1.height, + outValue, outValueLen, + pageIdx, pageCount); + case 4: /* proxy_kill_anonymous_V1 - ext_index */; + return _toStringCompactu32( + &m->basic.proxy_kill_anonymous_V1.ext_index, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 6918: /* module 27 call 6 */ + switch (itemIdx) { + case 0: /* proxy_announce_V1 - real */; + return _toStringAccountId_V1( + &m->basic.proxy_announce_V1.real, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* proxy_announce_V1 - call_hash */; + return _toStringCallHashOf_V1( + &m->basic.proxy_announce_V1.call_hash, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 6919: /* module 27 call 7 */ + switch (itemIdx) { + case 0: /* proxy_remove_announcement_V1 - real */; + return _toStringAccountId_V1( + &m->basic.proxy_remove_announcement_V1.real, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* proxy_remove_announcement_V1 - call_hash */; + return _toStringCallHashOf_V1( + &m->basic.proxy_remove_announcement_V1.call_hash, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 6920: /* module 27 call 8 */ + switch (itemIdx) { + case 0: /* proxy_reject_announcement_V1 - delegate */; + return _toStringAccountId_V1( + &m->basic.proxy_reject_announcement_V1.delegate, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* proxy_reject_announcement_V1 - call_hash */; + return _toStringCallHashOf_V1( + &m->basic.proxy_reject_announcement_V1.call_hash, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 6921: /* module 27 call 9 */ + switch (itemIdx) { + case 0: /* proxy_proxy_announced_V1 - delegate */; + return _toStringAccountId_V1( + &m->basic.proxy_proxy_announced_V1.delegate, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* proxy_proxy_announced_V1 - real */; + return _toStringAccountId_V1( + &m->basic.proxy_proxy_announced_V1.real, + outValue, outValueLen, + pageIdx, pageCount); + case 2: /* proxy_proxy_announced_V1 - force_proxy_type */; + return _toStringOptionProxyType_V1( + &m->basic.proxy_proxy_announced_V1.force_proxy_type, + outValue, outValueLen, + pageIdx, pageCount); + case 3: /* proxy_proxy_announced_V1 - call */; + return _toStringCall( + &m->basic.proxy_proxy_announced_V1.call, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 7168: /* module 28 call 0 */ + switch (itemIdx) { + case 0: /* multisig_as_multi_threshold_1_V1 - other_signatories */; + return _toStringVecAccountId_V1( + &m->basic.multisig_as_multi_threshold_1_V1.other_signatories, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* multisig_as_multi_threshold_1_V1 - call */; + return _toStringCall( + &m->basic.multisig_as_multi_threshold_1_V1.call, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 7169: /* module 28 call 1 */ + switch (itemIdx) { + case 0: /* multisig_as_multi_V1 - threshold */; + return _toStringu16( + &m->basic.multisig_as_multi_V1.threshold, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* multisig_as_multi_V1 - other_signatories */; + return _toStringVecAccountId_V1( + &m->basic.multisig_as_multi_V1.other_signatories, + outValue, outValueLen, + pageIdx, pageCount); + case 2: /* multisig_as_multi_V1 - maybe_timepoint */; + return _toStringOptionTimepoint_V1( + &m->basic.multisig_as_multi_V1.maybe_timepoint, + outValue, outValueLen, + pageIdx, pageCount); + case 3: /* multisig_as_multi_V1 - call */; + return _toStringOpaqueCall_V1( + &m->basic.multisig_as_multi_V1.call, + outValue, outValueLen, + pageIdx, pageCount); + case 4: /* multisig_as_multi_V1 - store_call */; + return _toStringbool( + &m->basic.multisig_as_multi_V1.store_call, + outValue, outValueLen, + pageIdx, pageCount); + case 5: /* multisig_as_multi_V1 - max_weight */; + return _toStringWeight_V1( + &m->basic.multisig_as_multi_V1.max_weight, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 7170: /* module 28 call 2 */ + switch (itemIdx) { + case 0: /* multisig_approve_as_multi_V1 - threshold */; + return _toStringu16( + &m->basic.multisig_approve_as_multi_V1.threshold, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* multisig_approve_as_multi_V1 - other_signatories */; + return _toStringVecAccountId_V1( + &m->basic.multisig_approve_as_multi_V1.other_signatories, + outValue, outValueLen, + pageIdx, pageCount); + case 2: /* multisig_approve_as_multi_V1 - maybe_timepoint */; + return _toStringOptionTimepoint_V1( + &m->basic.multisig_approve_as_multi_V1.maybe_timepoint, + outValue, outValueLen, + pageIdx, pageCount); + case 3: /* multisig_approve_as_multi_V1 - call_hash */; + return _toStringu8_array_32_V1( + &m->basic.multisig_approve_as_multi_V1.call_hash, + outValue, outValueLen, + pageIdx, pageCount); + case 4: /* multisig_approve_as_multi_V1 - max_weight */; + return _toStringWeight_V1( + &m->basic.multisig_approve_as_multi_V1.max_weight, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 7171: /* module 28 call 3 */ + switch (itemIdx) { + case 0: /* multisig_cancel_as_multi_V1 - threshold */; + return _toStringu16( + &m->basic.multisig_cancel_as_multi_V1.threshold, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* multisig_cancel_as_multi_V1 - other_signatories */; + return _toStringVecAccountId_V1( + &m->basic.multisig_cancel_as_multi_V1.other_signatories, + outValue, outValueLen, + pageIdx, pageCount); + case 2: /* multisig_cancel_as_multi_V1 - timepoint */; + return _toStringTimepoint_V1( + &m->basic.multisig_cancel_as_multi_V1.timepoint, + outValue, outValueLen, + pageIdx, pageCount); + case 3: /* multisig_cancel_as_multi_V1 - call_hash */; + return _toStringu8_array_32_V1( + &m->basic.multisig_cancel_as_multi_V1.call_hash, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 7424: /* module 29 call 0 */ + switch (itemIdx) { + case 0: /* assets_create_V1 - id */; + return _toStringCompactAssetId_V1( + &m->basic.assets_create_V1.id, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* assets_create_V1 - admin */; + return _toStringLookupSource_V1( + &m->basic.assets_create_V1.admin, + outValue, outValueLen, + pageIdx, pageCount); + case 2: /* assets_create_V1 - max_zombies */; + return _toStringu32( + &m->basic.assets_create_V1.max_zombies, + outValue, outValueLen, + pageIdx, pageCount); + case 3: /* assets_create_V1 - min_balance */; + return _toStringTAssetBalance_V1( + &m->basic.assets_create_V1.min_balance, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 7425: /* module 29 call 1 */ + switch (itemIdx) { + case 0: /* assets_force_create_V1 - id */; + return _toStringCompactAssetId_V1( + &m->basic.assets_force_create_V1.id, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* assets_force_create_V1 - owner */; + return _toStringLookupSource_V1( + &m->basic.assets_force_create_V1.owner, + outValue, outValueLen, + pageIdx, pageCount); + case 2: /* assets_force_create_V1 - max_zombies */; + return _toStringCompactu32( + &m->basic.assets_force_create_V1.max_zombies, + outValue, outValueLen, + pageIdx, pageCount); + case 3: /* assets_force_create_V1 - min_balance */; + return _toStringCompactTAssetBalance_V1( + &m->basic.assets_force_create_V1.min_balance, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 7426: /* module 29 call 2 */ + switch (itemIdx) { + case 0: /* assets_destroy_V1 - id */; + return _toStringCompactAssetId_V1( + &m->basic.assets_destroy_V1.id, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* assets_destroy_V1 - zombies_witness */; + return _toStringCompactu32( + &m->basic.assets_destroy_V1.zombies_witness, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 7427: /* module 29 call 3 */ + switch (itemIdx) { + case 0: /* assets_force_destroy_V1 - id */; + return _toStringCompactAssetId_V1( + &m->basic.assets_force_destroy_V1.id, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* assets_force_destroy_V1 - zombies_witness */; + return _toStringCompactu32( + &m->basic.assets_force_destroy_V1.zombies_witness, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 7428: /* module 29 call 4 */ + switch (itemIdx) { + case 0: /* assets_mint_V1 - id */; + return _toStringCompactAssetId_V1( + &m->basic.assets_mint_V1.id, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* assets_mint_V1 - beneficiary */; + return _toStringLookupSource_V1( + &m->basic.assets_mint_V1.beneficiary, + outValue, outValueLen, + pageIdx, pageCount); + case 2: /* assets_mint_V1 - amount */; + return _toStringCompactTAssetBalance_V1( + &m->basic.assets_mint_V1.amount, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 7429: /* module 29 call 5 */ + switch (itemIdx) { + case 0: /* assets_burn_V1 - id */; + return _toStringCompactAssetId_V1( + &m->basic.assets_burn_V1.id, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* assets_burn_V1 - who */; + return _toStringLookupSource_V1( + &m->basic.assets_burn_V1.who, + outValue, outValueLen, + pageIdx, pageCount); + case 2: /* assets_burn_V1 - amount */; + return _toStringCompactTAssetBalance_V1( + &m->basic.assets_burn_V1.amount, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 7430: /* module 29 call 6 */ + switch (itemIdx) { + case 0: /* assets_transfer_V1 - id */; + return _toStringCompactAssetId_V1( + &m->basic.assets_transfer_V1.id, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* assets_transfer_V1 - target */; + return _toStringLookupSource_V1( + &m->basic.assets_transfer_V1.target, + outValue, outValueLen, + pageIdx, pageCount); + case 2: /* assets_transfer_V1 - amount */; + return _toStringCompactTAssetBalance_V1( + &m->basic.assets_transfer_V1.amount, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 7431: /* module 29 call 7 */ + switch (itemIdx) { + case 0: /* assets_force_transfer_V1 - id */; + return _toStringCompactAssetId_V1( + &m->basic.assets_force_transfer_V1.id, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* assets_force_transfer_V1 - source */; + return _toStringLookupSource_V1( + &m->basic.assets_force_transfer_V1.source, + outValue, outValueLen, + pageIdx, pageCount); + case 2: /* assets_force_transfer_V1 - dest */; + return _toStringLookupSource_V1( + &m->basic.assets_force_transfer_V1.dest, + outValue, outValueLen, + pageIdx, pageCount); + case 3: /* assets_force_transfer_V1 - amount */; + return _toStringCompactTAssetBalance_V1( + &m->basic.assets_force_transfer_V1.amount, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 7432: /* module 29 call 8 */ + switch (itemIdx) { + case 0: /* assets_freeze_V1 - id */; + return _toStringCompactAssetId_V1( + &m->basic.assets_freeze_V1.id, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* assets_freeze_V1 - who */; + return _toStringLookupSource_V1( + &m->basic.assets_freeze_V1.who, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 7433: /* module 29 call 9 */ + switch (itemIdx) { + case 0: /* assets_thaw_V1 - id */; + return _toStringCompactAssetId_V1( + &m->basic.assets_thaw_V1.id, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* assets_thaw_V1 - who */; + return _toStringLookupSource_V1( + &m->basic.assets_thaw_V1.who, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 7434: /* module 29 call 10 */ + switch (itemIdx) { + case 0: /* assets_transfer_ownership_V1 - id */; + return _toStringCompactAssetId_V1( + &m->basic.assets_transfer_ownership_V1.id, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* assets_transfer_ownership_V1 - new_owner */; + return _toStringLookupSource_V1( + &m->basic.assets_transfer_ownership_V1.new_owner, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 7435: /* module 29 call 11 */ + switch (itemIdx) { + case 0: /* assets_set_team_V1 - id */; + return _toStringCompactAssetId_V1( + &m->basic.assets_set_team_V1.id, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* assets_set_team_V1 - issuer */; + return _toStringLookupSource_V1( + &m->basic.assets_set_team_V1.issuer, + outValue, outValueLen, + pageIdx, pageCount); + case 2: /* assets_set_team_V1 - admin */; + return _toStringLookupSource_V1( + &m->basic.assets_set_team_V1.admin, + outValue, outValueLen, + pageIdx, pageCount); + case 3: /* assets_set_team_V1 - freezer */; + return _toStringLookupSource_V1( + &m->basic.assets_set_team_V1.freezer, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 7436: /* module 29 call 12 */ + switch (itemIdx) { + case 0: /* assets_set_max_zombies_V1 - id */; + return _toStringCompactAssetId_V1( + &m->basic.assets_set_max_zombies_V1.id, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* assets_set_max_zombies_V1 - max_zombies */; + return _toStringCompactu32( + &m->basic.assets_set_max_zombies_V1.max_zombies, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 8192: /* module 32 call 0 */ + switch (itemIdx) { + case 0: /* treasuryreward_set_current_payout_V1 - payout */; + return _toStringBalanceOf( + &m->basic.treasuryreward_set_current_payout_V1.payout, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 8193: /* module 32 call 1 */ + switch (itemIdx) { + case 0: /* treasuryreward_set_minting_interval_V1 - interval */; + return _toStringBlockNumber( + &m->basic.treasuryreward_set_minting_interval_V1.interval, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 8448: /* module 33 call 0 */ + switch (itemIdx) { + case 0: /* ethereum_transact_V1 - transaction */; + return _toStringEthTransaction_V1( + &m->basic.ethereum_transact_V1.transaction, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 8704: /* module 34 call 0 */ + switch (itemIdx) { + case 0: /* evm_withdraw_V1 - address */; + return _toStringH160_V1( + &m->basic.evm_withdraw_V1.address, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* evm_withdraw_V1 - value */; + return _toStringBalanceOf( + &m->basic.evm_withdraw_V1.value, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 8705: /* module 34 call 1 */ + switch (itemIdx) { + case 0: /* evm_call_V1 - source */; + return _toStringH160_V1( + &m->basic.evm_call_V1.source, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* evm_call_V1 - target */; + return _toStringH160_V1( + &m->basic.evm_call_V1.target, + outValue, outValueLen, + pageIdx, pageCount); + case 2: /* evm_call_V1 - input */; + return _toStringBytes( + &m->basic.evm_call_V1.input, + outValue, outValueLen, + pageIdx, pageCount); + case 3: /* evm_call_V1 - value */; + return _toStringU256_V1( + &m->basic.evm_call_V1.value, + outValue, outValueLen, + pageIdx, pageCount); + case 4: /* evm_call_V1 - gas_limit */; + return _toStringu32( + &m->basic.evm_call_V1.gas_limit, + outValue, outValueLen, + pageIdx, pageCount); + case 5: /* evm_call_V1 - gas_price */; + return _toStringU256_V1( + &m->basic.evm_call_V1.gas_price, + outValue, outValueLen, + pageIdx, pageCount); + case 6: /* evm_call_V1 - nonce */; + return _toStringOptionU256_V1( + &m->basic.evm_call_V1.nonce, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 8706: /* module 34 call 2 */ + switch (itemIdx) { + case 0: /* evm_create_V1 - source */; + return _toStringH160_V1( + &m->basic.evm_create_V1.source, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* evm_create_V1 - init */; + return _toStringBytes( + &m->basic.evm_create_V1.init, + outValue, outValueLen, + pageIdx, pageCount); + case 2: /* evm_create_V1 - value */; + return _toStringU256_V1( + &m->basic.evm_create_V1.value, + outValue, outValueLen, + pageIdx, pageCount); + case 3: /* evm_create_V1 - gas_limit */; + return _toStringu32( + &m->basic.evm_create_V1.gas_limit, + outValue, outValueLen, + pageIdx, pageCount); + case 4: /* evm_create_V1 - gas_price */; + return _toStringU256_V1( + &m->basic.evm_create_V1.gas_price, + outValue, outValueLen, + pageIdx, pageCount); + case 5: /* evm_create_V1 - nonce */; + return _toStringOptionU256_V1( + &m->basic.evm_create_V1.nonce, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 8707: /* module 34 call 3 */ + switch (itemIdx) { + case 0: /* evm_create2_V1 - source */; + return _toStringH160_V1( + &m->basic.evm_create2_V1.source, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* evm_create2_V1 - init */; + return _toStringBytes( + &m->basic.evm_create2_V1.init, + outValue, outValueLen, + pageIdx, pageCount); + case 2: /* evm_create2_V1 - salt */; + return _toStringH256_V1( + &m->basic.evm_create2_V1.salt, + outValue, outValueLen, + pageIdx, pageCount); + case 3: /* evm_create2_V1 - value */; + return _toStringU256_V1( + &m->basic.evm_create2_V1.value, + outValue, outValueLen, + pageIdx, pageCount); + case 4: /* evm_create2_V1 - gas_limit */; + return _toStringu32( + &m->basic.evm_create2_V1.gas_limit, + outValue, outValueLen, + pageIdx, pageCount); + case 5: /* evm_create2_V1 - gas_price */; + return _toStringU256_V1( + &m->basic.evm_create2_V1.gas_price, + outValue, outValueLen, + pageIdx, pageCount); + case 6: /* evm_create2_V1 - nonce */; + return _toStringOptionU256_V1( + &m->basic.evm_create2_V1.nonce, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 8960: /* module 35 call 0 */ + switch (itemIdx) { + case 0: /* chainbridge_set_threshold_V1 - threshold */; + return _toStringu32( + &m->basic.chainbridge_set_threshold_V1.threshold, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 8961: /* module 35 call 1 */ + switch (itemIdx) { + case 0: /* chainbridge_set_resource_V1 - id */; + return _toStringResourceId_V1( + &m->basic.chainbridge_set_resource_V1.id, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* chainbridge_set_resource_V1 - method */; + return _toStringBytes( + &m->basic.chainbridge_set_resource_V1.method, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 8962: /* module 35 call 2 */ + switch (itemIdx) { + case 0: /* chainbridge_remove_resource_V1 - id */; + return _toStringResourceId_V1( + &m->basic.chainbridge_remove_resource_V1.id, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 8963: /* module 35 call 3 */ + switch (itemIdx) { + case 0: /* chainbridge_whitelist_chain_V1 - id */; + return _toStringChainId_V1( + &m->basic.chainbridge_whitelist_chain_V1.id, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 8964: /* module 35 call 4 */ + switch (itemIdx) { + case 0: /* chainbridge_add_relayer_V1 - v */; + return _toStringAccountId_V1( + &m->basic.chainbridge_add_relayer_V1.v, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 8965: /* module 35 call 5 */ + switch (itemIdx) { + case 0: /* chainbridge_remove_relayer_V1 - v */; + return _toStringAccountId_V1( + &m->basic.chainbridge_remove_relayer_V1.v, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 8966: /* module 35 call 6 */ + switch (itemIdx) { + case 0: /* chainbridge_acknowledge_proposal_V1 - nonce */; + return _toStringDepositNonce_V1( + &m->basic.chainbridge_acknowledge_proposal_V1.nonce, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* chainbridge_acknowledge_proposal_V1 - src_id */; + return _toStringChainId_V1( + &m->basic.chainbridge_acknowledge_proposal_V1.src_id, + outValue, outValueLen, + pageIdx, pageCount); + case 2: /* chainbridge_acknowledge_proposal_V1 - r_id */; + return _toStringResourceId_V1( + &m->basic.chainbridge_acknowledge_proposal_V1.r_id, + outValue, outValueLen, + pageIdx, pageCount); + case 3: /* chainbridge_acknowledge_proposal_V1 - call */; + return _toStringProposal( + &m->basic.chainbridge_acknowledge_proposal_V1.call, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 8967: /* module 35 call 7 */ + switch (itemIdx) { + case 0: /* chainbridge_reject_proposal_V1 - nonce */; + return _toStringDepositNonce_V1( + &m->basic.chainbridge_reject_proposal_V1.nonce, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* chainbridge_reject_proposal_V1 - src_id */; + return _toStringChainId_V1( + &m->basic.chainbridge_reject_proposal_V1.src_id, + outValue, outValueLen, + pageIdx, pageCount); + case 2: /* chainbridge_reject_proposal_V1 - r_id */; + return _toStringResourceId_V1( + &m->basic.chainbridge_reject_proposal_V1.r_id, + outValue, outValueLen, + pageIdx, pageCount); + case 3: /* chainbridge_reject_proposal_V1 - call */; + return _toStringProposal( + &m->basic.chainbridge_reject_proposal_V1.call, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 8968: /* module 35 call 8 */ + switch (itemIdx) { + case 0: /* chainbridge_eval_vote_state_V1 - nonce */; + return _toStringDepositNonce_V1( + &m->basic.chainbridge_eval_vote_state_V1.nonce, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* chainbridge_eval_vote_state_V1 - src_id */; + return _toStringChainId_V1( + &m->basic.chainbridge_eval_vote_state_V1.src_id, + outValue, outValueLen, + pageIdx, pageCount); + case 2: /* chainbridge_eval_vote_state_V1 - prop */; + return _toStringProposal( + &m->basic.chainbridge_eval_vote_state_V1.prop, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 9216: /* module 36 call 0 */ + switch (itemIdx) { + case 0: /* edgebridge_transfer_native_V1 - amount */; + return _toStringBalanceOf( + &m->basic.edgebridge_transfer_native_V1.amount, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* edgebridge_transfer_native_V1 - recipient */; + return _toStringBytes( + &m->basic.edgebridge_transfer_native_V1.recipient, + outValue, outValueLen, + pageIdx, pageCount); + case 2: /* edgebridge_transfer_native_V1 - dest_id */; + return _toStringChainId_V1( + &m->basic.edgebridge_transfer_native_V1.dest_id, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 9217: /* module 36 call 1 */ + switch (itemIdx) { + case 0: /* edgebridge_transfer_V1 - to */; + return _toStringAccountId_V1( + &m->basic.edgebridge_transfer_V1.to, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* edgebridge_transfer_V1 - amount */; + return _toStringBalanceOf( + &m->basic.edgebridge_transfer_V1.amount, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 9472: /* module 37 call 0 */ + switch (itemIdx) { + case 0: /* bounties_propose_bounty_V1 - value */; + return _toStringCompactBalanceOf( + &m->basic.bounties_propose_bounty_V1.value, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* bounties_propose_bounty_V1 - description */; + return _toStringBytes( + &m->basic.bounties_propose_bounty_V1.description, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 9473: /* module 37 call 1 */ + switch (itemIdx) { + case 0: /* bounties_approve_bounty_V1 - bounty_id */; + return _toStringCompactBountyIndex_V1( + &m->basic.bounties_approve_bounty_V1.bounty_id, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 9474: /* module 37 call 2 */ + switch (itemIdx) { + case 0: /* bounties_propose_curator_V1 - bounty_id */; + return _toStringCompactBountyIndex_V1( + &m->basic.bounties_propose_curator_V1.bounty_id, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* bounties_propose_curator_V1 - curator */; + return _toStringLookupSource_V1( + &m->basic.bounties_propose_curator_V1.curator, + outValue, outValueLen, + pageIdx, pageCount); + case 2: /* bounties_propose_curator_V1 - fee */; + return _toStringCompactBalanceOf( + &m->basic.bounties_propose_curator_V1.fee, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 9475: /* module 37 call 3 */ + switch (itemIdx) { + case 0: /* bounties_unassign_curator_V1 - bounty_id */; + return _toStringCompactBountyIndex_V1( + &m->basic.bounties_unassign_curator_V1.bounty_id, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 9476: /* module 37 call 4 */ + switch (itemIdx) { + case 0: /* bounties_accept_curator_V1 - bounty_id */; + return _toStringCompactBountyIndex_V1( + &m->basic.bounties_accept_curator_V1.bounty_id, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 9477: /* module 37 call 5 */ + switch (itemIdx) { + case 0: /* bounties_award_bounty_V1 - bounty_id */; + return _toStringCompactBountyIndex_V1( + &m->basic.bounties_award_bounty_V1.bounty_id, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* bounties_award_bounty_V1 - beneficiary */; + return _toStringLookupSource_V1( + &m->basic.bounties_award_bounty_V1.beneficiary, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 9478: /* module 37 call 6 */ + switch (itemIdx) { + case 0: /* bounties_claim_bounty_V1 - bounty_id */; + return _toStringCompactBountyIndex_V1( + &m->basic.bounties_claim_bounty_V1.bounty_id, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 9479: /* module 37 call 7 */ + switch (itemIdx) { + case 0: /* bounties_close_bounty_V1 - bounty_id */; + return _toStringCompactBountyIndex_V1( + &m->basic.bounties_close_bounty_V1.bounty_id, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 9480: /* module 37 call 8 */ + switch (itemIdx) { + case 0: /* bounties_extend_bounty_expiry_V1 - bounty_id */; + return _toStringCompactBountyIndex_V1( + &m->basic.bounties_extend_bounty_expiry_V1.bounty_id, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* bounties_extend_bounty_expiry_V1 - _remark */; + return _toStringBytes( + &m->basic.bounties_extend_bounty_expiry_V1._remark, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 9728: /* module 38 call 0 */ + switch (itemIdx) { + case 0: /* tips_report_awesome_V1 - reason */; + return _toStringBytes( + &m->basic.tips_report_awesome_V1.reason, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* tips_report_awesome_V1 - who */; + return _toStringAccountId_V1( + &m->basic.tips_report_awesome_V1.who, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 9729: /* module 38 call 1 */ + switch (itemIdx) { + case 0: /* tips_retract_tip_V1 - hash */; + return _toStringHash( + &m->basic.tips_retract_tip_V1.hash, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 9730: /* module 38 call 2 */ + switch (itemIdx) { + case 0: /* tips_tip_new_V1 - reason */; + return _toStringBytes( + &m->basic.tips_tip_new_V1.reason, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* tips_tip_new_V1 - who */; + return _toStringAccountId_V1( + &m->basic.tips_tip_new_V1.who, + outValue, outValueLen, + pageIdx, pageCount); + case 2: /* tips_tip_new_V1 - tip_value */; + return _toStringCompactBalanceOf( + &m->basic.tips_tip_new_V1.tip_value, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 9731: /* module 38 call 3 */ + switch (itemIdx) { + case 0: /* tips_tip_V1 - hash */; + return _toStringHash( + &m->basic.tips_tip_V1.hash, + outValue, outValueLen, + pageIdx, pageCount); + case 1: /* tips_tip_V1 - tip_value */; + return _toStringCompactBalanceOf( + &m->basic.tips_tip_V1.tip_value, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 9732: /* module 38 call 4 */ + switch (itemIdx) { + case 0: /* tips_close_tip_V1 - hash */; + return _toStringHash( + &m->basic.tips_close_tip_V1.hash, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } + case 9733: /* module 38 call 5 */ + switch (itemIdx) { + case 0: /* tips_slash_tip_V1 - hash */; + return _toStringHash( + &m->basic.tips_slash_tip_V1.hash, + outValue, outValueLen, + pageIdx, pageCount); + default: + return parser_no_data; + } +#endif + default: + return parser_ok; + } + + return parser_ok; +} + +bool _getMethod_ItemIsExpert_V1(uint8_t moduleIdx, uint8_t callIdx, uint8_t itemIdx) +{ + uint16_t callPrivIdx = ((uint16_t)moduleIdx << 8u) + callIdx; + + switch (callPrivIdx) { + case 2051: // Staking:Withdraw Unbonded + switch (itemIdx) { + case 0: // Num slashing spans + return true; + default: + return false; + } + case 2063: // Staking:Force unstake + switch (itemIdx) { + case 1: // Num slashing spans + return true; + default: + return false; + } + case 2069: // Staking:Reap stash + switch (itemIdx) { + case 1: // Num slashing spans + return true; + default: + return false; + } + case 8705: // EVM:Call + switch (itemIdx) { + case 6: // Nonce + return true; + default: + return false; + } + case 8706: // EVM:Create + switch (itemIdx) { + case 5: // Nonce + return true; + default: + return false; + } + case 8707: // EVM:Create2 + switch (itemIdx) { + case 6: // Nonce + return true; + default: + return false; + } + case 8966: // ChainBridge:Acknowledge proposal + switch (itemIdx) { + case 0: // Nonce + return true; + default: + return false; + } + case 8967: // ChainBridge:Reject proposal + switch (itemIdx) { + case 0: // Nonce + return true; + default: + return false; + } + case 8968: // ChainBridge:Eval vote state + switch (itemIdx) { + case 0: // Nonce + return true; + default: + return false; + } + + default: + return false; + } +} + +bool _getMethod_IsNestingSupported_V1(uint8_t moduleIdx, uint8_t callIdx) +{ + uint16_t callPrivIdx = ((uint16_t)moduleIdx << 8u) + callIdx; + + switch (callPrivIdx) { + case 0: // System:Fill block + case 1: // System:Remark + case 2: // System:Set heap pages + case 3: // System:Set code + case 4: // System:Set code without checks + case 5: // System:Set changes trie config + case 6: // System:Set storage + case 7: // System:Kill storage + case 8: // System:Kill prefix + case 9: // System:Suicide + case 256: // Utility:Batch + case 257: // Utility:As derivative + case 258: // Utility:Batch all + case 768: // Timestamp:Set + case 1024: // Authorship:Set uncles + case 1280: // Indices:Claim + case 1281: // Indices:Transfer + case 1282: // Indices:Free + case 1283: // Indices:Force transfer + case 1284: // Indices:Freeze + case 1536: // Balances:Transfer + case 1537: // Balances:Set balance + case 1538: // Balances:Force transfer + case 1539: // Balances:Transfer keep alive + case 2048: // Staking:Bond + case 2049: // Staking:Bond extra + case 2050: // Staking:Unbond + case 2051: // Staking:Withdraw Unbonded + case 2052: // Staking:Validate + case 2053: // Staking:Nominate + case 2054: // Staking:Chill + case 2055: // Staking:Set payee + case 2056: // Staking:Set controller + case 2057: // Staking:Set validator count + case 2058: // Staking:Increase validator count + case 2059: // Staking:Scale validator count + case 2060: // Staking:Force no eras + case 2061: // Staking:Force new era + case 2062: // Staking:Set invulnerables + case 2063: // Staking:Force unstake + case 2064: // Staking:Force new era always + case 2065: // Staking:Cancel deferred slash + case 2066: // Staking:Payout stakers + case 2067: // Staking:Rebond + case 2068: // Staking:Set history depth + case 2069: // Staking:Reap stash + case 2070: // Staking:Submit election solution + case 2071: // Staking:Submit election solution unsigned + case 2304: // Session:Set keys + case 2305: // Session:Purge keys + case 2560: // Democracy:Propose + case 2561: // Democracy:Second + case 2562: // Democracy:Vote + case 2563: // Democracy:Emergency cancel + case 2564: // Democracy:External propose + case 2565: // Democracy:External propose majority + case 2566: // Democracy:External propose default + case 2567: // Democracy:Fast track + case 2568: // Democracy:Veto external + case 2569: // Democracy:Cancel referendum + case 2570: // Democracy:Cancel queued + case 2571: // Democracy:Delegate + case 2572: // Democracy:Undelegate + case 2573: // Democracy:Clear public proposals + case 2574: // Democracy:Note preimage + case 2575: // Democracy:Note preimage operational + case 2576: // Democracy:Note imminent preimage + case 2577: // Democracy:Note imminent preimage operational + case 2578: // Democracy:Reap preimage + case 2579: // Democracy:Unlock + case 2580: // Democracy:Remove vote + case 2581: // Democracy:Remove other vote + case 2582: // Democracy:Enact proposal + case 2583: // Democracy:Blacklist + case 2584: // Democracy:Cancel proposal + case 2816: // Council:Set members + case 2817: // Council:Execute + case 2818: // Council:Propose + case 2819: // Council:Vote + case 2820: // Council:Close + case 2821: // Council:Disapprove proposal + case 3072: // Elections:Vote + case 3073: // Elections:Remove voter + case 3074: // Elections:Report defunct voter + case 3075: // Elections:Submit candidacy + case 3076: // Elections:Renounce candidacy + case 3077: // Elections:Remove member + case 3584: // Grandpa:Report equivocation + case 3585: // Grandpa:Report equivocation unsigned + case 3586: // Grandpa:Note stalled + case 3840: // Treasury:Propose spend + case 3841: // Treasury:Reject proposal + case 3842: // Treasury:Approve proposal + case 4096: // Contracts:Update schedule + case 4097: // Contracts:Put code + case 4098: // Contracts:Call + case 4099: // Contracts:Instantiate + case 4100: // Contracts:Claim surcharge + case 4352: // Sudo:Sudo + case 4353: // Sudo:Sudo unchecked weight + case 4354: // Sudo:Set key + case 4355: // Sudo:Sudo as + case 4608: // ImOnline:Heartbeat + case 5888: // Identity:Add registrar + case 5889: // Identity:Set identity + case 5890: // Identity:Set subs + case 5891: // Identity:Clear identity + case 5892: // Identity:Request judgement + case 5893: // Identity:Cancel request + case 5894: // Identity:Set fee + case 5895: // Identity:Set account id + case 5896: // Identity:Set fields + case 5897: // Identity:Provide judgement + case 5898: // Identity:Kill identity + case 5899: // Identity:Add sub + case 5900: // Identity:Rename sub + case 5901: // Identity:Remove sub + case 5902: // Identity:Quit sub + case 6144: // Recovery:As recovered + case 6145: // Recovery:Set recovered + case 6146: // Recovery:Create recovery + case 6147: // Recovery:Initiate recovery + case 6148: // Recovery:Vouch recovery + case 6149: // Recovery:Claim recovery + case 6150: // Recovery:Close recovery + case 6151: // Recovery:Remove recovery + case 6152: // Recovery:Cancel recovered + case 6400: // Vesting:Vest + case 6401: // Vesting:Vest other + case 6402: // Vesting:Vested transfer + case 6403: // Vesting:Force vested transfer + case 6656: // Scheduler:Schedule + case 6657: // Scheduler:Cancel + case 6658: // Scheduler:Schedule named + case 6659: // Scheduler:Cancel named + case 6660: // Scheduler:Schedule after + case 6661: // Scheduler:Schedule named after + case 6912: // Proxy:Proxy + case 6913: // Proxy:Add proxy + case 6914: // Proxy:Remove proxy + case 6915: // Proxy:Remove proxies + case 6916: // Proxy:Anonymous + case 6917: // Proxy:Kill anonymous + case 6918: // Proxy:Announce + case 6919: // Proxy:Remove announcement + case 6920: // Proxy:Reject announcement + case 6921: // Proxy:Proxy announced + case 7168: // Multisig:As multi threshold 1 + case 7169: // Multisig:As multi + case 7170: // Multisig:Approve as multi + case 7171: // Multisig:Cancel as multi + case 7424: // Assets:Create + case 7425: // Assets:Force create + case 7426: // Assets:Destroy + case 7427: // Assets:Force destroy + case 7428: // Assets:Mint + case 7429: // Assets:Burn + case 7430: // Assets:Transfer + case 7431: // Assets:Force transfer + case 7432: // Assets:Freeze + case 7433: // Assets:Thaw + case 7434: // Assets:Transfer ownership + case 7435: // Assets:Set team + case 7436: // Assets:Set max zombies + case 8192: // TreasuryReward:Set current payout + case 8193: // TreasuryReward:Set minting interval + case 8448: // Ethereum:Transact + case 8704: // EVM:Withdraw + case 8705: // EVM:Call + case 8706: // EVM:Create + case 8707: // EVM:Create2 + case 8960: // ChainBridge:Set threshold + case 8961: // ChainBridge:Set resource + case 8962: // ChainBridge:Remove resource + case 8963: // ChainBridge:Whitelist chain + case 8964: // ChainBridge:Add relayer + case 8965: // ChainBridge:Remove relayer + case 8966: // ChainBridge:Acknowledge proposal + case 8967: // ChainBridge:Reject proposal + case 8968: // ChainBridge:Eval vote state + case 9216: // EdgeBridge:Transfer native + case 9217: // EdgeBridge:Transfer + case 9472: // Bounties:Propose bounty + case 9473: // Bounties:Approve bounty + case 9474: // Bounties:Propose curator + case 9475: // Bounties:Unassign curator + case 9476: // Bounties:Accept curator + case 9477: // Bounties:Award bounty + case 9478: // Bounties:Claim bounty + case 9479: // Bounties:Close bounty + case 9480: // Bounties:Extend bounty expiry + case 9728: // Tips:Report awesome + case 9729: // Tips:Retract tip + case 9730: // Tips:Tip new + case 9731: // Tips:Tip + case 9732: // Tips:Close tip + case 9733: // Tips:Slash tip + return false; + default: + return true; + } +} diff --git a/app/src/substrate_dispatch_V1.h b/app/src/substrate_dispatch_V1.h new file mode 100644 index 0000000..e448632 --- /dev/null +++ b/app/src/substrate_dispatch_V1.h @@ -0,0 +1,49 @@ +/******************************************************************************* +* (c) 2019 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +#include "parser_impl.h" +#include "stdbool.h" +#include "substrate_functions.h" +#include "substrate_functions_V1.h" +#include +#include + +parser_error_t _readMethod_V1(parser_context_t* c, uint8_t moduleIdx, uint8_t callIdx, pd_Method_V1_t* method); + +const char* _getMethod_ModuleName_V1(uint8_t moduleIdx); + +const char* _getMethod_Name_V1(uint8_t moduleIdx, uint8_t callIdx); + +const char* _getMethod_ItemName_V1(uint8_t moduleIdx, uint8_t callIdx, uint8_t itemIdx); + +uint8_t _getMethod_NumItems_V1(uint8_t moduleIdx, uint8_t callIdx); + +parser_error_t _getMethod_ItemValue_V1( + pd_Method_V1_t* m, uint8_t moduleIdx, uint8_t callIdx, uint8_t itemIdx, + char* outValue, uint16_t outValueLen, + uint8_t pageIdx, uint8_t* pageCount); + +bool _getMethod_ItemIsExpert_V1(uint8_t moduleIdx, uint8_t callIdx, uint8_t itemIdx); +bool _getMethod_IsNestingSupported_V1(uint8_t moduleIdx, uint8_t callIdx); + +#ifdef __cplusplus +} +#endif diff --git a/app/src/substrate_functions.h b/app/src/substrate_functions.h new file mode 100644 index 0000000..fcd54fc --- /dev/null +++ b/app/src/substrate_functions.h @@ -0,0 +1,227 @@ +/******************************************************************************* +* (c) 2019 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +// Common read functions + +parser_error_t _readbool(parser_context_t* c, pd_bool_t* v); +parser_error_t _readu16(parser_context_t* c, pd_u16_t* v); +parser_error_t _readu32(parser_context_t* c, pd_u32_t* v); +parser_error_t _readu64(parser_context_t* c, pd_u64_t* v); +parser_error_t _readBlockNumber(parser_context_t* c, pd_BlockNumber_t* v); +parser_error_t _readCompactu32(parser_context_t* c, pd_Compactu32_t* v); +parser_error_t _readCompactu64(parser_context_t* c, pd_Compactu64_t* v); +parser_error_t _readCallImpl(parser_context_t* c, pd_Call_t* v, pd_MethodNested_t* m); + +parser_error_t _readBalance(parser_context_t* c, pd_Balance_t* v); +parser_error_t _readData(parser_context_t* c, pd_Data_t* v); +parser_error_t _readBalanceOf(parser_context_t* c, pd_BalanceOf_t* v); +parser_error_t _readBytes(parser_context_t* c, pd_Bytes_t* v); +parser_error_t _readTupleDataData(parser_context_t* c, pd_TupleDataData_t* v); +parser_error_t _readu8_array_20(parser_context_t* c, pd_u8_array_20_t* v); +parser_error_t _readCall(parser_context_t* c, pd_Call_t* v); +parser_error_t _readHeader(parser_context_t* c, pd_Header_t* v); +parser_error_t _readOptionu8_array_20(parser_context_t* c, pd_Optionu8_array_20_t* v); +parser_error_t _readVecTupleDataData(parser_context_t* c, pd_VecTupleDataData_t* v); +parser_error_t _readProposal(parser_context_t* c, pd_Proposal_t* v); +parser_error_t _readVecCall(parser_context_t* c, pd_VecCall_t* v); +parser_error_t _readCompactBalanceOf(parser_context_t* c, pd_CompactBalanceOf_t* v); +parser_error_t _readCompactBlockNumber(parser_context_t* c, pd_CompactBlockNumber_t* v); +parser_error_t _readHash(parser_context_t* c, pd_Hash_t* v); +parser_error_t _readHeartbeat(parser_context_t* c, pd_Heartbeat_t* v); +parser_error_t _readVecHeader(parser_context_t* c, pd_VecHeader_t* v); +parser_error_t _readVecu32(parser_context_t* c, pd_Vecu32_t* v); + +// Common toString functions + +parser_error_t _toStringu16( + const pd_u16_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringu32( + const pd_u32_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringu64( + const pd_u64_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringbool( + const pd_bool_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringBlockNumber( + const pd_BlockNumber_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringCompactu32( + const pd_Compactu32_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringBalance( + const pd_Balance_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringData( + const pd_Data_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringBalanceOf( + const pd_BalanceOf_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringBytes( + const pd_Bytes_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringTupleDataData( + const pd_TupleDataData_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringu8_array_20( + const pd_u8_array_20_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringCall( + const pd_Call_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringHeader( + const pd_Header_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringOptionu8_array_20( + const pd_Optionu8_array_20_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringVecTupleDataData( + const pd_VecTupleDataData_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringProposal( + const pd_Proposal_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringVecCall( + const pd_VecCall_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringCompactBalanceOf( + const pd_CompactBalanceOf_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringCompactBlockNumber( + const pd_CompactBlockNumber_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringHash( + const pd_Hash_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringHeartbeat( + const pd_Heartbeat_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringVecHeader( + const pd_VecHeader_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringVecu32( + const pd_Vecu32_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +#ifdef __cplusplus +} +#endif diff --git a/app/src/substrate_functions_V1.h b/app/src/substrate_functions_V1.h new file mode 100644 index 0000000..e4e3d18 --- /dev/null +++ b/app/src/substrate_functions_V1.h @@ -0,0 +1,673 @@ +/******************************************************************************* +* (c) 2019 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +#include "parser_common.h" +#include "substrate_methods_V1.h" +#include "substrate_types_V1.h" +#include +#include + +// Read functions +parser_error_t _readAccountId_V1(parser_context_t* c, pd_AccountId_V1_t* v); +parser_error_t _readAccountIndex_V1(parser_context_t* c, pd_AccountIndex_V1_t* v); +parser_error_t _readAccountVoteSplit_V1(parser_context_t* c, pd_AccountVoteSplit_V1_t* v); +parser_error_t _readAccountVoteStandard_V1(parser_context_t* c, pd_AccountVoteStandard_V1_t* v); +parser_error_t _readAccountVote_V1(parser_context_t* c, pd_AccountVote_V1_t* v); +parser_error_t _readCallHashOf_V1(parser_context_t* c, pd_CallHashOf_V1_t* v); +parser_error_t _readChainId_V1(parser_context_t* c, pd_ChainId_V1_t* v); +parser_error_t _readChangesTrieConfiguration_V1(parser_context_t* c, pd_ChangesTrieConfiguration_V1_t* v); +parser_error_t _readCodeHash_V1(parser_context_t* c, pd_CodeHash_V1_t* v); +parser_error_t _readCompactAccountIndex_V1(parser_context_t* c, pd_CompactAccountIndex_V1_t* v); +parser_error_t _readCompactAssetId_V1(parser_context_t* c, pd_CompactAssetId_V1_t* v); +parser_error_t _readCompactAssignments_V1(parser_context_t* c, pd_CompactAssignments_V1_t* v); +parser_error_t _readCompactBountyIndex_V1(parser_context_t* c, pd_CompactBountyIndex_V1_t* v); +parser_error_t _readCompactEraIndex_V1(parser_context_t* c, pd_CompactEraIndex_V1_t* v); +parser_error_t _readCompactGas_V1(parser_context_t* c, pd_CompactGas_V1_t* v); +parser_error_t _readCompactMemberCount_V1(parser_context_t* c, pd_CompactMemberCount_V1_t* v); +parser_error_t _readCompactMoment_V1(parser_context_t* c, pd_CompactMoment_V1_t* v); +parser_error_t _readCompactPerBill_V1(parser_context_t* c, pd_CompactPerBill_V1_t* v); +parser_error_t _readCompactPropIndex_V1(parser_context_t* c, pd_CompactPropIndex_V1_t* v); +parser_error_t _readCompactProposalIndex_V1(parser_context_t* c, pd_CompactProposalIndex_V1_t* v); +parser_error_t _readCompactReferendumIndex_V1(parser_context_t* c, pd_CompactReferendumIndex_V1_t* v); +parser_error_t _readCompactRegistrarIndex_V1(parser_context_t* c, pd_CompactRegistrarIndex_V1_t* v); +parser_error_t _readCompactTAssetBalance_V1(parser_context_t* c, pd_CompactTAssetBalance_V1_t* v); +parser_error_t _readCompactWeight_V1(parser_context_t* c, pd_CompactWeight_V1_t* v); +parser_error_t _readConviction_V1(parser_context_t* c, pd_Conviction_V1_t* v); +parser_error_t _readDefunctVoter_V1(parser_context_t* c, pd_DefunctVoter_V1_t* v); +parser_error_t _readDepositNonce_V1(parser_context_t* c, pd_DepositNonce_V1_t* v); +parser_error_t _readElectionScore_V1(parser_context_t* c, pd_ElectionScore_V1_t* v); +parser_error_t _readElectionSize_V1(parser_context_t* c, pd_ElectionSize_V1_t* v); +parser_error_t _readEraIndex_V1(parser_context_t* c, pd_EraIndex_V1_t* v); +parser_error_t _readEthTransaction_V1(parser_context_t* c, pd_EthTransaction_V1_t* v); +parser_error_t _readGrandpaEquivocationProof_V1(parser_context_t* c, pd_GrandpaEquivocationProof_V1_t* v); +parser_error_t _readH160_V1(parser_context_t* c, pd_H160_V1_t* v); +parser_error_t _readH256_V1(parser_context_t* c, pd_H256_V1_t* v); +parser_error_t _readIdentityFields_V1(parser_context_t* c, pd_IdentityFields_V1_t* v); +parser_error_t _readIdentityInfo_V1(parser_context_t* c, pd_IdentityInfo_V1_t* v); +parser_error_t _readIdentityJudgement_V1(parser_context_t* c, pd_IdentityJudgement_V1_t* v); +parser_error_t _readKeyOwnerProof_V1(parser_context_t* c, pd_KeyOwnerProof_V1_t* v); +parser_error_t _readKeyValue_V1(parser_context_t* c, pd_KeyValue_V1_t* v); +parser_error_t _readKey_V1(parser_context_t* c, pd_Key_V1_t* v); +parser_error_t _readKeys_V1(parser_context_t* c, pd_Keys_V1_t* v); +parser_error_t _readLookupSource_V1(parser_context_t* c, pd_LookupSource_V1_t* v); +parser_error_t _readMemberCount_V1(parser_context_t* c, pd_MemberCount_V1_t* v); +parser_error_t _readOpaqueCall_V1(parser_context_t* c, pd_OpaqueCall_V1_t* v); +parser_error_t _readOptionAccountId_V1(parser_context_t* c, pd_OptionAccountId_V1_t* v); +parser_error_t _readOptionChangesTrieConfiguration_V1(parser_context_t* c, pd_OptionChangesTrieConfiguration_V1_t* v); +parser_error_t _readOptionPeriod_V1(parser_context_t* c, pd_OptionPeriod_V1_t* v); +parser_error_t _readOptionProxyType_V1(parser_context_t* c, pd_OptionProxyType_V1_t* v); +parser_error_t _readOptionReferendumIndex_V1(parser_context_t* c, pd_OptionReferendumIndex_V1_t* v); +parser_error_t _readOptionTimepoint_V1(parser_context_t* c, pd_OptionTimepoint_V1_t* v); +parser_error_t _readOptionU256_V1(parser_context_t* c, pd_OptionU256_V1_t* v); +parser_error_t _readPerbill_V1(parser_context_t* c, pd_Perbill_V1_t* v); +parser_error_t _readPercent_V1(parser_context_t* c, pd_Percent_V1_t* v); +parser_error_t _readPeriod_V1(parser_context_t* c, pd_Period_V1_t* v); +parser_error_t _readPriority_V1(parser_context_t* c, pd_Priority_V1_t* v); +parser_error_t _readProxyType_V1(parser_context_t* c, pd_ProxyType_V1_t* v); +parser_error_t _readReferendumIndex_V1(parser_context_t* c, pd_ReferendumIndex_V1_t* v); +parser_error_t _readRegistrarIndex_V1(parser_context_t* c, pd_RegistrarIndex_V1_t* v); +parser_error_t _readRenouncing_V1(parser_context_t* c, pd_Renouncing_V1_t* v); +parser_error_t _readResourceId_V1(parser_context_t* c, pd_ResourceId_V1_t* v); +parser_error_t _readRewardDestination_V1(parser_context_t* c, pd_RewardDestination_V1_t* v); +parser_error_t _readSchedule_V1(parser_context_t* c, pd_Schedule_V1_t* v); +parser_error_t _readSignature_V1(parser_context_t* c, pd_Signature_V1_t* v); +parser_error_t _readStreamDependency_V1(parser_context_t* c, pd_StreamDependency_V1_t* v); +parser_error_t _readTAssetBalance_V1(parser_context_t* c, pd_TAssetBalance_V1_t* v); +parser_error_t _readTimepoint_V1(parser_context_t* c, pd_Timepoint_V1_t* v); +parser_error_t _readTupleAccountIdData_V1(parser_context_t* c, pd_TupleAccountIdData_V1_t* v); +parser_error_t _readU256_V1(parser_context_t* c, pd_U256_V1_t* v); +parser_error_t _readValidatorIndex_V1(parser_context_t* c, pd_ValidatorIndex_V1_t* v); +parser_error_t _readValidatorPrefs_V1(parser_context_t* c, pd_ValidatorPrefs_V1_t* v); +parser_error_t _readVecAccountId_V1(parser_context_t* c, pd_VecAccountId_V1_t* v); +parser_error_t _readVecKeyValue_V1(parser_context_t* c, pd_VecKeyValue_V1_t* v); +parser_error_t _readVecKey_V1(parser_context_t* c, pd_VecKey_V1_t* v); +parser_error_t _readVecLookupSource_V1(parser_context_t* c, pd_VecLookupSource_V1_t* v); +parser_error_t _readVecTupleAccountIdData_V1(parser_context_t* c, pd_VecTupleAccountIdData_V1_t* v); +parser_error_t _readVecValidatorIndex_V1(parser_context_t* c, pd_VecValidatorIndex_V1_t* v); +parser_error_t _readVestingInfo_V1(parser_context_t* c, pd_VestingInfo_V1_t* v); +parser_error_t _readVote_V1(parser_context_t* c, pd_Vote_V1_t* v); +parser_error_t _readWeight_V1(parser_context_t* c, pd_Weight_V1_t* v); +parser_error_t _readu8_array_32_V1(parser_context_t* c, pd_u8_array_32_V1_t* v); + +// toString functions +parser_error_t _toStringAccountId_V1( + const pd_AccountId_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringAccountIndex_V1( + const pd_AccountIndex_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringAccountVoteSplit_V1( + const pd_AccountVoteSplit_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringAccountVoteStandard_V1( + const pd_AccountVoteStandard_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringAccountVote_V1( + const pd_AccountVote_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringCallHashOf_V1( + const pd_CallHashOf_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringChainId_V1( + const pd_ChainId_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringChangesTrieConfiguration_V1( + const pd_ChangesTrieConfiguration_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringCodeHash_V1( + const pd_CodeHash_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringCompactAccountIndex_V1( + const pd_CompactAccountIndex_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringCompactAssetId_V1( + const pd_CompactAssetId_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringCompactAssignments_V1( + const pd_CompactAssignments_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringCompactBountyIndex_V1( + const pd_CompactBountyIndex_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringCompactEraIndex_V1( + const pd_CompactEraIndex_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringCompactGas_V1( + const pd_CompactGas_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringCompactMemberCount_V1( + const pd_CompactMemberCount_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringCompactMoment_V1( + const pd_CompactMoment_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringCompactPerBill_V1( + const pd_CompactPerBill_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringCompactPropIndex_V1( + const pd_CompactPropIndex_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringCompactProposalIndex_V1( + const pd_CompactProposalIndex_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringCompactReferendumIndex_V1( + const pd_CompactReferendumIndex_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringCompactRegistrarIndex_V1( + const pd_CompactRegistrarIndex_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringCompactTAssetBalance_V1( + const pd_CompactTAssetBalance_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringCompactWeight_V1( + const pd_CompactWeight_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringConviction_V1( + const pd_Conviction_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringDefunctVoter_V1( + const pd_DefunctVoter_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringDepositNonce_V1( + const pd_DepositNonce_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringElectionScore_V1( + const pd_ElectionScore_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringElectionSize_V1( + const pd_ElectionSize_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringEraIndex_V1( + const pd_EraIndex_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringEthTransaction_V1( + const pd_EthTransaction_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringGrandpaEquivocationProof_V1( + const pd_GrandpaEquivocationProof_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringH160_V1( + const pd_H160_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringH256_V1( + const pd_H256_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringIdentityFields_V1( + const pd_IdentityFields_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringIdentityInfo_V1( + const pd_IdentityInfo_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringIdentityJudgement_V1( + const pd_IdentityJudgement_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringKeyOwnerProof_V1( + const pd_KeyOwnerProof_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringKeyValue_V1( + const pd_KeyValue_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringKey_V1( + const pd_Key_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringKeys_V1( + const pd_Keys_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringLookupSource_V1( + const pd_LookupSource_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringMemberCount_V1( + const pd_MemberCount_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringOpaqueCall_V1( + const pd_OpaqueCall_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringOptionAccountId_V1( + const pd_OptionAccountId_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringOptionChangesTrieConfiguration_V1( + const pd_OptionChangesTrieConfiguration_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringOptionPeriod_V1( + const pd_OptionPeriod_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringOptionProxyType_V1( + const pd_OptionProxyType_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringOptionReferendumIndex_V1( + const pd_OptionReferendumIndex_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringOptionTimepoint_V1( + const pd_OptionTimepoint_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringOptionU256_V1( + const pd_OptionU256_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringPerbill_V1( + const pd_Perbill_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringPercent_V1( + const pd_Percent_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringPeriod_V1( + const pd_Period_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringPriority_V1( + const pd_Priority_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringProxyType_V1( + const pd_ProxyType_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringReferendumIndex_V1( + const pd_ReferendumIndex_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringRegistrarIndex_V1( + const pd_RegistrarIndex_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringRenouncing_V1( + const pd_Renouncing_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringResourceId_V1( + const pd_ResourceId_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringRewardDestination_V1( + const pd_RewardDestination_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringSchedule_V1( + const pd_Schedule_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringSignature_V1( + const pd_Signature_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringStreamDependency_V1( + const pd_StreamDependency_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringTAssetBalance_V1( + const pd_TAssetBalance_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringTimepoint_V1( + const pd_Timepoint_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringTupleAccountIdData_V1( + const pd_TupleAccountIdData_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringU256_V1( + const pd_U256_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringValidatorIndex_V1( + const pd_ValidatorIndex_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringValidatorPrefs_V1( + const pd_ValidatorPrefs_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringVecAccountId_V1( + const pd_VecAccountId_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringVecKeyValue_V1( + const pd_VecKeyValue_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringVecKey_V1( + const pd_VecKey_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringVecLookupSource_V1( + const pd_VecLookupSource_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringVecTupleAccountIdData_V1( + const pd_VecTupleAccountIdData_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringVecValidatorIndex_V1( + const pd_VecValidatorIndex_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringVestingInfo_V1( + const pd_VestingInfo_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringVote_V1( + const pd_Vote_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringWeight_V1( + const pd_Weight_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +parser_error_t _toStringu8_array_32_V1( + const pd_u8_array_32_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount); + +#ifdef __cplusplus +} +#endif diff --git a/app/src/substrate_methods.h b/app/src/substrate_methods.h new file mode 100644 index 0000000..aaae8fc --- /dev/null +++ b/app/src/substrate_methods.h @@ -0,0 +1,42 @@ +/******************************************************************************* +* (c) 2019 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wextern-c-compat" +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +#define GET_PD_CALL(CALL, VERSION) (PD_CALL_##CALL##_V##VERSION) + +#include "substrate_methods_V1.h" +#include "substrate_types_V1.h" + +typedef union { + pd_Method_V1_t V1; +} pd_Method_t; + +typedef union { + pd_MethodNested_V1_t V1; +} pd_MethodNested_t; + +#ifdef __cplusplus +} +#endif diff --git a/app/src/substrate_methods_V1.h b/app/src/substrate_methods_V1.h new file mode 100644 index 0000000..365c388 --- /dev/null +++ b/app/src/substrate_methods_V1.h @@ -0,0 +1,1446 @@ +/******************************************************************************* +* (c) 2019 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wextern-c-compat" +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +#include "substrate_types.h" +#include "substrate_types_V1.h" +#include +#include + +#define PD_CALL_SYSTEM_V1 0 +#define PD_CALL_UTILITY_V1 1 +#define PD_CALL_TIMESTAMP_V1 3 +#define PD_CALL_AUTHORSHIP_V1 4 +#define PD_CALL_INDICES_V1 5 +#define PD_CALL_BALANCES_V1 6 +#define PD_CALL_STAKING_V1 8 +#define PD_CALL_SESSION_V1 9 +#define PD_CALL_DEMOCRACY_V1 10 +#define PD_CALL_COUNCIL_V1 11 +#define PD_CALL_ELECTIONS_V1 12 +#define PD_CALL_GRANDPA_V1 14 +#define PD_CALL_TREASURY_V1 15 +#define PD_CALL_CONTRACTS_V1 16 +#define PD_CALL_SUDO_V1 17 +#define PD_CALL_IMONLINE_V1 18 +#define PD_CALL_AUTHORITYDISCOVERY_V1 19 +#define PD_CALL_OFFENCES_V1 20 +#define PD_CALL_RANDOMNESSCOLLECTIVEFLIP_V1 22 +#define PD_CALL_IDENTITY_V1 23 +#define PD_CALL_RECOVERY_V1 24 +#define PD_CALL_VESTING_V1 25 +#define PD_CALL_SCHEDULER_V1 26 +#define PD_CALL_PROXY_V1 27 +#define PD_CALL_MULTISIG_V1 28 +#define PD_CALL_ASSETS_V1 29 +#define PD_CALL_TREASURYREWARD_V1 32 +#define PD_CALL_ETHEREUM_V1 33 +#define PD_CALL_EVM_V1 34 +#define PD_CALL_CHAINBRIDGE_V1 35 +#define PD_CALL_EDGEBRIDGE_V1 36 +#define PD_CALL_BOUNTIES_V1 37 +#define PD_CALL_TIPS_V1 38 + +#define PD_CALL_UTILITY_BATCH_V1 0 +typedef struct { + pd_VecCall_t calls; +} pd_utility_batch_V1_t; + +#define PD_CALL_UTILITY_BATCH_ALL_V1 2 +typedef struct { + pd_VecCall_t calls; +} pd_utility_batch_all_V1_t; + +#define PD_CALL_BALANCES_TRANSFER_V1 0 +typedef struct { + pd_LookupSource_V1_t dest; + pd_CompactBalance_t value; +} pd_balances_transfer_V1_t; + +#define PD_CALL_BALANCES_TRANSFER_KEEP_ALIVE_V1 3 +typedef struct { + pd_LookupSource_V1_t dest; + pd_CompactBalance_t value; +} pd_balances_transfer_keep_alive_V1_t; + +#define PD_CALL_STAKING_BOND_V1 0 +typedef struct { + pd_LookupSource_V1_t controller; + pd_CompactBalanceOf_t value; + pd_RewardDestination_V1_t payee; +} pd_staking_bond_V1_t; + +#define PD_CALL_STAKING_BOND_EXTRA_V1 1 +typedef struct { + pd_CompactBalanceOf_t max_additional; +} pd_staking_bond_extra_V1_t; + +#define PD_CALL_STAKING_UNBOND_V1 2 +typedef struct { + pd_CompactBalanceOf_t value; +} pd_staking_unbond_V1_t; + +#define PD_CALL_STAKING_WITHDRAW_UNBONDED_V1 3 +typedef struct { + pd_u32_t num_slashing_spans; +} pd_staking_withdraw_unbonded_V1_t; + +#define PD_CALL_STAKING_VALIDATE_V1 4 +typedef struct { + pd_ValidatorPrefs_V1_t prefs; +} pd_staking_validate_V1_t; + +#define PD_CALL_STAKING_NOMINATE_V1 5 +typedef struct { + pd_VecLookupSource_V1_t targets; +} pd_staking_nominate_V1_t; + +#define PD_CALL_STAKING_CHILL_V1 6 +typedef struct { +} pd_staking_chill_V1_t; + +#define PD_CALL_STAKING_SET_PAYEE_V1 7 +typedef struct { + pd_RewardDestination_V1_t payee; +} pd_staking_set_payee_V1_t; + +#define PD_CALL_STAKING_PAYOUT_STAKERS_V1 18 +typedef struct { + pd_AccountId_V1_t validator_stash; + pd_EraIndex_V1_t era; +} pd_staking_payout_stakers_V1_t; + +#define PD_CALL_STAKING_REBOND_V1 19 +typedef struct { + pd_CompactBalanceOf_t value; +} pd_staking_rebond_V1_t; + +#define PD_CALL_SESSION_SET_KEYS_V1 0 +typedef struct { + pd_Keys_V1_t keys; + pd_Bytes_t proof; +} pd_session_set_keys_V1_t; + +#define PD_CALL_SESSION_PURGE_KEYS_V1 1 +typedef struct { +} pd_session_purge_keys_V1_t; + +#ifdef SUBSTRATE_PARSER_FULL +#define PD_CALL_SYSTEM_FILL_BLOCK_V1 0 +typedef struct { + pd_Perbill_V1_t _ratio; +} pd_system_fill_block_V1_t; + +#define PD_CALL_SYSTEM_REMARK_V1 1 +typedef struct { + pd_Bytes_t _remark; +} pd_system_remark_V1_t; + +#define PD_CALL_SYSTEM_SET_HEAP_PAGES_V1 2 +typedef struct { + pd_u64_t pages; +} pd_system_set_heap_pages_V1_t; + +#define PD_CALL_SYSTEM_SET_CODE_V1 3 +typedef struct { + pd_Bytes_t code; +} pd_system_set_code_V1_t; + +#define PD_CALL_SYSTEM_SET_CODE_WITHOUT_CHECKS_V1 4 +typedef struct { + pd_Bytes_t code; +} pd_system_set_code_without_checks_V1_t; + +#define PD_CALL_SYSTEM_SET_CHANGES_TRIE_CONFIG_V1 5 +typedef struct { + pd_OptionChangesTrieConfiguration_V1_t changes_trie_config; +} pd_system_set_changes_trie_config_V1_t; + +#define PD_CALL_SYSTEM_SET_STORAGE_V1 6 +typedef struct { + pd_VecKeyValue_V1_t items; +} pd_system_set_storage_V1_t; + +#define PD_CALL_SYSTEM_KILL_STORAGE_V1 7 +typedef struct { + pd_VecKey_V1_t keys; +} pd_system_kill_storage_V1_t; + +#define PD_CALL_SYSTEM_KILL_PREFIX_V1 8 +typedef struct { + pd_Key_V1_t prefix; + pd_u32_t _subkeys; +} pd_system_kill_prefix_V1_t; + +#define PD_CALL_SYSTEM_SUICIDE_V1 9 +typedef struct { +} pd_system_suicide_V1_t; + +#define PD_CALL_UTILITY_AS_DERIVATIVE_V1 1 +typedef struct { + pd_u16_t index; + pd_Call_t call; +} pd_utility_as_derivative_V1_t; + +#define PD_CALL_TIMESTAMP_SET_V1 0 +typedef struct { + pd_CompactMoment_V1_t now; +} pd_timestamp_set_V1_t; + +#define PD_CALL_AUTHORSHIP_SET_UNCLES_V1 0 +typedef struct { + pd_VecHeader_t new_uncles; +} pd_authorship_set_uncles_V1_t; + +#define PD_CALL_INDICES_CLAIM_V1 0 +typedef struct { + pd_AccountIndex_V1_t index; +} pd_indices_claim_V1_t; + +#define PD_CALL_INDICES_TRANSFER_V1 1 +typedef struct { + pd_AccountId_V1_t new_; + pd_AccountIndex_V1_t index; +} pd_indices_transfer_V1_t; + +#define PD_CALL_INDICES_FREE_V1 2 +typedef struct { + pd_AccountIndex_V1_t index; +} pd_indices_free_V1_t; + +#define PD_CALL_INDICES_FORCE_TRANSFER_V1 3 +typedef struct { + pd_AccountId_V1_t new_; + pd_AccountIndex_V1_t index; + pd_bool_t freeze; +} pd_indices_force_transfer_V1_t; + +#define PD_CALL_INDICES_FREEZE_V1 4 +typedef struct { + pd_AccountIndex_V1_t index; +} pd_indices_freeze_V1_t; + +#define PD_CALL_BALANCES_SET_BALANCE_V1 1 +typedef struct { + pd_LookupSource_V1_t who; + pd_CompactBalance_t new_free; + pd_CompactBalance_t new_reserved; +} pd_balances_set_balance_V1_t; + +#define PD_CALL_BALANCES_FORCE_TRANSFER_V1 2 +typedef struct { + pd_LookupSource_V1_t source; + pd_LookupSource_V1_t dest; + pd_CompactBalance_t value; +} pd_balances_force_transfer_V1_t; + +#define PD_CALL_STAKING_SET_CONTROLLER_V1 8 +typedef struct { + pd_LookupSource_V1_t controller; +} pd_staking_set_controller_V1_t; + +#define PD_CALL_STAKING_SET_VALIDATOR_COUNT_V1 9 +typedef struct { + pd_Compactu32_t new_; +} pd_staking_set_validator_count_V1_t; + +#define PD_CALL_STAKING_INCREASE_VALIDATOR_COUNT_V1 10 +typedef struct { + pd_Compactu32_t additional; +} pd_staking_increase_validator_count_V1_t; + +#define PD_CALL_STAKING_SCALE_VALIDATOR_COUNT_V1 11 +typedef struct { + pd_Percent_V1_t factor; +} pd_staking_scale_validator_count_V1_t; + +#define PD_CALL_STAKING_FORCE_NO_ERAS_V1 12 +typedef struct { +} pd_staking_force_no_eras_V1_t; + +#define PD_CALL_STAKING_FORCE_NEW_ERA_V1 13 +typedef struct { +} pd_staking_force_new_era_V1_t; + +#define PD_CALL_STAKING_SET_INVULNERABLES_V1 14 +typedef struct { + pd_VecAccountId_V1_t invulnerables; +} pd_staking_set_invulnerables_V1_t; + +#define PD_CALL_STAKING_FORCE_UNSTAKE_V1 15 +typedef struct { + pd_AccountId_V1_t stash; + pd_u32_t num_slashing_spans; +} pd_staking_force_unstake_V1_t; + +#define PD_CALL_STAKING_FORCE_NEW_ERA_ALWAYS_V1 16 +typedef struct { +} pd_staking_force_new_era_always_V1_t; + +#define PD_CALL_STAKING_CANCEL_DEFERRED_SLASH_V1 17 +typedef struct { + pd_EraIndex_V1_t era; + pd_Vecu32_t slash_indices; +} pd_staking_cancel_deferred_slash_V1_t; + +#define PD_CALL_STAKING_SET_HISTORY_DEPTH_V1 20 +typedef struct { + pd_CompactEraIndex_V1_t new_history_depth; + pd_Compactu32_t _era_items_deleted; +} pd_staking_set_history_depth_V1_t; + +#define PD_CALL_STAKING_REAP_STASH_V1 21 +typedef struct { + pd_AccountId_V1_t stash; + pd_u32_t num_slashing_spans; +} pd_staking_reap_stash_V1_t; + +#define PD_CALL_STAKING_SUBMIT_ELECTION_SOLUTION_V1 22 +typedef struct { + pd_VecValidatorIndex_V1_t winners; + pd_CompactAssignments_V1_t compact; + pd_ElectionScore_V1_t score; + pd_EraIndex_V1_t era; + pd_ElectionSize_V1_t size; +} pd_staking_submit_election_solution_V1_t; + +#define PD_CALL_STAKING_SUBMIT_ELECTION_SOLUTION_UNSIGNED_V1 23 +typedef struct { + pd_VecValidatorIndex_V1_t winners; + pd_CompactAssignments_V1_t compact; + pd_ElectionScore_V1_t score; + pd_EraIndex_V1_t era; + pd_ElectionSize_V1_t size; +} pd_staking_submit_election_solution_unsigned_V1_t; + +#define PD_CALL_DEMOCRACY_PROPOSE_V1 0 +typedef struct { + pd_Hash_t proposal_hash; + pd_CompactBalanceOf_t value; +} pd_democracy_propose_V1_t; + +#define PD_CALL_DEMOCRACY_SECOND_V1 1 +typedef struct { + pd_CompactPropIndex_V1_t proposal; + pd_Compactu32_t seconds_upper_bound; +} pd_democracy_second_V1_t; + +#define PD_CALL_DEMOCRACY_VOTE_V1 2 +typedef struct { + pd_CompactReferendumIndex_V1_t ref_index; + pd_AccountVote_V1_t vote; +} pd_democracy_vote_V1_t; + +#define PD_CALL_DEMOCRACY_EMERGENCY_CANCEL_V1 3 +typedef struct { + pd_ReferendumIndex_V1_t ref_index; +} pd_democracy_emergency_cancel_V1_t; + +#define PD_CALL_DEMOCRACY_EXTERNAL_PROPOSE_V1 4 +typedef struct { + pd_Hash_t proposal_hash; +} pd_democracy_external_propose_V1_t; + +#define PD_CALL_DEMOCRACY_EXTERNAL_PROPOSE_MAJORITY_V1 5 +typedef struct { + pd_Hash_t proposal_hash; +} pd_democracy_external_propose_majority_V1_t; + +#define PD_CALL_DEMOCRACY_EXTERNAL_PROPOSE_DEFAULT_V1 6 +typedef struct { + pd_Hash_t proposal_hash; +} pd_democracy_external_propose_default_V1_t; + +#define PD_CALL_DEMOCRACY_FAST_TRACK_V1 7 +typedef struct { + pd_Hash_t proposal_hash; + pd_BlockNumber_t voting_period; + pd_BlockNumber_t delay; +} pd_democracy_fast_track_V1_t; + +#define PD_CALL_DEMOCRACY_VETO_EXTERNAL_V1 8 +typedef struct { + pd_Hash_t proposal_hash; +} pd_democracy_veto_external_V1_t; + +#define PD_CALL_DEMOCRACY_CANCEL_REFERENDUM_V1 9 +typedef struct { + pd_CompactReferendumIndex_V1_t ref_index; +} pd_democracy_cancel_referendum_V1_t; + +#define PD_CALL_DEMOCRACY_CANCEL_QUEUED_V1 10 +typedef struct { + pd_ReferendumIndex_V1_t which; +} pd_democracy_cancel_queued_V1_t; + +#define PD_CALL_DEMOCRACY_DELEGATE_V1 11 +typedef struct { + pd_AccountId_V1_t to; + pd_Conviction_V1_t conviction; + pd_BalanceOf_t balance; +} pd_democracy_delegate_V1_t; + +#define PD_CALL_DEMOCRACY_UNDELEGATE_V1 12 +typedef struct { +} pd_democracy_undelegate_V1_t; + +#define PD_CALL_DEMOCRACY_CLEAR_PUBLIC_PROPOSALS_V1 13 +typedef struct { +} pd_democracy_clear_public_proposals_V1_t; + +#define PD_CALL_DEMOCRACY_NOTE_PREIMAGE_V1 14 +typedef struct { + pd_Bytes_t encoded_proposal; +} pd_democracy_note_preimage_V1_t; + +#define PD_CALL_DEMOCRACY_NOTE_PREIMAGE_OPERATIONAL_V1 15 +typedef struct { + pd_Bytes_t encoded_proposal; +} pd_democracy_note_preimage_operational_V1_t; + +#define PD_CALL_DEMOCRACY_NOTE_IMMINENT_PREIMAGE_V1 16 +typedef struct { + pd_Bytes_t encoded_proposal; +} pd_democracy_note_imminent_preimage_V1_t; + +#define PD_CALL_DEMOCRACY_NOTE_IMMINENT_PREIMAGE_OPERATIONAL_V1 17 +typedef struct { + pd_Bytes_t encoded_proposal; +} pd_democracy_note_imminent_preimage_operational_V1_t; + +#define PD_CALL_DEMOCRACY_REAP_PREIMAGE_V1 18 +typedef struct { + pd_Hash_t proposal_hash; + pd_Compactu32_t proposal_len_upper_bound; +} pd_democracy_reap_preimage_V1_t; + +#define PD_CALL_DEMOCRACY_UNLOCK_V1 19 +typedef struct { + pd_AccountId_V1_t target; +} pd_democracy_unlock_V1_t; + +#define PD_CALL_DEMOCRACY_REMOVE_VOTE_V1 20 +typedef struct { + pd_ReferendumIndex_V1_t index; +} pd_democracy_remove_vote_V1_t; + +#define PD_CALL_DEMOCRACY_REMOVE_OTHER_VOTE_V1 21 +typedef struct { + pd_AccountId_V1_t target; + pd_ReferendumIndex_V1_t index; +} pd_democracy_remove_other_vote_V1_t; + +#define PD_CALL_DEMOCRACY_ENACT_PROPOSAL_V1 22 +typedef struct { + pd_Hash_t proposal_hash; + pd_ReferendumIndex_V1_t index; +} pd_democracy_enact_proposal_V1_t; + +#define PD_CALL_DEMOCRACY_BLACKLIST_V1 23 +typedef struct { + pd_Hash_t proposal_hash; + pd_OptionReferendumIndex_V1_t maybe_ref_index; +} pd_democracy_blacklist_V1_t; + +#define PD_CALL_DEMOCRACY_CANCEL_PROPOSAL_V1 24 +typedef struct { + pd_CompactPropIndex_V1_t prop_index; +} pd_democracy_cancel_proposal_V1_t; + +#define PD_CALL_COUNCIL_SET_MEMBERS_V1 0 +typedef struct { + pd_VecAccountId_V1_t new_members; + pd_OptionAccountId_V1_t prime; + pd_MemberCount_V1_t old_count; +} pd_council_set_members_V1_t; + +#define PD_CALL_COUNCIL_EXECUTE_V1 1 +typedef struct { + pd_Proposal_t proposal; + pd_Compactu32_t length_bound; +} pd_council_execute_V1_t; + +#define PD_CALL_COUNCIL_PROPOSE_V1 2 +typedef struct { + pd_CompactMemberCount_V1_t threshold; + pd_Proposal_t proposal; + pd_Compactu32_t length_bound; +} pd_council_propose_V1_t; + +#define PD_CALL_COUNCIL_VOTE_V1 3 +typedef struct { + pd_Hash_t proposal; + pd_CompactProposalIndex_V1_t index; + pd_bool_t approve; +} pd_council_vote_V1_t; + +#define PD_CALL_COUNCIL_CLOSE_V1 4 +typedef struct { + pd_Hash_t proposal_hash; + pd_CompactProposalIndex_V1_t index; + pd_CompactWeight_V1_t proposal_weight_bound; + pd_Compactu32_t length_bound; +} pd_council_close_V1_t; + +#define PD_CALL_COUNCIL_DISAPPROVE_PROPOSAL_V1 5 +typedef struct { + pd_Hash_t proposal_hash; +} pd_council_disapprove_proposal_V1_t; + +#define PD_CALL_ELECTIONS_VOTE_V1 0 +typedef struct { + pd_VecAccountId_V1_t votes; + pd_CompactBalanceOf_t value; +} pd_elections_vote_V1_t; + +#define PD_CALL_ELECTIONS_REMOVE_VOTER_V1 1 +typedef struct { +} pd_elections_remove_voter_V1_t; + +#define PD_CALL_ELECTIONS_REPORT_DEFUNCT_VOTER_V1 2 +typedef struct { + pd_DefunctVoter_V1_t defunct; +} pd_elections_report_defunct_voter_V1_t; + +#define PD_CALL_ELECTIONS_SUBMIT_CANDIDACY_V1 3 +typedef struct { + pd_Compactu32_t candidate_count; +} pd_elections_submit_candidacy_V1_t; + +#define PD_CALL_ELECTIONS_RENOUNCE_CANDIDACY_V1 4 +typedef struct { + pd_Renouncing_V1_t renouncing; +} pd_elections_renounce_candidacy_V1_t; + +#define PD_CALL_ELECTIONS_REMOVE_MEMBER_V1 5 +typedef struct { + pd_LookupSource_V1_t who; + pd_bool_t has_replacement; +} pd_elections_remove_member_V1_t; + +#define PD_CALL_GRANDPA_REPORT_EQUIVOCATION_V1 0 +typedef struct { + pd_GrandpaEquivocationProof_V1_t equivocation_proof; + pd_KeyOwnerProof_V1_t key_owner_proof; +} pd_grandpa_report_equivocation_V1_t; + +#define PD_CALL_GRANDPA_REPORT_EQUIVOCATION_UNSIGNED_V1 1 +typedef struct { + pd_GrandpaEquivocationProof_V1_t equivocation_proof; + pd_KeyOwnerProof_V1_t key_owner_proof; +} pd_grandpa_report_equivocation_unsigned_V1_t; + +#define PD_CALL_GRANDPA_NOTE_STALLED_V1 2 +typedef struct { + pd_BlockNumber_t delay; + pd_BlockNumber_t best_finalized_block_number; +} pd_grandpa_note_stalled_V1_t; + +#define PD_CALL_TREASURY_PROPOSE_SPEND_V1 0 +typedef struct { + pd_CompactBalanceOf_t value; + pd_LookupSource_V1_t beneficiary; +} pd_treasury_propose_spend_V1_t; + +#define PD_CALL_TREASURY_REJECT_PROPOSAL_V1 1 +typedef struct { + pd_CompactProposalIndex_V1_t proposal_id; +} pd_treasury_reject_proposal_V1_t; + +#define PD_CALL_TREASURY_APPROVE_PROPOSAL_V1 2 +typedef struct { + pd_CompactProposalIndex_V1_t proposal_id; +} pd_treasury_approve_proposal_V1_t; + +#define PD_CALL_CONTRACTS_UPDATE_SCHEDULE_V1 0 +typedef struct { + pd_Schedule_V1_t schedule; +} pd_contracts_update_schedule_V1_t; + +#define PD_CALL_CONTRACTS_PUT_CODE_V1 1 +typedef struct { + pd_Bytes_t code; +} pd_contracts_put_code_V1_t; + +#define PD_CALL_CONTRACTS_CALL_V1 2 +typedef struct { + pd_LookupSource_V1_t dest; + pd_CompactBalanceOf_t value; + pd_CompactGas_V1_t gas_limit; + pd_Bytes_t data; +} pd_contracts_call_V1_t; + +#define PD_CALL_CONTRACTS_INSTANTIATE_V1 3 +typedef struct { + pd_CompactBalanceOf_t endowment; + pd_CompactGas_V1_t gas_limit; + pd_CodeHash_V1_t code_hash; + pd_Bytes_t data; + pd_Bytes_t salt; +} pd_contracts_instantiate_V1_t; + +#define PD_CALL_CONTRACTS_CLAIM_SURCHARGE_V1 4 +typedef struct { + pd_AccountId_V1_t dest; + pd_OptionAccountId_V1_t aux_sender; +} pd_contracts_claim_surcharge_V1_t; + +#define PD_CALL_SUDO_SUDO_V1 0 +typedef struct { + pd_Call_t call; +} pd_sudo_sudo_V1_t; + +#define PD_CALL_SUDO_SUDO_UNCHECKED_WEIGHT_V1 1 +typedef struct { + pd_Call_t call; + pd_Weight_V1_t _weight; +} pd_sudo_sudo_unchecked_weight_V1_t; + +#define PD_CALL_SUDO_SET_KEY_V1 2 +typedef struct { + pd_LookupSource_V1_t new_; +} pd_sudo_set_key_V1_t; + +#define PD_CALL_SUDO_SUDO_AS_V1 3 +typedef struct { + pd_LookupSource_V1_t who; + pd_Call_t call; +} pd_sudo_sudo_as_V1_t; + +#define PD_CALL_IMONLINE_HEARTBEAT_V1 0 +typedef struct { + pd_Heartbeat_t heartbeat; + pd_Signature_V1_t _signature; +} pd_imonline_heartbeat_V1_t; + +#define PD_CALL_IDENTITY_ADD_REGISTRAR_V1 0 +typedef struct { + pd_AccountId_V1_t account; +} pd_identity_add_registrar_V1_t; + +#define PD_CALL_IDENTITY_SET_IDENTITY_V1 1 +typedef struct { + pd_IdentityInfo_V1_t info; +} pd_identity_set_identity_V1_t; + +#define PD_CALL_IDENTITY_SET_SUBS_V1 2 +typedef struct { + pd_VecTupleAccountIdData_V1_t subs; +} pd_identity_set_subs_V1_t; + +#define PD_CALL_IDENTITY_CLEAR_IDENTITY_V1 3 +typedef struct { +} pd_identity_clear_identity_V1_t; + +#define PD_CALL_IDENTITY_REQUEST_JUDGEMENT_V1 4 +typedef struct { + pd_CompactRegistrarIndex_V1_t reg_index; + pd_CompactBalanceOf_t max_fee; +} pd_identity_request_judgement_V1_t; + +#define PD_CALL_IDENTITY_CANCEL_REQUEST_V1 5 +typedef struct { + pd_RegistrarIndex_V1_t reg_index; +} pd_identity_cancel_request_V1_t; + +#define PD_CALL_IDENTITY_SET_FEE_V1 6 +typedef struct { + pd_CompactRegistrarIndex_V1_t index; + pd_CompactBalanceOf_t fee; +} pd_identity_set_fee_V1_t; + +#define PD_CALL_IDENTITY_SET_ACCOUNT_ID_V1 7 +typedef struct { + pd_CompactRegistrarIndex_V1_t index; + pd_AccountId_V1_t new_; +} pd_identity_set_account_id_V1_t; + +#define PD_CALL_IDENTITY_SET_FIELDS_V1 8 +typedef struct { + pd_CompactRegistrarIndex_V1_t index; + pd_IdentityFields_V1_t fields; +} pd_identity_set_fields_V1_t; + +#define PD_CALL_IDENTITY_PROVIDE_JUDGEMENT_V1 9 +typedef struct { + pd_CompactRegistrarIndex_V1_t reg_index; + pd_LookupSource_V1_t target; + pd_IdentityJudgement_V1_t judgement; +} pd_identity_provide_judgement_V1_t; + +#define PD_CALL_IDENTITY_KILL_IDENTITY_V1 10 +typedef struct { + pd_LookupSource_V1_t target; +} pd_identity_kill_identity_V1_t; + +#define PD_CALL_IDENTITY_ADD_SUB_V1 11 +typedef struct { + pd_LookupSource_V1_t sub; + pd_Data_t data; +} pd_identity_add_sub_V1_t; + +#define PD_CALL_IDENTITY_RENAME_SUB_V1 12 +typedef struct { + pd_LookupSource_V1_t sub; + pd_Data_t data; +} pd_identity_rename_sub_V1_t; + +#define PD_CALL_IDENTITY_REMOVE_SUB_V1 13 +typedef struct { + pd_LookupSource_V1_t sub; +} pd_identity_remove_sub_V1_t; + +#define PD_CALL_IDENTITY_QUIT_SUB_V1 14 +typedef struct { +} pd_identity_quit_sub_V1_t; + +#define PD_CALL_RECOVERY_AS_RECOVERED_V1 0 +typedef struct { + pd_AccountId_V1_t account; + pd_Call_t call; +} pd_recovery_as_recovered_V1_t; + +#define PD_CALL_RECOVERY_SET_RECOVERED_V1 1 +typedef struct { + pd_AccountId_V1_t lost; + pd_AccountId_V1_t rescuer; +} pd_recovery_set_recovered_V1_t; + +#define PD_CALL_RECOVERY_CREATE_RECOVERY_V1 2 +typedef struct { + pd_VecAccountId_V1_t friends; + pd_u16_t threshold; + pd_BlockNumber_t delay_period; +} pd_recovery_create_recovery_V1_t; + +#define PD_CALL_RECOVERY_INITIATE_RECOVERY_V1 3 +typedef struct { + pd_AccountId_V1_t account; +} pd_recovery_initiate_recovery_V1_t; + +#define PD_CALL_RECOVERY_VOUCH_RECOVERY_V1 4 +typedef struct { + pd_AccountId_V1_t lost; + pd_AccountId_V1_t rescuer; +} pd_recovery_vouch_recovery_V1_t; + +#define PD_CALL_RECOVERY_CLAIM_RECOVERY_V1 5 +typedef struct { + pd_AccountId_V1_t account; +} pd_recovery_claim_recovery_V1_t; + +#define PD_CALL_RECOVERY_CLOSE_RECOVERY_V1 6 +typedef struct { + pd_AccountId_V1_t rescuer; +} pd_recovery_close_recovery_V1_t; + +#define PD_CALL_RECOVERY_REMOVE_RECOVERY_V1 7 +typedef struct { +} pd_recovery_remove_recovery_V1_t; + +#define PD_CALL_RECOVERY_CANCEL_RECOVERED_V1 8 +typedef struct { + pd_AccountId_V1_t account; +} pd_recovery_cancel_recovered_V1_t; + +#define PD_CALL_VESTING_VEST_V1 0 +typedef struct { +} pd_vesting_vest_V1_t; + +#define PD_CALL_VESTING_VEST_OTHER_V1 1 +typedef struct { + pd_LookupSource_V1_t target; +} pd_vesting_vest_other_V1_t; + +#define PD_CALL_VESTING_VESTED_TRANSFER_V1 2 +typedef struct { + pd_LookupSource_V1_t target; + pd_VestingInfo_V1_t schedule; +} pd_vesting_vested_transfer_V1_t; + +#define PD_CALL_VESTING_FORCE_VESTED_TRANSFER_V1 3 +typedef struct { + pd_LookupSource_V1_t source; + pd_LookupSource_V1_t target; + pd_VestingInfo_V1_t schedule; +} pd_vesting_force_vested_transfer_V1_t; + +#define PD_CALL_SCHEDULER_SCHEDULE_V1 0 +typedef struct { + pd_BlockNumber_t when; + pd_OptionPeriod_V1_t maybe_periodic; + pd_Priority_V1_t priority; + pd_Call_t call; +} pd_scheduler_schedule_V1_t; + +#define PD_CALL_SCHEDULER_CANCEL_V1 1 +typedef struct { + pd_BlockNumber_t when; + pd_u32_t index; +} pd_scheduler_cancel_V1_t; + +#define PD_CALL_SCHEDULER_SCHEDULE_NAMED_V1 2 +typedef struct { + pd_Bytes_t id; + pd_BlockNumber_t when; + pd_OptionPeriod_V1_t maybe_periodic; + pd_Priority_V1_t priority; + pd_Call_t call; +} pd_scheduler_schedule_named_V1_t; + +#define PD_CALL_SCHEDULER_CANCEL_NAMED_V1 3 +typedef struct { + pd_Bytes_t id; +} pd_scheduler_cancel_named_V1_t; + +#define PD_CALL_SCHEDULER_SCHEDULE_AFTER_V1 4 +typedef struct { + pd_BlockNumber_t after; + pd_OptionPeriod_V1_t maybe_periodic; + pd_Priority_V1_t priority; + pd_Call_t call; +} pd_scheduler_schedule_after_V1_t; + +#define PD_CALL_SCHEDULER_SCHEDULE_NAMED_AFTER_V1 5 +typedef struct { + pd_Bytes_t id; + pd_BlockNumber_t after; + pd_OptionPeriod_V1_t maybe_periodic; + pd_Priority_V1_t priority; + pd_Call_t call; +} pd_scheduler_schedule_named_after_V1_t; + +#define PD_CALL_PROXY_PROXY_V1 0 +typedef struct { + pd_AccountId_V1_t real; + pd_OptionProxyType_V1_t force_proxy_type; + pd_Call_t call; +} pd_proxy_proxy_V1_t; + +#define PD_CALL_PROXY_ADD_PROXY_V1 1 +typedef struct { + pd_AccountId_V1_t delegate; + pd_ProxyType_V1_t proxy_type; + pd_BlockNumber_t delay; +} pd_proxy_add_proxy_V1_t; + +#define PD_CALL_PROXY_REMOVE_PROXY_V1 2 +typedef struct { + pd_AccountId_V1_t delegate; + pd_ProxyType_V1_t proxy_type; + pd_BlockNumber_t delay; +} pd_proxy_remove_proxy_V1_t; + +#define PD_CALL_PROXY_REMOVE_PROXIES_V1 3 +typedef struct { +} pd_proxy_remove_proxies_V1_t; + +#define PD_CALL_PROXY_ANONYMOUS_V1 4 +typedef struct { + pd_ProxyType_V1_t proxy_type; + pd_BlockNumber_t delay; + pd_u16_t index; +} pd_proxy_anonymous_V1_t; + +#define PD_CALL_PROXY_KILL_ANONYMOUS_V1 5 +typedef struct { + pd_AccountId_V1_t spawner; + pd_ProxyType_V1_t proxy_type; + pd_u16_t index; + pd_CompactBlockNumber_t height; + pd_Compactu32_t ext_index; +} pd_proxy_kill_anonymous_V1_t; + +#define PD_CALL_PROXY_ANNOUNCE_V1 6 +typedef struct { + pd_AccountId_V1_t real; + pd_CallHashOf_V1_t call_hash; +} pd_proxy_announce_V1_t; + +#define PD_CALL_PROXY_REMOVE_ANNOUNCEMENT_V1 7 +typedef struct { + pd_AccountId_V1_t real; + pd_CallHashOf_V1_t call_hash; +} pd_proxy_remove_announcement_V1_t; + +#define PD_CALL_PROXY_REJECT_ANNOUNCEMENT_V1 8 +typedef struct { + pd_AccountId_V1_t delegate; + pd_CallHashOf_V1_t call_hash; +} pd_proxy_reject_announcement_V1_t; + +#define PD_CALL_PROXY_PROXY_ANNOUNCED_V1 9 +typedef struct { + pd_AccountId_V1_t delegate; + pd_AccountId_V1_t real; + pd_OptionProxyType_V1_t force_proxy_type; + pd_Call_t call; +} pd_proxy_proxy_announced_V1_t; + +#define PD_CALL_MULTISIG_AS_MULTI_THRESHOLD_1_V1 0 +typedef struct { + pd_VecAccountId_V1_t other_signatories; + pd_Call_t call; +} pd_multisig_as_multi_threshold_1_V1_t; + +#define PD_CALL_MULTISIG_AS_MULTI_V1 1 +typedef struct { + pd_u16_t threshold; + pd_VecAccountId_V1_t other_signatories; + pd_OptionTimepoint_V1_t maybe_timepoint; + pd_OpaqueCall_V1_t call; + pd_bool_t store_call; + pd_Weight_V1_t max_weight; +} pd_multisig_as_multi_V1_t; + +#define PD_CALL_MULTISIG_APPROVE_AS_MULTI_V1 2 +typedef struct { + pd_u16_t threshold; + pd_VecAccountId_V1_t other_signatories; + pd_OptionTimepoint_V1_t maybe_timepoint; + pd_u8_array_32_V1_t call_hash; + pd_Weight_V1_t max_weight; +} pd_multisig_approve_as_multi_V1_t; + +#define PD_CALL_MULTISIG_CANCEL_AS_MULTI_V1 3 +typedef struct { + pd_u16_t threshold; + pd_VecAccountId_V1_t other_signatories; + pd_Timepoint_V1_t timepoint; + pd_u8_array_32_V1_t call_hash; +} pd_multisig_cancel_as_multi_V1_t; + +#define PD_CALL_ASSETS_CREATE_V1 0 +typedef struct { + pd_CompactAssetId_V1_t id; + pd_LookupSource_V1_t admin; + pd_u32_t max_zombies; + pd_TAssetBalance_V1_t min_balance; +} pd_assets_create_V1_t; + +#define PD_CALL_ASSETS_FORCE_CREATE_V1 1 +typedef struct { + pd_CompactAssetId_V1_t id; + pd_LookupSource_V1_t owner; + pd_Compactu32_t max_zombies; + pd_CompactTAssetBalance_V1_t min_balance; +} pd_assets_force_create_V1_t; + +#define PD_CALL_ASSETS_DESTROY_V1 2 +typedef struct { + pd_CompactAssetId_V1_t id; + pd_Compactu32_t zombies_witness; +} pd_assets_destroy_V1_t; + +#define PD_CALL_ASSETS_FORCE_DESTROY_V1 3 +typedef struct { + pd_CompactAssetId_V1_t id; + pd_Compactu32_t zombies_witness; +} pd_assets_force_destroy_V1_t; + +#define PD_CALL_ASSETS_MINT_V1 4 +typedef struct { + pd_CompactAssetId_V1_t id; + pd_LookupSource_V1_t beneficiary; + pd_CompactTAssetBalance_V1_t amount; +} pd_assets_mint_V1_t; + +#define PD_CALL_ASSETS_BURN_V1 5 +typedef struct { + pd_CompactAssetId_V1_t id; + pd_LookupSource_V1_t who; + pd_CompactTAssetBalance_V1_t amount; +} pd_assets_burn_V1_t; + +#define PD_CALL_ASSETS_TRANSFER_V1 6 +typedef struct { + pd_CompactAssetId_V1_t id; + pd_LookupSource_V1_t target; + pd_CompactTAssetBalance_V1_t amount; +} pd_assets_transfer_V1_t; + +#define PD_CALL_ASSETS_FORCE_TRANSFER_V1 7 +typedef struct { + pd_CompactAssetId_V1_t id; + pd_LookupSource_V1_t source; + pd_LookupSource_V1_t dest; + pd_CompactTAssetBalance_V1_t amount; +} pd_assets_force_transfer_V1_t; + +#define PD_CALL_ASSETS_FREEZE_V1 8 +typedef struct { + pd_CompactAssetId_V1_t id; + pd_LookupSource_V1_t who; +} pd_assets_freeze_V1_t; + +#define PD_CALL_ASSETS_THAW_V1 9 +typedef struct { + pd_CompactAssetId_V1_t id; + pd_LookupSource_V1_t who; +} pd_assets_thaw_V1_t; + +#define PD_CALL_ASSETS_TRANSFER_OWNERSHIP_V1 10 +typedef struct { + pd_CompactAssetId_V1_t id; + pd_LookupSource_V1_t new_owner; +} pd_assets_transfer_ownership_V1_t; + +#define PD_CALL_ASSETS_SET_TEAM_V1 11 +typedef struct { + pd_CompactAssetId_V1_t id; + pd_LookupSource_V1_t issuer; + pd_LookupSource_V1_t admin; + pd_LookupSource_V1_t freezer; +} pd_assets_set_team_V1_t; + +#define PD_CALL_ASSETS_SET_MAX_ZOMBIES_V1 12 +typedef struct { + pd_CompactAssetId_V1_t id; + pd_Compactu32_t max_zombies; +} pd_assets_set_max_zombies_V1_t; + +#define PD_CALL_TREASURYREWARD_SET_CURRENT_PAYOUT_V1 0 +typedef struct { + pd_BalanceOf_t payout; +} pd_treasuryreward_set_current_payout_V1_t; + +#define PD_CALL_TREASURYREWARD_SET_MINTING_INTERVAL_V1 1 +typedef struct { + pd_BlockNumber_t interval; +} pd_treasuryreward_set_minting_interval_V1_t; + +#define PD_CALL_ETHEREUM_TRANSACT_V1 0 +typedef struct { + pd_EthTransaction_V1_t transaction; +} pd_ethereum_transact_V1_t; + +#define PD_CALL_EVM_WITHDRAW_V1 0 +typedef struct { + pd_H160_V1_t address; + pd_BalanceOf_t value; +} pd_evm_withdraw_V1_t; + +#define PD_CALL_EVM_CALL_V1 1 +typedef struct { + pd_H160_V1_t source; + pd_H160_V1_t target; + pd_Bytes_t input; + pd_U256_V1_t value; + pd_u32_t gas_limit; + pd_U256_V1_t gas_price; + pd_OptionU256_V1_t nonce; +} pd_evm_call_V1_t; + +#define PD_CALL_EVM_CREATE_V1 2 +typedef struct { + pd_H160_V1_t source; + pd_Bytes_t init; + pd_U256_V1_t value; + pd_u32_t gas_limit; + pd_U256_V1_t gas_price; + pd_OptionU256_V1_t nonce; +} pd_evm_create_V1_t; + +#define PD_CALL_EVM_CREATE2_V1 3 +typedef struct { + pd_H160_V1_t source; + pd_Bytes_t init; + pd_H256_V1_t salt; + pd_U256_V1_t value; + pd_u32_t gas_limit; + pd_U256_V1_t gas_price; + pd_OptionU256_V1_t nonce; +} pd_evm_create2_V1_t; + +#define PD_CALL_CHAINBRIDGE_SET_THRESHOLD_V1 0 +typedef struct { + pd_u32_t threshold; +} pd_chainbridge_set_threshold_V1_t; + +#define PD_CALL_CHAINBRIDGE_SET_RESOURCE_V1 1 +typedef struct { + pd_ResourceId_V1_t id; + pd_Bytes_t method; +} pd_chainbridge_set_resource_V1_t; + +#define PD_CALL_CHAINBRIDGE_REMOVE_RESOURCE_V1 2 +typedef struct { + pd_ResourceId_V1_t id; +} pd_chainbridge_remove_resource_V1_t; + +#define PD_CALL_CHAINBRIDGE_WHITELIST_CHAIN_V1 3 +typedef struct { + pd_ChainId_V1_t id; +} pd_chainbridge_whitelist_chain_V1_t; + +#define PD_CALL_CHAINBRIDGE_ADD_RELAYER_V1 4 +typedef struct { + pd_AccountId_V1_t v; +} pd_chainbridge_add_relayer_V1_t; + +#define PD_CALL_CHAINBRIDGE_REMOVE_RELAYER_V1 5 +typedef struct { + pd_AccountId_V1_t v; +} pd_chainbridge_remove_relayer_V1_t; + +#define PD_CALL_CHAINBRIDGE_ACKNOWLEDGE_PROPOSAL_V1 6 +typedef struct { + pd_DepositNonce_V1_t nonce; + pd_ChainId_V1_t src_id; + pd_ResourceId_V1_t r_id; + pd_Proposal_t call; +} pd_chainbridge_acknowledge_proposal_V1_t; + +#define PD_CALL_CHAINBRIDGE_REJECT_PROPOSAL_V1 7 +typedef struct { + pd_DepositNonce_V1_t nonce; + pd_ChainId_V1_t src_id; + pd_ResourceId_V1_t r_id; + pd_Proposal_t call; +} pd_chainbridge_reject_proposal_V1_t; + +#define PD_CALL_CHAINBRIDGE_EVAL_VOTE_STATE_V1 8 +typedef struct { + pd_DepositNonce_V1_t nonce; + pd_ChainId_V1_t src_id; + pd_Proposal_t prop; +} pd_chainbridge_eval_vote_state_V1_t; + +#define PD_CALL_EDGEBRIDGE_TRANSFER_NATIVE_V1 0 +typedef struct { + pd_BalanceOf_t amount; + pd_Bytes_t recipient; + pd_ChainId_V1_t dest_id; +} pd_edgebridge_transfer_native_V1_t; + +#define PD_CALL_EDGEBRIDGE_TRANSFER_V1 1 +typedef struct { + pd_AccountId_V1_t to; + pd_BalanceOf_t amount; +} pd_edgebridge_transfer_V1_t; + +#define PD_CALL_BOUNTIES_PROPOSE_BOUNTY_V1 0 +typedef struct { + pd_CompactBalanceOf_t value; + pd_Bytes_t description; +} pd_bounties_propose_bounty_V1_t; + +#define PD_CALL_BOUNTIES_APPROVE_BOUNTY_V1 1 +typedef struct { + pd_CompactBountyIndex_V1_t bounty_id; +} pd_bounties_approve_bounty_V1_t; + +#define PD_CALL_BOUNTIES_PROPOSE_CURATOR_V1 2 +typedef struct { + pd_CompactBountyIndex_V1_t bounty_id; + pd_LookupSource_V1_t curator; + pd_CompactBalanceOf_t fee; +} pd_bounties_propose_curator_V1_t; + +#define PD_CALL_BOUNTIES_UNASSIGN_CURATOR_V1 3 +typedef struct { + pd_CompactBountyIndex_V1_t bounty_id; +} pd_bounties_unassign_curator_V1_t; + +#define PD_CALL_BOUNTIES_ACCEPT_CURATOR_V1 4 +typedef struct { + pd_CompactBountyIndex_V1_t bounty_id; +} pd_bounties_accept_curator_V1_t; + +#define PD_CALL_BOUNTIES_AWARD_BOUNTY_V1 5 +typedef struct { + pd_CompactBountyIndex_V1_t bounty_id; + pd_LookupSource_V1_t beneficiary; +} pd_bounties_award_bounty_V1_t; + +#define PD_CALL_BOUNTIES_CLAIM_BOUNTY_V1 6 +typedef struct { + pd_CompactBountyIndex_V1_t bounty_id; +} pd_bounties_claim_bounty_V1_t; + +#define PD_CALL_BOUNTIES_CLOSE_BOUNTY_V1 7 +typedef struct { + pd_CompactBountyIndex_V1_t bounty_id; +} pd_bounties_close_bounty_V1_t; + +#define PD_CALL_BOUNTIES_EXTEND_BOUNTY_EXPIRY_V1 8 +typedef struct { + pd_CompactBountyIndex_V1_t bounty_id; + pd_Bytes_t _remark; +} pd_bounties_extend_bounty_expiry_V1_t; + +#define PD_CALL_TIPS_REPORT_AWESOME_V1 0 +typedef struct { + pd_Bytes_t reason; + pd_AccountId_V1_t who; +} pd_tips_report_awesome_V1_t; + +#define PD_CALL_TIPS_RETRACT_TIP_V1 1 +typedef struct { + pd_Hash_t hash; +} pd_tips_retract_tip_V1_t; + +#define PD_CALL_TIPS_TIP_NEW_V1 2 +typedef struct { + pd_Bytes_t reason; + pd_AccountId_V1_t who; + pd_CompactBalanceOf_t tip_value; +} pd_tips_tip_new_V1_t; + +#define PD_CALL_TIPS_TIP_V1 3 +typedef struct { + pd_Hash_t hash; + pd_CompactBalanceOf_t tip_value; +} pd_tips_tip_V1_t; + +#define PD_CALL_TIPS_CLOSE_TIP_V1 4 +typedef struct { + pd_Hash_t hash; +} pd_tips_close_tip_V1_t; + +#define PD_CALL_TIPS_SLASH_TIP_V1 5 +typedef struct { + pd_Hash_t hash; +} pd_tips_slash_tip_V1_t; + +#endif + +typedef union { + pd_utility_batch_V1_t utility_batch_V1; + pd_utility_batch_all_V1_t utility_batch_all_V1; + pd_balances_transfer_V1_t balances_transfer_V1; + pd_balances_transfer_keep_alive_V1_t balances_transfer_keep_alive_V1; + pd_staking_bond_V1_t staking_bond_V1; + pd_staking_bond_extra_V1_t staking_bond_extra_V1; + pd_staking_unbond_V1_t staking_unbond_V1; + pd_staking_withdraw_unbonded_V1_t staking_withdraw_unbonded_V1; + pd_staking_validate_V1_t staking_validate_V1; + pd_staking_nominate_V1_t staking_nominate_V1; + pd_staking_chill_V1_t staking_chill_V1; + pd_staking_set_payee_V1_t staking_set_payee_V1; + pd_staking_payout_stakers_V1_t staking_payout_stakers_V1; + pd_staking_rebond_V1_t staking_rebond_V1; + pd_session_set_keys_V1_t session_set_keys_V1; + pd_session_purge_keys_V1_t session_purge_keys_V1; +#ifdef SUBSTRATE_PARSER_FULL + pd_system_fill_block_V1_t system_fill_block_V1; + pd_system_remark_V1_t system_remark_V1; + pd_system_set_heap_pages_V1_t system_set_heap_pages_V1; + pd_system_set_code_V1_t system_set_code_V1; + pd_system_set_code_without_checks_V1_t system_set_code_without_checks_V1; + pd_system_set_changes_trie_config_V1_t system_set_changes_trie_config_V1; + pd_system_set_storage_V1_t system_set_storage_V1; + pd_system_kill_storage_V1_t system_kill_storage_V1; + pd_system_kill_prefix_V1_t system_kill_prefix_V1; + pd_system_suicide_V1_t system_suicide_V1; + pd_utility_as_derivative_V1_t utility_as_derivative_V1; + pd_timestamp_set_V1_t timestamp_set_V1; + pd_authorship_set_uncles_V1_t authorship_set_uncles_V1; + pd_indices_claim_V1_t indices_claim_V1; + pd_indices_transfer_V1_t indices_transfer_V1; + pd_indices_free_V1_t indices_free_V1; + pd_indices_force_transfer_V1_t indices_force_transfer_V1; + pd_indices_freeze_V1_t indices_freeze_V1; + pd_balances_set_balance_V1_t balances_set_balance_V1; + pd_balances_force_transfer_V1_t balances_force_transfer_V1; + pd_staking_set_controller_V1_t staking_set_controller_V1; + pd_staking_set_validator_count_V1_t staking_set_validator_count_V1; + pd_staking_increase_validator_count_V1_t staking_increase_validator_count_V1; + pd_staking_scale_validator_count_V1_t staking_scale_validator_count_V1; + pd_staking_force_no_eras_V1_t staking_force_no_eras_V1; + pd_staking_force_new_era_V1_t staking_force_new_era_V1; + pd_staking_set_invulnerables_V1_t staking_set_invulnerables_V1; + pd_staking_force_unstake_V1_t staking_force_unstake_V1; + pd_staking_force_new_era_always_V1_t staking_force_new_era_always_V1; + pd_staking_cancel_deferred_slash_V1_t staking_cancel_deferred_slash_V1; + pd_staking_set_history_depth_V1_t staking_set_history_depth_V1; + pd_staking_reap_stash_V1_t staking_reap_stash_V1; + pd_staking_submit_election_solution_V1_t staking_submit_election_solution_V1; + pd_staking_submit_election_solution_unsigned_V1_t staking_submit_election_solution_unsigned_V1; + pd_democracy_propose_V1_t democracy_propose_V1; + pd_democracy_second_V1_t democracy_second_V1; + pd_democracy_vote_V1_t democracy_vote_V1; + pd_democracy_emergency_cancel_V1_t democracy_emergency_cancel_V1; + pd_democracy_external_propose_V1_t democracy_external_propose_V1; + pd_democracy_external_propose_majority_V1_t democracy_external_propose_majority_V1; + pd_democracy_external_propose_default_V1_t democracy_external_propose_default_V1; + pd_democracy_fast_track_V1_t democracy_fast_track_V1; + pd_democracy_veto_external_V1_t democracy_veto_external_V1; + pd_democracy_cancel_referendum_V1_t democracy_cancel_referendum_V1; + pd_democracy_cancel_queued_V1_t democracy_cancel_queued_V1; + pd_democracy_delegate_V1_t democracy_delegate_V1; + pd_democracy_undelegate_V1_t democracy_undelegate_V1; + pd_democracy_clear_public_proposals_V1_t democracy_clear_public_proposals_V1; + pd_democracy_note_preimage_V1_t democracy_note_preimage_V1; + pd_democracy_note_preimage_operational_V1_t democracy_note_preimage_operational_V1; + pd_democracy_note_imminent_preimage_V1_t democracy_note_imminent_preimage_V1; + pd_democracy_note_imminent_preimage_operational_V1_t democracy_note_imminent_preimage_operational_V1; + pd_democracy_reap_preimage_V1_t democracy_reap_preimage_V1; + pd_democracy_unlock_V1_t democracy_unlock_V1; + pd_democracy_remove_vote_V1_t democracy_remove_vote_V1; + pd_democracy_remove_other_vote_V1_t democracy_remove_other_vote_V1; + pd_democracy_enact_proposal_V1_t democracy_enact_proposal_V1; + pd_democracy_blacklist_V1_t democracy_blacklist_V1; + pd_democracy_cancel_proposal_V1_t democracy_cancel_proposal_V1; + pd_council_set_members_V1_t council_set_members_V1; + pd_council_execute_V1_t council_execute_V1; + pd_council_propose_V1_t council_propose_V1; + pd_council_vote_V1_t council_vote_V1; + pd_council_close_V1_t council_close_V1; + pd_council_disapprove_proposal_V1_t council_disapprove_proposal_V1; + pd_elections_vote_V1_t elections_vote_V1; + pd_elections_remove_voter_V1_t elections_remove_voter_V1; + pd_elections_report_defunct_voter_V1_t elections_report_defunct_voter_V1; + pd_elections_submit_candidacy_V1_t elections_submit_candidacy_V1; + pd_elections_renounce_candidacy_V1_t elections_renounce_candidacy_V1; + pd_elections_remove_member_V1_t elections_remove_member_V1; + pd_grandpa_report_equivocation_V1_t grandpa_report_equivocation_V1; + pd_grandpa_report_equivocation_unsigned_V1_t grandpa_report_equivocation_unsigned_V1; + pd_grandpa_note_stalled_V1_t grandpa_note_stalled_V1; + pd_treasury_propose_spend_V1_t treasury_propose_spend_V1; + pd_treasury_reject_proposal_V1_t treasury_reject_proposal_V1; + pd_treasury_approve_proposal_V1_t treasury_approve_proposal_V1; + pd_contracts_update_schedule_V1_t contracts_update_schedule_V1; + pd_contracts_put_code_V1_t contracts_put_code_V1; + pd_contracts_call_V1_t contracts_call_V1; + pd_contracts_instantiate_V1_t contracts_instantiate_V1; + pd_contracts_claim_surcharge_V1_t contracts_claim_surcharge_V1; + pd_sudo_sudo_V1_t sudo_sudo_V1; + pd_sudo_sudo_unchecked_weight_V1_t sudo_sudo_unchecked_weight_V1; + pd_sudo_set_key_V1_t sudo_set_key_V1; + pd_sudo_sudo_as_V1_t sudo_sudo_as_V1; + pd_imonline_heartbeat_V1_t imonline_heartbeat_V1; + pd_identity_add_registrar_V1_t identity_add_registrar_V1; + pd_identity_set_identity_V1_t identity_set_identity_V1; + pd_identity_set_subs_V1_t identity_set_subs_V1; + pd_identity_clear_identity_V1_t identity_clear_identity_V1; + pd_identity_request_judgement_V1_t identity_request_judgement_V1; + pd_identity_cancel_request_V1_t identity_cancel_request_V1; + pd_identity_set_fee_V1_t identity_set_fee_V1; + pd_identity_set_account_id_V1_t identity_set_account_id_V1; + pd_identity_set_fields_V1_t identity_set_fields_V1; + pd_identity_provide_judgement_V1_t identity_provide_judgement_V1; + pd_identity_kill_identity_V1_t identity_kill_identity_V1; + pd_identity_add_sub_V1_t identity_add_sub_V1; + pd_identity_rename_sub_V1_t identity_rename_sub_V1; + pd_identity_remove_sub_V1_t identity_remove_sub_V1; + pd_identity_quit_sub_V1_t identity_quit_sub_V1; + pd_recovery_as_recovered_V1_t recovery_as_recovered_V1; + pd_recovery_set_recovered_V1_t recovery_set_recovered_V1; + pd_recovery_create_recovery_V1_t recovery_create_recovery_V1; + pd_recovery_initiate_recovery_V1_t recovery_initiate_recovery_V1; + pd_recovery_vouch_recovery_V1_t recovery_vouch_recovery_V1; + pd_recovery_claim_recovery_V1_t recovery_claim_recovery_V1; + pd_recovery_close_recovery_V1_t recovery_close_recovery_V1; + pd_recovery_remove_recovery_V1_t recovery_remove_recovery_V1; + pd_recovery_cancel_recovered_V1_t recovery_cancel_recovered_V1; + pd_vesting_vest_V1_t vesting_vest_V1; + pd_vesting_vest_other_V1_t vesting_vest_other_V1; + pd_vesting_vested_transfer_V1_t vesting_vested_transfer_V1; + pd_vesting_force_vested_transfer_V1_t vesting_force_vested_transfer_V1; + pd_scheduler_schedule_V1_t scheduler_schedule_V1; + pd_scheduler_cancel_V1_t scheduler_cancel_V1; + pd_scheduler_schedule_named_V1_t scheduler_schedule_named_V1; + pd_scheduler_cancel_named_V1_t scheduler_cancel_named_V1; + pd_scheduler_schedule_after_V1_t scheduler_schedule_after_V1; + pd_scheduler_schedule_named_after_V1_t scheduler_schedule_named_after_V1; + pd_proxy_proxy_V1_t proxy_proxy_V1; + pd_proxy_add_proxy_V1_t proxy_add_proxy_V1; + pd_proxy_remove_proxy_V1_t proxy_remove_proxy_V1; + pd_proxy_remove_proxies_V1_t proxy_remove_proxies_V1; + pd_proxy_anonymous_V1_t proxy_anonymous_V1; + pd_proxy_kill_anonymous_V1_t proxy_kill_anonymous_V1; + pd_proxy_announce_V1_t proxy_announce_V1; + pd_proxy_remove_announcement_V1_t proxy_remove_announcement_V1; + pd_proxy_reject_announcement_V1_t proxy_reject_announcement_V1; + pd_proxy_proxy_announced_V1_t proxy_proxy_announced_V1; + pd_multisig_as_multi_threshold_1_V1_t multisig_as_multi_threshold_1_V1; + pd_multisig_as_multi_V1_t multisig_as_multi_V1; + pd_multisig_approve_as_multi_V1_t multisig_approve_as_multi_V1; + pd_multisig_cancel_as_multi_V1_t multisig_cancel_as_multi_V1; + pd_assets_create_V1_t assets_create_V1; + pd_assets_force_create_V1_t assets_force_create_V1; + pd_assets_destroy_V1_t assets_destroy_V1; + pd_assets_force_destroy_V1_t assets_force_destroy_V1; + pd_assets_mint_V1_t assets_mint_V1; + pd_assets_burn_V1_t assets_burn_V1; + pd_assets_transfer_V1_t assets_transfer_V1; + pd_assets_force_transfer_V1_t assets_force_transfer_V1; + pd_assets_freeze_V1_t assets_freeze_V1; + pd_assets_thaw_V1_t assets_thaw_V1; + pd_assets_transfer_ownership_V1_t assets_transfer_ownership_V1; + pd_assets_set_team_V1_t assets_set_team_V1; + pd_assets_set_max_zombies_V1_t assets_set_max_zombies_V1; + pd_treasuryreward_set_current_payout_V1_t treasuryreward_set_current_payout_V1; + pd_treasuryreward_set_minting_interval_V1_t treasuryreward_set_minting_interval_V1; + pd_ethereum_transact_V1_t ethereum_transact_V1; + pd_evm_withdraw_V1_t evm_withdraw_V1; + pd_evm_call_V1_t evm_call_V1; + pd_evm_create_V1_t evm_create_V1; + pd_evm_create2_V1_t evm_create2_V1; + pd_chainbridge_set_threshold_V1_t chainbridge_set_threshold_V1; + pd_chainbridge_set_resource_V1_t chainbridge_set_resource_V1; + pd_chainbridge_remove_resource_V1_t chainbridge_remove_resource_V1; + pd_chainbridge_whitelist_chain_V1_t chainbridge_whitelist_chain_V1; + pd_chainbridge_add_relayer_V1_t chainbridge_add_relayer_V1; + pd_chainbridge_remove_relayer_V1_t chainbridge_remove_relayer_V1; + pd_chainbridge_acknowledge_proposal_V1_t chainbridge_acknowledge_proposal_V1; + pd_chainbridge_reject_proposal_V1_t chainbridge_reject_proposal_V1; + pd_chainbridge_eval_vote_state_V1_t chainbridge_eval_vote_state_V1; + pd_edgebridge_transfer_native_V1_t edgebridge_transfer_native_V1; + pd_edgebridge_transfer_V1_t edgebridge_transfer_V1; + pd_bounties_propose_bounty_V1_t bounties_propose_bounty_V1; + pd_bounties_approve_bounty_V1_t bounties_approve_bounty_V1; + pd_bounties_propose_curator_V1_t bounties_propose_curator_V1; + pd_bounties_unassign_curator_V1_t bounties_unassign_curator_V1; + pd_bounties_accept_curator_V1_t bounties_accept_curator_V1; + pd_bounties_award_bounty_V1_t bounties_award_bounty_V1; + pd_bounties_claim_bounty_V1_t bounties_claim_bounty_V1; + pd_bounties_close_bounty_V1_t bounties_close_bounty_V1; + pd_bounties_extend_bounty_expiry_V1_t bounties_extend_bounty_expiry_V1; + pd_tips_report_awesome_V1_t tips_report_awesome_V1; + pd_tips_retract_tip_V1_t tips_retract_tip_V1; + pd_tips_tip_new_V1_t tips_tip_new_V1; + pd_tips_tip_V1_t tips_tip_V1; + pd_tips_close_tip_V1_t tips_close_tip_V1; + pd_tips_slash_tip_V1_t tips_slash_tip_V1; +#endif +} pd_MethodBasic_V1_t; + +#ifdef SUBSTRATE_PARSER_FULL +#endif + +typedef union { +#ifdef SUBSTRATE_PARSER_FULL +#endif +} pd_MethodNested_V1_t; + +typedef union { + pd_MethodBasic_V1_t basic; + pd_MethodNested_V1_t nested; +} pd_Method_V1_t; + +#ifdef __cplusplus +} +#endif + +#pragma clang diagnostic pop diff --git a/app/src/substrate_strings.h b/app/src/substrate_strings.h new file mode 100644 index 0000000..087f016 --- /dev/null +++ b/app/src/substrate_strings.h @@ -0,0 +1,415 @@ +/******************************************************************************* +* (c) 2021 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +// Modules names +static const char* STR_MO_SYSTEM = "System"; +static const char* STR_MO_UTILITY = "Utility"; +static const char* STR_MO_TIMESTAMP = "Timestamp"; +static const char* STR_MO_AUTHORSHIP = "Authorship"; +static const char* STR_MO_INDICES = "Indices"; +static const char* STR_MO_BALANCES = "Balances"; +static const char* STR_MO_STAKING = "Staking"; +static const char* STR_MO_SESSION = "Session"; +static const char* STR_MO_DEMOCRACY = "Democracy"; +static const char* STR_MO_COUNCIL = "Council"; +static const char* STR_MO_ELECTIONS = "Elections"; +static const char* STR_MO_FINALITYTRACKER = "Finalitytracker"; +static const char* STR_MO_GRANDPA = "Grandpa"; +static const char* STR_MO_TREASURY = "Treasury"; +static const char* STR_MO_CONTRACTS = "Contracts"; +static const char* STR_MO_SUDO = "Sudo"; +static const char* STR_MO_IMONLINE = "Imonline"; +static const char* STR_MO_AUTHORITYDISCOVERY = "Authoritydiscovery"; +static const char* STR_MO_OFFENCES = "Offences"; +static const char* STR_MO_RANDOMNESSCOLLECTIVEFLIP = "Randomnesscollectiveflip"; +static const char* STR_MO_IDENTITY = "Identity"; +static const char* STR_MO_RECOVERY = "Recovery"; +static const char* STR_MO_VESTING = "Vesting"; +static const char* STR_MO_SCHEDULER = "Scheduler"; +static const char* STR_MO_PROXY = "Proxy"; +static const char* STR_MO_MULTISIG = "Multisig"; +static const char* STR_MO_ASSETS = "Assets"; +static const char* STR_MO_SIGNALING = "Signaling"; +static const char* STR_MO_VOTING = "Voting"; +static const char* STR_MO_TREASURYREWARD = "Treasuryreward"; +static const char* STR_MO_ETHEREUM = "Ethereum"; +static const char* STR_MO_EVM = "Evm"; +static const char* STR_MO_CHAINBRIDGE = "Chainbridge"; +static const char* STR_MO_EDGEBRIDGE = "Edgebridge"; +static const char* STR_MO_BOUNTIES = "Bounties"; +static const char* STR_MO_TIPS = "Tips"; + +// Methods names +static const char* STR_ME_FILL_BLOCK = "Fill block"; +static const char* STR_ME_REMARK = "Remark"; +static const char* STR_ME_SET_HEAP_PAGES = "Set heap pages"; +static const char* STR_ME_SET_CODE = "Set code"; +static const char* STR_ME_SET_CODE_WITHOUT_CHECKS = "Set code without checks"; +static const char* STR_ME_SET_CHANGES_TRIE_CONFIG = "Set changes trie config"; +static const char* STR_ME_SET_STORAGE = "Set storage"; +static const char* STR_ME_KILL_STORAGE = "Kill storage"; +static const char* STR_ME_KILL_PREFIX = "Kill prefix"; +static const char* STR_ME_SUICIDE = "Suicide"; +static const char* STR_ME_MIGRATE_ACCOUNTS = "Migrate accounts"; +static const char* STR_ME_BATCH = "Batch"; +static const char* STR_ME_AS_DERIVATIVE = "As derivative"; +static const char* STR_ME_SET = "Set"; +static const char* STR_ME_SET_UNCLES = "Set uncles"; +static const char* STR_ME_CLAIM = "Claim"; +static const char* STR_ME_TRANSFER = "Transfer"; +static const char* STR_ME_FREE = "Free"; +static const char* STR_ME_FORCE_TRANSFER = "Force transfer"; +static const char* STR_ME_FREEZE = "Freeze"; +static const char* STR_ME_SET_BALANCE = "Set balance"; +static const char* STR_ME_TRANSFER_KEEP_ALIVE = "Transfer keep alive"; +static const char* STR_ME_BOND = "Bond"; +static const char* STR_ME_BOND_EXTRA = "Bond extra"; +static const char* STR_ME_UNBOND = "Unbond"; +static const char* STR_ME_WITHDRAW_UNBONDED = "Withdraw Unbonded"; +static const char* STR_ME_VALIDATE = "Validate"; +static const char* STR_ME_NOMINATE = "Nominate"; +static const char* STR_ME_CHILL = "Chill"; +static const char* STR_ME_SET_PAYEE = "Set payee"; +static const char* STR_ME_SET_CONTROLLER = "Set controller"; +static const char* STR_ME_SET_VALIDATOR_COUNT = "Set validator count"; +static const char* STR_ME_INCREASE_VALIDATOR_COUNT = "Increase validator count"; +static const char* STR_ME_SCALE_VALIDATOR_COUNT = "Scale validator count"; +static const char* STR_ME_FORCE_NO_ERAS = "Force no eras"; +static const char* STR_ME_FORCE_NEW_ERA = "Force new era"; +static const char* STR_ME_SET_INVULNERABLES = "Set invulnerables"; +static const char* STR_ME_FORCE_UNSTAKE = "Force unstake"; +static const char* STR_ME_FORCE_NEW_ERA_ALWAYS = "Force new era always"; +static const char* STR_ME_CANCEL_DEFERRED_SLASH = "Cancel deferred slash"; +static const char* STR_ME_PAYOUT_STAKERS = "Payout stakers"; +static const char* STR_ME_REBOND = "Rebond"; +static const char* STR_ME_SET_HISTORY_DEPTH = "Set history depth"; +static const char* STR_ME_REAP_STASH = "Reap stash"; +static const char* STR_ME_SUBMIT_ELECTION_SOLUTION = "Submit election solution"; +static const char* STR_ME_SUBMIT_ELECTION_SOLUTION_UNSIGNED = "Submit election solution unsigned"; +static const char* STR_ME_SET_KEYS = "Set keys"; +static const char* STR_ME_PURGE_KEYS = "Purge keys"; +static const char* STR_ME_PROPOSE = "Propose"; +static const char* STR_ME_SECOND = "Second"; +static const char* STR_ME_VOTE = "Vote"; +static const char* STR_ME_EMERGENCY_CANCEL = "Emergency cancel"; +static const char* STR_ME_EXTERNAL_PROPOSE = "External propose"; +static const char* STR_ME_EXTERNAL_PROPOSE_MAJORITY = "External propose majority"; +static const char* STR_ME_EXTERNAL_PROPOSE_DEFAULT = "External propose default"; +static const char* STR_ME_FAST_TRACK = "Fast track"; +static const char* STR_ME_VETO_EXTERNAL = "Veto external"; +static const char* STR_ME_CANCEL_REFERENDUM = "Cancel referendum"; +static const char* STR_ME_CANCEL_QUEUED = "Cancel queued"; +static const char* STR_ME_DELEGATE = "Delegate"; +static const char* STR_ME_UNDELEGATE = "Undelegate"; +static const char* STR_ME_CLEAR_PUBLIC_PROPOSALS = "Clear public proposals"; +static const char* STR_ME_NOTE_PREIMAGE = "Note preimage"; +static const char* STR_ME_NOTE_PREIMAGE_OPERATIONAL = "Note preimage operational"; +static const char* STR_ME_NOTE_IMMINENT_PREIMAGE = "Note imminent preimage"; +static const char* STR_ME_NOTE_IMMINENT_PREIMAGE_OPERATIONAL = "Note imminent preimage operational"; +static const char* STR_ME_REAP_PREIMAGE = "Reap preimage"; +static const char* STR_ME_UNLOCK = "Unlock"; +static const char* STR_ME_REMOVE_VOTE = "Remove vote"; +static const char* STR_ME_REMOVE_OTHER_VOTE = "Remove other vote"; +static const char* STR_ME_ENACT_PROPOSAL = "Enact proposal"; +static const char* STR_ME_SET_MEMBERS = "Set members"; +static const char* STR_ME_EXECUTE = "Execute"; +static const char* STR_ME_CLOSE = "Close"; +static const char* STR_ME_DISAPPROVE_PROPOSAL = "Disapprove proposal"; +static const char* STR_ME_REMOVE_VOTER = "Remove voter"; +static const char* STR_ME_REPORT_DEFUNCT_VOTER = "Report defunct voter"; +static const char* STR_ME_SUBMIT_CANDIDACY = "Submit candidacy"; +static const char* STR_ME_RENOUNCE_CANDIDACY = "Renounce candidacy"; +static const char* STR_ME_REMOVE_MEMBER = "Remove member"; +static const char* STR_ME_FINAL_HINT = "Final hint"; +static const char* STR_ME_REPORT_EQUIVOCATION = "Report equivocation"; +static const char* STR_ME_REPORT_EQUIVOCATION_UNSIGNED = "Report equivocation unsigned"; +static const char* STR_ME_NOTE_STALLED = "Note stalled"; +static const char* STR_ME_PROPOSE_SPEND = "Propose spend"; +static const char* STR_ME_REJECT_PROPOSAL = "Reject proposal"; +static const char* STR_ME_APPROVE_PROPOSAL = "Approve proposal"; +static const char* STR_ME_REPORT_AWESOME = "Report awesome"; +static const char* STR_ME_RETRACT_TIP = "Retract tip"; +static const char* STR_ME_TIP_NEW = "Tip new"; +static const char* STR_ME_TIP = "Tip"; +static const char* STR_ME_CLOSE_TIP = "Close tip"; +static const char* STR_ME_PROPOSE_BOUNTY = "Propose bounty"; +static const char* STR_ME_APPROVE_BOUNTY = "Approve bounty"; +static const char* STR_ME_PROPOSE_CURATOR = "Propose curator"; +static const char* STR_ME_UNASSIGN_CURATOR = "Unassign curator"; +static const char* STR_ME_ACCEPT_CURATOR = "Accept curator"; +static const char* STR_ME_AWARD_BOUNTY = "Award bounty"; +static const char* STR_ME_CLAIM_BOUNTY = "Claim bounty"; +static const char* STR_ME_CLOSE_BOUNTY = "Close bounty"; +static const char* STR_ME_EXTEND_BOUNTY_EXPIRY = "Extend bounty expiry"; +static const char* STR_ME_UPDATE_SCHEDULE = "Update schedule"; +static const char* STR_ME_PUT_CODE = "Put code"; +static const char* STR_ME_CALL = "Call"; +static const char* STR_ME_INSTANTIATE = "Instantiate"; +static const char* STR_ME_CLAIM_SURCHARGE = "Claim surcharge"; +static const char* STR_ME_SUDO = "Sudo"; +static const char* STR_ME_SUDO_UNCHECKED_WEIGHT = "Sudo unchecked weight"; +static const char* STR_ME_SET_KEY = "Set key"; +static const char* STR_ME_SUDO_AS = "Sudo as"; +static const char* STR_ME_HEARTBEAT = "Heartbeat"; +static const char* STR_ME_ADD_REGISTRAR = "Add registrar"; +static const char* STR_ME_SET_IDENTITY = "Set identity"; +static const char* STR_ME_SET_SUBS = "Set subs"; +static const char* STR_ME_CLEAR_IDENTITY = "Clear identity"; +static const char* STR_ME_REQUEST_JUDGEMENT = "Request judgement"; +static const char* STR_ME_CANCEL_REQUEST = "Cancel request"; +static const char* STR_ME_SET_FEE = "Set fee"; +static const char* STR_ME_SET_ACCOUNT_ID = "Set account id"; +static const char* STR_ME_SET_FIELDS = "Set fields"; +static const char* STR_ME_PROVIDE_JUDGEMENT = "Provide judgement"; +static const char* STR_ME_KILL_IDENTITY = "Kill identity"; +static const char* STR_ME_ADD_SUB = "Add sub"; +static const char* STR_ME_RENAME_SUB = "Rename sub"; +static const char* STR_ME_REMOVE_SUB = "Remove sub"; +static const char* STR_ME_QUIT_SUB = "Quit sub"; +static const char* STR_ME_AS_RECOVERED = "As recovered"; +static const char* STR_ME_SET_RECOVERED = "Set recovered"; +static const char* STR_ME_CREATE_RECOVERY = "Create recovery"; +static const char* STR_ME_INITIATE_RECOVERY = "Initiate recovery"; +static const char* STR_ME_VOUCH_RECOVERY = "Vouch recovery"; +static const char* STR_ME_CLAIM_RECOVERY = "Claim recovery"; +static const char* STR_ME_CLOSE_RECOVERY = "Close recovery"; +static const char* STR_ME_REMOVE_RECOVERY = "Remove recovery"; +static const char* STR_ME_CANCEL_RECOVERED = "Cancel recovered"; +static const char* STR_ME_VEST = "Vest"; +static const char* STR_ME_VEST_OTHER = "Vest other"; +static const char* STR_ME_VESTED_TRANSFER = "Vested transfer"; +static const char* STR_ME_FORCE_VESTED_TRANSFER = "Force vested transfer"; +static const char* STR_ME_SCHEDULE = "Schedule"; +static const char* STR_ME_CANCEL = "Cancel"; +static const char* STR_ME_SCHEDULE_NAMED = "Schedule named"; +static const char* STR_ME_CANCEL_NAMED = "Cancel named"; +static const char* STR_ME_SCHEDULE_AFTER = "Schedule after"; +static const char* STR_ME_SCHEDULE_NAMED_AFTER = "Schedule named after"; +static const char* STR_ME_PROXY = "Proxy"; +static const char* STR_ME_ADD_PROXY = "Add proxy"; +static const char* STR_ME_REMOVE_PROXY = "Remove proxy"; +static const char* STR_ME_REMOVE_PROXIES = "Remove proxies"; +static const char* STR_ME_ANONYMOUS = "Anonymous"; +static const char* STR_ME_KILL_ANONYMOUS = "Kill anonymous"; +static const char* STR_ME_ANNOUNCE = "Announce"; +static const char* STR_ME_REMOVE_ANNOUNCEMENT = "Remove announcement"; +static const char* STR_ME_REJECT_ANNOUNCEMENT = "Reject announcement"; +static const char* STR_ME_PROXY_ANNOUNCED = "Proxy announced"; +static const char* STR_ME_AS_MULTI_THRESHOLD_1 = "As multi threshold 1"; +static const char* STR_ME_AS_MULTI = "As multi"; +static const char* STR_ME_APPROVE_AS_MULTI = "Approve as multi"; +static const char* STR_ME_CANCEL_AS_MULTI = "Cancel as multi"; +static const char* STR_ME_ISSUE = "Issue"; +static const char* STR_ME_DESTROY = "Destroy"; +static const char* STR_ME_CREATE_PROPOSAL = "Create proposal"; +static const char* STR_ME_ADVANCE_PROPOSAL = "Advance proposal"; +static const char* STR_ME_COMMIT = "Commit"; +static const char* STR_ME_REVEAL = "Reveal"; +static const char* STR_ME_SET_CURRENT_PAYOUT = "Set current payout"; +static const char* STR_ME_SET_MINTING_INTERVAL = "Set minting interval"; +static const char* STR_ME_BATCH_ALL = "Batch all"; +static const char* STR_ME_BLACKLIST = "Blacklist"; +static const char* STR_ME_CANCEL_PROPOSAL = "Cancel proposal"; +static const char* STR_ME_CREATE = "Create"; +static const char* STR_ME_FORCE_CREATE = "Force create"; +static const char* STR_ME_FORCE_DESTROY = "Force destroy"; +static const char* STR_ME_MINT = "Mint"; +static const char* STR_ME_BURN = "Burn"; +static const char* STR_ME_THAW = "Thaw"; +static const char* STR_ME_TRANSFER_OWNERSHIP = "Transfer ownership"; +static const char* STR_ME_SET_TEAM = "Set team"; +static const char* STR_ME_SET_MAX_ZOMBIES = "Set max zombies"; +static const char* STR_ME_TRANSACT = "Transact"; +static const char* STR_ME_WITHDRAW = "Withdraw"; +static const char* STR_ME_CREATE2 = "Create2"; +static const char* STR_ME_SET_THRESHOLD = "Set threshold"; +static const char* STR_ME_SET_RESOURCE = "Set resource"; +static const char* STR_ME_REMOVE_RESOURCE = "Remove resource"; +static const char* STR_ME_WHITELIST_CHAIN = "Whitelist chain"; +static const char* STR_ME_ADD_RELAYER = "Add relayer"; +static const char* STR_ME_REMOVE_RELAYER = "Remove relayer"; +static const char* STR_ME_ACKNOWLEDGE_PROPOSAL = "Acknowledge proposal"; +static const char* STR_ME_EVAL_VOTE_STATE = "Eval vote state"; +static const char* STR_ME_TRANSFER_NATIVE = "Transfer native"; +static const char* STR_ME_SLASH_TIP = "Slash tip"; + +// Items names +static const char* STR_IT__ratio = "Ratio"; +static const char* STR_IT__remark = "Remark"; +static const char* STR_IT_pages = "Pages"; +static const char* STR_IT_code = "Code"; +static const char* STR_IT_changes_trie_config = "Changes trie config"; +static const char* STR_IT_items = "Items"; +static const char* STR_IT_keys = "Keys"; +static const char* STR_IT_prefix = "Prefix"; +static const char* STR_IT__subkeys = "Subkeys"; +static const char* STR_IT_accounts = "Accounts"; +static const char* STR_IT_calls = "Calls"; +static const char* STR_IT_index = "Index"; +static const char* STR_IT_call = "Call"; +static const char* STR_IT_now = "Now"; +static const char* STR_IT_new_uncles = "New uncles"; +static const char* STR_IT_new_ = "New"; +static const char* STR_IT_freeze = "Freeze"; +static const char* STR_IT_dest = "Dest"; +static const char* STR_IT_value = "Amount"; +static const char* STR_IT_who = "Who"; +static const char* STR_IT_new_free = "New free"; +static const char* STR_IT_new_reserved = "New reserved"; +static const char* STR_IT_source = "Source"; +static const char* STR_IT_controller = "Controller"; +static const char* STR_IT_payee = "Payee"; +static const char* STR_IT_max_additional = "Amount"; +static const char* STR_IT_num_slashing_spans = "Num slashing spans"; +static const char* STR_IT_prefs = "Prefs"; +static const char* STR_IT_targets = "Targets"; +static const char* STR_IT_additional = "Additional"; +static const char* STR_IT_factor = "Factor"; +static const char* STR_IT_invulnerables = "Invulnerables"; +static const char* STR_IT_stash = "Stash"; +static const char* STR_IT_era = "Era"; +static const char* STR_IT_slash_indices = "Slash indices"; +static const char* STR_IT_validator_stash = "Validator stash"; +static const char* STR_IT_new_history_depth = "New history depth"; +static const char* STR_IT__era_items_deleted = "Era items deleted"; +static const char* STR_IT_winners = "Winners"; +static const char* STR_IT_compact = "Compact"; +static const char* STR_IT_score = "Score"; +static const char* STR_IT_size = "Size"; +static const char* STR_IT_proof = "Proof"; +static const char* STR_IT_proposal_hash = "Proposal hash"; +static const char* STR_IT_proposal = "Proposal"; +static const char* STR_IT_seconds_upper_bound = "Seconds upper bound"; +static const char* STR_IT_ref_index = "Ref index"; +static const char* STR_IT_vote = "Vote"; +static const char* STR_IT_voting_period = "Voting period"; +static const char* STR_IT_delay = "Delay"; +static const char* STR_IT_which = "Which"; +static const char* STR_IT_to = "To"; +static const char* STR_IT_conviction = "Conviction"; +static const char* STR_IT_balance = "Balance"; +static const char* STR_IT_encoded_proposal = "Encoded proposal"; +static const char* STR_IT_proposal_len_upper_bound = "Proposal len upper bound"; +static const char* STR_IT_target = "Target"; +static const char* STR_IT_new_members = "New members"; +static const char* STR_IT_prime = "Prime"; +static const char* STR_IT_old_count = "Old count"; +static const char* STR_IT_length_bound = "Length bound"; +static const char* STR_IT_threshold = "Threshold"; +static const char* STR_IT_approve = "Approve"; +static const char* STR_IT_proposal_weight_bound = "Proposal weight bound"; +static const char* STR_IT_votes = "Votes"; +static const char* STR_IT_defunct = "Defunct"; +static const char* STR_IT_candidate_count = "Candidate count"; +static const char* STR_IT_renouncing = "Renouncing"; +static const char* STR_IT_has_replacement = "Has replacement"; +static const char* STR_IT_hint = "Hint"; +static const char* STR_IT_equivocation_proof = "Equivocation proof"; +static const char* STR_IT_key_owner_proof = "Key owner proof"; +static const char* STR_IT_best_finalized_block_number = "Best finalized block number"; +static const char* STR_IT_beneficiary = "Beneficiary"; +static const char* STR_IT_proposal_id = "Proposal id"; +static const char* STR_IT_reason = "Reason"; +static const char* STR_IT_hash = "Hash"; +static const char* STR_IT_tip_value = "Tip value"; +static const char* STR_IT_description = "Description"; +static const char* STR_IT_bounty_id = "Bounty id"; +static const char* STR_IT_curator = "Curator"; +static const char* STR_IT_fee = "Fee"; +static const char* STR_IT_schedule = "Schedule"; +static const char* STR_IT_gas_limit = "Gas limit"; +static const char* STR_IT_data = "Data"; +static const char* STR_IT_endowment = "Endowment"; +static const char* STR_IT_code_hash = "Code hash"; +static const char* STR_IT_aux_sender = "Aux sender"; +static const char* STR_IT__weight = "Weight"; +static const char* STR_IT_heartbeat = "Heartbeat"; +static const char* STR_IT__signature = "Signature"; +static const char* STR_IT_account = "Account"; +static const char* STR_IT_info = "Info"; +static const char* STR_IT_subs = "Subs"; +static const char* STR_IT_reg_index = "Reg index"; +static const char* STR_IT_max_fee = "Max fee"; +static const char* STR_IT_fields = "Fields"; +static const char* STR_IT_judgement = "Judgement"; +static const char* STR_IT_sub = "Sub"; +static const char* STR_IT_lost = "Lost"; +static const char* STR_IT_rescuer = "Rescuer"; +static const char* STR_IT_friends = "Friends"; +static const char* STR_IT_delay_period = "Delay period"; +static const char* STR_IT_when = "When"; +static const char* STR_IT_maybe_periodic = "Maybe periodic"; +static const char* STR_IT_priority = "Priority"; +static const char* STR_IT_id = "Id"; +static const char* STR_IT_after = "After"; +static const char* STR_IT_real = "Real"; +static const char* STR_IT_force_proxy_type = "Force proxy type"; +static const char* STR_IT_delegate = "Delegate"; +static const char* STR_IT_proxy_type = "Proxy type"; +static const char* STR_IT_spawner = "Spawner"; +static const char* STR_IT_height = "Height"; +static const char* STR_IT_ext_index = "Ext index"; +static const char* STR_IT_call_hash = "Call hash"; +static const char* STR_IT_other_signatories = "Other signatories"; +static const char* STR_IT_maybe_timepoint = "Maybe timepoint"; +static const char* STR_IT_store_call = "Store call"; +static const char* STR_IT_max_weight = "Max weight"; +static const char* STR_IT_timepoint = "Timepoint"; +static const char* STR_IT_total = "Total"; +static const char* STR_IT_amount = "Amount"; +static const char* STR_IT_title = "Title"; +static const char* STR_IT_contents = "Contents"; +static const char* STR_IT_outcomes = "Outcomes"; +static const char* STR_IT_vote_type = "Vote type"; +static const char* STR_IT_tally_type = "Tally type"; +static const char* STR_IT_vote_id = "Vote id"; +static const char* STR_IT_commit = "Commit"; +static const char* STR_IT_secret = "Secret"; +static const char* STR_IT_payout = "Payout"; +static const char* STR_IT_interval = "Interval"; +static const char* STR_IT_maybe_ref_index = "Maybe ref index"; +static const char* STR_IT_prop_index = "Prop index"; +static const char* STR_IT_salt = "Salt"; +static const char* STR_IT_admin = "Admin"; +static const char* STR_IT_max_zombies = "Max zombies"; +static const char* STR_IT_min_balance = "Min balance"; +static const char* STR_IT_owner = "Owner"; +static const char* STR_IT_zombies_witness = "Zombies witness"; +static const char* STR_IT_new_owner = "New owner"; +static const char* STR_IT_issuer = "Issuer"; +static const char* STR_IT_freezer = "Freezer"; +static const char* STR_IT_transaction = "Transaction"; +static const char* STR_IT_address = "Address"; +static const char* STR_IT_input = "Input"; +static const char* STR_IT_gas_price = "Gas price"; +static const char* STR_IT_nonce = "Nonce"; +static const char* STR_IT_init = "Init"; +static const char* STR_IT_method = "Method"; +static const char* STR_IT_v = "V"; +static const char* STR_IT_src_id = "Src id"; +static const char* STR_IT_r_id = "R id"; +static const char* STR_IT_prop = "Prop"; +static const char* STR_IT_recipient = "Recipient"; +static const char* STR_IT_dest_id = "Dest id"; + +#ifdef __cplusplus +} +#endif diff --git a/app/src/substrate_types.c b/app/src/substrate_types.c new file mode 100644 index 0000000..c9b4bea --- /dev/null +++ b/app/src/substrate_types.c @@ -0,0 +1,772 @@ +/******************************************************************************* +* (c) 2019 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "bignum.h" +#include "coin.h" +#include "parser_impl.h" + +#include "substrate_dispatch.h" +#include +#include +#include +#include + +parser_error_t _readbool(parser_context_t* c, pd_bool_t* v) +{ + return _readUInt8(c, v); +} + +parser_error_t _readu16(parser_context_t* c, pd_u16_t* v) +{ + return _readUInt16(c, v); +} + +parser_error_t _readu32(parser_context_t* c, pd_u32_t* v) +{ + return _readUInt32(c, v); +} + +parser_error_t _readu64(parser_context_t* c, pd_u64_t* v) +{ + return _readUInt64(c, v); +} + +parser_error_t _readBlockNumber(parser_context_t* c, pd_BlockNumber_t* v) +{ + return _readUInt32(c, v); +} + +parser_error_t _readCompactu32(parser_context_t* c, pd_Compactu32_t* v) +{ + return _readCompactInt(c, v); +} + +parser_error_t _readCompactu64(parser_context_t* c, pd_Compactu64_t* v) +{ + return _readCompactInt(c, v); +} + +parser_error_t _readCallImpl(parser_context_t* c, pd_Call_t* v, pd_MethodNested_t* m) +{ + // If it's the first Call, store a pointer to it + if (c->tx_obj->nestCallIdx._ptr == NULL) { + c->tx_obj->nestCallIdx._ptr = c->buffer + c->offset; + c->tx_obj->nestCallIdx._lenBuffer = c->bufferLen - c->offset; + } else { + // If _ptr is not null, and landed here, means we're inside a nested call. + // We stored the pointer to the first Call and now we store + // the pointer to the 'next' Call. + if (c->tx_obj->nestCallIdx._nextPtr == NULL) { + c->tx_obj->nestCallIdx._nextPtr = c->buffer + c->offset; + } + } + + // To keep track on how many nested Calls we have + c->tx_obj->nestCallIdx.slotIdx++; + if (c->tx_obj->nestCallIdx.slotIdx > MAX_CALL_NESTING_SIZE) { + return parser_tx_nesting_limit_reached; + } + + CHECK_ERROR(_readCallIndex(c, &v->callIndex)); + + if (!_getMethod_IsNestingSupported(c->tx_obj->transactionVersion, v->callIndex.moduleIdx, v->callIndex.idx)) { + return parser_not_supported; + } + + // Read and check the contained method on this Call + CHECK_ERROR(_readMethod(c, v->callIndex.moduleIdx, v->callIndex.idx, (pd_Method_t*)m)) + + // The instance of 'v' corresponding to the upper call on the stack (persisted variable) + // will end up having the pointer to the first Call and to the 'next' one if exists. + v->_txVerPtr = &c->tx_obj->transactionVersion; + v->nestCallIdx._lenBuffer = c->tx_obj->nestCallIdx._lenBuffer; + v->nestCallIdx._ptr = c->tx_obj->nestCallIdx._ptr; + v->nestCallIdx._nextPtr = c->tx_obj->nestCallIdx._nextPtr; + + return parser_ok; +} + +/////////////////////////////////// +/////////////////////////////////// +/////////////////////////////////// +parser_error_t _readCompactBlockNumber(parser_context_t* c, pd_CompactBlockNumber_t* v) +{ + return _readCompactInt(c, v); +} + +parser_error_t _readBalance(parser_context_t* c, pd_Balance_t* v) { + GEN_DEF_READARRAY(16) +} + +parser_error_t _readData(parser_context_t* c, pd_Data_t* v) +{ + CHECK_INPUT(); + MEMZERO(v, sizeof(pd_Data_t)); + CHECK_ERROR(_readUInt8(c, (uint8_t*)&v->type)) + + v->_ptr = NULL; + v->_len = 0; + + // based on: + // https://github.com/paritytech/substrate/blob/effe489951d1edab9d34846b1eefdfaf9511dab9/frame/identity/src/lib.rs#L139 + switch (v->type) { + case Data_e_NONE: { + v->_ptr = NULL; + v->_len = 0; + return parser_ok; + } + case Data_e_BLAKETWO256U8_32: + case Data_e_SHA256_U8_32: + case Data_e_KECCAK256_U8_32: + case Data_e_SHATHREE256_U8_32: + return parser_not_supported; + default: { + if (v->type > Data_e_NONE && v->type <= Data_e_RAW_VECU8) { + const uint8_t bufferSize = ((uint8_t)v->type - 1); + v->_ptr = c->buffer + c->offset; + v->_len = bufferSize; + CTX_CHECK_AND_ADVANCE(c, v->_len); + return parser_ok; + } + return parser_not_supported; + } + } +} + +parser_error_t _readBalanceOf(parser_context_t* c, pd_BalanceOf_t* v) +{ + return _readBalance(c, &v->value); +} + +parser_error_t _readBytes(parser_context_t* c, pd_Bytes_t* v) +{ + CHECK_INPUT() + + compactInt_t clen; + CHECK_ERROR(_readCompactInt(c, &clen)) + CHECK_ERROR(_getValue(&clen, &v->_len)) + + v->_ptr = c->buffer + c->offset; + CTX_CHECK_AND_ADVANCE(c, v->_len); + return parser_ok; +} + +parser_error_t _readTupleDataData(parser_context_t* c, pd_TupleDataData_t* v) +{ + CHECK_INPUT(); + CHECK_ERROR(_readData(c, &v->data1)) + CHECK_ERROR(_readData(c, &v->data2)) + return parser_ok; +} + +parser_error_t _readu8_array_20(parser_context_t* c, pd_u8_array_20_t* v) { + GEN_DEF_READARRAY(20) +} + +parser_error_t _readCall(parser_context_t* c, pd_Call_t* v) +{ + pd_MethodNested_t _method; + if (c->tx_obj->nestCallIdx.isTail) { + c->tx_obj->nestCallIdx.isTail = false; + v->nestCallIdx.isTail = true; + } else { + v->nestCallIdx.isTail = false; + } + + CHECK_ERROR(_readCallImpl(c, v, &_method)) + if (c->tx_obj->nestCallIdx._ptr != NULL && c->tx_obj->nestCallIdx._nextPtr != NULL) { + v->nestCallIdx._ptr = c->tx_obj->nestCallIdx._ptr; + v->nestCallIdx._nextPtr = c->tx_obj->nestCallIdx._nextPtr; + } + v->nestCallIdx.slotIdx = c->tx_obj->nestCallIdx.slotIdx; + return parser_ok; +} + +parser_error_t _readHeader(parser_context_t* c, pd_Header_t* v) +{ + return parser_not_supported; +} + +parser_error_t _readProposal(parser_context_t* c, pd_Proposal_t* v) +{ + return _readCall(c, &v->call); +} + +parser_error_t _readVecCall(parser_context_t* c, pd_VecCall_t* v) +{ + compactInt_t clen; + pd_Call_t dummy; + CHECK_PARSER_ERR(_readCompactInt(c, &clen)); + CHECK_PARSER_ERR(_getValue(&clen, &v->_len)); + + if (v->_len > MAX_CALL_VEC_SIZE) { + return parser_tx_call_vec_too_large; + } + + v->_ptr = c->buffer + c->offset; + v->_lenBuffer = c->offset; + if (v->_len == 0) { + return parser_unexpected_buffer_end; + } + + for (uint64_t i = 0; i < v->_len; i++) { + c->tx_obj->nestCallIdx.slotIdx = 0; + CHECK_ERROR(_readCall(c, &dummy)) + } + v->_lenBuffer = c->offset - v->_lenBuffer; + v->callTxVersion = c->tx_obj->transactionVersion; + + return parser_ok; +} + +parser_error_t _readCompactBalanceOf(parser_context_t* c, pd_CompactBalanceOf_t* v) +{ + CHECK_INPUT(); + CHECK_ERROR(_readCompactInt(c, &v->value)); + return parser_ok; +} + +parser_error_t _readHash(parser_context_t* c, pd_Hash_t* v) { + GEN_DEF_READARRAY(32) +} + +parser_error_t _readHeartbeat(parser_context_t* c, pd_Heartbeat_t* v) +{ + return parser_not_supported; +} + +parser_error_t _readVecHeader(parser_context_t* c, pd_VecHeader_t* v) { + GEN_DEF_READVECTOR(Header) +} + +parser_error_t _readVecTupleDataData(parser_context_t* c, pd_VecTupleDataData_t* v) { + GEN_DEF_READVECTOR(TupleDataData) +} + +parser_error_t _readVecu32(parser_context_t* c, pd_Vecu32_t* v) { + GEN_DEF_READVECTOR(u32) +} + +parser_error_t _readOptionu8_array_20(parser_context_t* c, pd_Optionu8_array_20_t* v) +{ + CHECK_ERROR(_readUInt8(c, &v->some)) + if (v->some > 0) { + CHECK_ERROR(_readu8_array_20(c, &v->contained)) + } + return parser_ok; +} + +/////////////////////////////////// +/////////////////////////////////// +/////////////////////////////////// + +parser_error_t _toStringbool( + const pd_bool_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + CLEAN_AND_CHECK() + + *pageCount = 1; + switch (*v) { + case 0: + snprintf(outValue, outValueLen, "False"); + return parser_ok; + case 1: + snprintf(outValue, outValueLen, "True"); + return parser_ok; + } + + return parser_not_supported; +} + +parser_error_t _toStringu16( + const pd_u16_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + CLEAN_AND_CHECK() + char bufferUI[50]; + + uint64_to_str(bufferUI, sizeof(bufferUI), *v); + pageString(outValue, outValueLen, bufferUI, pageIdx, pageCount); + return parser_ok; +} + +parser_error_t _toStringu32( + const pd_u32_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + CLEAN_AND_CHECK() + char bufferUI[100]; + + uint64_to_str(bufferUI, sizeof(bufferUI), *v); + pageString(outValue, outValueLen, bufferUI, pageIdx, pageCount); + return parser_ok; +} + +parser_error_t _toStringu64( + const pd_u64_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + CLEAN_AND_CHECK() + char bufferUI[100]; + + uint64_to_str(bufferUI, sizeof(bufferUI), *v); + pageString(outValue, outValueLen, bufferUI, pageIdx, pageCount); + return parser_ok; +} + +parser_error_t _toStringBlockNumber( + const pd_BlockNumber_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + return _toStringu32(v, outValue, outValueLen, pageIdx, pageCount); +} + +parser_error_t _toStringCompactu32( + const pd_Compactu32_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + return _toStringCompactInt(v, 0, 0, "", outValue, outValueLen, pageIdx, pageCount); +} + +/////////////////////////////////// +/////////////////////////////////// +/////////////////////////////////// + +parser_error_t _toStringCompactBlockNumber( + const pd_CompactBlockNumber_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + return _toStringCompactInt(v, 0, 0, "", outValue, outValueLen, pageIdx, pageCount); +} + +parser_error_t _toStringBalance( + const pd_Balance_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + CLEAN_AND_CHECK() + + char bufferUI[200]; + MEMSET(outValue, 0, outValueLen); + MEMSET(bufferUI, 0, sizeof(bufferUI)); + *pageCount = 1; + + uint8_t bcdOut[100]; + const uint16_t bcdOutLen = sizeof(bcdOut); + + bignumLittleEndian_to_bcd(bcdOut, bcdOutLen, v->_ptr, 16); + if (!bignumLittleEndian_bcdprint(bufferUI, sizeof(bufferUI), bcdOut, bcdOutLen)) { + return parser_unexpected_buffer_end; + } + + // Format number + if (intstr_to_fpstr_inplace(bufferUI, sizeof(bufferUI), COIN_AMOUNT_DECIMAL_PLACES) == 0) { + return parser_unexpected_value; + } + + number_inplace_trimming(bufferUI); + size_t size = strlen(bufferUI) + strlen(COIN_TICKER) + 2; + char _tmpBuffer[200]; + MEMZERO(_tmpBuffer, sizeof(_tmpBuffer)); + strcat(_tmpBuffer, COIN_TICKER); + strcat(_tmpBuffer, " "); + strcat(_tmpBuffer, bufferUI); + // print length: strlen(value) + strlen(COIN_TICKER) + strlen(" ") + nullChar + MEMZERO(bufferUI, sizeof(bufferUI)); + snprintf(bufferUI, size, "%s", _tmpBuffer); + + pageString(outValue, outValueLen, bufferUI, pageIdx, pageCount); + return parser_ok; +} + +parser_error_t _toStringData( + const pd_Data_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + CLEAN_AND_CHECK() + + if (v->_ptr == NULL || v->_len == 0) { + return parser_unexpected_value; + } + + if (v->type > Data_e_NONE && v->type <= Data_e_RAW_VECU8) { + const uint8_t bufferSize = ((uint8_t)v->type - 1); + GEN_DEF_TOSTRING_ARRAY(bufferSize) + } + + switch (v->type) { + case Data_e_NONE: + *pageCount = 1; + snprintf(outValue, outValueLen, "None"); + return parser_ok; + case Data_e_RAW_VECU8: + // This should have been handled before (1..33) + return parser_unexpected_value; + case Data_e_BLAKETWO256U8_32: + case Data_e_SHA256_U8_32: + case Data_e_KECCAK256_U8_32: + case Data_e_SHATHREE256_U8_32: + default: + break; + } + + return parser_print_not_supported; +} + +parser_error_t _toStringBalanceOf( + const pd_BalanceOf_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + return _toStringBalance(&v->value, outValue, outValueLen, pageIdx, pageCount); +} + +parser_error_t _toStringBytes( + const pd_Bytes_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + GEN_DEF_TOSTRING_ARRAY(v->_len); +} + +parser_error_t _toStringTupleDataData( + const pd_TupleDataData_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + CLEAN_AND_CHECK() + + uint8_t pages[2]; + CHECK_ERROR(_toStringData(&v->data1, outValue, outValueLen, 0, &pages[0])) + CHECK_ERROR(_toStringData(&v->data2, outValue, outValueLen, 0, &pages[1])) + + *pageCount = 0; + for (uint8_t i = 0; i < (uint8_t)sizeof(pages); i++) { + *pageCount += pages[i]; + } + + if (pageIdx > *pageCount) { + return parser_display_idx_out_of_range; + } + + if (pageIdx < pages[0]) { + CHECK_ERROR(_toStringData(&v->data1, outValue, outValueLen, pageIdx, &pages[0])) + return parser_ok; + } + pageIdx -= pages[0]; + + ///////// + ///////// + + if (pageIdx < pages[1]) { + CHECK_ERROR(_toStringData(&v->data2, outValue, outValueLen, pageIdx, &pages[1])) + return parser_ok; + } + pageIdx -= pages[1]; + + return parser_display_idx_out_of_range; +} + +parser_error_t _toStringu8_array_20( + const pd_u8_array_20_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) { + GEN_DEF_TOSTRING_ARRAY(20) +} + +parser_error_t _toStringCall( + const pd_Call_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + CLEAN_AND_CHECK() + *pageCount = 1; + + parser_context_t ctx; + + const uint8_t* buffer; + if (v->nestCallIdx.isTail) { + buffer = v->nestCallIdx._ptr; + } else { + buffer = v->nestCallIdx._nextPtr; + } + + parser_init(&ctx, buffer, v->nestCallIdx._lenBuffer); + parser_tx_t _txObj; + + pd_Call_t _call; + _call.nestCallIdx.isTail = false; + + ctx.tx_obj = &_txObj; + _txObj.transactionVersion = *v->_txVerPtr; + + ctx.tx_obj->nestCallIdx._ptr = NULL; + ctx.tx_obj->nestCallIdx._nextPtr = NULL; + ctx.tx_obj->nestCallIdx._lenBuffer = 0; + ctx.tx_obj->nestCallIdx.slotIdx = 0; + ctx.tx_obj->nestCallIdx.isTail = false; + + // Read the Call, so we get the contained Method + parser_error_t err = _readCallImpl(&ctx, &_call, (pd_MethodNested_t*)&_txObj.method); + if (err != parser_ok) { + return err; + } + + // Get num items of this current Call + uint8_t callNumItems = _getMethod_NumItems(*v->_txVerPtr, v->callIndex.moduleIdx, v->callIndex.idx); + + // Count how many pages this call has (including nested ones if they exists) + for (uint8_t i = 0; i < callNumItems; i++) { + uint8_t itemPages = 0; + _getMethod_ItemValue(*v->_txVerPtr, &_txObj.method, _call.callIndex.moduleIdx, _call.callIndex.idx, i, + outValue, outValueLen, 0, &itemPages); + (*pageCount) += itemPages; + } + + zb_check_canary(); + + if (pageIdx == 0) { + snprintf(outValue, outValueLen, "%s", _getMethod_Name(*v->_txVerPtr, v->callIndex.moduleIdx, v->callIndex.idx)); + return parser_ok; + } + + pageIdx--; + + if (pageIdx > *pageCount) { + return parser_display_idx_out_of_range; + } + + for (uint8_t i = 0; i < callNumItems; i++) { + uint8_t itemPages = 0; + _getMethod_ItemValue(*v->_txVerPtr, &_txObj.method, v->callIndex.moduleIdx, v->callIndex.idx, i, + outValue, outValueLen, 0, &itemPages); + + if (pageIdx < itemPages) { + uint8_t tmp; + _getMethod_ItemValue(*v->_txVerPtr, &_txObj.method, v->callIndex.moduleIdx, v->callIndex.idx, i, + outValue, outValueLen, pageIdx, &tmp); + return parser_ok; + } + + pageIdx -= itemPages; + } + + return parser_display_idx_out_of_range; +} + +parser_error_t _toStringHeader( + const pd_Header_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + CLEAN_AND_CHECK() + return parser_print_not_supported; +} + +parser_error_t _toStringProposal( + const pd_Proposal_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + return _toStringCall(&v->call, outValue, outValueLen, pageIdx, pageCount); +} + +parser_error_t _toStringVecCall( + const pd_VecCall_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + CLEAN_AND_CHECK() + /* count number of pages, then output specific */ + *pageCount = 0; + uint8_t chunkPageCount; + uint16_t currentPage, currentTotalPage = 0; + /* We need to do it twice because there is no memory to keep intermediate results*/ + /* First count*/ + parser_context_t ctx; + parser_init(&ctx, v->_ptr, v->_lenBuffer); + parser_tx_t _txObj; + pd_Call_t _call; + ctx.tx_obj = &_txObj; + _txObj.transactionVersion = v->callTxVersion; + _call._txVerPtr = &v->callTxVersion; + _call.nestCallIdx.isTail = true; + + ctx.tx_obj->nestCallIdx.slotIdx = 0; + ctx.tx_obj->nestCallIdx._lenBuffer = 0; + ctx.tx_obj->nestCallIdx._ptr = NULL; + ctx.tx_obj->nestCallIdx._nextPtr = NULL; + ctx.tx_obj->nestCallIdx.isTail = true; + + for (uint16_t i = 0; i < v->_len; i++) { + ctx.tx_obj->nestCallIdx._ptr = NULL; + ctx.tx_obj->nestCallIdx._nextPtr = NULL; + ctx.tx_obj->nestCallIdx.slotIdx = 0; + CHECK_ERROR(_readCallImpl(&ctx, &_call, (pd_MethodNested_t*)&_txObj.method)); + CHECK_ERROR(_toStringCall(&_call, outValue, outValueLen, 0, &chunkPageCount)); + (*pageCount) += chunkPageCount; + } + + /* Then iterate until we can print the corresponding chunk*/ + parser_init(&ctx, v->_ptr, v->_lenBuffer); + for (uint16_t i = 0; i < v->_len; i++) { + ctx.tx_obj->nestCallIdx._ptr = NULL; + ctx.tx_obj->nestCallIdx._nextPtr = NULL; + ctx.tx_obj->nestCallIdx.slotIdx = 0; + CHECK_ERROR(_readCallImpl(&ctx, &_call, (pd_MethodNested_t*)&_txObj.method)); + chunkPageCount = 1; + currentPage = 0; + while (currentPage < chunkPageCount) { + CHECK_ERROR(_toStringCall(&_call, outValue, outValueLen, currentPage, &chunkPageCount)); + if (currentTotalPage == pageIdx) { + return parser_ok; + } + currentPage++; + currentTotalPage++; + } + } + + return parser_print_not_supported; +} + +parser_error_t _toStringCompactBalanceOf( + const pd_CompactBalanceOf_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + CHECK_ERROR(_toStringCompactInt(&v->value, COIN_AMOUNT_DECIMAL_PLACES, 0, COIN_TICKER, outValue, outValueLen, pageIdx, pageCount)) + number_inplace_trimming(outValue); + return parser_ok; +} + +parser_error_t _toStringHash( + const pd_Hash_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) { + GEN_DEF_TOSTRING_ARRAY(32) +} + +parser_error_t _toStringHeartbeat( + const pd_Heartbeat_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + CLEAN_AND_CHECK() + return parser_print_not_supported; +} + +parser_error_t _toStringVecHeader( + const pd_VecHeader_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) { + GEN_DEF_TOSTRING_VECTOR(Header) +} + +parser_error_t _toStringVecTupleDataData( + const pd_VecTupleDataData_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + GEN_DEF_TOSTRING_VECTOR(TupleDataData); +} + +parser_error_t _toStringVecu32( + const pd_Vecu32_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + GEN_DEF_TOSTRING_VECTOR(u32); +} + +parser_error_t _toStringOptionu8_array_20( + const pd_Optionu8_array_20_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + CLEAN_AND_CHECK() + + *pageCount = 1; + if (v->some > 0) { + CHECK_ERROR(_toStringu8_array_20( + &v->contained, + outValue, outValueLen, + pageIdx, pageCount)); + } else { + snprintf(outValue, outValueLen, "None"); + } + return parser_ok; +} + +/////////////////////////////////// +/////////////////////////////////// +/////////////////////////////////// diff --git a/app/src/substrate_types.h b/app/src/substrate_types.h new file mode 100644 index 0000000..1ff65fb --- /dev/null +++ b/app/src/substrate_types.h @@ -0,0 +1,221 @@ +/******************************************************************************* +* (c) 2019 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +#include "stdbool.h" +#include +#include + +// https://github.com/paritytech/substrate/blob/effe489951d1edab9d34846b1eefdfaf9511dab9/frame/identity/src/lib.rs +#define Data_e_NONE 0 +#define Data_e_RAW_VECU8 33 +#define Data_e_BLAKETWO256U8_32 34 +#define Data_e_SHA256_U8_32 35 +#define Data_e_KECCAK256_U8_32 36 +#define Data_e_SHATHREE256_U8_32 37 + +typedef uint8_t pd_bool_t; +typedef uint16_t pd_u16_t; +typedef uint32_t pd_u32_t; +typedef uint64_t pd_u64_t; +typedef uint32_t pd_BlockNumber_t; + +#define CHECK_ERROR(FUNC_CALL) \ + { \ + parser_error_t err = FUNC_CALL; \ + if (err != parser_ok) \ + return err; \ + } + +typedef struct { + uint8_t moduleIdx; + uint8_t idx; +} pd_CallIndex_t; + +typedef enum { + eEraImmortal = 0, + eEraMortal = 1 +} pd_ExtrinsicEra_e; + +// This type has a non-standard serialization +// core/sr-primitives/src/generic/era.rs +typedef struct { + pd_ExtrinsicEra_e type; + uint64_t period; + uint64_t phase; +} pd_ExtrinsicEra_t; + +typedef struct { + const uint8_t* ptr; + uint8_t len; +} compactInt_t; + +typedef struct { + uint32_t _lenBuffer; + const uint8_t* _ptr; // Pointer to actual + const uint8_t* _nextPtr; // Pointer to next Call + uint8_t slotIdx; // Count of nested calls + bool isTail; +} pd_NestCallIdx_t; + +//////////////////////// +// Common types +//////////////////////// + +typedef struct { + const uint8_t* _ptr; +} pd_Balance_t; + +typedef struct { + uint8_t type; + const uint8_t* _ptr; + uint8_t _len; +} pd_Data_t; + +typedef struct { + pd_Balance_t value; +} pd_BalanceOf_t; + +typedef struct { + uint64_t _len; + const uint8_t* _ptr; +} pd_Bytes_t; + +typedef struct { + pd_Data_t data1; + pd_Data_t data2; +} pd_TupleDataData_t; + +typedef struct { + const uint8_t* _ptr; +} pd_u8_array_20_t; + +typedef struct { + pd_CallIndex_t callIndex; + const uint32_t* _txVerPtr; + pd_NestCallIdx_t nestCallIdx; +} pd_Call_t; + +typedef struct { + // TODO: Not implemented + uint8_t _NOT_IMPLEMENTED__DO_NOT_USE; +} pd_Header_t; + +typedef struct { + uint8_t some; + pd_u8_array_20_t contained; +} pd_Optionu8_array_20_t; + +typedef struct { + uint64_t _len; + const uint8_t* _ptr; + uint64_t _lenBuffer; +} pd_VecTupleDataData_t; + +typedef struct { + pd_Call_t call; +} pd_Proposal_t; + +typedef struct { + uint64_t _len; + const uint8_t* _ptr; + uint64_t _lenBuffer; + uint32_t callTxVersion; +} pd_VecCall_t; + +typedef struct { + compactInt_t value; +} pd_CompactBalanceOf_t; + +typedef compactInt_t pd_CompactBlockNumber_t; + +typedef struct { + const uint8_t* _ptr; +} pd_Hash_t; + +typedef struct { + // TODO: Not implemented + uint8_t _NOT_IMPLEMENTED__DO_NOT_USE; +} pd_Heartbeat_t; + +typedef struct { + uint64_t _len; + const uint8_t* _ptr; + uint64_t _lenBuffer; +} pd_VecHeader_t; + +typedef struct { + uint64_t _len; + const uint8_t* _ptr; + uint64_t _lenBuffer; +} pd_Vecu32_t; + +//////////////////////// +// /Common types +//////////////////////// + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wextern-c-compat" +#pragma clang diagnostic pop + +//////////////////////// +// Types that require out of order declaration +//////////////////////// + +typedef enum { + eAddressIndex = 0, + eAddressId = 1 +} pd_Address_e; + +typedef struct { + pd_Address_e type; + uint64_t idx; + const uint8_t* idPtr; +} pd_Address_t; + +typedef struct { + compactInt_t index; +} pd_CompactIndex_t; + +typedef struct { + compactInt_t value; +} pd_CompactBalance_t; + +//////////////////////// +//////////////////////// +//////////////////////// +//////////////////////// + +typedef compactInt_t pd_Compactu32_t; // u32 +typedef compactInt_t pd_Compactu64_t; // u64 +typedef compactInt_t pd_CompactAssignments_t; +typedef compactInt_t pd_CompactBountyIndex_t; +typedef compactInt_t pd_CompactEraIndex_t; +typedef compactInt_t pd_CompactMemberCount_t; +typedef compactInt_t pd_CompactMoment_t; +typedef compactInt_t pd_CompactPropIndex_t; +typedef compactInt_t pd_CompactProposalIndex_t; +typedef compactInt_t pd_CompactReferendumIndex_t; +typedef compactInt_t pd_CompactRegistrarIndex_t; +typedef compactInt_t pd_CompactWeight_t; + +#ifdef __cplusplus +} +#endif diff --git a/app/src/substrate_types_V1.c b/app/src/substrate_types_V1.c new file mode 100644 index 0000000..be85083 --- /dev/null +++ b/app/src/substrate_types_V1.c @@ -0,0 +1,1900 @@ +/******************************************************************************* +* (c) 2019 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#include "bignum.h" +#include "coin.h" +#include "parser_impl.h" +#include "substrate_dispatch_V1.h" +#include "substrate_strings.h" + +#include +#include +#include + +parser_error_t _readCompactAssetId_V1(parser_context_t* c, pd_CompactAssetId_V1_t* v) +{ + return _readCompactInt(c, v); +} + +parser_error_t _readCompactAssignments_V1(parser_context_t* c, pd_CompactAssignments_V1_t* v) +{ + return _readCompactInt(c, v); +} + +parser_error_t _readCompactBountyIndex_V1(parser_context_t* c, pd_CompactBountyIndex_V1_t* v) +{ + return _readCompactInt(c, v); +} + +parser_error_t _readCompactEraIndex_V1(parser_context_t* c, pd_CompactEraIndex_V1_t* v) +{ + return _readCompactInt(c, v); +} + +parser_error_t _readCompactGas_V1(parser_context_t* c, pd_CompactGas_V1_t* v) +{ + return _readCompactInt(c, v); +} + +parser_error_t _readCompactMemberCount_V1(parser_context_t* c, pd_CompactMemberCount_V1_t* v) +{ + return _readCompactInt(c, v); +} + +parser_error_t _readCompactMoment_V1(parser_context_t* c, pd_CompactMoment_V1_t* v) +{ + return _readCompactInt(c, v); +} + +parser_error_t _readCompactPropIndex_V1(parser_context_t* c, pd_CompactPropIndex_V1_t* v) +{ + return _readCompactInt(c, v); +} + +parser_error_t _readCompactProposalIndex_V1(parser_context_t* c, pd_CompactProposalIndex_V1_t* v) +{ + return _readCompactInt(c, v); +} + +parser_error_t _readCompactReferendumIndex_V1(parser_context_t* c, pd_CompactReferendumIndex_V1_t* v) +{ + return _readCompactInt(c, v); +} + +parser_error_t _readCompactRegistrarIndex_V1(parser_context_t* c, pd_CompactRegistrarIndex_V1_t* v) +{ + return _readCompactInt(c, v); +} + +parser_error_t _readCompactTAssetBalance_V1(parser_context_t* c, pd_CompactTAssetBalance_V1_t* v) +{ + return _readCompactInt(c, v); +} + +parser_error_t _readCompactWeight_V1(parser_context_t* c, pd_CompactWeight_V1_t* v) +{ + return _readCompactInt(c, v); +} + +parser_error_t _readAccountId_V1(parser_context_t* c, pd_AccountId_V1_t* v) { + GEN_DEF_READARRAY(32) +} + +parser_error_t _readAccountIndex_V1(parser_context_t* c, pd_AccountIndex_V1_t* v) +{ + return _readUInt32(c, &v->value); +} + +parser_error_t _readAccountVoteSplit_V1(parser_context_t* c, pd_AccountVoteSplit_V1_t* v) +{ + CHECK_ERROR(_readBalanceOf(c, &v->aye)); + CHECK_ERROR(_readBalanceOf(c, &v->nay)); + return parser_ok; +} + +parser_error_t _readAccountVoteStandard_V1(parser_context_t* c, pd_AccountVoteStandard_V1_t* v) +{ + CHECK_ERROR(_readVote_V1(c, &v->vote)); + CHECK_ERROR(_readBalanceOf(c, &v->balance)); + return parser_ok; +} + +parser_error_t _readAccountVote_V1(parser_context_t* c, pd_AccountVote_V1_t* v) +{ + CHECK_INPUT(); + CHECK_ERROR(_readUInt8(c, &v->value)) + + switch (v->value) { + case 0: + CHECK_ERROR(_readAccountVoteStandard_V1(c, &v->voteStandard)) + break; + case 1: + CHECK_ERROR(_readAccountVoteSplit_V1(c, &v->voteSplit)) + break; + default: + break; + } + + return parser_ok; +} + +parser_error_t _readCallHashOf_V1(parser_context_t* c, pd_CallHashOf_V1_t* v) { + GEN_DEF_READARRAY(32) +} + +parser_error_t _readChainId_V1(parser_context_t* c, pd_ChainId_V1_t* v) +{ + return parser_not_supported; +} + +parser_error_t _readChangesTrieConfiguration_V1(parser_context_t* c, pd_ChangesTrieConfiguration_V1_t* v) +{ + CHECK_ERROR(_readu32(c, &v->digest_interval)) + CHECK_ERROR(_readu32(c, &v->digest_levels)) + return parser_ok; +} + +parser_error_t _readCodeHash_V1(parser_context_t* c, pd_CodeHash_V1_t* v) +{ + return parser_not_supported; +} + +parser_error_t _readCompactAccountIndex_V1(parser_context_t* c, pd_CompactAccountIndex_V1_t* v) +{ + return _readCompactInt(c, &v->value); +} + +parser_error_t _readCompactPerBill_V1(parser_context_t* c, pd_CompactPerBill_V1_t* v) +{ + return _readCompactInt(c, &v->value); +} + +parser_error_t _readConviction_V1(parser_context_t* c, pd_Conviction_V1_t* v) +{ + CHECK_INPUT() + + CHECK_ERROR(_readUInt8(c, &v->value)) + if (v->value > 5) { + return parser_value_out_of_range; + } + + return parser_ok; +} + +parser_error_t _readDefunctVoter_V1(parser_context_t* c, pd_DefunctVoter_V1_t* v) +{ + return parser_not_supported; +} + +parser_error_t _readDepositNonce_V1(parser_context_t* c, pd_DepositNonce_V1_t* v) +{ + return parser_not_supported; +} + +parser_error_t _readElectionScore_V1(parser_context_t* c, pd_ElectionScore_V1_t* v) +{ + return parser_not_supported; +} + +parser_error_t _readElectionSize_V1(parser_context_t* c, pd_ElectionSize_V1_t* v) +{ + CHECK_ERROR(_readCompactInt(c, &v->validators)); + CHECK_ERROR(_readCompactInt(c, &v->nominators)); + return parser_ok; +} + +parser_error_t _readEraIndex_V1(parser_context_t* c, pd_EraIndex_V1_t* v) +{ + return _readUInt32(c, &v->value); +} + +parser_error_t _readEthTransaction_V1(parser_context_t* c, pd_EthTransaction_V1_t* v) +{ + return parser_not_supported; +} + +parser_error_t _readGrandpaEquivocationProof_V1(parser_context_t* c, pd_GrandpaEquivocationProof_V1_t* v) +{ + return parser_not_supported; +} + +parser_error_t _readH160_V1(parser_context_t* c, pd_H160_V1_t* v) +{ + return parser_not_supported; +} + +parser_error_t _readH256_V1(parser_context_t* c, pd_H256_V1_t* v) +{ + return parser_not_supported; +} + +parser_error_t _readIdentityFields_V1(parser_context_t* c, pd_IdentityFields_V1_t* v) +{ + return parser_not_supported; +} + +parser_error_t _readIdentityInfo_V1(parser_context_t* c, pd_IdentityInfo_V1_t* v) +{ + CHECK_ERROR(_readVecTupleDataData(c, &v->additional)); + CHECK_ERROR(_readData(c, &v->display)); + CHECK_ERROR(_readData(c, &v->legal)); + CHECK_ERROR(_readData(c, &v->web)); + CHECK_ERROR(_readData(c, &v->riot)); + CHECK_ERROR(_readData(c, &v->email)); + CHECK_ERROR(_readOptionu8_array_20(c, &v->pgp_fingerprint)); + CHECK_ERROR(_readData(c, &v->image)); + CHECK_ERROR(_readData(c, &v->twitter)); + return parser_ok; +} + +parser_error_t _readIdentityJudgement_V1(parser_context_t* c, pd_IdentityJudgement_V1_t* v) +{ + return parser_not_supported; +} + +parser_error_t _readKeyOwnerProof_V1(parser_context_t* c, pd_KeyOwnerProof_V1_t* v) +{ + return parser_not_supported; +} + +parser_error_t _readKeyValue_V1(parser_context_t* c, pd_KeyValue_V1_t* v) { + GEN_DEF_READARRAY(32) +} + +parser_error_t _readKey_V1(parser_context_t* c, pd_Key_V1_t* v) { + GEN_DEF_READARRAY(32) +} + +parser_error_t _readKeys_V1(parser_context_t* c, pd_Keys_V1_t* v) +{ + return parser_not_supported; +} + +parser_error_t _readLookupSource_V1(parser_context_t* c, pd_LookupSource_V1_t* v) +{ + CHECK_INPUT(); + CHECK_ERROR(_readUInt8(c, &v->value)) + switch (v->value) { + case 0: // Id + CHECK_ERROR(_readAccountId_V1(c, &v->id)) + break; + case 1: // Index + CHECK_ERROR(_readCompactAccountIndex_V1(c, &v->index)) + break; + case 2: // Raw + CHECK_ERROR(_readBytes(c, &v->raw)) + break; + case 3: // Address32 + GEN_DEF_READARRAY(32) + case 4: // Address20 + GEN_DEF_READARRAY(20) + default: + return parser_unexpected_value; + } + + return parser_ok; +} + +parser_error_t _readMemberCount_V1(parser_context_t* c, pd_MemberCount_V1_t* v) +{ + return _readUInt32(c, &v->value); +} + +parser_error_t _readOpaqueCall_V1(parser_context_t* c, pd_OpaqueCall_V1_t* v) +{ + // Encoded as Byte[], array size comes first + uint8_t size; + CHECK_ERROR(_readUInt8(c, &size)) + return _readCall(c, &v->call); +} + +parser_error_t _readPerbill_V1(parser_context_t* c, pd_Perbill_V1_t* v) +{ + return _readUInt32(c, &v->value); +} + +parser_error_t _readPercent_V1(parser_context_t* c, pd_Percent_V1_t* v) +{ + return _readCompactInt(c, &v->value); +} + +parser_error_t _readPeriod_V1(parser_context_t* c, pd_Period_V1_t* v) +{ + return _readUInt64(c, &v->value); +} + +parser_error_t _readPriority_V1(parser_context_t* c, pd_Priority_V1_t* v) +{ + CHECK_ERROR(_readu32(c, &v->stream_id)) + CHECK_ERROR(_readStreamDependency_V1(c, &v->dependency)) + return parser_ok; +} + +parser_error_t _readProxyType_V1(parser_context_t* c, pd_ProxyType_V1_t* v) +{ + CHECK_INPUT() + + CHECK_ERROR(_readUInt8(c, &v->value)) + if (v->value > 3) { + return parser_value_out_of_range; + } + + return parser_ok; +} + +parser_error_t _readReferendumIndex_V1(parser_context_t* c, pd_ReferendumIndex_V1_t* v) +{ + return _readUInt32(c, &v->value); +} + +parser_error_t _readRegistrarIndex_V1(parser_context_t* c, pd_RegistrarIndex_V1_t* v) +{ + return _readUInt32(c, &v->value); +} + +parser_error_t _readRenouncing_V1(parser_context_t* c, pd_Renouncing_V1_t* v) +{ + return parser_not_supported; +} + +parser_error_t _readResourceId_V1(parser_context_t* c, pd_ResourceId_V1_t* v) +{ + return parser_not_supported; +} + +parser_error_t _readRewardDestination_V1(parser_context_t* c, pd_RewardDestination_V1_t* v) +{ + CHECK_INPUT(); + + CHECK_ERROR(_readUInt8(c, &v->value)) + if (v->value > 2) { + return parser_value_out_of_range; + } + + return parser_ok; +} + +parser_error_t _readSchedule_V1(parser_context_t* c, pd_Schedule_V1_t* v) +{ + return parser_not_supported; +} + +parser_error_t _readSignature_V1(parser_context_t* c, pd_Signature_V1_t* v) { + GEN_DEF_READARRAY(64) +} + +parser_error_t _readStreamDependency_V1(parser_context_t* c, pd_StreamDependency_V1_t* v) +{ + CHECK_ERROR(_readu32(c, &v->dependency_id)) + CHECK_ERROR(_readUInt8(c, &v->weight)) + CHECK_ERROR(_readbool(c, &v->is_exclusive)) + return parser_ok; +} + +parser_error_t _readTAssetBalance_V1(parser_context_t* c, pd_TAssetBalance_V1_t* v) +{ + return parser_not_supported; +} + +parser_error_t _readTimepoint_V1(parser_context_t* c, pd_Timepoint_V1_t* v) +{ + CHECK_ERROR(_readBlockNumber(c, &v->height)) + CHECK_ERROR(_readu32(c, &v->index)) + return parser_ok; +} + +parser_error_t _readTupleAccountIdData_V1(parser_context_t* c, pd_TupleAccountIdData_V1_t* v) +{ + return parser_not_supported; +} + +parser_error_t _readU256_V1(parser_context_t* c, pd_U256_V1_t* v) +{ + return parser_not_supported; +} + +parser_error_t _readValidatorIndex_V1(parser_context_t* c, pd_ValidatorIndex_V1_t* v) +{ + CHECK_INPUT() + CHECK_ERROR(_readUInt16(c, &v->value)) + return parser_ok; +} + +parser_error_t _readValidatorPrefs_V1(parser_context_t* c, pd_ValidatorPrefs_V1_t* v) +{ + CHECK_INPUT(); + CHECK_ERROR(_readCompactPerBill_V1(c, &v->commission)); + return parser_ok; +} + +parser_error_t _readVestingInfo_V1(parser_context_t* c, pd_VestingInfo_V1_t* v) +{ + CHECK_ERROR(_readBalanceOf(c, &v->locked)) + CHECK_ERROR(_readBalanceOf(c, &v->per_block)) + CHECK_ERROR(_readBlockNumber(c, &v->starting_block)) + return parser_ok; +} + +parser_error_t _readVote_V1(parser_context_t* c, pd_Vote_V1_t* v) +{ + CHECK_INPUT(); + uint8_t b; + CHECK_ERROR(_readUInt8(c, &b)) + + v->aye = (b & 0x80u) >> 7u; + v->conviction.value = b & 0x7Fu; + + if (v->conviction.value > 5) { + return parser_value_out_of_range; + } + + return parser_ok; +} + +parser_error_t _readWeight_V1(parser_context_t* c, pd_Weight_V1_t* v) +{ + return _readUInt64(c, &v->value); +} + +parser_error_t _readu8_array_32_V1(parser_context_t* c, pd_u8_array_32_V1_t* v) { + GEN_DEF_READARRAY(32) +} + +parser_error_t _readVecAccountId_V1(parser_context_t* c, pd_VecAccountId_V1_t* v) { + GEN_DEF_READVECTOR(AccountId_V1) +} + +parser_error_t _readVecKeyValue_V1(parser_context_t* c, pd_VecKeyValue_V1_t* v) { + GEN_DEF_READVECTOR(KeyValue_V1) +} + +parser_error_t _readVecKey_V1(parser_context_t* c, pd_VecKey_V1_t* v) { + GEN_DEF_READVECTOR(Key_V1) +} + +parser_error_t _readVecLookupSource_V1(parser_context_t* c, pd_VecLookupSource_V1_t* v) { + GEN_DEF_READVECTOR(LookupSource_V1) +} + +parser_error_t _readVecTupleAccountIdData_V1(parser_context_t* c, pd_VecTupleAccountIdData_V1_t* v) { + GEN_DEF_READVECTOR(TupleAccountIdData_V1) +} + +parser_error_t _readVecValidatorIndex_V1(parser_context_t* c, pd_VecValidatorIndex_V1_t* v) { + GEN_DEF_READVECTOR(ValidatorIndex_V1) +} + +parser_error_t _readOptionAccountId_V1(parser_context_t* c, pd_OptionAccountId_V1_t* v) +{ + CHECK_ERROR(_readUInt8(c, &v->some)) + if (v->some > 0) { + CHECK_ERROR(_readAccountId_V1(c, &v->contained)) + } + return parser_ok; +} + +parser_error_t _readOptionChangesTrieConfiguration_V1(parser_context_t* c, pd_OptionChangesTrieConfiguration_V1_t* v) +{ + CHECK_ERROR(_readUInt8(c, &v->some)) + if (v->some > 0) { + CHECK_ERROR(_readChangesTrieConfiguration_V1(c, &v->contained)) + } + return parser_ok; +} + +parser_error_t _readOptionPeriod_V1(parser_context_t* c, pd_OptionPeriod_V1_t* v) +{ + CHECK_ERROR(_readUInt8(c, &v->some)) + if (v->some > 0) { + CHECK_ERROR(_readPeriod_V1(c, &v->contained)) + } + return parser_ok; +} + +parser_error_t _readOptionProxyType_V1(parser_context_t* c, pd_OptionProxyType_V1_t* v) +{ + CHECK_ERROR(_readUInt8(c, &v->some)) + if (v->some > 0) { + CHECK_ERROR(_readProxyType_V1(c, &v->contained)) + } + return parser_ok; +} + +parser_error_t _readOptionReferendumIndex_V1(parser_context_t* c, pd_OptionReferendumIndex_V1_t* v) +{ + CHECK_ERROR(_readUInt8(c, &v->some)) + if (v->some > 0) { + CHECK_ERROR(_readReferendumIndex_V1(c, &v->contained)) + } + return parser_ok; +} + +parser_error_t _readOptionTimepoint_V1(parser_context_t* c, pd_OptionTimepoint_V1_t* v) +{ + CHECK_ERROR(_readUInt8(c, &v->some)) + if (v->some > 0) { + CHECK_ERROR(_readTimepoint_V1(c, &v->contained)) + } + return parser_ok; +} + +parser_error_t _readOptionU256_V1(parser_context_t* c, pd_OptionU256_V1_t* v) +{ + CHECK_ERROR(_readUInt8(c, &v->some)) + if (v->some > 0) { + CHECK_ERROR(_readU256_V1(c, &v->contained)) + } + return parser_ok; +} + +/////////////////////////////////// +/////////////////////////////////// +/////////////////////////////////// + +parser_error_t _toStringCompactAssetId_V1( + const pd_CompactAssetId_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + return _toStringCompactInt(v, 0, 0, "", outValue, outValueLen, pageIdx, pageCount); +} + +parser_error_t _toStringCompactAssignments_V1( + const pd_CompactAssignments_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + return _toStringCompactInt(v, 0, 0, "", outValue, outValueLen, pageIdx, pageCount); +} + +parser_error_t _toStringCompactBountyIndex_V1( + const pd_CompactBountyIndex_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + return _toStringCompactInt(v, 0, 0, "", outValue, outValueLen, pageIdx, pageCount); +} + +parser_error_t _toStringCompactEraIndex_V1( + const pd_CompactEraIndex_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + return _toStringCompactInt(v, 0, 0, "", outValue, outValueLen, pageIdx, pageCount); +} + +parser_error_t _toStringCompactGas_V1( + const pd_CompactGas_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + return _toStringCompactInt(v, 0, 0, "", outValue, outValueLen, pageIdx, pageCount); +} + +parser_error_t _toStringCompactMemberCount_V1( + const pd_CompactMemberCount_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + return _toStringCompactInt(v, 0, 0, "", outValue, outValueLen, pageIdx, pageCount); +} + +parser_error_t _toStringCompactMoment_V1( + const pd_CompactMoment_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + return _toStringCompactInt(v, 0, 0, "", outValue, outValueLen, pageIdx, pageCount); +} + +parser_error_t _toStringCompactPropIndex_V1( + const pd_CompactPropIndex_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + return _toStringCompactInt(v, 0, 0, "", outValue, outValueLen, pageIdx, pageCount); +} + +parser_error_t _toStringCompactProposalIndex_V1( + const pd_CompactProposalIndex_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + return _toStringCompactInt(v, 0, 0, "", outValue, outValueLen, pageIdx, pageCount); +} + +parser_error_t _toStringCompactReferendumIndex_V1( + const pd_CompactReferendumIndex_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + return _toStringCompactInt(v, 0, 0, "", outValue, outValueLen, pageIdx, pageCount); +} + +parser_error_t _toStringCompactRegistrarIndex_V1( + const pd_CompactRegistrarIndex_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + return _toStringCompactInt(v, 0, 0, "", outValue, outValueLen, pageIdx, pageCount); +} + +parser_error_t _toStringCompactTAssetBalance_V1( + const pd_CompactTAssetBalance_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + return _toStringCompactInt(v, 0, 0, "", outValue, outValueLen, pageIdx, pageCount); +} + +parser_error_t _toStringCompactWeight_V1( + const pd_CompactWeight_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + return _toStringCompactInt(v, 0, 0, "", outValue, outValueLen, pageIdx, pageCount); +} + +parser_error_t _toStringAccountId_V1( + const pd_AccountId_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + return _toStringPubkeyAsAddress(v->_ptr, outValue, outValueLen, pageIdx, pageCount); +} + +parser_error_t _toStringAccountIndex_V1( + const pd_AccountIndex_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + return _toStringu32(&v->value, outValue, outValueLen, pageIdx, pageCount); +} + +parser_error_t _toStringAccountVoteSplit_V1( + const pd_AccountVoteSplit_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + CLEAN_AND_CHECK() + // First measure number of pages + uint8_t pages[3]; + + pages[0] = 1; + CHECK_ERROR(_toStringBalanceOf(&v->aye, outValue, outValueLen, 0, &pages[1])) + CHECK_ERROR(_toStringBalanceOf(&v->nay, outValue, outValueLen, 0, &pages[2])); + + *pageCount = 0; + for (uint8_t i = 0; i < (uint8_t)sizeof(pages); i++) { + *pageCount += pages[i]; + } + + if (pageIdx < pages[0]) { + snprintf(outValue, outValueLen, "Split"); + return parser_ok; + } + pageIdx -= pages[0]; + + ///////// + ///////// + + if (pageIdx < pages[1]) { + CHECK_ERROR(_toStringBalanceOf(&v->aye, outValue, outValueLen, pageIdx, &pages[1])); + return parser_ok; + } + pageIdx -= pages[1]; + + ///////// + ///////// + + if (pageIdx < pages[2]) { + CHECK_ERROR(_toStringBalanceOf(&v->nay, outValue, outValueLen, pageIdx, &pages[2])); + return parser_ok; + } + pageIdx -= pages[2]; + + ///////// + ///////// + + return parser_display_idx_out_of_range; +} + +parser_error_t _toStringAccountVoteStandard_V1( + const pd_AccountVoteStandard_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + CLEAN_AND_CHECK() + // First measure number of pages + uint8_t pages[3]; + + pages[0] = 1; + CHECK_ERROR(_toStringVote_V1(&v->vote, outValue, outValueLen, 0, &pages[1])) + CHECK_ERROR(_toStringBalanceOf(&v->balance, outValue, outValueLen, 0, &pages[2])); + + *pageCount = 0; + for (uint8_t i = 0; i < (uint8_t)sizeof(pages); i++) { + *pageCount += pages[i]; + } + + if (pageIdx > *pageCount) { + return parser_display_idx_out_of_range; + } + + if (pageIdx < pages[0]) { + snprintf(outValue, outValueLen, "Standard"); + return parser_ok; + } + pageIdx -= pages[0]; + + ///////// + ///////// + + if (pageIdx < pages[1]) { + CHECK_ERROR(_toStringVote_V1(&v->vote, outValue, outValueLen, pageIdx, &pages[1])); + return parser_ok; + } + pageIdx -= pages[1]; + + ///////// + ///////// + + if (pageIdx < pages[2]) { + CHECK_ERROR(_toStringBalanceOf(&v->balance, outValue, outValueLen, pageIdx, &pages[2])); + return parser_ok; + } + pageIdx -= pages[2]; + + ///////// + ///////// + + return parser_display_idx_out_of_range; +} + +parser_error_t _toStringAccountVote_V1( + const pd_AccountVote_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + CLEAN_AND_CHECK() + switch (v->value) { + case 0: + _toStringAccountVoteStandard_V1(&v->voteStandard, outValue, outValueLen, pageIdx, pageCount); + break; + case 1: + _toStringAccountVoteSplit_V1(&v->voteSplit, outValue, outValueLen, pageIdx, pageCount); + break; + default: + return parser_unexpected_value; + } + + return parser_ok; +} + +parser_error_t _toStringCallHashOf_V1( + const pd_CallHashOf_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) { + GEN_DEF_TOSTRING_ARRAY(32) +} + +parser_error_t _toStringChainId_V1( + const pd_ChainId_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + CLEAN_AND_CHECK() + return parser_print_not_supported; +} + +parser_error_t _toStringChangesTrieConfiguration_V1( + const pd_ChangesTrieConfiguration_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + // Get all pages first + uint8_t pages[2]; + CHECK_ERROR(_toStringu32(&v->digest_interval, outValue, outValueLen, 0, &pages[0])) + CHECK_ERROR(_toStringu32(&v->digest_levels, outValue, outValueLen, 0, &pages[1])) + + *pageCount = pages[0] + pages[1]; + if (pageIdx > *pageCount) { + return parser_display_idx_out_of_range; + } + + if (pageIdx < pages[0]) { + CHECK_ERROR(_toStringu32(&v->digest_interval, outValue, outValueLen, pageIdx, &pages[0])) + return parser_ok; + } + pageIdx -= pages[0]; + + if (pageIdx < pages[1]) { + CHECK_ERROR(_toStringu32(&v->digest_levels, outValue, outValueLen, pageIdx, &pages[1])) + return parser_ok; + } + + return parser_display_idx_out_of_range; +} + +parser_error_t _toStringCodeHash_V1( + const pd_CodeHash_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + CLEAN_AND_CHECK() + return parser_print_not_supported; +} + +parser_error_t _toStringCompactAccountIndex_V1( + const pd_CompactAccountIndex_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + return _toStringCompactInt(&v->value, 0, 0, "", outValue, outValueLen, pageIdx, pageCount); +} + +parser_error_t _toStringCompactPerBill_V1( + const pd_CompactPerBill_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + // 9 but shift 2 to show as percentage + return _toStringCompactInt(&v->value, 7, '%', "", outValue, outValueLen, pageIdx, pageCount); +} + +parser_error_t _toStringConviction_V1( + const pd_Conviction_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + CLEAN_AND_CHECK() + + *pageCount = 1; + switch (v->value) { + case 0: + snprintf(outValue, outValueLen, "None"); + break; + case 1: + snprintf(outValue, outValueLen, "Locked1x"); + break; + case 2: + snprintf(outValue, outValueLen, "Locked2x"); + break; + case 3: + snprintf(outValue, outValueLen, "Locked3x"); + break; + case 4: + snprintf(outValue, outValueLen, "Locked4x"); + break; + case 5: + snprintf(outValue, outValueLen, "Locked5x"); + break; + default: + return parser_print_not_supported; + } + + return parser_ok; +} + +parser_error_t _toStringDefunctVoter_V1( + const pd_DefunctVoter_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + CLEAN_AND_CHECK() + return parser_print_not_supported; +} + +parser_error_t _toStringDepositNonce_V1( + const pd_DepositNonce_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + CLEAN_AND_CHECK() + return parser_print_not_supported; +} + +parser_error_t _toStringElectionScore_V1( + const pd_ElectionScore_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + CLEAN_AND_CHECK() + return parser_print_not_supported; +} + +parser_error_t _toStringElectionSize_V1( + const pd_ElectionSize_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + // Get all pages first + uint8_t pages[2]; + CHECK_ERROR(_toStringCompactInt(&v->validators, COIN_AMOUNT_DECIMAL_PLACES, 0, "", outValue, outValueLen, 0, &pages[0])) + CHECK_ERROR(_toStringCompactInt(&v->nominators, COIN_AMOUNT_DECIMAL_PLACES, 0, "", outValue, outValueLen, 0, &pages[1])) + + *pageCount = pages[0] + pages[1]; + if (pageIdx > *pageCount) { + return parser_display_idx_out_of_range; + } + + if (pageIdx < pages[0]) { + CHECK_ERROR(_toStringCompactInt(&v->validators, COIN_AMOUNT_DECIMAL_PLACES, 0, "", outValue, outValueLen, pageIdx, &pages[0])) + return parser_ok; + } + pageIdx -= pages[0]; + + if (pageIdx < pages[1]) { + CHECK_ERROR(_toStringCompactInt(&v->nominators, COIN_AMOUNT_DECIMAL_PLACES, 0, "", outValue, outValueLen, pageIdx, &pages[1])) + return parser_ok; + } + + return parser_display_idx_out_of_range; +} + +parser_error_t _toStringEraIndex_V1( + const pd_EraIndex_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + return _toStringu32(&v->value, outValue, outValueLen, pageIdx, pageCount); +} + +parser_error_t _toStringEthTransaction_V1( + const pd_EthTransaction_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + CLEAN_AND_CHECK() + return parser_print_not_supported; +} + +parser_error_t _toStringGrandpaEquivocationProof_V1( + const pd_GrandpaEquivocationProof_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + CLEAN_AND_CHECK() + return parser_print_not_supported; +} + +parser_error_t _toStringH160_V1( + const pd_H160_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + CLEAN_AND_CHECK() + return parser_print_not_supported; +} + +parser_error_t _toStringH256_V1( + const pd_H256_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + CLEAN_AND_CHECK() + return parser_print_not_supported; +} + +parser_error_t _toStringIdentityFields_V1( + const pd_IdentityFields_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + CLEAN_AND_CHECK() + return parser_print_not_supported; +} + +parser_error_t _toStringIdentityInfo_V1( + const pd_IdentityInfo_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + CLEAN_AND_CHECK() + + // First measure number of pages + uint8_t pages[9]; + CHECK_ERROR(_toStringVecTupleDataData(&v->additional, outValue, outValueLen, 0, &pages[0])) + CHECK_ERROR(_toStringData(&v->display, outValue, outValueLen, 0, &pages[1])) + CHECK_ERROR(_toStringData(&v->legal, outValue, outValueLen, 0, &pages[2])) + CHECK_ERROR(_toStringData(&v->web, outValue, outValueLen, 0, &pages[3])) + CHECK_ERROR(_toStringData(&v->riot, outValue, outValueLen, 0, &pages[4])) + CHECK_ERROR(_toStringData(&v->email, outValue, outValueLen, 0, &pages[5])) + CHECK_ERROR(_toStringOptionu8_array_20(&v->pgp_fingerprint, outValue, outValueLen, 0, &pages[6])) + CHECK_ERROR(_toStringData(&v->image, outValue, outValueLen, 0, &pages[7])) + CHECK_ERROR(_toStringData(&v->twitter, outValue, outValueLen, 0, &pages[8])) + + *pageCount = 0; + for (uint8_t i = 0; i < (uint8_t)sizeof(pages); i++) { + *pageCount += pages[i]; + } + + if (pageIdx > *pageCount) { + return parser_display_idx_out_of_range; + } + + if (pageIdx < pages[0]) { + CHECK_ERROR(_toStringVecTupleDataData(&v->additional, outValue, outValueLen, pageIdx, &pages[0])) + return parser_ok; + } + pageIdx -= pages[0]; + + ///////// + ///////// + + if (pageIdx < pages[1]) { + CHECK_ERROR(_toStringData(&v->display, outValue, outValueLen, pageIdx, &pages[1])) + return parser_ok; + } + pageIdx -= pages[1]; + + ///////// + ///////// + + if (pageIdx < pages[2]) { + CHECK_ERROR(_toStringData(&v->legal, outValue, outValueLen, pageIdx, &pages[2])) + return parser_ok; + } + pageIdx -= pages[2]; + + ///////// + ///////// + + if (pageIdx < pages[3]) { + CHECK_ERROR(_toStringData(&v->web, outValue, outValueLen, pageIdx, &pages[3])) + return parser_ok; + } + pageIdx -= pages[3]; + + ///////// + ///////// + + if (pageIdx < pages[4]) { + CHECK_ERROR(_toStringData(&v->riot, outValue, outValueLen, pageIdx, &pages[4])) + return parser_ok; + } + pageIdx -= pages[4]; + + ///////// + ///////// + + if (pageIdx < pages[5]) { + CHECK_ERROR(_toStringData(&v->email, outValue, outValueLen, pageIdx, &pages[5])) + return parser_ok; + } + pageIdx -= pages[5]; + + ///////// + ///////// + + if (pageIdx < pages[6]) { + CHECK_ERROR(_toStringOptionu8_array_20(&v->pgp_fingerprint, outValue, outValueLen, pageIdx, &pages[6])) + return parser_ok; + } + pageIdx -= pages[6]; + + ///////// + ///////// + + if (pageIdx < pages[7]) { + CHECK_ERROR(_toStringData(&v->image, outValue, outValueLen, pageIdx, &pages[7])) + return parser_ok; + } + pageIdx -= pages[7]; + + ///////// + ///////// + + if (pageIdx < pages[8]) { + CHECK_ERROR(_toStringData(&v->twitter, outValue, outValueLen, pageIdx, &pages[8])) + return parser_ok; + } + pageIdx -= pages[8]; + + return parser_display_idx_out_of_range; +} + +parser_error_t _toStringIdentityJudgement_V1( + const pd_IdentityJudgement_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + CLEAN_AND_CHECK() + return parser_print_not_supported; +} + +parser_error_t _toStringKeyOwnerProof_V1( + const pd_KeyOwnerProof_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + CLEAN_AND_CHECK() + return parser_print_not_supported; +} + +parser_error_t _toStringKeyValue_V1( + const pd_KeyValue_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + CLEAN_AND_CHECK() + + return parser_print_not_supported; +} + +parser_error_t _toStringKey_V1( + const pd_Key_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + CLEAN_AND_CHECK() + + return parser_print_not_supported; +} + +parser_error_t _toStringKeys_V1( + const pd_Keys_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) { + GEN_DEF_TOSTRING_ARRAY(4 * 32) +} + +parser_error_t _toStringLookupSource_V1( + const pd_LookupSource_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + CLEAN_AND_CHECK() + switch (v->value) { + case 0: // Id + CHECK_ERROR(_toStringAccountId_V1(&v->id, outValue, outValueLen, pageIdx, pageCount)) + break; + case 1: // Index + CHECK_ERROR(_toStringCompactAccountIndex_V1(&v->index, outValue, outValueLen, pageIdx, pageCount)) + break; + case 2: // Raw + CHECK_ERROR(_toStringBytes(&v->raw, outValue, outValueLen, pageIdx, pageCount)) + break; + case 3: // Address32 + { + GEN_DEF_TOSTRING_ARRAY(32) + } + case 4: // Address20 + { + GEN_DEF_TOSTRING_ARRAY(20) + } + default: + return parser_not_supported; + } + + return parser_ok; +} + +parser_error_t _toStringMemberCount_V1( + const pd_MemberCount_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + return _toStringu32(&v->value, outValue, outValueLen, pageIdx, pageCount); +} + +parser_error_t _toStringOpaqueCall_V1( + const pd_OpaqueCall_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + return _toStringCall(&v->call, outValue, outValueLen, pageIdx, pageCount); +} + +parser_error_t _toStringPerbill_V1( + const pd_Perbill_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + char bufferUI[100]; + char ratioBuffer[80]; + MEMSET(outValue, 0, outValueLen); + MEMSET(ratioBuffer, 0, sizeof(ratioBuffer)); + MEMSET(bufferUI, 0, sizeof(bufferUI)); + *pageCount = 1; + + if (fpuint64_to_str(ratioBuffer, sizeof(ratioBuffer), v->value, 7) == 0) { + return parser_unexpected_value; + } + + snprintf(bufferUI, sizeof(bufferUI), "%s%%", ratioBuffer); + pageString(outValue, outValueLen, bufferUI, pageIdx, pageCount); + return parser_ok; +} + +parser_error_t _toStringPercent_V1( + const pd_Percent_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + // 9 but shift 2 to show as percentage + return _toStringCompactInt(&v->value, 7, '%', "", outValue, outValueLen, pageIdx, pageCount); +} + +parser_error_t _toStringPeriod_V1( + const pd_Period_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + return _toStringu64(&v->value, outValue, outValueLen, pageIdx, pageCount); +} + +parser_error_t _toStringPriority_V1( + const pd_Priority_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + // Get all pages first + uint8_t pages[2]; + CHECK_ERROR(_toStringu32(&v->stream_id, outValue, outValueLen, 0, &pages[0])) + CHECK_ERROR(_toStringStreamDependency_V1(&v->dependency, outValue, outValueLen, 0, &pages[1])) + + *pageCount = pages[0] + pages[1]; + if (pageIdx > *pageCount) { + return parser_display_idx_out_of_range; + } + + if (pageIdx < pages[0]) { + CHECK_ERROR(_toStringu32(&v->stream_id, outValue, outValueLen, pageIdx, &pages[0])) + return parser_ok; + } + pageIdx -= pages[0]; + + if (pageIdx < pages[1]) { + CHECK_ERROR(_toStringStreamDependency_V1(&v->dependency, outValue, outValueLen, pageIdx, &pages[1])) + return parser_ok; + } + + return parser_display_idx_out_of_range; +} + +parser_error_t _toStringProxyType_V1( + const pd_ProxyType_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + CLEAN_AND_CHECK() + + *pageCount = 1; + switch (v->value) { + case 0: + snprintf(outValue, outValueLen, "Any"); + break; + case 1: + snprintf(outValue, outValueLen, "NonTransfer"); + break; + case 2: + snprintf(outValue, outValueLen, "Governance"); + break; + case 3: + snprintf(outValue, outValueLen, "Staking"); + break; + default: + return parser_print_not_supported; + } + + return parser_ok; +} + +parser_error_t _toStringReferendumIndex_V1( + const pd_ReferendumIndex_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + return _toStringu32(&v->value, outValue, outValueLen, pageIdx, pageCount); +} + +parser_error_t _toStringRegistrarIndex_V1( + const pd_RegistrarIndex_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + return _toStringu32(&v->value, outValue, outValueLen, pageIdx, pageCount); +} + +parser_error_t _toStringRenouncing_V1( + const pd_Renouncing_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + CLEAN_AND_CHECK() + return parser_print_not_supported; +} + +parser_error_t _toStringResourceId_V1( + const pd_ResourceId_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + CLEAN_AND_CHECK() + return parser_print_not_supported; +} + +parser_error_t _toStringRewardDestination_V1( + const pd_RewardDestination_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + CLEAN_AND_CHECK() + + *pageCount = 1; + switch (v->value) { + case 0: + snprintf(outValue, outValueLen, "Staked"); + break; + case 1: + snprintf(outValue, outValueLen, "Stash"); + break; + case 2: + snprintf(outValue, outValueLen, "Controller"); + break; + default: + return parser_print_not_supported; + } + + return parser_ok; +} + +parser_error_t _toStringSchedule_V1( + const pd_Schedule_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + CLEAN_AND_CHECK() + return parser_print_not_supported; +} + +parser_error_t _toStringSignature_V1( + const pd_Signature_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) { + GEN_DEF_TOSTRING_ARRAY(64) +} + +parser_error_t _toStringStreamDependency_V1( + const pd_StreamDependency_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + CLEAN_AND_CHECK() + + // Index + count pages + uint8_t pages[3]; + CHECK_ERROR(_toStringu32(&v->dependency_id, outValue, outValueLen, 0, &pages[0])) + CHECK_ERROR(_toStringu16((const pd_u16_t*)&v->weight, outValue, outValueLen, 0, &pages[1])) + CHECK_ERROR(_toStringbool(&v->is_exclusive, outValue, outValueLen, 0, &pages[2])) + + *pageCount = pages[0] + pages[1] + pages[2]; + if (pageIdx > *pageCount) { + return parser_display_idx_out_of_range; + } + + if (pageIdx < pages[0]) { + CHECK_ERROR(_toStringu32(&v->dependency_id, outValue, outValueLen, pageIdx, &pages[0])) + return parser_ok; + } + pageIdx -= pages[0]; + + ////// + if (pageIdx < pages[1]) { + CHECK_ERROR(_toStringu16((const pd_u16_t*)&v->weight, outValue, outValueLen, pageIdx, &pages[1])) + return parser_ok; + } + pageIdx -= pages[1]; + + ////// + if (pageIdx < pages[2]) { + CHECK_ERROR(_toStringbool(&v->is_exclusive, outValue, outValueLen, pageIdx, &pages[2])) + return parser_ok; + } + + return parser_display_idx_out_of_range; +} + +parser_error_t _toStringTAssetBalance_V1( + const pd_TAssetBalance_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + CLEAN_AND_CHECK() + return parser_print_not_supported; +} + +parser_error_t _toStringTimepoint_V1( + const pd_Timepoint_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + CLEAN_AND_CHECK() + + // Index + count pages + uint8_t pages[2]; + CHECK_ERROR(_toStringBlockNumber(&v->height, outValue, outValueLen, 0, &pages[0])) + CHECK_ERROR(_toStringu32(&v->index, outValue, outValueLen, 0, &pages[1])) + + *pageCount = pages[0] + pages[1]; + if (pageIdx > *pageCount) { + return parser_display_idx_out_of_range; + } + + if (pageIdx < pages[0]) { + CHECK_ERROR(_toStringBlockNumber(&v->height, outValue, outValueLen, pageIdx, &pages[0])) + return parser_ok; + } + pageIdx -= pages[0]; + + ////// + if (pageIdx < pages[1]) { + CHECK_ERROR(_toStringu32(&v->index, outValue, outValueLen, pageIdx, &pages[1])) + return parser_ok; + } + + return parser_display_idx_out_of_range; +} + +parser_error_t _toStringTupleAccountIdData_V1( + const pd_TupleAccountIdData_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + CLEAN_AND_CHECK() + return parser_print_not_supported; +} + +parser_error_t _toStringU256_V1( + const pd_U256_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + CLEAN_AND_CHECK() + return parser_print_not_supported; +} + +parser_error_t _toStringValidatorIndex_V1( + const pd_ValidatorIndex_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + return _toStringu16(&v->value, outValue, outValueLen, pageIdx, pageCount); +} + +parser_error_t _toStringValidatorPrefs_V1( + const pd_ValidatorPrefs_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + CLEAN_AND_CHECK() + return _toStringCompactPerBill_V1(&v->commission, outValue, outValueLen, pageIdx, pageCount); +} + +parser_error_t _toStringVestingInfo_V1( + const pd_VestingInfo_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + CLEAN_AND_CHECK() + + // Index + count pages + uint8_t pages[3]; + CHECK_ERROR(_toStringBalanceOf(&v->locked, outValue, outValueLen, 0, &pages[0])) + CHECK_ERROR(_toStringBalanceOf(&v->per_block, outValue, outValueLen, 0, &pages[1])) + CHECK_ERROR(_toStringBlockNumber(&v->starting_block, outValue, outValueLen, 0, &pages[2])) + + *pageCount = pages[0] + pages[1] + pages[2]; + if (pageIdx > *pageCount) { + return parser_display_idx_out_of_range; + } + + if (pageIdx < pages[0]) { + CHECK_ERROR(_toStringBalanceOf(&v->locked, outValue, outValueLen, pageIdx, &pages[0])) + return parser_ok; + } + pageIdx -= pages[0]; + + ////// + if (pageIdx < pages[1]) { + CHECK_ERROR(_toStringBalanceOf(&v->per_block, outValue, outValueLen, pageIdx, &pages[1])) + return parser_ok; + } + pageIdx -= pages[1]; + + ////// + if (pageIdx < pages[2]) { + CHECK_ERROR(_toStringBlockNumber(&v->starting_block, outValue, outValueLen, pageIdx, &pages[2])) + return parser_ok; + } + + return parser_display_idx_out_of_range; +} + +parser_error_t _toStringVote_V1( + const pd_Vote_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + CLEAN_AND_CHECK() + + CHECK_PARSER_ERR(_toStringbool(&v->aye, outValue, outValueLen, pageIdx, pageCount)); + uint16_t offset = strlen(outValue); + outValue[offset++] = ' '; + CHECK_PARSER_ERR(_toStringConviction_V1(&v->conviction, + outValue + offset, + outValueLen - offset, + pageIdx, + pageCount)); + *pageCount = 1; + return parser_ok; +} + +parser_error_t _toStringWeight_V1( + const pd_Weight_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + return _toStringu64(&v->value, outValue, outValueLen, pageIdx, pageCount); +} + +parser_error_t _toStringu8_array_32_V1( + const pd_u8_array_32_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) { + GEN_DEF_TOSTRING_ARRAY(32) +} + +parser_error_t _toStringVecAccountId_V1( + const pd_VecAccountId_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + GEN_DEF_TOSTRING_VECTOR(AccountId_V1); +} + +parser_error_t _toStringVecKeyValue_V1( + const pd_VecKeyValue_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + GEN_DEF_TOSTRING_VECTOR(KeyValue_V1); +} + +parser_error_t _toStringVecKey_V1( + const pd_VecKey_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + GEN_DEF_TOSTRING_VECTOR(Key_V1); +} + +parser_error_t _toStringVecLookupSource_V1( + const pd_VecLookupSource_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + GEN_DEF_TOSTRING_VECTOR(LookupSource_V1); +} + +parser_error_t _toStringVecTupleAccountIdData_V1( + const pd_VecTupleAccountIdData_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + GEN_DEF_TOSTRING_VECTOR(TupleAccountIdData_V1); +} + +parser_error_t _toStringVecValidatorIndex_V1( + const pd_VecValidatorIndex_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + GEN_DEF_TOSTRING_VECTOR(ValidatorIndex_V1); +} + +parser_error_t _toStringOptionAccountId_V1( + const pd_OptionAccountId_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + CLEAN_AND_CHECK() + + *pageCount = 1; + if (v->some > 0) { + CHECK_ERROR(_toStringAccountId_V1( + &v->contained, + outValue, outValueLen, + pageIdx, pageCount)); + } else { + snprintf(outValue, outValueLen, "None"); + } + return parser_ok; +} + +parser_error_t _toStringOptionChangesTrieConfiguration_V1( + const pd_OptionChangesTrieConfiguration_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + CLEAN_AND_CHECK() + + *pageCount = 1; + if (v->some > 0) { + CHECK_ERROR(_toStringChangesTrieConfiguration_V1( + &v->contained, + outValue, outValueLen, + pageIdx, pageCount)); + } else { + snprintf(outValue, outValueLen, "None"); + } + return parser_ok; +} + +parser_error_t _toStringOptionPeriod_V1( + const pd_OptionPeriod_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + CLEAN_AND_CHECK() + + *pageCount = 1; + if (v->some > 0) { + CHECK_ERROR(_toStringPeriod_V1( + &v->contained, + outValue, outValueLen, + pageIdx, pageCount)); + } else { + snprintf(outValue, outValueLen, "None"); + } + return parser_ok; +} + +parser_error_t _toStringOptionProxyType_V1( + const pd_OptionProxyType_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + CLEAN_AND_CHECK() + + *pageCount = 1; + if (v->some > 0) { + CHECK_ERROR(_toStringProxyType_V1( + &v->contained, + outValue, outValueLen, + pageIdx, pageCount)); + } else { + snprintf(outValue, outValueLen, "None"); + } + return parser_ok; +} + +parser_error_t _toStringOptionReferendumIndex_V1( + const pd_OptionReferendumIndex_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + CLEAN_AND_CHECK() + + *pageCount = 1; + if (v->some > 0) { + CHECK_ERROR(_toStringReferendumIndex_V1( + &v->contained, + outValue, outValueLen, + pageIdx, pageCount)); + } else { + snprintf(outValue, outValueLen, "None"); + } + return parser_ok; +} + +parser_error_t _toStringOptionTimepoint_V1( + const pd_OptionTimepoint_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + CLEAN_AND_CHECK() + + *pageCount = 1; + if (v->some > 0) { + CHECK_ERROR(_toStringTimepoint_V1( + &v->contained, + outValue, outValueLen, + pageIdx, pageCount)); + } else { + snprintf(outValue, outValueLen, "None"); + } + return parser_ok; +} + +parser_error_t _toStringOptionU256_V1( + const pd_OptionU256_V1_t* v, + char* outValue, + uint16_t outValueLen, + uint8_t pageIdx, + uint8_t* pageCount) +{ + CLEAN_AND_CHECK() + + *pageCount = 1; + if (v->some > 0) { + CHECK_ERROR(_toStringU256_V1( + &v->contained, + outValue, outValueLen, + pageIdx, pageCount)); + } else { + snprintf(outValue, outValueLen, "None"); + } + return parser_ok; +} diff --git a/app/src/substrate_types_V1.h b/app/src/substrate_types_V1.h new file mode 100644 index 0000000..7e61e92 --- /dev/null +++ b/app/src/substrate_types_V1.h @@ -0,0 +1,392 @@ +/******************************************************************************* +* (c) 2019 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +#include "substrate_types.h" +#include +#include + +// Based +// https://github.com/paritytech/substrate/blob/master/node/primitives/src/lib.rs + +typedef struct { + uint8_t value; +} pd_Conviction_V1_t; + +typedef struct { + const uint8_t* _ptr; +} pd_AccountId_V1_t; + +typedef struct { + compactInt_t value; +} pd_CompactAccountIndex_V1_t; + +typedef struct { + pd_bool_t aye; + pd_Conviction_V1_t conviction; +} pd_Vote_V1_t; + +typedef struct { + pd_BalanceOf_t aye; + pd_BalanceOf_t nay; +} pd_AccountVoteSplit_V1_t; + +typedef struct { + pd_Vote_V1_t vote; + pd_BalanceOf_t balance; +} pd_AccountVoteStandard_V1_t; + +typedef struct { + pd_u32_t digest_interval; + pd_u32_t digest_levels; +} pd_ChangesTrieConfiguration_V1_t; + +typedef struct { + compactInt_t value; +} pd_CompactPerBill_V1_t; + +typedef struct { + const uint8_t* _ptr; +} pd_KeyValue_V1_t; + +typedef struct { + const uint8_t* _ptr; +} pd_Key_V1_t; + +typedef struct { + uint8_t value; + union { + pd_AccountId_V1_t id; + pd_CompactAccountIndex_V1_t index; + pd_Bytes_t raw; + const uint8_t* _ptr; + }; +} pd_LookupSource_V1_t; + +typedef struct { + uint64_t value; +} pd_Period_V1_t; + +typedef struct { + uint8_t value; +} pd_ProxyType_V1_t; + +typedef struct { + uint32_t value; +} pd_ReferendumIndex_V1_t; + +typedef struct { + pd_u32_t dependency_id; + uint8_t weight; + pd_bool_t is_exclusive; +} pd_StreamDependency_V1_t; + +typedef struct { + pd_BlockNumber_t height; + uint32_t index; +} pd_Timepoint_V1_t; + +typedef struct { + // TODO: Not implemented + uint8_t _NOT_IMPLEMENTED__DO_NOT_USE; +} pd_TupleAccountIdData_V1_t; + +typedef struct { + // TODO: Not implemented + uint8_t _NOT_IMPLEMENTED__DO_NOT_USE; +} pd_U256_V1_t; + +typedef struct { + uint16_t value; +} pd_ValidatorIndex_V1_t; + +typedef struct { + uint8_t value; + union { + pd_AccountVoteStandard_V1_t voteStandard; + pd_AccountVoteSplit_V1_t voteSplit; + }; +} pd_AccountVote_V1_t; + +typedef struct { + // https://github.com/paritytech/substrate/blob/effe489951d1edab9d34846b1eefdfaf9511dab9/frame/identity/src/lib.rs#L276 + pd_VecTupleDataData_t additional; + pd_Data_t display; + pd_Data_t legal; + pd_Data_t web; + pd_Data_t riot; + pd_Data_t email; + pd_Optionu8_array_20_t pgp_fingerprint; + pd_Data_t image; + pd_Data_t twitter; +} pd_IdentityInfo_V1_t; + +typedef struct { + pd_Call_t call; +} pd_OpaqueCall_V1_t; + +typedef struct { + uint8_t some; + pd_ChangesTrieConfiguration_V1_t contained; +} pd_OptionChangesTrieConfiguration_V1_t; + +typedef struct { + uint8_t some; + pd_Timepoint_V1_t contained; +} pd_OptionTimepoint_V1_t; + +typedef struct { + uint32_t stream_id; + pd_StreamDependency_V1_t dependency; +} pd_Priority_V1_t; + +typedef struct { + pd_CompactPerBill_V1_t commission; +} pd_ValidatorPrefs_V1_t; + +typedef struct { + uint64_t _len; + const uint8_t* _ptr; + uint64_t _lenBuffer; +} pd_VecLookupSource_V1_t; + +typedef struct { + pd_BalanceOf_t locked; + pd_BalanceOf_t per_block; + pd_BlockNumber_t starting_block; +} pd_VestingInfo_V1_t; + +typedef struct { + uint32_t value; +} pd_AccountIndex_V1_t; + +typedef struct { + const uint8_t* _ptr; +} pd_CallHashOf_V1_t; + +typedef struct { + // TODO: Not implemented + uint8_t _NOT_IMPLEMENTED__DO_NOT_USE; +} pd_ChainId_V1_t; + +typedef struct { + // TODO: Not implemented + uint8_t _NOT_IMPLEMENTED__DO_NOT_USE; +} pd_CodeHash_V1_t; + +typedef compactInt_t pd_CompactAssetId_V1_t; + +typedef compactInt_t pd_CompactAssignments_V1_t; + +typedef compactInt_t pd_CompactBountyIndex_V1_t; + +typedef compactInt_t pd_CompactEraIndex_V1_t; + +typedef compactInt_t pd_CompactGas_V1_t; + +typedef compactInt_t pd_CompactMemberCount_V1_t; + +typedef compactInt_t pd_CompactMoment_V1_t; + +typedef compactInt_t pd_CompactPropIndex_V1_t; + +typedef compactInt_t pd_CompactProposalIndex_V1_t; + +typedef compactInt_t pd_CompactReferendumIndex_V1_t; + +typedef compactInt_t pd_CompactRegistrarIndex_V1_t; + +typedef compactInt_t pd_CompactTAssetBalance_V1_t; + +typedef compactInt_t pd_CompactWeight_V1_t; + +typedef struct { + // TODO: Not implemented + uint8_t _NOT_IMPLEMENTED__DO_NOT_USE; +} pd_DefunctVoter_V1_t; + +typedef struct { + // TODO: Not implemented + uint8_t _NOT_IMPLEMENTED__DO_NOT_USE; +} pd_DepositNonce_V1_t; + +typedef struct { + // TODO: Not implemented + uint8_t _NOT_IMPLEMENTED__DO_NOT_USE; +} pd_ElectionScore_V1_t; + +typedef struct { + compactInt_t validators; + compactInt_t nominators; +} pd_ElectionSize_V1_t; + +typedef struct { + uint32_t value; +} pd_EraIndex_V1_t; + +typedef struct { + // TODO: Not implemented + uint8_t _NOT_IMPLEMENTED__DO_NOT_USE; +} pd_EthTransaction_V1_t; + +typedef struct { + // TODO: Not implemented + uint8_t _NOT_IMPLEMENTED__DO_NOT_USE; +} pd_GrandpaEquivocationProof_V1_t; + +typedef struct { + // TODO: Not implemented + uint8_t _NOT_IMPLEMENTED__DO_NOT_USE; +} pd_H160_V1_t; + +typedef struct { + // TODO: Not implemented + uint8_t _NOT_IMPLEMENTED__DO_NOT_USE; +} pd_H256_V1_t; + +typedef struct { + // TODO: Not implemented + uint8_t _NOT_IMPLEMENTED__DO_NOT_USE; +} pd_IdentityFields_V1_t; + +typedef struct { + // TODO: Not implemented + uint8_t _NOT_IMPLEMENTED__DO_NOT_USE; +} pd_IdentityJudgement_V1_t; + +typedef struct { + // TODO: Not implemented + uint8_t _NOT_IMPLEMENTED__DO_NOT_USE; +} pd_KeyOwnerProof_V1_t; + +typedef struct { + const uint8_t* _ptr; +} pd_Keys_V1_t; + +typedef struct { + uint32_t value; +} pd_MemberCount_V1_t; + +typedef struct { + uint8_t some; + pd_AccountId_V1_t contained; +} pd_OptionAccountId_V1_t; + +typedef struct { + uint8_t some; + pd_Period_V1_t contained; +} pd_OptionPeriod_V1_t; + +typedef struct { + uint8_t some; + pd_ProxyType_V1_t contained; +} pd_OptionProxyType_V1_t; + +typedef struct { + uint8_t some; + pd_ReferendumIndex_V1_t contained; +} pd_OptionReferendumIndex_V1_t; + +typedef struct { + uint8_t some; + pd_U256_V1_t contained; +} pd_OptionU256_V1_t; + +typedef struct { + uint32_t value; +} pd_Perbill_V1_t; + +typedef struct { + compactInt_t value; +} pd_Percent_V1_t; + +typedef struct { + uint32_t value; +} pd_RegistrarIndex_V1_t; + +typedef struct { + // TODO: Not implemented + uint8_t _NOT_IMPLEMENTED__DO_NOT_USE; +} pd_Renouncing_V1_t; + +typedef struct { + // TODO: Not implemented + uint8_t _NOT_IMPLEMENTED__DO_NOT_USE; +} pd_ResourceId_V1_t; + +typedef struct { + uint8_t value; +} pd_RewardDestination_V1_t; + +typedef struct { + // TODO: Not implemented + uint8_t _NOT_IMPLEMENTED__DO_NOT_USE; +} pd_Schedule_V1_t; + +typedef struct { + const uint8_t* _ptr; +} pd_Signature_V1_t; + +typedef struct { + // TODO: Not implemented + uint8_t _NOT_IMPLEMENTED__DO_NOT_USE; +} pd_TAssetBalance_V1_t; + +typedef struct { + uint64_t _len; + const uint8_t* _ptr; + uint64_t _lenBuffer; +} pd_VecAccountId_V1_t; + +typedef struct { + uint64_t _len; + const uint8_t* _ptr; + uint64_t _lenBuffer; +} pd_VecKeyValue_V1_t; + +typedef struct { + uint64_t _len; + const uint8_t* _ptr; + uint64_t _lenBuffer; +} pd_VecKey_V1_t; + +typedef struct { + uint64_t _len; + const uint8_t* _ptr; + uint64_t _lenBuffer; +} pd_VecTupleAccountIdData_V1_t; + +typedef struct { + uint64_t _len; + const uint8_t* _ptr; + uint64_t _lenBuffer; +} pd_VecValidatorIndex_V1_t; + +typedef struct { + uint64_t value; +} pd_Weight_V1_t; + +typedef struct { + const uint8_t* _ptr; +} pd_u8_array_32_V1_t; + +#ifdef __cplusplus +} +#endif diff --git a/cmake/cmake-modules b/cmake/cmake-modules new file mode 160000 index 0000000..0503702 --- /dev/null +++ b/cmake/cmake-modules @@ -0,0 +1 @@ +Subproject commit 0503702f2ef733aa8f6a0c2015db89b085c5ac57 diff --git a/cmake/conan/CMakeLists.txt b/cmake/conan/CMakeLists.txt new file mode 100644 index 0000000..4899e70 --- /dev/null +++ b/cmake/conan/CMakeLists.txt @@ -0,0 +1,12 @@ +# Download automatically, you can also just copy the conan.cmake file + +if (NOT EXISTS "${CMAKE_BINARY_DIR}/conan.cmake") + message(STATUS "Downloading conan.cmake from https://github.com/conan-io/cmake-conan") + file(DOWNLOAD "https://raw.githubusercontent.com/conan-io/cmake-conan/v0.13/conan.cmake" + "${CMAKE_BINARY_DIR}/conan.cmake") +endif () +include(${CMAKE_BINARY_DIR}/conan.cmake) + +conan_check(REQUIRED) + +conan_cmake_run(CONANFILE conanfile.txt BASIC_SETUP CMAKE_TARGETS BUILD missing) diff --git a/cmake/gtest/CMakeLists.txt b/cmake/gtest/CMakeLists.txt new file mode 100644 index 0000000..5962ac3 --- /dev/null +++ b/cmake/gtest/CMakeLists.txt @@ -0,0 +1,32 @@ +############################## +# Google Test +# Based on instructions in https://github.com/google/googletest/tree/master/googletest#incorporating-into-an-existing-cmake-project +# Download and unpack googletest at configure time +configure_file(CMakeLists.txt.gtest.in ${CMAKE_BINARY_DIR}/googletest-download/CMakeLists.txt) + +execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" . + RESULT_VARIABLE result + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/googletest-download) +if (result) + message(FATAL_ERROR "CMake step for googletest failed: ${result}") +endif () + +execute_process(COMMAND ${CMAKE_COMMAND} --build . + RESULT_VARIABLE result + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/googletest-download) +if (result) + message(FATAL_ERROR "Build step for googletest failed: ${result}") +endif () + +# Prevent overriding the parent project's compiler/linker settings on Windows +set(gtest_force_shared_crt ON CACHE BOOL "" FORCE) + +add_subdirectory( + ${CMAKE_BINARY_DIR}/googletest-src + ${CMAKE_BINARY_DIR}/googletest-build +) + +if (CMAKE_VERSION VERSION_LESS 2.8.11) + include_directories("${gtest_SOURCE_DIR}/include") + include_directories("${gtest_SOURCE_DIR}/include") +endif () diff --git a/cmake/gtest/CMakeLists.txt.gtest.in b/cmake/gtest/CMakeLists.txt.gtest.in new file mode 100644 index 0000000..4818300 --- /dev/null +++ b/cmake/gtest/CMakeLists.txt.gtest.in @@ -0,0 +1,16 @@ +# Based on https://github.com/google/googletest/tree/master/googletest#incorporating-into-an-existing-cmake-project +cmake_minimum_required(VERSION 3.0.0) + +project(googletest-download NONE) + +include(ExternalProject) +ExternalProject_Add(googletest + GIT_REPOSITORY https://github.com/google/googletest.git + GIT_TAG master + SOURCE_DIR "${CMAKE_BINARY_DIR}/googletest-src" + BINARY_DIR "${CMAKE_BINARY_DIR}/googletest-build" + CONFIGURE_COMMAND "" + BUILD_COMMAND "" + INSTALL_COMMAND "" + TEST_COMMAND "" + ) diff --git a/conanfile.txt b/conanfile.txt new file mode 100644 index 0000000..0d3d2a7 --- /dev/null +++ b/conanfile.txt @@ -0,0 +1,6 @@ +[requires] +jsoncpp/1.9.3 +fmt/7.0.2 + +[generators] +cmake diff --git a/deps/BLAKE2 b/deps/BLAKE2 new file mode 160000 index 0000000..b52178a --- /dev/null +++ b/deps/BLAKE2 @@ -0,0 +1 @@ +Subproject commit b52178a376ca85a8ffe50492263c2a5bc0fa4f46 diff --git a/deps/ledger-zxlib/.circleci/config.yml b/deps/ledger-zxlib/.circleci/config.yml new file mode 100644 index 0000000..0c981f7 --- /dev/null +++ b/deps/ledger-zxlib/.circleci/config.yml @@ -0,0 +1,19 @@ +version: 2 +jobs: + build: + docker: + - image: ubuntu:18.04 + steps: + - run: + name: Install dependencies + command: apt update && apt-get -y install build-essential git sudo wget cmake libssl-dev libgmp-dev autoconf libtool + - checkout + - run: git submodule update --init --recursive + - run: cmake . && make + - run: export GTEST_COLOR=1 && ctest -VV + +workflows: + version: 2 + build_all: + jobs: + - build diff --git a/deps/ledger-zxlib/.editorconfig b/deps/ledger-zxlib/.editorconfig new file mode 100644 index 0000000..2d7db14 --- /dev/null +++ b/deps/ledger-zxlib/.editorconfig @@ -0,0 +1,16 @@ +# top-most EditorConfig file +root = true + +[*] +charset = utf-8 +trim_trailing_whitespace = true +end_of_line = lf +insert_final_newline = true + +[*.{c,h,cpp,hpp}] +indent_style = space +indent_size = 4 + +[*.{yml,sh}] +indent_style = space +indent_size = 2 diff --git a/deps/ledger-zxlib/.gitignore b/deps/ledger-zxlib/.gitignore new file mode 100644 index 0000000..d3d05a3 --- /dev/null +++ b/deps/ledger-zxlib/.gitignore @@ -0,0 +1,4 @@ + +\.idea/ + +cmake-build-debug/ diff --git a/deps/ledger-zxlib/CMakeLists.txt b/deps/ledger-zxlib/CMakeLists.txt new file mode 100644 index 0000000..a8937e7 --- /dev/null +++ b/deps/ledger-zxlib/CMakeLists.txt @@ -0,0 +1,57 @@ +#******************************************************************************* +#* (c) 2018 Zondax GmbH +#* +#* Licensed under the Apache License, Version 2.0 (the "License"); +#* you may not use this file except in compliance with the License. +#* You may obtain a copy of the License at +#* +#* http://www.apache.org/licenses/LICENSE-2.0 +#* +#* Unless required by applicable law or agreed to in writing, software +#* distributed under the License is distributed on an "AS IS" BASIS, +#* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +#* See the License for the specific language governing permissions and +#* limitations under the License. +#******************************************************************************** +cmake_minimum_required(VERSION 3.0) +project(ledger-zxlib) + +set(CMAKE_CXX_STANDARD 11) + +add_subdirectory(cmake/gtest) + +include_directories( + ${CMAKE_CURRENT_SOURCE_DIR}/include +) + +############### + +file(GLOB_RECURSE ZXLIB_SRC + ${CMAKE_CURRENT_SOURCE_DIR}/src/*.c + ) + +file(GLOB_RECURSE TESTS_SRC + ${CMAKE_CURRENT_SOURCE_DIR}/tests/*.cpp + ) + +############### +set(BUILD_TESTS OFF CACHE BOOL "Enables tests") + +add_library(zxlib STATIC ${ZXLIB_SRC}) +target_include_directories(zxlib PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include) + +enable_testing() + +add_executable(zxlib_tests + ${TESTS_SRC} + ) + +target_include_directories(zxlib_tests PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR}/include + ${gtest_SOURCE_DIR}/include + ${gmock_SOURCE_DIR}/include + ) + +target_link_libraries(zxlib_tests gtest_main zxlib) + +add_test(ZXLIB_TESTS zxlib_tests) diff --git a/deps/ledger-zxlib/LICENSE b/deps/ledger-zxlib/LICENSE new file mode 100644 index 0000000..0fa613e --- /dev/null +++ b/deps/ledger-zxlib/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2018-2020 Zondax GmbH + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/deps/ledger-zxlib/README.md b/deps/ledger-zxlib/README.md new file mode 100644 index 0000000..9dabbf5 --- /dev/null +++ b/deps/ledger-zxlib/README.md @@ -0,0 +1,5 @@ +# ledger-zxlib + +[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) +[![CircleCI](https://circleci.com/gh/Zondax/ledger-zxlib/tree/master.svg?style=shield)](https://circleci.com/gh/Zondax/ledger-zxlib/tree/master) +[![CodeFactor](https://www.codefactor.io/repository/github/zondax/ledger-zxlib/badge)](https://www.codefactor.io/repository/github/zondax/ledger-zxlib) diff --git a/deps/ledger-zxlib/app/common/view.c b/deps/ledger-zxlib/app/common/view.c new file mode 100644 index 0000000..59c36b3 --- /dev/null +++ b/deps/ledger-zxlib/app/common/view.c @@ -0,0 +1,295 @@ +/******************************************************************************* +* (c) 2018, 2019 Zondax GmbH +* (c) 2016 Ledger +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "view.h" +#include "coin.h" +#include "view_internal.h" +#include "crypto.h" + +#include "actions.h" +#include "apdu_codes.h" +#include "ux.h" +#include "bagl.h" +#include "zxmacros.h" +#include "view_templates.h" +#include "tx.h" +#include "addr.h" +#include "app_mode.h" +#include "zxerror.h" + +#include +#include +#include + +view_t viewdata; + +void h_approve(unsigned int _) { + zemu_log_stack("h_approve"); + + UNUSED(_); + view_idle_show(0, NULL); + UX_WAIT(); + if (viewdata.viewfuncAccept != NULL) { + viewdata.viewfuncAccept(); + } +} + +void h_reject(unsigned int _) { + zemu_log_stack("h_reject"); + + UNUSED(_); + view_idle_show(0, NULL); + UX_WAIT(); + app_reject(); +} + +void h_error_accept(unsigned int _) { + UNUSED(_); + view_idle_show(0, NULL); + UX_WAIT(); + app_reply_error(); +} + +/////////////////////////////////// +// Paging related + +void h_paging_init() { + zemu_log_stack("h_paging_init"); + + viewdata.itemIdx = 0; + viewdata.pageIdx = 0; + viewdata.pageCount = 1; +} + +bool h_paging_can_increase() { + if (viewdata.pageIdx + 1 < viewdata.pageCount) { + zemu_log_stack("h_paging_can_increase"); + return true; + } + + // passed page count, go to next index + if (viewdata.itemCount > 0 && viewdata.itemIdx < (viewdata.itemCount - 1 + INCLUDE_ACTIONS_COUNT)) { + zemu_log_stack("h_paging_can_increase"); + return true; + } + + zemu_log_stack("h_paging_can_increase NO"); + return false; +} + +void h_paging_increase() { + zemu_log_stack("h_paging_increase"); + + if (viewdata.pageIdx + 1 < viewdata.pageCount) { + // increase page + viewdata.pageIdx++; + return; + } + + // passed page count, go to next index + if (viewdata.itemCount > 0 && viewdata.itemIdx < (viewdata.itemCount - 1 + INCLUDE_ACTIONS_COUNT)) { + viewdata.itemIdx++; + viewdata.pageIdx = 0; + } +} + +bool h_paging_can_decrease() { + if (viewdata.pageIdx != 0) { + zemu_log_stack("h_paging_can_decrease"); + return true; + } + + if (viewdata.itemIdx > 0) { + zemu_log_stack("h_paging_can_decrease"); + return true; + } + + zemu_log_stack("h_paging_can_decrease NO"); + return false; +} + +void h_paging_decrease() { + char buffer[50]; + snprintf(buffer, sizeof(buffer), "h_paging_decrease Idx %d", viewdata.itemIdx); + zemu_log_stack(buffer); + + if (viewdata.pageIdx != 0) { + viewdata.pageIdx--; + zemu_log_stack("page--"); + return; + } + + if (viewdata.itemIdx > 0) { + viewdata.itemIdx--; + zemu_log_stack("item--"); + // jump to last page. update will cap this value + viewdata.pageIdx = 255; + } +} + +/////////////////////////////////// +// Paging related + +#ifdef INCLUDE_ACTIONS_AS_ITEMS +bool is_accept_item(){ + return viewdata.itemIdx == viewdata.itemCount - 1; +} + +void set_accept_item(){ + viewdata.itemIdx = viewdata.itemCount - 1; + viewdata.pageIdx = 0; +} + +bool is_reject_item(){ + return viewdata.itemIdx == viewdata.itemCount; +} +#endif + +void h_review_action() { +#ifdef INCLUDE_ACTIONS_AS_ITEMS + if( is_accept_item() ){ + zemu_log_stack("action_accept"); + h_approve(1); + return; + } + + if( is_reject_item() ){ + zemu_log_stack("action_reject"); + h_reject(1); + return; + } + + zemu_log_stack("quick accept"); + if (app_mode_expert()) { + set_accept_item(); + h_review_update(); + return; + } +#endif +}; + +zxerr_t h_review_update_data() { + if (viewdata.viewfuncGetNumItems == NULL) { + zemu_log_stack("h_review_update_data - GetNumItems==NULL"); + return zxerr_no_data; + } + + char buffer[20]; + snprintf(buffer, sizeof(buffer), "update Idx %d/%d", viewdata.itemIdx, viewdata.pageIdx); + zemu_log_stack(buffer); + +#ifdef INCLUDE_ACTIONS_AS_ITEMS + viewdata.pageCount = 1; + + if( is_accept_item() ){ + snprintf(viewdata.key, MAX_CHARS_PER_KEY_LINE, "%s",""); + snprintf(viewdata.value, MAX_CHARS_PER_VALUE1_LINE, "%s", APPROVE_LABEL); + splitValueField(); + zemu_log_stack("show_accept_action - accept item"); + viewdata.pageIdx = 0; + return zxerr_ok; + } + + if( is_reject_item() ){ + snprintf(viewdata.key, MAX_CHARS_PER_KEY_LINE, "%s", ""); + snprintf(viewdata.value, MAX_CHARS_PER_VALUE1_LINE, "%s", REJECT_LABEL); + splitValueField(); + zemu_log_stack("show_reject_action - reject item"); + viewdata.pageIdx = 0; + return zxerr_ok; + } +#endif + + do { + viewdata.pageCount = 1; + CHECK_ZXERR(viewdata.viewfuncGetNumItems(&viewdata.itemCount)) + + // be sure we are not out of bounds + CHECK_ZXERR(viewdata.viewfuncGetItem( + viewdata.itemIdx, + viewdata.key, MAX_CHARS_PER_KEY_LINE, + viewdata.value, MAX_CHARS_PER_VALUE1_LINE, + 0, &viewdata.pageCount)) + if (viewdata.pageCount != 0 && viewdata.pageIdx > viewdata.pageCount) { + // try again and get last page + viewdata.pageIdx = viewdata.pageCount - 1; + } + CHECK_ZXERR(viewdata.viewfuncGetItem( + viewdata.itemIdx, + viewdata.key, MAX_CHARS_PER_KEY_LINE, + viewdata.value, MAX_CHARS_PER_VALUE1_LINE, + viewdata.pageIdx, &viewdata.pageCount)) + + viewdata.itemCount++; + + if (viewdata.pageCount > 1) { + uint8_t keyLen = strlen(viewdata.key); + if (keyLen < MAX_CHARS_PER_KEY_LINE) { + snprintf(viewdata.key + keyLen, MAX_CHARS_PER_KEY_LINE - keyLen, " [%d/%d]", viewdata.pageIdx + 1, + viewdata.pageCount); + } + } + + if (viewdata.pageCount == 0) { + h_paging_increase(); + } + } while (viewdata.pageCount == 0); + + splitValueField(); + return zxerr_ok; +} + +/////////////////////////////////// +// General + +void io_seproxyhal_display(const bagl_element_t *element) { + io_seproxyhal_display_default((bagl_element_t *) element); +} + +void view_init(void) { + UX_INIT(); +#ifdef APP_SECRET_MODE_ENABLED + viewdata.secret_click_count = 0; +#endif +} + +void view_idle_show(uint8_t item_idx, char *statusString) { + view_idle_show_impl(item_idx, statusString); +} + +void view_message_show(char *title, char *message) { + view_message_impl(title, message); +} + +void view_review_init(viewfunc_getItem_t viewfuncGetItem, + viewfunc_getNumItems_t viewfuncGetNumItems, + viewfunc_accept_t viewfuncAccept) { + viewdata.viewfuncGetItem = viewfuncGetItem; + viewdata.viewfuncGetNumItems = viewfuncGetNumItems; + viewdata.viewfuncAccept = viewfuncAccept; +} + +void view_review_show() { + view_review_show_impl(); +} + +void view_error_show() { + snprintf(viewdata.key, MAX_CHARS_PER_KEY_LINE, "ERROR"); + snprintf(viewdata.value, MAX_CHARS_PER_VALUE1_LINE, "SHOWING DATA"); + splitValueField(); + view_error_show_impl(); +} diff --git a/deps/ledger-zxlib/app/common/view.h b/deps/ledger-zxlib/app/common/view.h new file mode 100644 index 0000000..21a3e42 --- /dev/null +++ b/deps/ledger-zxlib/app/common/view.h @@ -0,0 +1,59 @@ +/******************************************************************************* +* (c) 2018-2020 Zondax GmbH +* (c) 2016 Ledger +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#pragma once + +#include +#include "coin.h" +#include "zxerror.h" + +#if defined(LEDGER_SPECIFIC) +#include "bolos_target.h" +#if defined(BOLOS_SDK) +#include "os.h" +#include "cx.h" +#endif +#endif + +typedef zxerr_t (*viewfunc_getNumItems_t)(uint8_t *num_items); + +typedef zxerr_t (*viewfunc_getItem_t)(int8_t displayIdx, + char *outKey, uint16_t outKeyLen, + char *outVal, uint16_t outValLen, + uint8_t pageIdx, uint8_t *pageCount); + +typedef void (*viewfunc_accept_t)(); + +#ifdef APP_SECRET_MODE_ENABLED +zxerr_t secret_enabled(); +#endif + +/// view_init (initializes UI) +void view_init(); + +/// view_idle_show (idle view - main menu + status) +void view_idle_show(uint8_t item_idx, char *statusString); + +void view_message_show(char *title, char *message); + +/// view_error (error view) +void view_error_show(); + +void view_review_init(viewfunc_getItem_t viewfuncGetItem, + viewfunc_getNumItems_t viewfuncGetNumItems, + viewfunc_accept_t viewfuncAccept); + +void view_review_show(); diff --git a/deps/ledger-zxlib/app/common/view_internal.h b/deps/ledger-zxlib/app/common/view_internal.h new file mode 100644 index 0000000..d946838 --- /dev/null +++ b/deps/ledger-zxlib/app/common/view_internal.h @@ -0,0 +1,127 @@ +/******************************************************************************* +* (c) 2019 Zondax GmbH +* (c) 2016 Ledger +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#pragma once + +#include +#include +#include "coin.h" +#include "zxerror.h" +#include "view.h" + +#define CUR_FLOW G_ux.flow_stack[G_ux.stack_count-1] + +#if defined(TARGET_NANOX) +#define MAX_CHARS_PER_KEY_LINE 64 +#define MAX_CHARS_PER_VALUE1_LINE 4096 +#define MAX_CHARS_HEXMESSAGE 160 +#else +#define MAX_CHARS_PER_KEY_LINE (17+1) +#define MAX_CHARS_PER_VALUE_LINE (17) +#define MAX_CHARS_PER_VALUE1_LINE (2*MAX_CHARS_PER_VALUE_LINE+1) +#define MAX_CHARS_PER_VALUE2_LINE (MAX_CHARS_PER_VALUE_LINE+1) +#define MAX_CHARS_HEXMESSAGE 40 +#endif + +// This takes data from G_io_apdu_buffer that is prefilled with the address + +#define APPROVE_LABEL "APPROVE" +#define REJECT_LABEL "REJECT" + +#if defined(TARGET_NANOS) +#define INCLUDE_ACTIONS_AS_ITEMS 2 +#define INCLUDE_ACTIONS_COUNT (INCLUDE_ACTIONS_AS_ITEMS-1) +#else +#define INCLUDE_ACTIONS_COUNT 0 +#endif + +typedef struct { + struct { + char key[MAX_CHARS_PER_KEY_LINE]; + char value[MAX_CHARS_PER_VALUE1_LINE]; +#if defined(TARGET_NANOS) + char value2[MAX_CHARS_PER_VALUE2_LINE]; +#endif + }; + viewfunc_getItem_t viewfuncGetItem; + viewfunc_getNumItems_t viewfuncGetNumItems; + viewfunc_accept_t viewfuncAccept; + +#ifdef APP_SECRET_MODE_ENABLED + uint8_t secret_click_count; +#endif + uint8_t itemIdx; + uint8_t itemCount; + uint8_t pageIdx; + uint8_t pageCount; +} view_t; + +typedef enum { + view_action_unknown, + view_action_accept, + view_action_reject, +} view_action_t; + +extern view_t viewdata; + +#define print_title(...) snprintf(viewdata.title, sizeof(viewdata.title), __VA_ARGS__) +#define print_key(...) snprintf(viewdata.key, sizeof(viewdata.key), __VA_ARGS__); +#define print_value(...) snprintf(viewdata.value, sizeof(viewdata.value), __VA_ARGS__); + +#if defined(TARGET_NANOS) +#define print_value2(...) snprintf(viewdata.value2, sizeof(viewdata.value2), __VA_ARGS__); +#endif + +void splitValueField(); + +/////////////////////////////////////////////// +/////////////////////////////////////////////// +/////////////////////////////////////////////// +/////////////////////////////////////////////// +/////////////////////////////////////////////// +/////////////////////////////////////////////// +/////////////////////////////////////////////// +/////////////////////////////////////////////// + +void view_idle_show_impl(uint8_t item_idx, char *statusString); + +void view_message_impl(char *title, char *message); + +void view_error_show_impl(); + +void h_paging_init(); + +bool h_paging_can_increase(); + +void h_paging_increase(); + +bool h_paging_can_decrease(); + +void h_paging_decrease(); + +void view_review_show_impl(); + +void h_approve(unsigned int _); + +void h_reject(unsigned int _); + +void h_review_action(); + +void h_review_update(); + +void h_error_accept(unsigned int _); + +zxerr_t h_review_update_data(); diff --git a/deps/ledger-zxlib/app/common/view_s.c b/deps/ledger-zxlib/app/common/view_s.c new file mode 100644 index 0000000..474257e --- /dev/null +++ b/deps/ledger-zxlib/app/common/view_s.c @@ -0,0 +1,277 @@ +/******************************************************************************* +* (c) 2018, 2019 Zondax GmbH +* (c) 2016 Ledger +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "app_mode.h" +#include "view.h" +#include "view_internal.h" +#include "apdu_codes.h" +#include "ux.h" +#include "bagl.h" +#include "zxmacros.h" +#include "view_templates.h" + +#include +#include + +#if defined(TARGET_NANOS) + +void h_expert_toggle(); +void h_expert_update(); +void h_review_button_left(); +void h_review_button_right(); +void h_review_button_both(); + +#ifdef APP_SECRET_MODE_ENABLED +void h_secret_click(); +#endif + +ux_state_t ux; + +void os_exit(uint32_t id) { + os_sched_exit(0); +} + +const ux_menu_entry_t menu_main[] = { + {NULL, NULL, 0, &C_icon_app, MENU_MAIN_APP_LINE1, viewdata.key, 33, 12}, + {NULL, h_expert_toggle, 0, &C_icon_app, "Expert mode:", viewdata.value, 33, 12}, + {NULL, NULL, 0, &C_icon_app, APPVERSION_LINE1, APPVERSION_LINE2, 33, 12}, + + {NULL, +#ifdef APP_SECRET_MODE_ENABLED + h_secret_click, +#else + NULL, +#endif + 0, &C_icon_app, "Developed by:", "Zondax.ch", 33, 12}, + + {NULL, NULL, 0, &C_icon_app, "Developed by:", "Zondax.ch", 33, 12}, + {NULL, NULL, 0, &C_icon_app, "License: ", "Apache 2.0", 33, 12}, + {NULL, os_exit, 0, &C_icon_dashboard, "Quit", NULL, 50, 29}, + UX_MENU_END +}; + +static const bagl_element_t view_message[] = { + UI_BACKGROUND, + UI_LabelLine(UIID_LABEL + 0, 0, 8, UI_SCREEN_WIDTH, UI_11PX, UI_WHITE, UI_BLACK, viewdata.key), + UI_LabelLine(UIID_LABEL + 1, 0, 19, UI_SCREEN_WIDTH, UI_11PX, UI_WHITE, UI_BLACK, viewdata.value), +}; + +static const bagl_element_t view_review[] = { + UI_BACKGROUND_LEFT_RIGHT_ICONS, + UI_LabelLine(UIID_LABEL + 0, 0, 8, UI_SCREEN_WIDTH, UI_11PX, UI_WHITE, UI_BLACK, viewdata.key), + UI_LabelLine(UIID_LABEL + 1, 0, 19, UI_SCREEN_WIDTH, UI_11PX, UI_WHITE, UI_BLACK, viewdata.value), + UI_LabelLine(UIID_LABEL + 2, 0, 30, UI_SCREEN_WIDTH, UI_11PX, UI_WHITE, UI_BLACK, viewdata.value2), +}; + +static const bagl_element_t view_error[] = { + UI_FillRectangle(0, 0, 0, UI_SCREEN_WIDTH, UI_SCREEN_HEIGHT, 0x000000, 0xFFFFFF), + UI_Icon(0, 128 - 7, 0, 7, 7, BAGL_GLYPH_ICON_CHECK), + UI_LabelLine(UIID_LABEL + 0, 0, 8, UI_SCREEN_WIDTH, UI_11PX, UI_WHITE, UI_BLACK, viewdata.key), + UI_LabelLine(UIID_LABEL + 0, 0, 19, UI_SCREEN_WIDTH, UI_11PX, UI_WHITE, UI_BLACK, viewdata.value), + UI_LabelLineScrolling(UIID_LABELSCROLL, 0, 30, 128, UI_11PX, UI_WHITE, UI_BLACK, viewdata.value2), +}; + +static unsigned int view_error_button(unsigned int button_mask, unsigned int button_mask_counter) { + switch (button_mask) { + case BUTTON_EVT_RELEASED | BUTTON_LEFT | BUTTON_RIGHT: + case BUTTON_EVT_RELEASED | BUTTON_LEFT: + break; + case BUTTON_EVT_RELEASED | BUTTON_RIGHT: + h_error_accept(0); + break; + } + return 0; +} + +static unsigned int view_message_button(unsigned int button_mask, unsigned int button_mask_counter) { + switch (button_mask) { + case BUTTON_EVT_RELEASED | BUTTON_LEFT | BUTTON_RIGHT: + case BUTTON_EVT_RELEASED | BUTTON_LEFT: + case BUTTON_EVT_RELEASED | BUTTON_RIGHT: + break; + } + return 0; +} + +static unsigned int view_review_button(unsigned int button_mask, unsigned int button_mask_counter) { + switch (button_mask) { + case BUTTON_EVT_RELEASED | BUTTON_LEFT | BUTTON_RIGHT: + h_review_button_both(); + break; + case BUTTON_EVT_RELEASED | BUTTON_LEFT: + // Press left to progress to the previous element + h_review_button_left(); + break; + + case BUTTON_EVT_RELEASED | BUTTON_RIGHT: + // Press right to progress to the next element + h_review_button_right(); + break; + } + return 0; +} + +const bagl_element_t *view_prepro(const bagl_element_t *element) { + switch (element->component.userid) { + case UIID_ICONLEFT: + if (!h_paging_can_decrease()){ + return NULL; + } + UX_CALLBACK_SET_INTERVAL(2000); + break; + case UIID_ICONRIGHT: + if (!h_paging_can_increase()){ + return NULL; + } + UX_CALLBACK_SET_INTERVAL(2000); + break; + case UIID_LABELSCROLL: + UX_CALLBACK_SET_INTERVAL( + MAX(3000, 1000 + bagl_label_roundtrip_duration_ms(element, 7)) + ); + break; + } + return element; +} + +const bagl_element_t *view_prepro_idle(const bagl_element_t *element) { + switch (element->component.userid) { + case UIID_ICONLEFT: + case UIID_ICONRIGHT: + return NULL; + } + return element; +} + +void h_review_update() { + zxerr_t err = h_review_update_data(); + switch(err) { + case zxerr_ok: + UX_DISPLAY(view_review, view_prepro); + break; + default: + view_error_show(); + UX_WAIT(); + break; + } +} + +void h_review_button_left() { + zemu_log_stack("h_review_button_left"); + h_paging_decrease(); + h_review_update(); +} + +void h_review_button_right() { + zemu_log_stack("h_review_button_right"); + h_paging_increase(); + h_review_update(); +} + +void h_review_button_both() { + zemu_log_stack("h_review_button_left"); + h_review_action(); +} + +void splitValueField() { + print_value2(""); + uint16_t vlen = strlen(viewdata.value); + if (vlen > MAX_CHARS_PER_VALUE2_LINE - 1) { + strcpy(viewdata.value2, viewdata.value + MAX_CHARS_PER_VALUE_LINE); + viewdata.value[MAX_CHARS_PER_VALUE_LINE] = 0; + } +} + +////////////////////////// +////////////////////////// +////////////////////////// +////////////////////////// +////////////////////////// + +void view_idle_show_impl(uint8_t item_idx, char *statusString) { + if (statusString == NULL ) { + snprintf(viewdata.key, MAX_CHARS_PER_VALUE_LINE, "%s", MENU_MAIN_APP_LINE2); +#ifdef APP_SECRET_MODE_ENABLED + if (app_mode_secret()) { + snprintf(viewdata.key, MAX_CHARS_PER_VALUE_LINE, "%s", MENU_MAIN_APP_LINE2_SECRET); + } +#endif + } else { + snprintf(viewdata.key, MAX_CHARS_PER_VALUE_LINE, "%s", statusString); + } + h_expert_update(); + UX_MENU_DISPLAY(item_idx, menu_main, NULL); +} + +void view_message_impl(char *title, char *message) { + snprintf(viewdata.key, MAX_CHARS_PER_VALUE_LINE, "%s", title); + snprintf(viewdata.value, MAX_CHARS_PER_VALUE_LINE, "%s", message); + UX_DISPLAY(view_message, view_prepro_idle); +} + +void view_error_show_impl() { + UX_DISPLAY(view_error, view_prepro); +} + +void h_expert_toggle() { + app_mode_set_expert(!app_mode_expert()); + view_idle_show(1, NULL); +} + +#ifdef APP_SECRET_MODE_ENABLED +void h_secret_click() { + if (COIN_SECRET_REQUIRED_CLICKS == 0) { + // There is no secret mode + return; + } + + viewdata.secret_click_count++; + + char buffer[50]; + snprintf(buffer, sizeof(buffer), "secret click %d\n", viewdata.secret_click_count); + zemu_log(buffer); + + if (viewdata.secret_click_count >= COIN_SECRET_REQUIRED_CLICKS) { + secret_enabled(); + viewdata.secret_click_count = 0; + } +} +#endif + +void h_expert_update() { + snprintf(viewdata.value, MAX_CHARS_PER_VALUE_LINE, "disabled"); + if (app_mode_expert()) { + snprintf(viewdata.value, MAX_CHARS_PER_VALUE_LINE, "enabled"); + } +} + +void view_review_show_impl() { + zemu_log_stack("view_review_show_impl"); + + h_paging_init(); + + zxerr_t err = h_review_update_data(); + switch(err) { + case zxerr_ok: + UX_DISPLAY(view_review, view_prepro); + break; + default: + view_error_show(); + break; + } +} +#endif diff --git a/deps/ledger-zxlib/app/common/view_x.c b/deps/ledger-zxlib/app/common/view_x.c new file mode 100644 index 0000000..58ce39d --- /dev/null +++ b/deps/ledger-zxlib/app/common/view_x.c @@ -0,0 +1,265 @@ +/******************************************************************************* +* (c) 2018, 2019 Zondax GmbH +* (c) 2016 Ledger +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "app_mode.h" +#include "view.h" +#include "view_internal.h" +#include "actions.h" +#include "apdu_codes.h" +#include "glyphs.h" +#include "bagl.h" +#include "zxmacros.h" +#include "view_templates.h" +#include "tx.h" + +#ifdef APP_SECRET_MODE_ENABLED +#include "secret.h" +#endif + +#include +#include + +#if defined(TARGET_NANOX) + +void h_expert_toggle(); +void h_expert_update(); +void h_review_loop_start(); +void h_review_loop_inside(); +void h_review_loop_end(); + +#ifdef APP_SECRET_MODE_ENABLED +void h_secret_click(); +#endif + +#include "ux.h" +ux_state_t G_ux; +bolos_ux_params_t G_ux_params; +uint8_t flow_inside_loop; + + +UX_STEP_NOCB(ux_idle_flow_1_step, pbb, { &C_icon_app, MENU_MAIN_APP_LINE1, viewdata.key,}); +UX_STEP_CB_INIT(ux_idle_flow_2_step, bn, h_expert_update(), h_expert_toggle(), { "Expert mode:", viewdata.value, }); +UX_STEP_NOCB(ux_idle_flow_3_step, bn, { APPVERSION_LINE1, APPVERSION_LINE2, }); + +#ifdef APP_SECRET_MODE_ENABLED +UX_STEP_CB(ux_idle_flow_4_step, bn, h_secret_click(), { "Developed by:", "Zondax.ch", }); +#else +UX_STEP_NOCB(ux_idle_flow_4_step, bn, { "Developed by:", "Zondax.ch", }); +#endif + +UX_STEP_NOCB(ux_idle_flow_5_step, bn, { "License:", "Apache 2.0", }); +UX_STEP_CB(ux_idle_flow_6_step, pb, os_sched_exit(-1), { &C_icon_dashboard, "Quit",}); + +const ux_flow_step_t *const ux_idle_flow [] = { + &ux_idle_flow_1_step, + &ux_idle_flow_2_step, + &ux_idle_flow_3_step, + &ux_idle_flow_4_step, + &ux_idle_flow_5_step, + &ux_idle_flow_6_step, + FLOW_END_STEP, +}; + +/////////// + +UX_STEP_NOCB(ux_error_flow_1_step, bnnn_paging, { .title = viewdata.key, .text = viewdata.value, }); +UX_STEP_VALID(ux_error_flow_2_step, pb, h_error_accept(0), { &C_icon_validate_14, "Ok"}); + +UX_FLOW( + ux_error_flow, + &ux_error_flow_1_step, + &ux_error_flow_2_step +); + +/////////// + +UX_FLOW_DEF_NOCB(ux_review_flow_1_review_title, pbb, { &C_icon_app, "Please", "review",}); +UX_STEP_INIT(ux_review_flow_2_start_step, NULL, NULL, { h_review_loop_start(); }); +UX_STEP_NOCB_INIT(ux_review_flow_2_step, bnnn_paging, { h_review_loop_inside(); }, { .title = viewdata.key, .text = viewdata.value, }); +UX_STEP_INIT(ux_review_flow_2_end_step, NULL, NULL, { h_review_loop_end(); }); +UX_STEP_VALID(ux_review_flow_3_step, pb, h_approve(0), { &C_icon_validate_14, APPROVE_LABEL }); +UX_STEP_VALID(ux_review_flow_4_step, pb, h_reject(0), { &C_icon_crossmark, REJECT_LABEL }); + +const ux_flow_step_t *const ux_review_flow[] = { + &ux_review_flow_1_review_title, + &ux_review_flow_2_start_step, + &ux_review_flow_2_step, + &ux_review_flow_2_end_step, + &ux_review_flow_3_step, + &ux_review_flow_4_step, + FLOW_END_STEP, +}; + +////////////////////////// +////////////////////////// +////////////////////////// +////////////////////////// +////////////////////////// + +void h_review_update() { + zxerr_t err = h_review_update_data(); + switch(err) { + case zxerr_ok: + case zxerr_no_data: + break; + default: + view_error_show(); + break; + } +} + +void h_review_loop_start() { + if (flow_inside_loop) { + // coming from right + + if (!h_paging_can_decrease()) { + // exit to the left + flow_inside_loop = 0; + ux_flow_prev(); + return; + } + + h_paging_decrease(); + } else { + // coming from left + h_paging_init(); + } + + h_review_update(); + + ux_flow_next(); +} + +void h_review_loop_inside() { + flow_inside_loop = 1; +} + +void h_review_loop_end() { + if (flow_inside_loop) { + // coming from left + h_paging_increase(); + zxerr_t err = h_review_update_data(); + + switch(err) { + case zxerr_ok: + ux_layout_bnnn_paging_reset(); + break; + case zxerr_no_data: { + flow_inside_loop = 0; + ux_flow_next(); + return; + } + default: + view_error_show(); + break; + } + } else { + // coming from right + h_paging_decrease(); + h_review_update(); + } + + // move to prev flow but trick paging to show first page + CUR_FLOW.prev_index = CUR_FLOW.index-2; + CUR_FLOW.index--; + ux_flow_relayout(); +} + +void splitValueField() { + uint16_t vlen = strlen(viewdata.value); + if (vlen == 0 ) { + strcpy(viewdata.value, " "); + } +} + +void h_expert_toggle() { + app_mode_set_expert(!app_mode_expert()); + ux_flow_init(0, ux_idle_flow, &ux_idle_flow_2_step); +} + +void h_expert_update() { + snprintf(viewdata.value, MAX_CHARS_PER_VALUE1_LINE, "disabled"); + if (app_mode_expert()) { + snprintf(viewdata.value, MAX_CHARS_PER_VALUE1_LINE, "enabled"); + } +} + +#ifdef APP_SECRET_MODE_ENABLED +void h_secret_click() { + if (COIN_SECRET_REQUIRED_CLICKS == 0) { + // There is no secret mode + return; + } + + viewdata.secret_click_count++; + + char buffer[50]; + snprintf(buffer, sizeof(buffer), "secret click %d\n", viewdata.secret_click_count); + zemu_log(buffer); + + if (viewdata.secret_click_count >= COIN_SECRET_REQUIRED_CLICKS) { + secret_enabled(); + viewdata.secret_click_count = 0; + return; + } + + ux_flow_init(0, ux_idle_flow, &ux_idle_flow_4_step); +} +#endif + +////////////////////////// +////////////////////////// +////////////////////////// +////////////////////////// +////////////////////////// + +void view_idle_show_impl(uint8_t item_idx, char *statusString) { + if (statusString == NULL ) { + if (app_mode_secret()) { + snprintf(viewdata.key, MAX_CHARS_PER_KEY_LINE, "%s", MENU_MAIN_APP_LINE2_SECRET); + } else { + snprintf(viewdata.key, MAX_CHARS_PER_KEY_LINE, "%s", MENU_MAIN_APP_LINE2); + } + } else { + snprintf(viewdata.key, MAX_CHARS_PER_KEY_LINE, "%s", statusString); + } + + if(G_ux.stack_count == 0) { + ux_stack_push(); + } + ux_flow_init(0, ux_idle_flow, NULL); +} + +void view_review_show_impl(){ + h_paging_init(); + h_paging_decrease(); + //// + flow_inside_loop = 0; + if(G_ux.stack_count == 0) { + ux_stack_push(); + } + ux_flow_init(0, ux_review_flow, NULL); +} + +void view_error_show_impl() { + ux_layout_bnnn_paging_reset(); + if(G_ux.stack_count == 0) { + ux_stack_push(); + } + ux_flow_init(0, ux_error_flow, NULL); +} +#endif diff --git a/deps/ledger-zxlib/cmake/gtest/CMakeLists.txt b/deps/ledger-zxlib/cmake/gtest/CMakeLists.txt new file mode 100644 index 0000000..4f7a8ee --- /dev/null +++ b/deps/ledger-zxlib/cmake/gtest/CMakeLists.txt @@ -0,0 +1,31 @@ +############################## +# Google Test +# Based on instructions in https://github.com/google/googletest/tree/master/googletest#incorporating-into-an-existing-cmake-project +# Download and unpack googletest at configure time +configure_file(CMakeLists.txt.gtest.in ${CMAKE_BINARY_DIR}/googletest-download/CMakeLists.txt) + +execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" . + RESULT_VARIABLE result + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/googletest-download) +if (result) + message(FATAL_ERROR "CMake step for googletest failed: ${result}") +endif () + +execute_process(COMMAND ${CMAKE_COMMAND} --build . + RESULT_VARIABLE result + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/googletest-download) +if (result) + message(FATAL_ERROR "Build step for googletest failed: ${result}") +endif () + +# Prevent overriding the parent project's compiler/linker settings on Windows +set(gtest_force_shared_crt ON CACHE BOOL "" FORCE) + +add_subdirectory( + ${CMAKE_BINARY_DIR}/googletest-src + ${CMAKE_BINARY_DIR}/googletest-build +) + +if (CMAKE_VERSION VERSION_LESS 2.8.11) + include_directories("${gtest_SOURCE_DIR}/include") +endif () diff --git a/deps/ledger-zxlib/cmake/gtest/CMakeLists.txt.gtest.in b/deps/ledger-zxlib/cmake/gtest/CMakeLists.txt.gtest.in new file mode 100644 index 0000000..f074ccf --- /dev/null +++ b/deps/ledger-zxlib/cmake/gtest/CMakeLists.txt.gtest.in @@ -0,0 +1,16 @@ +# Based on https://github.com/google/googletest/tree/master/googletest#incorporating-into-an-existing-cmake-project +cmake_minimum_required(VERSION 2.8.2) + +project(googletest-download NONE) + +include(ExternalProject) +ExternalProject_Add(googletest + GIT_REPOSITORY https://github.com/google/googletest.git + GIT_TAG master + SOURCE_DIR "${CMAKE_BINARY_DIR}/googletest-src" + BINARY_DIR "${CMAKE_BINARY_DIR}/googletest-build" + CONFIGURE_COMMAND "" + BUILD_COMMAND "" + INSTALL_COMMAND "" + TEST_COMMAND "" + ) diff --git a/deps/ledger-zxlib/dockerized_build.mk b/deps/ledger-zxlib/dockerized_build.mk new file mode 100644 index 0000000..79c7aa2 --- /dev/null +++ b/deps/ledger-zxlib/dockerized_build.mk @@ -0,0 +1,287 @@ +#******************************************************************************* +#* (c) 2019-2021 Zondax GmbH +#* +#* Licensed under the Apache License, Version 2.0 (the "License"); +#* you may not use this file except in compliance with the License. +#* You may obtain a copy of the License at +#* +#* http://www.apache.org/licenses/LICENSE-2.0 +#* +#* Unless required by applicable law or agreed to in writing, software +#* distributed under the License is distributed on an "AS IS" BASIS, +#* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +#* See the License for the specific language governing permissions and +#* limitations under the License. +#******************************************************************************** + +.PHONY: all deps build clean load delete check_python show_info_recovery_mode + +TESTS_ZEMU_DIR?=$(CURDIR)/tests_zemu +EXAMPLE_VUE_DIR?=$(CURDIR)/example_vue +TESTS_JS_PACKAGE?= +TESTS_JS_DIR?= + +LEDGER_SRC=$(CURDIR)/app +DOCKER_APP_SRC=/project +DOCKER_APP_BIN=$(DOCKER_APP_SRC)/app/bin/app.elf + +DOCKER_BOLOS_SDKS=/project/deps/nanos-secure-sdk +DOCKER_BOLOS_SDKX=/project/deps/nanox-secure-sdk + +# Note: This is not an SSH key, and being public represents no risk +SCP_PUBKEY=049bc79d139c70c83a4b19e8922e5ee3e0080bb14a2e8b0752aa42cda90a1463f689b0fa68c1c0246845c2074787b649d0d8a6c0b97d4607065eee3057bdf16b83 +SCP_PRIVKEY=ff701d781f43ce106f72dc26a46b6a83e053b5d07bb3d4ceab79c91ca822a66b + +INTERACTIVE:=$(shell [ -t 0 ] && echo 1) +USERID:=$(shell id -u) +$(info USERID : $(USERID)) +$(info TESTS_ZEMU_DIR : $(TESTS_ZEMU_DIR)) +$(info EXAMPLE_VUE_DIR : $(EXAMPLE_VUE_DIR)) +$(info TESTS_JS_DIR : $(TESTS_JS_DIR)) +$(info TESTS_JS_PACKAGE : $(TESTS_JS_PACKAGE)) + +DOCKER_IMAGE=zondax/builder-bolos@sha256:0e0097c01ef3c6c964fea8d8b6e3a584f4ff209a04ec68b6b2b4aeab64379c23 + +ifdef INTERACTIVE +INTERACTIVE_SETTING:="-i" +TTY_SETTING:="-t" +else +INTERACTIVE_SETTING:= +TTY_SETTING:= +endif + +define run_docker + docker run $(TTY_SETTING) $(INTERACTIVE_SETTING) --rm \ + -e SCP_PRIVKEY=$(SCP_PRIVKEY) \ + -e BOLOS_SDK=$(1) \ + -e BOLOS_ENV=/opt/bolos \ + -u $(USERID) \ + -v $(shell pwd):/project \ + -e SUPPORT_SR25519=$(SUPPORT_SR25519) \ + -e SUBSTRATE_PARSER_FULL=$(SUBSTRATE_PARSER_FULL) \ + -e COIN=$(COIN) \ + -e APP_TESTING=$(APP_TESTING) \ + $(DOCKER_IMAGE) "$(2)" +endef + +all: + @$(MAKE) buildS + @$(MAKE) buildX + +.PHONY: check_python +check_python: + @python -c 'import sys; sys.exit(3-sys.version_info.major)' || (echo "The python command does not point to Python 3"; exit 1) + +.PHONY: deps +deps: check_python + @echo "Install dependencies" + $(CURDIR)/deps/ledger-zxlib/scripts/install_deps.sh + +.PHONY: pull +pull: + docker pull $(DOCKER_IMAGE) + +.PHONY: build_rustS +build_rustS: + $(call run_docker,$(DOCKER_BOLOS_SDKS),make -C $(DOCKER_APP_SRC) rust) + +.PHONY: build_rustX +build_rustX: + $(call run_docker,$(DOCKER_BOLOS_SDKX),make -C $(DOCKER_APP_SRC) rust) + +.PHONY: convert_icon +convert_icon: + @convert $(LEDGER_SRC)/tmp.gif -monochrome -size 16x16 -depth 1 $(LEDGER_SRC)/nanos_icon.gif + @convert $(LEDGER_SRC)/nanos_icon.gif -crop 14x14+1+1 +repage -negate $(LEDGER_SRC)/nanox_icon.gif + +.PHONY: buildS +buildS: clean build_rustS + $(call run_docker,$(DOCKER_BOLOS_SDKS),make -j `nproc` -C $(DOCKER_APP_SRC)) + +.PHONY: buildX +buildX: clean build_rustX + $(call run_docker,$(DOCKER_BOLOS_SDKX),make -j `nproc` -C $(DOCKER_APP_SRC)) + +.PHONY: clean +clean: cleanS cleanX + +.PHONY: cleanS +cleanS: + $(call run_docker,$(DOCKER_BOLOS_SDKS),make -C $(DOCKER_APP_SRC) clean) + +.PHONY: cleanX +cleanX: + $(call run_docker,$(DOCKER_BOLOS_SDKX),make -C $(DOCKER_APP_SRC) clean) + +.PHONY: clean_rustS +clean_rustS: + $(call run_docker,$(DOCKER_BOLOS_SDKS),make -C $(DOCKER_APP_SRC) rust_clean) + +.PHONY: clean_rustX +clean_rustX: + $(call run_docker,$(DOCKER_BOLOS_SDKX),make -C $(DOCKER_APP_SRC) rust_clean) + +.PHONY: listvariants +listvariants: + $(call run_docker,$(DOCKER_BOLOS_SDKS),make -C $(DOCKER_APP_SRC) listvariants) + +.PHONY: shellS +shellS: + $(call run_docker,$(DOCKER_BOLOS_SDKS) -t,bash) + +.PHONY: shellX +shellX: + $(call run_docker,$(DOCKER_BOLOS_SDKX) -t,bash) + +.PHONY: load +load: + ${LEDGER_SRC}/pkg/installer_s.sh load + +.PHONY: delete +delete: + ${LEDGER_SRC}/pkg/installer_s.sh delete + +.PHONY: loadX +loadX: + ${LEDGER_SRC}/pkg/installer_x.sh load + +.PHONY: deleteX +deleteX: + ${LEDGER_SRC}/pkg/installer_x.sh delete + +.PHONY: show_info_recovery_mode +show_info_recovery_mode: + @echo "This command requires a Ledger Nano S in recovery mode. To go into recovery mode, follow:" + @echo " 1. Settings -> Device -> Reset all and confirm" + @echo " 2. Unplug device, press and hold the right button, plug-in again" + @echo " 3. Navigate to the main menu" + @echo "If everything was correct, no PIN needs to be entered." + +# This target will initialize the device with the integration testing mnemonic +.PHONY: dev_init +dev_init: show_info_recovery_mode + @echo "Initializing device with test mnemonic! WARNING TAKES 2 MINUTES AND REQUIRES RECOVERY MODE" + @python -m ledgerblue.hostOnboard --apdu --id 0 --prefix "" --passphrase "" --pin 5555 --words "equip will roof matter pink blind book anxiety banner elbow sun young" + +# This target will initialize the device with the secondary integration testing mnemonic (Bob) +.PHONY: dev_init_secondary +dev_init_secondary: check_python show_info_recovery_mode + @echo "Initializing device with secondary test mnemonic! WARNING TAKES 2 MINUTES AND REQUIRES RECOVERY MODE" + @python -m ledgerblue.hostOnboard --apdu --id 0 --prefix "" --passphrase "" --pin 5555 --words "elite vote proof agree february step sibling sand grocery axis false cup" + +# This target will setup a custom developer certificate +.PHONY: dev_ca +dev_ca: check_python + @python -m ledgerblue.setupCustomCA --targetId 0x31100004 --public $(SCP_PUBKEY) --name zondax + +# This target will setup a custom developer certificate +.PHONY: dev_caX +dev_caX: check_python + @python -m ledgerblue.setupCustomCA --targetId 0x33000004 --public $(SCP_PUBKEY) --name zondax + +.PHONY: dev_ca_delete +dev_ca_delete: check_python + @python -m ledgerblue.resetCustomCA --targetId 0x31100004 + +# This target will setup a custom developer certificate +.PHONY: dev_ca2 +dev_ca2: check_python + @python -m ledgerblue.setupCustomCA --targetId 0x33000004 --public $(SCP_PUBKEY) --name zondax + +.PHONY: dev_ca_delete2 +dev_ca_delete2: check_python + @python -m ledgerblue.resetCustomCA --targetId 0x33000004 + +########################## VUE Section ############################### + +.PHONY: vue_install_js_link +ifeq ($(TESTS_JS_DIR),) +vue_install_js_link: + @echo "No local package defined" +else +vue_install_js_link: + # First unlink everything + cd $(TESTS_JS_DIR) && yarn unlink || true + cd $(EXAMPLE_VUE_DIR) && yarn unlink $(TESTS_JS_PACKAGE) || true +# # Now build and link + cd $(TESTS_JS_DIR) && yarn install && yarn build && yarn link || true + cd $(EXAMPLE_VUE_DIR) && yarn link $(TESTS_JS_PACKAGE) && yarn install || true + @echo + # List linked packages + @echo + @cd $(EXAMPLE_VUE_DIR) && ( ls -l node_modules ; ls -l node_modules/@* ) | grep ^l || true + @echo +endif + +.PHONY: vue +vue: vue_install_js_link + cd $(EXAMPLE_VUE_DIR) && yarn install && yarn serve + +########################## VUE Section ############################### + +.PHONY: zemu_install_js_link +ifeq ($(TESTS_JS_DIR),) +zemu_install_js_link: + @echo "No local package defined" +else +zemu_install_js_link: + # First unlink everything + cd $(TESTS_JS_DIR) && yarn unlink || true + cd $(TESTS_ZEMU_DIR) && yarn unlink $(TESTS_JS_PACKAGE) || true + # Now build and link + cd $(TESTS_JS_DIR) && yarn install && yarn build && yarn link || true + cd $(TESTS_ZEMU_DIR) && yarn link $(TESTS_JS_PACKAGE) && yarn install || true + @echo + # List linked packages + @echo + @cd $(TESTS_ZEMU_DIR) && ( ls -l node_modules ; ls -l node_modules/@* ) | grep ^l || true + @echo +endif + +.PHONY: zemu_install +zemu_install: zemu_install_js_link + # and now install everything + cd $(TESTS_ZEMU_DIR) && yarn install + +.PHONY: zemu +zemu: + cd $(TESTS_ZEMU_DIR)/tools && node debug.mjs $(COIN) + +.PHONY: zemu_val +zemu_val: + cd $(TESTS_ZEMU_DIR)/tools && node debug_val.mjs + +.PHONY: zemu_debug +zemu_debug: + cd $(TESTS_ZEMU_DIR)/tools && node debug.mjs $(COIN) debug + +########################## TEST Section ############################### + +.PHONY: zemu_test +zemu_test: + cd $(TESTS_ZEMU_DIR) && yarn test$(COIN) + +.PHONY: rust_test +rust_test: + cd app/rust && cargo test + +.PHONY: cpp_test +cpp_test: + mkdir -p build && cd build && cmake -DCMAKE_BUILD_TYPE=Debug .. && make + cd build && GTEST_COLOR=1 ASAN_OPTIONS=detect_leaks=0 ctest -VV + +########################## FUZZING Section ############################### + +.PHONY: fuzz_build +fuzz_build: + cmake -B build -DCMAKE_C_COMPILER=clang-10 -DCMAKE_CXX_COMPILER=clang++-10 -DCMAKE_BUILD_TYPE=Debug -DENABLE_FUZZING=1 -DENABLE_SANITIZERS=1 -DFUZZ_LOGGING=1 . + make -C build + +.PHONY: fuzz +fuzz: fuzz_build + ./fuzz/run-fuzzers.py + +.PHONY: fuzz_crash +fuzz_crash: FUZZ_LOGGING=1 +fuzz_crash: fuzz_build + ./fuzz/run-fuzz-crashes.py diff --git a/deps/ledger-zxlib/include/apdu_codes.h b/deps/ledger-zxlib/include/apdu_codes.h new file mode 100644 index 0000000..e1c22f5 --- /dev/null +++ b/deps/ledger-zxlib/include/apdu_codes.h @@ -0,0 +1,49 @@ +/******************************************************************************* +* (c) 2018 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#pragma once + +#include "inttypes.h" +#include "zxmacros.h" + +// Based on ISO7816 + +#define APDU_CODE_OK 0x9000 +#define APDU_CODE_BUSY 0x9001 + +#define APDU_CODE_EXECUTION_ERROR 0x6400 + +#define APDU_CODE_WRONG_LENGTH 0x6700 + +#define APDU_CODE_EMPTY_BUFFER 0x6982 +#define APDU_CODE_OUTPUT_BUFFER_TOO_SMALL 0x6983 +#define APDU_CODE_DATA_INVALID 0x6984 +#define APDU_CODE_CONDITIONS_NOT_SATISFIED 0x6985 +#define APDU_CODE_COMMAND_NOT_ALLOWED 0x6986 + +#define APDU_CODE_BAD_KEY_HANDLE 0x6A80 +#define APDU_CODE_INVALIDP1P2 0x6B00 +#define APDU_CODE_INS_NOT_SUPPORTED 0x6D00 +#define APDU_CODE_CLA_NOT_SUPPORTED 0x6E00 + +#define APDU_CODE_UNKNOWN 0x6F00 +#define APDU_CODE_SIGN_VERIFY_ERROR 0x6F01 + + +__Z_INLINE void set_code(uint8_t *buffer, uint8_t offset, uint16_t value) { + *(buffer + offset) = (uint8_t) (value >> 8); + *(buffer + offset + 1) = (uint8_t) (value & 0xFF); +} diff --git a/deps/ledger-zxlib/include/app_mode.h b/deps/ledger-zxlib/include/app_mode.h new file mode 100644 index 0000000..11c72e8 --- /dev/null +++ b/deps/ledger-zxlib/include/app_mode.h @@ -0,0 +1,37 @@ +/******************************************************************************* +* (c) 2016 Ledger +* (c) 2018 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#pragma once +#include "zxmacros.h" +#include "stdbool.h" + +#ifdef __cplusplus +extern "C" { +#endif + +void app_mode_reset(); + +bool app_mode_expert(); + +void app_mode_set_expert(uint8_t val); + +bool app_mode_secret(); + +void app_mode_set_secret(uint8_t val); + +#ifdef __cplusplus +} +#endif diff --git a/deps/ledger-zxlib/include/base58.h b/deps/ledger-zxlib/include/base58.h new file mode 100644 index 0000000..b76412d --- /dev/null +++ b/deps/ledger-zxlib/include/base58.h @@ -0,0 +1,38 @@ +/******************************************************************************* +* Ledger App - Bitcoin Wallet +* (c) 2019 Zondax GmbH +* (c) 2016-2019 Ledger +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#pragma once + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +int decode_base58(const char *in, size_t length, + unsigned char *out, size_t *outlen); + +int encode_base58(const unsigned char *in, size_t length, + unsigned char *out, size_t *outlen); + +char encode_base58_clip(unsigned char v); + +#ifdef __cplusplus +} +#endif diff --git a/deps/ledger-zxlib/include/base64.h b/deps/ledger-zxlib/include/base64.h new file mode 100644 index 0000000..99bc7c0 --- /dev/null +++ b/deps/ledger-zxlib/include/base64.h @@ -0,0 +1,29 @@ +/******************************************************************************* +* (c) 2020 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +uint16_t base64_encode(char *out, uint16_t outlen, const uint8_t *in, uint16_t inlen); + +#ifdef __cplusplus +} +#endif diff --git a/deps/ledger-zxlib/include/bech32.h b/deps/ledger-zxlib/include/bech32.h new file mode 100644 index 0000000..bd9fd14 --- /dev/null +++ b/deps/ledger-zxlib/include/bech32.h @@ -0,0 +1,39 @@ +/******************************************************************************* +* (c) 2019 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +#include "zxerror.h" + +#define MAX_INPUT_SIZE 64 + +// the following function encodes directly from bytes +// it will internally convert from 8 to 5 bits and return a +// zero-terminated string in output + +zxerr_t bech32EncodeFromBytes(char *out, + size_t out_len, + const char *hrp, + const uint8_t *in, + size_t in_len, + uint8_t pad); + +#ifdef __cplusplus +} +#endif diff --git a/deps/ledger-zxlib/include/bignum.h b/deps/ledger-zxlib/include/bignum.h new file mode 100644 index 0000000..9bf31f8 --- /dev/null +++ b/deps/ledger-zxlib/include/bignum.h @@ -0,0 +1,35 @@ +/******************************************************************************* +* (c) 2019 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +bool_t bignumLittleEndian_bcdprint(char *outBuffer, uint16_t outBufferLen, const uint8_t *inBCD, uint16_t inBCDLen); +void bignumLittleEndian_to_bcd(uint8_t *bcdOut, uint16_t bcdOutLen, const uint8_t *binValue, uint16_t binValueLen); + +bool_t bignumBigEndian_bcdprint(char *outBuffer, uint16_t outBufferLen, const uint8_t *bcdIn, uint16_t bcdInLen); +void bignumBigEndian_to_bcd(uint8_t *bcdOut, uint16_t bcdOutLen, const uint8_t *binValue, uint16_t binValueLen); + + +#ifdef __cplusplus +} +#endif diff --git a/deps/ledger-zxlib/include/bittools.h b/deps/ledger-zxlib/include/bittools.h new file mode 100644 index 0000000..1903878 --- /dev/null +++ b/deps/ledger-zxlib/include/bittools.h @@ -0,0 +1,37 @@ +// This code has been adapted from: +/* Copyright (c) 2017 Pieter Wuille + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +int convert_bits(uint8_t *out, + size_t *outlen, + int outBits, + const uint8_t *in, + size_t inLen, + int inBits, int pad); + +#ifdef __cplusplus +} +#endif diff --git a/deps/ledger-zxlib/include/buffering.h b/deps/ledger-zxlib/include/buffering.h new file mode 100644 index 0000000..ec6e80c --- /dev/null +++ b/deps/ledger-zxlib/include/buffering.h @@ -0,0 +1,67 @@ +/******************************************************************************* +* (c) 2016 Ledger +* (c) 2018 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +typedef struct { + uint8_t *data; + uint16_t size; + uint16_t pos; + uint8_t in_use: 1; +} buffer_state_t; + +/// Initialize buffer +/// \param ram_buffer +/// \param ram_buffer_size +/// \param flash_buffer +/// \param flash_buffer_size +void buffering_init(uint8_t *ram_buffer, + uint16_t ram_buffer_size, + uint8_t *flash_buffer, + uint16_t flash_buffer_size); + +/// Reset buffer +void buffering_reset(); + +/// Append data to the buffer +/// \param data +/// \param length +/// \return the number of appended bytes +int buffering_append(uint8_t *data, int length); + +/// buffering_get_ram_buffer +/// \return +buffer_state_t *buffering_get_ram_buffer(); + +/// buffering_get_flash_buffer +/// \return +buffer_state_t *buffering_get_flash_buffer(); + +/// buffering_get_buffer +/// \return +buffer_state_t *buffering_get_buffer(); + +#ifdef __cplusplus +} +#endif diff --git a/deps/ledger-zxlib/include/hexutils.h b/deps/ledger-zxlib/include/hexutils.h new file mode 100644 index 0000000..3cbaad8 --- /dev/null +++ b/deps/ledger-zxlib/include/hexutils.h @@ -0,0 +1,30 @@ +/******************************************************************************* +* (c) 2018 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#pragma once + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +size_t parseHexString(uint8_t *out, uint16_t outLen, const char *input); + +#ifdef __cplusplus +} +#endif diff --git a/deps/ledger-zxlib/include/segwit_addr.h b/deps/ledger-zxlib/include/segwit_addr.h new file mode 100644 index 0000000..e7704ac --- /dev/null +++ b/deps/ledger-zxlib/include/segwit_addr.h @@ -0,0 +1,101 @@ +/* Copyright (c) 2017 Pieter Wuille + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#ifndef _SEGWIT_ADDR_H_ +#define _SEGWIT_ADDR_H_ 1 + +#include + +/** Encode a SegWit address + * + * Out: output: Pointer to a buffer of size 73 + strlen(hrp) that will be + * updated to contain the null-terminated address. + * In: hrp: Pointer to the null-terminated human readable part to use + * (chain/network specific). + * ver: Version of the witness program (between 0 and 16 inclusive). + * prog: Data bytes for the witness program (between 2 and 40 bytes). + * prog_len: Number of data bytes in prog. + * Returns 1 if successful. + */ +int segwit_addr_encode( + char *output, + const char *hrp, + int ver, + const uint8_t *prog, + size_t prog_len +); + +/** Decode a SegWit address + * + * Out: ver: Pointer to an int that will be updated to contain the witness + * program version (between 0 and 16 inclusive). + * prog: Pointer to a buffer of size 40 that will be updated to + * contain the witness program bytes. + * prog_len: Pointer to a size_t that will be updated to contain the length + * of bytes in prog. + * hrp: Pointer to the null-terminated human readable part that is + * expected (chain/network specific). + * addr: Pointer to the null-terminated address. + * Returns 1 if successful. + */ +int segwit_addr_decode( + int* ver, + uint8_t* prog, + size_t* prog_len, + const char* hrp, + const char* addr +); + +/** Encode a Bech32 string + * + * Out: output: Pointer to a buffer of size strlen(hrp) + data_len + 8 that + * will be updated to contain the null-terminated Bech32 string. + * In: hrp : Pointer to the null-terminated human readable part. + * data : Pointer to an array of 5-bit values. + * data_len: Length of the data array. + * Returns 1 if successful. + */ +int bech32_encode( + char *output, + const char *hrp, + const uint8_t *data, + size_t data_len +); + +/** Decode a Bech32 string + * + * Out: hrp: Pointer to a buffer of size strlen(input) - 6. Will be + * updated to contain the null-terminated human readable part. + * data: Pointer to a buffer of size strlen(input) - 8 that will + * hold the encoded 5-bit data values. + * data_len: Pointer to a size_t that will be updated to be the number + * of entries in data. + * In: input: Pointer to a null-terminated Bech32 string. + * Returns 1 if succesful. + */ +int bech32_decode( + char *hrp, + uint8_t *data, + size_t *data_len, + const char *input +); + +#endif diff --git a/deps/ledger-zxlib/include/sigutils.h b/deps/ledger-zxlib/include/sigutils.h new file mode 100644 index 0000000..862f809 --- /dev/null +++ b/deps/ledger-zxlib/include/sigutils.h @@ -0,0 +1,41 @@ +/******************************************************************************* +* (c) 2020 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + no_error = 0, + invalid_derPrefix, + invalid_payloadLen, + invalid_rmaker, + invalid_rLen, + invalid_smarker, + invalid_sLen, +} err_convert_e; + +err_convert_e convertDERtoRSV(const uint8_t *inSignatureDER, + unsigned int inInfo, + uint8_t *outR, + uint8_t *outS, + uint8_t *outV); + +#ifdef __cplusplus +} +#endif diff --git a/deps/ledger-zxlib/include/timeutils.h b/deps/ledger-zxlib/include/timeutils.h new file mode 100644 index 0000000..d291477 --- /dev/null +++ b/deps/ledger-zxlib/include/timeutils.h @@ -0,0 +1,62 @@ +/******************************************************************************* +* (c) 2018 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include "zxmacros.h" +#include "zxerror.h" + +__Z_INLINE const char *getMonth(uint8_t tm_mon) { + switch (tm_mon) { + case 1: + return "Jan"; + case 2: + return "Feb"; + case 3: + return "Mar"; + case 4: + return "Apr"; + case 5: + return "May"; + case 6: + return "Jun"; + case 7: + return "Jul"; + case 8: + return "Aug"; + case 9: + return "Sep"; + case 10: + return "Oct"; + case 11: + return "Nov"; + case 12: + return "Dec"; + default: + return "ERR"; + } +} + +zxerr_t printTime(char *out, uint16_t outLen, uint64_t t); + +#ifdef __cplusplus +} +#endif diff --git a/deps/ledger-zxlib/include/utf8.h b/deps/ledger-zxlib/include/utf8.h new file mode 100644 index 0000000..4a0ca69 --- /dev/null +++ b/deps/ledger-zxlib/include/utf8.h @@ -0,0 +1,1262 @@ +// The latest version of this library is available on GitHub; +// https://github.com/sheredom/utf8.h + +// This is free and unencumbered software released into the public domain. +// +// Anyone is free to copy, modify, publish, use, compile, sell, or +// distribute this software, either in source code form or as a compiled +// binary, for any purpose, commercial or non-commercial, and by any +// means. +// +// In jurisdictions that recognize copyright laws, the author or authors +// of this software dedicate any and all copyright interest in the +// software to the public domain. We make this dedication for the benefit +// of the public at large and to the detriment of our heirs and +// successors. We intend this dedication to be an overt act of +// relinquishment in perpetuity of all present and future rights to this +// software under copyright law. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +// IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +// OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +// ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +// OTHER DEALINGS IN THE SOFTWARE. +// +// For more information, please refer to + +#ifndef SHEREDOM_UTF8_H_INCLUDED +#define SHEREDOM_UTF8_H_INCLUDED + +#if defined(_MSC_VER) +#pragma warning(push) + +// disable 'bytes padding added after construct' warning +#pragma warning(disable : 4820) +#endif + +#include +#include + +#if defined(_MSC_VER) +#pragma warning(pop) +#endif + +#if defined(_MSC_VER) +typedef __int32 utf8_int32_t; +#else +#include +typedef int32_t utf8_int32_t; +#endif + +#if defined(__clang__) +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wold-style-cast" +#pragma clang diagnostic ignored "-Wcast-qual" +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#if defined(__clang__) || defined(__GNUC__) +#define utf8_nonnull __attribute__((nonnull)) +#define utf8_pure __attribute__((pure)) +#define utf8_restrict __restrict__ +#define utf8_weak __attribute__((weak)) +#elif defined(_MSC_VER) +#define utf8_nonnull +#define utf8_pure +#define utf8_restrict __restrict +#define utf8_weak __inline +#else +#error Non clang, non gcc, non MSVC compiler found! +#endif + +#ifdef __cplusplus +#define utf8_null NULL +#else +#define utf8_null 0 +#endif + +// Return less than 0, 0, greater than 0 if src1 < src2, src1 == src2, src1 > +// src2 respectively, case insensitive. +utf8_nonnull utf8_pure utf8_weak int utf8casecmp(const void *src1, + const void *src2); + +// Append the utf8 string src onto the utf8 string dst. +utf8_nonnull utf8_weak void *utf8cat(void *utf8_restrict dst, + const void *utf8_restrict src); + +// Find the first match of the utf8 codepoint chr in the utf8 string src. +utf8_nonnull utf8_pure utf8_weak void *utf8chr(const void *src, + utf8_int32_t chr); + +// Return less than 0, 0, greater than 0 if src1 < src2, +// src1 == src2, src1 > src2 respectively. +utf8_nonnull utf8_pure utf8_weak int utf8cmp(const void *src1, + const void *src2); + +// Copy the utf8 string src onto the memory allocated in dst. +utf8_nonnull utf8_weak void *utf8cpy(void *utf8_restrict dst, + const void *utf8_restrict src); + +// Number of utf8 codepoints in the utf8 string src that consists entirely +// of utf8 codepoints not from the utf8 string reject. +utf8_nonnull utf8_pure utf8_weak size_t utf8cspn(const void *src, + const void *reject); + +// Duplicate the utf8 string src by getting its size, malloc'ing a new buffer +// copying over the data, and returning that. Or 0 if malloc failed. +utf8_nonnull utf8_weak void *utf8dup(const void *src); + +// Number of utf8 codepoints in the utf8 string str, +// excluding the null terminating byte. +utf8_nonnull utf8_pure utf8_weak size_t utf8len(const void *str); + +// Return less than 0, 0, greater than 0 if src1 < src2, src1 == src2, src1 > +// src2 respectively, case insensitive. Checking at most n bytes of each utf8 +// string. +utf8_nonnull utf8_pure utf8_weak int utf8ncasecmp(const void *src1, + const void *src2, size_t n); + +// Append the utf8 string src onto the utf8 string dst, +// writing at most n+1 bytes. Can produce an invalid utf8 +// string if n falls partway through a utf8 codepoint. +utf8_nonnull utf8_weak void *utf8ncat(void *utf8_restrict dst, + const void *utf8_restrict src, size_t n); + +// Return less than 0, 0, greater than 0 if src1 < src2, +// src1 == src2, src1 > src2 respectively. Checking at most n +// bytes of each utf8 string. +utf8_nonnull utf8_pure utf8_weak int utf8ncmp(const void *src1, + const void *src2, size_t n); + +// Copy the utf8 string src onto the memory allocated in dst. +// Copies at most n bytes. If there is no terminating null byte in +// the first n bytes of src, the string placed into dst will not be +// null-terminated. If the size (in bytes) of src is less than n, +// extra null terminating bytes are appended to dst such that at +// total of n bytes are written. Can produce an invalid utf8 +// string if n falls partway through a utf8 codepoint. +utf8_nonnull utf8_weak void *utf8ncpy(void *utf8_restrict dst, + const void *utf8_restrict src, size_t n); + +// Similar to utf8dup, except that at most n bytes of src are copied. If src is +// longer than n, only n bytes are copied and a null byte is added. +// +// Returns a new string if successful, 0 otherwise +utf8_nonnull utf8_weak void *utf8ndup(const void *src, size_t n); + +// Locates the first occurence in the utf8 string str of any byte in the +// utf8 string accept, or 0 if no match was found. +utf8_nonnull utf8_pure utf8_weak void *utf8pbrk(const void *str, + const void *accept); + +// Find the last match of the utf8 codepoint chr in the utf8 string src. +utf8_nonnull utf8_pure utf8_weak void *utf8rchr(const void *src, int chr); + +// Number of bytes in the utf8 string str, +// including the null terminating byte. +utf8_nonnull utf8_pure utf8_weak size_t utf8size(const void *str); + +// Number of utf8 codepoints in the utf8 string src that consists entirely +// of utf8 codepoints from the utf8 string accept. +utf8_nonnull utf8_pure utf8_weak size_t utf8spn(const void *src, + const void *accept); + +// The position of the utf8 string needle in the utf8 string haystack. +utf8_nonnull utf8_pure utf8_weak void *utf8str(const void *haystack, + const void *needle); + +// The position of the utf8 string needle in the utf8 string haystack, case +// insensitive. +utf8_nonnull utf8_pure utf8_weak void *utf8casestr(const void *haystack, + const void *needle); + +// Return 0 on success, or the position of the invalid +// utf8 codepoint on failure. +utf8_nonnull utf8_pure utf8_weak void *utf8valid(const void *str); + +// Sets out_codepoint to the next utf8 codepoint in str, and returns the address +// of the utf8 codepoint after the current one in str. +utf8_nonnull utf8_weak void * +utf8codepoint(const void *utf8_restrict str, + utf8_int32_t *utf8_restrict out_codepoint); + +// Returns the size of the given codepoint in bytes. +utf8_weak size_t utf8codepointsize(utf8_int32_t chr); + +// Write a codepoint to the given string, and return the address to the next +// place after the written codepoint. Pass how many bytes left in the buffer to +// n. If there is not enough space for the codepoint, this function returns +// null. +utf8_nonnull utf8_weak void *utf8catcodepoint(void *utf8_restrict str, + utf8_int32_t chr, size_t n); + +// Returns 1 if the given character is lowercase, or 0 if it is not. +utf8_weak int utf8islower(utf8_int32_t chr); + +// Returns 1 if the given character is uppercase, or 0 if it is not. +utf8_weak int utf8isupper(utf8_int32_t chr); + +// Transform the given string into all lowercase codepoints. +utf8_nonnull utf8_weak void utf8lwr(void *utf8_restrict str); + +// Transform the given string into all uppercase codepoints. +utf8_nonnull utf8_weak void utf8upr(void *utf8_restrict str); + +// Make a codepoint lower case if possible. +utf8_weak utf8_int32_t utf8lwrcodepoint(utf8_int32_t cp); + +// Make a codepoint upper case if possible. +utf8_weak utf8_int32_t utf8uprcodepoint(utf8_int32_t cp); + +#undef utf8_weak +#undef utf8_pure +#undef utf8_nonnull + +int utf8casecmp(const void *src1, const void *src2) { + utf8_int32_t src1_cp, src2_cp, src1_orig_cp, src2_orig_cp; + + for (;;) { + src1 = utf8codepoint(src1, &src1_cp); + src2 = utf8codepoint(src2, &src2_cp); + + // Take a copy of src1 & src2 + src1_orig_cp = src1_cp; + src2_orig_cp = src2_cp; + + // Lower the srcs if required + src1_cp = utf8lwrcodepoint(src1_cp); + src2_cp = utf8lwrcodepoint(src2_cp); + + // Check if the lowered codepoints match + if ((0 == src1_orig_cp) && (0 == src2_orig_cp)) { + return 0; + } else if (src1_cp == src2_cp) { + continue; + } + + // If they don't match, then we return which of the original's are less + if (src1_orig_cp < src2_orig_cp) { + return -1; + } else if (src1_orig_cp > src2_orig_cp) { + return 1; + } + } +} + +void *utf8cat(void *utf8_restrict dst, const void *utf8_restrict src) { + char *d = (char *)dst; + const char *s = (const char *)src; + + // find the null terminating byte in dst + while ('\0' != *d) { + d++; + } + + // overwriting the null terminating byte in dst, append src byte-by-byte + while ('\0' != *s) { + *d++ = *s++; + } + + // write out a new null terminating byte into dst + *d = '\0'; + + return dst; +} + +void *utf8chr(const void *src, utf8_int32_t chr) { + char c[5] = {'\0', '\0', '\0', '\0', '\0'}; + + if (0 == chr) { + // being asked to return position of null terminating byte, so + // just run s to the end, and return! + const char *s = (const char *)src; + while ('\0' != *s) { + s++; + } + return (void *)s; + } else if (0 == ((utf8_int32_t)0xffffff80 & chr)) { + // 1-byte/7-bit ascii + // (0b0xxxxxxx) + c[0] = (char)chr; + } else if (0 == ((utf8_int32_t)0xfffff800 & chr)) { + // 2-byte/11-bit utf8 code point + // (0b110xxxxx 0b10xxxxxx) + c[0] = 0xc0 | (char)(chr >> 6); + c[1] = 0x80 | (char)(chr & 0x3f); + } else if (0 == ((utf8_int32_t)0xffff0000 & chr)) { + // 3-byte/16-bit utf8 code point + // (0b1110xxxx 0b10xxxxxx 0b10xxxxxx) + c[0] = 0xe0 | (char)(chr >> 12); + c[1] = 0x80 | (char)((chr >> 6) & 0x3f); + c[2] = 0x80 | (char)(chr & 0x3f); + } else { // if (0 == ((int)0xffe00000 & chr)) { + // 4-byte/21-bit utf8 code point + // (0b11110xxx 0b10xxxxxx 0b10xxxxxx 0b10xxxxxx) + c[0] = 0xf0 | (char)(chr >> 18); + c[1] = 0x80 | (char)((chr >> 12) & 0x3f); + c[2] = 0x80 | (char)((chr >> 6) & 0x3f); + c[3] = 0x80 | (char)(chr & 0x3f); + } + + // we've made c into a 2 utf8 codepoint string, one for the chr we are + // seeking, another for the null terminating byte. Now use utf8str to + // search + return utf8str(src, c); +} + +int utf8cmp(const void *src1, const void *src2) { + const unsigned char *s1 = (const unsigned char *)src1; + const unsigned char *s2 = (const unsigned char *)src2; + + while (('\0' != *s1) || ('\0' != *s2)) { + if (*s1 < *s2) { + return -1; + } else if (*s1 > *s2) { + return 1; + } + + s1++; + s2++; + } + + // both utf8 strings matched + return 0; +} + +int utf8coll(const void *src1, const void *src2); + +void *utf8cpy(void *utf8_restrict dst, const void *utf8_restrict src) { + char *d = (char *)dst; + const char *s = (const char *)src; + + // overwriting anything previously in dst, write byte-by-byte + // from src + while ('\0' != *s) { + *d++ = *s++; + } + + // append null terminating byte + *d = '\0'; + + return dst; +} + +size_t utf8cspn(const void *src, const void *reject) { + const char *s = (const char *)src; + size_t chars = 0; + + while ('\0' != *s) { + const char *r = (const char *)reject; + size_t offset = 0; + + while ('\0' != *r) { + // checking that if *r is the start of a utf8 codepoint + // (it is not 0b10xxxxxx) and we have successfully matched + // a previous character (0 < offset) - we found a match + if ((0x80 != (0xc0 & *r)) && (0 < offset)) { + return chars; + } else { + if (*r == s[offset]) { + // part of a utf8 codepoint matched, so move our checking + // onwards to the next byte + offset++; + r++; + } else { + // r could be in the middle of an unmatching utf8 code point, + // so we need to march it on to the next character beginning, + + do { + r++; + } while (0x80 == (0xc0 & *r)); + + // reset offset too as we found a mismatch + offset = 0; + } + } + } + + // the current utf8 codepoint in src did not match reject, but src + // could have been partway through a utf8 codepoint, so we need to + // march it onto the next utf8 codepoint starting byte + do { + s++; + } while ((0x80 == (0xc0 & *s))); + chars++; + } + + return chars; +} + +size_t utf8size(const void *str); + +void *utf8dup(const void *src) { + const char *s = (const char *)src; + char *n = utf8_null; + + // figure out how many bytes (including the terminator) we need to copy first + size_t bytes = utf8size(src); + + n = (char *)malloc(bytes); + + if (utf8_null == n) { + // out of memory so we bail + return utf8_null; + } else { + bytes = 0; + + // copy src byte-by-byte into our new utf8 string + while ('\0' != s[bytes]) { + n[bytes] = s[bytes]; + bytes++; + } + + // append null terminating byte + n[bytes] = '\0'; + return n; + } +} + +void *utf8fry(const void *str); + +size_t utf8len(const void *str) { + const unsigned char *s = (const unsigned char *)str; + size_t length = 0; + + while ('\0' != *s) { + if (0xf0 == (0xf8 & *s)) { + // 4-byte utf8 code point (began with 0b11110xxx) + s += 4; + } else if (0xe0 == (0xf0 & *s)) { + // 3-byte utf8 code point (began with 0b1110xxxx) + s += 3; + } else if (0xc0 == (0xe0 & *s)) { + // 2-byte utf8 code point (began with 0b110xxxxx) + s += 2; + } else { // if (0x00 == (0x80 & *s)) { + // 1-byte ascii (began with 0b0xxxxxxx) + s += 1; + } + + // no matter the bytes we marched s forward by, it was + // only 1 utf8 codepoint + length++; + } + + return length; +} + +int utf8ncasecmp(const void *src1, const void *src2, size_t n) { + utf8_int32_t src1_cp, src2_cp, src1_orig_cp, src2_orig_cp; + + do { + const unsigned char *const s1 = (const unsigned char *)src1; + const unsigned char *const s2 = (const unsigned char *)src2; + + // first check that we have enough bytes left in n to contain an entire + // codepoint + if (0 == n) { + return 0; + } + + if ((1 == n) && ((0xc0 == (0xe0 & *s1)) || (0xc0 == (0xe0 & *s2)))) { + const utf8_int32_t c1 = (0xe0 & *s1); + const utf8_int32_t c2 = (0xe0 & *s2); + + if (c1 < c2) { + return -1; + } else if (c1 > c2) { + return 1; + } else { + return 0; + } + } + + if ((2 >= n) && ((0xe0 == (0xf0 & *s1)) || (0xe0 == (0xf0 & *s2)))) { + const utf8_int32_t c1 = (0xf0 & *s1); + const utf8_int32_t c2 = (0xf0 & *s2); + + if (c1 < c2) { + return -1; + } else if (c1 > c2) { + return 1; + } else { + return 0; + } + } + + if ((3 >= n) && ((0xf0 == (0xf8 & *s1)) || (0xf0 == (0xf8 & *s2)))) { + const utf8_int32_t c1 = (0xf8 & *s1); + const utf8_int32_t c2 = (0xf8 & *s2); + + if (c1 < c2) { + return -1; + } else if (c1 > c2) { + return 1; + } else { + return 0; + } + } + + src1 = utf8codepoint(src1, &src1_cp); + src2 = utf8codepoint(src2, &src2_cp); + n -= utf8codepointsize(src1_cp); + + // Take a copy of src1 & src2 + src1_orig_cp = src1_cp; + src2_orig_cp = src2_cp; + + // Lower srcs if required + src1_cp = utf8lwrcodepoint(src1_cp); + src2_cp = utf8lwrcodepoint(src2_cp); + + // Check if the lowered codepoints match + if ((0 == src1_orig_cp) && (0 == src2_orig_cp)) { + return 0; + } else if (src1_cp == src2_cp) { + continue; + } + + // If they don't match, then we return which of the original's are less + if (src1_orig_cp < src2_orig_cp) { + return -1; + } else if (src1_orig_cp > src2_orig_cp) { + return 1; + } + } while (0 < n); + + // both utf8 strings matched + return 0; +} + +void *utf8ncat(void *utf8_restrict dst, const void *utf8_restrict src, + size_t n) { + char *d = (char *)dst; + const char *s = (const char *)src; + + // find the null terminating byte in dst + while ('\0' != *d) { + d++; + } + + // overwriting the null terminating byte in dst, append src byte-by-byte + // stopping if we run out of space + do { + *d++ = *s++; + } while (('\0' != *s) && (0 != --n)); + + // write out a new null terminating byte into dst + *d = '\0'; + + return dst; +} + +int utf8ncmp(const void *src1, const void *src2, size_t n) { + const unsigned char *s1 = (const unsigned char *)src1; + const unsigned char *s2 = (const unsigned char *)src2; + + while ((0 != n--) && (('\0' != *s1) || ('\0' != *s2))) { + if (*s1 < *s2) { + return -1; + } else if (*s1 > *s2) { + return 1; + } + + s1++; + s2++; + } + + // both utf8 strings matched + return 0; +} + +void *utf8ncpy(void *utf8_restrict dst, const void *utf8_restrict src, + size_t n) { + char *d = (char *)dst; + const char *s = (const char *)src; + size_t index; + + // overwriting anything previously in dst, write byte-by-byte + // from src + for (index = 0; index < n; index++) { + d[index] = s[index]; + if ('\0' == s[index]) { + break; + } + } + + // append null terminating byte + for (; index < n; index++) { + d[index] = 0; + } + + return dst; +} + +void *utf8ndup(const void *src, size_t n) { + const char *s = (const char *)src; + char *c = utf8_null; + size_t bytes = 0; + + // Find the end of the string or stop when n is reached + while ('\0' != s[bytes] && bytes < n) { + bytes++; + } + + // In case bytes is actually less than n, we need to set it + // to be used later in the copy byte by byte. + n = bytes; + + c = (char *)malloc(bytes + 1); + if (utf8_null == c) { + // out of memory so we bail + return utf8_null; + } + + bytes = 0; + + // copy src byte-by-byte into our new utf8 string + while ('\0' != s[bytes] && bytes < n) { + c[bytes] = s[bytes]; + bytes++; + } + + // append null terminating byte + c[bytes] = '\0'; + return c; +} + +void *utf8rchr(const void *src, int chr) { + const char *s = (const char *)src; + const char *match = utf8_null; + char c[5] = {'\0', '\0', '\0', '\0', '\0'}; + + if (0 == chr) { + // being asked to return position of null terminating byte, so + // just run s to the end, and return! + while ('\0' != *s) { + s++; + } + return (void *)s; + } else if (0 == ((int)0xffffff80 & chr)) { + // 1-byte/7-bit ascii + // (0b0xxxxxxx) + c[0] = (char)chr; + } else if (0 == ((int)0xfffff800 & chr)) { + // 2-byte/11-bit utf8 code point + // (0b110xxxxx 0b10xxxxxx) + c[0] = 0xc0 | (char)(chr >> 6); + c[1] = 0x80 | (char)(chr & 0x3f); + } else if (0 == ((int)0xffff0000 & chr)) { + // 3-byte/16-bit utf8 code point + // (0b1110xxxx 0b10xxxxxx 0b10xxxxxx) + c[0] = 0xe0 | (char)(chr >> 12); + c[1] = 0x80 | (char)((chr >> 6) & 0x3f); + c[2] = 0x80 | (char)(chr & 0x3f); + } else { // if (0 == ((int)0xffe00000 & chr)) { + // 4-byte/21-bit utf8 code point + // (0b11110xxx 0b10xxxxxx 0b10xxxxxx 0b10xxxxxx) + c[0] = 0xf0 | (char)(chr >> 18); + c[1] = 0x80 | (char)((chr >> 12) & 0x3f); + c[2] = 0x80 | (char)((chr >> 6) & 0x3f); + c[3] = 0x80 | (char)(chr & 0x3f); + } + + // we've created a 2 utf8 codepoint string in c that is + // the utf8 character asked for by chr, and a null + // terminating byte + + while ('\0' != *s) { + size_t offset = 0; + + while (s[offset] == c[offset]) { + offset++; + } + + if ('\0' == c[offset]) { + // we found a matching utf8 code point + match = s; + s += offset; + } else { + s += offset; + + // need to march s along to next utf8 codepoint start + // (the next byte that doesn't match 0b10xxxxxx) + if ('\0' != *s) { + do { + s++; + } while (0x80 == (0xc0 & *s)); + } + } + } + + // return the last match we found (or 0 if no match was found) + return (void *)match; +} + +void *utf8pbrk(const void *str, const void *accept) { + const char *s = (const char *)str; + + while ('\0' != *s) { + const char *a = (const char *)accept; + size_t offset = 0; + + while ('\0' != *a) { + // checking that if *a is the start of a utf8 codepoint + // (it is not 0b10xxxxxx) and we have successfully matched + // a previous character (0 < offset) - we found a match + if ((0x80 != (0xc0 & *a)) && (0 < offset)) { + return (void *)s; + } else { + if (*a == s[offset]) { + // part of a utf8 codepoint matched, so move our checking + // onwards to the next byte + offset++; + a++; + } else { + // r could be in the middle of an unmatching utf8 code point, + // so we need to march it on to the next character beginning, + + do { + a++; + } while (0x80 == (0xc0 & *a)); + + // reset offset too as we found a mismatch + offset = 0; + } + } + } + + // we found a match on the last utf8 codepoint + if (0 < offset) { + return (void *)s; + } + + // the current utf8 codepoint in src did not match accept, but src + // could have been partway through a utf8 codepoint, so we need to + // march it onto the next utf8 codepoint starting byte + do { + s++; + } while ((0x80 == (0xc0 & *s))); + } + + return utf8_null; +} + +size_t utf8size(const void *str) { + const char *s = (const char *)str; + size_t size = 0; + while ('\0' != s[size]) { + size++; + } + + // we are including the null terminating byte in the size calculation + size++; + return size; +} + +size_t utf8spn(const void *src, const void *accept) { + const char *s = (const char *)src; + size_t chars = 0; + + while ('\0' != *s) { + const char *a = (const char *)accept; + size_t offset = 0; + + while ('\0' != *a) { + // checking that if *r is the start of a utf8 codepoint + // (it is not 0b10xxxxxx) and we have successfully matched + // a previous character (0 < offset) - we found a match + if ((0x80 != (0xc0 & *a)) && (0 < offset)) { + // found a match, so increment the number of utf8 codepoints + // that have matched and stop checking whether any other utf8 + // codepoints in a match + chars++; + s += offset; + break; + } else { + if (*a == s[offset]) { + offset++; + a++; + } else { + // a could be in the middle of an unmatching utf8 codepoint, + // so we need to march it on to the next character beginning, + do { + a++; + } while (0x80 == (0xc0 & *a)); + + // reset offset too as we found a mismatch + offset = 0; + } + } + } + + // if a got to its terminating null byte, then we didn't find a match. + // Return the current number of matched utf8 codepoints + if ('\0' == *a) { + return chars; + } + } + + return chars; +} + +void *utf8str(const void *haystack, const void *needle) { + const char *h = (const char *)haystack; + utf8_int32_t throwaway_codepoint; + + // if needle has no utf8 codepoints before the null terminating + // byte then return haystack + if ('\0' == *((const char *)needle)) { + return (void *)haystack; + } + + while ('\0' != *h) { + const char *maybeMatch = h; + const char *n = (const char *)needle; + + while (*h == *n && (*h != '\0' && *n != '\0')) { + n++; + h++; + } + + if ('\0' == *n) { + // we found the whole utf8 string for needle in haystack at + // maybeMatch, so return it + return (void *)maybeMatch; + } else { + // h could be in the middle of an unmatching utf8 codepoint, + // so we need to march it on to the next character beginning + // starting from the current character + h = (const char*)utf8codepoint(maybeMatch, &throwaway_codepoint); + } + } + + // no match + return utf8_null; +} + +void *utf8casestr(const void *haystack, const void *needle) { + const void *h = haystack; + + // if needle has no utf8 codepoints before the null terminating + // byte then return haystack + if ('\0' == *((const char *)needle)) { + return (void *)haystack; + } + + for (;;) { + const void *maybeMatch = h; + const void *n = needle; + utf8_int32_t h_cp, n_cp; + + // Get the next code point and track it + const void *nextH = h = utf8codepoint(h, &h_cp); + n = utf8codepoint(n, &n_cp); + + while ((0 != h_cp) && (0 != n_cp)) { + h_cp = utf8lwrcodepoint(h_cp); + n_cp = utf8lwrcodepoint(n_cp); + + // if we find a mismatch, bail out! + if (h_cp != n_cp) { + break; + } + + h = utf8codepoint(h, &h_cp); + n = utf8codepoint(n, &n_cp); + } + + if (0 == n_cp) { + // we found the whole utf8 string for needle in haystack at + // maybeMatch, so return it + return (void *)maybeMatch; + } + + if (0 == h_cp) { + // no match + return utf8_null; + } + + // Roll back to the next code point in the haystack to test + h = nextH; + } +} + +void *utf8valid(const void *str) { + const char *s = (const char *)str; + + while ('\0' != *s) { + if (0xf0 == (0xf8 & *s)) { + // ensure each of the 3 following bytes in this 4-byte + // utf8 codepoint began with 0b10xxxxxx + if ((0x80 != (0xc0 & s[1])) || (0x80 != (0xc0 & s[2])) || + (0x80 != (0xc0 & s[3]))) { + return (void *)s; + } + + // ensure that our utf8 codepoint ended after 4 bytes + if (0x80 == (0xc0 & s[4])) { + return (void *)s; + } + + // ensure that the top 5 bits of this 4-byte utf8 + // codepoint were not 0, as then we could have used + // one of the smaller encodings + if ((0 == (0x07 & s[0])) && (0 == (0x30 & s[1]))) { + return (void *)s; + } + + // 4-byte utf8 code point (began with 0b11110xxx) + s += 4; + } else if (0xe0 == (0xf0 & *s)) { + // ensure each of the 2 following bytes in this 3-byte + // utf8 codepoint began with 0b10xxxxxx + if ((0x80 != (0xc0 & s[1])) || (0x80 != (0xc0 & s[2]))) { + return (void *)s; + } + + // ensure that our utf8 codepoint ended after 3 bytes + if (0x80 == (0xc0 & s[3])) { + return (void *)s; + } + + // ensure that the top 5 bits of this 3-byte utf8 + // codepoint were not 0, as then we could have used + // one of the smaller encodings + if ((0 == (0x0f & s[0])) && (0 == (0x20 & s[1]))) { + return (void *)s; + } + + // 3-byte utf8 code point (began with 0b1110xxxx) + s += 3; + } else if (0xc0 == (0xe0 & *s)) { + // ensure the 1 following byte in this 2-byte + // utf8 codepoint began with 0b10xxxxxx + if (0x80 != (0xc0 & s[1])) { + return (void *)s; + } + + // ensure that our utf8 codepoint ended after 2 bytes + if (0x80 == (0xc0 & s[2])) { + return (void *)s; + } + + // ensure that the top 4 bits of this 2-byte utf8 + // codepoint were not 0, as then we could have used + // one of the smaller encodings + if (0 == (0x1e & s[0])) { + return (void *)s; + } + + // 2-byte utf8 code point (began with 0b110xxxxx) + s += 2; + } else if (0x00 == (0x80 & *s)) { + // 1-byte ascii (began with 0b0xxxxxxx) + s += 1; + } else { + // we have an invalid 0b1xxxxxxx utf8 code point entry + return (void *)s; + } + } + + return utf8_null; +} + +void *utf8codepoint(const void *utf8_restrict str, + utf8_int32_t *utf8_restrict out_codepoint) { + const char *s = (const char *)str; + + if (0xf0 == (0xf8 & s[0])) { + // 4 byte utf8 codepoint + *out_codepoint = ((0x07 & s[0]) << 18) | ((0x3f & s[1]) << 12) | + ((0x3f & s[2]) << 6) | (0x3f & s[3]); + s += 4; + } else if (0xe0 == (0xf0 & s[0])) { + // 3 byte utf8 codepoint + *out_codepoint = + ((0x0f & s[0]) << 12) | ((0x3f & s[1]) << 6) | (0x3f & s[2]); + s += 3; + } else if (0xc0 == (0xe0 & s[0])) { + // 2 byte utf8 codepoint + *out_codepoint = ((0x1f & s[0]) << 6) | (0x3f & s[1]); + s += 2; + } else { + // 1 byte utf8 codepoint otherwise + *out_codepoint = s[0]; + s += 1; + } + + return (void *)s; +} + +size_t utf8codepointsize(utf8_int32_t chr) { + if (0 == ((utf8_int32_t)0xffffff80 & chr)) { + return 1; + } else if (0 == ((utf8_int32_t)0xfffff800 & chr)) { + return 2; + } else if (0 == ((utf8_int32_t)0xffff0000 & chr)) { + return 3; + } else { // if (0 == ((int)0xffe00000 & chr)) { + return 4; + } +} + +void *utf8catcodepoint(void *utf8_restrict str, utf8_int32_t chr, size_t n) { + char *s = (char *)str; + + if (0 == ((utf8_int32_t)0xffffff80 & chr)) { + // 1-byte/7-bit ascii + // (0b0xxxxxxx) + if (n < 1) { + return utf8_null; + } + s[0] = (char)chr; + s += 1; + } else if (0 == ((utf8_int32_t)0xfffff800 & chr)) { + // 2-byte/11-bit utf8 code point + // (0b110xxxxx 0b10xxxxxx) + if (n < 2) { + return utf8_null; + } + s[0] = 0xc0 | (char)(chr >> 6); + s[1] = 0x80 | (char)(chr & 0x3f); + s += 2; + } else if (0 == ((utf8_int32_t)0xffff0000 & chr)) { + // 3-byte/16-bit utf8 code point + // (0b1110xxxx 0b10xxxxxx 0b10xxxxxx) + if (n < 3) { + return utf8_null; + } + s[0] = 0xe0 | (char)(chr >> 12); + s[1] = 0x80 | (char)((chr >> 6) & 0x3f); + s[2] = 0x80 | (char)(chr & 0x3f); + s += 3; + } else { // if (0 == ((int)0xffe00000 & chr)) { + // 4-byte/21-bit utf8 code point + // (0b11110xxx 0b10xxxxxx 0b10xxxxxx 0b10xxxxxx) + if (n < 4) { + return utf8_null; + } + s[0] = 0xf0 | (char)(chr >> 18); + s[1] = 0x80 | (char)((chr >> 12) & 0x3f); + s[2] = 0x80 | (char)((chr >> 6) & 0x3f); + s[3] = 0x80 | (char)(chr & 0x3f); + s += 4; + } + + return s; +} + +int utf8islower(utf8_int32_t chr) { return chr != utf8uprcodepoint(chr); } + +int utf8isupper(utf8_int32_t chr) { return chr != utf8lwrcodepoint(chr); } + +void utf8lwr(void *utf8_restrict str) { + void *p, *pn; + utf8_int32_t cp; + + p = (char *)str; + pn = utf8codepoint(p, &cp); + + while (cp != 0) { + const utf8_int32_t lwr_cp = utf8lwrcodepoint(cp); + const size_t size = utf8codepointsize(lwr_cp); + + if (lwr_cp != cp) { + utf8catcodepoint(p, lwr_cp, size); + } + + p = pn; + pn = utf8codepoint(p, &cp); + } +} + +void utf8upr(void *utf8_restrict str) { + void *p, *pn; + utf8_int32_t cp; + + p = (char *)str; + pn = utf8codepoint(p, &cp); + + while (cp != 0) { + const utf8_int32_t lwr_cp = utf8uprcodepoint(cp); + const size_t size = utf8codepointsize(lwr_cp); + + if (lwr_cp != cp) { + utf8catcodepoint(p, lwr_cp, size); + } + + p = pn; + pn = utf8codepoint(p, &cp); + } +} + +utf8_int32_t utf8lwrcodepoint(utf8_int32_t cp) { + if (((0x0041 <= cp) && (0x005a >= cp)) || + ((0x00c0 <= cp) && (0x00d6 >= cp)) || + ((0x00d8 <= cp) && (0x00de >= cp)) || + ((0x0391 <= cp) && (0x03a1 >= cp)) || + ((0x03a3 <= cp) && (0x03ab >= cp))) { + cp += 32; + } else if (((0x0100 <= cp) && (0x012f >= cp)) || + ((0x0132 <= cp) && (0x0137 >= cp)) || + ((0x014a <= cp) && (0x0177 >= cp)) || + ((0x0182 <= cp) && (0x0185 >= cp)) || + ((0x01a0 <= cp) && (0x01a5 >= cp)) || + ((0x01de <= cp) && (0x01ef >= cp)) || + ((0x01f8 <= cp) && (0x021f >= cp)) || + ((0x0222 <= cp) && (0x0233 >= cp)) || + ((0x0246 <= cp) && (0x024f >= cp)) || + ((0x03d8 <= cp) && (0x03ef >= cp))) { + cp |= 0x1; + } else if (((0x0139 <= cp) && (0x0148 >= cp)) || + ((0x0179 <= cp) && (0x017e >= cp)) || + ((0x01af <= cp) && (0x01b0 >= cp)) || + ((0x01b3 <= cp) && (0x01b6 >= cp)) || + ((0x01cd <= cp) && (0x01dc >= cp))) { + cp += 1; + cp &= ~0x1; + } else { + switch (cp) { + default: break; + case 0x0178: cp = 0x00ff; break; + case 0x0243: cp = 0x0180; break; + case 0x018e: cp = 0x01dd; break; + case 0x023d: cp = 0x019a; break; + case 0x0220: cp = 0x019e; break; + case 0x01b7: cp = 0x0292; break; + case 0x01c4: cp = 0x01c6; break; + case 0x01c7: cp = 0x01c9; break; + case 0x01ca: cp = 0x01cc; break; + case 0x01f1: cp = 0x01f3; break; + case 0x01f7: cp = 0x01bf; break; + case 0x0187: cp = 0x0188; break; + case 0x018b: cp = 0x018c; break; + case 0x0191: cp = 0x0192; break; + case 0x0198: cp = 0x0199; break; + case 0x01a7: cp = 0x01a8; break; + case 0x01ac: cp = 0x01ad; break; + case 0x01af: cp = 0x01b0; break; + case 0x01b8: cp = 0x01b9; break; + case 0x01bc: cp = 0x01bd; break; + case 0x01f4: cp = 0x01f5; break; + case 0x023b: cp = 0x023c; break; + case 0x0241: cp = 0x0242; break; + case 0x03fd: cp = 0x037b; break; + case 0x03fe: cp = 0x037c; break; + case 0x03ff: cp = 0x037d; break; + case 0x037f: cp = 0x03f3; break; + case 0x0386: cp = 0x03ac; break; + case 0x0388: cp = 0x03ad; break; + case 0x0389: cp = 0x03ae; break; + case 0x038a: cp = 0x03af; break; + case 0x038c: cp = 0x03cc; break; + case 0x038e: cp = 0x03cd; break; + case 0x038f: cp = 0x03ce; break; + case 0x0370: cp = 0x0371; break; + case 0x0372: cp = 0x0373; break; + case 0x0376: cp = 0x0377; break; + case 0x03f4: cp = 0x03d1; break; + case 0x03cf: cp = 0x03d7; break; + case 0x03f9: cp = 0x03f2; break; + case 0x03f7: cp = 0x03f8; break; + case 0x03fa: cp = 0x03fb; break; + } + } + + return cp; +} + +utf8_int32_t utf8uprcodepoint(utf8_int32_t cp) { + if (((0x0061 <= cp) && (0x007a >= cp)) || + ((0x00e0 <= cp) && (0x00f6 >= cp)) || + ((0x00f8 <= cp) && (0x00fe >= cp)) || + ((0x03b1 <= cp) && (0x03c1 >= cp)) || + ((0x03c3 <= cp) && (0x03cb >= cp))) { + cp -= 32; + } else if (((0x0100 <= cp) && (0x012f >= cp)) || + ((0x0132 <= cp) && (0x0137 >= cp)) || + ((0x014a <= cp) && (0x0177 >= cp)) || + ((0x0182 <= cp) && (0x0185 >= cp)) || + ((0x01a0 <= cp) && (0x01a5 >= cp)) || + ((0x01de <= cp) && (0x01ef >= cp)) || + ((0x01f8 <= cp) && (0x021f >= cp)) || + ((0x0222 <= cp) && (0x0233 >= cp)) || + ((0x0246 <= cp) && (0x024f >= cp)) || + ((0x03d8 <= cp) && (0x03ef >= cp))) { + cp &= ~0x1; + } else if (((0x0139 <= cp) && (0x0148 >= cp)) || + ((0x0179 <= cp) && (0x017e >= cp)) || + ((0x01af <= cp) && (0x01b0 >= cp)) || + ((0x01b3 <= cp) && (0x01b6 >= cp)) || + ((0x01cd <= cp) && (0x01dc >= cp))) { + cp -= 1; + cp |= 0x1; + } else { + switch (cp) { + default: break; + case 0x00ff: cp = 0x0178; break; + case 0x0180: cp = 0x0243; break; + case 0x01dd: cp = 0x018e; break; + case 0x019a: cp = 0x023d; break; + case 0x019e: cp = 0x0220; break; + case 0x0292: cp = 0x01b7; break; + case 0x01c6: cp = 0x01c4; break; + case 0x01c9: cp = 0x01c7; break; + case 0x01cc: cp = 0x01ca; break; + case 0x01f3: cp = 0x01f1; break; + case 0x01bf: cp = 0x01f7; break; + case 0x0188: cp = 0x0187; break; + case 0x018c: cp = 0x018b; break; + case 0x0192: cp = 0x0191; break; + case 0x0199: cp = 0x0198; break; + case 0x01a8: cp = 0x01a7; break; + case 0x01ad: cp = 0x01ac; break; + case 0x01b0: cp = 0x01af; break; + case 0x01b9: cp = 0x01b8; break; + case 0x01bd: cp = 0x01bc; break; + case 0x01f5: cp = 0x01f4; break; + case 0x023c: cp = 0x023b; break; + case 0x0242: cp = 0x0241; break; + case 0x037b: cp = 0x03fd; break; + case 0x037c: cp = 0x03fe; break; + case 0x037d: cp = 0x03ff; break; + case 0x03f3: cp = 0x037f; break; + case 0x03ac: cp = 0x0386; break; + case 0x03ad: cp = 0x0388; break; + case 0x03ae: cp = 0x0389; break; + case 0x03af: cp = 0x038a; break; + case 0x03cc: cp = 0x038c; break; + case 0x03cd: cp = 0x038e; break; + case 0x03ce: cp = 0x038f; break; + case 0x0371: cp = 0x0370; break; + case 0x0373: cp = 0x0372; break; + case 0x0377: cp = 0x0376; break; + case 0x03d1: cp = 0x03f4; break; + case 0x03d7: cp = 0x03cf; break; + case 0x03f2: cp = 0x03f9; break; + case 0x03f8: cp = 0x03f7; break; + case 0x03fb: cp = 0x03fa; break; + } + } + + return cp; +} + +#undef utf8_restrict +#undef utf8_null + +#ifdef __cplusplus +} // extern "C" +#endif + +#if defined(__clang__) +#pragma clang diagnostic pop +#endif + +#endif // SHEREDOM_UTF8_H_INCLUDED diff --git a/deps/ledger-zxlib/include/view_templates.h b/deps/ledger-zxlib/include/view_templates.h new file mode 100644 index 0000000..e653b03 --- /dev/null +++ b/deps/ledger-zxlib/include/view_templates.h @@ -0,0 +1,168 @@ +/******************************************************************************* +* (c) 2016 Ledger +* (c) 2018 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#pragma once + +#include + +#define UI_CENTER11PX BAGL_FONT_OPEN_SANS_REGULAR_11px | BAGL_FONT_ALIGNMENT_CENTER +#define UI_CENTER11PX_BOLD BAGL_FONT_OPEN_SANS_EXTRABOLD_11px | BAGL_FONT_ALIGNMENT_CENTER +#define UI_11PX 11 + +#define DEFAULT_FONT BAGL_FONT_OPEN_SANS_LIGHT_16px | BAGL_FONT_ALIGNMENT_LEFT +#define UI_WHITE 0xFFFFFF +#define UI_BLACK 0x000000 + +#define UIID_ICONLEFT 0x10 +#define UIID_ICONRIGHT 0x11 +#define UIID_LABEL 0x20 +#define UIID_LABELSCROLL 0x71 + +#define UI_FillRectangle(id, x, y, w, h, fgcolor, bgcolor) \ +{ \ + { \ + BAGL_RECTANGLE, /* type */ \ + id, /* usedid */ \ + x, /* x */ \ + y, /* y */ \ + w, /* width */ \ + h, /* height */ \ + 0, /* stroke */ \ + 0, /* radius */ \ + BAGL_FILL, /* fill */ \ + fgcolor, /* fgcolor */ \ + bgcolor, /* bgcolor */ \ + 0, /* font_id */ \ + 0 /* icon_id */ \ + }, \ + NULL, /* text */ \ +} + +#define UI_LabelLine(id, x, y, w, h, fgcolor, bgcolor, text) \ +{ \ + { \ + BAGL_LABELINE, /* type */ \ + id, /* usedid */ \ + x, /* x */ \ + y, /* y */ \ + w, /* width */ \ + h, /* height */ \ + 0, /* stroke */ \ + 0, /* radius */ \ + 0, /* fill */ \ + fgcolor, /* fgcolor */ \ + bgcolor, /* bgcolor */ \ + UI_CENTER11PX, /* font_id */ \ + 0 /* icon_id */ \ + }, \ + text, /* text */ \ +} + +#define UI_LabelLineScrolling(id, x, y, w, h, fgcolor, bgcolor, text) \ +{ \ + { \ + BAGL_LABELINE, /* type */ \ + id, /* usedid */ \ + x, /* x */ \ + y, /* y */ \ + w, /* width */ \ + h, /* height */ \ + 5 | BAGL_STROKE_FLAG_ONESHOT, /* stroke | scr pause */ \ + 0, /* radius */ \ + 0, /* fill */ \ + fgcolor, /* fgcolor */ \ + bgcolor, /* bgcolor */ \ + UI_CENTER11PX, /* font_id */ \ + 50 /* icon_id / scroll speed */ \ + }, \ + text, /* text */ \ +} + +#if defined(TARGET_NANOX) +#define UI_SCREEN_WIDTH 128 +#define UI_SCREEN_HEIGHT 64 + +#define BAGL_GLYPH_ICON_LEFT ((const char*)&C_icon_left) +#define BAGL_GLYPH_ICON_RIGHT ((const char*)&C_icon_right) +#define BAGL_GLYPH_ICON_CROSS ((const char*)&C_icon_crossmark) +#define BAGL_GLYPH_ICON_CHECK ((const char*)&C_icon_validate) + +#define UI_Icon(id, x, y, w, h, icon) \ +{ \ + { \ + BAGL_ICON, /* type */ \ + id, /* usedid */ \ + x, /* x */ \ + y, /* y */ \ + w, /* width */ \ + h, /* height */ \ + 0, /* stroke */ \ + 0, /* radius */ \ + 0, /* fill */ \ + UI_WHITE, /* fgcolor */ \ + UI_BLACK, /* bgcolor */ \ + 0, /* font_id */ \ + 0 /* icon_id */ \ + }, \ + icon, /* text */ \ + 0, /* touch_area_brim */ \ + 0, /* overfgcolor */ \ + 0, /* overbgcolor */ \ + NULL, /* tap */ \ + NULL, /* out */ \ + NULL, /* over */ \ +} + +#define UI_BACKGROUND \ + UI_FillRectangle(0, 0, 0, UI_SCREEN_WIDTH, UI_SCREEN_HEIGHT, 0x000000, 0xFFFFFF) + +#define UI_BACKGROUND_LEFT_RIGHT_ICONS \ + UI_BACKGROUND, \ + UI_Icon(UIID_ICONLEFT, 2, 28, 4, 7, BAGL_GLYPH_ICON_LEFT), \ + UI_Icon(UIID_ICONRIGHT, 122, 28, 4, 7, BAGL_GLYPH_ICON_RIGHT) + +#else +#define UI_SCREEN_WIDTH 128 +#define UI_SCREEN_HEIGHT 32 + +#define UI_Icon(id, x, y, w, h, icon) \ +{ \ + { \ + BAGL_ICON, /* type */ \ + id, /* usedid */ \ + x, /* x */ \ + y, /* y */ \ + w, /* width */ \ + h, /* height */ \ + 0, /* stroke */ \ + 0, /* radius */ \ + 0, /* fill */ \ + UI_WHITE, /* fgcolor */ \ + UI_BLACK, /* bgcolor */ \ + 0, /* font_id */ \ + icon /* icon_id */ \ + }, \ + NULL, /* text */ \ +} + +#define UI_BACKGROUND \ + UI_FillRectangle(0, 0, 0, UI_SCREEN_WIDTH, UI_SCREEN_HEIGHT, 0x000000, 0xFFFFFF) + +#define UI_BACKGROUND_LEFT_RIGHT_ICONS \ + UI_BACKGROUND, \ + UI_Icon(UIID_ICONLEFT, 0, 0, 7, 7, BAGL_GLYPH_ICON_LEFT), \ + UI_Icon(UIID_ICONRIGHT, 128 - 7, 0, 7, 7, BAGL_GLYPH_ICON_RIGHT) +#endif diff --git a/deps/ledger-zxlib/include/zbuffer.h b/deps/ledger-zxlib/include/zbuffer.h new file mode 100644 index 0000000..4c28f7c --- /dev/null +++ b/deps/ledger-zxlib/include/zbuffer.h @@ -0,0 +1,40 @@ +/******************************************************************************* +* (c) 2020 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#pragma once + +#include +#include + +typedef enum { + zb_no_error, + zb_misaligned_buffer, + zb_not_allocated +} zbuffer_error_e; + +zbuffer_error_e zb_init(); + +// allocate a block at the end of the stack +// maximum size will not be checked +zbuffer_error_e zb_allocate(uint16_t size); + +// deallocate memory block as the end of the stack +zbuffer_error_e zb_deallocate(); + +// obtain a pointer to the allocated block +zbuffer_error_e zb_get(uint8_t **buffer); + +// check that the block boundary has not been corrupted +zbuffer_error_e zb_check_canary(); diff --git a/deps/ledger-zxlib/include/zxerror.h b/deps/ledger-zxlib/include/zxerror.h new file mode 100644 index 0000000..c2504d8 --- /dev/null +++ b/deps/ledger-zxlib/include/zxerror.h @@ -0,0 +1,73 @@ +/******************************************************************************* +* (c) 2018 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +#define CHECK_ZXERR(CALL) { \ + zxerr_t err = CALL; \ + if (err!=zxerr_ok) return err;} + +typedef enum { + zxerr_unknown = 0b00000000, + zxerr_ok = 0b00000011, + zxerr_no_data = 0b00000101, + zxerr_buffer_too_small = 0b00000110, + zxerr_out_of_bounds = 0b00001001, + zxerr_encoding_failed = 0b00001010, + zxerr_invalid_crypto_settings = 0b00001100, + zxerr_ledger_api_error = 0b00001111, +} zxerr_t; + +//0b00000000 +//0b00000011 +//0b00000101 +//0b00000110 +//0b00001001 +//0b00001010 +//0b00001100 +//0b00001111 +//0b00010001 +//0b00010010 +//0b00010100 +//0b00010111 +//0b00011000 +//0b00011011 +//0b00011101 +//0b00011110 +//0b00100001 +//0b00100010 +//0b00100100 +//0b00100111 +//0b00101000 +//0b00101011 +//0b00101101 +//0b00101110 +//0b00110000 +//0b00110011 +//0b00110101 +//0b00110110 +//0b00111001 +//0b00111010 +//0b00111100 +//0b00111111 + +#ifdef __cplusplus +} +#endif diff --git a/deps/ledger-zxlib/include/zxformat.h b/deps/ledger-zxlib/include/zxformat.h new file mode 100644 index 0000000..8de04c8 --- /dev/null +++ b/deps/ledger-zxlib/include/zxformat.h @@ -0,0 +1,300 @@ +/******************************************************************************* +* (c) 2018 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +#include "zxmacros.h" + +#define NUM_TO_STR(TYPE) __Z_INLINE const char * TYPE##_to_str(char *data, int dataLen, TYPE##_t number) { \ + if (dataLen < 2) return "Buffer too small"; \ + MEMZERO(data, dataLen); \ + char *p = data; \ + if (number < 0) { *(p++) = '-'; data++; } \ + else if (number == 0) { *(p++) = '0'; } \ + TYPE##_t tmp; \ + while (number != 0) { \ + if (p - data >= (dataLen - 1)) { return "Buffer too small"; } \ + tmp = number % 10; \ + tmp = tmp < 0 ? -tmp : tmp; \ + *(p++) = (char) ('0' + tmp); \ + number /= 10u; \ + } \ + while (p > data) { \ + p--; \ + char z = *data; *data = *p; *p = z; \ + data++; \ + } \ + return NULL; \ +} + +NUM_TO_STR(int64) + +NUM_TO_STR(uint64) + +__Z_INLINE void bip32_to_str(char *s, uint32_t max, const uint32_t *path, uint8_t pathLen) { + MEMZERO(s, max); + + if (pathLen == 0) { + snprintf(s, max, "EMPTY PATH"); + return; + } + + if (pathLen > 5) { + snprintf(s, max, "ERROR"); + return; + } + + uint32_t offset = 0; + for (uint16_t i = 0; i < pathLen; i++) { + size_t written; + + // Warning: overcomplicated because Ledger's snprintf does not return number of written bytes + + snprintf(s + offset, max - offset, "%d", path[i] & 0x7FFFFFFFu); + written = strlen(s + offset); + if (written == 0 || written >= max - offset) { + snprintf(s, max, "ERROR"); + return; + } + offset += written; + + if ((path[i] & 0x80000000u) != 0) { + snprintf(s + offset, max - offset, "'"); + written = strlen(s + offset); + if (written == 0 || written >= max - offset) { + snprintf(s, max, "ERROR"); + return; + } + offset += written; + } + + if (i != pathLen - 1) { + snprintf(s + offset, max - offset, "/"); + written = strlen(s + offset); + if (written == 0 || written >= max - offset) { + snprintf(s, max, "ERROR"); + return; + } + offset += written; + } + } +} + +__Z_INLINE void bip44_to_str(char *s, uint32_t max, const uint32_t path[5]) { + bip32_to_str(s, max, path, 5); +} + +__Z_INLINE int8_t str_to_int8(const char *start, const char *end, char *error) { + int sign = 1; + if (*start == '-') { + sign = -1; + start++; + } + + int64_t value = 0; + int multiplier = 1; + for (const char *s = end - 1; s >= start; s--) { + int delta = (*s - '0'); + if (delta >= 0 && delta <= 9) { + value += (delta * multiplier); + multiplier *= 10; + } else { + if (error != NULL) { + *error = 1; + return 0; + } + } + } + + value *= sign; + if (value >= INT8_MIN && value <= INT8_MAX) { + return (int8_t) value; + } + if (error != NULL) { + *error = 1; + } + return 0; +} + +__Z_INLINE int64_t str_to_int64(const char *start, const char *end, char *error) { + int sign = 1; + if (*start == '-') { + sign = -1; + start++; + } + + int64_t value = 0; + uint64_t multiplier = 1; + for (const char *s = end - 1; s >= start; s--) { + int delta = (*s - '0'); + if (delta >= 0 && delta <= 9) { + value += (delta * multiplier); + multiplier *= 10; + } else { + if (error != NULL) { + *error = 1; + return 0; + } + } + } + + return value * sign; +} + +uint8_t intstr_to_fpstr_inplace(char *number, size_t number_max_size, uint8_t decimalPlaces); + +__Z_INLINE uint8_t fpstr_to_str(char *out, uint16_t outLen, const char *number, uint8_t decimals) { + MEMZERO(out, outLen); + size_t digits = strlen(number); + + if (decimals == 0) { + if (digits == 0) { + snprintf(out, outLen, "0"); + return 0; + } else if (outLen < digits) { + snprintf(out, outLen, "ERR"); + return 1; + } + strcpy(out, number); + return 0; + } + + if ((outLen < decimals + 2) || + (outLen < digits + 1)) { + snprintf(out, outLen, "ERR"); + return 1; + } + + if (digits <= decimals) { + // First part + strcpy(out, "0."); + out += 2; + MEMSET(out, '0', decimals - digits); + out += decimals - digits; + } else { + const size_t shift = digits - decimals; + strcpy(out, number); + number += shift; + out += shift; + *out++ = '.'; + } + + strcpy(out, number); + return 0; +} + +__Z_INLINE uint16_t fpuint64_to_str(char *out, uint16_t outLen, const uint64_t value, uint8_t decimals) { + char buffer[30]; + MEMZERO(buffer, sizeof(buffer)); + int64_to_str(buffer, sizeof(buffer), value); + fpstr_to_str(out, outLen, buffer, decimals); + uint16_t len = (uint16_t) strlen(out); + return len; +} + +__Z_INLINE void number_inplace_trimming(char *s) { + const size_t len = strlen(s); + if (len == 0 || len == 1 || len > 1024) { + return; + } + + int16_t dec_point = -1; + for (int16_t i = 0; i < (int16_t) len && dec_point < 0; i++) { + if (s[i] == '.') { + dec_point = i; + } + } + if (dec_point < 0) { + return; + } + + for (int16_t i = (int16_t) (len - 1); i > (dec_point + 1) && s[i] == '0'; i--) { + s[i] = 0; + } +} + +__Z_INLINE uint64_t uint64_from_BEarray(const uint8_t data[8]) { + uint64_t result = 0; + for (uint8_t i = 0; i < 8u; i++) { + result <<= 8u; + result += data[i]; + } + return result; +} + +__Z_INLINE uint32_t array_to_hexstr(char *dst, uint16_t dstLen, const uint8_t *src, uint8_t count) { + MEMZERO(dst, dstLen); + if (dstLen < (count * 2 + 1)) { + return 0; + } + + const char hexchars[] = "0123456789abcdef"; + for (uint8_t i = 0; i < count; i++, src++) { + *dst++ = hexchars[*src >> 4u]; + *dst++ = hexchars[*src & 0x0Fu]; + } + *dst = 0; // terminate string + + return (uint32_t) (count * 2); +} + +__Z_INLINE void pageStringExt(char *outValue, uint16_t outValueLen, + const char *inValue, uint16_t inValueLen, + uint8_t pageIdx, uint8_t *pageCount) { + MEMZERO(outValue, outValueLen); + *pageCount = 0; + + outValueLen--; // leave space for NULL termination + if (outValueLen == 0) { + return; + } + + if (inValueLen == 0) { + return; + } + + *pageCount = (uint8_t) (inValueLen / outValueLen); + const uint16_t lastChunkLen = (inValueLen % outValueLen); + + if (lastChunkLen > 0) { + (*pageCount)++; + } + + if (pageIdx < *pageCount) { + if (lastChunkLen > 0 && pageIdx == *pageCount - 1) { + MEMCPY(outValue, inValue + (pageIdx * outValueLen), lastChunkLen); + } else { + MEMCPY(outValue, inValue + (pageIdx * outValueLen), outValueLen); + } + } +} + +__Z_INLINE void pageString(char *outValue, uint16_t outValueLen, + const char *inValue, + uint8_t pageIdx, uint8_t *pageCount) { + pageStringExt(outValue, outValueLen, inValue, (uint16_t) strlen(inValue), pageIdx, pageCount); +} + +size_t asciify(char *utf8_in); + +size_t asciify_ext(const char *utf8_in, char *ascii_only_out); + +#ifdef __cplusplus +} +#endif diff --git a/deps/ledger-zxlib/include/zxmacros.h b/deps/ledger-zxlib/include/zxmacros.h new file mode 100644 index 0000000..83ab672 --- /dev/null +++ b/deps/ledger-zxlib/include/zxmacros.h @@ -0,0 +1,154 @@ +/******************************************************************************* +* (c) 2018 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#pragma once + +#pragma clang diagnostic push +#pragma ide diagnostic ignored "modernize-use-nullptr" +#pragma ide diagnostic ignored "OCUnusedGlobalDeclarationInspection" +#pragma ide diagnostic ignored "OCUnusedMacroInspection" +#pragma ide diagnostic ignored "modernize-deprecated-headers" + +#ifdef __cplusplus +extern "C" { +#endif + +void check_app_canary(); + +#include +#include +#include +#include "string.h" + +#ifndef __APPLE__ +extern void explicit_bzero(void *s, size_t n) __THROW __nonnull ((1)); +#endif +#define __Z_INLINE inline __attribute__((always_inline)) static + +void handle_stack_overflow(); + +#if defined(LEDGER_SPECIFIC) +#include "bolos_target.h" +#endif + +#define NV_ALIGN __attribute__ ((aligned(64))) + +#if defined (TARGET_NANOS) || defined(TARGET_NANOX) + +#include "bolos_target.h" +#include "os.h" +#include "cx.h" + +#if defined(TARGET_NANOX) +#include "ux.h" +#define NV_CONST const +#define NV_VOLATILE volatile +#define IS_UX_ALLOWED (G_ux_params.len != BOLOS_UX_IGNORE && G_ux_params.len != BOLOS_UX_CONTINUE) +#else +#include "os_io_seproxyhal.h" +#define NV_CONST +#define NV_VOLATILE +#define IS_UX_ALLOWED (ux.params.len != BOLOS_UX_IGNORE && ux.params.len != BOLOS_UX_CONTINUE) +#endif + +#define CHECK_APP_CANARY() check_app_canary(); +#define APP_STACK_CANARY_MAGIC 0xDEAD0031 +extern unsigned int app_stack_canary; + +#define WAIT_EVENT() io_seproxyhal_spi_recv(G_io_seproxyhal_spi_buffer, sizeof(G_io_seproxyhal_spi_buffer), 0) + +#define UX_WAIT() \ + while (!UX_DISPLAYED()) { WAIT_EVENT(); UX_DISPLAY_NEXT_ELEMENT(); } \ + WAIT_EVENT(); \ + io_seproxyhal_general_status(); \ + WAIT_EVENT() + +#define MEMMOVE os_memmove +#define MEMSET os_memset +#define MEMCPY os_memcpy +#define MEMCMP os_memcmp +#define MEMCPY_NV nvm_write +#define MEMZERO explicit_bzero + +#else + +#ifndef PIC +#define PIC(x) (x) +#endif + +#define CHECK_APP_CANARY() {} + +#define MEMMOVE memmove +#define MEMSET memset +#define MEMCPY memcpy +#define MEMCMP memcmp +#define MEMCPY_NV memcpy + +#define CX_ECCINFO_PARITY_ODD 1u +#define CX_ECCINFO_xGTn 2u + +#ifndef __APPLE__ +#define MEMZERO explicit_bzero +#else +__Z_INLINE void __memzero(void *buffer, size_t s) { memset(buffer, 0, s); } +#define MEMZERO __memzero +#endif +#endif + +#define SET_NV(DST, TYPE, VAL) { \ + TYPE nvset_tmp=(VAL); \ + MEMCPY_NV((void*) PIC(DST), (void *) PIC(&nvset_tmp), sizeof(TYPE)); \ +} + +#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ +#define ZX_SWAP(v) (((v) & 0x000000FFu) << 24u | ((v) & 0x0000FF00u) << 8u | ((v) & 0x00FF0000u) >> 8u | ((v) & 0xFF000000u) >> 24u) +#define HtoNL(v) ZX_SWAP( v ) +#define NtoHL(v) ZX_SWAP( v ) +#else +#define HtoNL(x) (x) +#define NtoHL(x) (x) +#endif + +#define sizeof_field(type, member) sizeof(((type *)0)->member) +#define array_length(array) (sizeof(array) / sizeof((array)[0])) + +__Z_INLINE void strncpy_s(char *dst, const char *src, size_t dstSize) { + MEMZERO(dst, dstSize); + strncpy(dst, src, dstSize - 1); +} + +void zemu_log_stack(char *ctx); + +__Z_INLINE void zemu_log(char *buf) +{ +#if defined(ZEMU_LOGGING) + #if defined (TARGET_NANOS) || defined(TARGET_NANOX) + asm volatile ( + "movs r0, #0x04\n" + "movs r1, %0\n" + "svc 0xab\n" + :: "r"(buf) : "r0", "r1" + ); + #endif +#endif +} + +#ifdef __cplusplus +} +#endif + +#pragma clang diagnostic pop + +#include "zxformat.h" diff --git a/deps/ledger-zxlib/include/zxtypes.h b/deps/ledger-zxlib/include/zxtypes.h new file mode 100644 index 0000000..9aae677 --- /dev/null +++ b/deps/ledger-zxlib/include/zxtypes.h @@ -0,0 +1,30 @@ +/******************************************************************************* +* (c) 2018 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +typedef enum { + bool_false = 0, + bool_true = 1, +} bool_t; + +#ifdef __cplusplus +} +#endif diff --git a/deps/ledger-zxlib/include/zxversion.h b/deps/ledger-zxlib/include/zxversion.h new file mode 100644 index 0000000..386c8a9 --- /dev/null +++ b/deps/ledger-zxlib/include/zxversion.h @@ -0,0 +1,20 @@ +/******************************************************************************* +* (c) 2018 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#pragma once + +#define ZXLIB_MAJOR 7 +#define ZXLIB_MINOR 5 +#define ZXLIB_PATCH 0 diff --git a/deps/ledger-zxlib/scripts/install_deps.sh b/deps/ledger-zxlib/scripts/install_deps.sh new file mode 100755 index 0000000..46b3765 --- /dev/null +++ b/deps/ledger-zxlib/scripts/install_deps.sh @@ -0,0 +1,34 @@ +#!/usr/bin/env bash +#******************************************************************************* +#* (c) 2018 Zondax GmbH +#* +#* Licensed under the Apache License, Version 2.0 (the "License"); +#* you may not use this file except in compliance with the License. +#* You may obtain a copy of the License at +#* +#* http://www.apache.org/licenses/LICENSE-2.0 +#* +#* Unless required by applicable law or agreed to in writing, software +#* distributed under the License is distributed on an "AS IS" BASIS, +#* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +#* See the License for the specific language governing permissions and +#* limitations under the License. +#******************************************************************************** + +os_string="$(uname -s)" +case "${os_string}" in + Linux*) + sudo apt-get install libusb-1.0.0 libudev-dev + pip install -U setuptools + pip install -U --no-cache ledgerblue ecpy + pip install -U conan + ;; + Darwin*) + brew install libusb + pip install -U ledgerblue ecpy + pip install -U conan + ;; + *) + echo "OS not recognized" + ;; +esac diff --git a/deps/ledger-zxlib/scripts/template.sh b/deps/ledger-zxlib/scripts/template.sh new file mode 100755 index 0000000..8f0e720 --- /dev/null +++ b/deps/ledger-zxlib/scripts/template.sh @@ -0,0 +1,60 @@ +#!/usr/bin/env bash +#******************************************************************************* +# (c) 2018 Zondax GmbH +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +#******************************************************************************* + +if [ -z "$APPNAME" ] +then + echo "This script has not been configured correctly" + exit 1 +fi + +# check python 3 has been installed +if ! command -v python3 &>/dev/null; then + echo Python 3 is not installed + exit +fi + +python3 -m ledgerblue.loadApp -h &>/dev/null; +if [ $? -ne 0 ]; then + echo + echo "ERR: ledgerblue pip package not found." + echo "please install using 'pip install ledgerblue'" + echo + exit +fi + +TMP_HEX_DIR=$(mktemp -d -t ci-XXXXXXXXXX) +mkdir -p ${TMP_HEX_DIR}/bin +BIN_HEX_FILE=${TMP_HEX_DIR}/bin/app.hex +echo -e "${APPHEX}" > ${BIN_HEX_FILE} + +case "$1" in + 'load') + cd "$TMP_HEX_DIR" || exit + python3 -m ledgerblue.loadApp --appFlags 0x200 --delete ${LOAD_PARAMS} --path ${APPPATH} --path "44'/1'" + ;; + 'delete') + python3 -m ledgerblue.deleteApp ${DELETE_PARAMS} + ;; + 'version') + echo "v${APPVERSION}" + ;; + *) + echo "Zondax Installer [$APPNAME-$APPVERSION] [Warning: use only for test/demo apps]" + echo " load - Load $APPNAME app" + echo " delete - Delete $APPNAME app" + echo " version - Show $APPNAME app version" +esac diff --git a/deps/ledger-zxlib/src/app_mode.c b/deps/ledger-zxlib/src/app_mode.c new file mode 100644 index 0000000..1f1834b --- /dev/null +++ b/deps/ledger-zxlib/src/app_mode.c @@ -0,0 +1,85 @@ +/******************************************************************************* +* (c) 2020 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "app_mode.h" + +typedef struct { + uint8_t expert; +} app_mode_persistent_t; + +typedef struct { + uint8_t secret; +} app_mode_temporary_t; + +app_mode_temporary_t app_mode_temporary; + +#if defined(TARGET_NANOS) || defined(TARGET_NANOX) +////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////// +app_mode_persistent_t NV_CONST N_appmode_impl __attribute__ ((aligned(64))); +#define N_appmode (*(NV_VOLATILE app_mode_persistent_t *)PIC(&N_appmode_impl)) + +void app_mode_reset(){ + app_mode_temporary.secret = 0; +} + +bool app_mode_expert() { + return N_appmode.expert; +} + +void app_mode_set_expert(uint8_t val) { + app_mode_persistent_t mode; + mode.expert = val; + MEMCPY_NV( (void*) PIC(&N_appmode_impl), (void*) &mode, sizeof(app_mode_persistent_t)); +} + +#else +////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////// + +app_mode_persistent_t app_mode; + +void app_mode_reset() { + app_mode.expert = 0; + app_mode_temporary.secret = 0; +} + +bool app_mode_expert() { + return app_mode.expert; +} + +void app_mode_set_expert(uint8_t val) { + app_mode.expert = val; +} + +////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////// + +#endif + +bool app_mode_secret() { + return app_mode_temporary.secret; +} + +void app_mode_set_secret(uint8_t val) { + app_mode_temporary.secret = val; +} diff --git a/deps/ledger-zxlib/src/base58.c b/deps/ledger-zxlib/src/base58.c new file mode 100644 index 0000000..e6fce41 --- /dev/null +++ b/deps/ledger-zxlib/src/base58.c @@ -0,0 +1,153 @@ +/******************************************************************************* +* Adapted from Ledger App - Bitcoin Wallet +* (c) 2019 Zondax GmbH +* +* Ledger App - Bitcoin Wallet +* (c) 2016-2019 Ledger +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "base58.h" +#include "zxmacros.h" + +#define MAX_DEC_INPUT_SIZE 164 +#define MAX_ENC_INPUT_SIZE 120 + +unsigned char const BASE58TABLE[] = { + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x9, 0xa, 0xb, 0xc, 0xd, 0xe, 0xf, + 0x10, 0xff, 0x11, 0x12, 0x13, 0x14, 0x15, 0xff, 0x16, 0x17, 0x18, 0x19, + 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, + 0xff, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, + 0x37, 0x38, 0x39, 0xff, 0xff, 0xff, 0xff, 0xff}; + +unsigned char const BASE58ALPHABET[] = { + '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', + 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', + 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'm', + 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'}; + +int decode_base58(const char *in, size_t length, + unsigned char *out, size_t *outlen) { + unsigned char tmp[MAX_DEC_INPUT_SIZE]; + unsigned char buffer[MAX_DEC_INPUT_SIZE] = {0}; + unsigned char i; + unsigned char j; + unsigned char startAt; + unsigned char zeroCount = 0; + if (length > MAX_DEC_INPUT_SIZE) { + return -1; + } + MEMMOVE(tmp, in, length); + for (i = 0; i < length; i++) { + if (in[i] >= sizeof(BASE58TABLE)) { + return -1; + } + tmp[i] = BASE58TABLE[(int) in[i]]; + if (tmp[i] == 0xff) { + return -1; + } + } + while ((zeroCount < length) && (tmp[zeroCount] == 0)) { + ++zeroCount; + } + j = length; + startAt = zeroCount; + while (startAt < length) { + unsigned short remainder = 0; + unsigned char divLoop; + for (divLoop = startAt; divLoop < length; divLoop++) { + unsigned short digit256 = (unsigned short) (tmp[divLoop] & 0xff); + unsigned short tmpDiv = remainder * 58 + digit256; + tmp[divLoop] = (unsigned char) (tmpDiv / 256); + remainder = (tmpDiv % 256); + } + if (tmp[startAt] == 0) { + ++startAt; + } + buffer[--j] = (unsigned char) remainder; + } + while ((j < length) && (buffer[j] == 0)) { + ++j; + } + length = length - (j - zeroCount); + if (*outlen < length) { + return -1; + } + + MEMMOVE(out, buffer + j - zeroCount, length); + *outlen = length; + return 0; +} + +int encode_base58(const unsigned char *in, size_t length, + unsigned char *out, size_t *outlen) { + unsigned char buffer[MAX_ENC_INPUT_SIZE * 138 / 100 + 1] = {0}; + size_t i, j; + size_t startAt, stopAt; + size_t zeroCount = 0; + size_t outputSize; + + if (length > MAX_ENC_INPUT_SIZE) { + return -1; + } + + while ((zeroCount < length) && (in[zeroCount] == 0)) { + ++zeroCount; + } + + outputSize = (length - zeroCount) * 138 / 100 + 1; + stopAt = outputSize - 1; + for (startAt = zeroCount; startAt < length; startAt++) { + int carry = in[startAt]; + for (j = outputSize - 1; (int) j >= 0; j--) { + carry += 256 * buffer[j]; + buffer[j] = carry % 58; + carry /= 58; + + if (j <= stopAt - 1 && carry == 0) { + break; + } + } + stopAt = j; + } + + j = 0; + while (j < outputSize && buffer[j] == 0) { + j += 1; + } + + if (*outlen < zeroCount + outputSize - j) { + *outlen = zeroCount + outputSize - j; + return -1; + } + + MEMSET(out, BASE58ALPHABET[0], zeroCount); + + i = zeroCount; + while (j < outputSize) { + out[i++] = BASE58ALPHABET[buffer[j++]]; + } + *outlen = i; + return 0; +} + +char encode_base58_clip(const unsigned char v) { + return BASE58ALPHABET[v % 58]; +} diff --git a/deps/ledger-zxlib/src/base64.c b/deps/ledger-zxlib/src/base64.c new file mode 100644 index 0000000..ad601f8 --- /dev/null +++ b/deps/ledger-zxlib/src/base64.c @@ -0,0 +1,71 @@ +/******************************************************************************* +* (c) 2020 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#include +#include "base64.h" + +#define BASE64_PADDING_CHAR '=' + +const char base64_charset[] = { + 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', + 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', + 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', + 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/', +}; + +uint16_t base64_encode(char *out, uint16_t outlen, const uint8_t *in, uint16_t inlen) { + MEMZERO(out, outlen); + + // Check uppeer bound or bailout + uint16_t minspace = inlen / 6; + if (inlen % 6 != 0) minspace++; + minspace++; // zero termination + if (outlen < minspace) { + return 0; + } + + int8_t carry_count = 0; + uint8_t carry_value = 0; + uint16_t out_idx = 0; + + for (uint16_t i = 0; i < inlen; i++) { + const uint8_t c = in[i]; + + const uint8_t shift = (6 - carry_count); + const uint8_t idx = (carry_value << shift) | (c >> (carry_count + 2)); + carry_value = c & (0xFFu >> shift); + carry_count += 2; + + out[out_idx++] = base64_charset[idx]; + + // Check if we have another complete byte ready + if (carry_count == 6) { + out[out_idx++] = base64_charset[carry_value]; + carry_value = 0; + carry_count = 0; + } + } + + // If there is any left over add and pad + if (carry_count > 0) { + out[out_idx++] = base64_charset[carry_value << (6 - carry_count)]; + while (carry_count < 6) { + out[out_idx++] = BASE64_PADDING_CHAR; + carry_count += 2; + } + } + + return out_idx; +} diff --git a/deps/ledger-zxlib/src/bech32.c b/deps/ledger-zxlib/src/bech32.c new file mode 100644 index 0000000..21fc639 --- /dev/null +++ b/deps/ledger-zxlib/src/bech32.c @@ -0,0 +1,58 @@ +/******************************************************************************* +* (c) 2019 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include +#include +#include +#include "bech32.h" +#include "segwit_addr.h" +#include "bittools.h" + +zxerr_t bech32EncodeFromBytes(char *out, + size_t out_len, + const char *hrp, + const uint8_t *in, + size_t in_len, + uint8_t pad) { + MEMZERO(out, out_len); + + if (in_len > MAX_INPUT_SIZE) { + return zxerr_out_of_bounds; + } + + size_t hrplen = strlen(hrp); + // We set a lower bound to ensure this is safe + if (out_len < hrplen + (in_len * 2) + 7) { + return zxerr_buffer_too_small; + } + + // Overestimate required size *2==(8/4) instead of *(8/5) + uint8_t tmp_data[MAX_INPUT_SIZE * 2]; + size_t tmp_size = 0; + MEMZERO(tmp_data, sizeof(tmp_data)); + + convert_bits(tmp_data, &tmp_size, 5, in, in_len, 8, pad); + if (tmp_size >= out_len) { + return zxerr_out_of_bounds; + } + + int err = bech32_encode(out, hrp, tmp_data, tmp_size); + if (err == 0) { + return zxerr_encoding_failed; + } + + return zxerr_ok; +} diff --git a/deps/ledger-zxlib/src/bignum.c b/deps/ledger-zxlib/src/bignum.c new file mode 100644 index 0000000..bb68e59 --- /dev/null +++ b/deps/ledger-zxlib/src/bignum.c @@ -0,0 +1,148 @@ +/******************************************************************************* +* (c) 2019 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#include "zxtypes.h" +#include "bignum.h" + +bool_t bignumLittleEndian_bcdprint(char *outBuffer, uint16_t outBufferLen, + const uint8_t *inBCD, uint16_t inBCDLen) { + static const char hexchars[] = "0123456789ABCDEF"; + uint8_t started = 0; + MEMZERO(outBuffer, outBufferLen); + + if (outBufferLen < 4) { + return bool_false; + } + + if (inBCDLen * 2 > outBufferLen) { + strcpy(outBuffer, "ERR"); + return bool_false; + } + + for (uint8_t i = 0; i < inBCDLen; i++, inBCD++) { + if (started || *inBCD != 0) { + if (started || (*inBCD >> 4u) != 0) { + *outBuffer = hexchars[*inBCD >> 4u]; + outBuffer++; + } + *outBuffer = hexchars[*inBCD & 0x0Fu]; + outBuffer++; + started = 1; + } + } + + if (!started) { + strcpy(outBuffer, "0"); + } + + return bool_true; +} + +void bignumLittleEndian_to_bcd(uint8_t *bcdOut, uint16_t bcdOutLen, + const uint8_t *binValue, uint16_t binValueLen) { + MEMZERO(bcdOut, bcdOutLen); + + uint8_t carry; + for (uint16_t bitIdx = 0; bitIdx < binValueLen * 8; bitIdx++) { + // Fix bcd + for (uint16_t j = 0; j < bcdOutLen; j++) { + if ((bcdOut[j] & 0x0Fu) > 0x04u) { + bcdOut[j] += 0x03u; + } + if ((bcdOut[j] & 0xF0u) > 0x40u) { + bcdOut[j] += 0x30u; + } + } + + // get bit + const uint16_t byteIdx = bitIdx >> 3u; + const uint8_t mask = 0x80u >> (bitIdx & 0x7u); + carry = (uint8_t) ((binValue[binValueLen - byteIdx - 1] & mask) > 0); + + // Shift bcd + for (uint16_t j = 0; j < bcdOutLen; j++) { + uint8_t carry2 = (uint8_t) (bcdOut[bcdOutLen - j - 1] > 127u); + bcdOut[bcdOutLen - j - 1] <<= 1u; + bcdOut[bcdOutLen - j - 1] += carry; + carry = carry2; + } + } +} + +bool_t bignumBigEndian_bcdprint(char *outBuffer, uint16_t outBufferLen, + const uint8_t *bcdIn, uint16_t bcdInLen) { + static const char hexchars[] = "0123456789ABCDEF"; + uint8_t started = 0; + MEMZERO(outBuffer, outBufferLen); + + if (outBufferLen < 4) { + return bool_false; + } + + if (bcdInLen * 2 > outBufferLen) { + strcpy(outBuffer, "ERR"); + return bool_false; + } + + for (uint16_t i = 0; i < bcdInLen; i++) { + uint8_t v = bcdIn[bcdInLen - i - 1]; + if (started || v != 0) { + if (started || (v >> 4u) != 0) { + *outBuffer = hexchars[v >> 4u]; + outBuffer++; + } + *outBuffer = hexchars[v & 0x0Fu]; + outBuffer++; + started = 1; + } + } + + if (!started) { + strcpy(outBuffer, "0"); + } + + return bool_true; +} + +void bignumBigEndian_to_bcd(uint8_t *bcdOut, uint16_t bcdOutLen, + const uint8_t *binValue, uint16_t binValueLen) { + MEMZERO(bcdOut, bcdOutLen); + + uint8_t carry; + for (uint16_t bitIdx = 0; bitIdx < binValueLen * 8; bitIdx++) { + // Fix bcd + for (uint16_t j = 0; j < bcdOutLen; j++) { + if ((bcdOut[j] & 0x0Fu) > 0x04u) { + bcdOut[j] += 0x03u; + } + if ((bcdOut[j] & 0xF0u) > 0x40u) { + bcdOut[j] += 0x30u; + } + } + + // get bit + const uint16_t byteIdx = bitIdx >> 3u; + const uint8_t mask = 0x80u >> (bitIdx & 0x7u); + carry = (uint8_t) ((binValue[byteIdx] & mask) > 0); + + // Shift bcd + for (uint16_t j = 0; j < bcdOutLen; j++) { + uint8_t carry2 = (uint8_t) (bcdOut[j] > 127u); + bcdOut[j] <<= 1u; + bcdOut[j] += carry; + carry = carry2; + } + } +} diff --git a/deps/ledger-zxlib/src/buffering.c b/deps/ledger-zxlib/src/buffering.c new file mode 100644 index 0000000..e956782 --- /dev/null +++ b/deps/ledger-zxlib/src/buffering.c @@ -0,0 +1,95 @@ +/******************************************************************************* +* (c) 2018 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "buffering.h" +#include + +#ifdef __cplusplus +extern "C" { +#endif + +buffer_state_t ram; // Ram +buffer_state_t flash; // Flash + +void buffering_init(uint8_t *ram_buffer, + uint16_t ram_buffer_size, + uint8_t *flash_buffer, + uint16_t flash_buffer_size) { + ram.data = ram_buffer; + ram.size = ram_buffer_size; + ram.pos = 0; + ram.in_use = 1; + + flash.data = flash_buffer; + flash.size = flash_buffer_size; + flash.pos = 0; + flash.in_use = 0; +} + +void buffering_reset() { + ram.pos = 0; + ram.in_use = 1; + flash.pos = 0; + flash.in_use = 0; +} + +int buffering_append(uint8_t *data, int length) { + if (ram.in_use) { + if (ram.size - ram.pos >= length) { + // RAM in use, append to ram if there is enough space + MEMCPY(ram.data + ram.pos, data, (size_t) length); + ram.pos += length; + } else { + // If RAM is not big enough copy memory to flash + ram.in_use = 0; + flash.in_use = 1; + if (ram.pos > 0) { + buffering_append(ram.data, ram.pos); + } + int num_bytes = buffering_append(data, length); + ram.pos = 0; + return num_bytes; + } + } else { + // Flash in use, append to flash + if (flash.size - flash.pos >= length) { + MEMCPY_NV(flash.data + flash.pos, data, (size_t) length); + flash.pos += length; + } else { + return 0; + } + } + return length; +} + +buffer_state_t *buffering_get_ram_buffer() { + return &ram; +} + +buffer_state_t *buffering_get_flash_buffer() { + return &flash; +} + +buffer_state_t *buffering_get_buffer() { + if (ram.in_use) { + return &ram; + } + return &flash; +} + +#ifdef __cplusplus +} +#endif diff --git a/deps/ledger-zxlib/src/hexutils.c b/deps/ledger-zxlib/src/hexutils.c new file mode 100644 index 0000000..67e39ef --- /dev/null +++ b/deps/ledger-zxlib/src/hexutils.c @@ -0,0 +1,57 @@ +/******************************************************************************* +* (c) 2018 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include +#include +#include "hexutils.h" + +uint8_t hex2dec(char c, uint8_t *out) { + c = (char) tolower((int) c); + + if (!isxdigit((int) c)) { + return 1; + } + + if (isdigit((int) c)) { + *out = (char) (c - '0'); + return 0; + } + + *out = (char) (c - 'a' + 10); + return 0; +} + +size_t parseHexString(uint8_t *out, uint16_t outLen, const char *input) { + size_t len = strnlen(input, outLen * 2u + 1u); + if ( (len / 2) > outLen) { + return 0; + } + if (len % 2 == 1) { + return 0; + } + + for (size_t i = 0; i < len; i += 2) { + uint8_t tmp1, tmp2; + if (hex2dec(input[i], &tmp1)) + return 0; + if (hex2dec(input[i + 1], &tmp2)) + return 0; + + out[i >> 1u] = (tmp1 << 4u) + tmp2; + } + + return (len / 2); +} diff --git a/deps/ledger-zxlib/src/segwit_addr.c b/deps/ledger-zxlib/src/segwit_addr.c new file mode 100644 index 0000000..23ee214 --- /dev/null +++ b/deps/ledger-zxlib/src/segwit_addr.c @@ -0,0 +1,191 @@ +/* Copyright (c) 2017 Pieter Wuille + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ +#include +#include +#include + +#include "segwit_addr.h" + +uint32_t bech32_polymod_step(uint32_t pre) { + uint8_t b = pre >> 25u; + return ((pre & 0x1FFFFFFu) << 5u) ^ + (-((b >> 0u) & 1u) & 0x3b6a57b2UL) ^ + (-((b >> 1u) & 1u) & 0x26508e6dUL) ^ + (-((b >> 2u) & 1u) & 0x1ea119faUL) ^ + (-((b >> 3u) & 1u) & 0x3d4233ddUL) ^ + (-((b >> 4u) & 1u) & 0x2a1462b3UL); +} + +static const char* charset = "qpzry9x8gf2tvdw0s3jn54khce6mua7l"; + +static const int8_t charset_rev[128] = { + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 15, -1, 10, 17, 21, 20, 26, 30, 7, 5, -1, -1, -1, -1, -1, -1, + -1, 29, -1, 24, 13, 25, 9, 8, 23, -1, 18, 22, 31, 27, 19, -1, + 1, 0, 3, 16, 11, 28, 12, 14, 6, 4, 2, -1, -1, -1, -1, -1, + -1, 29, -1, 24, 13, 25, 9, 8, 23, -1, 18, 22, 31, 27, 19, -1, + 1, 0, 3, 16, 11, 28, 12, 14, 6, 4, 2, -1, -1, -1, -1, -1 +}; + +int bech32_encode(char *output, const char *hrp, const uint8_t *data, size_t data_len) { + uint32_t chk = 1; + size_t i = 0; + while (hrp[i] != 0) { + char ch = hrp[i]; + if (ch < 33 || ch > 126) { + return 0; + } + + if (ch >= 'A' && ch <= 'Z') return 0; + chk = bech32_polymod_step(chk) ^ (ch >> 5u); + ++i; + } + if (i + 7 + data_len > 90) return 0; + chk = bech32_polymod_step(chk); + while (*hrp != 0) { + chk = bech32_polymod_step(chk) ^ (*hrp & 0x1fu); + *(output++) = *(hrp++); + } + *(output++) = '1'; + for (i = 0; i < data_len; ++i) { + if (*data >> 5u) return 0; + chk = bech32_polymod_step(chk) ^ (*data); + *(output++) = charset[*(data++)]; + } + for (i = 0; i < 6; ++i) { + chk = bech32_polymod_step(chk); + } + chk ^= 1; + for (i = 0; i < 6; ++i) { + *(output++) = charset[(chk >> ((5u - i) * 5u)) & 0x1fu]; + } + *output = 0; + return 1; +} + +int bech32_decode(char* hrp, uint8_t *data, size_t *data_len, const char *input) { + uint32_t chk = 1; + size_t i; + size_t input_len = strlen(input); + size_t hrp_len; + int have_lower = 0, have_upper = 0; + if (input_len < 8 || input_len > 90) { + return 0; + } + *data_len = 0; + while (*data_len < input_len && input[(input_len - 1) - *data_len] != '1') { + ++(*data_len); + } + hrp_len = input_len - (1 + *data_len); + if (1 + *data_len >= input_len || *data_len < 6) { + return 0; + } + *(data_len) -= 6; + for (i = 0; i < hrp_len; ++i) { + char ch = input[i]; + if (ch < 33 || ch > 126) { + return 0; + } + if (ch >= 'a' && ch <= 'z') { + have_lower = 1; + } else if (ch >= 'A' && ch <= 'Z') { + have_upper = 1; + ch = (ch - 'A') + 'a'; + } + hrp[i] = ch; + chk = bech32_polymod_step(chk) ^ (ch >> 5u); + } + hrp[i] = 0; + chk = bech32_polymod_step(chk); + for (i = 0; i < hrp_len; ++i) { + chk = bech32_polymod_step(chk) ^ (input[i] & 0x1fu); + } + ++i; + while (i < input_len) { + int v = (input[i] & 0x80u) ? -1 : charset_rev[(int)input[i]]; + if (input[i] >= 'a' && input[i] <= 'z') have_lower = 1; + if (input[i] >= 'A' && input[i] <= 'Z') have_upper = 1; + if (v == -1) { + return 0; + } + chk = bech32_polymod_step(chk) ^ v; + if (i + 6 < input_len) { + data[i - (1 + hrp_len)] = v; + } + ++i; + } + if (have_lower && have_upper) { + return 0; + } + return chk == 1; +} + +int convert_bits(uint8_t* out, size_t* outlen, int outBits, const uint8_t* in, size_t inLen, int inBits, int pad) { + uint32_t val = 0; + int bits = 0; + uint32_t maxv = (((uint32_t)1u) << outBits) - 1u; + while (inLen--) { + val = (val << inBits) | *(in++); + bits += inBits; + while (bits >= outBits) { + bits -= outBits; + out[(*outlen)++] = (val >> bits) & maxv; + } + } + if (pad) { + if (bits) { + out[(*outlen)++] = (val << (outBits - bits)) & maxv; + } + } else if (((val << (outBits - bits)) & maxv) || bits >= inBits) { + return 0; + } + return 1; +} + +int segwit_addr_encode(char *output, const char *hrp, int witver, const uint8_t *witprog, size_t witprog_len) { + uint8_t data[65]; + size_t datalen = 0; + if (witver > 16) return 0; + if (witver == 0 && witprog_len != 20 && witprog_len != 32) return 0; + if (witprog_len < 2 || witprog_len > 40) return 0; + data[0] = witver; + convert_bits(data + 1, &datalen, 5, witprog, witprog_len, 8, 1); + ++datalen; + return bech32_encode(output, hrp, data, datalen); +} + +int segwit_addr_decode(int* witver, uint8_t* witdata, size_t* witdata_len, const char* hrp, const char* addr) { + uint8_t data[84]; + char hrp_actual[84]; + size_t data_len; + if (!bech32_decode(hrp_actual, data, &data_len, addr)) return 0; + if (data_len == 0 || data_len > 65) return 0; + if (strncmp(hrp, hrp_actual, 84) != 0) return 0; + if (data[0] > 16) return 0; + *witdata_len = 0; + if (!convert_bits(witdata, witdata_len, 8, data + 1, data_len - 1, 5, 0)) return 0; + if (*witdata_len < 2 || *witdata_len > 40) return 0; + if (data[0] == 0 && *witdata_len != 20 && *witdata_len != 32) return 0; + *witver = data[0]; + return 1; +} diff --git a/deps/ledger-zxlib/src/sigutils.c b/deps/ledger-zxlib/src/sigutils.c new file mode 100644 index 0000000..107088f --- /dev/null +++ b/deps/ledger-zxlib/src/sigutils.c @@ -0,0 +1,115 @@ +/******************************************************************************* +* (c) 2020 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include +#include + +#define MINPAYLOADLEN 1 +#define PAYLOADLEN 32 +#define MAXPAYLOADLEN 33 + +err_convert_e convertDERtoRSV(const uint8_t *inSignatureDER, + unsigned int inInfo, + uint8_t *outR, + uint8_t *outS, + uint8_t *outV) { + + // https://github.com/libbitcoin/libbitcoin-system/wiki/ECDSA-and-DER-Signatures#serialised-der-signature-sequence + // 0 [1 byte] - DER Prefix + // 1 [1 byte] - Payload len + // 2 [1 byte] - R Marker. Always 02 + // 3 [1 byte] - R Len RLEN + // ROFFSET ... [.?. byte] - R ROFFSET + // ROFFSET+RLEN [1 byte] - S Marker. Always 02 + // ROFFSET+RLEN+1 [1 byte] - S Length SLEN + // ROFFSET+RLEN+2 [.?. byte] - S SOFFSET + // Prepare response + // R [32] + // S [32] + // V [1] + + MEMZERO(outR, 32); + MEMZERO(outS, 32); + MEMZERO(outV, 1); + + const uint8_t derPrefix = *(inSignatureDER); + if (derPrefix != 0x30) { + return invalid_derPrefix; + } + + const uint8_t payloadLen = *(inSignatureDER + 1); + const uint8_t minPayloadLen = 2 + MINPAYLOADLEN + 2 + MINPAYLOADLEN; + const uint8_t maxPayloadLen = 2 + MAXPAYLOADLEN + 2 + MAXPAYLOADLEN; + if (payloadLen < minPayloadLen || payloadLen > maxPayloadLen) { + return invalid_payloadLen; + } + + const uint8_t rMarker = *(inSignatureDER + 2); + if (rMarker != 0x02) { + return invalid_rmaker; + } + + uint8_t rLen = *(inSignatureDER + 3); + if (rLen > MAXPAYLOADLEN || rLen < MINPAYLOADLEN) { + return invalid_rLen; + } + + const uint8_t sMarker = *(inSignatureDER + 4 + rLen); + if (sMarker != 0x02) { + return invalid_smarker; + } + + uint8_t sLen = *(inSignatureDER + 4 + rLen + 1); + if (sLen > MAXPAYLOADLEN || sLen < MINPAYLOADLEN) { + return invalid_sLen; + } + + // Get data fields + const uint8_t *rPtr = inSignatureDER + 4; + const uint8_t *sPtr = inSignatureDER + 4 + rLen + 2; + + // Correct field pointers + if (rLen < PAYLOADLEN) { + outR += PAYLOADLEN - rLen; + } + if (rLen > PAYLOADLEN) { + rPtr += rLen - PAYLOADLEN; // move forward get only 32 bytes + rLen = PAYLOADLEN; + } + + if (sLen < PAYLOADLEN) { + outS += PAYLOADLEN - sLen; + } + if (sLen > PAYLOADLEN) { + sPtr += sLen - PAYLOADLEN; // move forward get only 32 bytes + sLen = PAYLOADLEN; + } + + // Prepare V + *outV = 0; + if (inInfo & CX_ECCINFO_PARITY_ODD) { + *outV += 1; + } + if (inInfo & CX_ECCINFO_xGTn) { + *outV += 2; + } + + // Copy things + MEMCPY(outR, rPtr, rLen); + MEMCPY(outS, sPtr, sLen); + + return no_error; +} diff --git a/deps/ledger-zxlib/src/timeutils.c b/deps/ledger-zxlib/src/timeutils.c new file mode 100644 index 0000000..0efa919 --- /dev/null +++ b/deps/ledger-zxlib/src/timeutils.c @@ -0,0 +1,508 @@ +/******************************************************************************* +* (c) 2018 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#include "zxmacros.h" +#include "timeutils.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +const uint8_t monthDays[] = { + 31, + 28, + 31, + 30, + 31, + 30, + 31, + 31, + 30, + 31, + 30, + 31 +}; + +const uint32_t yearLookup[] = { + 0, + 365, + 730, + 1096, + 1461, + 1826, + 2191, + 2557, + 2922, + 3287, + 3652, + 4018, + 4383, + 4748, + 5113, + 5479, + 5844, + 6209, + 6574, + 6940, + 7305, + 7670, + 8035, + 8401, + 8766, + 9131, + 9496, + 9862, + 10227, + 10592, + 10957, + 11323, + 11688, + 12053, + 12418, + 12784, + 13149, + 13514, + 13879, + 14245, + 14610, + 14975, + 15340, + 15706, + 16071, + 16436, + 16801, + 17167, + 17532, + 17897, + 18262, + 18628, + 18993, + 19358, + 19723, + 20089, + 20454, + 20819, + 21184, + 21550, + 21915, + 22280, + 22645, + 23011, + 23376, + 23741, + 24106, + 24472, + 24837, + 25202, + 25567, + 25933, + 26298, + 26663, + 27028, + 27394, + 27759, + 28124, + 28489, + 28855, + 29220, + 29585, + 29950, + 30316, + 30681, + 31046, + 31411, + 31777, + 32142, + 32507, + 32872, + 33238, + 33603, + 33968, + 34333, + 34699, + 35064, + 35429, + 35794, + 36160, + 36525, + 36890, + 37255, + 37621, + 37986, + 38351, + 38716, + 39082, + 39447, + 39812, + 40177, + 40543, + 40908, + 41273, + 41638, + 42004, + 42369, + 42734, + 43099, + 43465, + 43830, + 44195, + 44560, + 44926, + 45291, + 45656, + 46021, + 46387, + 46752, + 47117, + 47482, + 47847, + 48212, + 48577, + 48942, + 49308, + 49673, + 50038, + 50403, + 50769, + 51134, + 51499, + 51864, + 52230, + 52595, + 52960, + 53325, + 53691, + 54056, + 54421, + 54786, + 55152, + 55517, + 55882, + 56247, + 56613, + 56978, + 57343, + 57708, + 58074, + 58439, + 58804, + 59169, + 59535, + 59900, + 60265, + 60630, + 60996, + 61361, + 61726, + 62091, + 62457, + 62822, + 63187, + 63552, + 63918, + 64283, + 64648, + 65013, + 65379, + 65744, + 66109, + 66474, + 66840, + 67205, + 67570, + 67935, + 68301, + 68666, + 69031, + 69396, + 69762, + 70127, + 70492, + 70857, + 71223, + 71588, + 71953, + 72318, + 72684, + 73049, + 73414, + 73779, + 74145, + 74510, + 74875, + 75240, + 75606, + 75971, + 76336, + 76701, + 77067, + 77432, + 77797, + 78162, + 78528, + 78893, + 79258, + 79623, + 79989, + 80354, + 80719, + 81084, + 81450, + 81815, + 82180, + 82545, + 82911, + 83276, + 83641, + 84006, + 84371, + 84736, + 85101, + 85466, + 85832, + 86197, + 86562, + 86927, + 87293, + 87658, + 88023, + 88388, + 88754, + 89119, + 89484, + 89849, + 90215, + 90580, + 90945, + 91310, + 91676, + 92041, + 92406, + 92771, + 93137, + 93502, + 93867, + 94232, + 94598, + 94963, + 95328, + 95693, + 96059, + 96424, + 96789, + 97154, + 97520, + 97885, + 98250, + 98615, + 98981, + 99346, + 99711, + 100076, + 100442, + 100807, + 101172, + 101537, + 101903, + 102268, + 102633, + 102998, + 103364, + 103729, + 104094, + 104459, + 104825, + 105190, + 105555, + 105920, + 106286, + 106651, + 107016, + 107381, + 107747, + 108112, + 108477, + 108842, + 109208, + 109573, + 109938, + 110303, + 110669, + 111034, + 111399, + 111764, + 112130, + 112495, + 112860, + 113225, + 113591, + 113956, + 114321, + 114686, + 115052, + 115417, + 115782, + 116147, + 116513, + 116878, + 117243, + 117608, + 117974, + 118339, + 118704, + 119069, + 119435, + 119800, + 120165, + 120530, + 120895, + 121260, + 121625, + 121990, + 122356, + 122721, + 123086, + 123451, + 123817, + 124182, + 124547, + 124912, + 125278, + 125643, + 126008, + 126373, + 126739, + 127104, + 127469, + 127834, + 128200, + 128565, + 128930, + 129295, + 129661, + 130026, + 130391, + 130756, + 131122, + 131487, + 131852, + 132217, + 132583, + 132948, + 133313, + 133678, + 134044, + 134409, + 134774, + 135139, + 135505, + 135870, + 136235, + 136600, + 136966, + 137331, + 137696, + 138061, + 138427, + 138792, + 139157, + 139522, + 139888, + 140253, + 140618, + 140983, + 141349, + 141714, + 142079, + 142444, + 142810, + 143175, + 143540, + 143905, + 144271, + 144636, + 145001, + 145366, + 145732, +}; + +// ARM does not implement gmtime. This is a simple alternative implementation +// based on section 4.16 +// https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html +zxerr_t printTime(char *out, uint16_t outLen, uint64_t t) { + uint8_t tm_sec; + uint8_t tm_min; + uint8_t tm_hour; + uint16_t tm_day; + uint8_t tm_mon; + uint16_t tm_year; + + tm_sec = (uint8_t) (t % 60); + t -= tm_sec; + t /= 60; + + tm_min = (uint8_t) (t % 60); + t -= tm_min; + t /= 60; + + tm_hour = (uint8_t) (t % 24); + t -= tm_hour; + t /= 24; + + // Look up tm_year + tm_year = 0; + const uint16_t yearLookupSize = sizeof(yearLookup)/sizeof(yearLookup[0]); + while (tm_year < yearLookupSize && yearLookup[tm_year] <= t) tm_year++; + + if (tm_year == 0 || tm_year == yearLookupSize) { + return zxerr_out_of_bounds; + } + tm_year--; + + tm_day = (uint16_t) (t - yearLookup[tm_year] + 1); + tm_year = (uint16_t) (1970 + tm_year); + + // Get day/month + uint8_t leap = (uint8_t) (tm_year % 4 == 0 && (tm_year % 100 != 0 || tm_year % 400 == 0) ? 1 : 0); + + for (tm_mon = 0; tm_mon < 12; tm_mon++) { + uint8_t tmp = monthDays[tm_mon]; + tmp += (tm_mon == 1 ? leap : 0); + if (tm_day <= tmp) { + break; + } + tm_day -= tmp; + } + tm_mon++; + + const char *monthName = getMonth(tm_mon); + + // YYYYmmdd HH:MM:SS + snprintf(out, outLen, "%02d%s%04d %02d:%02d:%02dUTC", + tm_day, + monthName, + tm_year, + tm_hour, tm_min, tm_sec + ); + + return zxerr_ok; +} + +#ifdef __cplusplus +} +#endif diff --git a/deps/ledger-zxlib/src/zbuffer.c b/deps/ledger-zxlib/src/zbuffer.c new file mode 100644 index 0000000..cbc7f61 --- /dev/null +++ b/deps/ledger-zxlib/src/zbuffer.c @@ -0,0 +1,88 @@ +/******************************************************************************* +* (c) 2020 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "zbuffer.h" +#include "zxmacros.h" + +typedef struct { + uint8_t *ptr; + uint16_t size; +} zbuffer_t; + +zbuffer_t zbuffer_internal; + +#define CANARY_EXPECTED 0x987def82u + +zbuffer_error_e zb_get(uint8_t **buffer) { +#if defined (TARGET_NANOS) || defined(TARGET_NANOX) + *buffer = NULL; + if (zbuffer_internal.size == 0 || zbuffer_internal.ptr == NULL) { + return zb_not_allocated; + } + *buffer = zbuffer_internal.ptr; +#endif + return zb_no_error; +} + +zbuffer_error_e zb_init() { +#if defined (TARGET_NANOS) || defined(TARGET_NANOX) + zbuffer_internal.size = 0; + zbuffer_internal.ptr = NULL; +#endif + return zb_no_error; +} + +zbuffer_error_e zb_allocate(uint16_t size) { +#if defined (TARGET_NANOS) || defined(TARGET_NANOX) + if (size % 4 != 0) { + size += size % 4; + } + zbuffer_internal.size = size; + zbuffer_internal.ptr = (uint8_t * )(&app_stack_canary + 4); + + uint32_t *zb_canary = (uint32_t * )(zbuffer_internal.ptr + zbuffer_internal.size + 4); + *zb_canary = CANARY_EXPECTED; +#endif + return zb_no_error; +} + +zbuffer_error_e zb_deallocate() { +#if defined (TARGET_NANOS) || defined(TARGET_NANOX) + if (zbuffer_internal.size == 0) { + return zb_not_allocated; + } + + // Flush any information + MEMZERO(zbuffer_internal.ptr, zbuffer_internal.size); + + zb_init(); +#endif + return zb_no_error; +} + +zbuffer_error_e zb_check_canary() { +#if defined (TARGET_NANOS) || defined(TARGET_NANOX) + CHECK_APP_CANARY(); + if (zbuffer_internal.size != 0) { + // allocated + uint32_t *zb_canary = (uint32_t * )(zbuffer_internal.ptr + zbuffer_internal.size + 4); + if (*zb_canary != CANARY_EXPECTED) { + handle_stack_overflow(); + } + } +#endif + return zb_no_error; +} diff --git a/deps/ledger-zxlib/src/zxformat.c b/deps/ledger-zxlib/src/zxformat.c new file mode 100644 index 0000000..d553afd --- /dev/null +++ b/deps/ledger-zxlib/src/zxformat.c @@ -0,0 +1,83 @@ +/******************************************************************************* +* (c) 2020 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#include "zxformat.h" + +uint8_t intstr_to_fpstr_inplace(char *number, size_t number_max_size, uint8_t decimalPlaces) { + uint16_t numChars = strnlen(number, number_max_size); + MEMZERO(number + numChars, number_max_size - numChars); + + if (number_max_size < 1) { + // No space to do anything + return 0; + } + + if (numChars == 0) { + // Empty number, make a zero + snprintf(number, number_max_size, "0"); + numChars = 1; + } + + // Check all are numbers + uint16_t firstDigit = numChars; + for (int i = 0; i < numChars; i++) { + if (number[i] < '0' || number[i] > '9') { + snprintf(number, number_max_size, "ERR"); + return 0; + } + if (number[i] != '0' && firstDigit > i) { + firstDigit = i; + } + } + + // Trim any incorrect leading zeros + if (firstDigit == numChars) { + snprintf(number, number_max_size, "0"); + numChars = 1; + } else { + // Trim leading zeros + MEMCPY(number, number + firstDigit, numChars - firstDigit); + MEMZERO(number + numChars - firstDigit, firstDigit); + } + + // If there are no decimal places return + if (decimalPlaces == 0) { + return numChars; + } + + // Now insert decimal point + +// 0123456789012 <-decimal places +// abcd < numChars = 4 +// abcd < shift +// 000000000abcd < fill +// 0.00000000abcd < add decimal point + + if (numChars < decimalPlaces + 1) { + // Move to end + const uint16_t padSize = decimalPlaces - numChars + 1; + MEMMOVE(number + padSize, number, numChars); + MEMSET(number, '0', padSize); + numChars = strlen(number); + } + + // add decimal point + const uint16_t pointPosition = numChars - decimalPlaces; + MEMMOVE(number + pointPosition + 1, number + pointPosition, decimalPlaces); // shift content + number[pointPosition] = '.'; + + numChars = strlen(number); + return numChars; +} diff --git a/deps/ledger-zxlib/src/zxmacros.c b/deps/ledger-zxlib/src/zxmacros.c new file mode 100644 index 0000000..11b36e2 --- /dev/null +++ b/deps/ledger-zxlib/src/zxmacros.c @@ -0,0 +1,69 @@ +/******************************************************************************* +* (c) 2018 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#include "zxmacros.h" +#include "utf8.h" + +size_t asciify(char *utf8_in_ascii_out) { + return asciify_ext(utf8_in_ascii_out, utf8_in_ascii_out); +} + +size_t asciify_ext(const char *utf8_in, char *ascii_only_out) { + void *p = (void *) utf8_in; + char *q = ascii_only_out; + + // utf8valid returns zero on success + while (*((char *) p) && utf8valid(p) == 0) { + utf8_int32_t tmp_codepoint = 0; + p = utf8codepoint(p, &tmp_codepoint); + *q = (char) ((tmp_codepoint >= 32 && tmp_codepoint <= (int32_t) 0x7F) ? tmp_codepoint : '.'); + q++; + } + + // Terminate string + *q = 0; + return q - ascii_only_out; +} + +void handle_stack_overflow() { + zemu_log("!!!!!!!!!!!!!!!!!!!!!! CANARY TRIGGERED!!! STACK OVERFLOW DETECTED\n"); +#if defined (TARGET_NANOS) || defined(TARGET_NANOX) + io_seproxyhal_se_reset(); +#else + while (1); +#endif +} + +void check_app_canary() { +#if defined (TARGET_NANOS) || defined(TARGET_NANOX) + if (app_stack_canary != APP_STACK_CANARY_MAGIC) handle_stack_overflow(); +#endif +} + +void zemu_log_stack(char *ctx) { +#if defined(ZEMU_LOGGING) +#if defined (TARGET_NANOS) || defined(TARGET_NANOX) +#define STACK_SHIFT 20 + void* p = NULL; + char buf[70]; + snprintf(buf, sizeof(buf), "|SP| %p %p (%d) : %s\n", + &app_stack_canary, + ((void*)&p)+STACK_SHIFT, + (uint32_t)((void*)&p)+STACK_SHIFT - (uint32_t)&app_stack_canary, + ctx); + zemu_log(buf); +#endif +#endif +} diff --git a/deps/ledger-zxlib/templates/Makefile.root b/deps/ledger-zxlib/templates/Makefile.root new file mode 100644 index 0000000..7c21132 --- /dev/null +++ b/deps/ledger-zxlib/templates/Makefile.root @@ -0,0 +1,29 @@ +#******************************************************************************* +#* (c) 2019 Zondax GmbH +#* +#* Licensed under the Apache License, Version 2.0 (the "License"); +#* you may not use this file except in compliance with the License. +#* You may obtain a copy of the License at +#* +#* http://www.apache.org/licenses/LICENSE-2.0 +#* +#* Unless required by applicable law or agreed to in writing, software +#* distributed under the License is distributed on an "AS IS" BASIS, +#* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +#* See the License for the specific language governing permissions and +#* limitations under the License. +#******************************************************************************** + +# We use BOLOS_SDK to determine the develoment environment that is being used +# BOLOS_SDK IS DEFINED We use the plain Makefile for Ledger +# BOLOS_SDK NOT DEFINED We use a containerized build approach + +ifeq ($(BOLOS_SDK),) +include $(CURDIR)/deps/ledger-zxlib/cmake/dockerized_build.mk +else +default: + $(MAKE) -C app +%: + $(info "Calling app Makefile for target $@") + COIN=$(COIN) $(MAKE) -C app $@ +endif diff --git a/deps/ledger-zxlib/tests/asciify.cpp b/deps/ledger-zxlib/tests/asciify.cpp new file mode 100644 index 0000000..245f0f9 --- /dev/null +++ b/deps/ledger-zxlib/tests/asciify.cpp @@ -0,0 +1,118 @@ +/******************************************************************************* +* (c) 2018 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#include +#include + +namespace { + TEST(ASCIIFY, pure) { + char input[] = "This is only ascii"; + char have[50]; + + asciify_ext(input, have); + + EXPECT_STREQ(input, have); + } + + TEST(ASCIIFY, ascii_below_32) { + char input[] = "\05test"; + char want[] = ".test"; + char have[50]; + + EXPECT_EQ(5, strlen(input)); + + size_t ascii_len = asciify_ext(input, have); + std::cout << have << std::endl; + + EXPECT_EQ(strlen(want), ascii_len); + EXPECT_STREQ(want, have); + } + + TEST(ASCIIFY, extended) { + char input[] = "cumpleaños"; + char want[] = "cumplea.os"; + char have[50]; + + EXPECT_EQ(11, strlen(input)); + + size_t ascii_len = asciify_ext(input, have); + std::cout << have << std::endl; + + EXPECT_EQ(strlen(want), ascii_len); + EXPECT_STREQ(want, have); + } + + TEST(ASCIIFY, utf8) { + char input[] = "哈Something哈"; + char want[] = ".Something."; + char have[50]; + + EXPECT_EQ(15, strlen(input)); + + size_t ascii_len = asciify_ext(input, have); + std::cout << have << std::endl; + + EXPECT_EQ(strlen(want), ascii_len); + EXPECT_STREQ(want, have); + } + + TEST(ASCIIFY, inplace_pure) { + char data[] = "This is only ascii"; + char want[] = "This is only ascii"; + + asciify(data); + EXPECT_STREQ(want, data); + } + + TEST(ASCIIFY, inplace_ascii_below_32) { + char data[] = "\05test"; + char want[] = ".test"; + + EXPECT_EQ(5, strlen(data)); + + size_t ascii_len = asciify(data); + std::cout << data << std::endl; + + EXPECT_EQ(strlen(want), ascii_len); + EXPECT_STREQ(want, data); + } + + TEST(ASCIIFY, inplace_extended) { + char data[] = "cumpleaños"; + char want[] = "cumplea.os"; + + EXPECT_EQ(11, strlen(data)); + + size_t ascii_len = asciify(data); + std::cout << data << std::endl; + + EXPECT_EQ(strlen(want), ascii_len); + EXPECT_STREQ(want, data); + } + + TEST(ASCIIFY, inplace_utf8) { + char data[] = "哈Something哈"; + char want[] = ".Something."; + + EXPECT_EQ(15, strlen(data)); + + size_t ascii_len = asciify(data); + std::cout << data << std::endl; + + EXPECT_EQ(strlen(want), ascii_len); + EXPECT_STREQ(want, data); + } + +} diff --git a/deps/ledger-zxlib/tests/base64.cpp b/deps/ledger-zxlib/tests/base64.cpp new file mode 100644 index 0000000..fe24854 --- /dev/null +++ b/deps/ledger-zxlib/tests/base64.cpp @@ -0,0 +1,57 @@ +/******************************************************************************* +* (c) 2019 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#include +#include "base64.h" + +namespace { + TEST(BASE64, basic_case) { + char out[100]; + uint8_t data[] = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19}; + + base64_encode(out, sizeof(out), data, 0); + EXPECT_STREQ(out, ""); + + base64_encode(out, sizeof(out), data, 1); + EXPECT_STREQ(out, "AQ=="); + + base64_encode(out, sizeof(out), data, 2); + EXPECT_STREQ(out, "AQM="); + + base64_encode(out, sizeof(out), data, 3); + EXPECT_STREQ(out, "AQMF"); + + base64_encode(out, sizeof(out), data, 4); + EXPECT_STREQ(out, "AQMFBw=="); + + base64_encode(out, sizeof(out), data, 5); + EXPECT_STREQ(out, "AQMFBwk="); + + base64_encode(out, sizeof(out), data, 6); + EXPECT_STREQ(out, "AQMFBwkL"); + + base64_encode(out, sizeof(out), data, 7); + EXPECT_STREQ(out, "AQMFBwkLDQ=="); + + base64_encode(out, sizeof(out), data, 8); + EXPECT_STREQ(out, "AQMFBwkLDQ8="); + + base64_encode(out, sizeof(out), data, 9); + EXPECT_STREQ(out, "AQMFBwkLDQ8R"); + + base64_encode(out, sizeof(out), data, 10); + EXPECT_STREQ(out, "AQMFBwkLDQ8REw=="); + }; +} diff --git a/deps/ledger-zxlib/tests/bech32.cpp b/deps/ledger-zxlib/tests/bech32.cpp new file mode 100644 index 0000000..4e79141 --- /dev/null +++ b/deps/ledger-zxlib/tests/bech32.cpp @@ -0,0 +1,83 @@ +/******************************************************************************* +* (c) 2019 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#include +#include +#include +#include + +namespace { + TEST(BECH32, hex_to_address) { + char addr_out[100]; + const char *hrp = "zx"; + + uint8_t data1[] = {1, 3, 5}; + uint8_t data2[] = {1, 3, 5, 7, 9, 11, 13}; + + auto err = bech32EncodeFromBytes(addr_out, sizeof(addr_out), hrp, data1, sizeof(data1), 0); + ASSERT_EQ(err, zxerr_ok); + std::cout << addr_out << std::endl; + ASSERT_STREQ("zx1qypse825ac", addr_out); + + err = bech32EncodeFromBytes(addr_out, sizeof(addr_out), hrp, data2, sizeof(data2), 0); + ASSERT_EQ(err, zxerr_ok); + std::cout << addr_out << std::endl; + ASSERT_STREQ("zx1qyps2pcfpvx20dk22", addr_out); + + /// + err = bech32EncodeFromBytes(addr_out, sizeof(addr_out), hrp, data1, sizeof(data1), 1); + ASSERT_EQ(err, zxerr_ok); + std::cout << addr_out << std::endl; + ASSERT_STREQ("zx1qyps2ucfnzd", addr_out); + + err = bech32EncodeFromBytes(addr_out, sizeof(addr_out), hrp, data2, sizeof(data2), 1); + ASSERT_EQ(err, zxerr_ok); + std::cout << addr_out << std::endl; + ASSERT_STREQ("zx1qyps2pcfpvxshamanz", addr_out); + } + + TEST(BECH32, huge_input) { + char addr_out[200]; + const char *hrp = "zx"; + + auto data = std::vector(1000, 0x55); + + auto err = bech32EncodeFromBytes(addr_out, sizeof(addr_out), hrp, data.data(), data.size(),0); + ASSERT_EQ(err, zxerr_out_of_bounds); + + std::cout << addr_out << std::endl; + } + + TEST(BECH32, small_output) { + char addr_out[1000]; + const char *hrp = "zx"; + + auto data = std::vector(32, 0x55); + + MEMZERO(addr_out, sizeof(addr_out)); + + // declare size to be smaller + const size_t declared_size = 52; + + auto err = bech32EncodeFromBytes(addr_out, declared_size, hrp, data.data(), data.size(), 0); + ASSERT_EQ(err, zxerr_buffer_too_small); + + for (int i = declared_size; i < sizeof(addr_out); i++) { + ASSERT_EQ(addr_out[i], 0); + } + + std::cout << addr_out << std::endl; + } +} diff --git a/deps/ledger-zxlib/tests/bip44path.cpp b/deps/ledger-zxlib/tests/bip44path.cpp new file mode 100644 index 0000000..c4cb7a4 --- /dev/null +++ b/deps/ledger-zxlib/tests/bip44path.cpp @@ -0,0 +1,88 @@ +/******************************************************************************* +* (c) 2018 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#include +#include + +namespace { + TEST(MACROS, bip32empty) { + char buffer[100]; + uint32_t path[] = {44, 60, 0, 0, 1}; + bip32_to_str(buffer, sizeof(buffer), path, 0); + EXPECT_EQ("EMPTY PATH", std::string(buffer)); + } + + TEST(MACROS, bip32tooManyChildren) { + char buffer[100]; + uint32_t path[] = {44, 60, 0, 0, 1}; + bip32_to_str(buffer, sizeof(buffer), path, 200); + EXPECT_EQ("ERROR", std::string(buffer)); + } + + TEST(MACROS, bip32notEnoughSpaceInBuffer1) { + char buffer[6]; + uint32_t path[] = {1234, 60, 0, 0, 1}; + bip32_to_str(buffer, sizeof(buffer), path, 5); + EXPECT_EQ("ERROR", std::string(buffer)); + } + + TEST(MACROS, bip32notEnoughSpaceInBuffer2) { + char buffer[9]; + uint32_t path[] = {1, 1, 1, 1, 1}; + bip32_to_str(buffer, sizeof(buffer), path, 5); + EXPECT_EQ("ERROR", std::string(buffer)); + } + + TEST(MACROS, bip32notEnoughSpaceInBuffer3) { + char buffer[10]; + uint32_t path[] = {1, 1, 1, 1, 0x80000001 }; + bip32_to_str(buffer, sizeof(buffer), path, 5); + EXPECT_EQ("ERROR", std::string(buffer)); + } + + TEST(MACROS, bip32justEnoughSpaceInBuffer3) { + char buffer[10]; + uint32_t path[] = {1, 1, 1, 1, 1}; + bip32_to_str(buffer, sizeof(buffer), path, 5); + EXPECT_EQ("1/1/1/1/1", std::string(buffer)); + } + + TEST(MACROS, bip44path1) { + uint32_t path[] = {44, 60, 0, 0, 1}; + + char buffer[100]; + bip44_to_str(buffer, sizeof(buffer), path); + + EXPECT_EQ("44/60/0/0/1", std::string(buffer)); + } + + TEST(MACROS, bip44path2) { + uint32_t path[] = {0x8000002c, 60, 0, 0, 1}; + + char buffer[100]; + bip44_to_str(buffer, sizeof(buffer), path); + + EXPECT_EQ("44'/60/0/0/1", std::string(buffer)); + } + + TEST(MACROS, bip44path3) { + uint32_t path[] = {0x8000002c, 60, 0, 0, 0x80000001}; + + char buffer[100]; + bip44_to_str(buffer, sizeof(buffer), path); + + EXPECT_EQ("44'/60/0/0/1'", std::string(buffer)); + } +} diff --git a/deps/ledger-zxlib/tests/buffering_tests.cpp b/deps/ledger-zxlib/tests/buffering_tests.cpp new file mode 100644 index 0000000..c7292d1 --- /dev/null +++ b/deps/ledger-zxlib/tests/buffering_tests.cpp @@ -0,0 +1,229 @@ +/******************************************************************************* +* (c) 2018 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "gtest/gtest.h" +#include "buffering.h" + +namespace { + + TEST(Buffering, SmallBuffer) { + uint8_t ram_buffer[100]; + uint8_t flash_buffer[1000]; + + buffering_init(ram_buffer, + sizeof(ram_buffer), + flash_buffer, + sizeof(flash_buffer)); + + // Data is small enough to fit into ram buffer + uint8_t small[50]; + auto num_bytes = buffering_append(small, sizeof(small)); + EXPECT_EQ(sizeof(small), num_bytes) << "Append should not return error"; + + EXPECT_TRUE(buffering_get_ram_buffer()->in_use) << "Writing small buffer should only write to RAM"; + EXPECT_FALSE(buffering_get_flash_buffer()->in_use) << "Writing big buffer should write data to FLASH"; + EXPECT_EQ(50, buffering_get_ram_buffer()->pos) << "Wrong position of the written data in the ram buffer"; + EXPECT_EQ(100, buffering_get_ram_buffer()->size) << "Wrong size of the ram buffer"; + EXPECT_EQ(0, buffering_get_flash_buffer()->pos) << "Wrong position of the written data in the flash buffer"; + EXPECT_EQ(1000, buffering_get_flash_buffer()->size) << "Wrong size of the flash buffer"; + } + + TEST(Buffering, BigBuffer) { + uint8_t ram_buffer[100]; + uint8_t flash_buffer[1000]; + + buffering_init(ram_buffer, + sizeof(ram_buffer), + flash_buffer, + sizeof(flash_buffer)); + + // Data is too big to fit into ram buffer, it will be written directly to flash + uint8_t big[500]; + auto num_bytes = buffering_append(big, sizeof(big)); + EXPECT_EQ(sizeof(big), num_bytes) << "Append should not return error"; + + EXPECT_FALSE(buffering_get_ram_buffer()->in_use) << "Writing big buffer should write data to FLASH"; + EXPECT_TRUE(buffering_get_flash_buffer()->in_use) << "Writing big buffer should write data to FLASH"; + EXPECT_EQ(0, buffering_get_ram_buffer()->pos) << "Wrong position of the written data in the ram buffer"; + EXPECT_EQ(100, buffering_get_ram_buffer()->size) << "Wrong size of the ram buffer"; + EXPECT_EQ(500, buffering_get_flash_buffer()->pos) << "Wrong position of the written data in the flash buffer"; + EXPECT_EQ(1000, buffering_get_flash_buffer()->size) << "Wrong size of the flash buffer"; + } + + TEST(Buffering, SmallBufferMultipleTimesWithinRam) { + uint8_t ram_buffer[100]; + uint8_t flash_buffer[1000]; + + buffering_init(ram_buffer, + sizeof(ram_buffer), + flash_buffer, + sizeof(flash_buffer)); + + uint8_t small[40]; + auto num_bytes = buffering_append(small, sizeof(small)); + EXPECT_EQ(sizeof(small), num_bytes) << "Append should not return error"; + EXPECT_TRUE(buffering_get_ram_buffer()->in_use) << "Writing small buffer should only write to RAM"; + EXPECT_FALSE(buffering_get_flash_buffer()->in_use) << "Writing big buffer should write data to FLASH"; + + // Here we write another chunk which should not top over the ram buffer + buffering_append(small, sizeof(small)); + EXPECT_TRUE(buffering_get_ram_buffer()->in_use) << "Writing small buffer should only write to RAM"; + EXPECT_FALSE(buffering_get_flash_buffer()->in_use) << "Writing big buffer should write data to FLASH"; + + EXPECT_EQ(sizeof(small) * 2, buffering_get_ram_buffer()->pos) << "Data should be written to RAM"; + EXPECT_EQ(100, buffering_get_ram_buffer()->size) << "Wrong size of the ram buffer"; + EXPECT_EQ(0, buffering_get_flash_buffer()->pos) << "Data should be written to RAM"; + EXPECT_EQ(1000, buffering_get_flash_buffer()->size) << "Wrong size of the flash buffer"; + } + + TEST(Buffering, SmallBufferMultipleTimesToFlash) { + uint8_t ram_buffer[100]; + uint8_t flash_buffer[1000]; + + buffering_init(ram_buffer, + sizeof(ram_buffer), + flash_buffer, + sizeof(flash_buffer)); + + uint8_t small[100]; + buffering_append(small, sizeof(small)); + EXPECT_TRUE(buffering_get_ram_buffer()->in_use) << "Writing small buffer should only write to RAM"; + EXPECT_FALSE(buffering_get_flash_buffer()->in_use) << "Writing big buffer should write data to FLASH"; + + // Here we append another small buffer, this time we're going to exceed ram's size + // data will be copied to nvram + buffering_append(small, sizeof(small)); + EXPECT_FALSE(buffering_get_ram_buffer()->in_use) << "Data should be now in FLASH"; + EXPECT_TRUE(buffering_get_flash_buffer()->in_use) << "Data should be now in FLASH"; + + EXPECT_EQ(0, buffering_get_ram_buffer()->pos) << "RAM buffer should be reset"; + EXPECT_EQ(100, buffering_get_ram_buffer()->size) << "Wrong size of the ram buffer"; + EXPECT_EQ(200, buffering_get_flash_buffer()->pos) << "Wrong position of the written data in the flash buffer"; + EXPECT_EQ(1000, buffering_get_flash_buffer()->size) << "Wrong size of the flash buffer"; + } + + TEST(Buffering, SmallBufferMultipleTimes_CheckData) { + uint8_t ram_buffer[100]; + uint8_t flash_buffer[1000]; + + buffering_init(ram_buffer, + sizeof(ram_buffer), + flash_buffer, + sizeof(flash_buffer)); + + uint8_t small1[100]; + for (int i = 0; i < sizeof(small1); i++) { + small1[i] = i; + } + buffering_append(small1, sizeof(small1)); + + uint8_t small2[200]; + for (int i = 0; i < sizeof(small2); i++) { + small2[i] = 100 - i; + } + auto num_bytes = buffering_append(small2, sizeof(small2)); + EXPECT_EQ(sizeof(small2), num_bytes) << "Append should not return error"; + + // In this test we want to make sure that data is not compromised. + uint8_t *dst = buffering_get_flash_buffer()->data; + for (int i = 0; i < sizeof(small1) + sizeof(small2); i++) { + if (i < sizeof(small1)) { + EXPECT_EQ(dst[i], small1[i]) << "Wrong data written to FLASH"; + } else { + EXPECT_EQ(dst[i], small2[i - sizeof(small1)]) << "Wrong data written to FLASH"; + } + } + } + + TEST(Buffering, Reset) { + uint8_t ram_buffer[100]; + uint8_t flash_buffer[1000]; + + buffering_init(ram_buffer, + sizeof(ram_buffer), + flash_buffer, + sizeof(flash_buffer)); + + uint8_t big[1000]; + auto num_bytes = buffering_append(big, sizeof(big)); + EXPECT_EQ(sizeof(big), num_bytes) << "Append should not return error"; + + EXPECT_FALSE(buffering_get_ram_buffer()->in_use) << "Writing big buffer should only write to FLASH"; + EXPECT_TRUE(buffering_get_flash_buffer()->in_use) << "Writing big buffer should only write to FLASH"; + + buffering_reset(); + + EXPECT_TRUE(buffering_get_ram_buffer()->in_use) << "After reset RAM should be enabled by default"; + EXPECT_FALSE(buffering_get_flash_buffer()->in_use) << "After reset RAM should be enabled by default"; + } + + TEST(Buffering, NotEnoughRoomInFlash) { + uint8_t ram_buffer[100]; + uint8_t flash_buffer[1000]; + + buffering_init(ram_buffer, + sizeof(ram_buffer), + flash_buffer, + sizeof(flash_buffer)); + + uint8_t big[1101]; + auto num_bytes = buffering_append(big, sizeof(big)); + EXPECT_EQ(0, num_bytes) << "Appending outside the bounds of the buffer should return error"; + } + + TEST(Buffering, NoFlashOnlyRAM) { + uint8_t ram_buffer[100]; + + buffering_init(ram_buffer, + sizeof(ram_buffer), + nullptr, 0); + + uint8_t small[10]; + auto num_bytes = buffering_append(small, sizeof(small)); + EXPECT_EQ(10, num_bytes) << "Could not add to RAM"; + + num_bytes = buffering_append(small, sizeof(small)); + EXPECT_EQ(10, num_bytes) << "Could not add to RAM"; + + num_bytes = buffering_append(small, sizeof(small)); + EXPECT_EQ(10, num_bytes) << "Could not add to RAM"; + + auto state = buffering_get_buffer(); + EXPECT_EQ(30, state->pos) << "Invalid buffer size"; + + uint8_t small2[70]; + num_bytes = buffering_append(small2, sizeof(small2)); + EXPECT_EQ(70, num_bytes); + + state = buffering_get_buffer(); + EXPECT_EQ(100, state->pos) << "Invalid buffer size"; + + num_bytes = buffering_append(small, sizeof(small)); + EXPECT_EQ(0, num_bytes) << "Could add to RAM when it should have been impossible"; + } + + TEST(Buffering, NoFlash) { + uint8_t ram_buffer[100]; + + buffering_init(ram_buffer, + sizeof(ram_buffer), + nullptr, 0); + + uint8_t big[1101]; + auto num_bytes = buffering_append(big, sizeof(big)); + EXPECT_EQ(0, num_bytes) << "Appending outside the bounds of the buffer should return error"; + } +} diff --git a/deps/ledger-zxlib/tests/doubledabble.cpp b/deps/ledger-zxlib/tests/doubledabble.cpp new file mode 100644 index 0000000..c0c3108 --- /dev/null +++ b/deps/ledger-zxlib/tests/doubledabble.cpp @@ -0,0 +1,164 @@ +/******************************************************************************* +* (c) 2019 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "gmock/gmock.h" + +#include +#include "bignum.h" + +using ::testing::TestWithParam; +using ::testing::Values; + +typedef struct { + std::string hex; + std::string expectedOutput; +} bignum_testcase_t; + +class BignumLittleEndianTests : public ::testing::TestWithParam { +}; + +class BignumBigEndianTests : public ::testing::TestWithParam { +}; + +INSTANTIATE_TEST_CASE_P + +( + BignumTestCases, BignumLittleEndianTests, testing::Values( + bignum_testcase_t{"00", "0"}, + bignum_testcase_t{"01", "1"}, + bignum_testcase_t{"0001", "256"}, + bignum_testcase_t{"03E8", "59395"}, + bignum_testcase_t{"E803", "1000"}, + bignum_testcase_t{"10", "16"}, + bignum_testcase_t{"FF01", "511"}, + bignum_testcase_t{"0102", "513"}, + bignum_testcase_t{"FFFF01", "131071"}, + bignum_testcase_t{"a08601", "100000"}, + bignum_testcase_t{"40420f", "1000000"}, + bignum_testcase_t{"809698", "10000000"}, + bignum_testcase_t{"002d3101", "20000000"}, + bignum_testcase_t{"00e1f505", "100000000"}, + bignum_testcase_t{"00407a10f35a", "100000000000000"}, + bignum_testcase_t{"d2029649", "1234567890"}, + bignum_testcase_t{"d20a3fce96f1cf8c9cb4378c37a4873f17621ebce404f5aa13", + "123456789012345678901234567890123456789012345678901234567890"} +)); + +// Check that bignums are printed properly (parametric tests) +TEST_P(BignumLittleEndianTests, print) { + auto testcase = GetParam(); + + uint8_t inBuffer[100]; + auto inBufferLen = parseHexString(inBuffer, sizeof(inBuffer), testcase.hex.c_str()); + + uint8_t bcdOut[100]; + uint16_t bcdOutLen = sizeof(bcdOut); + + bignumLittleEndian_to_bcd(bcdOut, bcdOutLen, inBuffer, static_cast(inBufferLen)); + + char bufferUI[300]; + bignumLittleEndian_bcdprint(bufferUI, sizeof(bufferUI), bcdOut, bcdOutLen); + EXPECT_THAT(std::string(bufferUI), testing::Eq(testcase.expectedOutput)); +} + +// Check that bignums are printed properly (range tests) +TEST(BignumLittleEndianTests, range) { + uint8_t inBuffer[100]; + + for (uint64_t i = 0; i < 10000; i++) { + std::stringstream s; + uint64_t tmp = i; + while (tmp != 0) { + s << std::setfill('0') << std::setw(2) << std::hex << tmp % 256; + tmp /= 256; + } + auto inBufferLen = parseHexString(inBuffer, sizeof(inBuffer), s.str().c_str()); + + uint8_t bcdOut[100]; + uint16_t bcdOutLen = sizeof(bcdOut); + bignumLittleEndian_to_bcd(bcdOut, bcdOutLen, inBuffer, static_cast(inBufferLen)); + char bufferUI[300]; + bignumLittleEndian_bcdprint(bufferUI, sizeof(bufferUI), bcdOut, bcdOutLen); + + std::stringstream expected; + expected << i; + EXPECT_THAT(std::string(bufferUI), testing::Eq(expected.str())) << s.str(); + } +} + +INSTANTIATE_TEST_CASE_P + +( + BignumTestCases, BignumBigEndianTests, testing::Values( + bignum_testcase_t{"00", "0"}, + bignum_testcase_t{"01", "1"}, + bignum_testcase_t{"0001", "1"}, + bignum_testcase_t{"000001", "1"}, + bignum_testcase_t{"03E8", "1000"}, + bignum_testcase_t{"E803", "59395"}, + bignum_testcase_t{"10", "16"}, + bignum_testcase_t{"FF01", "65281"}, + bignum_testcase_t{"01FF", "511"}, + bignum_testcase_t{"0102", "258"}, + bignum_testcase_t{"FFFF01", "16776961"}, + bignum_testcase_t{"a08601", "10520065"}, + bignum_testcase_t{"40420f", "4211215"}, + bignum_testcase_t{"809698", "8427160"}, + bignum_testcase_t{"002d3101", "2961665"}, + bignum_testcase_t{"00e1f505", "14808325"}, + bignum_testcase_t{"00407a10f35a", "276925838170"}, + bignum_testcase_t{"d2029649", "3523384905"}, + bignum_testcase_t{"d20a3fce96f1cf8c9cb4378c37a4873f17621ebce404f5aa13", + "1318442675213289749221432902819395197389189473307425559128595"} +)); + +// Check that bignums are printed properly (parametric tests) +TEST_P(BignumBigEndianTests, print) { + auto testcase = GetParam(); + + uint8_t inBuffer[100]; + auto inBufferLen = parseHexString(inBuffer, sizeof(inBuffer), testcase.hex.c_str()); + + uint8_t bcdOut[100]; + uint16_t bcdOutLen = sizeof(bcdOut); + bignumBigEndian_to_bcd(bcdOut, bcdOutLen, inBuffer, static_cast(inBufferLen)); + + char bufferUI[300]; + bignumBigEndian_bcdprint(bufferUI, sizeof(bufferUI), bcdOut, bcdOutLen); + EXPECT_THAT(std::string(bufferUI), testing::Eq(testcase.expectedOutput)); +} + +// Check that bignums are printed properly (range tests) +TEST(BignumBigEndianTests, range) { + uint8_t inBuffer[100]; + + for (uint64_t i = 0; i < 2500; i += 7) { + std::stringstream s; + s << std::setfill('0') << std::setw(10) << std::hex << i; + std::cout << s.str() << std::endl; + auto inBufferLen = parseHexString(inBuffer, sizeof(inBuffer), s.str().c_str()); + + uint8_t bcdOut[100]; + uint16_t bcdOutLen = sizeof(bcdOut); + bignumBigEndian_to_bcd(bcdOut, bcdOutLen, inBuffer, static_cast(inBufferLen)); + char bufferUI[300]; + bignumBigEndian_bcdprint(bufferUI, sizeof(bufferUI), bcdOut, bcdOutLen); + + std::stringstream expected; + expected << i; + EXPECT_THAT(std::string(bufferUI), testing::Eq(expected.str())) << s.str(); + } +} diff --git a/deps/ledger-zxlib/tests/hexutils.cpp b/deps/ledger-zxlib/tests/hexutils.cpp new file mode 100644 index 0000000..e9d3ae4 --- /dev/null +++ b/deps/ledger-zxlib/tests/hexutils.cpp @@ -0,0 +1,51 @@ +/******************************************************************************* +* (c) 2018 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "gmock/gmock.h" + +#include + +#include "hexutils.h" + +TEST(HEXUTILS, parseHexString) { + char s[] = "1234567890"; + uint8_t data[100]; + + auto length = parseHexString(data, sizeof(data), s); + + ASSERT_THAT(length, testing::Eq(5)); + + ASSERT_THAT(data[0], testing::Eq(0x12)); + ASSERT_THAT(data[1], testing::Eq(0x34)); + ASSERT_THAT(data[2], testing::Eq(0x56)); + ASSERT_THAT(data[3], testing::Eq(0x78)); + ASSERT_THAT(data[4], testing::Eq(0x90)); +} + +TEST(HEXUTILS, parseHexString2) { + char s[] = "be333be7ee"; + uint8_t data[100]; + + auto length = parseHexString(data, sizeof(data), s); + + ASSERT_THAT(length, testing::Eq(5)); + + ASSERT_THAT(data[0], testing::Eq(0xbe)); + ASSERT_THAT(data[1], testing::Eq(0x33)); + ASSERT_THAT(data[2], testing::Eq(0x3b)); + ASSERT_THAT(data[3], testing::Eq(0xe7)); + ASSERT_THAT(data[4], testing::Eq(0xee)); +} diff --git a/deps/ledger-zxlib/tests/macros.cpp b/deps/ledger-zxlib/tests/macros.cpp new file mode 100644 index 0000000..b6b11ff --- /dev/null +++ b/deps/ledger-zxlib/tests/macros.cpp @@ -0,0 +1,495 @@ +/******************************************************************************* +* (c) 2018 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#include +#include + +namespace { + TEST(FORMAT, array_to_hexstr) { + uint8_t array1[] = {1, 3, 5}; + + char output[20]; + memset(output, 1, 20); + + array_to_hexstr(output, sizeof(output), array1, sizeof(array1)); + EXPECT_EQ(memcmp(output, "010305", 2 * sizeof(array1)), 0); + EXPECT_EQ(output[2 * sizeof(array1)], 0); + } + + TEST(FORMAT, fpuint64_to_str) { + char output[100]; + printf("\n"); + + fpuint64_to_str(output, sizeof(output), 123, 5); + printf("%10s\n", output); + EXPECT_EQ(std::string(output), "0.00123"); + + fpuint64_to_str(output, sizeof(output), 1234, 5); + printf("%10s\n", output); + EXPECT_EQ(std::string(output), "0.01234"); + + fpuint64_to_str(output, sizeof(output), 12345, 5); + printf("%10s\n", output); + EXPECT_EQ(std::string(output), "0.12345"); + + fpuint64_to_str(output, sizeof(output), 123456, 5); + printf("%10s\n", output); + EXPECT_EQ(std::string(output), "1.23456"); + + fpuint64_to_str(output, sizeof(output), 1234567, 5); + printf("%10s\n", output); + EXPECT_EQ(std::string(output), "12.34567"); + } + + TEST(FORMAT, fpstr_to_str) { + char output[100]; + printf("\n"); + + fpstr_to_str(output, sizeof(output), "", 0); + printf("%10s\n", output); + EXPECT_EQ(std::string(output), "0"); + + fpstr_to_str(output, sizeof(output), "1", 0); + printf("%10s\n", output); + EXPECT_EQ(std::string(output), "1"); + + fpstr_to_str(output, sizeof(output), "123", 0); + printf("%10s\n", output); + EXPECT_EQ(std::string(output), "123"); + + fpstr_to_str(output, sizeof(output), "", 5); + printf("%10s\n", output); + EXPECT_EQ(std::string(output), "0.00000"); + + fpstr_to_str(output, sizeof(output), "0", 5); + printf("%10s\n", output); + EXPECT_EQ(std::string(output), "0.00000"); + + fpstr_to_str(output, sizeof(output), "123", 5); + printf("%10s\n", output); + EXPECT_EQ(std::string(output), "0.00123"); + + fpstr_to_str(output, sizeof(output), "1234", 5); + printf("%10s\n", output); + EXPECT_EQ(std::string(output), "0.01234"); + + fpstr_to_str(output, sizeof(output), "12345", 5); + printf("%10s\n", output); + EXPECT_EQ(std::string(output), "0.12345"); + + fpstr_to_str(output, sizeof(output), "123456", 5); + printf("%10s\n", output); + EXPECT_EQ(std::string(output), "1.23456"); + + fpstr_to_str(output, sizeof(output), "1234567", 5); + printf("%10s\n", output); + EXPECT_EQ(std::string(output), "12.34567"); + } + + TEST(FORMAT, fpstr_to_str_BAD_zeros) { + char output[8]; + printf("\n"); + + fpstr_to_str(output, sizeof(output), "", 5); + printf("%10s\n", output); + EXPECT_EQ(std::string(output), "0.00000"); + + fpstr_to_str(output, sizeof(output), "", 6); + printf("%10s\n", output); + EXPECT_EQ(std::string(output), "0.000000"); + + fpstr_to_str(output, sizeof(output), "", 7); + printf("%10s\n", output); + EXPECT_EQ(std::string(output), "ERR"); + + fpstr_to_str(output, sizeof(output), "", 8); + printf("%10s\n", output); + EXPECT_EQ(std::string(output), "ERR"); + } + + TEST(FORMAT, fpstr_to_str_BAD_short) { + char output[8]; + printf("\n"); + + fpstr_to_str(output, sizeof(output), "123", 5); + printf("%10s\n", output); + EXPECT_EQ(std::string(output), "0.00123"); + + fpstr_to_str(output, sizeof(output), "123", 6); + printf("%10s\n", output); + EXPECT_EQ(std::string(output), "0.000123"); + + fpstr_to_str(output, sizeof(output), "123", 7); + printf("%10s\n", output); + EXPECT_EQ(std::string(output), "ERR"); + + fpstr_to_str(output, sizeof(output), "123", 8); + printf("%10s\n", output); + EXPECT_EQ(std::string(output), "ERR"); + } + + TEST(FORMAT, fpstr_to_str_BAD_long) { + char output[8]; + printf("\n"); + + fpstr_to_str(output, sizeof(output), "123456", 5); + printf("%10s\n", output); + EXPECT_EQ(std::string(output), "1.23456"); + + fpstr_to_str(output, sizeof(output), "123456", 6); + printf("%10s\n", output); + EXPECT_EQ(std::string(output), "0.123456"); + + fpstr_to_str(output, sizeof(output), "123456", 7); + printf("%10s\n", output); + EXPECT_EQ(std::string(output), "ERR"); + + fpstr_to_str(output, sizeof(output), "12345", 7); + printf("%10s\n", output); + EXPECT_EQ(std::string(output), "ERR"); + + fpstr_to_str(output, sizeof(output), "12345", 2); + printf("%10s\n", output); + EXPECT_EQ(std::string(output), "123.45"); + + fpstr_to_str(output, sizeof(output), "123456", 2); + printf("%10s\n", output); + EXPECT_EQ(std::string(output), "1234.56"); + + fpstr_to_str(output, sizeof(output), "1234567", 2); + printf("%10s\n", output); + EXPECT_EQ(std::string(output), "12345.67"); + + fpstr_to_str(output, sizeof(output), "12345678", 2); + printf("%10s\n", output); + EXPECT_EQ(std::string(output), "ERR"); + } + + TEST(FORMAT, fpuint64_to_str_zeros) { + char output[100]; + printf("\n"); + + fpuint64_to_str(output, sizeof(output), 0, 9); + printf("%11s\n", output); + EXPECT_EQ(std::string(output), "0.000000000"); + + fpuint64_to_str(output, sizeof(output), 0, 1); + printf("%11s\n", output); + EXPECT_EQ(std::string(output), "0.0"); + + fpuint64_to_str(output, sizeof(output), 1, 1); + printf("%11s\n", output); + EXPECT_EQ(std::string(output), "0.1"); + + fpuint64_to_str(output, sizeof(output), 10, 1); + printf("%11s\n", output); + EXPECT_EQ(std::string(output), "1.0"); + } + + TEST(FORMAT, number_trimming) { + char output[100]; + + strcpy(output, "0"); + number_inplace_trimming(output); + EXPECT_EQ(std::string(output), "0"); + + strcpy(output, "10"); + number_inplace_trimming(output); + EXPECT_EQ(std::string(output), "10"); + + strcpy(output, "10.10"); + number_inplace_trimming(output); + EXPECT_EQ(std::string(output), "10.1"); + + strcpy(output, "0.0"); + number_inplace_trimming(output); + EXPECT_EQ(std::string(output), "0.0"); + + strcpy(output, "0.00"); + number_inplace_trimming(output); + EXPECT_EQ(std::string(output), "0.0"); + + strcpy(output, "0.01"); + number_inplace_trimming(output); + EXPECT_EQ(std::string(output), "0.01"); + + strcpy(output, "0.010"); + number_inplace_trimming(output); + EXPECT_EQ(std::string(output), "0.01"); + + strcpy(output, "0.010000"); + number_inplace_trimming(output); + EXPECT_EQ(std::string(output), "0.01"); + } + + TEST(FORMAT, intstr_to_fpstr_inplace_trimming_leading) { + char number[100]; + printf("\n"); + + strcpy(number, "0"); + intstr_to_fpstr_inplace(number, sizeof(number), 0); + EXPECT_EQ(std::string(number), "0"); + + strcpy(number, "00"); + intstr_to_fpstr_inplace(number, sizeof(number), 0); + EXPECT_EQ(std::string(number), "0"); + + strcpy(number, "0000"); + intstr_to_fpstr_inplace(number, sizeof(number), 0); + EXPECT_EQ(std::string(number), "0"); + + strcpy(number, "00001"); + intstr_to_fpstr_inplace(number, sizeof(number), 0); + EXPECT_EQ(std::string(number), "1"); + + strcpy(number, "000011"); + intstr_to_fpstr_inplace(number, sizeof(number), 0); + EXPECT_EQ(std::string(number), "11"); + + strcpy(number, "10000"); + intstr_to_fpstr_inplace(number, sizeof(number), 0); + EXPECT_EQ(std::string(number), "10000"); + } + + TEST(FORMAT, intstr_to_fpstr_inplace_empty) { + char number[100]; + printf("\n"); + + strcpy(number, ""); + intstr_to_fpstr_inplace(number, sizeof(number), 0); + EXPECT_EQ(std::string(number), "0"); + + strcpy(number, ""); + intstr_to_fpstr_inplace(number, sizeof(number), 5); + EXPECT_EQ(std::string(number), "0.00000"); + + strcpy(number, ""); + intstr_to_fpstr_inplace(number, sizeof(number), 10); + EXPECT_EQ(std::string(number), "0.0000000000"); + } + + TEST(FORMAT, intstr_to_fpstr_inplace) { + char number[100]; + printf("\n"); + + strcpy(number, "1"); + intstr_to_fpstr_inplace(number, sizeof(number), 0); + EXPECT_EQ(std::string(number), "1"); + + strcpy(number, "123"); + intstr_to_fpstr_inplace(number, sizeof(number), 0); + EXPECT_EQ(std::string(number), "123"); + + strcpy(number, "0"); + intstr_to_fpstr_inplace(number, sizeof(number), 5); + EXPECT_EQ(std::string(number), "0.00000"); + + strcpy(number, "123"); + intstr_to_fpstr_inplace(number, sizeof(number), 5); + EXPECT_EQ(std::string(number), "0.00123"); + + strcpy(number, "1234"); + intstr_to_fpstr_inplace(number, sizeof(number), 5); + EXPECT_EQ(std::string(number), "0.01234"); + + strcpy(number, "12345"); + intstr_to_fpstr_inplace(number, sizeof(number), 5); + EXPECT_EQ(std::string(number), "0.12345"); + + strcpy(number, "123456"); + intstr_to_fpstr_inplace(number, sizeof(number), 5); + EXPECT_EQ(std::string(number), "1.23456"); + + strcpy(number, "1234567"); + intstr_to_fpstr_inplace(number, sizeof(number), 5); + EXPECT_EQ(std::string(number), "12.34567"); + } + + TEST(INT64_TO_STR, Zero) { + char temp[10]; + const char *error = int64_to_str(temp, sizeof(temp), int64_t(0)); + EXPECT_STREQ(temp, "0"); + EXPECT_TRUE(error == nullptr); + } + + TEST(INT64_TO_STR, Positive_1234) { + char temp[10]; + const char *error = int64_to_str(temp, sizeof(temp), int64_t(1234)); + EXPECT_STREQ(temp, "1234"); + EXPECT_TRUE(error == nullptr); + } + + TEST(INT64_TO_STR, Negative_1234) { + char temp[10]; + const char *error = int64_to_str(temp, sizeof(temp), int64_t(-1234)); + EXPECT_STREQ(temp, "-1234"); + EXPECT_TRUE(error == nullptr); + } + + TEST(INT64_TO_STR, TooSmall_0) { + char temp[1]; + const char *error = int64_to_str(temp, sizeof(temp), int64_t(0)); + EXPECT_STREQ("Buffer too small", error); + } + + TEST(INT64_TO_STR, FitsJust) { + char temp[4]; + const char *error = int64_to_str(temp, sizeof(temp), int64_t(999)); + EXPECT_STREQ(temp, "999"); + EXPECT_TRUE(error == nullptr); + } + + TEST(INT64_TO_STR, TooSmall_10) { + char temp[2]; + const char *error = int64_to_str(temp, sizeof(temp), int64_t(10)); + EXPECT_STREQ("Buffer too small", error); + } + + TEST(INT64_TO_STR, Max) { + char temp[20]; + const char *error = int64_to_str(temp, sizeof(temp), std::numeric_limits::max()); + EXPECT_STREQ(temp, "9223372036854775807"); + EXPECT_TRUE(error == nullptr); + } + + TEST(INT64_TO_STR, Min) { + char temp[21]; + const char *error = int64_to_str(temp, sizeof(temp), std::numeric_limits::min()); + EXPECT_STREQ(temp, "-9223372036854775808"); + EXPECT_TRUE(error == nullptr); + } + + TEST(STR_TO_INT8, Min) { + char numberStr[] = "-128"; + char error = 0; + int8_t number = str_to_int8(numberStr, numberStr + strlen(numberStr), &error); + EXPECT_EQ(-128, number); + EXPECT_EQ(0, error); + } + + TEST(STR_TO_INT8, Max) { + char numberStr[] = "127"; + char error = 0; + int8_t number = str_to_int8(numberStr, numberStr + strlen(numberStr), &error); + EXPECT_EQ(127, number); + EXPECT_EQ(0, error); + } + + TEST(STR_TO_INT8, Zero) { + char numberStr[] = "0"; + char error = 0; + int8_t number = str_to_int8(numberStr, numberStr + strlen(numberStr), &error); + EXPECT_EQ(0, number); + EXPECT_EQ(0, error); + } + + TEST(STR_TO_INT8, Hundred) { + char numberStr[] = "100"; + char error = 0; + int8_t number = str_to_int8(numberStr, numberStr + strlen(numberStr), &error); + EXPECT_EQ(100, number); + EXPECT_EQ(0, error); + } + + TEST(STR_TO_INT8, NegHundred) { + char numberStr[] = "-100"; + char error = 0; + int8_t number = str_to_int8(numberStr, numberStr + strlen(numberStr), &error); + EXPECT_EQ(-100, number); + EXPECT_EQ(0, error); + } + + TEST(STR_TO_INT8, OutsideBoundsPositive) { + char numberStr[] = "128"; + char error = 0; + str_to_int8(numberStr, numberStr + strlen(numberStr), &error); + EXPECT_EQ(1, error); + } + + TEST(STR_TO_INT8, OutsideBoundsNegative) { + char numberStr[] = "-129"; + char error = 0; + str_to_int8(numberStr, numberStr + strlen(numberStr), &error); + EXPECT_EQ(1, error); + } + + TEST(STR_TO_INT8, DummyData_Positive) { + char numberStr[] = "100b0"; + char error = 0; + str_to_int8(numberStr, numberStr + strlen(numberStr), &error); + EXPECT_EQ(1, error); + } + + TEST(STR_TO_INT8, DummyData_Negative) { + char numberStr[] = "-1002xx"; + char error = 0; + str_to_int8(numberStr, numberStr + strlen(numberStr), &error); + EXPECT_EQ(1, error); + } + + TEST(STR_TO_INT64, Min) { + char numberStr[] = "-9223372036854775807"; + char error = 0; + int64_t number = str_to_int64(numberStr, numberStr + strlen(numberStr), &error); + EXPECT_EQ(-9223372036854775807, number); + EXPECT_EQ(0, error); + } + + TEST(STR_TO_INT64, Max) { + char numberStr[] = "9223372036854775807"; + char error = 0; + int64_t number = str_to_int64(numberStr, numberStr + strlen(numberStr), &error); + EXPECT_EQ(9223372036854775807, number); + EXPECT_EQ(0, error); + } + + TEST(STR_TO_INT64, Zero) { + char numberStr[] = "0"; + char error = 0; + int64_t number = str_to_int64(numberStr, numberStr + strlen(numberStr), &error); + EXPECT_EQ(0, number); + EXPECT_EQ(0, error); + } + + TEST(STR_TO_INT64, Hundred) { + char numberStr[] = "100"; + char error = 0; + int64_t number = str_to_int64(numberStr, numberStr + strlen(numberStr), &error); + EXPECT_EQ(100, number); + EXPECT_EQ(0, error); + } + + TEST(STR_TO_INT64, NegHundred) { + char numberStr[] = "-100"; + char error = 0; + int64_t number = str_to_int64(numberStr, numberStr + strlen(numberStr), &error); + EXPECT_EQ(-100, number); + EXPECT_EQ(0, error); + } + + TEST(STR_TO_INT64, DummyData_Positive) { + char numberStr[] = "100b0"; + char error = 0; + str_to_int64(numberStr, numberStr + strlen(numberStr), &error); + EXPECT_EQ(1, error); + } + + TEST(STR_TO_INT64, DummyData_Negative) { + char numberStr[] = "-1002xx"; + char error = 0; + str_to_int64(numberStr, numberStr + strlen(numberStr), &error); + EXPECT_EQ(1, error); + } +} diff --git a/deps/ledger-zxlib/tests/sigutils.cpp b/deps/ledger-zxlib/tests/sigutils.cpp new file mode 100644 index 0000000..764d84e --- /dev/null +++ b/deps/ledger-zxlib/tests/sigutils.cpp @@ -0,0 +1,132 @@ +/******************************************************************************* +* (c) 2020 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "gmock/gmock.h" +#include +#include +#include + +#include "sigutils.h" + +TEST(SIGUTILS, convertBasic) { + char inSignatureDERStr[] = "304402206878b5690514437a2342405029426cc2b25b4a03fc396fef845d656cf62bad2c022018610a8d37e3384245176ab49ddbdbe8da4133f661bf5ea7ad4e3d2b912d856f01"; + auto inSignatureDER = std::vector(71); + + auto length = parseHexString(inSignatureDER.data(), inSignatureDER.size(), inSignatureDERStr); + EXPECT_EQ(length, sizeof(inSignatureDERStr) / 2); + + uint8_t R[32]; + uint8_t S[32]; + uint8_t V; + + auto ret = convertDERtoRSV(inSignatureDER.data(), 0, R, S, &V); + EXPECT_EQ(ret, 0); + + char inSignatureDERStr_R[] = "6878b5690514437a2342405029426cc2b25b4a03fc396fef845d656cf62bad2c"; + char inSignatureDERStr_S[] = "18610a8d37e3384245176ab49ddbdbe8da4133f661bf5ea7ad4e3d2b912d856f"; + auto inSignatureDER_R = std::vector(32); + auto inSignatureDER_S = std::vector(32); + parseHexString(inSignatureDER_R.data(), inSignatureDER_R.size(), inSignatureDERStr_R); + parseHexString(inSignatureDER_S.data(), inSignatureDER_S.size(), inSignatureDERStr_S); + + EXPECT_THAT(R, ::testing::ElementsAreArray(inSignatureDER_R)); + EXPECT_THAT(S, ::testing::ElementsAreArray(inSignatureDER_S)); +} + +TEST(SIGUTILS, convertBasic2) { + char inSignatureDERStr[] = "30430220035942178e9e8d447cf9e6886f99c41bf942fb2880fd79aa2d4626489ec7821b021f6b3277dea0355c161d20a120ec9165500b5c9a2cd0fce1c4b8a5260bf6831f"; + auto inSignatureDER = std::vector(71); + + auto length = parseHexString(inSignatureDER.data(), inSignatureDER.size(), inSignatureDERStr); + EXPECT_EQ(length, sizeof(inSignatureDERStr) / 2); + + uint8_t R[32]; + uint8_t S[32]; + uint8_t V; + + auto ret = convertDERtoRSV(inSignatureDER.data(), 0, R, S, &V); + EXPECT_EQ(ret, 0); + + char inSignatureDERStr_R[] = "035942178e9e8d447cf9e6886f99c41bf942fb2880fd79aa2d4626489ec7821b"; + char inSignatureDERStr_S[] = "006b3277dea0355c161d20a120ec9165500b5c9a2cd0fce1c4b8a5260bf6831f"; + auto inSignatureDER_R = std::vector(32); + auto inSignatureDER_S = std::vector(32); + parseHexString(inSignatureDER_R.data(), inSignatureDER_R.size(), inSignatureDERStr_R); + parseHexString(inSignatureDER_S.data(), inSignatureDER_S.size(), inSignatureDERStr_S); + + char buffer[100]; + array_to_hexstr(buffer, sizeof(buffer), R, (int16_t) sizeof(R)); + std::cout << buffer << std::endl; + array_to_hexstr(buffer, sizeof(buffer), S, (int16_t) sizeof(S)); + std::cout << buffer << std::endl; + + EXPECT_THAT(R, ::testing::ElementsAreArray(inSignatureDER_R)); + EXPECT_THAT(S, ::testing::ElementsAreArray(inSignatureDER_S)); +} + +TEST(SIGUTILS, convertBasic3) { + char inSignatureDERStr[] = "3045022100e9b508a9cd66410b43992c01622cf9e1a6aa1353d836d7f428a6d1317f96f27d02200ca01cee5480388bad3802c08e0bcf357c091f3a5921e1e5d1e0e115dd14ff23"; + auto inSignatureDER = std::vector(71); + + auto length = parseHexString(inSignatureDER.data(), inSignatureDER.size(), inSignatureDERStr); + EXPECT_EQ(length, sizeof(inSignatureDERStr) / 2); + + uint8_t R[32]; + uint8_t S[32]; + uint8_t V; + + auto ret = convertDERtoRSV(inSignatureDER.data(), 0, R, S, &V); + EXPECT_EQ(ret, 0); + + char inSignatureDERStr_R[] = "e9b508a9cd66410b43992c01622cf9e1a6aa1353d836d7f428a6d1317f96f27d"; + char inSignatureDERStr_S[] = "0ca01cee5480388bad3802c08e0bcf357c091f3a5921e1e5d1e0e115dd14ff23"; + auto inSignatureDER_R = std::vector(32); + auto inSignatureDER_S = std::vector(32); + parseHexString(inSignatureDER_R.data(), inSignatureDER_R.size(), inSignatureDERStr_R); + parseHexString(inSignatureDER_S.data(), inSignatureDER_S.size(), inSignatureDERStr_S); + + EXPECT_THAT(R, ::testing::ElementsAreArray(inSignatureDER_R)); + EXPECT_THAT(S, ::testing::ElementsAreArray(inSignatureDER_S)); +} + +TEST(SIGUTILS, convertShort1) { + char inSignatureDERStr[] = "3041021e544670fe5627f2d483484582284f627d9cfd1e0ab123984e81611a8da4fc021f6d99f9afd3c4fa62cee8dff21786f9c23c8d2f524d8fd363acc6c6567dc380"; + char inSignatureDERStr_R[] = "0000544670fe5627f2d483484582284f627d9cfd1e0ab123984e81611a8da4fc"; + char inSignatureDERStr_S[] = "006d99f9afd3c4fa62cee8dff21786f9c23c8d2f524d8fd363acc6c6567dc380"; + + auto inSignatureDER = std::vector(sizeof(inSignatureDERStr)); + + auto length = parseHexString(inSignatureDER.data(), inSignatureDER.size(), inSignatureDERStr); + EXPECT_EQ(length, sizeof(inSignatureDERStr) / 2); + + uint8_t R[32]; + uint8_t S[32]; + uint8_t V; + + auto ret = convertDERtoRSV(inSignatureDER.data(), 0, R, S, &V); + EXPECT_EQ(ret, 0); + + + char R_str[200]; + char S_str[200]; + array_to_hexstr(R_str, sizeof(R_str), R, 32); + std::cout << R_str << std::endl; + array_to_hexstr(S_str, sizeof(S_str), S, 32); + std::cout << S_str << std::endl; + + EXPECT_STREQ(R_str, inSignatureDERStr_R); + EXPECT_STREQ(S_str, inSignatureDERStr_S); +} diff --git a/deps/ledger-zxlib/tests/timeutils.cpp b/deps/ledger-zxlib/tests/timeutils.cpp new file mode 100644 index 0000000..6cf1bfd --- /dev/null +++ b/deps/ledger-zxlib/tests/timeutils.cpp @@ -0,0 +1,92 @@ +/******************************************************************************* +* (c) 2018 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#include +#include +#include + +namespace { + TEST(TIMEUTILS, basic) { + uint64_t t = 1104937465; + char output[50]; + + zxerr_t err = printTime(output, sizeof(output), t); + + EXPECT_EQ(err, zxerr_ok); + EXPECT_STREQ(output, "05Jan2005 15:04:25UTC"); + } + + TEST(TIMEUTILS, yearlookup) { + struct tm t = {0}; // Initalize to all 0's + for (uint64_t year = 70; year < 470; year++) { + t.tm_year = year; // This is year-1900, so 112 = 2012 + t.tm_mon = 0; + t.tm_mday = 1; + t.tm_hour = 0; + t.tm_min = 0; + t.tm_sec = 0; + setenv("TZ", "UTC", 1); + time_t timeSinceEpoch = mktime(&t); + + const uint32_t day = 60*60*24; + uint64_t daysSinceStart = timeSinceEpoch / day; + + std::cout << " " << daysSinceStart << ", " << std::endl; + } + } + + TEST(TIMEUTILS, loop) { + char output[50]; + char expected_output[50]; + + for (uint64_t t = 0; t < 8640000000; t += 1234567) { + zxerr_t err = printTime(output, sizeof(output), t); + EXPECT_EQ(err, zxerr_ok); + time_t tmp = t; + auto expected = gmtime(&tmp); + snprintf(expected_output, sizeof(expected_output), "%02d%s%d %02d:%02d:%02dUTC", + expected->tm_mday, + getMonth(expected->tm_mon + 1), + expected->tm_year + 1900, + expected->tm_hour, + expected->tm_min, + expected->tm_sec + ); + + std::cout << t << " " << output << " " << expected_output << std::endl; + + EXPECT_STREQ(output, expected_output); + } + } + + TEST(TIMEUTILS, zero) { + uint64_t t = 0; + char output[50]; + + zxerr_t err = printTime(output, sizeof(output), t); + + EXPECT_EQ(err, zxerr_ok); + EXPECT_STREQ(output, "01Jan1970 00:00:00UTC"); + } + + TEST(TIMEUTILS, huge) { + uint64_t t = 86400ULL * 365ULL * 5000ULL; + char output[50]; + + zxerr_t err = printTime(output, sizeof(output), t); + + EXPECT_EQ(err, zxerr_out_of_bounds); + } +} diff --git a/deps/nanos-secure-sdk b/deps/nanos-secure-sdk new file mode 160000 index 0000000..1bc9417 --- /dev/null +++ b/deps/nanos-secure-sdk @@ -0,0 +1 @@ +Subproject commit 1bc941792868aadb29e45c771ccf997b9186b305 diff --git a/deps/nanox-secure-sdk b/deps/nanox-secure-sdk new file mode 160000 index 0000000..abe9a1b --- /dev/null +++ b/deps/nanox-secure-sdk @@ -0,0 +1 @@ +Subproject commit abe9a1bedd2e7226e591d30b568933d6cd78f0ff diff --git a/docs/APDUSPEC.md b/docs/APDUSPEC.md new file mode 100644 index 0000000..e3960fc --- /dev/null +++ b/docs/APDUSPEC.md @@ -0,0 +1,301 @@ +# Kusama App + +## General structure + +The general structure of commands and responses is as follows: + +### Commands + +| Field | Type | Content | Note | +| :------ | :------- | :--------------------- | ---- | +| CLA | byte (1) | Application Identifier | 0x98 | +| INS | byte (1) | Instruction ID | | +| P1 | byte (1) | Parameter 1 | | +| P2 | byte (1) | Parameter 2 | | +| L | byte (1) | Bytes in payload | | +| PAYLOAD | byte (L) | Payload | | + +### Response + +| Field | Type | Content | Note | +| ------- | -------- | ----------- | ------------------------ | +| ANSWER | byte (?) | Answer | depends on the command | +| SW1-SW2 | byte (2) | Return code | see list of return codes | + +### Return codes + +| Return code | Description | +| ----------- | ----------------------- | +| 0x6400 | Execution Error | +| 0x6982 | Empty buffer | +| 0x6983 | Output buffer too small | +| 0x6986 | Command not allowed | +| 0x6D00 | INS not supported | +| 0x6E00 | CLA not supported | +| 0x6F00 | Unknown | +| 0x9000 | Success | + +--- + +## Command definition + +### GET_VERSION + +#### Command + +| Field | Type | Content | Expected | +| ----- | -------- | ---------------------- | -------- | +| CLA | byte (1) | Application Identifier | 0x98 | +| INS | byte (1) | Instruction ID | 0x00 | +| P1 | byte (1) | Parameter 1 | ignored | +| P2 | byte (1) | Parameter 2 | ignored | +| L | byte (1) | Bytes in payload | 0 | + +#### Response + +| Field | Type | Content | Note | +| ------- | -------- | ---------------- | ------------------------------- | +| TEST | byte (1) | Test Mode | 0xFF means test mode is enabled | +| MAJOR | byte (2) | Version Major | 0..65535 | +| MINOR | byte (2) | Version Minor | 0..65535 | +| PATCH | byte (2) | Version Patch | 0..65535 | +| LOCKED | byte (1) | Device is locked | | +| SW1-SW2 | byte (2) | Return code | see list of return codes | + +--- + +### INS_GET_ADDR_ED25519 + +#### Command + +| Field | Type | Content | Expected | +| ------- | -------- | ------------------------- | ---------- | +| CLA | byte (1) | Application Identifier | 0x98 | +| INS | byte (1) | Instruction ID | 0x01 | +| P1 | byte (1) | Request User confirmation | No = 0 | +| P2 | byte (1) | Parameter 2 | ignored | +| L | byte (1) | Bytes in payload | (depends) | +| Path[0] | byte (4) | Derivation Path Data | 0x80000000 | 44 | +| Path[1] | byte (4) | Derivation Path Data | 0x80000000 | 434 | +| Path[2] | byte (4) | Derivation Path Data | ? | +| Path[3] | byte (4) | Derivation Path Data | ? | +| Path[4] | byte (4) | Derivation Path Data | ? | + +#### Response + +| Field | Type | Content | Note | +| ------- | --------- | ----------- | ------------------------ | +| PK | byte (32) | Public Key | | +| ADDR | byte (??) | address | | +| SW1-SW2 | byte (2) | Return code | see list of return codes | + +--- + +### INS_GET_ADDR_SR25519 + +#### Command + +| Field | Type | Content | Expected | +| ------- | -------- | ------------------------- | ---------- | +| CLA | byte (1) | Application Identifier | 0x98 | +| INS | byte (1) | Instruction ID | 0x11 | +| P1 | byte (1) | Request User confirmation | No = 0 | +| P2 | byte (1) | Parameter 2 | ignored | +| L | byte (1) | Bytes in payload | (depends) | +| Path[0] | byte (4) | Derivation Path Data | 0x80000000 | 44 | +| Path[1] | byte (4) | Derivation Path Data | 0x80000000 | 434 | +| Path[2] | byte (4) | Derivation Path Data | ? | +| Path[3] | byte (4) | Derivation Path Data | ? | +| Path[4] | byte (4) | Derivation Path Data | ? | + +#### Response + +| Field | Type | Content | Note | +| ------- | --------- | ----------- | ------------------------ | +| PK | byte (32) | Public Key | | +| ADDR | byte (??) | DOT address | | +| SW1-SW2 | byte (2) | Return code | see list of return codes | + +--- + +### INS_SIGN_ED25519 + +#### Command + +| Field | Type | Content | Expected | +| ----- | -------- | ---------------------- | --------- | +| CLA | byte (1) | Application Identifier | 0x98 | +| INS | byte (1) | Instruction ID | 0x02 | +| P1 | byte (1) | Payload desc | 0 = init | +| | | | 1 = add | +| | | | 2 = last | +| P2 | byte (1) | ---- | not used | +| L | byte (1) | Bytes in payload | (depends) | + +The first packet/chunk includes only the derivation path + +All other packets/chunks contain data chunks that are described below + +##### First Packet + +| Field | Type | Content | Expected | +| ------- | -------- | -------------------- | -------- | +| Path[0] | byte (4) | Derivation Path Data | 44 | +| Path[1] | byte (4) | Derivation Path Data | 434 | +| Path[2] | byte (4) | Derivation Path Data | ? | +| Path[3] | byte (4) | Derivation Path Data | ? | +| Path[4] | byte (4) | Derivation Path Data | ? | + +##### Other Chunks/Packets + +| Field | Type | Content | Expected | +| ------- | -------- | --------------- | -------- | +| Message | bytes... | Message to Sign | | + +#### Response + +| Field | Type | Content | Note | +| ------- | --------- | ----------- | ------------------------ | +| SIG | byte (65) | Signature | | +| SW1-SW2 | byte (2) | Return code | see list of return codes | + +--- + +### INS_SIGN_SR25519 + +#### Command + +| Field | Type | Content | Expected | +| ----- | -------- | ---------------------- | --------- | +| CLA | byte (1) | Application Identifier | 0x98 | +| INS | byte (1) | Instruction ID | 0x12 | +| P1 | byte (1) | Payload desc | 0 = init | +| | | | 1 = add | +| | | | 2 = last | +| P2 | byte (1) | ---- | not used | +| L | byte (1) | Bytes in payload | (depends) | + +The first packet/chunk includes only the derivation path + +All other packets/chunks contain data chunks that are described below + +##### First Packet + +| Field | Type | Content | Expected | +| ------- | -------- | -------------------- | -------- | +| Path[0] | byte (4) | Derivation Path Data | 44 | +| Path[1] | byte (4) | Derivation Path Data | 434 | +| Path[2] | byte (4) | Derivation Path Data | ? | +| Path[3] | byte (4) | Derivation Path Data | ? | +| Path[4] | byte (4) | Derivation Path Data | ? | + +##### Other Chunks/Packets + +| Field | Type | Content | Expected | +| ------- | -------- | --------------- | -------- | +| Message | bytes... | Message to Sign | | + +#### Response + +| Field | Type | Content | Note | +| ------- | --------- | ----------- | ------------------------ | +| SIG | byte (65) | Signature | | +| SW1-SW2 | byte (2) | Return code | see list of return codes | + +--- + +### INS_ALLOWLIST_GET_PUBKEY + +#### Command + +| Field | Type | Content | Expected | +| ------ | --------- | ------------------------- | -------- | +| CLA | byte (1) | Application Identifier | 0x98 | +| INS | byte (1) | Instruction ID | 0x90 | +| P1 | byte (1) | Request User confirmation | No = 0 | +| P2 | byte (1) | Parameter 2 | ignored | +| L | byte (1) | Bytes in payload | 0 | + +#### Response + +| Field | Type | Content | Note | +| ------- | -------- | ----------- | ------------------------ | +| PUBKEY | byte (32) | Master pubkey | | +| SW1-SW2 | byte (2) | Return code | see list of return codes | + +### INS_ALLOWLIST_SET_PUBKEY + +#### Command + +| Field | Type | Content | Expected | +| ------ | --------- | ------------------------- | -------- | +| CLA | byte (1) | Application Identifier | 0x98 | +| INS | byte (1) | Instruction ID | 0x91 | +| P1 | byte (1) | Request User confirmation | No = 0 | +| P2 | byte (1) | Parameter 2 | ignored | +| L | byte (1) | Bytes in payload | 32 | +| PUBKEY | byte (32) | Master pubkey | | + +#### Response + +| Field | Type | Content | Note | +| ------- | -------- | ----------- | ------------------------ | +| SW1-SW2 | byte (2) | Return code | see list of return codes | + +### INS_ALLOWLIST_GET_HASH + +#### Command + +| Field | Type | Content | Expected | +| ----- | -------- | ------------------------- | -------- | +| CLA | byte (1) | Application Identifier | 0x98 | +| INS | byte (1) | Instruction ID | 0x92 | +| P1 | byte (1) | Request User confirmation | No = 0 | +| P2 | byte (1) | Parameter 2 | ignored | +| L | byte (1) | Bytes in payload | 0 | + +#### Response + +| Field | Type | Content | Note | +| ------- | --------- | ----------- | ------------------------ | +| HASH | byte (32) | Public Key | | +| SW1-SW2 | byte (2) | Return code | see list of return codes | + +### INS_ALLOWLIST_UPLOAD + +#### Command + +| Field | Type | Content | Expected | +| ----- | -------- | ---------------------- | --------- | +| CLA | byte (1) | Application Identifier | 0x98 | +| INS | byte (1) | Instruction ID | 0x93 | +| P1 | byte (1) | Payload desc | 0 = init | +| | | | 1 = add | +| | | | 2 = last | +| P2 | byte (1) | ---- | not used | +| L | byte (1) | Bytes in payload | (depends) | + +Packets/chunks contain data chunks that are described below + +##### Chunks/Packets + +* Chunk idx = 0 (init is expected to be empty) + +| Field | Type | Content | Expected | +| ----- | -------- | ---------- | -------- | +| Chunk | byte (?) | Allow List | ... | + +##### Allow List Structure + +| Field | Type | Content | Expected | +| -------------- | --------------- | ------------------------------- | -------- | +| Nonce | bytes (4) | Monotonically increasing number | | +| Item Count (N) | bytes (4) | Number of items in the list | | +| Signature | bytes (64) | Ed25519 Signature | | +| Item x N | bytes (32) \* N | Pubkeys to allow | | + +#### Response + +| Field | Type | Content | Note | +| ------- | -------- | ----------- | ------------------------ | +| SW1-SW2 | byte (2) | Return code | see list of return codes | diff --git a/docs/img/clion_debugging.png b/docs/img/clion_debugging.png new file mode 100644 index 0000000..d6e8848 Binary files /dev/null and b/docs/img/clion_debugging.png differ diff --git a/fuzz/corpora/.gitkeep b/fuzz/corpora/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/fuzz/parser_parse.cpp b/fuzz/parser_parse.cpp new file mode 100644 index 0000000..a8755d4 --- /dev/null +++ b/fuzz/parser_parse.cpp @@ -0,0 +1,70 @@ +#include +#include +#include + +#include "parser.h" + + +#ifdef NDEBUG +#error "This fuzz target won't work correctly with NDEBUG defined, which will cause asserts to be eliminated" +#endif + + +using std::size_t; + +static char PARSER_KEY[16384]; +static char PARSER_VALUE[16384]; + +extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) +{ + parser_tx_t txObj; + parser_context_t ctx; + parser_error_t rc; + + rc = parser_parse(&ctx, data, size, &txObj); + if (rc != parser_ok) { + return 0; + } + + rc = parser_validate(&ctx); + if (rc != parser_ok) { + return 0; + } + + uint8_t num_items; + rc = parser_getNumItems(&ctx, &num_items); + if (rc != parser_ok) { + fprintf(stderr, + "error in parser_getNumItems: %s\n", + parser_getErrorDescription(rc)); + assert(false); + } + +// fprintf(stderr, "----------------------------------------------\n"); + + for (uint8_t i = 0; i < num_items; i += 1) { + uint8_t page_idx = 0; + uint8_t page_count = 1; + while (page_idx < page_count) { + rc = parser_getItem(&ctx, i, + PARSER_KEY, sizeof(PARSER_KEY), + PARSER_VALUE, sizeof(PARSER_VALUE), + page_idx, &page_count); + +// fprintf(stderr, "%s = %s\n", PARSER_KEY, PARSER_VALUE); + + if (rc != parser_ok) { + fprintf(stderr, + "error getting item %u at page index %u: %s\n", + (unsigned)i, + (unsigned)page_idx, + parser_getErrorDescription(rc)); + assert(false); + } + + page_idx += 1; + } + } + + return 0; +} diff --git a/fuzz/run-fuzz-crashes.py b/fuzz/run-fuzz-crashes.py new file mode 100755 index 0000000..d6d32be --- /dev/null +++ b/fuzz/run-fuzz-crashes.py @@ -0,0 +1,41 @@ +#!/usr/bin/env python3 + +import os +import random +import shlex +import subprocess + +MAX_SECONDS_PER_RUN = 600 +MUTATE_DEPTH = random.randint(1, 20) + +# (fuzzer name, max length, max time scale factor) +CONFIGS = [ + ('parser_parse', 17000, 4), +] + +for config in CONFIGS: + fuzzer, max_len, scale_factor = config + max_time = MAX_SECONDS_PER_RUN * scale_factor + print(f'######## {fuzzer} ########') + + artifact_dir = os.path.join('fuzz', 'corpora', f'{fuzzer}-artifacts') + corpus_dir = os.path.join('fuzz', 'corpora', f'{fuzzer}') + fuzz_path = os.path.join(f'build/bin/fuzz-{fuzzer}') + + os.makedirs(artifact_dir, exist_ok=True) + os.makedirs(corpus_dir, exist_ok=True) + + env = os.environ.copy() + env['ASAN_OPTIONS'] = 'halt_on_error=1:print_stacktrace=1' + env['UBSAN_OPTIONS'] = 'halt_on_error=1:print_stacktrace=1' + + crash_files = os.listdir(artifact_dir) + for c in crash_files: + c_full_path = os.path.join(artifact_dir, c) + cmd = [fuzz_path, f'{c_full_path}'] + print(' '.join(shlex.quote(c) for c in cmd)) + error_code = subprocess.call(cmd, env=env) + if error_code != 0: + exit(error_code) + + diff --git a/fuzz/run-fuzzers.py b/fuzz/run-fuzzers.py new file mode 100755 index 0000000..0b12132 --- /dev/null +++ b/fuzz/run-fuzzers.py @@ -0,0 +1,39 @@ +#!/usr/bin/env python3 + +import os +import random +import shlex +import subprocess + +MAX_SECONDS_PER_RUN = 600 +MUTATE_DEPTH = random.randint(1, 20) + +# (fuzzer name, max length, max time scale factor) +CONFIGS = [ + ('parser_parse', 17000, 4), +] + +for config in CONFIGS: + fuzzer, max_len, scale_factor = config + max_time = MAX_SECONDS_PER_RUN * scale_factor + print(f'######## {fuzzer} ########') + + artifact_dir = os.path.join('fuzz', 'corpora', f'{fuzzer}-artifacts') + corpus_dir = os.path.join('fuzz', 'corpora', f'{fuzzer}') + fuzz_path = os.path.join(f'build/bin/fuzz-{fuzzer}') + + os.makedirs(artifact_dir, exist_ok=True) + os.makedirs(corpus_dir, exist_ok=True) + + env = os.environ.copy() + env['ASAN_OPTIONS'] = 'halt_on_error=1:print_stacktrace=1' + env['UBSAN_OPTIONS'] = 'halt_on_error=1:print_stacktrace=1' + + cmd = [fuzz_path, f'-max_total_time={max_time}', + f'-jobs=16' + f'-max_len={max_len}', + f'-mutate_depth={MUTATE_DEPTH}', + f'-artifact_prefix={artifact_dir}/', + corpus_dir] + print(' '.join(shlex.quote(c) for c in cmd)) + subprocess.call(cmd, env=env) diff --git a/rust-toolchain b/rust-toolchain new file mode 100644 index 0000000..7f3a46a --- /dev/null +++ b/rust-toolchain @@ -0,0 +1 @@ +1.49.0 diff --git a/tests/parser_impl.cpp b/tests/parser_impl.cpp new file mode 100644 index 0000000..75d0332 --- /dev/null +++ b/tests/parser_impl.cpp @@ -0,0 +1,228 @@ +/******************************************************************************* +* (c) 2019 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "gmock/gmock.h" + +#include +#include +#include +#include +#include "parser_impl.h" + +// Test that we can parse SCALE-encoded unsigned integers correctly (uint8_t, uint16_t, uint32_t, uint64_t} +TEST(SCALE, UIntX) { + parser_context_t ctx; + parser_error_t err; + uint8_t buffer[100]; + auto bufferLen = parseHexString( + buffer, + sizeof(buffer), + "45" + "1234" + "12345678" + "1234567812345678" + ); + + parser_init(&ctx, buffer, bufferLen); + + uint8_t v8 = 0; + err = _readUInt8(&ctx, &v8); + EXPECT_EQ(err, parser_ok) << parser_getErrorDescription(err); + EXPECT_EQ(v8, 69); + + uint16_t v16 = 0; + err = _readUInt16(&ctx, &v16); + EXPECT_EQ(err, parser_ok) << parser_getErrorDescription(err); + EXPECT_EQ(v16, 13330); + + uint32_t v32 = 0; + err = _readUInt32(&ctx, &v32); + EXPECT_EQ(err, parser_ok) << parser_getErrorDescription(err); + EXPECT_EQ(v32, 2018915346); + + uint64_t v64 = 0; + err = _readUInt64(&ctx, &v64); + EXPECT_EQ(err, parser_ok) << parser_getErrorDescription(err); + EXPECT_EQ(v64, 8671175386481439762); +} + +// Parse SCALE-encoded booleans +TEST(SCALE, Bool) { + uint8_t buffer[100]; + auto bufferLen = parseHexString(buffer, sizeof(buffer), "000102"); + parser_context_t ctx; + + parser_init(&ctx, buffer, bufferLen); + + pd_bool_t value = bool_true; + parser_error_t err; + + err = _readBool(&ctx, &value); + EXPECT_EQ(err, parser_ok) << parser_getErrorDescription(err); + EXPECT_EQ(value, bool_false); + + err = _readBool(&ctx, &value); + EXPECT_EQ(err, parser_ok) << parser_getErrorDescription(err); + EXPECT_EQ(value, bool_true); + + err = _readBool(&ctx, &value); + EXPECT_EQ(err, parser_unexpected_value); +} + +// Parse SCALE-encoded Compact numbers +TEST(SCALE, Compact) { + parser_context_t ctx; + parser_error_t err; + + uint8_t buffer[100]; + auto bufferLen = parseHexString(buffer, sizeof(buffer), "0004a815010100"); + parser_init(&ctx, buffer, bufferLen); + + compactInt_t cvalue; + uint64_t value; + + err = _readCompactInt(&ctx, &cvalue); + EXPECT_EQ(err, parser_ok) << parser_getErrorDescription(err); + EXPECT_EQ(cvalue.len, 1); + err = _getValue(&cvalue, &value); + EXPECT_EQ(err, parser_ok) << parser_getErrorDescription(err); + EXPECT_EQ(value, 0); + + err = _readCompactInt(&ctx, &cvalue); + EXPECT_EQ(err, parser_ok) << parser_getErrorDescription(err); + EXPECT_EQ(cvalue.len, 1); + err = _getValue(&cvalue, &value); + EXPECT_EQ(err, parser_ok) << parser_getErrorDescription(err); + EXPECT_EQ(value, 1); + + err = _readCompactInt(&ctx, &cvalue); + EXPECT_EQ(err, parser_ok) << parser_getErrorDescription(err); + EXPECT_EQ(cvalue.len, 1); + err = _getValue(&cvalue, &value); + EXPECT_EQ(err, parser_ok) << parser_getErrorDescription(err); + EXPECT_EQ(value, 42); + + err = _readCompactInt(&ctx, &cvalue); + EXPECT_EQ(err, parser_ok) << parser_getErrorDescription(err); + EXPECT_EQ(cvalue.len, 2); + err = _getValue(&cvalue, &value); + EXPECT_EQ(err, parser_ok) << parser_getErrorDescription(err); + EXPECT_EQ(value, 69); + + err = _readCompactInt(&ctx, &cvalue); + EXPECT_EQ(err, parser_ok) << parser_getErrorDescription(err); + EXPECT_EQ(cvalue.len, 2); + err = _getValue(&cvalue, &value); + EXPECT_EQ(err, parser_value_out_of_range); +} + +// Parse SCALE-encoded Compact numbers. Reproducing old known bug +TEST(SCALE, Compact2) { + parser_context_t ctx; + parser_error_t err; + + uint8_t buffer[100]; + auto bufferLen = parseHexString(buffer, sizeof(buffer), "e5c0"); + parser_init(&ctx, buffer, bufferLen); + + compactInt_t cvalue; + uint64_t value; + + err = _readCompactInt(&ctx, &cvalue); + EXPECT_EQ(err, parser_ok) << parser_getErrorDescription(err); + EXPECT_EQ(cvalue.len, 2); + err = _getValue(&cvalue, &value); + EXPECT_EQ(err, parser_ok) << parser_getErrorDescription(err); + EXPECT_EQ(value, 12345); +} + +// Parse SCALE-encoded mortal era objects +TEST(SCALE, MortalEra) { + parser_context_t ctx; + parser_error_t err; + + uint8_t buffer[100]; + auto bufferLen = parseHexString(buffer, sizeof(buffer), "0100"); + parser_init(&ctx, buffer, bufferLen); + + pd_ExtrinsicEra_t v; + err = _readEra(&ctx, &v); + EXPECT_EQ(err, parser_ok) << parser_getErrorDescription(err); + EXPECT_EQ(v.phase, 0); + EXPECT_EQ(v.period, 4); +} + +// Confirm bad transactions are rejected with an error message +TEST(SCALE, BadTX) { + parser_context_t ctx; + parser_error_t err; + + uint8_t buffer[100]; + auto bufferLen = parseHexString(buffer, sizeof(buffer), "0102030405060708091011"); + + parser_init(&ctx, buffer, bufferLen); + + parser_tx_t tx; + + err = _readTx(&ctx, &tx); + EXPECT_EQ(err, parser_unexpected_buffer_end) << parser_getErrorDescription(err);; +} + +// Parse simple SCALE-encoded transaction +TEST(SCALE, TransferTXBadTxVersion) { + parser_context_t ctx; + parser_error_t err; + + const auto testTx = "0400ff8d16d62802ca55326ec52bf76a8543b90e2aba5bcf6cd195c0d6fc1ef38fa1b3000600ae11030000c801" + "00003fd7b9eb6a00376e5be61f01abb429ffb0b104be05eaff4d458da48fcd425baf3fd7b9eb6a00376e5be61f" + "01abb429ffb0b104be05eaff4d458da48fcd425baf"; + + uint8_t buffer[500]; + auto bufferLen = parseHexString(buffer, sizeof(buffer), testTx); + + parser_init(&ctx, buffer, bufferLen); + + parser_tx_t tx; + uint64_t tmp; + char tmpBuffer[100]; + uint8_t pageCount = 0; + + err = _readTx(&ctx, &tx); + EXPECT_EQ(err, parser_tx_version_not_supported) << parser_getErrorDescription(err); + +}// Parse simple SCALE-encoded transaction +TEST(SCALE, TransferTXBadSpec) { + parser_context_t ctx; + parser_error_t err; + + const auto testTx = "00004d3dcb99d5038d240b63ce64c10c05010000000300000091b171bb158e2d3848fa23a9f1c25182fb8e20313b" + "2c1eb49219da7a70ce90c391b171bb158e2d3848fa23a9f1c25182fb8e20313b2c1eb49219da7a70ce90c3"; + + + uint8_t buffer[500]; + auto bufferLen = parseHexString(buffer, sizeof(buffer), testTx); + + parser_init(&ctx, buffer, bufferLen); + + parser_tx_t tx; + uint64_t tmp; + char tmpBuffer[100]; + uint8_t pageCount = 0; + + err = _readTx(&ctx, &tx); + EXPECT_EQ(err, parser_tx_version_not_supported) << parser_getErrorDescription(err); +} + diff --git a/tests/printing_bytes.cpp b/tests/printing_bytes.cpp new file mode 100644 index 0000000..8a473c5 --- /dev/null +++ b/tests/printing_bytes.cpp @@ -0,0 +1,79 @@ +/******************************************************************************* +* (c) 2019 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "gmock/gmock.h" + +#include +#include +#include +#include +#include +#include "parser_impl.h" + +using ::testing::TestWithParam; + +typedef struct { + uint16_t pageSize; + uint16_t pageIndex; + std::string input; + std::string expected; + uint16_t expectedPageCount; +} testcase_bytestPrint_t; + +class BytesPrintTests : public ::testing::TestWithParam { +}; + +INSTANTIATE_TEST_SUITE_P + +( + BytesPrintTestcases, + BytesPrintTests, + ::testing::ValuesIn( + { + // pageSize, pageIndex, input, expected + testcase_bytestPrint_t{20, 0, "1234567890", "1234567890", 1}, + testcase_bytestPrint_t{6, 0, "1234567890", "1234", 3}, + testcase_bytestPrint_t{6, 1, "1234567890", "5678", 3}, + testcase_bytestPrint_t{6, 2, "1234567890", "90", 3}, + testcase_bytestPrint_t{5, 0, "1234567890", "1234", 3}, + testcase_bytestPrint_t{5, 1, "1234567890", "5678", 3}, + testcase_bytestPrint_t{5, 2, "1234567890", "90", 3}, + testcase_bytestPrint_t{4, 0, "1234567890", "12", 5}, + testcase_bytestPrint_t{4, 1, "1234567890", "34", 5}, + testcase_bytestPrint_t{4, 2, "1234567890", "56", 5}, + testcase_bytestPrint_t{4, 3, "1234567890", "78", 5}, + testcase_bytestPrint_t{4, 4, "1234567890", "90", 5}, + }) +); + +// Parametric Test. Printing long numbers + paging +TEST_P(BytesPrintTests, BytesPrinting) { + parser_context_t ctx; + parser_error_t err; + + uint8_t buffer[100]; + auto bufferLen = parseHexString(buffer, sizeof(buffer), GetParam().input.c_str()); + + pd_Bytes_t b = {bufferLen, buffer}; + + char tmpOut[100]; + uint8_t pageCount; + err = _toStringBytes(&b, tmpOut, GetParam().pageSize, GetParam().pageIndex, &pageCount); + EXPECT_EQ(err, parser_ok) << parser_getErrorDescription(err); + + EXPECT_EQ(std::string(tmpOut), GetParam().expected); + EXPECT_EQ(pageCount, GetParam().expectedPageCount); +} diff --git a/tests/printing_compact.cpp b/tests/printing_compact.cpp new file mode 100644 index 0000000..81bc626 --- /dev/null +++ b/tests/printing_compact.cpp @@ -0,0 +1,103 @@ +/******************************************************************************* +* (c) 2019 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "gmock/gmock.h" + +#include +#include +#include +#include +#include "parser_impl.h" + +using ::testing::TestWithParam; + +typedef struct { + uint64_t decimals; + std::string input; + std::string expected; +} testcase_bytesPrint_t; + +class CompactPrintTests : public ::testing::TestWithParam {}; + +INSTANTIATE_TEST_SUITE_P + +( + CompactPrintTestcases, + CompactPrintTests, + ::testing::ValuesIn( + { + // number of decimals, input, expected + testcase_bytesPrint_t{ + 0, + "0b00204aa9d101", + "2000000000000"}, + testcase_bytesPrint_t{ + 0, + "57d20a3fce96f1cf8c9cb4378c37a4873f17621ebce404f5aa13", + "123456789012345678901234567890123456789012345678901234567890"}, + testcase_bytesPrint_t{ + 12, + "04", + "0.000000000001"}, + testcase_bytesPrint_t{ + 1, + "04", + "0.1"}, + testcase_bytesPrint_t{ + 1, + "28", + "1.0"}, + testcase_bytesPrint_t{ + 2, + "28", + "0.10"}, + testcase_bytesPrint_t{ + 0, + "28", + "10"}, + testcase_bytesPrint_t{ + 12, + "02890700", + "0.000000123456"}, + testcase_bytesPrint_t{ + 12, + "131581e97df4102211", + "1234567.890123456789"}, + }) +); + +// Parse Compact numbers, reproduce/fix known bug +TEST_P(CompactPrintTests, CompactPrinting) { + parser_context_t ctx; + parser_error_t err; + + uint8_t buffer[100]; + auto bufferLen = parseHexString(buffer, sizeof(buffer), GetParam().input.c_str()); + parser_init(&ctx, buffer, bufferLen); + + compactInt_t cvalue; + + err = _readCompactInt(&ctx, &cvalue); + EXPECT_EQ(err, parser_ok) << parser_getErrorDescription(err); + + char tmpOut[100]; + char prefix[0]; + uint8_t dummy; + err = _toStringCompactInt(&cvalue, GetParam().decimals, 0, prefix, tmpOut, 100, 0, &dummy); + EXPECT_EQ(err, parser_ok) << parser_getErrorDescription(err); + + EXPECT_EQ(std::string(tmpOut), GetParam().expected); +} diff --git a/tests/testcases_current.json b/tests/testcases_current.json new file mode 100644 index 0000000..b6161ea --- /dev/null +++ b/tests/testcases_current.json @@ -0,0 +1,14355 @@ +[ + { + "index": 1, + "name": "System_Fill_block", + "blob": "0000c221645bd5030403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | System : Fill block", + "1 | Ratio : 153.3288898%", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | System : Fill block", + "1 | Ratio : 153.3288898%", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 2, + "name": "System_Fill_block", + "blob": "00000aefd461d50391016d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | System : Fill block", + "1 | Ratio : 164.1344778%", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | System : Fill block", + "1 | Ratio : 164.1344778%", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 3, + "name": "System_Fill_block", + "blob": "0000c221645bd503ae1103008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | System : Fill block", + "1 | Ratio : 153.3288898%", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | System : Fill block", + "1 | Ratio : 153.3288898%", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 4, + "name": "System_Fill_block", + "blob": "0000c221645bd503ae11030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | System : Fill block", + "1 | Ratio : 153.3288898%", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | System : Fill block", + "1 | Ratio : 153.3288898%", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 5, + "name": "System_Fill_block", + "blob": "0000c221645bd50304002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | System : Fill block", + "1 | Ratio : 153.3288898%" + ], + "output_expert": [ + "0 | System : Fill block", + "1 | Ratio : 153.3288898%", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 6, + "name": "System_Remark", + "blob": "0001010141a51011fdeea68203b5dfd69ee73bdc4a84956e9381945ac55b1010a497c4f4831dc70b020ab1f64d270fea3e248f2ce09877d8454394180e1e2fd3438129aad503ae1103000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | System : Remark", + "1 | Remark [1/4] : 41a51011fdeea68203b5dfd69ee73bdc4a8495", + "1 | Remark [2/4] : 6e9381945ac55b1010a497c4f4831dc70b020a", + "1 | Remark [3/4] : b1f64d270fea3e248f2ce09877d8454394180e", + "1 | Remark [4/4] : 1e2fd3438129aa", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | System : Remark", + "1 | Remark [1/4] : 41a51011fdeea68203b5dfd69ee73bdc4a8495", + "1 | Remark [2/4] : 6e9381945ac55b1010a497c4f4831dc70b020a", + "1 | Remark [3/4] : b1f64d270fea3e248f2ce09877d8454394180e", + "1 | Remark [4/4] : 1e2fd3438129aa", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 7, + "name": "System_Remark", + "blob": "0001010228a192d7318f784cb9231f2b018e5a9c99272f2d9c83192c08049ad2387b15cbfbb2b107147972a10bac4f598fb0cdc10b9f39151b2264c9bce34c800f4a2e4524607bbe88efe513d88bf1ae0d179d0ca0b798383e02e763d9c2d195bcafc2e1797e6a6ac8297b29b7ce0352255e389ce9f736b6dba8e7e1ef4671f96590f952d5038d248ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | System : Remark", + "1 | Remark [1/7] : 28a192d7318f784cb9231f2b018e5a9c99272f", + "1 | Remark [2/7] : 2d9c83192c08049ad2387b15cbfbb2b1071479", + "1 | Remark [3/7] : 72a10bac4f598fb0cdc10b9f39151b2264c9bc", + "1 | Remark [4/7] : e34c800f4a2e4524607bbe88efe513d88bf1ae", + "1 | Remark [5/7] : 0d179d0ca0b798383e02e763d9c2d195bcafc2", + "1 | Remark [6/7] : e1797e6a6ac8297b29b7ce0352255e389ce9f7", + "1 | Remark [7/7] : 36b6dba8e7e1ef4671f96590f952", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | System : Remark", + "1 | Remark [1/7] : 28a192d7318f784cb9231f2b018e5a9c99272f", + "1 | Remark [2/7] : 2d9c83192c08049ad2387b15cbfbb2b1071479", + "1 | Remark [3/7] : 72a10bac4f598fb0cdc10b9f39151b2264c9bc", + "1 | Remark [4/7] : e34c800f4a2e4524607bbe88efe513d88bf1ae", + "1 | Remark [5/7] : 0d179d0ca0b798383e02e763d9c2d195bcafc2", + "1 | Remark [6/7] : e1797e6a6ac8297b29b7ce0352255e389ce9f7", + "1 | Remark [7/7] : 36b6dba8e7e1ef4671f96590f952", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 8, + "name": "System_Remark", + "blob": "000101024fff0f1baa4228af23671ae8fe30d41fdd16f8e8de3421e9991d09e41d575cbb55ca2876e3518b1baa8ec5c3cd87533d21724ca6d80d9e9206fa160228dd70e9e86bec2fd1fd4a93abf246f2212d3390174061cf1afa33b89cc520d02002a0bc723986572e987a346b24c0d7e12b9053d5df9aec0972d6148b46d236e35aadedd503008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | System : Remark", + "1 | Remark [1/7] : 4fff0f1baa4228af23671ae8fe30d41fdd16f8", + "1 | Remark [2/7] : e8de3421e9991d09e41d575cbb55ca2876e351", + "1 | Remark [3/7] : 8b1baa8ec5c3cd87533d21724ca6d80d9e9206", + "1 | Remark [4/7] : fa160228dd70e9e86bec2fd1fd4a93abf246f2", + "1 | Remark [5/7] : 212d3390174061cf1afa33b89cc520d02002a0", + "1 | Remark [6/7] : bc723986572e987a346b24c0d7e12b9053d5df", + "1 | Remark [7/7] : 9aec0972d6148b46d236e35aaded", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | System : Remark", + "1 | Remark [1/7] : 4fff0f1baa4228af23671ae8fe30d41fdd16f8", + "1 | Remark [2/7] : e8de3421e9991d09e41d575cbb55ca2876e351", + "1 | Remark [3/7] : 8b1baa8ec5c3cd87533d21724ca6d80d9e9206", + "1 | Remark [4/7] : fa160228dd70e9e86bec2fd1fd4a93abf246f2", + "1 | Remark [5/7] : 212d3390174061cf1afa33b89cc520d02002a0", + "1 | Remark [6/7] : bc723986572e987a346b24c0d7e12b9053d5df", + "1 | Remark [7/7] : 9aec0972d6148b46d236e35aaded", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 9, + "name": "System_Remark", + "blob": "0001010293859bda4a5499d40a481edfd9cfc89083a367745d339128680aaacc9e7ce65fdf5a9bd46291155579ff30c15ad939f865f7393d41252acdcf1bb50d640b8c5e4090fc011ca336434068fa7ba9e5f4fa9150a58acd829b70ad36cd42ad37f2b649904d2e87240b3ca499f6ab8c7f836662bbb05e2b8866b83aba6e31ae0cd6dcd503046d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | System : Remark", + "1 | Remark [1/7] : 93859bda4a5499d40a481edfd9cfc89083a367", + "1 | Remark [2/7] : 745d339128680aaacc9e7ce65fdf5a9bd46291", + "1 | Remark [3/7] : 155579ff30c15ad939f865f7393d41252acdcf", + "1 | Remark [4/7] : 1bb50d640b8c5e4090fc011ca336434068fa7b", + "1 | Remark [5/7] : a9e5f4fa9150a58acd829b70ad36cd42ad37f2", + "1 | Remark [6/7] : b649904d2e87240b3ca499f6ab8c7f836662bb", + "1 | Remark [7/7] : b05e2b8866b83aba6e31ae0cd6dc", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | System : Remark", + "1 | Remark [1/7] : 93859bda4a5499d40a481edfd9cfc89083a367", + "1 | Remark [2/7] : 745d339128680aaacc9e7ce65fdf5a9bd46291", + "1 | Remark [3/7] : 155579ff30c15ad939f865f7393d41252acdcf", + "1 | Remark [4/7] : 1bb50d640b8c5e4090fc011ca336434068fa7b", + "1 | Remark [5/7] : a9e5f4fa9150a58acd829b70ad36cd42ad37f2", + "1 | Remark [6/7] : b649904d2e87240b3ca499f6ab8c7f836662bb", + "1 | Remark [7/7] : b05e2b8866b83aba6e31ae0cd6dc", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 10, + "name": "System_Remark", + "blob": "00010101db1c923fb5421a898e03cf967a0fdb1aa102778aed44a7c825b8285dbed40845debcddc83951c406e630e86915d7b987ad86c87f0a5eda9a802cbcd59362d371d503040b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | System : Remark", + "1 | Remark [1/4] : db1c923fb5421a898e03cf967a0fdb1aa10277", + "1 | Remark [2/4] : 8aed44a7c825b8285dbed40845debcddc83951", + "1 | Remark [3/4] : c406e630e86915d7b987ad86c87f0a5eda9a80", + "1 | Remark [4/4] : 2cbcd59362d371", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | System : Remark", + "1 | Remark [1/4] : db1c923fb5421a898e03cf967a0fdb1aa10277", + "1 | Remark [2/4] : 8aed44a7c825b8285dbed40845debcddc83951", + "1 | Remark [3/4] : c406e630e86915d7b987ad86c87f0a5eda9a80", + "1 | Remark [4/4] : 2cbcd59362d371", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 11, + "name": "System_Set_heap_pages", + "blob": "00020100000000000000d5038d248ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | System : Set heap pages", + "1 | Pages : 1", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | System : Set heap pages", + "1 | Pages : 1", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 12, + "name": "System_Set_heap_pages", + "blob": "00026400000000000000d503ae1103006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | System : Set heap pages", + "1 | Pages : 100", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | System : Set heap pages", + "1 | Pages : 100", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 13, + "name": "System_Set_heap_pages", + "blob": "00020000000000000000d503ae1103008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | System : Set heap pages", + "1 | Pages : 0", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | System : Set heap pages", + "1 | Pages : 0", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 14, + "name": "System_Set_heap_pages", + "blob": "00026400000000000000d503ae1103006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | System : Set heap pages", + "1 | Pages : 100", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | System : Set heap pages", + "1 | Pages : 100", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 15, + "name": "System_Set_heap_pages", + "blob": "00020100000000000000d50391010b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | System : Set heap pages", + "1 | Pages : 1", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | System : Set heap pages", + "1 | Pages : 1", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 16, + "name": "System_Set_code", + "blob": "0003010141a51011fdeea68203b5dfd69ee73bdc4a84956e9381945ac55b1010a497c4f4831dc70b020ab1f64d270fea3e248f2ce09877d8454394180e1e2fd3438129aad5038d240b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | System : Set code", + "1 | Code [1/4] : 41a51011fdeea68203b5dfd69ee73bdc4a8495", + "1 | Code [2/4] : 6e9381945ac55b1010a497c4f4831dc70b020a", + "1 | Code [3/4] : b1f64d270fea3e248f2ce09877d8454394180e", + "1 | Code [4/4] : 1e2fd3438129aa", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | System : Set code", + "1 | Code [1/4] : 41a51011fdeea68203b5dfd69ee73bdc4a8495", + "1 | Code [2/4] : 6e9381945ac55b1010a497c4f4831dc70b020a", + "1 | Code [3/4] : b1f64d270fea3e248f2ce09877d8454394180e", + "1 | Code [4/4] : 1e2fd3438129aa", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 17, + "name": "System_Set_code", + "blob": "0003010293859bda4a5499d40a481edfd9cfc89083a367745d339128680aaacc9e7ce65fdf5a9bd46291155579ff30c15ad939f865f7393d41252acdcf1bb50d640b8c5e4090fc011ca336434068fa7ba9e5f4fa9150a58acd829b70ad36cd42ad37f2b649904d2e87240b3ca499f6ab8c7f836662bbb05e2b8866b83aba6e31ae0cd6dcd503046d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | System : Set code", + "1 | Code [1/7] : 93859bda4a5499d40a481edfd9cfc89083a367", + "1 | Code [2/7] : 745d339128680aaacc9e7ce65fdf5a9bd46291", + "1 | Code [3/7] : 155579ff30c15ad939f865f7393d41252acdcf", + "1 | Code [4/7] : 1bb50d640b8c5e4090fc011ca336434068fa7b", + "1 | Code [5/7] : a9e5f4fa9150a58acd829b70ad36cd42ad37f2", + "1 | Code [6/7] : b649904d2e87240b3ca499f6ab8c7f836662bb", + "1 | Code [7/7] : b05e2b8866b83aba6e31ae0cd6dc", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | System : Set code", + "1 | Code [1/7] : 93859bda4a5499d40a481edfd9cfc89083a367", + "1 | Code [2/7] : 745d339128680aaacc9e7ce65fdf5a9bd46291", + "1 | Code [3/7] : 155579ff30c15ad939f865f7393d41252acdcf", + "1 | Code [4/7] : 1bb50d640b8c5e4090fc011ca336434068fa7b", + "1 | Code [5/7] : a9e5f4fa9150a58acd829b70ad36cd42ad37f2", + "1 | Code [6/7] : b649904d2e87240b3ca499f6ab8c7f836662bb", + "1 | Code [7/7] : b05e2b8866b83aba6e31ae0cd6dc", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 18, + "name": "System_Set_code", + "blob": "0003010123525d76fc307138b9eab30b4fd73b6db2d1f513b975f1b42b0a9119218f5fcad709998a4477f9c0db0808b4565009df96176097ef77f0ca246a3281e9c49147d50391016d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | System : Set code", + "1 | Code [1/4] : 23525d76fc307138b9eab30b4fd73b6db2d1f5", + "1 | Code [2/4] : 13b975f1b42b0a9119218f5fcad709998a4477", + "1 | Code [3/4] : f9c0db0808b4565009df96176097ef77f0ca24", + "1 | Code [4/4] : 6a3281e9c49147", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | System : Set code", + "1 | Code [1/4] : 23525d76fc307138b9eab30b4fd73b6db2d1f5", + "1 | Code [2/4] : 13b975f1b42b0a9119218f5fcad709998a4477", + "1 | Code [3/4] : f9c0db0808b4565009df96176097ef77f0ca24", + "1 | Code [4/4] : 6a3281e9c49147", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 19, + "name": "System_Set_code", + "blob": "0003010123525d76fc307138b9eab30b4fd73b6db2d1f513b975f1b42b0a9119218f5fcad709998a4477f9c0db0808b4565009df96176097ef77f0ca246a3281e9c49147d5038d24002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | System : Set code", + "1 | Code [1/4] : 23525d76fc307138b9eab30b4fd73b6db2d1f5", + "1 | Code [2/4] : 13b975f1b42b0a9119218f5fcad709998a4477", + "1 | Code [3/4] : f9c0db0808b4565009df96176097ef77f0ca24", + "1 | Code [4/4] : 6a3281e9c49147" + ], + "output_expert": [ + "0 | System : Set code", + "1 | Code [1/4] : 23525d76fc307138b9eab30b4fd73b6db2d1f5", + "1 | Code [2/4] : 13b975f1b42b0a9119218f5fcad709998a4477", + "1 | Code [3/4] : f9c0db0808b4565009df96176097ef77f0ca24", + "1 | Code [4/4] : 6a3281e9c49147", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 20, + "name": "System_Set_code", + "blob": "0003010228a192d7318f784cb9231f2b018e5a9c99272f2d9c83192c08049ad2387b15cbfbb2b107147972a10bac4f598fb0cdc10b9f39151b2264c9bce34c800f4a2e4524607bbe88efe513d88bf1ae0d179d0ca0b798383e02e763d9c2d195bcafc2e1797e6a6ac8297b29b7ce0352255e389ce9f736b6dba8e7e1ef4671f96590f952d50300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | System : Set code", + "1 | Code [1/7] : 28a192d7318f784cb9231f2b018e5a9c99272f", + "1 | Code [2/7] : 2d9c83192c08049ad2387b15cbfbb2b1071479", + "1 | Code [3/7] : 72a10bac4f598fb0cdc10b9f39151b2264c9bc", + "1 | Code [4/7] : e34c800f4a2e4524607bbe88efe513d88bf1ae", + "1 | Code [5/7] : 0d179d0ca0b798383e02e763d9c2d195bcafc2", + "1 | Code [6/7] : e1797e6a6ac8297b29b7ce0352255e389ce9f7", + "1 | Code [7/7] : 36b6dba8e7e1ef4671f96590f952" + ], + "output_expert": [ + "0 | System : Set code", + "1 | Code [1/7] : 28a192d7318f784cb9231f2b018e5a9c99272f", + "1 | Code [2/7] : 2d9c83192c08049ad2387b15cbfbb2b1071479", + "1 | Code [3/7] : 72a10bac4f598fb0cdc10b9f39151b2264c9bc", + "1 | Code [4/7] : e34c800f4a2e4524607bbe88efe513d88bf1ae", + "1 | Code [5/7] : 0d179d0ca0b798383e02e763d9c2d195bcafc2", + "1 | Code [6/7] : e1797e6a6ac8297b29b7ce0352255e389ce9f7", + "1 | Code [7/7] : 36b6dba8e7e1ef4671f96590f952", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 21, + "name": "System_Set_code_without_checks", + "blob": "000480a2661c961cab79e32ca6e3044488373e41b21178eea66aa545ebd2fcf33dd35cd5038d240b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | System : Set code without checks", + "1 | Code [1/2] : a2661c961cab79e32ca6e3044488373e41b211", + "1 | Code [2/2] : 78eea66aa545ebd2fcf33dd35c", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | System : Set code without checks", + "1 | Code [1/2] : a2661c961cab79e32ca6e3044488373e41b211", + "1 | Code [2/2] : 78eea66aa545ebd2fcf33dd35c", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 22, + "name": "System_Set_code_without_checks", + "blob": "000480b129f97028bc632c89b3477f89aed40e46c89c1c4e9e70b4bde031ff79decf35d5038d2403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | System : Set code without checks", + "1 | Code [1/2] : b129f97028bc632c89b3477f89aed40e46c89c", + "1 | Code [2/2] : 1c4e9e70b4bde031ff79decf35", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | System : Set code without checks", + "1 | Code [1/2] : b129f97028bc632c89b3477f89aed40e46c89c", + "1 | Code [2/2] : 1c4e9e70b4bde031ff79decf35", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 23, + "name": "System_Set_code_without_checks", + "blob": "00040101db1c923fb5421a898e03cf967a0fdb1aa102778aed44a7c825b8285dbed40845debcddc83951c406e630e86915d7b987ad86c87f0a5eda9a802cbcd59362d371d5038d248ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | System : Set code without checks", + "1 | Code [1/4] : db1c923fb5421a898e03cf967a0fdb1aa10277", + "1 | Code [2/4] : 8aed44a7c825b8285dbed40845debcddc83951", + "1 | Code [3/4] : c406e630e86915d7b987ad86c87f0a5eda9a80", + "1 | Code [4/4] : 2cbcd59362d371", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | System : Set code without checks", + "1 | Code [1/4] : db1c923fb5421a898e03cf967a0fdb1aa10277", + "1 | Code [2/4] : 8aed44a7c825b8285dbed40845debcddc83951", + "1 | Code [3/4] : c406e630e86915d7b987ad86c87f0a5eda9a80", + "1 | Code [4/4] : 2cbcd59362d371", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 24, + "name": "System_Set_code_without_checks", + "blob": "000401024fff0f1baa4228af23671ae8fe30d41fdd16f8e8de3421e9991d09e41d575cbb55ca2876e3518b1baa8ec5c3cd87533d21724ca6d80d9e9206fa160228dd70e9e86bec2fd1fd4a93abf246f2212d3390174061cf1afa33b89cc520d02002a0bc723986572e987a346b24c0d7e12b9053d5df9aec0972d6148b46d236e35aadedd5030433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | System : Set code without checks", + "1 | Code [1/7] : 4fff0f1baa4228af23671ae8fe30d41fdd16f8", + "1 | Code [2/7] : e8de3421e9991d09e41d575cbb55ca2876e351", + "1 | Code [3/7] : 8b1baa8ec5c3cd87533d21724ca6d80d9e9206", + "1 | Code [4/7] : fa160228dd70e9e86bec2fd1fd4a93abf246f2", + "1 | Code [5/7] : 212d3390174061cf1afa33b89cc520d02002a0", + "1 | Code [6/7] : bc723986572e987a346b24c0d7e12b9053d5df", + "1 | Code [7/7] : 9aec0972d6148b46d236e35aaded", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | System : Set code without checks", + "1 | Code [1/7] : 4fff0f1baa4228af23671ae8fe30d41fdd16f8", + "1 | Code [2/7] : e8de3421e9991d09e41d575cbb55ca2876e351", + "1 | Code [3/7] : 8b1baa8ec5c3cd87533d21724ca6d80d9e9206", + "1 | Code [4/7] : fa160228dd70e9e86bec2fd1fd4a93abf246f2", + "1 | Code [5/7] : 212d3390174061cf1afa33b89cc520d02002a0", + "1 | Code [6/7] : bc723986572e987a346b24c0d7e12b9053d5df", + "1 | Code [7/7] : 9aec0972d6148b46d236e35aaded", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 25, + "name": "System_Set_code_without_checks", + "blob": "0004010228a192d7318f784cb9231f2b018e5a9c99272f2d9c83192c08049ad2387b15cbfbb2b107147972a10bac4f598fb0cdc10b9f39151b2264c9bce34c800f4a2e4524607bbe88efe513d88bf1ae0d179d0ca0b798383e02e763d9c2d195bcafc2e1797e6a6ac8297b29b7ce0352255e389ce9f736b6dba8e7e1ef4671f96590f952d503006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | System : Set code without checks", + "1 | Code [1/7] : 28a192d7318f784cb9231f2b018e5a9c99272f", + "1 | Code [2/7] : 2d9c83192c08049ad2387b15cbfbb2b1071479", + "1 | Code [3/7] : 72a10bac4f598fb0cdc10b9f39151b2264c9bc", + "1 | Code [4/7] : e34c800f4a2e4524607bbe88efe513d88bf1ae", + "1 | Code [5/7] : 0d179d0ca0b798383e02e763d9c2d195bcafc2", + "1 | Code [6/7] : e1797e6a6ac8297b29b7ce0352255e389ce9f7", + "1 | Code [7/7] : 36b6dba8e7e1ef4671f96590f952", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | System : Set code without checks", + "1 | Code [1/7] : 28a192d7318f784cb9231f2b018e5a9c99272f", + "1 | Code [2/7] : 2d9c83192c08049ad2387b15cbfbb2b1071479", + "1 | Code [3/7] : 72a10bac4f598fb0cdc10b9f39151b2264c9bc", + "1 | Code [4/7] : e34c800f4a2e4524607bbe88efe513d88bf1ae", + "1 | Code [5/7] : 0d179d0ca0b798383e02e763d9c2d195bcafc2", + "1 | Code [6/7] : e1797e6a6ac8297b29b7ce0352255e389ce9f7", + "1 | Code [7/7] : 36b6dba8e7e1ef4671f96590f952", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 26, + "name": "System_Suicide", + "blob": "0009d503910103d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | System : Suicide", + "1 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | System : Suicide", + "1 | Chain : Edgeware", + "2 | Nonce : 100", + "3 | Tip : EDG 0.00000000123456789", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 27, + "name": "System_Suicide", + "blob": "0009d503006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | System : Suicide", + "1 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | System : Suicide", + "1 | Chain : Edgeware", + "2 | Nonce : 0", + "3 | Tip : EDG 0.000000000000000987", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 28, + "name": "System_Suicide", + "blob": "0009d50300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | System : Suicide" + ], + "output_expert": [ + "0 | System : Suicide", + "1 | Chain : Edgeware", + "2 | Nonce : 0", + "3 | Era Phase : 61", + "4 | Era Period : 64", + "5 | Block [1/2] : 00000000000000000000000000000000000000", + "5 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 29, + "name": "System_Suicide", + "blob": "0009d503ae1103000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | System : Suicide", + "1 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | System : Suicide", + "1 | Chain : Edgeware", + "2 | Nonce : 50283", + "3 | Tip : EDG 0.000005552342355555", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 30, + "name": "System_Suicide", + "blob": "0009d503910103d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | System : Suicide", + "1 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | System : Suicide", + "1 | Chain : Edgeware", + "2 | Nonce : 100", + "3 | Tip : EDG 0.00000000123456789", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 31, + "name": "Timestamp_Set", + "blob": "030000d50304002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Timestamp : Set", + "1 | Now : 0" + ], + "output_expert": [ + "0 | Timestamp : Set", + "1 | Now : 0", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 32, + "name": "Timestamp_Set", + "blob": "030000d50391010b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Timestamp : Set", + "1 | Now : 0", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Timestamp : Set", + "1 | Now : 0", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 33, + "name": "Timestamp_Set", + "blob": "030006a40e00d503ae1103006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Timestamp : Set", + "1 | Now : 239873", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Timestamp : Set", + "1 | Now : 239873", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 34, + "name": "Timestamp_Set", + "blob": "0300c920d503ae1103008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Timestamp : Set", + "1 | Now : 2098", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Timestamp : Set", + "1 | Now : 2098", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 35, + "name": "Timestamp_Set", + "blob": "030006a40e00d5038d2433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Timestamp : Set", + "1 | Now : 239873", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Timestamp : Set", + "1 | Now : 239873", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 36, + "name": "Indices_Claim", + "blob": "05007824e56ed503006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Indices : Claim", + "1 | Index : 1860510840", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Indices : Claim", + "1 | Index : 1860510840", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 37, + "name": "Indices_Claim", + "blob": "05007824e56ed503ae1103006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Indices : Claim", + "1 | Index : 1860510840", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Indices : Claim", + "1 | Index : 1860510840", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 38, + "name": "Indices_Claim", + "blob": "05007824e56ed50391018ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Indices : Claim", + "1 | Index : 1860510840", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Indices : Claim", + "1 | Index : 1860510840", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 39, + "name": "Indices_Claim", + "blob": "05007824e56ed503ae11030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Indices : Claim", + "1 | Index : 1860510840", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Indices : Claim", + "1 | Index : 1860510840", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 40, + "name": "Indices_Claim", + "blob": "05007824e56ed5039101002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Indices : Claim", + "1 | Index : 1860510840" + ], + "output_expert": [ + "0 | Indices : Claim", + "1 | Index : 1860510840", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 41, + "name": "Indices_Transfer", + "blob": "0501ea33a975e8a0e3908fad9be67b6927f1b5d2fdee682c9a21e59b31fb76804b427824e56ed5030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Indices : Transfer", + "1 | New [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "1 | New [2/2] : 8kQ2Cbj7", + "2 | Index : 1860510840", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Indices : Transfer", + "1 | New [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "1 | New [2/2] : 8kQ2Cbj7", + "2 | Index : 1860510840", + "3 | Chain : Edgeware", + "4 | Nonce : 0", + "5 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "5 | Tip [2/2] : 56789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 42, + "name": "Indices_Transfer", + "blob": "0501ea33a975e8a0e3908fad9be67b6927f1b5d2fdee682c9a21e59b31fb76804b427824e56ed5038d248ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Indices : Transfer", + "1 | New [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "1 | New [2/2] : 8kQ2Cbj7", + "2 | Index : 1860510840", + "3 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Indices : Transfer", + "1 | New [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "1 | New [2/2] : 8kQ2Cbj7", + "2 | Index : 1860510840", + "3 | Chain : Edgeware", + "4 | Nonce : 2339", + "5 | Tip : EDG 0.000000000055555555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 43, + "name": "Indices_Transfer", + "blob": "0501ea33a975e8a0e3908fad9be67b6927f1b5d2fdee682c9a21e59b31fb76804b427824e56ed503006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Indices : Transfer", + "1 | New [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "1 | New [2/2] : 8kQ2Cbj7", + "2 | Index : 1860510840", + "3 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Indices : Transfer", + "1 | New [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "1 | New [2/2] : 8kQ2Cbj7", + "2 | Index : 1860510840", + "3 | Chain : Edgeware", + "4 | Nonce : 0", + "5 | Tip : EDG 0.000000000000000987", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 44, + "name": "Indices_Transfer", + "blob": "0501ea33a975e8a0e3908fad9be67b6927f1b5d2fdee682c9a21e59b31fb76804b427824e56ed503040b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Indices : Transfer", + "1 | New [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "1 | New [2/2] : 8kQ2Cbj7", + "2 | Index : 1860510840", + "3 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Indices : Transfer", + "1 | New [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "1 | New [2/2] : 8kQ2Cbj7", + "2 | Index : 1860510840", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Tip : EDG 0.000005552342355555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 45, + "name": "Indices_Transfer", + "blob": "05010a020856a01aa594a4a77167f74b11e13dbbbc934d8c942eca62569d4c58390e7824e56ed5038d24002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Indices : Transfer", + "1 | New [1/2] : hjjtjpF2ZP5MQ71c5PmPgSVTC3Jv6WL2mK4xcEx", + "1 | New [2/2] : gUKcbvMx", + "2 | Index : 1860510840" + ], + "output_expert": [ + "0 | Indices : Transfer", + "1 | New [1/2] : hjjtjpF2ZP5MQ71c5PmPgSVTC3Jv6WL2mK4xcEx", + "1 | New [2/2] : gUKcbvMx", + "2 | Index : 1860510840", + "3 | Chain : Edgeware", + "4 | Nonce : 2339", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 46, + "name": "Indices_Free", + "blob": "05027824e56ed503ae11030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Indices : Free", + "1 | Index : 1860510840", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Indices : Free", + "1 | Index : 1860510840", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 47, + "name": "Indices_Free", + "blob": "05027824e56ed503008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Indices : Free", + "1 | Index : 1860510840", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Indices : Free", + "1 | Index : 1860510840", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 48, + "name": "Indices_Free", + "blob": "05027824e56ed503008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Indices : Free", + "1 | Index : 1860510840", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Indices : Free", + "1 | Index : 1860510840", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 49, + "name": "Indices_Free", + "blob": "05027824e56ed503910133158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Indices : Free", + "1 | Index : 1860510840", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Indices : Free", + "1 | Index : 1860510840", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 50, + "name": "Indices_Free", + "blob": "05027824e56ed503ae110300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Indices : Free", + "1 | Index : 1860510840" + ], + "output_expert": [ + "0 | Indices : Free", + "1 | Index : 1860510840", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 51, + "name": "Indices_Force_transfer", + "blob": "050344934098651253342230b3e67b37bb55f934927ffadbd3d2025686e16269f7557824e56e01d503910103d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Indices : Force transfer", + "1 | New [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "1 | New [2/2] : t8MmbYSG", + "2 | Index : 1860510840", + "3 | Freeze : True", + "4 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Indices : Force transfer", + "1 | New [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "1 | New [2/2] : t8MmbYSG", + "2 | Index : 1860510840", + "3 | Freeze : True", + "4 | Chain : Edgeware", + "5 | Nonce : 100", + "6 | Tip : EDG 0.00000000123456789", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 52, + "name": "Indices_Force_transfer", + "blob": "05038647fb36b1a57550a3a9ce1810aece028bccdd32d63b89731bc178f750a6d9677824e56e01d503ae110300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Indices : Force transfer", + "1 | New [1/2] : kYgcKBprAL2wXJey222eVRzgpHDtat891TyqH15", + "1 | New [2/2] : w9pMuDEH", + "2 | Index : 1860510840", + "3 | Freeze : True" + ], + "output_expert": [ + "0 | Indices : Force transfer", + "1 | New [1/2] : kYgcKBprAL2wXJey222eVRzgpHDtat891TyqH15", + "1 | New [2/2] : w9pMuDEH", + "2 | Index : 1860510840", + "3 | Freeze : True", + "4 | Chain : Edgeware", + "5 | Nonce : 50283", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 53, + "name": "Indices_Force_transfer", + "blob": "0503ea33a975e8a0e3908fad9be67b6927f1b5d2fdee682c9a21e59b31fb76804b427824e56e00d503ae11030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Indices : Force transfer", + "1 | New [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "1 | New [2/2] : 8kQ2Cbj7", + "2 | Index : 1860510840", + "3 | Freeze : False", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Indices : Force transfer", + "1 | New [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "1 | New [2/2] : 8kQ2Cbj7", + "2 | Index : 1860510840", + "3 | Freeze : False", + "4 | Chain : Edgeware", + "5 | Nonce : 50283", + "6 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "6 | Tip [2/2] : 56789", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 54, + "name": "Indices_Force_transfer", + "blob": "05030a020856a01aa594a4a77167f74b11e13dbbbc934d8c942eca62569d4c58390e7824e56e00d503ae1103008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Indices : Force transfer", + "1 | New [1/2] : hjjtjpF2ZP5MQ71c5PmPgSVTC3Jv6WL2mK4xcEx", + "1 | New [2/2] : gUKcbvMx", + "2 | Index : 1860510840", + "3 | Freeze : False", + "4 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Indices : Force transfer", + "1 | New [1/2] : hjjtjpF2ZP5MQ71c5PmPgSVTC3Jv6WL2mK4xcEx", + "1 | New [2/2] : gUKcbvMx", + "2 | Index : 1860510840", + "3 | Freeze : False", + "4 | Chain : Edgeware", + "5 | Nonce : 50283", + "6 | Tip : EDG 0.000000000055555555", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 55, + "name": "Indices_Force_transfer", + "blob": "050344934098651253342230b3e67b37bb55f934927ffadbd3d2025686e16269f7557824e56e01d50300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Indices : Force transfer", + "1 | New [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "1 | New [2/2] : t8MmbYSG", + "2 | Index : 1860510840", + "3 | Freeze : True" + ], + "output_expert": [ + "0 | Indices : Force transfer", + "1 | New [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "1 | New [2/2] : t8MmbYSG", + "2 | Index : 1860510840", + "3 | Freeze : True", + "4 | Chain : Edgeware", + "5 | Nonce : 0", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 56, + "name": "Indices_Freeze", + "blob": "05047824e56ed503910103d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Indices : Freeze", + "1 | Index : 1860510840", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Indices : Freeze", + "1 | Index : 1860510840", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 57, + "name": "Indices_Freeze", + "blob": "05047824e56ed50391010b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Indices : Freeze", + "1 | Index : 1860510840", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Indices : Freeze", + "1 | Index : 1860510840", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 58, + "name": "Indices_Freeze", + "blob": "05047824e56ed5038d248ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Indices : Freeze", + "1 | Index : 1860510840", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Indices : Freeze", + "1 | Index : 1860510840", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 59, + "name": "Indices_Freeze", + "blob": "05047824e56ed5038d24002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Indices : Freeze", + "1 | Index : 1860510840" + ], + "output_expert": [ + "0 | Indices : Freeze", + "1 | Index : 1860510840", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 60, + "name": "Indices_Freeze", + "blob": "05047824e56ed503048ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Indices : Freeze", + "1 | Index : 1860510840", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Indices : Freeze", + "1 | Index : 1860510840", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 61, + "name": "Balances_Transfer", + "blob": "0600008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f5511665516d0fd503ae110300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Balances : Transfer", + "1 | Dest [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Dest [2/2] : er4tKs7Z", + "2 | Amount : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Balances : Transfer", + "1 | Dest [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Dest [2/2] : er4tKs7Z", + "2 | Amount : EDG 0.000000000000000987", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 62, + "name": "Balances_Transfer", + "blob": "0600008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f5511665510b63ce64c10c05d50391018ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Balances : Transfer", + "1 | Dest [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Dest [2/2] : er4tKs7Z", + "2 | Amount : EDG 0.000005552342355555", + "3 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Balances : Transfer", + "1 | Dest [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Dest [2/2] : er4tKs7Z", + "2 | Amount : EDG 0.000005552342355555", + "3 | Chain : Edgeware", + "4 | Nonce : 100", + "5 | Tip : EDG 0.000000000055555555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 63, + "name": "Balances_Transfer", + "blob": "0600008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f5511665516d0fd503040b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Balances : Transfer", + "1 | Dest [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Dest [2/2] : er4tKs7Z", + "2 | Amount : EDG 0.000000000000000987", + "3 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Balances : Transfer", + "1 | Dest [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Dest [2/2] : er4tKs7Z", + "2 | Amount : EDG 0.000000000000000987", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Tip : EDG 0.000005552342355555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 64, + "name": "Balances_Transfer", + "blob": "0600008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f55116655100d503910103d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Balances : Transfer", + "1 | Dest [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Dest [2/2] : er4tKs7Z", + "2 | Amount : EDG 0.0", + "3 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Balances : Transfer", + "1 | Dest [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Dest [2/2] : er4tKs7Z", + "2 | Amount : EDG 0.0", + "3 | Chain : Edgeware", + "4 | Nonce : 100", + "5 | Tip : EDG 0.00000000123456789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 65, + "name": "Balances_Transfer", + "blob": "0600008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f5511665510b63ce64c10c05d503008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Balances : Transfer", + "1 | Dest [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Dest [2/2] : er4tKs7Z", + "2 | Amount : EDG 0.000005552342355555", + "3 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Balances : Transfer", + "1 | Dest [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Dest [2/2] : er4tKs7Z", + "2 | Amount : EDG 0.000005552342355555", + "3 | Chain : Edgeware", + "4 | Nonce : 0", + "5 | Tip : EDG 0.000000000055555555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 66, + "name": "Balances_Set_balance", + "blob": "0601008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f5511665510b63ce64c10c050b63ce64c10c05d503000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Balances : Set balance", + "1 | Who [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Who [2/2] : er4tKs7Z", + "2 | New free : EDG 0.000005552342355555", + "3 | New reserved : EDG 0.000005552342355555", + "4 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Balances : Set balance", + "1 | Who [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Who [2/2] : er4tKs7Z", + "2 | New free : EDG 0.000005552342355555", + "3 | New reserved : EDG 0.000005552342355555", + "4 | Chain : Edgeware", + "5 | Nonce : 0", + "6 | Tip : EDG 0.000005552342355555", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 67, + "name": "Balances_Set_balance", + "blob": "0601008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f5511665518ed73e0d33158139ae28a3dfaac5fe1560a5e9e05cd503910103d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Balances : Set balance", + "1 | Who [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Who [2/2] : er4tKs7Z", + "2 | New free : EDG 0.000000000055555555", + "3 | New reserved [1/2] : EDG 123456789012345678901.2345678901234", + "3 | New reserved [2/2] : 56789", + "4 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Balances : Set balance", + "1 | Who [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Who [2/2] : er4tKs7Z", + "2 | New free : EDG 0.000000000055555555", + "3 | New reserved [1/2] : EDG 123456789012345678901.2345678901234", + "3 | New reserved [2/2] : 56789", + "4 | Chain : Edgeware", + "5 | Nonce : 100", + "6 | Tip : EDG 0.00000000123456789", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 68, + "name": "Balances_Set_balance", + "blob": "0601008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f5511665518ed73e0d00d503ae11030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Balances : Set balance", + "1 | Who [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Who [2/2] : er4tKs7Z", + "2 | New free : EDG 0.000000000055555555", + "3 | New reserved : EDG 0.0", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Balances : Set balance", + "1 | Who [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Who [2/2] : er4tKs7Z", + "2 | New free : EDG 0.000000000055555555", + "3 | New reserved : EDG 0.0", + "4 | Chain : Edgeware", + "5 | Nonce : 50283", + "6 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "6 | Tip [2/2] : 56789", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 69, + "name": "Balances_Set_balance", + "blob": "0601008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f5511665518ed73e0d6d0fd503910133158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Balances : Set balance", + "1 | Who [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Who [2/2] : er4tKs7Z", + "2 | New free : EDG 0.000000000055555555", + "3 | New reserved : EDG 0.000000000000000987", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Balances : Set balance", + "1 | Who [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Who [2/2] : er4tKs7Z", + "2 | New free : EDG 0.000000000055555555", + "3 | New reserved : EDG 0.000000000000000987", + "4 | Chain : Edgeware", + "5 | Nonce : 100", + "6 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "6 | Tip [2/2] : 56789", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 70, + "name": "Balances_Set_balance", + "blob": "0601008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f5511665518ed73e0d00d503000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Balances : Set balance", + "1 | Who [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Who [2/2] : er4tKs7Z", + "2 | New free : EDG 0.000000000055555555", + "3 | New reserved : EDG 0.0", + "4 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Balances : Set balance", + "1 | Who [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Who [2/2] : er4tKs7Z", + "2 | New free : EDG 0.000000000055555555", + "3 | New reserved : EDG 0.0", + "4 | Chain : Edgeware", + "5 | Nonce : 0", + "6 | Tip : EDG 0.000005552342355555", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 71, + "name": "Balances_Force_transfer", + "blob": "0602008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f551166551008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f55116655133158139ae28a3dfaac5fe1560a5e9e05cd5038d246d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Balances : Force transfer", + "1 | Source [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Source [2/2] : er4tKs7Z", + "2 | Dest [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "2 | Dest [2/2] : er4tKs7Z", + "3 | Amount [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Amount [2/2] : 56789", + "4 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Balances : Force transfer", + "1 | Source [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Source [2/2] : er4tKs7Z", + "2 | Dest [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "2 | Dest [2/2] : er4tKs7Z", + "3 | Amount [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Amount [2/2] : 56789", + "4 | Chain : Edgeware", + "5 | Nonce : 2339", + "6 | Tip : EDG 0.000000000000000987", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 72, + "name": "Balances_Force_transfer", + "blob": "0602008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f551166551008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f55116655103d2029649d503910133158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Balances : Force transfer", + "1 | Source [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Source [2/2] : er4tKs7Z", + "2 | Dest [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "2 | Dest [2/2] : er4tKs7Z", + "3 | Amount : EDG 0.00000000123456789", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Balances : Force transfer", + "1 | Source [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Source [2/2] : er4tKs7Z", + "2 | Dest [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "2 | Dest [2/2] : er4tKs7Z", + "3 | Amount : EDG 0.00000000123456789", + "4 | Chain : Edgeware", + "5 | Nonce : 100", + "6 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "6 | Tip [2/2] : 56789", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 73, + "name": "Balances_Force_transfer", + "blob": "0602008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f551166551008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f5511665516d0fd503048ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Balances : Force transfer", + "1 | Source [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Source [2/2] : er4tKs7Z", + "2 | Dest [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "2 | Dest [2/2] : er4tKs7Z", + "3 | Amount : EDG 0.000000000000000987", + "4 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Balances : Force transfer", + "1 | Source [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Source [2/2] : er4tKs7Z", + "2 | Dest [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "2 | Dest [2/2] : er4tKs7Z", + "3 | Amount : EDG 0.000000000000000987", + "4 | Chain : Edgeware", + "5 | Nonce : 1", + "6 | Tip : EDG 0.000000000055555555", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 74, + "name": "Balances_Force_transfer", + "blob": "0602008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f551166551008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f5511665518ed73e0dd5038d2403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Balances : Force transfer", + "1 | Source [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Source [2/2] : er4tKs7Z", + "2 | Dest [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "2 | Dest [2/2] : er4tKs7Z", + "3 | Amount : EDG 0.000000000055555555", + "4 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Balances : Force transfer", + "1 | Source [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Source [2/2] : er4tKs7Z", + "2 | Dest [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "2 | Dest [2/2] : er4tKs7Z", + "3 | Amount : EDG 0.000000000055555555", + "4 | Chain : Edgeware", + "5 | Nonce : 2339", + "6 | Tip : EDG 0.00000000123456789", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 75, + "name": "Balances_Force_transfer", + "blob": "0602008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f551166551008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f55116655103d2029649d50391010b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Balances : Force transfer", + "1 | Source [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Source [2/2] : er4tKs7Z", + "2 | Dest [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "2 | Dest [2/2] : er4tKs7Z", + "3 | Amount : EDG 0.00000000123456789", + "4 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Balances : Force transfer", + "1 | Source [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Source [2/2] : er4tKs7Z", + "2 | Dest [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "2 | Dest [2/2] : er4tKs7Z", + "3 | Amount : EDG 0.00000000123456789", + "4 | Chain : Edgeware", + "5 | Nonce : 100", + "6 | Tip : EDG 0.000005552342355555", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 76, + "name": "Balances_Transfer_keep_alive", + "blob": "0603008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f5511665510b63ce64c10c05d503040b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Balances : Transfer keep alive", + "1 | Dest [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Dest [2/2] : er4tKs7Z", + "2 | Amount : EDG 0.000005552342355555", + "3 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Balances : Transfer keep alive", + "1 | Dest [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Dest [2/2] : er4tKs7Z", + "2 | Amount : EDG 0.000005552342355555", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Tip : EDG 0.000005552342355555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 77, + "name": "Balances_Transfer_keep_alive", + "blob": "0603008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f55116655100d503040b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Balances : Transfer keep alive", + "1 | Dest [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Dest [2/2] : er4tKs7Z", + "2 | Amount : EDG 0.0", + "3 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Balances : Transfer keep alive", + "1 | Dest [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Dest [2/2] : er4tKs7Z", + "2 | Amount : EDG 0.0", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Tip : EDG 0.000005552342355555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 78, + "name": "Balances_Transfer_keep_alive", + "blob": "0603008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f55116655133158139ae28a3dfaac5fe1560a5e9e05cd50391010b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Balances : Transfer keep alive", + "1 | Dest [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Dest [2/2] : er4tKs7Z", + "2 | Amount [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Amount [2/2] : 56789", + "3 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Balances : Transfer keep alive", + "1 | Dest [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Dest [2/2] : er4tKs7Z", + "2 | Amount [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Amount [2/2] : 56789", + "3 | Chain : Edgeware", + "4 | Nonce : 100", + "5 | Tip : EDG 0.000005552342355555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 79, + "name": "Balances_Transfer_keep_alive", + "blob": "0603008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f55116655133158139ae28a3dfaac5fe1560a5e9e05cd503ae1103008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Balances : Transfer keep alive", + "1 | Dest [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Dest [2/2] : er4tKs7Z", + "2 | Amount [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Amount [2/2] : 56789", + "3 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Balances : Transfer keep alive", + "1 | Dest [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Dest [2/2] : er4tKs7Z", + "2 | Amount [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Amount [2/2] : 56789", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Tip : EDG 0.000000000055555555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 80, + "name": "Balances_Transfer_keep_alive", + "blob": "0603008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f55116655133158139ae28a3dfaac5fe1560a5e9e05cd5038d2403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Balances : Transfer keep alive", + "1 | Dest [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Dest [2/2] : er4tKs7Z", + "2 | Amount [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Amount [2/2] : 56789", + "3 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Balances : Transfer keep alive", + "1 | Dest [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Dest [2/2] : er4tKs7Z", + "2 | Amount [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Amount [2/2] : 56789", + "3 | Chain : Edgeware", + "4 | Nonce : 2339", + "5 | Tip : EDG 0.00000000123456789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 81, + "name": "Staking_Bond", + "blob": "0800008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f5511665510002d503048ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Bond", + "1 | Controller [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Controller [2/2] : er4tKs7Z", + "2 | Amount : EDG 0.0", + "3 | Payee : Controller", + "4 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Staking : Bond", + "1 | Controller [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Controller [2/2] : er4tKs7Z", + "2 | Amount : EDG 0.0", + "3 | Payee : Controller", + "4 | Chain : Edgeware", + "5 | Nonce : 1", + "6 | Tip : EDG 0.000000000055555555", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 82, + "name": "Staking_Bond", + "blob": "0800008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f5511665516d0f02d503ae11030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Bond", + "1 | Controller [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Controller [2/2] : er4tKs7Z", + "2 | Amount : EDG 0.000000000000000987", + "3 | Payee : Controller", + "4 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Staking : Bond", + "1 | Controller [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Controller [2/2] : er4tKs7Z", + "2 | Amount : EDG 0.000000000000000987", + "3 | Payee : Controller", + "4 | Chain : Edgeware", + "5 | Nonce : 50283", + "6 | Tip : EDG 0.00000000123456789", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 83, + "name": "Staking_Bond", + "blob": "0800008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f5511665510002d5038d246d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Bond", + "1 | Controller [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Controller [2/2] : er4tKs7Z", + "2 | Amount : EDG 0.0", + "3 | Payee : Controller", + "4 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Staking : Bond", + "1 | Controller [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Controller [2/2] : er4tKs7Z", + "2 | Amount : EDG 0.0", + "3 | Payee : Controller", + "4 | Chain : Edgeware", + "5 | Nonce : 2339", + "6 | Tip : EDG 0.000000000000000987", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 84, + "name": "Staking_Bond", + "blob": "0800008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f55116655103d202964900d5038d240b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Bond", + "1 | Controller [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Controller [2/2] : er4tKs7Z", + "2 | Amount : EDG 0.00000000123456789", + "3 | Payee : Staked", + "4 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Staking : Bond", + "1 | Controller [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Controller [2/2] : er4tKs7Z", + "2 | Amount : EDG 0.00000000123456789", + "3 | Payee : Staked", + "4 | Chain : Edgeware", + "5 | Nonce : 2339", + "6 | Tip : EDG 0.000005552342355555", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 85, + "name": "Staking_Bond", + "blob": "0800008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f5511665516d0f00d5030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Bond", + "1 | Controller [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Controller [2/2] : er4tKs7Z", + "2 | Amount : EDG 0.000000000000000987", + "3 | Payee : Staked", + "4 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Staking : Bond", + "1 | Controller [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Controller [2/2] : er4tKs7Z", + "2 | Amount : EDG 0.000000000000000987", + "3 | Payee : Staked", + "4 | Chain : Edgeware", + "5 | Nonce : 0", + "6 | Tip : EDG 0.00000000123456789", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 86, + "name": "Staking_Bond_extra", + "blob": "080133158139ae28a3dfaac5fe1560a5e9e05cd5038d240b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Bond extra", + "1 | Amount [1/2] : EDG 123456789012345678901.2345678901234", + "1 | Amount [2/2] : 56789", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Staking : Bond extra", + "1 | Amount [1/2] : EDG 123456789012345678901.2345678901234", + "1 | Amount [2/2] : 56789", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 87, + "name": "Staking_Bond_extra", + "blob": "08018ed73e0dd50391016d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Bond extra", + "1 | Amount : EDG 0.000000000055555555", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Staking : Bond extra", + "1 | Amount : EDG 0.000000000055555555", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 88, + "name": "Staking_Bond_extra", + "blob": "080100d50304002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Bond extra", + "1 | Amount : EDG 0.0" + ], + "output_expert": [ + "0 | Staking : Bond extra", + "1 | Amount : EDG 0.0", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 89, + "name": "Staking_Bond_extra", + "blob": "080133158139ae28a3dfaac5fe1560a5e9e05cd503008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Bond extra", + "1 | Amount [1/2] : EDG 123456789012345678901.2345678901234", + "1 | Amount [2/2] : 56789", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Staking : Bond extra", + "1 | Amount [1/2] : EDG 123456789012345678901.2345678901234", + "1 | Amount [2/2] : 56789", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 90, + "name": "Staking_Bond_extra", + "blob": "08018ed73e0dd5030403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Bond extra", + "1 | Amount : EDG 0.000000000055555555", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Staking : Bond extra", + "1 | Amount : EDG 0.000000000055555555", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 91, + "name": "Staking_Unbond", + "blob": "08026d0fd503910133158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Unbond", + "1 | Amount : EDG 0.000000000000000987", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Staking : Unbond", + "1 | Amount : EDG 0.000000000000000987", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 92, + "name": "Staking_Unbond", + "blob": "08026d0fd503046d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Unbond", + "1 | Amount : EDG 0.000000000000000987", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Staking : Unbond", + "1 | Amount : EDG 0.000000000000000987", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 93, + "name": "Staking_Unbond", + "blob": "080233158139ae28a3dfaac5fe1560a5e9e05cd503910133158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Unbond", + "1 | Amount [1/2] : EDG 123456789012345678901.2345678901234", + "1 | Amount [2/2] : 56789", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Staking : Unbond", + "1 | Amount [1/2] : EDG 123456789012345678901.2345678901234", + "1 | Amount [2/2] : 56789", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 94, + "name": "Staking_Unbond", + "blob": "08020b63ce64c10c05d5038d240b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Unbond", + "1 | Amount : EDG 0.000005552342355555", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Staking : Unbond", + "1 | Amount : EDG 0.000005552342355555", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 95, + "name": "Staking_Unbond", + "blob": "080203d2029649d503040b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Unbond", + "1 | Amount : EDG 0.00000000123456789", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Staking : Unbond", + "1 | Amount : EDG 0.00000000123456789", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 96, + "name": "Staking_Withdraw_Unbonded", + "blob": "080334300000d503008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Withdraw Unbonded", + "1 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Staking : Withdraw Unbonded", + "1 | Num slashing spans : 12340", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 97, + "name": "Staking_Withdraw_Unbonded", + "blob": "08039d1c0000d5038d24002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Withdraw Unbonded" + ], + "output_expert": [ + "0 | Staking : Withdraw Unbonded", + "1 | Num slashing spans : 7325", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 98, + "name": "Staking_Withdraw_Unbonded", + "blob": "0803f7010000d503ae1103006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Withdraw Unbonded", + "1 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Staking : Withdraw Unbonded", + "1 | Num slashing spans : 503", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 99, + "name": "Staking_Withdraw_Unbonded", + "blob": "0803d3040000d503ae1103000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Withdraw Unbonded", + "1 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Staking : Withdraw Unbonded", + "1 | Num slashing spans : 1235", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 100, + "name": "Staking_Withdraw_Unbonded", + "blob": "0803f7010000d5038d24002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Withdraw Unbonded" + ], + "output_expert": [ + "0 | Staking : Withdraw Unbonded", + "1 | Num slashing spans : 503", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 101, + "name": "Staking_Validate", + "blob": "0804a6dde7f3d5038d240b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Validate", + "1 | Prefs : 102.3014761%", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Staking : Validate", + "1 | Prefs : 102.3014761%", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 102, + "name": "Staking_Validate", + "blob": "0804a0d5039101002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Validate", + "1 | Prefs : 0.0000040%" + ], + "output_expert": [ + "0 | Staking : Validate", + "1 | Prefs : 0.0000040%", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 103, + "name": "Staking_Validate", + "blob": "0804a6dde7f3d50391010b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Validate", + "1 | Prefs : 102.3014761%", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Staking : Validate", + "1 | Prefs : 102.3014761%", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 104, + "name": "Staking_Validate", + "blob": "0804a6dde7f3d503ae11030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Validate", + "1 | Prefs : 102.3014761%", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Staking : Validate", + "1 | Prefs : 102.3014761%", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 105, + "name": "Staking_Validate", + "blob": "0804a6dde7f3d5038d248ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Validate", + "1 | Prefs : 102.3014761%", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Staking : Validate", + "1 | Prefs : 102.3014761%", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 106, + "name": "Staking_Nominate", + "blob": "080504000e82f02c842ee708190becef69325e2de2fb79995dcf9f9cd62f298a6af17527d503006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Nominate", + "1 | Targets [1/2] : hqeNqgYosjwr7BXGNj6UxaGjeh2RAh65qVcbooZ", + "1 | Targets [2/2] : 2HTMjijs", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Staking : Nominate", + "1 | Targets [1/2] : hqeNqgYosjwr7BXGNj6UxaGjeh2RAh65qVcbooZ", + "1 | Targets [2/2] : 2HTMjijs", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 107, + "name": "Staking_Nominate", + "blob": "08054000161b31b081d2b741f4b1deb8c2835bda33a74a413814f60fa223401ca2aa9a7a00fe925125c17c45f1eb91e7ccc80067ebf7dac3c6e44961211e5f7e737a2edc4c004cb463198879459a824a38020853deab8fce9bbf114534d2aa33d4aab40bd67b00ac34bf314c178f061854d5d1ee958b8c1c22e2dc8cbe7b7cc7db7da2d68f976d007c71a4229639e05a074f638f830710f1d65574350077cbb974a8af13e0cf34460010d4f6b19b7dfb60385b6bd119863b2c9b8ad636c78db3aa80f0540fd54f397c0054f95b89efd1ef989066f191199ffe2474ab1dd3e13a9a903100459a173384460046fc3eb85864496444cfa1f359a37d53442e1792c66f67f425811436913f324500ce9d81fc30327190d76d3e75a352bc100f9314bed7ae990ffa65a17426c4074000bee5bb788b1abb0f19dc3afab91ea7af7935f5f365f4e828a65e42dbcd7e4c3b00860316c8af20e14145b3419b25385585a11c5e618c988a2df29d686cca10174700f0e733b6c3c48cbe4f23f619ac90fccbe1b63bd58e073623efc47b1e2e986a1b00c2082c174e96b1412d60d44c60bcebbcf1ac52d9afb6ec017265688e6400375e0078077e95d6bedebbccf035d5416c51a22a582ddcdcf480d37951f8d092c38c6500eeead4490f8d82ec66ad2711da2395add9f9c2597fbe13952ddabda4178555200046a56c7db42f884d9c3930ec5dc5f1b3ed0c9a9a1f87a1d1674eedba1e934302d5038d2403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Nominate", + "1 | Targets [1/32] : i1bwbAHHQwhLakt7p3haGVfxY2jqM6dcSbSCy4A", + "1 | Targets [2/32] : BmLjaAq5", + "1 | Targets [3/32] : oGQSNAzUUzTS1JU6PuoJpmQ8KNDW3XANr5venwT", + "1 | Targets [4/32] : F4uZL8Fi", + "1 | Targets [5/32] : jFC323PvubW5iJ3MDhMYkinfw3uqBsaVFmsJXZT", + "1 | Targets [6/32] : 4875E6Mu", + "1 | Targets [7/32] : mQQiT51PCtcXoK3b8QJ2B3V4azDajcjnWSbZPhW", + "1 | Targets [8/32] : RbF3hA28", + "1 | Targets [9/32] : kKnWKjLNNnEUHYZtMAUmGxSqcenikXSgJsaKUn8", + "1 | Targets [10/32] : omSxv3W7", + "1 | Targets [11/32] : htgqfGrVjfpTMJKfW1Z11SnD5Hbv7S1fxsSQ1V6", + "1 | Targets [12/32] : kqGieR6n", + "1 | Targets [13/32] : jS2ua4AMTz2PFfi2R7Cv2VGQ3PdjQybjvc3NNx9", + "1 | Targets [14/32] : L8ZjdUVk", + "1 | Targets [15/32] : j7h6SLAh112wDmMBa6YaQQW4vi2eeqK1c9zs4np", + "1 | Targets [16/32] : 5yjPGodj", + "1 | Targets [17/32] : nBXTsG28CapY51cY6E61XaSm2SG5w5Yg1kRqCtu", + "1 | Targets [18/32] : 6wJhKb6Z", + "1 | Targets [19/32] : mpv9q7qUtm9UzLvJVC79HbxdMCEWF188GntnvE6", + "1 | Targets [20/32] : 4yB3n123", + "1 | Targets [21/32] : kYL9KxNh5yZYosBtVnaA5CefNsqgKfZNXQ4XeM8", + "1 | Targets [22/32] : HqTGc257", + "1 | Targets [23/32] : nxUz22BdASMvse8HtPa5XvoQUgCUhRzRHdHAkFi", + "1 | Targets [24/32] : XZNxn8db", + "1 | Targets [25/32] : mu2XYm9pkcuGNtRkrdKffgAkNZbUxCry5bkAgrS", + "1 | Targets [26/32] : DMRCiv8k", + "1 | Targets [27/32] : kDznMExpxGQcm7KzoHGoXmzWwRJ6dmxFTpgYajd", + "1 | Targets [28/32] : SQv7FqpV", + "1 | Targets [29/32] : nusxxc9jtGsJ5v1E6yD6V37gsCHHUbAeKL2zhEC", + "1 | Targets [30/32] : mCgP4iC5", + "1 | Targets [31/32] : j7FJYSpCmeeLe4P5MaQct6sr6REYc1ko3BM5Kin", + "1 | Targets [32/32] : a5gCzgXQ", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Staking : Nominate", + "1 | Targets [1/32] : i1bwbAHHQwhLakt7p3haGVfxY2jqM6dcSbSCy4A", + "1 | Targets [2/32] : BmLjaAq5", + "1 | Targets [3/32] : oGQSNAzUUzTS1JU6PuoJpmQ8KNDW3XANr5venwT", + "1 | Targets [4/32] : F4uZL8Fi", + "1 | Targets [5/32] : jFC323PvubW5iJ3MDhMYkinfw3uqBsaVFmsJXZT", + "1 | Targets [6/32] : 4875E6Mu", + "1 | Targets [7/32] : mQQiT51PCtcXoK3b8QJ2B3V4azDajcjnWSbZPhW", + "1 | Targets [8/32] : RbF3hA28", + "1 | Targets [9/32] : kKnWKjLNNnEUHYZtMAUmGxSqcenikXSgJsaKUn8", + "1 | Targets [10/32] : omSxv3W7", + "1 | Targets [11/32] : htgqfGrVjfpTMJKfW1Z11SnD5Hbv7S1fxsSQ1V6", + "1 | Targets [12/32] : kqGieR6n", + "1 | Targets [13/32] : jS2ua4AMTz2PFfi2R7Cv2VGQ3PdjQybjvc3NNx9", + "1 | Targets [14/32] : L8ZjdUVk", + "1 | Targets [15/32] : j7h6SLAh112wDmMBa6YaQQW4vi2eeqK1c9zs4np", + "1 | Targets [16/32] : 5yjPGodj", + "1 | Targets [17/32] : nBXTsG28CapY51cY6E61XaSm2SG5w5Yg1kRqCtu", + "1 | Targets [18/32] : 6wJhKb6Z", + "1 | Targets [19/32] : mpv9q7qUtm9UzLvJVC79HbxdMCEWF188GntnvE6", + "1 | Targets [20/32] : 4yB3n123", + "1 | Targets [21/32] : kYL9KxNh5yZYosBtVnaA5CefNsqgKfZNXQ4XeM8", + "1 | Targets [22/32] : HqTGc257", + "1 | Targets [23/32] : nxUz22BdASMvse8HtPa5XvoQUgCUhRzRHdHAkFi", + "1 | Targets [24/32] : XZNxn8db", + "1 | Targets [25/32] : mu2XYm9pkcuGNtRkrdKffgAkNZbUxCry5bkAgrS", + "1 | Targets [26/32] : DMRCiv8k", + "1 | Targets [27/32] : kDznMExpxGQcm7KzoHGoXmzWwRJ6dmxFTpgYajd", + "1 | Targets [28/32] : SQv7FqpV", + "1 | Targets [29/32] : nusxxc9jtGsJ5v1E6yD6V37gsCHHUbAeKL2zhEC", + "1 | Targets [30/32] : mCgP4iC5", + "1 | Targets [31/32] : j7FJYSpCmeeLe4P5MaQct6sr6REYc1ko3BM5Kin", + "1 | Targets [32/32] : a5gCzgXQ", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 108, + "name": "Staking_Nominate", + "blob": "0805100096b662ea2d97cf848204aa5f97efcffb5eb45980be3722c359bbdae6c27d0869002c152713cb391768b963abdd9d124bfce77fc0546bf4053be9c1500ea3b5e346006ef1f811bdd71390f57f00cccf8cf6a751f1ba1311dfaaad1759c6da592dff0300b653b19dae0aac5f18845f238cef82dbc310c530a1ed482e05eb2a9c5c6d1307d50304002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Nominate", + "1 | Targets [1/8] : kvEAzBQrFB8zHRhBJrwD7FoLkxSBhgJoG9s7BAE", + "1 | Targets [2/8] : ew4fhxY8", + "1 | Targets [3/8] : iWRCbgkedrwANn8Rw8NtyofGvBQm4u8g7KAwAaN", + "1 | Targets [4/8] : Mv3Fcs6T", + "1 | Targets [5/8] : k25xUjoAq7jqzJ9kujh3YDWpesswJ7Rbn6pzjKN", + "1 | Targets [6/8] : og458SGX", + "1 | Targets [7/8] : mdgPRjSwRRBU9ufT5KM7Y2yM7sHnAPqJqtVKTVe", + "1 | Targets [8/8] : xjupf2KN" + ], + "output_expert": [ + "0 | Staking : Nominate", + "1 | Targets [1/8] : kvEAzBQrFB8zHRhBJrwD7FoLkxSBhgJoG9s7BAE", + "1 | Targets [2/8] : ew4fhxY8", + "1 | Targets [3/8] : iWRCbgkedrwANn8Rw8NtyofGvBQm4u8g7KAwAaN", + "1 | Targets [4/8] : Mv3Fcs6T", + "1 | Targets [5/8] : k25xUjoAq7jqzJ9kujh3YDWpesswJ7Rbn6pzjKN", + "1 | Targets [6/8] : og458SGX", + "1 | Targets [7/8] : mdgPRjSwRRBU9ufT5KM7Y2yM7sHnAPqJqtVKTVe", + "1 | Targets [8/8] : xjupf2KN", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 109, + "name": "Staking_Nominate", + "blob": "0805100096b662ea2d97cf848204aa5f97efcffb5eb45980be3722c359bbdae6c27d0869002c152713cb391768b963abdd9d124bfce77fc0546bf4053be9c1500ea3b5e346006ef1f811bdd71390f57f00cccf8cf6a751f1ba1311dfaaad1759c6da592dff0300b653b19dae0aac5f18845f238cef82dbc310c530a1ed482e05eb2a9c5c6d1307d5039101002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Nominate", + "1 | Targets [1/8] : kvEAzBQrFB8zHRhBJrwD7FoLkxSBhgJoG9s7BAE", + "1 | Targets [2/8] : ew4fhxY8", + "1 | Targets [3/8] : iWRCbgkedrwANn8Rw8NtyofGvBQm4u8g7KAwAaN", + "1 | Targets [4/8] : Mv3Fcs6T", + "1 | Targets [5/8] : k25xUjoAq7jqzJ9kujh3YDWpesswJ7Rbn6pzjKN", + "1 | Targets [6/8] : og458SGX", + "1 | Targets [7/8] : mdgPRjSwRRBU9ufT5KM7Y2yM7sHnAPqJqtVKTVe", + "1 | Targets [8/8] : xjupf2KN" + ], + "output_expert": [ + "0 | Staking : Nominate", + "1 | Targets [1/8] : kvEAzBQrFB8zHRhBJrwD7FoLkxSBhgJoG9s7BAE", + "1 | Targets [2/8] : ew4fhxY8", + "1 | Targets [3/8] : iWRCbgkedrwANn8Rw8NtyofGvBQm4u8g7KAwAaN", + "1 | Targets [4/8] : Mv3Fcs6T", + "1 | Targets [5/8] : k25xUjoAq7jqzJ9kujh3YDWpesswJ7Rbn6pzjKN", + "1 | Targets [6/8] : og458SGX", + "1 | Targets [7/8] : mdgPRjSwRRBU9ufT5KM7Y2yM7sHnAPqJqtVKTVe", + "1 | Targets [8/8] : xjupf2KN", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 110, + "name": "Staking_Nominate", + "blob": "0805100096b662ea2d97cf848204aa5f97efcffb5eb45980be3722c359bbdae6c27d0869002c152713cb391768b963abdd9d124bfce77fc0546bf4053be9c1500ea3b5e346006ef1f811bdd71390f57f00cccf8cf6a751f1ba1311dfaaad1759c6da592dff0300b653b19dae0aac5f18845f238cef82dbc310c530a1ed482e05eb2a9c5c6d1307d503ae1103000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Nominate", + "1 | Targets [1/8] : kvEAzBQrFB8zHRhBJrwD7FoLkxSBhgJoG9s7BAE", + "1 | Targets [2/8] : ew4fhxY8", + "1 | Targets [3/8] : iWRCbgkedrwANn8Rw8NtyofGvBQm4u8g7KAwAaN", + "1 | Targets [4/8] : Mv3Fcs6T", + "1 | Targets [5/8] : k25xUjoAq7jqzJ9kujh3YDWpesswJ7Rbn6pzjKN", + "1 | Targets [6/8] : og458SGX", + "1 | Targets [7/8] : mdgPRjSwRRBU9ufT5KM7Y2yM7sHnAPqJqtVKTVe", + "1 | Targets [8/8] : xjupf2KN", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Staking : Nominate", + "1 | Targets [1/8] : kvEAzBQrFB8zHRhBJrwD7FoLkxSBhgJoG9s7BAE", + "1 | Targets [2/8] : ew4fhxY8", + "1 | Targets [3/8] : iWRCbgkedrwANn8Rw8NtyofGvBQm4u8g7KAwAaN", + "1 | Targets [4/8] : Mv3Fcs6T", + "1 | Targets [5/8] : k25xUjoAq7jqzJ9kujh3YDWpesswJ7Rbn6pzjKN", + "1 | Targets [6/8] : og458SGX", + "1 | Targets [7/8] : mdgPRjSwRRBU9ufT5KM7Y2yM7sHnAPqJqtVKTVe", + "1 | Targets [8/8] : xjupf2KN", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 111, + "name": "Staking_Chill", + "blob": "0806d5030403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Chill", + "1 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Staking : Chill", + "1 | Chain : Edgeware", + "2 | Nonce : 1", + "3 | Tip : EDG 0.00000000123456789", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 112, + "name": "Staking_Chill", + "blob": "0806d503ae1103006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Chill", + "1 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Staking : Chill", + "1 | Chain : Edgeware", + "2 | Nonce : 50283", + "3 | Tip : EDG 0.000000000000000987", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 113, + "name": "Staking_Chill", + "blob": "0806d503910103d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Chill", + "1 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Staking : Chill", + "1 | Chain : Edgeware", + "2 | Nonce : 100", + "3 | Tip : EDG 0.00000000123456789", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 114, + "name": "Staking_Chill", + "blob": "0806d503ae1103006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Chill", + "1 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Staking : Chill", + "1 | Chain : Edgeware", + "2 | Nonce : 50283", + "3 | Tip : EDG 0.000000000000000987", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 115, + "name": "Staking_Chill", + "blob": "0806d503ae110300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Chill" + ], + "output_expert": [ + "0 | Staking : Chill", + "1 | Chain : Edgeware", + "2 | Nonce : 50283", + "3 | Era Phase : 61", + "4 | Era Period : 64", + "5 | Block [1/2] : 00000000000000000000000000000000000000", + "5 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 116, + "name": "Staking_Set_payee", + "blob": "080702d503046d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Set payee", + "1 | Payee : Controller", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Staking : Set payee", + "1 | Payee : Controller", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 117, + "name": "Staking_Set_payee", + "blob": "080702d5038d248ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Set payee", + "1 | Payee : Controller", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Staking : Set payee", + "1 | Payee : Controller", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 118, + "name": "Staking_Set_payee", + "blob": "080702d503ae110300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Set payee", + "1 | Payee : Controller" + ], + "output_expert": [ + "0 | Staking : Set payee", + "1 | Payee : Controller", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 119, + "name": "Staking_Set_payee", + "blob": "080700d503046d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Set payee", + "1 | Payee : Staked", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Staking : Set payee", + "1 | Payee : Staked", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 120, + "name": "Staking_Set_payee", + "blob": "080700d5030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Set payee", + "1 | Payee : Staked", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Staking : Set payee", + "1 | Payee : Staked", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 121, + "name": "Staking_Set_controller", + "blob": "0808008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f551166551d50304002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Set controller", + "1 | Controller [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Controller [2/2] : er4tKs7Z" + ], + "output_expert": [ + "0 | Staking : Set controller", + "1 | Controller [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Controller [2/2] : er4tKs7Z", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 122, + "name": "Staking_Set_controller", + "blob": "0808008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f551166551d503ae110300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Set controller", + "1 | Controller [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Controller [2/2] : er4tKs7Z" + ], + "output_expert": [ + "0 | Staking : Set controller", + "1 | Controller [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Controller [2/2] : er4tKs7Z", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 123, + "name": "Staking_Set_controller", + "blob": "0808008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f551166551d50391016d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Set controller", + "1 | Controller [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Controller [2/2] : er4tKs7Z", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Staking : Set controller", + "1 | Controller [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Controller [2/2] : er4tKs7Z", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 124, + "name": "Staking_Set_controller", + "blob": "0808008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f551166551d5038d246d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Set controller", + "1 | Controller [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Controller [2/2] : er4tKs7Z", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Staking : Set controller", + "1 | Controller [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Controller [2/2] : er4tKs7Z", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 125, + "name": "Staking_Set_controller", + "blob": "0808008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f551166551d5030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Set controller", + "1 | Controller [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Controller [2/2] : er4tKs7Z", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Staking : Set controller", + "1 | Controller [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Controller [2/2] : er4tKs7Z", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 126, + "name": "Staking_Set_validator_count", + "blob": "080904d503040b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Set validator count", + "1 | New : 1", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Staking : Set validator count", + "1 | New : 1", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 127, + "name": "Staking_Set_validator_count", + "blob": "080900d503008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Set validator count", + "1 | New : 0", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Staking : Set validator count", + "1 | New : 0", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 128, + "name": "Staking_Set_validator_count", + "blob": "080904d503008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Set validator count", + "1 | New : 1", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Staking : Set validator count", + "1 | New : 1", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 129, + "name": "Staking_Set_validator_count", + "blob": "080904d5030403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Set validator count", + "1 | New : 1", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Staking : Set validator count", + "1 | New : 1", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 130, + "name": "Staking_Set_validator_count", + "blob": "0809ce8e0700d503048ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Set validator count", + "1 | New : 123827", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Staking : Set validator count", + "1 | New : 123827", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 131, + "name": "Staking_Increase_validator_count", + "blob": "080afd0fd5039101002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Increase validator count", + "1 | Additional : 1023" + ], + "output_expert": [ + "0 | Staking : Increase validator count", + "1 | Additional : 1023", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 132, + "name": "Staking_Increase_validator_count", + "blob": "080ace8e0700d503006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Increase validator count", + "1 | Additional : 123827", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Staking : Increase validator count", + "1 | Additional : 123827", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 133, + "name": "Staking_Increase_validator_count", + "blob": "080afd0fd5039101002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Increase validator count", + "1 | Additional : 1023" + ], + "output_expert": [ + "0 | Staking : Increase validator count", + "1 | Additional : 1023", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 134, + "name": "Staking_Increase_validator_count", + "blob": "080afd0fd503910103d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Increase validator count", + "1 | Additional : 1023", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Staking : Increase validator count", + "1 | Additional : 1023", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 135, + "name": "Staking_Increase_validator_count", + "blob": "080afd0fd5038d240b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Increase validator count", + "1 | Additional : 1023", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Staking : Increase validator count", + "1 | Additional : 1023", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 136, + "name": "Staking_Force_no_eras", + "blob": "080cd503ae11030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Force no eras", + "1 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Staking : Force no eras", + "1 | Chain : Edgeware", + "2 | Nonce : 50283", + "3 | Tip : EDG 0.00000000123456789", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 137, + "name": "Staking_Force_no_eras", + "blob": "080cd503910103d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Force no eras", + "1 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Staking : Force no eras", + "1 | Chain : Edgeware", + "2 | Nonce : 100", + "3 | Tip : EDG 0.00000000123456789", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 138, + "name": "Staking_Force_no_eras", + "blob": "080cd5038d2433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Force no eras", + "1 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "1 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Staking : Force no eras", + "1 | Chain : Edgeware", + "2 | Nonce : 2339", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 139, + "name": "Staking_Force_no_eras", + "blob": "080cd5038d240b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Force no eras", + "1 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Staking : Force no eras", + "1 | Chain : Edgeware", + "2 | Nonce : 2339", + "3 | Tip : EDG 0.000005552342355555", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 140, + "name": "Staking_Force_no_eras", + "blob": "080cd50391016d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Force no eras", + "1 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Staking : Force no eras", + "1 | Chain : Edgeware", + "2 | Nonce : 100", + "3 | Tip : EDG 0.000000000000000987", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 141, + "name": "Staking_Force_new_era", + "blob": "080dd503910133158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Force new era", + "1 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "1 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Staking : Force new era", + "1 | Chain : Edgeware", + "2 | Nonce : 100", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 142, + "name": "Staking_Force_new_era", + "blob": "080dd50391016d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Force new era", + "1 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Staking : Force new era", + "1 | Chain : Edgeware", + "2 | Nonce : 100", + "3 | Tip : EDG 0.000000000000000987", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 143, + "name": "Staking_Force_new_era", + "blob": "080dd503046d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Force new era", + "1 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Staking : Force new era", + "1 | Chain : Edgeware", + "2 | Nonce : 1", + "3 | Tip : EDG 0.000000000000000987", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 144, + "name": "Staking_Force_new_era", + "blob": "080dd503ae11030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Force new era", + "1 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "1 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Staking : Force new era", + "1 | Chain : Edgeware", + "2 | Nonce : 50283", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 145, + "name": "Staking_Force_new_era", + "blob": "080dd5039101002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Force new era" + ], + "output_expert": [ + "0 | Staking : Force new era", + "1 | Chain : Edgeware", + "2 | Nonce : 100", + "3 | Era Phase : 61", + "4 | Era Period : 64", + "5 | Block [1/2] : 00000000000000000000000000000000000000", + "5 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 146, + "name": "Staking_Set_invulnerables", + "blob": "080e04444c1e110606cd3355dedaddd1c3b8e3033bfe6210bc0c6084eb93792f702940d503008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Set invulnerables", + "1 | Invulnerables [1/2] : j4AgGx9f4xHjnML7UmdiQWhyXi3bvQpEh9JNzXM", + "1 | Invulnerables [2/2] : DYKcM1mA", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Staking : Set invulnerables", + "1 | Invulnerables [1/2] : j4AgGx9f4xHjnML7UmdiQWhyXi3bvQpEh9JNzXM", + "1 | Invulnerables [2/2] : DYKcM1mA", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 147, + "name": "Staking_Set_invulnerables", + "blob": "080e0cbef0713804fd4001f7ccd64b4987a45218b400e4bf88c03097e5a74f07f5655c9ee95d784af4c6922d33005c35524b0f74a253e5245381e1598fd378411ecf0136dac463c160d13089a584d74aebe26502f79bb0b0db3d1ed5479488aa057b79d50304002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Set invulnerables", + "1 | Invulnerables [1/6] : mpyLMkgKQgXBe4ViZY58QAc7ipyKNzAvg7NLvVn", + "1 | Invulnerables [2/6] : DkGfZPkV", + "1 | Invulnerables [3/6] : m6yhYkbfx1LstXD8oL6Xx4uFnqGCRRChv829umo", + "1 | Invulnerables [4/6] : HwqciUSK", + "1 | Invulnerables [5/6] : ikYPC1JGrgQub2M4GsjEkg9ixho6fuckcFiLbMc", + "1 | Invulnerables [6/6] : cGa1pMoV" + ], + "output_expert": [ + "0 | Staking : Set invulnerables", + "1 | Invulnerables [1/6] : mpyLMkgKQgXBe4ViZY58QAc7ipyKNzAvg7NLvVn", + "1 | Invulnerables [2/6] : DkGfZPkV", + "1 | Invulnerables [3/6] : m6yhYkbfx1LstXD8oL6Xx4uFnqGCRRChv829umo", + "1 | Invulnerables [4/6] : HwqciUSK", + "1 | Invulnerables [5/6] : ikYPC1JGrgQub2M4GsjEkg9ixho6fuckcFiLbMc", + "1 | Invulnerables [6/6] : cGa1pMoV", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 148, + "name": "Staking_Set_invulnerables", + "blob": "080e24045aa1c8cd469b80a9b6e9d154b0680c7137b1f714ad31620d62647c738fa441c4e376bf29b501bdbb08bbf38596e867401f4fa7c0b24656fd22ba2c2a7e8a10a0870eaecf7954ef4427aa29c484b821ecf79d6fa7b92ebb45ae546855b5fe021234a596857989b4c1f44b24a551512d39bb67c879d8ab474ae635085427b5144c3dca23498bd75f82172c0c4a712e8826c170b42a204a29e30ad69dafda65196a303661a4652e2fd75399b0d5cb658f83fd1c385e68565b37a96c0e84fdef6828eacdad835f4b0dcb8bae671e3f5be3ee10ae7792fc0ecfb9fc9936f9c7e75bcc80e7c08639fccb5c4aa00687de2e224ec62edd81c89f5b7b0e63e1f067b425fe2f75e85dbd83ad437f2c89702f007c0a57df262fb83420566ef6995106bc19d503ae1103006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Set invulnerables", + "1 | Invulnerables [1/18] : hcKvcAvwttzXy6LaxS7Ni6T16TwxC99H3XWJoti", + "1 | Invulnerables [2/18] : KPDXjw1T", + "1 | Invulnerables [3/18] : mxmmQihkhegVUTmxEDY9fE6vAYRbPXrjo7Wwxxc", + "1 | Invulnerables [4/18] : U4Pmjcnk", + "1 | Invulnerables [5/18] : m96bJL3bxRaK2nNfL638qpUjJvWv4nggt1soNcc", + "1 | Invulnerables [6/18] : pBAnfJSL", + "1 | Invulnerables [7/18] : hvVK2ALTfTskZjzMiTZNqdHnj38pnLXcFU38H11", + "1 | Invulnerables [8/18] : YskrCukT", + "1 | Invulnerables [9/18] : jEaodZuo7jWxdyPsx72FwiFroxtRYwRPyDQLETY", + "1 | Invulnerables [10/18] : xsyb7CoD", + "1 | Invulnerables [11/18] : jurD2CKE8bUPqeBev7962cZ4G6dUywqk1fr39X2", + "1 | Invulnerables [12/18] : zBQEvEAE", + "1 | Invulnerables [13/18] : iSGUc9oXSkb9MXy8eCFHoW1SBJbwDoj871ePfaT", + "1 | Invulnerables [14/18] : p4AhKi5b", + "1 | Invulnerables [15/18] : n8ksWAL3SykA7RM9GiRy91xdNtCfRrM6Gf4WZVG", + "1 | Invulnerables [16/18] : gs7gGeKH", + "1 | Invulnerables [17/18] : oFu57K6F4AA6mpZLuVEEJf99b5xDNCR8vuWd68y", + "1 | Invulnerables [18/18] : J5nnWjkd", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Staking : Set invulnerables", + "1 | Invulnerables [1/18] : hcKvcAvwttzXy6LaxS7Ni6T16TwxC99H3XWJoti", + "1 | Invulnerables [2/18] : KPDXjw1T", + "1 | Invulnerables [3/18] : mxmmQihkhegVUTmxEDY9fE6vAYRbPXrjo7Wwxxc", + "1 | Invulnerables [4/18] : U4Pmjcnk", + "1 | Invulnerables [5/18] : m96bJL3bxRaK2nNfL638qpUjJvWv4nggt1soNcc", + "1 | Invulnerables [6/18] : pBAnfJSL", + "1 | Invulnerables [7/18] : hvVK2ALTfTskZjzMiTZNqdHnj38pnLXcFU38H11", + "1 | Invulnerables [8/18] : YskrCukT", + "1 | Invulnerables [9/18] : jEaodZuo7jWxdyPsx72FwiFroxtRYwRPyDQLETY", + "1 | Invulnerables [10/18] : xsyb7CoD", + "1 | Invulnerables [11/18] : jurD2CKE8bUPqeBev7962cZ4G6dUywqk1fr39X2", + "1 | Invulnerables [12/18] : zBQEvEAE", + "1 | Invulnerables [13/18] : iSGUc9oXSkb9MXy8eCFHoW1SBJbwDoj871ePfaT", + "1 | Invulnerables [14/18] : p4AhKi5b", + "1 | Invulnerables [15/18] : n8ksWAL3SykA7RM9GiRy91xdNtCfRrM6Gf4WZVG", + "1 | Invulnerables [16/18] : gs7gGeKH", + "1 | Invulnerables [17/18] : oFu57K6F4AA6mpZLuVEEJf99b5xDNCR8vuWd68y", + "1 | Invulnerables [18/18] : J5nnWjkd", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 149, + "name": "Staking_Set_invulnerables", + "blob": "080e185476d88b575e30065d3a4fbc9fdcfd04ed6b192fa0e24e6cd9d00c89b4ee015d2cc870e49072e43a44fa4511ca666a868c1f4ad35fa7ab0d51f281fabf2eed243017b323063d9730e7a852052e836ac97f1b14fe8f9697dd591ffe52422bd53a908e4ec78281352383533d15002d349f6e24fd74dc8aedfdb3851e5637694903feae6cb1f239ad2855d84a6b208ea064baf3ea1e13a7ad4ae2e42e688aa61a2136e007004038b3aa2994249ddfa3c243af17e152625470ad036ca2b62c46f359d503008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Set invulnerables", + "1 | Invulnerables [1/12] : jRN8uXpBaBi2SLamxmQe5hxvzB9cWB9aErQG9HW", + "1 | Invulnerables [2/12] : xxKJaDK6", + "1 | Invulnerables [3/12] : iXLTfXVfv6coWMegVy7vnp9Fg5ri6h64TYi347R", + "1 | Invulnerables [4/12] : FR7xC45B", + "1 | Invulnerables [5/12] : ibg9bPZgGRUp2gVvM28jVyjqcmccP734wX2C7Ja", + "1 | Invulnerables [6/12] : m3PCgKQt", + "1 | Invulnerables [7/12] : kn9ynQVL7dYcQjxtVZb7SveitRGn75ER6z5Vqyy", + "1 | Invulnerables [8/12] : JXb4ktKn", + "1 | Invulnerables [9/12] : oGYneaMxnqFTPmAaVGHp823u5ydYtjH3MuUQRdX", + "1 | Invulnerables [10/12] : b78HSF6F", + "1 | Invulnerables [11/12] : ikZwpcTwFCrydviNz1gDmMZj7kd3oyijEjCkrmk", + "1 | Invulnerables [12/12] : jyYDY4eC", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Staking : Set invulnerables", + "1 | Invulnerables [1/12] : jRN8uXpBaBi2SLamxmQe5hxvzB9cWB9aErQG9HW", + "1 | Invulnerables [2/12] : xxKJaDK6", + "1 | Invulnerables [3/12] : iXLTfXVfv6coWMegVy7vnp9Fg5ri6h64TYi347R", + "1 | Invulnerables [4/12] : FR7xC45B", + "1 | Invulnerables [5/12] : ibg9bPZgGRUp2gVvM28jVyjqcmccP734wX2C7Ja", + "1 | Invulnerables [6/12] : m3PCgKQt", + "1 | Invulnerables [7/12] : kn9ynQVL7dYcQjxtVZb7SveitRGn75ER6z5Vqyy", + "1 | Invulnerables [8/12] : JXb4ktKn", + "1 | Invulnerables [9/12] : oGYneaMxnqFTPmAaVGHp823u5ydYtjH3MuUQRdX", + "1 | Invulnerables [10/12] : b78HSF6F", + "1 | Invulnerables [11/12] : ikZwpcTwFCrydviNz1gDmMZj7kd3oyijEjCkrmk", + "1 | Invulnerables [12/12] : jyYDY4eC", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 150, + "name": "Staking_Set_invulnerables", + "blob": "080e04444c1e110606cd3355dedaddd1c3b8e3033bfe6210bc0c6084eb93792f702940d50391010b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Set invulnerables", + "1 | Invulnerables [1/2] : j4AgGx9f4xHjnML7UmdiQWhyXi3bvQpEh9JNzXM", + "1 | Invulnerables [2/2] : DYKcM1mA", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Staking : Set invulnerables", + "1 | Invulnerables [1/2] : j4AgGx9f4xHjnML7UmdiQWhyXi3bvQpEh9JNzXM", + "1 | Invulnerables [2/2] : DYKcM1mA", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 151, + "name": "Staking_Force_unstake", + "blob": "080fea33a975e8a0e3908fad9be67b6927f1b5d2fdee682c9a21e59b31fb76804b4234300000d5038d240b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Force unstake", + "1 | Stash [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "1 | Stash [2/2] : 8kQ2Cbj7", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Staking : Force unstake", + "1 | Stash [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "1 | Stash [2/2] : 8kQ2Cbj7", + "2 | Num slashing spans : 12340", + "3 | Chain : Edgeware", + "4 | Nonce : 2339", + "5 | Tip : EDG 0.000005552342355555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 152, + "name": "Staking_Force_unstake", + "blob": "080f44934098651253342230b3e67b37bb55f934927ffadbd3d2025686e16269f75534300000d503ae110300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Force unstake", + "1 | Stash [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "1 | Stash [2/2] : t8MmbYSG" + ], + "output_expert": [ + "0 | Staking : Force unstake", + "1 | Stash [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "1 | Stash [2/2] : t8MmbYSG", + "2 | Num slashing spans : 12340", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 153, + "name": "Staking_Force_unstake", + "blob": "080fea33a975e8a0e3908fad9be67b6927f1b5d2fdee682c9a21e59b31fb76804b429d1c0000d5030433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Force unstake", + "1 | Stash [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "1 | Stash [2/2] : 8kQ2Cbj7", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Staking : Force unstake", + "1 | Stash [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "1 | Stash [2/2] : 8kQ2Cbj7", + "2 | Num slashing spans : 7325", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "5 | Tip [2/2] : 56789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 154, + "name": "Staking_Force_unstake", + "blob": "080f44934098651253342230b3e67b37bb55f934927ffadbd3d2025686e16269f75500000000d503ae11030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Force unstake", + "1 | Stash [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "1 | Stash [2/2] : t8MmbYSG", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Staking : Force unstake", + "1 | Stash [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "1 | Stash [2/2] : t8MmbYSG", + "2 | Num slashing spans : 0", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "5 | Tip [2/2] : 56789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 155, + "name": "Staking_Force_unstake", + "blob": "080f0a020856a01aa594a4a77167f74b11e13dbbbc934d8c942eca62569d4c58390e9d1c0000d50300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Force unstake", + "1 | Stash [1/2] : hjjtjpF2ZP5MQ71c5PmPgSVTC3Jv6WL2mK4xcEx", + "1 | Stash [2/2] : gUKcbvMx" + ], + "output_expert": [ + "0 | Staking : Force unstake", + "1 | Stash [1/2] : hjjtjpF2ZP5MQ71c5PmPgSVTC3Jv6WL2mK4xcEx", + "1 | Stash [2/2] : gUKcbvMx", + "2 | Num slashing spans : 7325", + "3 | Chain : Edgeware", + "4 | Nonce : 0", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 156, + "name": "Staking_Force_new_era_always", + "blob": "0810d503048ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Force new era always", + "1 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Staking : Force new era always", + "1 | Chain : Edgeware", + "2 | Nonce : 1", + "3 | Tip : EDG 0.000000000055555555", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 157, + "name": "Staking_Force_new_era_always", + "blob": "0810d503000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Force new era always", + "1 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Staking : Force new era always", + "1 | Chain : Edgeware", + "2 | Nonce : 0", + "3 | Tip : EDG 0.000005552342355555", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 158, + "name": "Staking_Force_new_era_always", + "blob": "0810d503008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Force new era always", + "1 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Staking : Force new era always", + "1 | Chain : Edgeware", + "2 | Nonce : 0", + "3 | Tip : EDG 0.000000000055555555", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 159, + "name": "Staking_Force_new_era_always", + "blob": "0810d5039101002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Force new era always" + ], + "output_expert": [ + "0 | Staking : Force new era always", + "1 | Chain : Edgeware", + "2 | Nonce : 100", + "3 | Era Phase : 61", + "4 | Era Period : 64", + "5 | Block [1/2] : 00000000000000000000000000000000000000", + "5 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 160, + "name": "Staking_Force_new_era_always", + "blob": "0810d5030403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Force new era always", + "1 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Staking : Force new era always", + "1 | Chain : Edgeware", + "2 | Nonce : 1", + "3 | Tip : EDG 0.00000000123456789", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 161, + "name": "Staking_Cancel_deferred_slash", + "blob": "081134300000100d0000000c0000001300000023000000d503048ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Cancel deferred slash", + "1 | Era : 12340", + "2 | Slash indices [1/4] : 13", + "2 | Slash indices [2/4] : 12", + "2 | Slash indices [3/4] : 19", + "2 | Slash indices [4/4] : 35", + "3 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Staking : Cancel deferred slash", + "1 | Era : 12340", + "2 | Slash indices [1/4] : 13", + "2 | Slash indices [2/4] : 12", + "2 | Slash indices [3/4] : 19", + "2 | Slash indices [4/4] : 35", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Tip : EDG 0.000000000055555555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 162, + "name": "Staking_Cancel_deferred_slash", + "blob": "08110000000010200000000b000000200000000b000000d503040b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Cancel deferred slash", + "1 | Era : 0", + "2 | Slash indices [1/4] : 32", + "2 | Slash indices [2/4] : 11", + "2 | Slash indices [3/4] : 32", + "2 | Slash indices [4/4] : 11", + "3 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Staking : Cancel deferred slash", + "1 | Era : 0", + "2 | Slash indices [1/4] : 32", + "2 | Slash indices [2/4] : 11", + "2 | Slash indices [3/4] : 32", + "2 | Slash indices [4/4] : 11", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Tip : EDG 0.000005552342355555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 163, + "name": "Staking_Cancel_deferred_slash", + "blob": "08119d1c0000100e0000002a0000000c00000049000000d503ae1103008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Cancel deferred slash", + "1 | Era : 7325", + "2 | Slash indices [1/4] : 14", + "2 | Slash indices [2/4] : 42", + "2 | Slash indices [3/4] : 12", + "2 | Slash indices [4/4] : 73", + "3 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Staking : Cancel deferred slash", + "1 | Era : 7325", + "2 | Slash indices [1/4] : 14", + "2 | Slash indices [2/4] : 42", + "2 | Slash indices [3/4] : 12", + "2 | Slash indices [4/4] : 73", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Tip : EDG 0.000000000055555555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 164, + "name": "Staking_Cancel_deferred_slash", + "blob": "0811f7010000100c000000290000003400000035000000d50391010b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Cancel deferred slash", + "1 | Era : 503", + "2 | Slash indices [1/4] : 12", + "2 | Slash indices [2/4] : 41", + "2 | Slash indices [3/4] : 52", + "2 | Slash indices [4/4] : 53", + "3 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Staking : Cancel deferred slash", + "1 | Era : 503", + "2 | Slash indices [1/4] : 12", + "2 | Slash indices [2/4] : 41", + "2 | Slash indices [3/4] : 52", + "2 | Slash indices [4/4] : 53", + "3 | Chain : Edgeware", + "4 | Nonce : 100", + "5 | Tip : EDG 0.000005552342355555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 165, + "name": "Staking_Cancel_deferred_slash", + "blob": "0811f7010000100e0000002a0000000c00000049000000d503910103d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Cancel deferred slash", + "1 | Era : 503", + "2 | Slash indices [1/4] : 14", + "2 | Slash indices [2/4] : 42", + "2 | Slash indices [3/4] : 12", + "2 | Slash indices [4/4] : 73", + "3 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Staking : Cancel deferred slash", + "1 | Era : 503", + "2 | Slash indices [1/4] : 14", + "2 | Slash indices [2/4] : 42", + "2 | Slash indices [3/4] : 12", + "2 | Slash indices [4/4] : 73", + "3 | Chain : Edgeware", + "4 | Nonce : 100", + "5 | Tip : EDG 0.00000000123456789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 166, + "name": "Staking_Payout_stakers", + "blob": "0812ea33a975e8a0e3908fad9be67b6927f1b5d2fdee682c9a21e59b31fb76804b429d1c0000d5038d2403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Payout stakers", + "1 | Validator stash [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "1 | Validator stash [2/2] : 8kQ2Cbj7", + "2 | Era : 7325", + "3 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Staking : Payout stakers", + "1 | Validator stash [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "1 | Validator stash [2/2] : 8kQ2Cbj7", + "2 | Era : 7325", + "3 | Chain : Edgeware", + "4 | Nonce : 2339", + "5 | Tip : EDG 0.00000000123456789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 167, + "name": "Staking_Payout_stakers", + "blob": "081244934098651253342230b3e67b37bb55f934927ffadbd3d2025686e16269f75500000000d5038d2433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Payout stakers", + "1 | Validator stash [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "1 | Validator stash [2/2] : t8MmbYSG", + "2 | Era : 0", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Staking : Payout stakers", + "1 | Validator stash [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "1 | Validator stash [2/2] : t8MmbYSG", + "2 | Era : 0", + "3 | Chain : Edgeware", + "4 | Nonce : 2339", + "5 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "5 | Tip [2/2] : 56789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 168, + "name": "Staking_Payout_stakers", + "blob": "081244934098651253342230b3e67b37bb55f934927ffadbd3d2025686e16269f75500000000d50304002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Payout stakers", + "1 | Validator stash [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "1 | Validator stash [2/2] : t8MmbYSG", + "2 | Era : 0" + ], + "output_expert": [ + "0 | Staking : Payout stakers", + "1 | Validator stash [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "1 | Validator stash [2/2] : t8MmbYSG", + "2 | Era : 0", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 169, + "name": "Staking_Payout_stakers", + "blob": "08128647fb36b1a57550a3a9ce1810aece028bccdd32d63b89731bc178f750a6d9679d1c0000d503910133158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Payout stakers", + "1 | Validator stash [1/2] : kYgcKBprAL2wXJey222eVRzgpHDtat891TyqH15", + "1 | Validator stash [2/2] : w9pMuDEH", + "2 | Era : 7325", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Staking : Payout stakers", + "1 | Validator stash [1/2] : kYgcKBprAL2wXJey222eVRzgpHDtat891TyqH15", + "1 | Validator stash [2/2] : w9pMuDEH", + "2 | Era : 7325", + "3 | Chain : Edgeware", + "4 | Nonce : 100", + "5 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "5 | Tip [2/2] : 56789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 170, + "name": "Staking_Payout_stakers", + "blob": "0812ea33a975e8a0e3908fad9be67b6927f1b5d2fdee682c9a21e59b31fb76804b4200000000d503046d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Payout stakers", + "1 | Validator stash [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "1 | Validator stash [2/2] : 8kQ2Cbj7", + "2 | Era : 0", + "3 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Staking : Payout stakers", + "1 | Validator stash [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "1 | Validator stash [2/2] : 8kQ2Cbj7", + "2 | Era : 0", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Tip : EDG 0.000000000000000987", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 171, + "name": "Staking_Rebond", + "blob": "08136d0fd50304002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Rebond", + "1 | Amount : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Staking : Rebond", + "1 | Amount : EDG 0.000000000000000987", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 172, + "name": "Staking_Rebond", + "blob": "081333158139ae28a3dfaac5fe1560a5e9e05cd5030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Rebond", + "1 | Amount [1/2] : EDG 123456789012345678901.2345678901234", + "1 | Amount [2/2] : 56789", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Staking : Rebond", + "1 | Amount [1/2] : EDG 123456789012345678901.2345678901234", + "1 | Amount [2/2] : 56789", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 173, + "name": "Staking_Rebond", + "blob": "08138ed73e0dd5030433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Rebond", + "1 | Amount : EDG 0.000000000055555555", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Staking : Rebond", + "1 | Amount : EDG 0.000000000055555555", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 174, + "name": "Staking_Rebond", + "blob": "081333158139ae28a3dfaac5fe1560a5e9e05cd503910133158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Rebond", + "1 | Amount [1/2] : EDG 123456789012345678901.2345678901234", + "1 | Amount [2/2] : 56789", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Staking : Rebond", + "1 | Amount [1/2] : EDG 123456789012345678901.2345678901234", + "1 | Amount [2/2] : 56789", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 175, + "name": "Staking_Rebond", + "blob": "08130b63ce64c10c05d5038d24002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Rebond", + "1 | Amount : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Staking : Rebond", + "1 | Amount : EDG 0.000005552342355555", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 176, + "name": "Staking_Set_history_depth", + "blob": "0814489504d5038d240b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Set history depth", + "1 | New history depth : 18", + "2 | Era items deleted : 293", + "3 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Staking : Set history depth", + "1 | New history depth : 18", + "2 | Era items deleted : 293", + "3 | Chain : Edgeware", + "4 | Nonce : 2339", + "5 | Tip : EDG 0.000005552342355555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 177, + "name": "Staking_Set_history_depth", + "blob": "08140cfd0fd503048ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Set history depth", + "1 | New history depth : 3", + "2 | Era items deleted : 1023", + "3 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Staking : Set history depth", + "1 | New history depth : 3", + "2 | Era items deleted : 1023", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Tip : EDG 0.000000000055555555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 178, + "name": "Staking_Set_history_depth", + "blob": "0814489504d503ae1103000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Set history depth", + "1 | New history depth : 18", + "2 | Era items deleted : 293", + "3 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Staking : Set history depth", + "1 | New history depth : 18", + "2 | Era items deleted : 293", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Tip : EDG 0.000005552342355555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 179, + "name": "Staking_Set_history_depth", + "blob": "08140cce8e0700d503ae11030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Set history depth", + "1 | New history depth : 3", + "2 | Era items deleted : 123827", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Staking : Set history depth", + "1 | New history depth : 3", + "2 | Era items deleted : 123827", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "5 | Tip [2/2] : 56789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 180, + "name": "Staking_Set_history_depth", + "blob": "081440fd0fd5039101002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Set history depth", + "1 | New history depth : 16", + "2 | Era items deleted : 1023" + ], + "output_expert": [ + "0 | Staking : Set history depth", + "1 | New history depth : 16", + "2 | Era items deleted : 1023", + "3 | Chain : Edgeware", + "4 | Nonce : 100", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 181, + "name": "Staking_Reap_stash", + "blob": "08158647fb36b1a57550a3a9ce1810aece028bccdd32d63b89731bc178f750a6d96700000000d503000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Reap stash", + "1 | Stash [1/2] : kYgcKBprAL2wXJey222eVRzgpHDtat891TyqH15", + "1 | Stash [2/2] : w9pMuDEH", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Staking : Reap stash", + "1 | Stash [1/2] : kYgcKBprAL2wXJey222eVRzgpHDtat891TyqH15", + "1 | Stash [2/2] : w9pMuDEH", + "2 | Num slashing spans : 0", + "3 | Chain : Edgeware", + "4 | Nonce : 0", + "5 | Tip : EDG 0.000005552342355555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 182, + "name": "Staking_Reap_stash", + "blob": "08150a020856a01aa594a4a77167f74b11e13dbbbc934d8c942eca62569d4c58390e34300000d503ae1103000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Reap stash", + "1 | Stash [1/2] : hjjtjpF2ZP5MQ71c5PmPgSVTC3Jv6WL2mK4xcEx", + "1 | Stash [2/2] : gUKcbvMx", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Staking : Reap stash", + "1 | Stash [1/2] : hjjtjpF2ZP5MQ71c5PmPgSVTC3Jv6WL2mK4xcEx", + "1 | Stash [2/2] : gUKcbvMx", + "2 | Num slashing spans : 12340", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Tip : EDG 0.000005552342355555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 183, + "name": "Staking_Reap_stash", + "blob": "0815ea33a975e8a0e3908fad9be67b6927f1b5d2fdee682c9a21e59b31fb76804b42d3040000d50304002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Reap stash", + "1 | Stash [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "1 | Stash [2/2] : 8kQ2Cbj7" + ], + "output_expert": [ + "0 | Staking : Reap stash", + "1 | Stash [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "1 | Stash [2/2] : 8kQ2Cbj7", + "2 | Num slashing spans : 1235", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 184, + "name": "Staking_Reap_stash", + "blob": "08150a020856a01aa594a4a77167f74b11e13dbbbc934d8c942eca62569d4c58390e34300000d503ae110300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Reap stash", + "1 | Stash [1/2] : hjjtjpF2ZP5MQ71c5PmPgSVTC3Jv6WL2mK4xcEx", + "1 | Stash [2/2] : gUKcbvMx" + ], + "output_expert": [ + "0 | Staking : Reap stash", + "1 | Stash [1/2] : hjjtjpF2ZP5MQ71c5PmPgSVTC3Jv6WL2mK4xcEx", + "1 | Stash [2/2] : gUKcbvMx", + "2 | Num slashing spans : 12340", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 185, + "name": "Staking_Reap_stash", + "blob": "081544934098651253342230b3e67b37bb55f934927ffadbd3d2025686e16269f755d3040000d5030403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Reap stash", + "1 | Stash [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "1 | Stash [2/2] : t8MmbYSG", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Staking : Reap stash", + "1 | Stash [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "1 | Stash [2/2] : t8MmbYSG", + "2 | Num slashing spans : 1235", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Tip : EDG 0.00000000123456789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 186, + "name": "Session_Purge_keys", + "blob": "0901d50391016d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Session : Purge keys", + "1 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Session : Purge keys", + "1 | Chain : Edgeware", + "2 | Nonce : 100", + "3 | Tip : EDG 0.000000000000000987", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 187, + "name": "Session_Purge_keys", + "blob": "0901d5038d2433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Session : Purge keys", + "1 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "1 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Session : Purge keys", + "1 | Chain : Edgeware", + "2 | Nonce : 2339", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 188, + "name": "Session_Purge_keys", + "blob": "0901d503ae1103008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Session : Purge keys", + "1 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Session : Purge keys", + "1 | Chain : Edgeware", + "2 | Nonce : 50283", + "3 | Tip : EDG 0.000000000055555555", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 189, + "name": "Session_Purge_keys", + "blob": "0901d503ae110300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Session : Purge keys" + ], + "output_expert": [ + "0 | Session : Purge keys", + "1 | Chain : Edgeware", + "2 | Nonce : 50283", + "3 | Era Phase : 61", + "4 | Era Period : 64", + "5 | Block [1/2] : 00000000000000000000000000000000000000", + "5 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 190, + "name": "Session_Purge_keys", + "blob": "0901d5038d2403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Session : Purge keys", + "1 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Session : Purge keys", + "1 | Chain : Edgeware", + "2 | Nonce : 2339", + "3 | Tip : EDG 0.00000000123456789", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 191, + "name": "Democracy_Propose", + "blob": "0a0000000000000000000000000000000000000000000000000000000000000000008ed73e0dd503ae1103000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Propose", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Amount : EDG 0.000000000055555555", + "3 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Democracy : Propose", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Amount : EDG 0.000000000055555555", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Tip : EDG 0.000005552342355555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 192, + "name": "Democracy_Propose", + "blob": "0a00000000000000000000000000000000000000000000000000000000000000000000d503ae1103000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Propose", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Amount : EDG 0.0", + "3 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Democracy : Propose", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Amount : EDG 0.0", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Tip : EDG 0.000005552342355555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 193, + "name": "Democracy_Propose", + "blob": "0a00000000000000000000000000000000000000000000000000000000000000000033158139ae28a3dfaac5fe1560a5e9e05cd503ae110300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Propose", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Amount [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Amount [2/2] : 56789" + ], + "output_expert": [ + "0 | Democracy : Propose", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Amount [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Amount [2/2] : 56789", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 194, + "name": "Democracy_Propose", + "blob": "0a0000000000000000000000000000000000000000000000000000000000000000008ed73e0dd503ae1103000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Propose", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Amount : EDG 0.000000000055555555", + "3 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Democracy : Propose", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Amount : EDG 0.000000000055555555", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Tip : EDG 0.000005552342355555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 195, + "name": "Democracy_Propose", + "blob": "0a0000000000000000000000000000000000000000000000000000000000000000008ed73e0dd5038d24002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Propose", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Amount : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Democracy : Propose", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Amount : EDG 0.000000000055555555", + "3 | Chain : Edgeware", + "4 | Nonce : 2339", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 196, + "name": "Democracy_Second", + "blob": "0a0100fd0fd50300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Second", + "1 | Proposal : 0", + "2 | Seconds upper bound : 1023" + ], + "output_expert": [ + "0 | Democracy : Second", + "1 | Proposal : 0", + "2 | Seconds upper bound : 1023", + "3 | Chain : Edgeware", + "4 | Nonce : 0", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 197, + "name": "Democracy_Second", + "blob": "0a016ed00100ed01d503ae11030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Second", + "1 | Proposal : 29723", + "2 | Seconds upper bound : 123", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Democracy : Second", + "1 | Proposal : 29723", + "2 | Seconds upper bound : 123", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "5 | Tip [2/2] : 56789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 198, + "name": "Democracy_Second", + "blob": "0a015256b600ce8e0700d503ae1103006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Second", + "1 | Proposal : 2987412", + "2 | Seconds upper bound : 123827", + "3 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Democracy : Second", + "1 | Proposal : 2987412", + "2 | Seconds upper bound : 123827", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Tip : EDG 0.000000000000000987", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 199, + "name": "Democracy_Second", + "blob": "0a016ed00100fd0fd503008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Second", + "1 | Proposal : 29723", + "2 | Seconds upper bound : 1023", + "3 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Democracy : Second", + "1 | Proposal : 29723", + "2 | Seconds upper bound : 1023", + "3 | Chain : Edgeware", + "4 | Nonce : 0", + "5 | Tip : EDG 0.000000000055555555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 200, + "name": "Democracy_Second", + "blob": "0a016d0fce8e0700d5038d2433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Second", + "1 | Proposal : 987", + "2 | Seconds upper bound : 123827", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Democracy : Second", + "1 | Proposal : 987", + "2 | Seconds upper bound : 123827", + "3 | Chain : Edgeware", + "4 | Nonce : 2339", + "5 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "5 | Tip [2/2] : 56789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 201, + "name": "Democracy_Vote", + "blob": "0a020001ec68ea28832b596007e86187f54827679ff3af5bccc12d746ec48c18788543bdd503ae1103000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Vote", + "1 | Ref index : 0", + "2 | Vote [1/5] : Split", + "2 | Vote [2/5] : EDG 137114462929619309957.1161169104193", + "2 | Vote [3/5] : 72268", + "2 | Vote [4/5] : EDG 251574682168325538285.6203545149114", + "2 | Vote [5/5] : 90975", + "3 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Democracy : Vote", + "1 | Ref index : 0", + "2 | Vote [1/5] : Split", + "2 | Vote [2/5] : EDG 137114462929619309957.1161169104193", + "2 | Vote [3/5] : 72268", + "2 | Vote [4/5] : EDG 251574682168325538285.6203545149114", + "2 | Vote [5/5] : 90975", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Tip : EDG 0.000005552342355555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 202, + "name": "Democracy_Vote", + "blob": "0a028ed73e0d015023754f0c6d3dd053ed316e7556335d8337a5931545baf96e31e1c6eee24191d503046d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Vote", + "1 | Ref index : 55555555", + "2 | Vote [1/5] : Split", + "2 | Vote [2/5] : EDG 123884764338807089794.1436118733184", + "2 | Vote [3/5] : 78672", + "2 | Vote [4/5] : EDG 193080161427040942736.4685604568677", + "2 | Vote [5/5] : 23139", + "3 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Democracy : Vote", + "1 | Ref index : 55555555", + "2 | Vote [1/5] : Split", + "2 | Vote [2/5] : EDG 123884764338807089794.1436118733184", + "2 | Vote [3/5] : 78672", + "2 | Vote [4/5] : EDG 193080161427040942736.4685604568677", + "2 | Vote [5/5] : 23139", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Tip : EDG 0.000000000000000987", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 203, + "name": "Democracy_Vote", + "blob": "0a020ea52100015023754f0c6d3dd053ed316e7556335d8337a5931545baf96e31e1c6eee24191d503008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Vote", + "1 | Ref index : 551235", + "2 | Vote [1/5] : Split", + "2 | Vote [2/5] : EDG 123884764338807089794.1436118733184", + "2 | Vote [3/5] : 78672", + "2 | Vote [4/5] : EDG 193080161427040942736.4685604568677", + "2 | Vote [5/5] : 23139", + "3 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Democracy : Vote", + "1 | Ref index : 551235", + "2 | Vote [1/5] : Split", + "2 | Vote [2/5] : EDG 123884764338807089794.1436118733184", + "2 | Vote [3/5] : 78672", + "2 | Vote [4/5] : EDG 193080161427040942736.4685604568677", + "2 | Vote [5/5] : 23139", + "3 | Chain : Edgeware", + "4 | Nonce : 0", + "5 | Tip : EDG 0.000000000055555555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 204, + "name": "Democracy_Vote", + "blob": "0a020ea5210001ec68ea28832b596007e86187f54827679ff3af5bccc12d746ec48c18788543bdd503ae11030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Vote", + "1 | Ref index : 551235", + "2 | Vote [1/5] : Split", + "2 | Vote [2/5] : EDG 137114462929619309957.1161169104193", + "2 | Vote [3/5] : 72268", + "2 | Vote [4/5] : EDG 251574682168325538285.6203545149114", + "2 | Vote [5/5] : 90975", + "3 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Democracy : Vote", + "1 | Ref index : 551235", + "2 | Vote [1/5] : Split", + "2 | Vote [2/5] : EDG 137114462929619309957.1161169104193", + "2 | Vote [3/5] : 72268", + "2 | Vote [4/5] : EDG 251574682168325538285.6203545149114", + "2 | Vote [5/5] : 90975", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Tip : EDG 0.00000000123456789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 205, + "name": "Democracy_Vote", + "blob": "0a020001ec68ea28832b596007e86187f54827679ff3af5bccc12d746ec48c18788543bdd503ae1103006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Vote", + "1 | Ref index : 0", + "2 | Vote [1/5] : Split", + "2 | Vote [2/5] : EDG 137114462929619309957.1161169104193", + "2 | Vote [3/5] : 72268", + "2 | Vote [4/5] : EDG 251574682168325538285.6203545149114", + "2 | Vote [5/5] : 90975", + "3 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Democracy : Vote", + "1 | Ref index : 0", + "2 | Vote [1/5] : Split", + "2 | Vote [2/5] : EDG 137114462929619309957.1161169104193", + "2 | Vote [3/5] : 72268", + "2 | Vote [4/5] : EDG 251574682168325538285.6203545149114", + "2 | Vote [5/5] : 90975", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Tip : EDG 0.000000000000000987", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 206, + "name": "Democracy_Emergency_cancel", + "blob": "0a0325010000d50391018ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Emergency cancel", + "1 | Ref index : 293", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Democracy : Emergency cancel", + "1 | Ref index : 293", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 207, + "name": "Democracy_Emergency_cancel", + "blob": "0a0300000000d5030433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Emergency cancel", + "1 | Ref index : 0", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Democracy : Emergency cancel", + "1 | Ref index : 0", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 208, + "name": "Democracy_Emergency_cancel", + "blob": "0a03b3e30100d503040b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Emergency cancel", + "1 | Ref index : 123827", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Democracy : Emergency cancel", + "1 | Ref index : 123827", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 209, + "name": "Democracy_Emergency_cancel", + "blob": "0a0301000000d5030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Emergency cancel", + "1 | Ref index : 1", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Democracy : Emergency cancel", + "1 | Ref index : 1", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 210, + "name": "Democracy_Emergency_cancel", + "blob": "0a03ff030000d5030403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Emergency cancel", + "1 | Ref index : 1023", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Democracy : Emergency cancel", + "1 | Ref index : 1023", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 211, + "name": "Democracy_External_propose", + "blob": "0a040000000000000000000000000000000000000000000000000000000000000000d503ae11030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : External propose", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Democracy : External propose", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 212, + "name": "Democracy_External_propose", + "blob": "0a040000000000000000000000000000000000000000000000000000000000000000d503000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : External propose", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Democracy : External propose", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 213, + "name": "Democracy_External_propose", + "blob": "0a040000000000000000000000000000000000000000000000000000000000000000d503910133158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : External propose", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Democracy : External propose", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 214, + "name": "Democracy_External_propose", + "blob": "0a040000000000000000000000000000000000000000000000000000000000000000d50391010b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : External propose", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Democracy : External propose", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 215, + "name": "Democracy_External_propose", + "blob": "0a040000000000000000000000000000000000000000000000000000000000000000d503ae11030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : External propose", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Democracy : External propose", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 216, + "name": "Democracy_External_propose_majority", + "blob": "0a050000000000000000000000000000000000000000000000000000000000000000d50391010b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : External propose majority", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Democracy : External propose majority", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 217, + "name": "Democracy_External_propose_majority", + "blob": "0a050000000000000000000000000000000000000000000000000000000000000000d503000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : External propose majority", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Democracy : External propose majority", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 218, + "name": "Democracy_External_propose_majority", + "blob": "0a050000000000000000000000000000000000000000000000000000000000000000d50391018ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : External propose majority", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Democracy : External propose majority", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 219, + "name": "Democracy_External_propose_majority", + "blob": "0a050000000000000000000000000000000000000000000000000000000000000000d5038d240b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : External propose majority", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Democracy : External propose majority", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 220, + "name": "Democracy_External_propose_majority", + "blob": "0a050000000000000000000000000000000000000000000000000000000000000000d50304002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : External propose majority", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000" + ], + "output_expert": [ + "0 | Democracy : External propose majority", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 221, + "name": "Democracy_External_propose_default", + "blob": "0a060000000000000000000000000000000000000000000000000000000000000000d5038d2403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : External propose default", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Democracy : External propose default", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 222, + "name": "Democracy_External_propose_default", + "blob": "0a060000000000000000000000000000000000000000000000000000000000000000d503000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : External propose default", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Democracy : External propose default", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 223, + "name": "Democracy_External_propose_default", + "blob": "0a060000000000000000000000000000000000000000000000000000000000000000d503ae1103000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : External propose default", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Democracy : External propose default", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 224, + "name": "Democracy_External_propose_default", + "blob": "0a060000000000000000000000000000000000000000000000000000000000000000d5038d246d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : External propose default", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Democracy : External propose default", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 225, + "name": "Democracy_External_propose_default", + "blob": "0a060000000000000000000000000000000000000000000000000000000000000000d50391010b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : External propose default", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Democracy : External propose default", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 226, + "name": "Democracy_Fast_track", + "blob": "0a07000000000000000000000000000000000000000000000000000000000000000001000000b3e30100d503910133158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Fast track", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Voting period : 1", + "3 | Delay : 123827", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Democracy : Fast track", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Voting period : 1", + "3 | Delay : 123827", + "4 | Chain : Edgeware", + "5 | Nonce : 100", + "6 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "6 | Tip [2/2] : 56789", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 227, + "name": "Democracy_Fast_track", + "blob": "0a070000000000000000000000000000000000000000000000000000000000000000ff030000b3e30100d503ae1103000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Fast track", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Voting period : 1023", + "3 | Delay : 123827", + "4 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Democracy : Fast track", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Voting period : 1023", + "3 | Delay : 123827", + "4 | Chain : Edgeware", + "5 | Nonce : 50283", + "6 | Tip : EDG 0.000005552342355555", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 228, + "name": "Democracy_Fast_track", + "blob": "0a0700000000000000000000000000000000000000000000000000000000000000000000000001000000d50391016d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Fast track", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Voting period : 0", + "3 | Delay : 1", + "4 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Democracy : Fast track", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Voting period : 0", + "3 | Delay : 1", + "4 | Chain : Edgeware", + "5 | Nonce : 100", + "6 | Tip : EDG 0.000000000000000987", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 229, + "name": "Democracy_Fast_track", + "blob": "0a070000000000000000000000000000000000000000000000000000000000000000ac35000001000000d503046d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Fast track", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Voting period : 13740", + "3 | Delay : 1", + "4 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Democracy : Fast track", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Voting period : 13740", + "3 | Delay : 1", + "4 | Chain : Edgeware", + "5 | Nonce : 1", + "6 | Tip : EDG 0.000000000000000987", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 230, + "name": "Democracy_Fast_track", + "blob": "0a07000000000000000000000000000000000000000000000000000000000000000025010000ac350000d5038d24002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Fast track", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Voting period : 293", + "3 | Delay : 13740" + ], + "output_expert": [ + "0 | Democracy : Fast track", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Voting period : 293", + "3 | Delay : 13740", + "4 | Chain : Edgeware", + "5 | Nonce : 2339", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 231, + "name": "Democracy_Veto_external", + "blob": "0a080000000000000000000000000000000000000000000000000000000000000000d503ae1103000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Veto external", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Democracy : Veto external", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 232, + "name": "Democracy_Veto_external", + "blob": "0a080000000000000000000000000000000000000000000000000000000000000000d50300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Veto external", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000" + ], + "output_expert": [ + "0 | Democracy : Veto external", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 233, + "name": "Democracy_Veto_external", + "blob": "0a080000000000000000000000000000000000000000000000000000000000000000d5038d246d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Veto external", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Democracy : Veto external", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 234, + "name": "Democracy_Veto_external", + "blob": "0a080000000000000000000000000000000000000000000000000000000000000000d50300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Veto external", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000" + ], + "output_expert": [ + "0 | Democracy : Veto external", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 235, + "name": "Democracy_Veto_external", + "blob": "0a080000000000000000000000000000000000000000000000000000000000000000d50300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Veto external", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000" + ], + "output_expert": [ + "0 | Democracy : Veto external", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 236, + "name": "Democracy_Cancel_referendum", + "blob": "0a090ea52100d5038d246d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Cancel referendum", + "1 | Ref index : 551235", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Democracy : Cancel referendum", + "1 | Ref index : 551235", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 237, + "name": "Democracy_Cancel_referendum", + "blob": "0a098ed73e0dd503040b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Cancel referendum", + "1 | Ref index : 55555555", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Democracy : Cancel referendum", + "1 | Ref index : 55555555", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 238, + "name": "Democracy_Cancel_referendum", + "blob": "0a0900d503ae11030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Cancel referendum", + "1 | Ref index : 0", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Democracy : Cancel referendum", + "1 | Ref index : 0", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 239, + "name": "Democracy_Cancel_referendum", + "blob": "0a098ed73e0dd5030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Cancel referendum", + "1 | Ref index : 55555555", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Democracy : Cancel referendum", + "1 | Ref index : 55555555", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 240, + "name": "Democracy_Cancel_referendum", + "blob": "0a098ed73e0dd5038d246d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Cancel referendum", + "1 | Ref index : 55555555", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Democracy : Cancel referendum", + "1 | Ref index : 55555555", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 241, + "name": "Democracy_Cancel_queued", + "blob": "0a0aac350000d5038d248ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Cancel queued", + "1 | Which : 13740", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Democracy : Cancel queued", + "1 | Which : 13740", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 242, + "name": "Democracy_Cancel_queued", + "blob": "0a0a7b000000d5039101002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Cancel queued", + "1 | Which : 123" + ], + "output_expert": [ + "0 | Democracy : Cancel queued", + "1 | Which : 123", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 243, + "name": "Democracy_Cancel_queued", + "blob": "0a0aff030000d5030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Cancel queued", + "1 | Which : 1023", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Democracy : Cancel queued", + "1 | Which : 1023", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 244, + "name": "Democracy_Cancel_queued", + "blob": "0a0a00000000d50391018ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Cancel queued", + "1 | Which : 0", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Democracy : Cancel queued", + "1 | Which : 0", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 245, + "name": "Democracy_Cancel_queued", + "blob": "0a0a01000000d503ae1103000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Cancel queued", + "1 | Which : 1", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Democracy : Cancel queued", + "1 | Which : 1", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 246, + "name": "Democracy_Delegate", + "blob": "0a0b0a020856a01aa594a4a77167f74b11e13dbbbc934d8c942eca62569d4c58390e03d2040000000000000000000000000000d503ae110300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Delegate", + "1 | To [1/2] : hjjtjpF2ZP5MQ71c5PmPgSVTC3Jv6WL2mK4xcEx", + "1 | To [2/2] : gUKcbvMx", + "2 | Conviction : Locked3x", + "3 | Balance : EDG 0.000000000000001234" + ], + "output_expert": [ + "0 | Democracy : Delegate", + "1 | To [1/2] : hjjtjpF2ZP5MQ71c5PmPgSVTC3Jv6WL2mK4xcEx", + "1 | To [2/2] : gUKcbvMx", + "2 | Conviction : Locked3x", + "3 | Balance : EDG 0.000000000000001234", + "4 | Chain : Edgeware", + "5 | Nonce : 50283", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 247, + "name": "Democracy_Delegate", + "blob": "0a0b44934098651253342230b3e67b37bb55f934927ffadbd3d2025686e16269f75500d2040000000000000000000000000000d5038d248ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Delegate", + "1 | To [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "1 | To [2/2] : t8MmbYSG", + "2 | Conviction : None", + "3 | Balance : EDG 0.000000000000001234", + "4 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Democracy : Delegate", + "1 | To [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "1 | To [2/2] : t8MmbYSG", + "2 | Conviction : None", + "3 | Balance : EDG 0.000000000000001234", + "4 | Chain : Edgeware", + "5 | Nonce : 2339", + "6 | Tip : EDG 0.000000000055555555", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 248, + "name": "Democracy_Delegate", + "blob": "0a0b0a020856a01aa594a4a77167f74b11e13dbbbc934d8c942eca62569d4c58390e01d2040000000000000000000000000000d503048ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Delegate", + "1 | To [1/2] : hjjtjpF2ZP5MQ71c5PmPgSVTC3Jv6WL2mK4xcEx", + "1 | To [2/2] : gUKcbvMx", + "2 | Conviction : Locked1x", + "3 | Balance : EDG 0.000000000000001234", + "4 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Democracy : Delegate", + "1 | To [1/2] : hjjtjpF2ZP5MQ71c5PmPgSVTC3Jv6WL2mK4xcEx", + "1 | To [2/2] : gUKcbvMx", + "2 | Conviction : Locked1x", + "3 | Balance : EDG 0.000000000000001234", + "4 | Chain : Edgeware", + "5 | Nonce : 1", + "6 | Tip : EDG 0.000000000055555555", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 249, + "name": "Democracy_Delegate", + "blob": "0a0b44934098651253342230b3e67b37bb55f934927ffadbd3d2025686e16269f75501d2040000000000000000000000000000d503006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Delegate", + "1 | To [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "1 | To [2/2] : t8MmbYSG", + "2 | Conviction : Locked1x", + "3 | Balance : EDG 0.000000000000001234", + "4 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Democracy : Delegate", + "1 | To [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "1 | To [2/2] : t8MmbYSG", + "2 | Conviction : Locked1x", + "3 | Balance : EDG 0.000000000000001234", + "4 | Chain : Edgeware", + "5 | Nonce : 0", + "6 | Tip : EDG 0.000000000000000987", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 250, + "name": "Democracy_Delegate", + "blob": "0a0b44934098651253342230b3e67b37bb55f934927ffadbd3d2025686e16269f75505d2040000000000000000000000000000d503048ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Delegate", + "1 | To [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "1 | To [2/2] : t8MmbYSG", + "2 | Conviction : Locked5x", + "3 | Balance : EDG 0.000000000000001234", + "4 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Democracy : Delegate", + "1 | To [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "1 | To [2/2] : t8MmbYSG", + "2 | Conviction : Locked5x", + "3 | Balance : EDG 0.000000000000001234", + "4 | Chain : Edgeware", + "5 | Nonce : 1", + "6 | Tip : EDG 0.000000000055555555", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 251, + "name": "Democracy_Undelegate", + "blob": "0a0cd5038d2433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Undelegate", + "1 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "1 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Democracy : Undelegate", + "1 | Chain : Edgeware", + "2 | Nonce : 2339", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 252, + "name": "Democracy_Undelegate", + "blob": "0a0cd503ae11030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Undelegate", + "1 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Democracy : Undelegate", + "1 | Chain : Edgeware", + "2 | Nonce : 50283", + "3 | Tip : EDG 0.00000000123456789", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 253, + "name": "Democracy_Undelegate", + "blob": "0a0cd503048ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Undelegate", + "1 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Democracy : Undelegate", + "1 | Chain : Edgeware", + "2 | Nonce : 1", + "3 | Tip : EDG 0.000000000055555555", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 254, + "name": "Democracy_Undelegate", + "blob": "0a0cd503ae11030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Undelegate", + "1 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "1 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Democracy : Undelegate", + "1 | Chain : Edgeware", + "2 | Nonce : 50283", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 255, + "name": "Democracy_Undelegate", + "blob": "0a0cd503ae1103008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Undelegate", + "1 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Democracy : Undelegate", + "1 | Chain : Edgeware", + "2 | Nonce : 50283", + "3 | Tip : EDG 0.000000000055555555", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 256, + "name": "Democracy_Clear_public_proposals", + "blob": "0a0dd5038d2433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Clear public proposals", + "1 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "1 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Democracy : Clear public proposals", + "1 | Chain : Edgeware", + "2 | Nonce : 2339", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 257, + "name": "Democracy_Clear_public_proposals", + "blob": "0a0dd5030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Clear public proposals", + "1 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "1 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Democracy : Clear public proposals", + "1 | Chain : Edgeware", + "2 | Nonce : 0", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 258, + "name": "Democracy_Clear_public_proposals", + "blob": "0a0dd503910133158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Clear public proposals", + "1 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "1 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Democracy : Clear public proposals", + "1 | Chain : Edgeware", + "2 | Nonce : 100", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 259, + "name": "Democracy_Clear_public_proposals", + "blob": "0a0dd503ae11030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Clear public proposals", + "1 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Democracy : Clear public proposals", + "1 | Chain : Edgeware", + "2 | Nonce : 50283", + "3 | Tip : EDG 0.00000000123456789", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 260, + "name": "Democracy_Clear_public_proposals", + "blob": "0a0dd503040b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Clear public proposals", + "1 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Democracy : Clear public proposals", + "1 | Chain : Edgeware", + "2 | Nonce : 1", + "3 | Tip : EDG 0.000005552342355555", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 261, + "name": "Democracy_Note_preimage", + "blob": "0a0e010293859bda4a5499d40a481edfd9cfc89083a367745d339128680aaacc9e7ce65fdf5a9bd46291155579ff30c15ad939f865f7393d41252acdcf1bb50d640b8c5e4090fc011ca336434068fa7ba9e5f4fa9150a58acd829b70ad36cd42ad37f2b649904d2e87240b3ca499f6ab8c7f836662bbb05e2b8866b83aba6e31ae0cd6dcd503910133158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Note preimage", + "1 | Encoded proposal [1/7] : 93859bda4a5499d40a481edfd9cfc89083a367", + "1 | Encoded proposal [2/7] : 745d339128680aaacc9e7ce65fdf5a9bd46291", + "1 | Encoded proposal [3/7] : 155579ff30c15ad939f865f7393d41252acdcf", + "1 | Encoded proposal [4/7] : 1bb50d640b8c5e4090fc011ca336434068fa7b", + "1 | Encoded proposal [5/7] : a9e5f4fa9150a58acd829b70ad36cd42ad37f2", + "1 | Encoded proposal [6/7] : b649904d2e87240b3ca499f6ab8c7f836662bb", + "1 | Encoded proposal [7/7] : b05e2b8866b83aba6e31ae0cd6dc", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Democracy : Note preimage", + "1 | Encoded proposal [1/7] : 93859bda4a5499d40a481edfd9cfc89083a367", + "1 | Encoded proposal [2/7] : 745d339128680aaacc9e7ce65fdf5a9bd46291", + "1 | Encoded proposal [3/7] : 155579ff30c15ad939f865f7393d41252acdcf", + "1 | Encoded proposal [4/7] : 1bb50d640b8c5e4090fc011ca336434068fa7b", + "1 | Encoded proposal [5/7] : a9e5f4fa9150a58acd829b70ad36cd42ad37f2", + "1 | Encoded proposal [6/7] : b649904d2e87240b3ca499f6ab8c7f836662bb", + "1 | Encoded proposal [7/7] : b05e2b8866b83aba6e31ae0cd6dc", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 262, + "name": "Democracy_Note_preimage", + "blob": "0a0e0101db1c923fb5421a898e03cf967a0fdb1aa102778aed44a7c825b8285dbed40845debcddc83951c406e630e86915d7b987ad86c87f0a5eda9a802cbcd59362d371d503ae11030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Note preimage", + "1 | Encoded proposal [1/4] : db1c923fb5421a898e03cf967a0fdb1aa10277", + "1 | Encoded proposal [2/4] : 8aed44a7c825b8285dbed40845debcddc83951", + "1 | Encoded proposal [3/4] : c406e630e86915d7b987ad86c87f0a5eda9a80", + "1 | Encoded proposal [4/4] : 2cbcd59362d371", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Democracy : Note preimage", + "1 | Encoded proposal [1/4] : db1c923fb5421a898e03cf967a0fdb1aa10277", + "1 | Encoded proposal [2/4] : 8aed44a7c825b8285dbed40845debcddc83951", + "1 | Encoded proposal [3/4] : c406e630e86915d7b987ad86c87f0a5eda9a80", + "1 | Encoded proposal [4/4] : 2cbcd59362d371", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 263, + "name": "Democracy_Note_preimage", + "blob": "0a0e80b129f97028bc632c89b3477f89aed40e46c89c1c4e9e70b4bde031ff79decf35d503ae1103000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Note preimage", + "1 | Encoded proposal [1/2] : b129f97028bc632c89b3477f89aed40e46c89c", + "1 | Encoded proposal [2/2] : 1c4e9e70b4bde031ff79decf35", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Democracy : Note preimage", + "1 | Encoded proposal [1/2] : b129f97028bc632c89b3477f89aed40e46c89c", + "1 | Encoded proposal [2/2] : 1c4e9e70b4bde031ff79decf35", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 264, + "name": "Democracy_Note_preimage", + "blob": "0a0e010123525d76fc307138b9eab30b4fd73b6db2d1f513b975f1b42b0a9119218f5fcad709998a4477f9c0db0808b4565009df96176097ef77f0ca246a3281e9c49147d503ae1103000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Note preimage", + "1 | Encoded proposal [1/4] : 23525d76fc307138b9eab30b4fd73b6db2d1f5", + "1 | Encoded proposal [2/4] : 13b975f1b42b0a9119218f5fcad709998a4477", + "1 | Encoded proposal [3/4] : f9c0db0808b4565009df96176097ef77f0ca24", + "1 | Encoded proposal [4/4] : 6a3281e9c49147", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Democracy : Note preimage", + "1 | Encoded proposal [1/4] : 23525d76fc307138b9eab30b4fd73b6db2d1f5", + "1 | Encoded proposal [2/4] : 13b975f1b42b0a9119218f5fcad709998a4477", + "1 | Encoded proposal [3/4] : f9c0db0808b4565009df96176097ef77f0ca24", + "1 | Encoded proposal [4/4] : 6a3281e9c49147", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 265, + "name": "Democracy_Note_preimage", + "blob": "0a0e80a2661c961cab79e32ca6e3044488373e41b21178eea66aa545ebd2fcf33dd35cd503006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Note preimage", + "1 | Encoded proposal [1/2] : a2661c961cab79e32ca6e3044488373e41b211", + "1 | Encoded proposal [2/2] : 78eea66aa545ebd2fcf33dd35c", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Democracy : Note preimage", + "1 | Encoded proposal [1/2] : a2661c961cab79e32ca6e3044488373e41b211", + "1 | Encoded proposal [2/2] : 78eea66aa545ebd2fcf33dd35c", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 266, + "name": "Democracy_Note_preimage_operational", + "blob": "0a0f010228a192d7318f784cb9231f2b018e5a9c99272f2d9c83192c08049ad2387b15cbfbb2b107147972a10bac4f598fb0cdc10b9f39151b2264c9bce34c800f4a2e4524607bbe88efe513d88bf1ae0d179d0ca0b798383e02e763d9c2d195bcafc2e1797e6a6ac8297b29b7ce0352255e389ce9f736b6dba8e7e1ef4671f96590f952d503ae1103008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Note preimage operational", + "1 | Encoded proposal [1/7] : 28a192d7318f784cb9231f2b018e5a9c99272f", + "1 | Encoded proposal [2/7] : 2d9c83192c08049ad2387b15cbfbb2b1071479", + "1 | Encoded proposal [3/7] : 72a10bac4f598fb0cdc10b9f39151b2264c9bc", + "1 | Encoded proposal [4/7] : e34c800f4a2e4524607bbe88efe513d88bf1ae", + "1 | Encoded proposal [5/7] : 0d179d0ca0b798383e02e763d9c2d195bcafc2", + "1 | Encoded proposal [6/7] : e1797e6a6ac8297b29b7ce0352255e389ce9f7", + "1 | Encoded proposal [7/7] : 36b6dba8e7e1ef4671f96590f952", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Democracy : Note preimage operational", + "1 | Encoded proposal [1/7] : 28a192d7318f784cb9231f2b018e5a9c99272f", + "1 | Encoded proposal [2/7] : 2d9c83192c08049ad2387b15cbfbb2b1071479", + "1 | Encoded proposal [3/7] : 72a10bac4f598fb0cdc10b9f39151b2264c9bc", + "1 | Encoded proposal [4/7] : e34c800f4a2e4524607bbe88efe513d88bf1ae", + "1 | Encoded proposal [5/7] : 0d179d0ca0b798383e02e763d9c2d195bcafc2", + "1 | Encoded proposal [6/7] : e1797e6a6ac8297b29b7ce0352255e389ce9f7", + "1 | Encoded proposal [7/7] : 36b6dba8e7e1ef4671f96590f952", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 267, + "name": "Democracy_Note_preimage_operational", + "blob": "0a0f80b129f97028bc632c89b3477f89aed40e46c89c1c4e9e70b4bde031ff79decf35d503008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Note preimage operational", + "1 | Encoded proposal [1/2] : b129f97028bc632c89b3477f89aed40e46c89c", + "1 | Encoded proposal [2/2] : 1c4e9e70b4bde031ff79decf35", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Democracy : Note preimage operational", + "1 | Encoded proposal [1/2] : b129f97028bc632c89b3477f89aed40e46c89c", + "1 | Encoded proposal [2/2] : 1c4e9e70b4bde031ff79decf35", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 268, + "name": "Democracy_Note_preimage_operational", + "blob": "0a0f010228a192d7318f784cb9231f2b018e5a9c99272f2d9c83192c08049ad2387b15cbfbb2b107147972a10bac4f598fb0cdc10b9f39151b2264c9bce34c800f4a2e4524607bbe88efe513d88bf1ae0d179d0ca0b798383e02e763d9c2d195bcafc2e1797e6a6ac8297b29b7ce0352255e389ce9f736b6dba8e7e1ef4671f96590f952d503048ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Note preimage operational", + "1 | Encoded proposal [1/7] : 28a192d7318f784cb9231f2b018e5a9c99272f", + "1 | Encoded proposal [2/7] : 2d9c83192c08049ad2387b15cbfbb2b1071479", + "1 | Encoded proposal [3/7] : 72a10bac4f598fb0cdc10b9f39151b2264c9bc", + "1 | Encoded proposal [4/7] : e34c800f4a2e4524607bbe88efe513d88bf1ae", + "1 | Encoded proposal [5/7] : 0d179d0ca0b798383e02e763d9c2d195bcafc2", + "1 | Encoded proposal [6/7] : e1797e6a6ac8297b29b7ce0352255e389ce9f7", + "1 | Encoded proposal [7/7] : 36b6dba8e7e1ef4671f96590f952", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Democracy : Note preimage operational", + "1 | Encoded proposal [1/7] : 28a192d7318f784cb9231f2b018e5a9c99272f", + "1 | Encoded proposal [2/7] : 2d9c83192c08049ad2387b15cbfbb2b1071479", + "1 | Encoded proposal [3/7] : 72a10bac4f598fb0cdc10b9f39151b2264c9bc", + "1 | Encoded proposal [4/7] : e34c800f4a2e4524607bbe88efe513d88bf1ae", + "1 | Encoded proposal [5/7] : 0d179d0ca0b798383e02e763d9c2d195bcafc2", + "1 | Encoded proposal [6/7] : e1797e6a6ac8297b29b7ce0352255e389ce9f7", + "1 | Encoded proposal [7/7] : 36b6dba8e7e1ef4671f96590f952", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 269, + "name": "Democracy_Note_preimage_operational", + "blob": "0a0f010228a192d7318f784cb9231f2b018e5a9c99272f2d9c83192c08049ad2387b15cbfbb2b107147972a10bac4f598fb0cdc10b9f39151b2264c9bce34c800f4a2e4524607bbe88efe513d88bf1ae0d179d0ca0b798383e02e763d9c2d195bcafc2e1797e6a6ac8297b29b7ce0352255e389ce9f736b6dba8e7e1ef4671f96590f952d5038d2433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Note preimage operational", + "1 | Encoded proposal [1/7] : 28a192d7318f784cb9231f2b018e5a9c99272f", + "1 | Encoded proposal [2/7] : 2d9c83192c08049ad2387b15cbfbb2b1071479", + "1 | Encoded proposal [3/7] : 72a10bac4f598fb0cdc10b9f39151b2264c9bc", + "1 | Encoded proposal [4/7] : e34c800f4a2e4524607bbe88efe513d88bf1ae", + "1 | Encoded proposal [5/7] : 0d179d0ca0b798383e02e763d9c2d195bcafc2", + "1 | Encoded proposal [6/7] : e1797e6a6ac8297b29b7ce0352255e389ce9f7", + "1 | Encoded proposal [7/7] : 36b6dba8e7e1ef4671f96590f952", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Democracy : Note preimage operational", + "1 | Encoded proposal [1/7] : 28a192d7318f784cb9231f2b018e5a9c99272f", + "1 | Encoded proposal [2/7] : 2d9c83192c08049ad2387b15cbfbb2b1071479", + "1 | Encoded proposal [3/7] : 72a10bac4f598fb0cdc10b9f39151b2264c9bc", + "1 | Encoded proposal [4/7] : e34c800f4a2e4524607bbe88efe513d88bf1ae", + "1 | Encoded proposal [5/7] : 0d179d0ca0b798383e02e763d9c2d195bcafc2", + "1 | Encoded proposal [6/7] : e1797e6a6ac8297b29b7ce0352255e389ce9f7", + "1 | Encoded proposal [7/7] : 36b6dba8e7e1ef4671f96590f952", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 270, + "name": "Democracy_Note_preimage_operational", + "blob": "0a0f010141a51011fdeea68203b5dfd69ee73bdc4a84956e9381945ac55b1010a497c4f4831dc70b020ab1f64d270fea3e248f2ce09877d8454394180e1e2fd3438129aad5030403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Note preimage operational", + "1 | Encoded proposal [1/4] : 41a51011fdeea68203b5dfd69ee73bdc4a8495", + "1 | Encoded proposal [2/4] : 6e9381945ac55b1010a497c4f4831dc70b020a", + "1 | Encoded proposal [3/4] : b1f64d270fea3e248f2ce09877d8454394180e", + "1 | Encoded proposal [4/4] : 1e2fd3438129aa", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Democracy : Note preimage operational", + "1 | Encoded proposal [1/4] : 41a51011fdeea68203b5dfd69ee73bdc4a8495", + "1 | Encoded proposal [2/4] : 6e9381945ac55b1010a497c4f4831dc70b020a", + "1 | Encoded proposal [3/4] : b1f64d270fea3e248f2ce09877d8454394180e", + "1 | Encoded proposal [4/4] : 1e2fd3438129aa", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 271, + "name": "Democracy_Note_imminent_preimage", + "blob": "0a10010293859bda4a5499d40a481edfd9cfc89083a367745d339128680aaacc9e7ce65fdf5a9bd46291155579ff30c15ad939f865f7393d41252acdcf1bb50d640b8c5e4090fc011ca336434068fa7ba9e5f4fa9150a58acd829b70ad36cd42ad37f2b649904d2e87240b3ca499f6ab8c7f836662bbb05e2b8866b83aba6e31ae0cd6dcd5038d24002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Note imminent preimage", + "1 | Encoded proposal [1/7] : 93859bda4a5499d40a481edfd9cfc89083a367", + "1 | Encoded proposal [2/7] : 745d339128680aaacc9e7ce65fdf5a9bd46291", + "1 | Encoded proposal [3/7] : 155579ff30c15ad939f865f7393d41252acdcf", + "1 | Encoded proposal [4/7] : 1bb50d640b8c5e4090fc011ca336434068fa7b", + "1 | Encoded proposal [5/7] : a9e5f4fa9150a58acd829b70ad36cd42ad37f2", + "1 | Encoded proposal [6/7] : b649904d2e87240b3ca499f6ab8c7f836662bb", + "1 | Encoded proposal [7/7] : b05e2b8866b83aba6e31ae0cd6dc" + ], + "output_expert": [ + "0 | Democracy : Note imminent preimage", + "1 | Encoded proposal [1/7] : 93859bda4a5499d40a481edfd9cfc89083a367", + "1 | Encoded proposal [2/7] : 745d339128680aaacc9e7ce65fdf5a9bd46291", + "1 | Encoded proposal [3/7] : 155579ff30c15ad939f865f7393d41252acdcf", + "1 | Encoded proposal [4/7] : 1bb50d640b8c5e4090fc011ca336434068fa7b", + "1 | Encoded proposal [5/7] : a9e5f4fa9150a58acd829b70ad36cd42ad37f2", + "1 | Encoded proposal [6/7] : b649904d2e87240b3ca499f6ab8c7f836662bb", + "1 | Encoded proposal [7/7] : b05e2b8866b83aba6e31ae0cd6dc", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 272, + "name": "Democracy_Note_imminent_preimage", + "blob": "0a100101db1c923fb5421a898e03cf967a0fdb1aa102778aed44a7c825b8285dbed40845debcddc83951c406e630e86915d7b987ad86c87f0a5eda9a802cbcd59362d371d50304002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Note imminent preimage", + "1 | Encoded proposal [1/4] : db1c923fb5421a898e03cf967a0fdb1aa10277", + "1 | Encoded proposal [2/4] : 8aed44a7c825b8285dbed40845debcddc83951", + "1 | Encoded proposal [3/4] : c406e630e86915d7b987ad86c87f0a5eda9a80", + "1 | Encoded proposal [4/4] : 2cbcd59362d371" + ], + "output_expert": [ + "0 | Democracy : Note imminent preimage", + "1 | Encoded proposal [1/4] : db1c923fb5421a898e03cf967a0fdb1aa10277", + "1 | Encoded proposal [2/4] : 8aed44a7c825b8285dbed40845debcddc83951", + "1 | Encoded proposal [3/4] : c406e630e86915d7b987ad86c87f0a5eda9a80", + "1 | Encoded proposal [4/4] : 2cbcd59362d371", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 273, + "name": "Democracy_Note_imminent_preimage", + "blob": "0a10010228a192d7318f784cb9231f2b018e5a9c99272f2d9c83192c08049ad2387b15cbfbb2b107147972a10bac4f598fb0cdc10b9f39151b2264c9bce34c800f4a2e4524607bbe88efe513d88bf1ae0d179d0ca0b798383e02e763d9c2d195bcafc2e1797e6a6ac8297b29b7ce0352255e389ce9f736b6dba8e7e1ef4671f96590f952d5038d246d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Note imminent preimage", + "1 | Encoded proposal [1/7] : 28a192d7318f784cb9231f2b018e5a9c99272f", + "1 | Encoded proposal [2/7] : 2d9c83192c08049ad2387b15cbfbb2b1071479", + "1 | Encoded proposal [3/7] : 72a10bac4f598fb0cdc10b9f39151b2264c9bc", + "1 | Encoded proposal [4/7] : e34c800f4a2e4524607bbe88efe513d88bf1ae", + "1 | Encoded proposal [5/7] : 0d179d0ca0b798383e02e763d9c2d195bcafc2", + "1 | Encoded proposal [6/7] : e1797e6a6ac8297b29b7ce0352255e389ce9f7", + "1 | Encoded proposal [7/7] : 36b6dba8e7e1ef4671f96590f952", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Democracy : Note imminent preimage", + "1 | Encoded proposal [1/7] : 28a192d7318f784cb9231f2b018e5a9c99272f", + "1 | Encoded proposal [2/7] : 2d9c83192c08049ad2387b15cbfbb2b1071479", + "1 | Encoded proposal [3/7] : 72a10bac4f598fb0cdc10b9f39151b2264c9bc", + "1 | Encoded proposal [4/7] : e34c800f4a2e4524607bbe88efe513d88bf1ae", + "1 | Encoded proposal [5/7] : 0d179d0ca0b798383e02e763d9c2d195bcafc2", + "1 | Encoded proposal [6/7] : e1797e6a6ac8297b29b7ce0352255e389ce9f7", + "1 | Encoded proposal [7/7] : 36b6dba8e7e1ef4671f96590f952", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 274, + "name": "Democracy_Note_imminent_preimage", + "blob": "0a10010293859bda4a5499d40a481edfd9cfc89083a367745d339128680aaacc9e7ce65fdf5a9bd46291155579ff30c15ad939f865f7393d41252acdcf1bb50d640b8c5e4090fc011ca336434068fa7ba9e5f4fa9150a58acd829b70ad36cd42ad37f2b649904d2e87240b3ca499f6ab8c7f836662bbb05e2b8866b83aba6e31ae0cd6dcd503ae110300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Note imminent preimage", + "1 | Encoded proposal [1/7] : 93859bda4a5499d40a481edfd9cfc89083a367", + "1 | Encoded proposal [2/7] : 745d339128680aaacc9e7ce65fdf5a9bd46291", + "1 | Encoded proposal [3/7] : 155579ff30c15ad939f865f7393d41252acdcf", + "1 | Encoded proposal [4/7] : 1bb50d640b8c5e4090fc011ca336434068fa7b", + "1 | Encoded proposal [5/7] : a9e5f4fa9150a58acd829b70ad36cd42ad37f2", + "1 | Encoded proposal [6/7] : b649904d2e87240b3ca499f6ab8c7f836662bb", + "1 | Encoded proposal [7/7] : b05e2b8866b83aba6e31ae0cd6dc" + ], + "output_expert": [ + "0 | Democracy : Note imminent preimage", + "1 | Encoded proposal [1/7] : 93859bda4a5499d40a481edfd9cfc89083a367", + "1 | Encoded proposal [2/7] : 745d339128680aaacc9e7ce65fdf5a9bd46291", + "1 | Encoded proposal [3/7] : 155579ff30c15ad939f865f7393d41252acdcf", + "1 | Encoded proposal [4/7] : 1bb50d640b8c5e4090fc011ca336434068fa7b", + "1 | Encoded proposal [5/7] : a9e5f4fa9150a58acd829b70ad36cd42ad37f2", + "1 | Encoded proposal [6/7] : b649904d2e87240b3ca499f6ab8c7f836662bb", + "1 | Encoded proposal [7/7] : b05e2b8866b83aba6e31ae0cd6dc", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 275, + "name": "Democracy_Note_imminent_preimage", + "blob": "0a10010141a51011fdeea68203b5dfd69ee73bdc4a84956e9381945ac55b1010a497c4f4831dc70b020ab1f64d270fea3e248f2ce09877d8454394180e1e2fd3438129aad503008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Note imminent preimage", + "1 | Encoded proposal [1/4] : 41a51011fdeea68203b5dfd69ee73bdc4a8495", + "1 | Encoded proposal [2/4] : 6e9381945ac55b1010a497c4f4831dc70b020a", + "1 | Encoded proposal [3/4] : b1f64d270fea3e248f2ce09877d8454394180e", + "1 | Encoded proposal [4/4] : 1e2fd3438129aa", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Democracy : Note imminent preimage", + "1 | Encoded proposal [1/4] : 41a51011fdeea68203b5dfd69ee73bdc4a8495", + "1 | Encoded proposal [2/4] : 6e9381945ac55b1010a497c4f4831dc70b020a", + "1 | Encoded proposal [3/4] : b1f64d270fea3e248f2ce09877d8454394180e", + "1 | Encoded proposal [4/4] : 1e2fd3438129aa", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 276, + "name": "Democracy_Note_imminent_preimage_operational", + "blob": "0a1180b129f97028bc632c89b3477f89aed40e46c89c1c4e9e70b4bde031ff79decf35d5038d246d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Note imminent preimage operational", + "1 | Encoded proposal [1/2] : b129f97028bc632c89b3477f89aed40e46c89c", + "1 | Encoded proposal [2/2] : 1c4e9e70b4bde031ff79decf35", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Democracy : Note imminent preimage operational", + "1 | Encoded proposal [1/2] : b129f97028bc632c89b3477f89aed40e46c89c", + "1 | Encoded proposal [2/2] : 1c4e9e70b4bde031ff79decf35", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 277, + "name": "Democracy_Note_imminent_preimage_operational", + "blob": "0a11010141a51011fdeea68203b5dfd69ee73bdc4a84956e9381945ac55b1010a497c4f4831dc70b020ab1f64d270fea3e248f2ce09877d8454394180e1e2fd3438129aad5039101002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Note imminent preimage operational", + "1 | Encoded proposal [1/4] : 41a51011fdeea68203b5dfd69ee73bdc4a8495", + "1 | Encoded proposal [2/4] : 6e9381945ac55b1010a497c4f4831dc70b020a", + "1 | Encoded proposal [3/4] : b1f64d270fea3e248f2ce09877d8454394180e", + "1 | Encoded proposal [4/4] : 1e2fd3438129aa" + ], + "output_expert": [ + "0 | Democracy : Note imminent preimage operational", + "1 | Encoded proposal [1/4] : 41a51011fdeea68203b5dfd69ee73bdc4a8495", + "1 | Encoded proposal [2/4] : 6e9381945ac55b1010a497c4f4831dc70b020a", + "1 | Encoded proposal [3/4] : b1f64d270fea3e248f2ce09877d8454394180e", + "1 | Encoded proposal [4/4] : 1e2fd3438129aa", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 278, + "name": "Democracy_Note_imminent_preimage_operational", + "blob": "0a110101db1c923fb5421a898e03cf967a0fdb1aa102778aed44a7c825b8285dbed40845debcddc83951c406e630e86915d7b987ad86c87f0a5eda9a802cbcd59362d371d503ae1103000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Note imminent preimage operational", + "1 | Encoded proposal [1/4] : db1c923fb5421a898e03cf967a0fdb1aa10277", + "1 | Encoded proposal [2/4] : 8aed44a7c825b8285dbed40845debcddc83951", + "1 | Encoded proposal [3/4] : c406e630e86915d7b987ad86c87f0a5eda9a80", + "1 | Encoded proposal [4/4] : 2cbcd59362d371", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Democracy : Note imminent preimage operational", + "1 | Encoded proposal [1/4] : db1c923fb5421a898e03cf967a0fdb1aa10277", + "1 | Encoded proposal [2/4] : 8aed44a7c825b8285dbed40845debcddc83951", + "1 | Encoded proposal [3/4] : c406e630e86915d7b987ad86c87f0a5eda9a80", + "1 | Encoded proposal [4/4] : 2cbcd59362d371", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 279, + "name": "Democracy_Note_imminent_preimage_operational", + "blob": "0a110101db1c923fb5421a898e03cf967a0fdb1aa102778aed44a7c825b8285dbed40845debcddc83951c406e630e86915d7b987ad86c87f0a5eda9a802cbcd59362d371d50391010b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Note imminent preimage operational", + "1 | Encoded proposal [1/4] : db1c923fb5421a898e03cf967a0fdb1aa10277", + "1 | Encoded proposal [2/4] : 8aed44a7c825b8285dbed40845debcddc83951", + "1 | Encoded proposal [3/4] : c406e630e86915d7b987ad86c87f0a5eda9a80", + "1 | Encoded proposal [4/4] : 2cbcd59362d371", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Democracy : Note imminent preimage operational", + "1 | Encoded proposal [1/4] : db1c923fb5421a898e03cf967a0fdb1aa10277", + "1 | Encoded proposal [2/4] : 8aed44a7c825b8285dbed40845debcddc83951", + "1 | Encoded proposal [3/4] : c406e630e86915d7b987ad86c87f0a5eda9a80", + "1 | Encoded proposal [4/4] : 2cbcd59362d371", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 280, + "name": "Democracy_Note_imminent_preimage_operational", + "blob": "0a11010293859bda4a5499d40a481edfd9cfc89083a367745d339128680aaacc9e7ce65fdf5a9bd46291155579ff30c15ad939f865f7393d41252acdcf1bb50d640b8c5e4090fc011ca336434068fa7ba9e5f4fa9150a58acd829b70ad36cd42ad37f2b649904d2e87240b3ca499f6ab8c7f836662bbb05e2b8866b83aba6e31ae0cd6dcd5030403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Note imminent preimage operational", + "1 | Encoded proposal [1/7] : 93859bda4a5499d40a481edfd9cfc89083a367", + "1 | Encoded proposal [2/7] : 745d339128680aaacc9e7ce65fdf5a9bd46291", + "1 | Encoded proposal [3/7] : 155579ff30c15ad939f865f7393d41252acdcf", + "1 | Encoded proposal [4/7] : 1bb50d640b8c5e4090fc011ca336434068fa7b", + "1 | Encoded proposal [5/7] : a9e5f4fa9150a58acd829b70ad36cd42ad37f2", + "1 | Encoded proposal [6/7] : b649904d2e87240b3ca499f6ab8c7f836662bb", + "1 | Encoded proposal [7/7] : b05e2b8866b83aba6e31ae0cd6dc", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Democracy : Note imminent preimage operational", + "1 | Encoded proposal [1/7] : 93859bda4a5499d40a481edfd9cfc89083a367", + "1 | Encoded proposal [2/7] : 745d339128680aaacc9e7ce65fdf5a9bd46291", + "1 | Encoded proposal [3/7] : 155579ff30c15ad939f865f7393d41252acdcf", + "1 | Encoded proposal [4/7] : 1bb50d640b8c5e4090fc011ca336434068fa7b", + "1 | Encoded proposal [5/7] : a9e5f4fa9150a58acd829b70ad36cd42ad37f2", + "1 | Encoded proposal [6/7] : b649904d2e87240b3ca499f6ab8c7f836662bb", + "1 | Encoded proposal [7/7] : b05e2b8866b83aba6e31ae0cd6dc", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 281, + "name": "Democracy_Reap_preimage", + "blob": "0a120000000000000000000000000000000000000000000000000000000000000000fd0fd5030433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Reap preimage", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Proposal len upper bound : 1023", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Democracy : Reap preimage", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Proposal len upper bound : 1023", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "5 | Tip [2/2] : 56789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 282, + "name": "Democracy_Reap_preimage", + "blob": "0a1200000000000000000000000000000000000000000000000000000000000000009504d5038d240b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Reap preimage", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Proposal len upper bound : 293", + "3 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Democracy : Reap preimage", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Proposal len upper bound : 293", + "3 | Chain : Edgeware", + "4 | Nonce : 2339", + "5 | Tip : EDG 0.000005552342355555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 283, + "name": "Democracy_Reap_preimage", + "blob": "0a12000000000000000000000000000000000000000000000000000000000000000004d503ae110300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Reap preimage", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Proposal len upper bound : 1" + ], + "output_expert": [ + "0 | Democracy : Reap preimage", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Proposal len upper bound : 1", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 284, + "name": "Democracy_Reap_preimage", + "blob": "0a12000000000000000000000000000000000000000000000000000000000000000004d5039101002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Reap preimage", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Proposal len upper bound : 1" + ], + "output_expert": [ + "0 | Democracy : Reap preimage", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Proposal len upper bound : 1", + "3 | Chain : Edgeware", + "4 | Nonce : 100", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 285, + "name": "Democracy_Reap_preimage", + "blob": "0a12000000000000000000000000000000000000000000000000000000000000000004d503910103d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Reap preimage", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Proposal len upper bound : 1", + "3 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Democracy : Reap preimage", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Proposal len upper bound : 1", + "3 | Chain : Edgeware", + "4 | Nonce : 100", + "5 | Tip : EDG 0.00000000123456789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 286, + "name": "Democracy_Unlock", + "blob": "0a1344934098651253342230b3e67b37bb55f934927ffadbd3d2025686e16269f755d5030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Unlock", + "1 | Target [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "1 | Target [2/2] : t8MmbYSG", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Democracy : Unlock", + "1 | Target [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "1 | Target [2/2] : t8MmbYSG", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 287, + "name": "Democracy_Unlock", + "blob": "0a130a020856a01aa594a4a77167f74b11e13dbbbc934d8c942eca62569d4c58390ed503006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Unlock", + "1 | Target [1/2] : hjjtjpF2ZP5MQ71c5PmPgSVTC3Jv6WL2mK4xcEx", + "1 | Target [2/2] : gUKcbvMx", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Democracy : Unlock", + "1 | Target [1/2] : hjjtjpF2ZP5MQ71c5PmPgSVTC3Jv6WL2mK4xcEx", + "1 | Target [2/2] : gUKcbvMx", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 288, + "name": "Democracy_Unlock", + "blob": "0a1344934098651253342230b3e67b37bb55f934927ffadbd3d2025686e16269f755d5038d246d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Unlock", + "1 | Target [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "1 | Target [2/2] : t8MmbYSG", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Democracy : Unlock", + "1 | Target [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "1 | Target [2/2] : t8MmbYSG", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 289, + "name": "Democracy_Unlock", + "blob": "0a130a020856a01aa594a4a77167f74b11e13dbbbc934d8c942eca62569d4c58390ed5038d240b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Unlock", + "1 | Target [1/2] : hjjtjpF2ZP5MQ71c5PmPgSVTC3Jv6WL2mK4xcEx", + "1 | Target [2/2] : gUKcbvMx", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Democracy : Unlock", + "1 | Target [1/2] : hjjtjpF2ZP5MQ71c5PmPgSVTC3Jv6WL2mK4xcEx", + "1 | Target [2/2] : gUKcbvMx", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 290, + "name": "Democracy_Unlock", + "blob": "0a13ea33a975e8a0e3908fad9be67b6927f1b5d2fdee682c9a21e59b31fb76804b42d503ae1103006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Unlock", + "1 | Target [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "1 | Target [2/2] : 8kQ2Cbj7", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Democracy : Unlock", + "1 | Target [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "1 | Target [2/2] : 8kQ2Cbj7", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 291, + "name": "Democracy_Remove_vote", + "blob": "0a1400000000d503910103d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Remove vote", + "1 | Index : 0", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Democracy : Remove vote", + "1 | Index : 0", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 292, + "name": "Democracy_Remove_vote", + "blob": "0a1400000000d503008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Remove vote", + "1 | Index : 0", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Democracy : Remove vote", + "1 | Index : 0", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 293, + "name": "Democracy_Remove_vote", + "blob": "0a1400000000d5030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Remove vote", + "1 | Index : 0", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Democracy : Remove vote", + "1 | Index : 0", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 294, + "name": "Democracy_Remove_vote", + "blob": "0a14b3e30100d503040b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Remove vote", + "1 | Index : 123827", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Democracy : Remove vote", + "1 | Index : 123827", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 295, + "name": "Democracy_Remove_vote", + "blob": "0a1400000000d5038d2403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Remove vote", + "1 | Index : 0", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Democracy : Remove vote", + "1 | Index : 0", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 296, + "name": "Democracy_Remove_other_vote", + "blob": "0a150a020856a01aa594a4a77167f74b11e13dbbbc934d8c942eca62569d4c58390e7b000000d5030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Remove other vote", + "1 | Target [1/2] : hjjtjpF2ZP5MQ71c5PmPgSVTC3Jv6WL2mK4xcEx", + "1 | Target [2/2] : gUKcbvMx", + "2 | Index : 123", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Democracy : Remove other vote", + "1 | Target [1/2] : hjjtjpF2ZP5MQ71c5PmPgSVTC3Jv6WL2mK4xcEx", + "1 | Target [2/2] : gUKcbvMx", + "2 | Index : 123", + "3 | Chain : Edgeware", + "4 | Nonce : 0", + "5 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "5 | Tip [2/2] : 56789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 297, + "name": "Democracy_Remove_other_vote", + "blob": "0a158647fb36b1a57550a3a9ce1810aece028bccdd32d63b89731bc178f750a6d9677b000000d5038d2403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Remove other vote", + "1 | Target [1/2] : kYgcKBprAL2wXJey222eVRzgpHDtat891TyqH15", + "1 | Target [2/2] : w9pMuDEH", + "2 | Index : 123", + "3 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Democracy : Remove other vote", + "1 | Target [1/2] : kYgcKBprAL2wXJey222eVRzgpHDtat891TyqH15", + "1 | Target [2/2] : w9pMuDEH", + "2 | Index : 123", + "3 | Chain : Edgeware", + "4 | Nonce : 2339", + "5 | Tip : EDG 0.00000000123456789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 298, + "name": "Democracy_Remove_other_vote", + "blob": "0a15ea33a975e8a0e3908fad9be67b6927f1b5d2fdee682c9a21e59b31fb76804b4225010000d50304002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Remove other vote", + "1 | Target [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "1 | Target [2/2] : 8kQ2Cbj7", + "2 | Index : 293" + ], + "output_expert": [ + "0 | Democracy : Remove other vote", + "1 | Target [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "1 | Target [2/2] : 8kQ2Cbj7", + "2 | Index : 293", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 299, + "name": "Democracy_Remove_other_vote", + "blob": "0a1544934098651253342230b3e67b37bb55f934927ffadbd3d2025686e16269f75500000000d503ae1103006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Remove other vote", + "1 | Target [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "1 | Target [2/2] : t8MmbYSG", + "2 | Index : 0", + "3 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Democracy : Remove other vote", + "1 | Target [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "1 | Target [2/2] : t8MmbYSG", + "2 | Index : 0", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Tip : EDG 0.000000000000000987", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 300, + "name": "Democracy_Remove_other_vote", + "blob": "0a15ea33a975e8a0e3908fad9be67b6927f1b5d2fdee682c9a21e59b31fb76804b42ac350000d5030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Remove other vote", + "1 | Target [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "1 | Target [2/2] : 8kQ2Cbj7", + "2 | Index : 13740", + "3 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Democracy : Remove other vote", + "1 | Target [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "1 | Target [2/2] : 8kQ2Cbj7", + "2 | Index : 13740", + "3 | Chain : Edgeware", + "4 | Nonce : 0", + "5 | Tip : EDG 0.00000000123456789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 301, + "name": "Democracy_Enact_proposal", + "blob": "0a1600000000000000000000000000000000000000000000000000000000000000007b000000d503046d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Enact proposal", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Index : 123", + "3 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Democracy : Enact proposal", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Index : 123", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Tip : EDG 0.000000000000000987", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 302, + "name": "Democracy_Enact_proposal", + "blob": "0a160000000000000000000000000000000000000000000000000000000000000000b3e30100d5030403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Enact proposal", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Index : 123827", + "3 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Democracy : Enact proposal", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Index : 123827", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Tip : EDG 0.00000000123456789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 303, + "name": "Democracy_Enact_proposal", + "blob": "0a16000000000000000000000000000000000000000000000000000000000000000001000000d5039101002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Enact proposal", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Index : 1" + ], + "output_expert": [ + "0 | Democracy : Enact proposal", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Index : 1", + "3 | Chain : Edgeware", + "4 | Nonce : 100", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 304, + "name": "Democracy_Enact_proposal", + "blob": "0a16000000000000000000000000000000000000000000000000000000000000000025010000d503048ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Enact proposal", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Index : 293", + "3 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Democracy : Enact proposal", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Index : 293", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Tip : EDG 0.000000000055555555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 305, + "name": "Democracy_Enact_proposal", + "blob": "0a16000000000000000000000000000000000000000000000000000000000000000001000000d5038d246d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Enact proposal", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Index : 1", + "3 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Democracy : Enact proposal", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Index : 1", + "3 | Chain : Edgeware", + "4 | Nonce : 2339", + "5 | Tip : EDG 0.000000000000000987", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 306, + "name": "Democracy_Cancel_proposal", + "blob": "0a1800d503ae110300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Cancel proposal", + "1 | Prop index : 0" + ], + "output_expert": [ + "0 | Democracy : Cancel proposal", + "1 | Prop index : 0", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 307, + "name": "Democracy_Cancel_proposal", + "blob": "0a1800d50300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Cancel proposal", + "1 | Prop index : 0" + ], + "output_expert": [ + "0 | Democracy : Cancel proposal", + "1 | Prop index : 0", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 308, + "name": "Democracy_Cancel_proposal", + "blob": "0a185256b600d50300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Cancel proposal", + "1 | Prop index : 2987412" + ], + "output_expert": [ + "0 | Democracy : Cancel proposal", + "1 | Prop index : 2987412", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 309, + "name": "Democracy_Cancel_proposal", + "blob": "0a1800d503ae11030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Cancel proposal", + "1 | Prop index : 0", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Democracy : Cancel proposal", + "1 | Prop index : 0", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 310, + "name": "Democracy_Cancel_proposal", + "blob": "0a186d0fd50300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Cancel proposal", + "1 | Prop index : 987" + ], + "output_expert": [ + "0 | Democracy : Cancel proposal", + "1 | Prop index : 987", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 311, + "name": "Council_Set_members", + "blob": "0b000001f4eafe05183f84a4aaceefa8ff4e47c807be7fb6e7549fafebd2bb860ef14a6900000000d503ae1103006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Council : Set members", + "1 | New members : ", + "2 | Prime [1/2] : o3kJS2SwwgTKZUvJUybpRgBuVoBS8MPzeBTHk1w", + "2 | Prime [2/2] : t3RmhPmG", + "3 | Old count : 0", + "4 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Council : Set members", + "1 | New members : ", + "2 | Prime [1/2] : o3kJS2SwwgTKZUvJUybpRgBuVoBS8MPzeBTHk1w", + "2 | Prime [2/2] : t3RmhPmG", + "3 | Old count : 0", + "4 | Chain : Edgeware", + "5 | Nonce : 50283", + "6 | Tip : EDG 0.000000000000000987", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 312, + "name": "Council_Set_members", + "blob": "0b0010966593a5b95c503af456ed6db6e07e6693f0d0ea126f226d8d427c62c16aae51022db6a5a5aa9648185cff44d870e8cac401950e8f74444cc6b0fe0aa5eb166b76741539dd26d106f1685525ee68233e84ffc97000c4f51c5f2e44bede5ad76da4a73d8f501f2be6183598dbe16fb78f39c12ddac1ac895ce563763996db8b4501f4eafe05183f84a4aaceefa8ff4e47c807be7fb6e7549fafebd2bb860ef14a6909000000d503040b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Council : Set members", + "1 | New members [1/8] : kupAfkpwNyFXzyxG1rkaJwXoGbULTdiq3Wspu8W", + "1 | New members [2/8] : gUFfWeFX", + "1 | New members [3/8] : hZUV8Bxmk1kwh41uSuZsHEVeevXG4N77er92Xbk", + "1 | New members [4/8] : aEULP2yJ", + "1 | New members [5/8] : kBvwjKT1kJZLvVhbYio4VeDhmX1KSJ1VjJwrV1a", + "1 | New members [6/8] : 4SUGtj41", + "1 | New members [7/8] : mEWLunjTtgnZiq9Vs5yMnNF8rGXryHyRy4PYoE9", + "1 | New members [8/8] : LhPcYRK5", + "2 | Prime [1/2] : o3kJS2SwwgTKZUvJUybpRgBuVoBS8MPzeBTHk1w", + "2 | Prime [2/2] : t3RmhPmG", + "3 | Old count : 9", + "4 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Council : Set members", + "1 | New members [1/8] : kupAfkpwNyFXzyxG1rkaJwXoGbULTdiq3Wspu8W", + "1 | New members [2/8] : gUFfWeFX", + "1 | New members [3/8] : hZUV8Bxmk1kwh41uSuZsHEVeevXG4N77er92Xbk", + "1 | New members [4/8] : aEULP2yJ", + "1 | New members [5/8] : kBvwjKT1kJZLvVhbYio4VeDhmX1KSJ1VjJwrV1a", + "1 | New members [6/8] : 4SUGtj41", + "1 | New members [7/8] : mEWLunjTtgnZiq9Vs5yMnNF8rGXryHyRy4PYoE9", + "1 | New members [8/8] : LhPcYRK5", + "2 | Prime [1/2] : o3kJS2SwwgTKZUvJUybpRgBuVoBS8MPzeBTHk1w", + "2 | Prime [2/2] : t3RmhPmG", + "3 | Old count : 9", + "4 | Chain : Edgeware", + "5 | Nonce : 1", + "6 | Tip : EDG 0.000005552342355555", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 313, + "name": "Council_Set_members", + "blob": "0b000cbef0713804fd4001f7ccd64b4987a45218b400e4bf88c03097e5a74f07f5655c9ee95d784af4c6922d33005c35524b0f74a253e5245381e1598fd378411ecf0136dac463c160d13089a584d74aebe26502f79bb0b0db3d1ed5479488aa057b7901f4eafe05183f84a4aaceefa8ff4e47c807be7fb6e7549fafebd2bb860ef14a6907000000d5038d246d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Council : Set members", + "1 | New members [1/6] : mpyLMkgKQgXBe4ViZY58QAc7ipyKNzAvg7NLvVn", + "1 | New members [2/6] : DkGfZPkV", + "1 | New members [3/6] : m6yhYkbfx1LstXD8oL6Xx4uFnqGCRRChv829umo", + "1 | New members [4/6] : HwqciUSK", + "1 | New members [5/6] : ikYPC1JGrgQub2M4GsjEkg9ixho6fuckcFiLbMc", + "1 | New members [6/6] : cGa1pMoV", + "2 | Prime [1/2] : o3kJS2SwwgTKZUvJUybpRgBuVoBS8MPzeBTHk1w", + "2 | Prime [2/2] : t3RmhPmG", + "3 | Old count : 7", + "4 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Council : Set members", + "1 | New members [1/6] : mpyLMkgKQgXBe4ViZY58QAc7ipyKNzAvg7NLvVn", + "1 | New members [2/6] : DkGfZPkV", + "1 | New members [3/6] : m6yhYkbfx1LstXD8oL6Xx4uFnqGCRRChv829umo", + "1 | New members [4/6] : HwqciUSK", + "1 | New members [5/6] : ikYPC1JGrgQub2M4GsjEkg9ixho6fuckcFiLbMc", + "1 | New members [6/6] : cGa1pMoV", + "2 | Prime [1/2] : o3kJS2SwwgTKZUvJUybpRgBuVoBS8MPzeBTHk1w", + "2 | Prime [2/2] : t3RmhPmG", + "3 | Old count : 7", + "4 | Chain : Edgeware", + "5 | Nonce : 2339", + "6 | Tip : EDG 0.000000000000000987", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 314, + "name": "Council_Set_members", + "blob": "0b00185476d88b575e30065d3a4fbc9fdcfd04ed6b192fa0e24e6cd9d00c89b4ee015d2cc870e49072e43a44fa4511ca666a868c1f4ad35fa7ab0d51f281fabf2eed243017b323063d9730e7a852052e836ac97f1b14fe8f9697dd591ffe52422bd53a908e4ec78281352383533d15002d349f6e24fd74dc8aedfdb3851e5637694903feae6cb1f239ad2855d84a6b208ea064baf3ea1e13a7ad4ae2e42e688aa61a2136e007004038b3aa2994249ddfa3c243af17e152625470ad036ca2b62c46f35901f4eafe05183f84a4aaceefa8ff4e47c807be7fb6e7549fafebd2bb860ef14a6909000000d50391010b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Council : Set members", + "1 | New members [1/12] : jRN8uXpBaBi2SLamxmQe5hxvzB9cWB9aErQG9HW", + "1 | New members [2/12] : xxKJaDK6", + "1 | New members [3/12] : iXLTfXVfv6coWMegVy7vnp9Fg5ri6h64TYi347R", + "1 | New members [4/12] : FR7xC45B", + "1 | New members [5/12] : ibg9bPZgGRUp2gVvM28jVyjqcmccP734wX2C7Ja", + "1 | New members [6/12] : m3PCgKQt", + "1 | New members [7/12] : kn9ynQVL7dYcQjxtVZb7SveitRGn75ER6z5Vqyy", + "1 | New members [8/12] : JXb4ktKn", + "1 | New members [9/12] : oGYneaMxnqFTPmAaVGHp823u5ydYtjH3MuUQRdX", + "1 | New members [10/12] : b78HSF6F", + "1 | New members [11/12] : ikZwpcTwFCrydviNz1gDmMZj7kd3oyijEjCkrmk", + "1 | New members [12/12] : jyYDY4eC", + "2 | Prime [1/2] : o3kJS2SwwgTKZUvJUybpRgBuVoBS8MPzeBTHk1w", + "2 | Prime [2/2] : t3RmhPmG", + "3 | Old count : 9", + "4 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Council : Set members", + "1 | New members [1/12] : jRN8uXpBaBi2SLamxmQe5hxvzB9cWB9aErQG9HW", + "1 | New members [2/12] : xxKJaDK6", + "1 | New members [3/12] : iXLTfXVfv6coWMegVy7vnp9Fg5ri6h64TYi347R", + "1 | New members [4/12] : FR7xC45B", + "1 | New members [5/12] : ibg9bPZgGRUp2gVvM28jVyjqcmccP734wX2C7Ja", + "1 | New members [6/12] : m3PCgKQt", + "1 | New members [7/12] : kn9ynQVL7dYcQjxtVZb7SveitRGn75ER6z5Vqyy", + "1 | New members [8/12] : JXb4ktKn", + "1 | New members [9/12] : oGYneaMxnqFTPmAaVGHp823u5ydYtjH3MuUQRdX", + "1 | New members [10/12] : b78HSF6F", + "1 | New members [11/12] : ikZwpcTwFCrydviNz1gDmMZj7kd3oyijEjCkrmk", + "1 | New members [12/12] : jyYDY4eC", + "2 | Prime [1/2] : o3kJS2SwwgTKZUvJUybpRgBuVoBS8MPzeBTHk1w", + "2 | Prime [2/2] : t3RmhPmG", + "3 | Old count : 9", + "4 | Chain : Edgeware", + "5 | Nonce : 100", + "6 | Tip : EDG 0.000005552342355555", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 315, + "name": "Council_Set_members", + "blob": "0b000001560acd2bffe34ab130704d8c4bf7e30bdbd35ef59c779c7c466084787522470b00000000d5030433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Council : Set members", + "1 | New members : ", + "2 | Prime [1/2] : jTS8u6jzyZQHu9HRmMhPyBJZaEZyXFawW67Tybm", + "2 | Prime [2/2] : g2qu9LbV", + "3 | Old count : 0", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Council : Set members", + "1 | New members : ", + "2 | Prime [1/2] : jTS8u6jzyZQHu9HRmMhPyBJZaEZyXFawW67Tybm", + "2 | Prime [2/2] : g2qu9LbV", + "3 | Old count : 0", + "4 | Chain : Edgeware", + "5 | Nonce : 1", + "6 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "6 | Tip [2/2] : 56789", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 316, + "name": "Council_Vote", + "blob": "0b03000000000000000000000000000000000000000000000000000000000000000025c100d503048ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Council : Vote", + "1 | Proposal [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal [2/2] : 00000000000000000000000000", + "2 | Index : 12361", + "3 | Approve : False", + "4 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Council : Vote", + "1 | Proposal [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal [2/2] : 00000000000000000000000000", + "2 | Index : 12361", + "3 | Approve : False", + "4 | Chain : Edgeware", + "5 | Nonce : 1", + "6 | Tip : EDG 0.000000000055555555", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 317, + "name": "Council_Vote", + "blob": "0b0300000000000000000000000000000000000000000000000000000000000000000001d50391010b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Council : Vote", + "1 | Proposal [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal [2/2] : 00000000000000000000000000", + "2 | Index : 0", + "3 | Approve : True", + "4 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Council : Vote", + "1 | Proposal [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal [2/2] : 00000000000000000000000000", + "2 | Index : 0", + "3 | Approve : True", + "4 | Chain : Edgeware", + "5 | Nonce : 100", + "6 | Tip : EDG 0.000005552342355555", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 318, + "name": "Council_Vote", + "blob": "0b0300000000000000000000000000000000000000000000000000000000000000006d0f00d503ae11030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Council : Vote", + "1 | Proposal [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal [2/2] : 00000000000000000000000000", + "2 | Index : 987", + "3 | Approve : False", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Council : Vote", + "1 | Proposal [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal [2/2] : 00000000000000000000000000", + "2 | Index : 987", + "3 | Approve : False", + "4 | Chain : Edgeware", + "5 | Nonce : 50283", + "6 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "6 | Tip [2/2] : 56789", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 319, + "name": "Council_Vote", + "blob": "0b03000000000000000000000000000000000000000000000000000000000000000025c100d50304002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Council : Vote", + "1 | Proposal [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal [2/2] : 00000000000000000000000000", + "2 | Index : 12361", + "3 | Approve : False" + ], + "output_expert": [ + "0 | Council : Vote", + "1 | Proposal [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal [2/2] : 00000000000000000000000000", + "2 | Index : 12361", + "3 | Approve : False", + "4 | Chain : Edgeware", + "5 | Nonce : 1", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 320, + "name": "Council_Vote", + "blob": "0b0300000000000000000000000000000000000000000000000000000000000000000000d503ae1103000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Council : Vote", + "1 | Proposal [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal [2/2] : 00000000000000000000000000", + "2 | Index : 0", + "3 | Approve : False", + "4 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Council : Vote", + "1 | Proposal [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal [2/2] : 00000000000000000000000000", + "2 | Index : 0", + "3 | Approve : False", + "4 | Chain : Edgeware", + "5 | Nonce : 50283", + "6 | Tip : EDG 0.000005552342355555", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 321, + "name": "Council_Close", + "blob": "0b0400000000000000000000000000000000000000000000000000000000000000006d0f649504d50304002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Council : Close", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Index : 987", + "3 | Proposal weight bound : 25", + "4 | Length bound : 293" + ], + "output_expert": [ + "0 | Council : Close", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Index : 987", + "3 | Proposal weight bound : 25", + "4 | Length bound : 293", + "5 | Chain : Edgeware", + "6 | Nonce : 1", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 322, + "name": "Council_Close", + "blob": "0b0400000000000000000000000000000000000000000000000000000000000000000064fd0fd503910103d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Council : Close", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Index : 0", + "3 | Proposal weight bound : 25", + "4 | Length bound : 1023", + "5 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Council : Close", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Index : 0", + "3 | Proposal weight bound : 25", + "4 | Length bound : 1023", + "5 | Chain : Edgeware", + "6 | Nonce : 100", + "7 | Tip : EDG 0.00000000123456789", + "8 | Era Phase : 61", + "9 | Era Period : 64", + "10 | Block [1/2] : 00000000000000000000000000000000000000", + "10 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 323, + "name": "Council_Close", + "blob": "0b0400000000000000000000000000000000000000000000000000000000000000006d0f64ed01d5030433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Council : Close", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Index : 987", + "3 | Proposal weight bound : 25", + "4 | Length bound : 123", + "5 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "5 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Council : Close", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Index : 987", + "3 | Proposal weight bound : 25", + "4 | Length bound : 123", + "5 | Chain : Edgeware", + "6 | Nonce : 1", + "7 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "7 | Tip [2/2] : 56789", + "8 | Era Phase : 61", + "9 | Era Period : 64", + "10 | Block [1/2] : 00000000000000000000000000000000000000", + "10 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 324, + "name": "Council_Close", + "blob": "0b040000000000000000000000000000000000000000000000000000000000000000ce8307004d01fd0fd503ae11030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Council : Close", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Index : 123123", + "3 | Proposal weight bound : 83", + "4 | Length bound : 1023", + "5 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Council : Close", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Index : 123123", + "3 | Proposal weight bound : 83", + "4 | Length bound : 1023", + "5 | Chain : Edgeware", + "6 | Nonce : 50283", + "7 | Tip : EDG 0.00000000123456789", + "8 | Era Phase : 61", + "9 | Era Period : 64", + "10 | Block [1/2] : 00000000000000000000000000000000000000", + "10 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 325, + "name": "Council_Close", + "blob": "0b04000000000000000000000000000000000000000000000000000000000000000025c164fd0fd50391010b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Council : Close", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Index : 12361", + "3 | Proposal weight bound : 25", + "4 | Length bound : 1023", + "5 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Council : Close", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Index : 12361", + "3 | Proposal weight bound : 25", + "4 | Length bound : 1023", + "5 | Chain : Edgeware", + "6 | Nonce : 100", + "7 | Tip : EDG 0.000005552342355555", + "8 | Era Phase : 61", + "9 | Era Period : 64", + "10 | Block [1/2] : 00000000000000000000000000000000000000", + "10 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 326, + "name": "Council_Disapprove_proposal", + "blob": "0b050000000000000000000000000000000000000000000000000000000000000000d503040b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Council : Disapprove proposal", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Council : Disapprove proposal", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 327, + "name": "Council_Disapprove_proposal", + "blob": "0b050000000000000000000000000000000000000000000000000000000000000000d5030403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Council : Disapprove proposal", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Council : Disapprove proposal", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 328, + "name": "Council_Disapprove_proposal", + "blob": "0b050000000000000000000000000000000000000000000000000000000000000000d503008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Council : Disapprove proposal", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Council : Disapprove proposal", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 329, + "name": "Council_Disapprove_proposal", + "blob": "0b050000000000000000000000000000000000000000000000000000000000000000d5030433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Council : Disapprove proposal", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Council : Disapprove proposal", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 330, + "name": "Council_Disapprove_proposal", + "blob": "0b050000000000000000000000000000000000000000000000000000000000000000d50391016d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Council : Disapprove proposal", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Council : Disapprove proposal", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 331, + "name": "Elections_Vote", + "blob": "0c0004444c1e110606cd3355dedaddd1c3b8e3033bfe6210bc0c6084eb93792f70294003d2029649d503048ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Elections : Vote", + "1 | Votes [1/2] : j4AgGx9f4xHjnML7UmdiQWhyXi3bvQpEh9JNzXM", + "1 | Votes [2/2] : DYKcM1mA", + "2 | Amount : EDG 0.00000000123456789", + "3 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Elections : Vote", + "1 | Votes [1/2] : j4AgGx9f4xHjnML7UmdiQWhyXi3bvQpEh9JNzXM", + "1 | Votes [2/2] : DYKcM1mA", + "2 | Amount : EDG 0.00000000123456789", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Tip : EDG 0.000000000055555555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 332, + "name": "Elections_Vote", + "blob": "0c00209a3501c8792fdc06ab541aaad4f053e91b7d6ed23f6521e8704c86e35e8c790a3cfc3b66e5a78a8ab41ed81bacb64a7007280f00d069eb43a20e6b180633141d564fca20c1d43335cde7cd0e59ba668706a293023d3d4d37f0c0ea4ea39edd1940bdefffcca6b046533f89cea47671aff1c5b5c311f94ddec641174931bdd53000127c38d570c7e4ca3d2dd9fcc150ce7dc1880edfdb634d10052c01f3777b73f61fe8a42cbf5bc295a21b929ee051393a8e46738a0d6f40ab5a3bbe8b04a6783ce3b773f3d4d4c8ef30a0b952e2b6a767d1499d50b8cba01a1feb6d3bb05159cea1874b7a56fd514c133035c184e1de01b1dbd2c990afb72e9f4d1a2154d66833158139ae28a3dfaac5fe1560a5e9e05cd503910103d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Elections : Vote", + "1 | Votes [1/16] : kzovwVmV1d4uHymEtkyhmXBXDuXC3rSU34W8Km4", + "1 | Votes [2/16] : boyUr54o", + "1 | Votes [3/16] : itacSY79ToAh7AsPnh9TWcwDas3j9J2Bfwrcdf3", + "1 | Votes [4/16] : wyGcxcan", + "1 | Votes [5/16] : jTndY59dAepr2PLY9TJToMp4qUb9bQ6Qs7g1m9G", + "1 | Votes [6/16] : ysaKxQyB", + "1 | Votes [7/16] : iyWJEttiJbuYkomegY9QQvADpnwGozqYzuBimgr", + "1 | Votes [8/16] : c25DgiZJ", + "1 | Votes [9/16] : hWiJSQK6wcSzAFUMhDfGm4VhEj9QTo7ryj9m1Aw", + "1 | Votes [10/16] : 3ezQjxpd", + "1 | Votes [11/16] : o5L4wShC5NAhecxr3ydTtKdoExqReE5XXK2xmmK", + "1 | Votes [12/16] : LFq7gJDX", + "1 | Votes [13/16] : itTL3rwaiYFYToySEySMWVFmw2qv993aud1R65Q", + "1 | Votes [14/16] : XbJqazbr", + "1 | Votes [15/16] : nBYf9FfYSpANuSPKGufbQfdRgMoTdB58Q9P2JzP", + "1 | Votes [16/16] : BQ7W2ycR", + "2 | Amount [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Amount [2/2] : 56789", + "3 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Elections : Vote", + "1 | Votes [1/16] : kzovwVmV1d4uHymEtkyhmXBXDuXC3rSU34W8Km4", + "1 | Votes [2/16] : boyUr54o", + "1 | Votes [3/16] : itacSY79ToAh7AsPnh9TWcwDas3j9J2Bfwrcdf3", + "1 | Votes [4/16] : wyGcxcan", + "1 | Votes [5/16] : jTndY59dAepr2PLY9TJToMp4qUb9bQ6Qs7g1m9G", + "1 | Votes [6/16] : ysaKxQyB", + "1 | Votes [7/16] : iyWJEttiJbuYkomegY9QQvADpnwGozqYzuBimgr", + "1 | Votes [8/16] : c25DgiZJ", + "1 | Votes [9/16] : hWiJSQK6wcSzAFUMhDfGm4VhEj9QTo7ryj9m1Aw", + "1 | Votes [10/16] : 3ezQjxpd", + "1 | Votes [11/16] : o5L4wShC5NAhecxr3ydTtKdoExqReE5XXK2xmmK", + "1 | Votes [12/16] : LFq7gJDX", + "1 | Votes [13/16] : itTL3rwaiYFYToySEySMWVFmw2qv993aud1R65Q", + "1 | Votes [14/16] : XbJqazbr", + "1 | Votes [15/16] : nBYf9FfYSpANuSPKGufbQfdRgMoTdB58Q9P2JzP", + "1 | Votes [16/16] : BQ7W2ycR", + "2 | Amount [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Amount [2/2] : 56789", + "3 | Chain : Edgeware", + "4 | Nonce : 100", + "5 | Tip : EDG 0.00000000123456789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 333, + "name": "Elections_Vote", + "blob": "0c0004444c1e110606cd3355dedaddd1c3b8e3033bfe6210bc0c6084eb93792f7029406d0fd5038d248ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Elections : Vote", + "1 | Votes [1/2] : j4AgGx9f4xHjnML7UmdiQWhyXi3bvQpEh9JNzXM", + "1 | Votes [2/2] : DYKcM1mA", + "2 | Amount : EDG 0.000000000000000987", + "3 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Elections : Vote", + "1 | Votes [1/2] : j4AgGx9f4xHjnML7UmdiQWhyXi3bvQpEh9JNzXM", + "1 | Votes [2/2] : DYKcM1mA", + "2 | Amount : EDG 0.000000000000000987", + "3 | Chain : Edgeware", + "4 | Nonce : 2339", + "5 | Tip : EDG 0.000000000055555555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 334, + "name": "Elections_Vote", + "blob": "0c000c405f92ba790874e13073478e39d9490571e3231901faac5252f2d0a3751a6575161c100a5fa920b67e0e9a92a213ae3b43c55388120512ebd5a6fd8212c32f1dc2197142a9a9d431f120f4615ba75907603b77424d3ee2486a3e6e3c1e32f46300d503040b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Elections : Vote", + "1 | Votes [1/6] : iy2GP2pnkPTQX1Yeydgvw3XLZM3gSc8vCsMzj9J", + "1 | Votes [2/6] : yTSEavoF", + "1 | Votes [3/6] : i1cCZ8GYpRpQNPsX58mCP3tPrBxb22VPCnfCJ2E", + "1 | Votes [4/6] : aZjcoA71", + "1 | Votes [5/6] : mu7f79vpjeMcbw8dx1oep2iNhV5DuTK94xNQHLT", + "1 | Votes [6/6] : SJDUHyjw", + "2 | Amount : EDG 0.0", + "3 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Elections : Vote", + "1 | Votes [1/6] : iy2GP2pnkPTQX1Yeydgvw3XLZM3gSc8vCsMzj9J", + "1 | Votes [2/6] : yTSEavoF", + "1 | Votes [3/6] : i1cCZ8GYpRpQNPsX58mCP3tPrBxb22VPCnfCJ2E", + "1 | Votes [4/6] : aZjcoA71", + "1 | Votes [5/6] : mu7f79vpjeMcbw8dx1oep2iNhV5DuTK94xNQHLT", + "1 | Votes [6/6] : SJDUHyjw", + "2 | Amount : EDG 0.0", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Tip : EDG 0.000005552342355555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 335, + "name": "Elections_Vote", + "blob": "0c0004444c1e110606cd3355dedaddd1c3b8e3033bfe6210bc0c6084eb93792f7029406d0fd503040b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Elections : Vote", + "1 | Votes [1/2] : j4AgGx9f4xHjnML7UmdiQWhyXi3bvQpEh9JNzXM", + "1 | Votes [2/2] : DYKcM1mA", + "2 | Amount : EDG 0.000000000000000987", + "3 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Elections : Vote", + "1 | Votes [1/2] : j4AgGx9f4xHjnML7UmdiQWhyXi3bvQpEh9JNzXM", + "1 | Votes [2/2] : DYKcM1mA", + "2 | Amount : EDG 0.000000000000000987", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Tip : EDG 0.000005552342355555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 336, + "name": "Elections_Remove_voter", + "blob": "0c01d5038d240b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Elections : Remove voter", + "1 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Elections : Remove voter", + "1 | Chain : Edgeware", + "2 | Nonce : 2339", + "3 | Tip : EDG 0.000005552342355555", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 337, + "name": "Elections_Remove_voter", + "blob": "0c01d503ae1103006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Elections : Remove voter", + "1 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Elections : Remove voter", + "1 | Chain : Edgeware", + "2 | Nonce : 50283", + "3 | Tip : EDG 0.000000000000000987", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 338, + "name": "Elections_Remove_voter", + "blob": "0c01d50391010b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Elections : Remove voter", + "1 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Elections : Remove voter", + "1 | Chain : Edgeware", + "2 | Nonce : 100", + "3 | Tip : EDG 0.000005552342355555", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 339, + "name": "Elections_Remove_voter", + "blob": "0c01d5038d240b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Elections : Remove voter", + "1 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Elections : Remove voter", + "1 | Chain : Edgeware", + "2 | Nonce : 2339", + "3 | Tip : EDG 0.000005552342355555", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 340, + "name": "Elections_Remove_voter", + "blob": "0c01d5030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Elections : Remove voter", + "1 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "1 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Elections : Remove voter", + "1 | Chain : Edgeware", + "2 | Nonce : 0", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 341, + "name": "Elections_Submit_candidacy", + "blob": "0c03b1d6d503ae1103008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Elections : Submit candidacy", + "1 | Candidate count : 13740", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Elections : Submit candidacy", + "1 | Candidate count : 13740", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 342, + "name": "Elections_Submit_candidacy", + "blob": "0c0300d50391018ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Elections : Submit candidacy", + "1 | Candidate count : 0", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Elections : Submit candidacy", + "1 | Candidate count : 0", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 343, + "name": "Elections_Submit_candidacy", + "blob": "0c03b1d6d503046d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Elections : Submit candidacy", + "1 | Candidate count : 13740", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Elections : Submit candidacy", + "1 | Candidate count : 13740", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 344, + "name": "Elections_Submit_candidacy", + "blob": "0c039504d503ae1103000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Elections : Submit candidacy", + "1 | Candidate count : 293", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Elections : Submit candidacy", + "1 | Candidate count : 293", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 345, + "name": "Elections_Submit_candidacy", + "blob": "0c03fd0fd5038d2403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Elections : Submit candidacy", + "1 | Candidate count : 1023", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Elections : Submit candidacy", + "1 | Candidate count : 1023", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 346, + "name": "Elections_Remove_member", + "blob": "0c05008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f55116655101d50304002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Elections : Remove member", + "1 | Who [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Who [2/2] : er4tKs7Z", + "2 | Has replacement : True" + ], + "output_expert": [ + "0 | Elections : Remove member", + "1 | Who [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Who [2/2] : er4tKs7Z", + "2 | Has replacement : True", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 347, + "name": "Elections_Remove_member", + "blob": "0c05008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f55116655101d5038d246d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Elections : Remove member", + "1 | Who [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Who [2/2] : er4tKs7Z", + "2 | Has replacement : True", + "3 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Elections : Remove member", + "1 | Who [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Who [2/2] : er4tKs7Z", + "2 | Has replacement : True", + "3 | Chain : Edgeware", + "4 | Nonce : 2339", + "5 | Tip : EDG 0.000000000000000987", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 348, + "name": "Elections_Remove_member", + "blob": "0c05008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f55116655100d503910103d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Elections : Remove member", + "1 | Who [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Who [2/2] : er4tKs7Z", + "2 | Has replacement : False", + "3 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Elections : Remove member", + "1 | Who [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Who [2/2] : er4tKs7Z", + "2 | Has replacement : False", + "3 | Chain : Edgeware", + "4 | Nonce : 100", + "5 | Tip : EDG 0.00000000123456789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 349, + "name": "Elections_Remove_member", + "blob": "0c05008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f55116655101d503ae11030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Elections : Remove member", + "1 | Who [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Who [2/2] : er4tKs7Z", + "2 | Has replacement : True", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Elections : Remove member", + "1 | Who [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Who [2/2] : er4tKs7Z", + "2 | Has replacement : True", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "5 | Tip [2/2] : 56789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 350, + "name": "Elections_Remove_member", + "blob": "0c05008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f55116655101d503ae1103006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Elections : Remove member", + "1 | Who [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Who [2/2] : er4tKs7Z", + "2 | Has replacement : True", + "3 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Elections : Remove member", + "1 | Who [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Who [2/2] : er4tKs7Z", + "2 | Has replacement : True", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Tip : EDG 0.000000000000000987", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 351, + "name": "Grandpa_Note_stalled", + "blob": "0e02b3e3010001000000d5038d246d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Grandpa : Note stalled", + "1 | Delay : 123827", + "2 | Best finalized block number : 1", + "3 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Grandpa : Note stalled", + "1 | Delay : 123827", + "2 | Best finalized block number : 1", + "3 | Chain : Edgeware", + "4 | Nonce : 2339", + "5 | Tip : EDG 0.000000000000000987", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 352, + "name": "Grandpa_Note_stalled", + "blob": "0e02b3e30100ac350000d503046d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Grandpa : Note stalled", + "1 | Delay : 123827", + "2 | Best finalized block number : 13740", + "3 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Grandpa : Note stalled", + "1 | Delay : 123827", + "2 | Best finalized block number : 13740", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Tip : EDG 0.000000000000000987", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 353, + "name": "Grandpa_Note_stalled", + "blob": "0e02ff030000ff030000d503046d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Grandpa : Note stalled", + "1 | Delay : 1023", + "2 | Best finalized block number : 1023", + "3 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Grandpa : Note stalled", + "1 | Delay : 1023", + "2 | Best finalized block number : 1023", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Tip : EDG 0.000000000000000987", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 354, + "name": "Grandpa_Note_stalled", + "blob": "0e02ff03000025010000d503910133158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Grandpa : Note stalled", + "1 | Delay : 1023", + "2 | Best finalized block number : 293", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Grandpa : Note stalled", + "1 | Delay : 1023", + "2 | Best finalized block number : 293", + "3 | Chain : Edgeware", + "4 | Nonce : 100", + "5 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "5 | Tip [2/2] : 56789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 355, + "name": "Grandpa_Note_stalled", + "blob": "0e02250100007b000000d503046d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Grandpa : Note stalled", + "1 | Delay : 293", + "2 | Best finalized block number : 123", + "3 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Grandpa : Note stalled", + "1 | Delay : 293", + "2 | Best finalized block number : 123", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Tip : EDG 0.000000000000000987", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 356, + "name": "Treasury_Propose_spend", + "blob": "0f008ed73e0d008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f551166551d5038d246d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Treasury : Propose spend", + "1 | Amount : EDG 0.000000000055555555", + "2 | Beneficiary [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "2 | Beneficiary [2/2] : er4tKs7Z", + "3 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Treasury : Propose spend", + "1 | Amount : EDG 0.000000000055555555", + "2 | Beneficiary [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "2 | Beneficiary [2/2] : er4tKs7Z", + "3 | Chain : Edgeware", + "4 | Nonce : 2339", + "5 | Tip : EDG 0.000000000000000987", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 357, + "name": "Treasury_Propose_spend", + "blob": "0f0003d2029649008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f551166551d5038d24002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Treasury : Propose spend", + "1 | Amount : EDG 0.00000000123456789", + "2 | Beneficiary [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "2 | Beneficiary [2/2] : er4tKs7Z" + ], + "output_expert": [ + "0 | Treasury : Propose spend", + "1 | Amount : EDG 0.00000000123456789", + "2 | Beneficiary [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "2 | Beneficiary [2/2] : er4tKs7Z", + "3 | Chain : Edgeware", + "4 | Nonce : 2339", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 358, + "name": "Treasury_Propose_spend", + "blob": "0f0000008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f551166551d503048ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Treasury : Propose spend", + "1 | Amount : EDG 0.0", + "2 | Beneficiary [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "2 | Beneficiary [2/2] : er4tKs7Z", + "3 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Treasury : Propose spend", + "1 | Amount : EDG 0.0", + "2 | Beneficiary [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "2 | Beneficiary [2/2] : er4tKs7Z", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Tip : EDG 0.000000000055555555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 359, + "name": "Treasury_Propose_spend", + "blob": "0f0000008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f551166551d50300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Treasury : Propose spend", + "1 | Amount : EDG 0.0", + "2 | Beneficiary [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "2 | Beneficiary [2/2] : er4tKs7Z" + ], + "output_expert": [ + "0 | Treasury : Propose spend", + "1 | Amount : EDG 0.0", + "2 | Beneficiary [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "2 | Beneficiary [2/2] : er4tKs7Z", + "3 | Chain : Edgeware", + "4 | Nonce : 0", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 360, + "name": "Treasury_Propose_spend", + "blob": "0f006d0f008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f551166551d5030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Treasury : Propose spend", + "1 | Amount : EDG 0.000000000000000987", + "2 | Beneficiary [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "2 | Beneficiary [2/2] : er4tKs7Z", + "3 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Treasury : Propose spend", + "1 | Amount : EDG 0.000000000000000987", + "2 | Beneficiary [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "2 | Beneficiary [2/2] : er4tKs7Z", + "3 | Chain : Edgeware", + "4 | Nonce : 0", + "5 | Tip : EDG 0.00000000123456789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 361, + "name": "Treasury_Reject_proposal", + "blob": "0f016d0fd503000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Treasury : Reject proposal", + "1 | Proposal id : 987", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Treasury : Reject proposal", + "1 | Proposal id : 987", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 362, + "name": "Treasury_Reject_proposal", + "blob": "0f016d0fd503048ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Treasury : Reject proposal", + "1 | Proposal id : 987", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Treasury : Reject proposal", + "1 | Proposal id : 987", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 363, + "name": "Treasury_Reject_proposal", + "blob": "0f0125c1d503ae11030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Treasury : Reject proposal", + "1 | Proposal id : 12361", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Treasury : Reject proposal", + "1 | Proposal id : 12361", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 364, + "name": "Treasury_Reject_proposal", + "blob": "0f0100d5038d2433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Treasury : Reject proposal", + "1 | Proposal id : 0", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Treasury : Reject proposal", + "1 | Proposal id : 0", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 365, + "name": "Treasury_Reject_proposal", + "blob": "0f0125c1d503006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Treasury : Reject proposal", + "1 | Proposal id : 12361", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Treasury : Reject proposal", + "1 | Proposal id : 12361", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 366, + "name": "Treasury_Approve_proposal", + "blob": "0f02ce830700d503ae1103000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Treasury : Approve proposal", + "1 | Proposal id : 123123", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Treasury : Approve proposal", + "1 | Proposal id : 123123", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 367, + "name": "Treasury_Approve_proposal", + "blob": "0f0225c1d5030433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Treasury : Approve proposal", + "1 | Proposal id : 12361", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Treasury : Approve proposal", + "1 | Proposal id : 12361", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 368, + "name": "Treasury_Approve_proposal", + "blob": "0f026d0fd5030433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Treasury : Approve proposal", + "1 | Proposal id : 987", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Treasury : Approve proposal", + "1 | Proposal id : 987", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 369, + "name": "Treasury_Approve_proposal", + "blob": "0f026d0fd50304002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Treasury : Approve proposal", + "1 | Proposal id : 987" + ], + "output_expert": [ + "0 | Treasury : Approve proposal", + "1 | Proposal id : 987", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 370, + "name": "Treasury_Approve_proposal", + "blob": "0f0200d50300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Treasury : Approve proposal", + "1 | Proposal id : 0" + ], + "output_expert": [ + "0 | Treasury : Approve proposal", + "1 | Proposal id : 0", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 371, + "name": "Contracts_Put_code", + "blob": "1001010123525d76fc307138b9eab30b4fd73b6db2d1f513b975f1b42b0a9119218f5fcad709998a4477f9c0db0808b4565009df96176097ef77f0ca246a3281e9c49147d5030403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Contracts : Put code", + "1 | Code [1/4] : 23525d76fc307138b9eab30b4fd73b6db2d1f5", + "1 | Code [2/4] : 13b975f1b42b0a9119218f5fcad709998a4477", + "1 | Code [3/4] : f9c0db0808b4565009df96176097ef77f0ca24", + "1 | Code [4/4] : 6a3281e9c49147", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Contracts : Put code", + "1 | Code [1/4] : 23525d76fc307138b9eab30b4fd73b6db2d1f5", + "1 | Code [2/4] : 13b975f1b42b0a9119218f5fcad709998a4477", + "1 | Code [3/4] : f9c0db0808b4565009df96176097ef77f0ca24", + "1 | Code [4/4] : 6a3281e9c49147", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 372, + "name": "Contracts_Put_code", + "blob": "1001010123525d76fc307138b9eab30b4fd73b6db2d1f513b975f1b42b0a9119218f5fcad709998a4477f9c0db0808b4565009df96176097ef77f0ca246a3281e9c49147d503ae110300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Contracts : Put code", + "1 | Code [1/4] : 23525d76fc307138b9eab30b4fd73b6db2d1f5", + "1 | Code [2/4] : 13b975f1b42b0a9119218f5fcad709998a4477", + "1 | Code [3/4] : f9c0db0808b4565009df96176097ef77f0ca24", + "1 | Code [4/4] : 6a3281e9c49147" + ], + "output_expert": [ + "0 | Contracts : Put code", + "1 | Code [1/4] : 23525d76fc307138b9eab30b4fd73b6db2d1f5", + "1 | Code [2/4] : 13b975f1b42b0a9119218f5fcad709998a4477", + "1 | Code [3/4] : f9c0db0808b4565009df96176097ef77f0ca24", + "1 | Code [4/4] : 6a3281e9c49147", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 373, + "name": "Contracts_Put_code", + "blob": "1001010293859bda4a5499d40a481edfd9cfc89083a367745d339128680aaacc9e7ce65fdf5a9bd46291155579ff30c15ad939f865f7393d41252acdcf1bb50d640b8c5e4090fc011ca336434068fa7ba9e5f4fa9150a58acd829b70ad36cd42ad37f2b649904d2e87240b3ca499f6ab8c7f836662bbb05e2b8866b83aba6e31ae0cd6dcd503008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Contracts : Put code", + "1 | Code [1/7] : 93859bda4a5499d40a481edfd9cfc89083a367", + "1 | Code [2/7] : 745d339128680aaacc9e7ce65fdf5a9bd46291", + "1 | Code [3/7] : 155579ff30c15ad939f865f7393d41252acdcf", + "1 | Code [4/7] : 1bb50d640b8c5e4090fc011ca336434068fa7b", + "1 | Code [5/7] : a9e5f4fa9150a58acd829b70ad36cd42ad37f2", + "1 | Code [6/7] : b649904d2e87240b3ca499f6ab8c7f836662bb", + "1 | Code [7/7] : b05e2b8866b83aba6e31ae0cd6dc", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Contracts : Put code", + "1 | Code [1/7] : 93859bda4a5499d40a481edfd9cfc89083a367", + "1 | Code [2/7] : 745d339128680aaacc9e7ce65fdf5a9bd46291", + "1 | Code [3/7] : 155579ff30c15ad939f865f7393d41252acdcf", + "1 | Code [4/7] : 1bb50d640b8c5e4090fc011ca336434068fa7b", + "1 | Code [5/7] : a9e5f4fa9150a58acd829b70ad36cd42ad37f2", + "1 | Code [6/7] : b649904d2e87240b3ca499f6ab8c7f836662bb", + "1 | Code [7/7] : b05e2b8866b83aba6e31ae0cd6dc", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 374, + "name": "Contracts_Put_code", + "blob": "100101024fff0f1baa4228af23671ae8fe30d41fdd16f8e8de3421e9991d09e41d575cbb55ca2876e3518b1baa8ec5c3cd87533d21724ca6d80d9e9206fa160228dd70e9e86bec2fd1fd4a93abf246f2212d3390174061cf1afa33b89cc520d02002a0bc723986572e987a346b24c0d7e12b9053d5df9aec0972d6148b46d236e35aadedd503048ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Contracts : Put code", + "1 | Code [1/7] : 4fff0f1baa4228af23671ae8fe30d41fdd16f8", + "1 | Code [2/7] : e8de3421e9991d09e41d575cbb55ca2876e351", + "1 | Code [3/7] : 8b1baa8ec5c3cd87533d21724ca6d80d9e9206", + "1 | Code [4/7] : fa160228dd70e9e86bec2fd1fd4a93abf246f2", + "1 | Code [5/7] : 212d3390174061cf1afa33b89cc520d02002a0", + "1 | Code [6/7] : bc723986572e987a346b24c0d7e12b9053d5df", + "1 | Code [7/7] : 9aec0972d6148b46d236e35aaded", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Contracts : Put code", + "1 | Code [1/7] : 4fff0f1baa4228af23671ae8fe30d41fdd16f8", + "1 | Code [2/7] : e8de3421e9991d09e41d575cbb55ca2876e351", + "1 | Code [3/7] : 8b1baa8ec5c3cd87533d21724ca6d80d9e9206", + "1 | Code [4/7] : fa160228dd70e9e86bec2fd1fd4a93abf246f2", + "1 | Code [5/7] : 212d3390174061cf1afa33b89cc520d02002a0", + "1 | Code [6/7] : bc723986572e987a346b24c0d7e12b9053d5df", + "1 | Code [7/7] : 9aec0972d6148b46d236e35aaded", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 375, + "name": "Contracts_Put_code", + "blob": "100101024fff0f1baa4228af23671ae8fe30d41fdd16f8e8de3421e9991d09e41d575cbb55ca2876e3518b1baa8ec5c3cd87533d21724ca6d80d9e9206fa160228dd70e9e86bec2fd1fd4a93abf246f2212d3390174061cf1afa33b89cc520d02002a0bc723986572e987a346b24c0d7e12b9053d5df9aec0972d6148b46d236e35aadedd503008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Contracts : Put code", + "1 | Code [1/7] : 4fff0f1baa4228af23671ae8fe30d41fdd16f8", + "1 | Code [2/7] : e8de3421e9991d09e41d575cbb55ca2876e351", + "1 | Code [3/7] : 8b1baa8ec5c3cd87533d21724ca6d80d9e9206", + "1 | Code [4/7] : fa160228dd70e9e86bec2fd1fd4a93abf246f2", + "1 | Code [5/7] : 212d3390174061cf1afa33b89cc520d02002a0", + "1 | Code [6/7] : bc723986572e987a346b24c0d7e12b9053d5df", + "1 | Code [7/7] : 9aec0972d6148b46d236e35aaded", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Contracts : Put code", + "1 | Code [1/7] : 4fff0f1baa4228af23671ae8fe30d41fdd16f8", + "1 | Code [2/7] : e8de3421e9991d09e41d575cbb55ca2876e351", + "1 | Code [3/7] : 8b1baa8ec5c3cd87533d21724ca6d80d9e9206", + "1 | Code [4/7] : fa160228dd70e9e86bec2fd1fd4a93abf246f2", + "1 | Code [5/7] : 212d3390174061cf1afa33b89cc520d02002a0", + "1 | Code [6/7] : bc723986572e987a346b24c0d7e12b9053d5df", + "1 | Code [7/7] : 9aec0972d6148b46d236e35aaded", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 376, + "name": "Contracts_Call", + "blob": "1002008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f55116655103d202964900010293859bda4a5499d40a481edfd9cfc89083a367745d339128680aaacc9e7ce65fdf5a9bd46291155579ff30c15ad939f865f7393d41252acdcf1bb50d640b8c5e4090fc011ca336434068fa7ba9e5f4fa9150a58acd829b70ad36cd42ad37f2b649904d2e87240b3ca499f6ab8c7f836662bbb05e2b8866b83aba6e31ae0cd6dcd503910103d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Contracts : Call", + "1 | Dest [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Dest [2/2] : er4tKs7Z", + "2 | Amount : EDG 0.00000000123456789", + "3 | Gas limit : 0", + "4 | Data [1/7] : 93859bda4a5499d40a481edfd9cfc89083a367", + "4 | Data [2/7] : 745d339128680aaacc9e7ce65fdf5a9bd46291", + "4 | Data [3/7] : 155579ff30c15ad939f865f7393d41252acdcf", + "4 | Data [4/7] : 1bb50d640b8c5e4090fc011ca336434068fa7b", + "4 | Data [5/7] : a9e5f4fa9150a58acd829b70ad36cd42ad37f2", + "4 | Data [6/7] : b649904d2e87240b3ca499f6ab8c7f836662bb", + "4 | Data [7/7] : b05e2b8866b83aba6e31ae0cd6dc", + "5 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Contracts : Call", + "1 | Dest [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Dest [2/2] : er4tKs7Z", + "2 | Amount : EDG 0.00000000123456789", + "3 | Gas limit : 0", + "4 | Data [1/7] : 93859bda4a5499d40a481edfd9cfc89083a367", + "4 | Data [2/7] : 745d339128680aaacc9e7ce65fdf5a9bd46291", + "4 | Data [3/7] : 155579ff30c15ad939f865f7393d41252acdcf", + "4 | Data [4/7] : 1bb50d640b8c5e4090fc011ca336434068fa7b", + "4 | Data [5/7] : a9e5f4fa9150a58acd829b70ad36cd42ad37f2", + "4 | Data [6/7] : b649904d2e87240b3ca499f6ab8c7f836662bb", + "4 | Data [7/7] : b05e2b8866b83aba6e31ae0cd6dc", + "5 | Chain : Edgeware", + "6 | Nonce : 100", + "7 | Tip : EDG 0.00000000123456789", + "8 | Era Phase : 61", + "9 | Era Period : 64", + "10 | Block [1/2] : 00000000000000000000000000000000000000", + "10 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 377, + "name": "Contracts_Call", + "blob": "1002008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f55116655103d202964900010228a192d7318f784cb9231f2b018e5a9c99272f2d9c83192c08049ad2387b15cbfbb2b107147972a10bac4f598fb0cdc10b9f39151b2264c9bce34c800f4a2e4524607bbe88efe513d88bf1ae0d179d0ca0b798383e02e763d9c2d195bcafc2e1797e6a6ac8297b29b7ce0352255e389ce9f736b6dba8e7e1ef4671f96590f952d503048ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Contracts : Call", + "1 | Dest [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Dest [2/2] : er4tKs7Z", + "2 | Amount : EDG 0.00000000123456789", + "3 | Gas limit : 0", + "4 | Data [1/7] : 28a192d7318f784cb9231f2b018e5a9c99272f", + "4 | Data [2/7] : 2d9c83192c08049ad2387b15cbfbb2b1071479", + "4 | Data [3/7] : 72a10bac4f598fb0cdc10b9f39151b2264c9bc", + "4 | Data [4/7] : e34c800f4a2e4524607bbe88efe513d88bf1ae", + "4 | Data [5/7] : 0d179d0ca0b798383e02e763d9c2d195bcafc2", + "4 | Data [6/7] : e1797e6a6ac8297b29b7ce0352255e389ce9f7", + "4 | Data [7/7] : 36b6dba8e7e1ef4671f96590f952", + "5 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Contracts : Call", + "1 | Dest [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Dest [2/2] : er4tKs7Z", + "2 | Amount : EDG 0.00000000123456789", + "3 | Gas limit : 0", + "4 | Data [1/7] : 28a192d7318f784cb9231f2b018e5a9c99272f", + "4 | Data [2/7] : 2d9c83192c08049ad2387b15cbfbb2b1071479", + "4 | Data [3/7] : 72a10bac4f598fb0cdc10b9f39151b2264c9bc", + "4 | Data [4/7] : e34c800f4a2e4524607bbe88efe513d88bf1ae", + "4 | Data [5/7] : 0d179d0ca0b798383e02e763d9c2d195bcafc2", + "4 | Data [6/7] : e1797e6a6ac8297b29b7ce0352255e389ce9f7", + "4 | Data [7/7] : 36b6dba8e7e1ef4671f96590f952", + "5 | Chain : Edgeware", + "6 | Nonce : 1", + "7 | Tip : EDG 0.000000000055555555", + "8 | Era Phase : 61", + "9 | Era Period : 64", + "10 | Block [1/2] : 00000000000000000000000000000000000000", + "10 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 378, + "name": "Contracts_Call", + "blob": "1002008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f5511665510b63ce64c10c0500010293859bda4a5499d40a481edfd9cfc89083a367745d339128680aaacc9e7ce65fdf5a9bd46291155579ff30c15ad939f865f7393d41252acdcf1bb50d640b8c5e4090fc011ca336434068fa7ba9e5f4fa9150a58acd829b70ad36cd42ad37f2b649904d2e87240b3ca499f6ab8c7f836662bbb05e2b8866b83aba6e31ae0cd6dcd50300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Contracts : Call", + "1 | Dest [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Dest [2/2] : er4tKs7Z", + "2 | Amount : EDG 0.000005552342355555", + "3 | Gas limit : 0", + "4 | Data [1/7] : 93859bda4a5499d40a481edfd9cfc89083a367", + "4 | Data [2/7] : 745d339128680aaacc9e7ce65fdf5a9bd46291", + "4 | Data [3/7] : 155579ff30c15ad939f865f7393d41252acdcf", + "4 | Data [4/7] : 1bb50d640b8c5e4090fc011ca336434068fa7b", + "4 | Data [5/7] : a9e5f4fa9150a58acd829b70ad36cd42ad37f2", + "4 | Data [6/7] : b649904d2e87240b3ca499f6ab8c7f836662bb", + "4 | Data [7/7] : b05e2b8866b83aba6e31ae0cd6dc" + ], + "output_expert": [ + "0 | Contracts : Call", + "1 | Dest [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Dest [2/2] : er4tKs7Z", + "2 | Amount : EDG 0.000005552342355555", + "3 | Gas limit : 0", + "4 | Data [1/7] : 93859bda4a5499d40a481edfd9cfc89083a367", + "4 | Data [2/7] : 745d339128680aaacc9e7ce65fdf5a9bd46291", + "4 | Data [3/7] : 155579ff30c15ad939f865f7393d41252acdcf", + "4 | Data [4/7] : 1bb50d640b8c5e4090fc011ca336434068fa7b", + "4 | Data [5/7] : a9e5f4fa9150a58acd829b70ad36cd42ad37f2", + "4 | Data [6/7] : b649904d2e87240b3ca499f6ab8c7f836662bb", + "4 | Data [7/7] : b05e2b8866b83aba6e31ae0cd6dc", + "5 | Chain : Edgeware", + "6 | Nonce : 0", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 379, + "name": "Contracts_Call", + "blob": "1002008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f5511665516d0f0080a2661c961cab79e32ca6e3044488373e41b21178eea66aa545ebd2fcf33dd35cd503000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Contracts : Call", + "1 | Dest [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Dest [2/2] : er4tKs7Z", + "2 | Amount : EDG 0.000000000000000987", + "3 | Gas limit : 0", + "4 | Data [1/2] : a2661c961cab79e32ca6e3044488373e41b211", + "4 | Data [2/2] : 78eea66aa545ebd2fcf33dd35c", + "5 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Contracts : Call", + "1 | Dest [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Dest [2/2] : er4tKs7Z", + "2 | Amount : EDG 0.000000000000000987", + "3 | Gas limit : 0", + "4 | Data [1/2] : a2661c961cab79e32ca6e3044488373e41b211", + "4 | Data [2/2] : 78eea66aa545ebd2fcf33dd35c", + "5 | Chain : Edgeware", + "6 | Nonce : 0", + "7 | Tip : EDG 0.000005552342355555", + "8 | Era Phase : 61", + "9 | Era Period : 64", + "10 | Block [1/2] : 00000000000000000000000000000000000000", + "10 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 380, + "name": "Contracts_Call", + "blob": "1002008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f551166551000080a2661c961cab79e32ca6e3044488373e41b21178eea66aa545ebd2fcf33dd35cd5030403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Contracts : Call", + "1 | Dest [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Dest [2/2] : er4tKs7Z", + "2 | Amount : EDG 0.0", + "3 | Gas limit : 0", + "4 | Data [1/2] : a2661c961cab79e32ca6e3044488373e41b211", + "4 | Data [2/2] : 78eea66aa545ebd2fcf33dd35c", + "5 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Contracts : Call", + "1 | Dest [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Dest [2/2] : er4tKs7Z", + "2 | Amount : EDG 0.0", + "3 | Gas limit : 0", + "4 | Data [1/2] : a2661c961cab79e32ca6e3044488373e41b211", + "4 | Data [2/2] : 78eea66aa545ebd2fcf33dd35c", + "5 | Chain : Edgeware", + "6 | Nonce : 1", + "7 | Tip : EDG 0.00000000123456789", + "8 | Era Phase : 61", + "9 | Era Period : 64", + "10 | Block [1/2] : 00000000000000000000000000000000000000", + "10 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 381, + "name": "Contracts_Claim_surcharge", + "blob": "10040a020856a01aa594a4a77167f74b11e13dbbbc934d8c942eca62569d4c58390e01f4eafe05183f84a4aaceefa8ff4e47c807be7fb6e7549fafebd2bb860ef14a69d503ae11030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Contracts : Claim surcharge", + "1 | Dest [1/2] : hjjtjpF2ZP5MQ71c5PmPgSVTC3Jv6WL2mK4xcEx", + "1 | Dest [2/2] : gUKcbvMx", + "2 | Aux sender [1/2] : o3kJS2SwwgTKZUvJUybpRgBuVoBS8MPzeBTHk1w", + "2 | Aux sender [2/2] : t3RmhPmG", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Contracts : Claim surcharge", + "1 | Dest [1/2] : hjjtjpF2ZP5MQ71c5PmPgSVTC3Jv6WL2mK4xcEx", + "1 | Dest [2/2] : gUKcbvMx", + "2 | Aux sender [1/2] : o3kJS2SwwgTKZUvJUybpRgBuVoBS8MPzeBTHk1w", + "2 | Aux sender [2/2] : t3RmhPmG", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "5 | Tip [2/2] : 56789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 382, + "name": "Contracts_Claim_surcharge", + "blob": "10048647fb36b1a57550a3a9ce1810aece028bccdd32d63b89731bc178f750a6d96701560acd2bffe34ab130704d8c4bf7e30bdbd35ef59c779c7c466084787522470bd503ae11030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Contracts : Claim surcharge", + "1 | Dest [1/2] : kYgcKBprAL2wXJey222eVRzgpHDtat891TyqH15", + "1 | Dest [2/2] : w9pMuDEH", + "2 | Aux sender [1/2] : jTS8u6jzyZQHu9HRmMhPyBJZaEZyXFawW67Tybm", + "2 | Aux sender [2/2] : g2qu9LbV", + "3 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Contracts : Claim surcharge", + "1 | Dest [1/2] : kYgcKBprAL2wXJey222eVRzgpHDtat891TyqH15", + "1 | Dest [2/2] : w9pMuDEH", + "2 | Aux sender [1/2] : jTS8u6jzyZQHu9HRmMhPyBJZaEZyXFawW67Tybm", + "2 | Aux sender [2/2] : g2qu9LbV", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Tip : EDG 0.00000000123456789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 383, + "name": "Contracts_Claim_surcharge", + "blob": "1004ea33a975e8a0e3908fad9be67b6927f1b5d2fdee682c9a21e59b31fb76804b4201560acd2bffe34ab130704d8c4bf7e30bdbd35ef59c779c7c466084787522470bd5039101002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Contracts : Claim surcharge", + "1 | Dest [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "1 | Dest [2/2] : 8kQ2Cbj7", + "2 | Aux sender [1/2] : jTS8u6jzyZQHu9HRmMhPyBJZaEZyXFawW67Tybm", + "2 | Aux sender [2/2] : g2qu9LbV" + ], + "output_expert": [ + "0 | Contracts : Claim surcharge", + "1 | Dest [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "1 | Dest [2/2] : 8kQ2Cbj7", + "2 | Aux sender [1/2] : jTS8u6jzyZQHu9HRmMhPyBJZaEZyXFawW67Tybm", + "2 | Aux sender [2/2] : g2qu9LbV", + "3 | Chain : Edgeware", + "4 | Nonce : 100", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 384, + "name": "Contracts_Claim_surcharge", + "blob": "1004ea33a975e8a0e3908fad9be67b6927f1b5d2fdee682c9a21e59b31fb76804b4201560acd2bffe34ab130704d8c4bf7e30bdbd35ef59c779c7c466084787522470bd50391010b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Contracts : Claim surcharge", + "1 | Dest [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "1 | Dest [2/2] : 8kQ2Cbj7", + "2 | Aux sender [1/2] : jTS8u6jzyZQHu9HRmMhPyBJZaEZyXFawW67Tybm", + "2 | Aux sender [2/2] : g2qu9LbV", + "3 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Contracts : Claim surcharge", + "1 | Dest [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "1 | Dest [2/2] : 8kQ2Cbj7", + "2 | Aux sender [1/2] : jTS8u6jzyZQHu9HRmMhPyBJZaEZyXFawW67Tybm", + "2 | Aux sender [2/2] : g2qu9LbV", + "3 | Chain : Edgeware", + "4 | Nonce : 100", + "5 | Tip : EDG 0.000005552342355555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 385, + "name": "Contracts_Claim_surcharge", + "blob": "1004ea33a975e8a0e3908fad9be67b6927f1b5d2fdee682c9a21e59b31fb76804b4201560acd2bffe34ab130704d8c4bf7e30bdbd35ef59c779c7c466084787522470bd503048ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Contracts : Claim surcharge", + "1 | Dest [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "1 | Dest [2/2] : 8kQ2Cbj7", + "2 | Aux sender [1/2] : jTS8u6jzyZQHu9HRmMhPyBJZaEZyXFawW67Tybm", + "2 | Aux sender [2/2] : g2qu9LbV", + "3 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Contracts : Claim surcharge", + "1 | Dest [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "1 | Dest [2/2] : 8kQ2Cbj7", + "2 | Aux sender [1/2] : jTS8u6jzyZQHu9HRmMhPyBJZaEZyXFawW67Tybm", + "2 | Aux sender [2/2] : g2qu9LbV", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Tip : EDG 0.000000000055555555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 386, + "name": "Identity_Add_registrar", + "blob": "1700ea33a975e8a0e3908fad9be67b6927f1b5d2fdee682c9a21e59b31fb76804b42d503040b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Add registrar", + "1 | Account [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "1 | Account [2/2] : 8kQ2Cbj7", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Identity : Add registrar", + "1 | Account [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "1 | Account [2/2] : 8kQ2Cbj7", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 387, + "name": "Identity_Add_registrar", + "blob": "170044934098651253342230b3e67b37bb55f934927ffadbd3d2025686e16269f755d5030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Add registrar", + "1 | Account [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "1 | Account [2/2] : t8MmbYSG", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Identity : Add registrar", + "1 | Account [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "1 | Account [2/2] : t8MmbYSG", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 388, + "name": "Identity_Add_registrar", + "blob": "170044934098651253342230b3e67b37bb55f934927ffadbd3d2025686e16269f755d5038d240b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Add registrar", + "1 | Account [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "1 | Account [2/2] : t8MmbYSG", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Identity : Add registrar", + "1 | Account [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "1 | Account [2/2] : t8MmbYSG", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 389, + "name": "Identity_Add_registrar", + "blob": "170044934098651253342230b3e67b37bb55f934927ffadbd3d2025686e16269f755d5038d248ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Add registrar", + "1 | Account [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "1 | Account [2/2] : t8MmbYSG", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Identity : Add registrar", + "1 | Account [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "1 | Account [2/2] : t8MmbYSG", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 390, + "name": "Identity_Add_registrar", + "blob": "170044934098651253342230b3e67b37bb55f934927ffadbd3d2025686e16269f755d5039101002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Add registrar", + "1 | Account [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "1 | Account [2/2] : t8MmbYSG" + ], + "output_expert": [ + "0 | Identity : Add registrar", + "1 | Account [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "1 | Account [2/2] : t8MmbYSG", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 391, + "name": "Identity_Clear_identity", + "blob": "1703d503910133158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Clear identity", + "1 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "1 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Identity : Clear identity", + "1 | Chain : Edgeware", + "2 | Nonce : 100", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 392, + "name": "Identity_Clear_identity", + "blob": "1703d5038d246d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Clear identity", + "1 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Identity : Clear identity", + "1 | Chain : Edgeware", + "2 | Nonce : 2339", + "3 | Tip : EDG 0.000000000000000987", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 393, + "name": "Identity_Clear_identity", + "blob": "1703d5030403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Clear identity", + "1 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Identity : Clear identity", + "1 | Chain : Edgeware", + "2 | Nonce : 1", + "3 | Tip : EDG 0.00000000123456789", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 394, + "name": "Identity_Clear_identity", + "blob": "1703d5038d246d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Clear identity", + "1 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Identity : Clear identity", + "1 | Chain : Edgeware", + "2 | Nonce : 2339", + "3 | Tip : EDG 0.000000000000000987", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 395, + "name": "Identity_Clear_identity", + "blob": "1703d503ae1103006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Clear identity", + "1 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Identity : Clear identity", + "1 | Chain : Edgeware", + "2 | Nonce : 50283", + "3 | Tip : EDG 0.000000000000000987", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 396, + "name": "Identity_Request_judgement", + "blob": "17048ed73e0d03d2029649d5030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Request judgement", + "1 | Reg index : 55555555", + "2 | Max fee : EDG 0.00000000123456789", + "3 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Identity : Request judgement", + "1 | Reg index : 55555555", + "2 | Max fee : EDG 0.00000000123456789", + "3 | Chain : Edgeware", + "4 | Nonce : 0", + "5 | Tip : EDG 0.00000000123456789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 397, + "name": "Identity_Request_judgement", + "blob": "1704000b63ce64c10c05d503ae1103006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Request judgement", + "1 | Reg index : 0", + "2 | Max fee : EDG 0.000005552342355555", + "3 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Identity : Request judgement", + "1 | Reg index : 0", + "2 | Max fee : EDG 0.000005552342355555", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Tip : EDG 0.000000000000000987", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 398, + "name": "Identity_Request_judgement", + "blob": "17040033158139ae28a3dfaac5fe1560a5e9e05cd50391016d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Request judgement", + "1 | Reg index : 0", + "2 | Max fee [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Max fee [2/2] : 56789", + "3 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Identity : Request judgement", + "1 | Reg index : 0", + "2 | Max fee [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Max fee [2/2] : 56789", + "3 | Chain : Edgeware", + "4 | Nonce : 100", + "5 | Tip : EDG 0.000000000000000987", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 399, + "name": "Identity_Request_judgement", + "blob": "1704006d0fd503000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Request judgement", + "1 | Reg index : 0", + "2 | Max fee : EDG 0.000000000000000987", + "3 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Identity : Request judgement", + "1 | Reg index : 0", + "2 | Max fee : EDG 0.000000000000000987", + "3 | Chain : Edgeware", + "4 | Nonce : 0", + "5 | Tip : EDG 0.000005552342355555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 400, + "name": "Identity_Request_judgement", + "blob": "17046d0f00d50304002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Request judgement", + "1 | Reg index : 987", + "2 | Max fee : EDG 0.0" + ], + "output_expert": [ + "0 | Identity : Request judgement", + "1 | Reg index : 987", + "2 | Max fee : EDG 0.0", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 401, + "name": "Identity_Cancel_request", + "blob": "170501000000d50391018ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Cancel request", + "1 | Reg index : 1", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Identity : Cancel request", + "1 | Reg index : 1", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 402, + "name": "Identity_Cancel_request", + "blob": "170500000000d503006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Cancel request", + "1 | Reg index : 0", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Identity : Cancel request", + "1 | Reg index : 0", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 403, + "name": "Identity_Cancel_request", + "blob": "170501000000d5030403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Cancel request", + "1 | Reg index : 1", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Identity : Cancel request", + "1 | Reg index : 1", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 404, + "name": "Identity_Cancel_request", + "blob": "1705b3e30100d5030403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Cancel request", + "1 | Reg index : 123827", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Identity : Cancel request", + "1 | Reg index : 123827", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 405, + "name": "Identity_Cancel_request", + "blob": "1705b3e30100d503ae110300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Cancel request", + "1 | Reg index : 123827" + ], + "output_expert": [ + "0 | Identity : Cancel request", + "1 | Reg index : 123827", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 406, + "name": "Identity_Set_fee", + "blob": "17068ed73e0d6d0fd5038d248ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Set fee", + "1 | Index : 55555555", + "2 | Fee : EDG 0.000000000000000987", + "3 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Identity : Set fee", + "1 | Index : 55555555", + "2 | Fee : EDG 0.000000000000000987", + "3 | Chain : Edgeware", + "4 | Nonce : 2339", + "5 | Tip : EDG 0.000000000055555555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 407, + "name": "Identity_Set_fee", + "blob": "1706006d0fd5038d2403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Set fee", + "1 | Index : 0", + "2 | Fee : EDG 0.000000000000000987", + "3 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Identity : Set fee", + "1 | Index : 0", + "2 | Fee : EDG 0.000000000000000987", + "3 | Chain : Edgeware", + "4 | Nonce : 2339", + "5 | Tip : EDG 0.00000000123456789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 408, + "name": "Identity_Set_fee", + "blob": "1706006d0fd503000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Set fee", + "1 | Index : 0", + "2 | Fee : EDG 0.000000000000000987", + "3 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Identity : Set fee", + "1 | Index : 0", + "2 | Fee : EDG 0.000000000000000987", + "3 | Chain : Edgeware", + "4 | Nonce : 0", + "5 | Tip : EDG 0.000005552342355555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 409, + "name": "Identity_Set_fee", + "blob": "17066d0f00d50391010b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Set fee", + "1 | Index : 987", + "2 | Fee : EDG 0.0", + "3 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Identity : Set fee", + "1 | Index : 987", + "2 | Fee : EDG 0.0", + "3 | Chain : Edgeware", + "4 | Nonce : 100", + "5 | Tip : EDG 0.000005552342355555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 410, + "name": "Identity_Set_fee", + "blob": "17066d0f6d0fd503000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Set fee", + "1 | Index : 987", + "2 | Fee : EDG 0.000000000000000987", + "3 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Identity : Set fee", + "1 | Index : 987", + "2 | Fee : EDG 0.000000000000000987", + "3 | Chain : Edgeware", + "4 | Nonce : 0", + "5 | Tip : EDG 0.000005552342355555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 411, + "name": "Identity_Set_account_id", + "blob": "17078ed73e0d44934098651253342230b3e67b37bb55f934927ffadbd3d2025686e16269f755d503ae11030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Set account id", + "1 | Index : 55555555", + "2 | New [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "2 | New [2/2] : t8MmbYSG", + "3 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Identity : Set account id", + "1 | Index : 55555555", + "2 | New [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "2 | New [2/2] : t8MmbYSG", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Tip : EDG 0.00000000123456789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 412, + "name": "Identity_Set_account_id", + "blob": "170700ea33a975e8a0e3908fad9be67b6927f1b5d2fdee682c9a21e59b31fb76804b42d503910103d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Set account id", + "1 | Index : 0", + "2 | New [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "2 | New [2/2] : 8kQ2Cbj7", + "3 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Identity : Set account id", + "1 | Index : 0", + "2 | New [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "2 | New [2/2] : 8kQ2Cbj7", + "3 | Chain : Edgeware", + "4 | Nonce : 100", + "5 | Tip : EDG 0.00000000123456789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 413, + "name": "Identity_Set_account_id", + "blob": "17078ed73e0dea33a975e8a0e3908fad9be67b6927f1b5d2fdee682c9a21e59b31fb76804b42d503ae110300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Set account id", + "1 | Index : 55555555", + "2 | New [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "2 | New [2/2] : 8kQ2Cbj7" + ], + "output_expert": [ + "0 | Identity : Set account id", + "1 | Index : 55555555", + "2 | New [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "2 | New [2/2] : 8kQ2Cbj7", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 414, + "name": "Identity_Set_account_id", + "blob": "17078ed73e0d8647fb36b1a57550a3a9ce1810aece028bccdd32d63b89731bc178f750a6d967d5030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Set account id", + "1 | Index : 55555555", + "2 | New [1/2] : kYgcKBprAL2wXJey222eVRzgpHDtat891TyqH15", + "2 | New [2/2] : w9pMuDEH", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Identity : Set account id", + "1 | Index : 55555555", + "2 | New [1/2] : kYgcKBprAL2wXJey222eVRzgpHDtat891TyqH15", + "2 | New [2/2] : w9pMuDEH", + "3 | Chain : Edgeware", + "4 | Nonce : 0", + "5 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "5 | Tip [2/2] : 56789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 415, + "name": "Identity_Set_account_id", + "blob": "17078ed73e0d0a020856a01aa594a4a77167f74b11e13dbbbc934d8c942eca62569d4c58390ed503ae110300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Set account id", + "1 | Index : 55555555", + "2 | New [1/2] : hjjtjpF2ZP5MQ71c5PmPgSVTC3Jv6WL2mK4xcEx", + "2 | New [2/2] : gUKcbvMx" + ], + "output_expert": [ + "0 | Identity : Set account id", + "1 | Index : 55555555", + "2 | New [1/2] : hjjtjpF2ZP5MQ71c5PmPgSVTC3Jv6WL2mK4xcEx", + "2 | New [2/2] : gUKcbvMx", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 416, + "name": "Identity_Kill_identity", + "blob": "170a008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f551166551d5030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Kill identity", + "1 | Target [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Target [2/2] : er4tKs7Z", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Identity : Kill identity", + "1 | Target [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Target [2/2] : er4tKs7Z", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 417, + "name": "Identity_Kill_identity", + "blob": "170a008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f551166551d503ae1103008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Kill identity", + "1 | Target [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Target [2/2] : er4tKs7Z", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Identity : Kill identity", + "1 | Target [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Target [2/2] : er4tKs7Z", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 418, + "name": "Identity_Kill_identity", + "blob": "170a008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f551166551d503046d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Kill identity", + "1 | Target [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Target [2/2] : er4tKs7Z", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Identity : Kill identity", + "1 | Target [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Target [2/2] : er4tKs7Z", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 419, + "name": "Identity_Kill_identity", + "blob": "170a008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f551166551d50391018ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Kill identity", + "1 | Target [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Target [2/2] : er4tKs7Z", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Identity : Kill identity", + "1 | Target [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Target [2/2] : er4tKs7Z", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 420, + "name": "Identity_Kill_identity", + "blob": "170a008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f551166551d503910133158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Kill identity", + "1 | Target [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Target [2/2] : er4tKs7Z", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Identity : Kill identity", + "1 | Target [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Target [2/2] : er4tKs7Z", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 421, + "name": "Identity_Remove_sub", + "blob": "170d008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f551166551d503ae1103000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Remove sub", + "1 | Sub [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Sub [2/2] : er4tKs7Z", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Identity : Remove sub", + "1 | Sub [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Sub [2/2] : er4tKs7Z", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 422, + "name": "Identity_Remove_sub", + "blob": "170d008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f551166551d5030403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Remove sub", + "1 | Sub [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Sub [2/2] : er4tKs7Z", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Identity : Remove sub", + "1 | Sub [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Sub [2/2] : er4tKs7Z", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 423, + "name": "Identity_Remove_sub", + "blob": "170d008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f551166551d503ae1103000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Remove sub", + "1 | Sub [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Sub [2/2] : er4tKs7Z", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Identity : Remove sub", + "1 | Sub [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Sub [2/2] : er4tKs7Z", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 424, + "name": "Identity_Remove_sub", + "blob": "170d008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f551166551d503910103d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Remove sub", + "1 | Sub [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Sub [2/2] : er4tKs7Z", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Identity : Remove sub", + "1 | Sub [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Sub [2/2] : er4tKs7Z", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 425, + "name": "Identity_Remove_sub", + "blob": "170d008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f551166551d50391010b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Remove sub", + "1 | Sub [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Sub [2/2] : er4tKs7Z", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Identity : Remove sub", + "1 | Sub [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Sub [2/2] : er4tKs7Z", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 426, + "name": "Identity_Quit_sub", + "blob": "170ed5038d24002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Quit sub" + ], + "output_expert": [ + "0 | Identity : Quit sub", + "1 | Chain : Edgeware", + "2 | Nonce : 2339", + "3 | Era Phase : 61", + "4 | Era Period : 64", + "5 | Block [1/2] : 00000000000000000000000000000000000000", + "5 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 427, + "name": "Identity_Quit_sub", + "blob": "170ed503046d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Quit sub", + "1 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Identity : Quit sub", + "1 | Chain : Edgeware", + "2 | Nonce : 1", + "3 | Tip : EDG 0.000000000000000987", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 428, + "name": "Identity_Quit_sub", + "blob": "170ed5038d248ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Quit sub", + "1 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Identity : Quit sub", + "1 | Chain : Edgeware", + "2 | Nonce : 2339", + "3 | Tip : EDG 0.000000000055555555", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 429, + "name": "Identity_Quit_sub", + "blob": "170ed503ae1103008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Quit sub", + "1 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Identity : Quit sub", + "1 | Chain : Edgeware", + "2 | Nonce : 50283", + "3 | Tip : EDG 0.000000000055555555", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 430, + "name": "Identity_Quit_sub", + "blob": "170ed5030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Quit sub", + "1 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Identity : Quit sub", + "1 | Chain : Edgeware", + "2 | Nonce : 0", + "3 | Tip : EDG 0.00000000123456789", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 431, + "name": "Recovery_Set_recovered", + "blob": "18010a020856a01aa594a4a77167f74b11e13dbbbc934d8c942eca62569d4c58390e8647fb36b1a57550a3a9ce1810aece028bccdd32d63b89731bc178f750a6d967d503046d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Set recovered", + "1 | Lost [1/2] : hjjtjpF2ZP5MQ71c5PmPgSVTC3Jv6WL2mK4xcEx", + "1 | Lost [2/2] : gUKcbvMx", + "2 | Rescuer [1/2] : kYgcKBprAL2wXJey222eVRzgpHDtat891TyqH15", + "2 | Rescuer [2/2] : w9pMuDEH", + "3 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Recovery : Set recovered", + "1 | Lost [1/2] : hjjtjpF2ZP5MQ71c5PmPgSVTC3Jv6WL2mK4xcEx", + "1 | Lost [2/2] : gUKcbvMx", + "2 | Rescuer [1/2] : kYgcKBprAL2wXJey222eVRzgpHDtat891TyqH15", + "2 | Rescuer [2/2] : w9pMuDEH", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Tip : EDG 0.000000000000000987", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 432, + "name": "Recovery_Set_recovered", + "blob": "18018647fb36b1a57550a3a9ce1810aece028bccdd32d63b89731bc178f750a6d967ea33a975e8a0e3908fad9be67b6927f1b5d2fdee682c9a21e59b31fb76804b42d50391018ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Set recovered", + "1 | Lost [1/2] : kYgcKBprAL2wXJey222eVRzgpHDtat891TyqH15", + "1 | Lost [2/2] : w9pMuDEH", + "2 | Rescuer [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "2 | Rescuer [2/2] : 8kQ2Cbj7", + "3 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Recovery : Set recovered", + "1 | Lost [1/2] : kYgcKBprAL2wXJey222eVRzgpHDtat891TyqH15", + "1 | Lost [2/2] : w9pMuDEH", + "2 | Rescuer [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "2 | Rescuer [2/2] : 8kQ2Cbj7", + "3 | Chain : Edgeware", + "4 | Nonce : 100", + "5 | Tip : EDG 0.000000000055555555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 433, + "name": "Recovery_Set_recovered", + "blob": "180144934098651253342230b3e67b37bb55f934927ffadbd3d2025686e16269f7550a020856a01aa594a4a77167f74b11e13dbbbc934d8c942eca62569d4c58390ed503048ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Set recovered", + "1 | Lost [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "1 | Lost [2/2] : t8MmbYSG", + "2 | Rescuer [1/2] : hjjtjpF2ZP5MQ71c5PmPgSVTC3Jv6WL2mK4xcEx", + "2 | Rescuer [2/2] : gUKcbvMx", + "3 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Recovery : Set recovered", + "1 | Lost [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "1 | Lost [2/2] : t8MmbYSG", + "2 | Rescuer [1/2] : hjjtjpF2ZP5MQ71c5PmPgSVTC3Jv6WL2mK4xcEx", + "2 | Rescuer [2/2] : gUKcbvMx", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Tip : EDG 0.000000000055555555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 434, + "name": "Recovery_Set_recovered", + "blob": "1801ea33a975e8a0e3908fad9be67b6927f1b5d2fdee682c9a21e59b31fb76804b42ea33a975e8a0e3908fad9be67b6927f1b5d2fdee682c9a21e59b31fb76804b42d503910133158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Set recovered", + "1 | Lost [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "1 | Lost [2/2] : 8kQ2Cbj7", + "2 | Rescuer [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "2 | Rescuer [2/2] : 8kQ2Cbj7", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Recovery : Set recovered", + "1 | Lost [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "1 | Lost [2/2] : 8kQ2Cbj7", + "2 | Rescuer [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "2 | Rescuer [2/2] : 8kQ2Cbj7", + "3 | Chain : Edgeware", + "4 | Nonce : 100", + "5 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "5 | Tip [2/2] : 56789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 435, + "name": "Recovery_Set_recovered", + "blob": "18018647fb36b1a57550a3a9ce1810aece028bccdd32d63b89731bc178f750a6d96744934098651253342230b3e67b37bb55f934927ffadbd3d2025686e16269f755d5038d24002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Set recovered", + "1 | Lost [1/2] : kYgcKBprAL2wXJey222eVRzgpHDtat891TyqH15", + "1 | Lost [2/2] : w9pMuDEH", + "2 | Rescuer [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "2 | Rescuer [2/2] : t8MmbYSG" + ], + "output_expert": [ + "0 | Recovery : Set recovered", + "1 | Lost [1/2] : kYgcKBprAL2wXJey222eVRzgpHDtat891TyqH15", + "1 | Lost [2/2] : w9pMuDEH", + "2 | Rescuer [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "2 | Rescuer [2/2] : t8MmbYSG", + "3 | Chain : Edgeware", + "4 | Nonce : 2339", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 436, + "name": "Recovery_Initiate_recovery", + "blob": "180344934098651253342230b3e67b37bb55f934927ffadbd3d2025686e16269f755d5030403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Initiate recovery", + "1 | Account [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "1 | Account [2/2] : t8MmbYSG", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Recovery : Initiate recovery", + "1 | Account [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "1 | Account [2/2] : t8MmbYSG", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 437, + "name": "Recovery_Initiate_recovery", + "blob": "18038647fb36b1a57550a3a9ce1810aece028bccdd32d63b89731bc178f750a6d967d5038d2403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Initiate recovery", + "1 | Account [1/2] : kYgcKBprAL2wXJey222eVRzgpHDtat891TyqH15", + "1 | Account [2/2] : w9pMuDEH", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Recovery : Initiate recovery", + "1 | Account [1/2] : kYgcKBprAL2wXJey222eVRzgpHDtat891TyqH15", + "1 | Account [2/2] : w9pMuDEH", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 438, + "name": "Recovery_Initiate_recovery", + "blob": "180344934098651253342230b3e67b37bb55f934927ffadbd3d2025686e16269f755d503ae11030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Initiate recovery", + "1 | Account [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "1 | Account [2/2] : t8MmbYSG", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Recovery : Initiate recovery", + "1 | Account [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "1 | Account [2/2] : t8MmbYSG", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 439, + "name": "Recovery_Initiate_recovery", + "blob": "18030a020856a01aa594a4a77167f74b11e13dbbbc934d8c942eca62569d4c58390ed503008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Initiate recovery", + "1 | Account [1/2] : hjjtjpF2ZP5MQ71c5PmPgSVTC3Jv6WL2mK4xcEx", + "1 | Account [2/2] : gUKcbvMx", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Recovery : Initiate recovery", + "1 | Account [1/2] : hjjtjpF2ZP5MQ71c5PmPgSVTC3Jv6WL2mK4xcEx", + "1 | Account [2/2] : gUKcbvMx", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 440, + "name": "Recovery_Initiate_recovery", + "blob": "18030a020856a01aa594a4a77167f74b11e13dbbbc934d8c942eca62569d4c58390ed503006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Initiate recovery", + "1 | Account [1/2] : hjjtjpF2ZP5MQ71c5PmPgSVTC3Jv6WL2mK4xcEx", + "1 | Account [2/2] : gUKcbvMx", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Recovery : Initiate recovery", + "1 | Account [1/2] : hjjtjpF2ZP5MQ71c5PmPgSVTC3Jv6WL2mK4xcEx", + "1 | Account [2/2] : gUKcbvMx", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 441, + "name": "Recovery_Vouch_recovery", + "blob": "18040a020856a01aa594a4a77167f74b11e13dbbbc934d8c942eca62569d4c58390eea33a975e8a0e3908fad9be67b6927f1b5d2fdee682c9a21e59b31fb76804b42d5038d2433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Vouch recovery", + "1 | Lost [1/2] : hjjtjpF2ZP5MQ71c5PmPgSVTC3Jv6WL2mK4xcEx", + "1 | Lost [2/2] : gUKcbvMx", + "2 | Rescuer [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "2 | Rescuer [2/2] : 8kQ2Cbj7", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Recovery : Vouch recovery", + "1 | Lost [1/2] : hjjtjpF2ZP5MQ71c5PmPgSVTC3Jv6WL2mK4xcEx", + "1 | Lost [2/2] : gUKcbvMx", + "2 | Rescuer [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "2 | Rescuer [2/2] : 8kQ2Cbj7", + "3 | Chain : Edgeware", + "4 | Nonce : 2339", + "5 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "5 | Tip [2/2] : 56789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 442, + "name": "Recovery_Vouch_recovery", + "blob": "1804ea33a975e8a0e3908fad9be67b6927f1b5d2fdee682c9a21e59b31fb76804b4244934098651253342230b3e67b37bb55f934927ffadbd3d2025686e16269f755d503910103d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Vouch recovery", + "1 | Lost [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "1 | Lost [2/2] : 8kQ2Cbj7", + "2 | Rescuer [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "2 | Rescuer [2/2] : t8MmbYSG", + "3 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Recovery : Vouch recovery", + "1 | Lost [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "1 | Lost [2/2] : 8kQ2Cbj7", + "2 | Rescuer [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "2 | Rescuer [2/2] : t8MmbYSG", + "3 | Chain : Edgeware", + "4 | Nonce : 100", + "5 | Tip : EDG 0.00000000123456789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 443, + "name": "Recovery_Vouch_recovery", + "blob": "180444934098651253342230b3e67b37bb55f934927ffadbd3d2025686e16269f7550a020856a01aa594a4a77167f74b11e13dbbbc934d8c942eca62569d4c58390ed503046d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Vouch recovery", + "1 | Lost [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "1 | Lost [2/2] : t8MmbYSG", + "2 | Rescuer [1/2] : hjjtjpF2ZP5MQ71c5PmPgSVTC3Jv6WL2mK4xcEx", + "2 | Rescuer [2/2] : gUKcbvMx", + "3 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Recovery : Vouch recovery", + "1 | Lost [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "1 | Lost [2/2] : t8MmbYSG", + "2 | Rescuer [1/2] : hjjtjpF2ZP5MQ71c5PmPgSVTC3Jv6WL2mK4xcEx", + "2 | Rescuer [2/2] : gUKcbvMx", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Tip : EDG 0.000000000000000987", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 444, + "name": "Recovery_Vouch_recovery", + "blob": "18040a020856a01aa594a4a77167f74b11e13dbbbc934d8c942eca62569d4c58390e44934098651253342230b3e67b37bb55f934927ffadbd3d2025686e16269f755d503ae11030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Vouch recovery", + "1 | Lost [1/2] : hjjtjpF2ZP5MQ71c5PmPgSVTC3Jv6WL2mK4xcEx", + "1 | Lost [2/2] : gUKcbvMx", + "2 | Rescuer [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "2 | Rescuer [2/2] : t8MmbYSG", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Recovery : Vouch recovery", + "1 | Lost [1/2] : hjjtjpF2ZP5MQ71c5PmPgSVTC3Jv6WL2mK4xcEx", + "1 | Lost [2/2] : gUKcbvMx", + "2 | Rescuer [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "2 | Rescuer [2/2] : t8MmbYSG", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "5 | Tip [2/2] : 56789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 445, + "name": "Recovery_Vouch_recovery", + "blob": "18048647fb36b1a57550a3a9ce1810aece028bccdd32d63b89731bc178f750a6d9678647fb36b1a57550a3a9ce1810aece028bccdd32d63b89731bc178f750a6d967d5030403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Vouch recovery", + "1 | Lost [1/2] : kYgcKBprAL2wXJey222eVRzgpHDtat891TyqH15", + "1 | Lost [2/2] : w9pMuDEH", + "2 | Rescuer [1/2] : kYgcKBprAL2wXJey222eVRzgpHDtat891TyqH15", + "2 | Rescuer [2/2] : w9pMuDEH", + "3 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Recovery : Vouch recovery", + "1 | Lost [1/2] : kYgcKBprAL2wXJey222eVRzgpHDtat891TyqH15", + "1 | Lost [2/2] : w9pMuDEH", + "2 | Rescuer [1/2] : kYgcKBprAL2wXJey222eVRzgpHDtat891TyqH15", + "2 | Rescuer [2/2] : w9pMuDEH", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Tip : EDG 0.00000000123456789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 446, + "name": "Recovery_Claim_recovery", + "blob": "1805ea33a975e8a0e3908fad9be67b6927f1b5d2fdee682c9a21e59b31fb76804b42d5039101002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Claim recovery", + "1 | Account [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "1 | Account [2/2] : 8kQ2Cbj7" + ], + "output_expert": [ + "0 | Recovery : Claim recovery", + "1 | Account [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "1 | Account [2/2] : 8kQ2Cbj7", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 447, + "name": "Recovery_Claim_recovery", + "blob": "18058647fb36b1a57550a3a9ce1810aece028bccdd32d63b89731bc178f750a6d967d5030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Claim recovery", + "1 | Account [1/2] : kYgcKBprAL2wXJey222eVRzgpHDtat891TyqH15", + "1 | Account [2/2] : w9pMuDEH", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Recovery : Claim recovery", + "1 | Account [1/2] : kYgcKBprAL2wXJey222eVRzgpHDtat891TyqH15", + "1 | Account [2/2] : w9pMuDEH", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 448, + "name": "Recovery_Claim_recovery", + "blob": "18058647fb36b1a57550a3a9ce1810aece028bccdd32d63b89731bc178f750a6d967d503ae110300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Claim recovery", + "1 | Account [1/2] : kYgcKBprAL2wXJey222eVRzgpHDtat891TyqH15", + "1 | Account [2/2] : w9pMuDEH" + ], + "output_expert": [ + "0 | Recovery : Claim recovery", + "1 | Account [1/2] : kYgcKBprAL2wXJey222eVRzgpHDtat891TyqH15", + "1 | Account [2/2] : w9pMuDEH", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 449, + "name": "Recovery_Claim_recovery", + "blob": "1805ea33a975e8a0e3908fad9be67b6927f1b5d2fdee682c9a21e59b31fb76804b42d5030433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Claim recovery", + "1 | Account [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "1 | Account [2/2] : 8kQ2Cbj7", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Recovery : Claim recovery", + "1 | Account [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "1 | Account [2/2] : 8kQ2Cbj7", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 450, + "name": "Recovery_Claim_recovery", + "blob": "18058647fb36b1a57550a3a9ce1810aece028bccdd32d63b89731bc178f750a6d967d5030433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Claim recovery", + "1 | Account [1/2] : kYgcKBprAL2wXJey222eVRzgpHDtat891TyqH15", + "1 | Account [2/2] : w9pMuDEH", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Recovery : Claim recovery", + "1 | Account [1/2] : kYgcKBprAL2wXJey222eVRzgpHDtat891TyqH15", + "1 | Account [2/2] : w9pMuDEH", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 451, + "name": "Recovery_Close_recovery", + "blob": "180644934098651253342230b3e67b37bb55f934927ffadbd3d2025686e16269f755d5030403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Close recovery", + "1 | Rescuer [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "1 | Rescuer [2/2] : t8MmbYSG", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Recovery : Close recovery", + "1 | Rescuer [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "1 | Rescuer [2/2] : t8MmbYSG", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 452, + "name": "Recovery_Close_recovery", + "blob": "18060a020856a01aa594a4a77167f74b11e13dbbbc934d8c942eca62569d4c58390ed503048ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Close recovery", + "1 | Rescuer [1/2] : hjjtjpF2ZP5MQ71c5PmPgSVTC3Jv6WL2mK4xcEx", + "1 | Rescuer [2/2] : gUKcbvMx", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Recovery : Close recovery", + "1 | Rescuer [1/2] : hjjtjpF2ZP5MQ71c5PmPgSVTC3Jv6WL2mK4xcEx", + "1 | Rescuer [2/2] : gUKcbvMx", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 453, + "name": "Recovery_Close_recovery", + "blob": "1806ea33a975e8a0e3908fad9be67b6927f1b5d2fdee682c9a21e59b31fb76804b42d5030433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Close recovery", + "1 | Rescuer [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "1 | Rescuer [2/2] : 8kQ2Cbj7", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Recovery : Close recovery", + "1 | Rescuer [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "1 | Rescuer [2/2] : 8kQ2Cbj7", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 454, + "name": "Recovery_Close_recovery", + "blob": "18060a020856a01aa594a4a77167f74b11e13dbbbc934d8c942eca62569d4c58390ed503008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Close recovery", + "1 | Rescuer [1/2] : hjjtjpF2ZP5MQ71c5PmPgSVTC3Jv6WL2mK4xcEx", + "1 | Rescuer [2/2] : gUKcbvMx", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Recovery : Close recovery", + "1 | Rescuer [1/2] : hjjtjpF2ZP5MQ71c5PmPgSVTC3Jv6WL2mK4xcEx", + "1 | Rescuer [2/2] : gUKcbvMx", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 455, + "name": "Recovery_Close_recovery", + "blob": "18060a020856a01aa594a4a77167f74b11e13dbbbc934d8c942eca62569d4c58390ed50300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Close recovery", + "1 | Rescuer [1/2] : hjjtjpF2ZP5MQ71c5PmPgSVTC3Jv6WL2mK4xcEx", + "1 | Rescuer [2/2] : gUKcbvMx" + ], + "output_expert": [ + "0 | Recovery : Close recovery", + "1 | Rescuer [1/2] : hjjtjpF2ZP5MQ71c5PmPgSVTC3Jv6WL2mK4xcEx", + "1 | Rescuer [2/2] : gUKcbvMx", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 456, + "name": "Recovery_Remove_recovery", + "blob": "1807d5038d240b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Remove recovery", + "1 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Recovery : Remove recovery", + "1 | Chain : Edgeware", + "2 | Nonce : 2339", + "3 | Tip : EDG 0.000005552342355555", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 457, + "name": "Recovery_Remove_recovery", + "blob": "1807d503000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Remove recovery", + "1 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Recovery : Remove recovery", + "1 | Chain : Edgeware", + "2 | Nonce : 0", + "3 | Tip : EDG 0.000005552342355555", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 458, + "name": "Recovery_Remove_recovery", + "blob": "1807d50391010b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Remove recovery", + "1 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Recovery : Remove recovery", + "1 | Chain : Edgeware", + "2 | Nonce : 100", + "3 | Tip : EDG 0.000005552342355555", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 459, + "name": "Recovery_Remove_recovery", + "blob": "1807d503ae1103006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Remove recovery", + "1 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Recovery : Remove recovery", + "1 | Chain : Edgeware", + "2 | Nonce : 50283", + "3 | Tip : EDG 0.000000000000000987", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 460, + "name": "Recovery_Remove_recovery", + "blob": "1807d5038d2433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Remove recovery", + "1 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "1 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Recovery : Remove recovery", + "1 | Chain : Edgeware", + "2 | Nonce : 2339", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 461, + "name": "Recovery_Cancel_recovered", + "blob": "18088647fb36b1a57550a3a9ce1810aece028bccdd32d63b89731bc178f750a6d967d503ae1103008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Cancel recovered", + "1 | Account [1/2] : kYgcKBprAL2wXJey222eVRzgpHDtat891TyqH15", + "1 | Account [2/2] : w9pMuDEH", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Recovery : Cancel recovered", + "1 | Account [1/2] : kYgcKBprAL2wXJey222eVRzgpHDtat891TyqH15", + "1 | Account [2/2] : w9pMuDEH", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 462, + "name": "Recovery_Cancel_recovered", + "blob": "1808ea33a975e8a0e3908fad9be67b6927f1b5d2fdee682c9a21e59b31fb76804b42d50300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Cancel recovered", + "1 | Account [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "1 | Account [2/2] : 8kQ2Cbj7" + ], + "output_expert": [ + "0 | Recovery : Cancel recovered", + "1 | Account [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "1 | Account [2/2] : 8kQ2Cbj7", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 463, + "name": "Recovery_Cancel_recovered", + "blob": "180844934098651253342230b3e67b37bb55f934927ffadbd3d2025686e16269f755d5038d240b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Cancel recovered", + "1 | Account [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "1 | Account [2/2] : t8MmbYSG", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Recovery : Cancel recovered", + "1 | Account [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "1 | Account [2/2] : t8MmbYSG", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 464, + "name": "Recovery_Cancel_recovered", + "blob": "1808ea33a975e8a0e3908fad9be67b6927f1b5d2fdee682c9a21e59b31fb76804b42d5030403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Cancel recovered", + "1 | Account [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "1 | Account [2/2] : 8kQ2Cbj7", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Recovery : Cancel recovered", + "1 | Account [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "1 | Account [2/2] : 8kQ2Cbj7", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 465, + "name": "Recovery_Cancel_recovered", + "blob": "18080a020856a01aa594a4a77167f74b11e13dbbbc934d8c942eca62569d4c58390ed503048ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Cancel recovered", + "1 | Account [1/2] : hjjtjpF2ZP5MQ71c5PmPgSVTC3Jv6WL2mK4xcEx", + "1 | Account [2/2] : gUKcbvMx", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Recovery : Cancel recovered", + "1 | Account [1/2] : hjjtjpF2ZP5MQ71c5PmPgSVTC3Jv6WL2mK4xcEx", + "1 | Account [2/2] : gUKcbvMx", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 466, + "name": "Vesting_Vest", + "blob": "1900d5039101002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Vesting : Vest" + ], + "output_expert": [ + "0 | Vesting : Vest", + "1 | Chain : Edgeware", + "2 | Nonce : 100", + "3 | Era Phase : 61", + "4 | Era Period : 64", + "5 | Block [1/2] : 00000000000000000000000000000000000000", + "5 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 467, + "name": "Vesting_Vest", + "blob": "1900d50300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Vesting : Vest" + ], + "output_expert": [ + "0 | Vesting : Vest", + "1 | Chain : Edgeware", + "2 | Nonce : 0", + "3 | Era Phase : 61", + "4 | Era Period : 64", + "5 | Block [1/2] : 00000000000000000000000000000000000000", + "5 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 468, + "name": "Vesting_Vest", + "blob": "1900d5030433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Vesting : Vest", + "1 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "1 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Vesting : Vest", + "1 | Chain : Edgeware", + "2 | Nonce : 1", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 469, + "name": "Vesting_Vest", + "blob": "1900d5038d2433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Vesting : Vest", + "1 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "1 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Vesting : Vest", + "1 | Chain : Edgeware", + "2 | Nonce : 2339", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 470, + "name": "Vesting_Vest", + "blob": "1900d503048ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Vesting : Vest", + "1 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Vesting : Vest", + "1 | Chain : Edgeware", + "2 | Nonce : 1", + "3 | Tip : EDG 0.000000000055555555", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 471, + "name": "Vesting_Vest_other", + "blob": "1901008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f551166551d503008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Vesting : Vest other", + "1 | Target [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Target [2/2] : er4tKs7Z", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Vesting : Vest other", + "1 | Target [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Target [2/2] : er4tKs7Z", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 472, + "name": "Vesting_Vest_other", + "blob": "1901008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f551166551d503ae1103008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Vesting : Vest other", + "1 | Target [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Target [2/2] : er4tKs7Z", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Vesting : Vest other", + "1 | Target [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Target [2/2] : er4tKs7Z", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 473, + "name": "Vesting_Vest_other", + "blob": "1901008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f551166551d50304002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Vesting : Vest other", + "1 | Target [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Target [2/2] : er4tKs7Z" + ], + "output_expert": [ + "0 | Vesting : Vest other", + "1 | Target [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Target [2/2] : er4tKs7Z", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 474, + "name": "Vesting_Vest_other", + "blob": "1901008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f551166551d503910103d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Vesting : Vest other", + "1 | Target [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Target [2/2] : er4tKs7Z", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Vesting : Vest other", + "1 | Target [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Target [2/2] : er4tKs7Z", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 475, + "name": "Vesting_Vest_other", + "blob": "1901008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f551166551d503046d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Vesting : Vest other", + "1 | Target [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Target [2/2] : er4tKs7Z", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Vesting : Vest other", + "1 | Target [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Target [2/2] : er4tKs7Z", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 476, + "name": "Vesting_Vested_transfer", + "blob": "1902008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f551166551aa062ffebfee8966a728544b52c0587d9f4138ef69f4cd097835e56dcad40969520173e6d50300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Vesting : Vested transfer", + "1 | Target [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Target [2/2] : er4tKs7Z", + "2 | Schedule [1/5] : EDG 166614322339331893722.7864300272515", + "2 | Schedule [2/5] : 17098", + "2 | Schedule [3/5] : EDG 139619986138078744722.0403194702903", + "2 | Schedule [4/5] : 54591", + "2 | Schedule [5/5] : 3866296658" + ], + "output_expert": [ + "0 | Vesting : Vested transfer", + "1 | Target [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Target [2/2] : er4tKs7Z", + "2 | Schedule [1/5] : EDG 166614322339331893722.7864300272515", + "2 | Schedule [2/5] : 17098", + "2 | Schedule [3/5] : EDG 139619986138078744722.0403194702903", + "2 | Schedule [4/5] : 54591", + "2 | Schedule [5/5] : 3866296658", + "3 | Chain : Edgeware", + "4 | Nonce : 0", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 477, + "name": "Vesting_Vested_transfer", + "blob": "1902008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f55116655125f58d795b73016df785498a4ed2aff65930a1e163682abb262df7a7791578080311d95ad50391018ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Vesting : Vested transfer", + "1 | Target [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Target [2/2] : er4tKs7Z", + "2 | Schedule [1/5] : EDG 327903004441944158111.8569162504518", + "2 | Schedule [2/5] : 99685", + "2 | Schedule [3/5] : EDG 11257335158495661748.28201838334346", + "2 | Schedule [4/5] : 4537", + "2 | Schedule [5/5] : 1524175107", + "3 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Vesting : Vested transfer", + "1 | Target [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Target [2/2] : er4tKs7Z", + "2 | Schedule [1/5] : EDG 327903004441944158111.8569162504518", + "2 | Schedule [2/5] : 99685", + "2 | Schedule [3/5] : EDG 11257335158495661748.28201838334346", + "2 | Schedule [4/5] : 4537", + "2 | Schedule [5/5] : 1524175107", + "3 | Chain : Edgeware", + "4 | Nonce : 100", + "5 | Tip : EDG 0.000000000055555555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 478, + "name": "Vesting_Vested_transfer", + "blob": "1902008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f5511665516a2e4863317c5e82322ed4e444108b2516eeefede7b0ea8b568c4d717bb3e2d9b3a7619cd5038d24002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Vesting : Vested transfer", + "1 | Target [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Target [2/2] : er4tKs7Z", + "2 | Schedule [1/5] : EDG 49903495084266030408.12281490489109", + "2 | Schedule [2/5] : 2586", + "2 | Schedule [3/5] : EDG 289619574506804214493.4254113428267", + "2 | Schedule [4/5] : 28982", + "2 | Schedule [5/5] : 2623645619" + ], + "output_expert": [ + "0 | Vesting : Vested transfer", + "1 | Target [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Target [2/2] : er4tKs7Z", + "2 | Schedule [1/5] : EDG 49903495084266030408.12281490489109", + "2 | Schedule [2/5] : 2586", + "2 | Schedule [3/5] : EDG 289619574506804214493.4254113428267", + "2 | Schedule [4/5] : 28982", + "2 | Schedule [5/5] : 2623645619", + "3 | Chain : Edgeware", + "4 | Nonce : 2339", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 479, + "name": "Vesting_Vested_transfer", + "blob": "1902008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f551166551aa062ffebfee8966a728544b52c0587d9f4138ef69f4cd097835e56dcad40969520173e6d503046d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Vesting : Vested transfer", + "1 | Target [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Target [2/2] : er4tKs7Z", + "2 | Schedule [1/5] : EDG 166614322339331893722.7864300272515", + "2 | Schedule [2/5] : 17098", + "2 | Schedule [3/5] : EDG 139619986138078744722.0403194702903", + "2 | Schedule [4/5] : 54591", + "2 | Schedule [5/5] : 3866296658", + "3 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Vesting : Vested transfer", + "1 | Target [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Target [2/2] : er4tKs7Z", + "2 | Schedule [1/5] : EDG 166614322339331893722.7864300272515", + "2 | Schedule [2/5] : 17098", + "2 | Schedule [3/5] : EDG 139619986138078744722.0403194702903", + "2 | Schedule [4/5] : 54591", + "2 | Schedule [5/5] : 3866296658", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Tip : EDG 0.000000000000000987", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 480, + "name": "Vesting_Vested_transfer", + "blob": "1902008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f55116655125f58d795b73016df785498a4ed2aff65930a1e163682abb262df7a7791578080311d95ad5030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Vesting : Vested transfer", + "1 | Target [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Target [2/2] : er4tKs7Z", + "2 | Schedule [1/5] : EDG 327903004441944158111.8569162504518", + "2 | Schedule [2/5] : 99685", + "2 | Schedule [3/5] : EDG 11257335158495661748.28201838334346", + "2 | Schedule [4/5] : 4537", + "2 | Schedule [5/5] : 1524175107", + "3 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Vesting : Vested transfer", + "1 | Target [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Target [2/2] : er4tKs7Z", + "2 | Schedule [1/5] : EDG 327903004441944158111.8569162504518", + "2 | Schedule [2/5] : 99685", + "2 | Schedule [3/5] : EDG 11257335158495661748.28201838334346", + "2 | Schedule [4/5] : 4537", + "2 | Schedule [5/5] : 1524175107", + "3 | Chain : Edgeware", + "4 | Nonce : 0", + "5 | Tip : EDG 0.00000000123456789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 481, + "name": "Vesting_Force_vested_transfer", + "blob": "1903008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f551166551008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f5511665516a2e4863317c5e82322ed4e444108b2516eeefede7b0ea8b568c4d717bb3e2d9b3a7619cd503006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Vesting : Force vested transfer", + "1 | Source [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Source [2/2] : er4tKs7Z", + "2 | Target [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "2 | Target [2/2] : er4tKs7Z", + "3 | Schedule [1/5] : EDG 49903495084266030408.12281490489109", + "3 | Schedule [2/5] : 2586", + "3 | Schedule [3/5] : EDG 289619574506804214493.4254113428267", + "3 | Schedule [4/5] : 28982", + "3 | Schedule [5/5] : 2623645619", + "4 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Vesting : Force vested transfer", + "1 | Source [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Source [2/2] : er4tKs7Z", + "2 | Target [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "2 | Target [2/2] : er4tKs7Z", + "3 | Schedule [1/5] : EDG 49903495084266030408.12281490489109", + "3 | Schedule [2/5] : 2586", + "3 | Schedule [3/5] : EDG 289619574506804214493.4254113428267", + "3 | Schedule [4/5] : 28982", + "3 | Schedule [5/5] : 2623645619", + "4 | Chain : Edgeware", + "5 | Nonce : 0", + "6 | Tip : EDG 0.000000000000000987", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 482, + "name": "Vesting_Force_vested_transfer", + "blob": "1903008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f551166551008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f5511665516a2e4863317c5e82322ed4e444108b2516eeefede7b0ea8b568c4d717bb3e2d9b3a7619cd503008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Vesting : Force vested transfer", + "1 | Source [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Source [2/2] : er4tKs7Z", + "2 | Target [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "2 | Target [2/2] : er4tKs7Z", + "3 | Schedule [1/5] : EDG 49903495084266030408.12281490489109", + "3 | Schedule [2/5] : 2586", + "3 | Schedule [3/5] : EDG 289619574506804214493.4254113428267", + "3 | Schedule [4/5] : 28982", + "3 | Schedule [5/5] : 2623645619", + "4 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Vesting : Force vested transfer", + "1 | Source [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Source [2/2] : er4tKs7Z", + "2 | Target [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "2 | Target [2/2] : er4tKs7Z", + "3 | Schedule [1/5] : EDG 49903495084266030408.12281490489109", + "3 | Schedule [2/5] : 2586", + "3 | Schedule [3/5] : EDG 289619574506804214493.4254113428267", + "3 | Schedule [4/5] : 28982", + "3 | Schedule [5/5] : 2623645619", + "4 | Chain : Edgeware", + "5 | Nonce : 0", + "6 | Tip : EDG 0.000000000055555555", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 483, + "name": "Vesting_Force_vested_transfer", + "blob": "1903008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f551166551008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f5511665516a2e4863317c5e82322ed4e444108b2516eeefede7b0ea8b568c4d717bb3e2d9b3a7619cd503ae110300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Vesting : Force vested transfer", + "1 | Source [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Source [2/2] : er4tKs7Z", + "2 | Target [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "2 | Target [2/2] : er4tKs7Z", + "3 | Schedule [1/5] : EDG 49903495084266030408.12281490489109", + "3 | Schedule [2/5] : 2586", + "3 | Schedule [3/5] : EDG 289619574506804214493.4254113428267", + "3 | Schedule [4/5] : 28982", + "3 | Schedule [5/5] : 2623645619" + ], + "output_expert": [ + "0 | Vesting : Force vested transfer", + "1 | Source [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Source [2/2] : er4tKs7Z", + "2 | Target [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "2 | Target [2/2] : er4tKs7Z", + "3 | Schedule [1/5] : EDG 49903495084266030408.12281490489109", + "3 | Schedule [2/5] : 2586", + "3 | Schedule [3/5] : EDG 289619574506804214493.4254113428267", + "3 | Schedule [4/5] : 28982", + "3 | Schedule [5/5] : 2623645619", + "4 | Chain : Edgeware", + "5 | Nonce : 50283", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 484, + "name": "Vesting_Force_vested_transfer", + "blob": "1903008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f551166551008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f551166551aa062ffebfee8966a728544b52c0587d9f4138ef69f4cd097835e56dcad40969520173e6d503ae1103008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Vesting : Force vested transfer", + "1 | Source [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Source [2/2] : er4tKs7Z", + "2 | Target [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "2 | Target [2/2] : er4tKs7Z", + "3 | Schedule [1/5] : EDG 166614322339331893722.7864300272515", + "3 | Schedule [2/5] : 17098", + "3 | Schedule [3/5] : EDG 139619986138078744722.0403194702903", + "3 | Schedule [4/5] : 54591", + "3 | Schedule [5/5] : 3866296658", + "4 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Vesting : Force vested transfer", + "1 | Source [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Source [2/2] : er4tKs7Z", + "2 | Target [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "2 | Target [2/2] : er4tKs7Z", + "3 | Schedule [1/5] : EDG 166614322339331893722.7864300272515", + "3 | Schedule [2/5] : 17098", + "3 | Schedule [3/5] : EDG 139619986138078744722.0403194702903", + "3 | Schedule [4/5] : 54591", + "3 | Schedule [5/5] : 3866296658", + "4 | Chain : Edgeware", + "5 | Nonce : 50283", + "6 | Tip : EDG 0.000000000055555555", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 485, + "name": "Vesting_Force_vested_transfer", + "blob": "1903008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f551166551008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f551166551aa062ffebfee8966a728544b52c0587d9f4138ef69f4cd097835e56dcad40969520173e6d5030433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Vesting : Force vested transfer", + "1 | Source [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Source [2/2] : er4tKs7Z", + "2 | Target [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "2 | Target [2/2] : er4tKs7Z", + "3 | Schedule [1/5] : EDG 166614322339331893722.7864300272515", + "3 | Schedule [2/5] : 17098", + "3 | Schedule [3/5] : EDG 139619986138078744722.0403194702903", + "3 | Schedule [4/5] : 54591", + "3 | Schedule [5/5] : 3866296658", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Vesting : Force vested transfer", + "1 | Source [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "1 | Source [2/2] : er4tKs7Z", + "2 | Target [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "2 | Target [2/2] : er4tKs7Z", + "3 | Schedule [1/5] : EDG 166614322339331893722.7864300272515", + "3 | Schedule [2/5] : 17098", + "3 | Schedule [3/5] : EDG 139619986138078744722.0403194702903", + "3 | Schedule [4/5] : 54591", + "3 | Schedule [5/5] : 3866296658", + "4 | Chain : Edgeware", + "5 | Nonce : 1", + "6 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "6 | Tip [2/2] : 56789", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 486, + "name": "Treasuryreward_Set_current_payout", + "blob": "2000d2040000000000000000000000000000d5030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Treasuryreward : Set current payout", + "1 | Payout : EDG 0.000000000000001234", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Treasuryreward : Set current payout", + "1 | Payout : EDG 0.000000000000001234", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 487, + "name": "Treasuryreward_Set_current_payout", + "blob": "2000d2040000000000000000000000000000d5038d2403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Treasuryreward : Set current payout", + "1 | Payout : EDG 0.000000000000001234", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Treasuryreward : Set current payout", + "1 | Payout : EDG 0.000000000000001234", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 488, + "name": "Treasuryreward_Set_current_payout", + "blob": "2000d2040000000000000000000000000000d503000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Treasuryreward : Set current payout", + "1 | Payout : EDG 0.000000000000001234", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Treasuryreward : Set current payout", + "1 | Payout : EDG 0.000000000000001234", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 489, + "name": "Treasuryreward_Set_current_payout", + "blob": "2000d2040000000000000000000000000000d5038d246d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Treasuryreward : Set current payout", + "1 | Payout : EDG 0.000000000000001234", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Treasuryreward : Set current payout", + "1 | Payout : EDG 0.000000000000001234", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 490, + "name": "Treasuryreward_Set_current_payout", + "blob": "2000d2040000000000000000000000000000d5030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Treasuryreward : Set current payout", + "1 | Payout : EDG 0.000000000000001234", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Treasuryreward : Set current payout", + "1 | Payout : EDG 0.000000000000001234", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 491, + "name": "Treasuryreward_Set_minting_interval", + "blob": "20017b000000d503046d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Treasuryreward : Set minting interval", + "1 | Interval : 123", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Treasuryreward : Set minting interval", + "1 | Interval : 123", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 492, + "name": "Treasuryreward_Set_minting_interval", + "blob": "2001ac350000d50391010b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Treasuryreward : Set minting interval", + "1 | Interval : 13740", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Treasuryreward : Set minting interval", + "1 | Interval : 13740", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 493, + "name": "Treasuryreward_Set_minting_interval", + "blob": "2001b3e30100d503ae11030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Treasuryreward : Set minting interval", + "1 | Interval : 123827", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Treasuryreward : Set minting interval", + "1 | Interval : 123827", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 494, + "name": "Treasuryreward_Set_minting_interval", + "blob": "200100000000d5038d2403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Treasuryreward : Set minting interval", + "1 | Interval : 0", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Treasuryreward : Set minting interval", + "1 | Interval : 0", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 495, + "name": "Treasuryreward_Set_minting_interval", + "blob": "20017b000000d50391018ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Treasuryreward : Set minting interval", + "1 | Interval : 123", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Treasuryreward : Set minting interval", + "1 | Interval : 123", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 496, + "name": "Chainbridge_Set_threshold", + "blob": "2300d3040000d5038d2403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Chainbridge : Set threshold", + "1 | Threshold : 1235", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Chainbridge : Set threshold", + "1 | Threshold : 1235", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 497, + "name": "Chainbridge_Set_threshold", + "blob": "2300f7010000d503ae1103008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Chainbridge : Set threshold", + "1 | Threshold : 503", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Chainbridge : Set threshold", + "1 | Threshold : 503", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 498, + "name": "Chainbridge_Set_threshold", + "blob": "23009d1c0000d503ae1103006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Chainbridge : Set threshold", + "1 | Threshold : 7325", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Chainbridge : Set threshold", + "1 | Threshold : 7325", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 499, + "name": "Chainbridge_Set_threshold", + "blob": "2300f7010000d5039101002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Chainbridge : Set threshold", + "1 | Threshold : 503" + ], + "output_expert": [ + "0 | Chainbridge : Set threshold", + "1 | Threshold : 503", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 500, + "name": "Chainbridge_Set_threshold", + "blob": "230034300000d5038d240b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Chainbridge : Set threshold", + "1 | Threshold : 12340", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Chainbridge : Set threshold", + "1 | Threshold : 12340", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 501, + "name": "Chainbridge_Add_relayer", + "blob": "230444934098651253342230b3e67b37bb55f934927ffadbd3d2025686e16269f755d503ae11030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Chainbridge : Add relayer", + "1 | V [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "1 | V [2/2] : t8MmbYSG", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Chainbridge : Add relayer", + "1 | V [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "1 | V [2/2] : t8MmbYSG", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 502, + "name": "Chainbridge_Add_relayer", + "blob": "230444934098651253342230b3e67b37bb55f934927ffadbd3d2025686e16269f755d503910133158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Chainbridge : Add relayer", + "1 | V [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "1 | V [2/2] : t8MmbYSG", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Chainbridge : Add relayer", + "1 | V [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "1 | V [2/2] : t8MmbYSG", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 503, + "name": "Chainbridge_Add_relayer", + "blob": "230444934098651253342230b3e67b37bb55f934927ffadbd3d2025686e16269f755d503ae1103006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Chainbridge : Add relayer", + "1 | V [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "1 | V [2/2] : t8MmbYSG", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Chainbridge : Add relayer", + "1 | V [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "1 | V [2/2] : t8MmbYSG", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 504, + "name": "Chainbridge_Add_relayer", + "blob": "2304ea33a975e8a0e3908fad9be67b6927f1b5d2fdee682c9a21e59b31fb76804b42d503910133158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Chainbridge : Add relayer", + "1 | V [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "1 | V [2/2] : 8kQ2Cbj7", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Chainbridge : Add relayer", + "1 | V [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "1 | V [2/2] : 8kQ2Cbj7", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 505, + "name": "Chainbridge_Add_relayer", + "blob": "2304ea33a975e8a0e3908fad9be67b6927f1b5d2fdee682c9a21e59b31fb76804b42d50391016d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Chainbridge : Add relayer", + "1 | V [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "1 | V [2/2] : 8kQ2Cbj7", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Chainbridge : Add relayer", + "1 | V [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "1 | V [2/2] : 8kQ2Cbj7", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 506, + "name": "Chainbridge_Remove_relayer", + "blob": "23058647fb36b1a57550a3a9ce1810aece028bccdd32d63b89731bc178f750a6d967d5030403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Chainbridge : Remove relayer", + "1 | V [1/2] : kYgcKBprAL2wXJey222eVRzgpHDtat891TyqH15", + "1 | V [2/2] : w9pMuDEH", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Chainbridge : Remove relayer", + "1 | V [1/2] : kYgcKBprAL2wXJey222eVRzgpHDtat891TyqH15", + "1 | V [2/2] : w9pMuDEH", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 507, + "name": "Chainbridge_Remove_relayer", + "blob": "23058647fb36b1a57550a3a9ce1810aece028bccdd32d63b89731bc178f750a6d967d503046d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Chainbridge : Remove relayer", + "1 | V [1/2] : kYgcKBprAL2wXJey222eVRzgpHDtat891TyqH15", + "1 | V [2/2] : w9pMuDEH", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Chainbridge : Remove relayer", + "1 | V [1/2] : kYgcKBprAL2wXJey222eVRzgpHDtat891TyqH15", + "1 | V [2/2] : w9pMuDEH", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 508, + "name": "Chainbridge_Remove_relayer", + "blob": "2305ea33a975e8a0e3908fad9be67b6927f1b5d2fdee682c9a21e59b31fb76804b42d50391016d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Chainbridge : Remove relayer", + "1 | V [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "1 | V [2/2] : 8kQ2Cbj7", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Chainbridge : Remove relayer", + "1 | V [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "1 | V [2/2] : 8kQ2Cbj7", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 509, + "name": "Chainbridge_Remove_relayer", + "blob": "230544934098651253342230b3e67b37bb55f934927ffadbd3d2025686e16269f755d503008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Chainbridge : Remove relayer", + "1 | V [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "1 | V [2/2] : t8MmbYSG", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Chainbridge : Remove relayer", + "1 | V [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "1 | V [2/2] : t8MmbYSG", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 510, + "name": "Chainbridge_Remove_relayer", + "blob": "23050a020856a01aa594a4a77167f74b11e13dbbbc934d8c942eca62569d4c58390ed5039101002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Chainbridge : Remove relayer", + "1 | V [1/2] : hjjtjpF2ZP5MQ71c5PmPgSVTC3Jv6WL2mK4xcEx", + "1 | V [2/2] : gUKcbvMx" + ], + "output_expert": [ + "0 | Chainbridge : Remove relayer", + "1 | V [1/2] : hjjtjpF2ZP5MQ71c5PmPgSVTC3Jv6WL2mK4xcEx", + "1 | V [2/2] : gUKcbvMx", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 511, + "name": "Edgebridge_Transfer", + "blob": "240144934098651253342230b3e67b37bb55f934927ffadbd3d2025686e16269f755d2040000000000000000000000000000d50391016d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Edgebridge : Transfer", + "1 | To [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "1 | To [2/2] : t8MmbYSG", + "2 | Amount : EDG 0.000000000000001234", + "3 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Edgebridge : Transfer", + "1 | To [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "1 | To [2/2] : t8MmbYSG", + "2 | Amount : EDG 0.000000000000001234", + "3 | Chain : Edgeware", + "4 | Nonce : 100", + "5 | Tip : EDG 0.000000000000000987", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 512, + "name": "Edgebridge_Transfer", + "blob": "2401ea33a975e8a0e3908fad9be67b6927f1b5d2fdee682c9a21e59b31fb76804b42d2040000000000000000000000000000d5030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Edgebridge : Transfer", + "1 | To [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "1 | To [2/2] : 8kQ2Cbj7", + "2 | Amount : EDG 0.000000000000001234", + "3 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Edgebridge : Transfer", + "1 | To [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "1 | To [2/2] : 8kQ2Cbj7", + "2 | Amount : EDG 0.000000000000001234", + "3 | Chain : Edgeware", + "4 | Nonce : 0", + "5 | Tip : EDG 0.00000000123456789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 513, + "name": "Edgebridge_Transfer", + "blob": "2401ea33a975e8a0e3908fad9be67b6927f1b5d2fdee682c9a21e59b31fb76804b42d2040000000000000000000000000000d503910103d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Edgebridge : Transfer", + "1 | To [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "1 | To [2/2] : 8kQ2Cbj7", + "2 | Amount : EDG 0.000000000000001234", + "3 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Edgebridge : Transfer", + "1 | To [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "1 | To [2/2] : 8kQ2Cbj7", + "2 | Amount : EDG 0.000000000000001234", + "3 | Chain : Edgeware", + "4 | Nonce : 100", + "5 | Tip : EDG 0.00000000123456789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 514, + "name": "Edgebridge_Transfer", + "blob": "24010a020856a01aa594a4a77167f74b11e13dbbbc934d8c942eca62569d4c58390ed2040000000000000000000000000000d503008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Edgebridge : Transfer", + "1 | To [1/2] : hjjtjpF2ZP5MQ71c5PmPgSVTC3Jv6WL2mK4xcEx", + "1 | To [2/2] : gUKcbvMx", + "2 | Amount : EDG 0.000000000000001234", + "3 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Edgebridge : Transfer", + "1 | To [1/2] : hjjtjpF2ZP5MQ71c5PmPgSVTC3Jv6WL2mK4xcEx", + "1 | To [2/2] : gUKcbvMx", + "2 | Amount : EDG 0.000000000000001234", + "3 | Chain : Edgeware", + "4 | Nonce : 0", + "5 | Tip : EDG 0.000000000055555555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 515, + "name": "Edgebridge_Transfer", + "blob": "24018647fb36b1a57550a3a9ce1810aece028bccdd32d63b89731bc178f750a6d967d2040000000000000000000000000000d5030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Edgebridge : Transfer", + "1 | To [1/2] : kYgcKBprAL2wXJey222eVRzgpHDtat891TyqH15", + "1 | To [2/2] : w9pMuDEH", + "2 | Amount : EDG 0.000000000000001234", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Edgebridge : Transfer", + "1 | To [1/2] : kYgcKBprAL2wXJey222eVRzgpHDtat891TyqH15", + "1 | To [2/2] : w9pMuDEH", + "2 | Amount : EDG 0.000000000000001234", + "3 | Chain : Edgeware", + "4 | Nonce : 0", + "5 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "5 | Tip [2/2] : 56789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 516, + "name": "Bounties_Propose_bounty", + "blob": "25008ed73e0d010228a192d7318f784cb9231f2b018e5a9c99272f2d9c83192c08049ad2387b15cbfbb2b107147972a10bac4f598fb0cdc10b9f39151b2264c9bce34c800f4a2e4524607bbe88efe513d88bf1ae0d179d0ca0b798383e02e763d9c2d195bcafc2e1797e6a6ac8297b29b7ce0352255e389ce9f736b6dba8e7e1ef4671f96590f952d503008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Propose bounty", + "1 | Amount : EDG 0.000000000055555555", + "2 | Description [1/7] : 28a192d7318f784cb9231f2b018e5a9c99272f", + "2 | Description [2/7] : 2d9c83192c08049ad2387b15cbfbb2b1071479", + "2 | Description [3/7] : 72a10bac4f598fb0cdc10b9f39151b2264c9bc", + "2 | Description [4/7] : e34c800f4a2e4524607bbe88efe513d88bf1ae", + "2 | Description [5/7] : 0d179d0ca0b798383e02e763d9c2d195bcafc2", + "2 | Description [6/7] : e1797e6a6ac8297b29b7ce0352255e389ce9f7", + "2 | Description [7/7] : 36b6dba8e7e1ef4671f96590f952", + "3 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Bounties : Propose bounty", + "1 | Amount : EDG 0.000000000055555555", + "2 | Description [1/7] : 28a192d7318f784cb9231f2b018e5a9c99272f", + "2 | Description [2/7] : 2d9c83192c08049ad2387b15cbfbb2b1071479", + "2 | Description [3/7] : 72a10bac4f598fb0cdc10b9f39151b2264c9bc", + "2 | Description [4/7] : e34c800f4a2e4524607bbe88efe513d88bf1ae", + "2 | Description [5/7] : 0d179d0ca0b798383e02e763d9c2d195bcafc2", + "2 | Description [6/7] : e1797e6a6ac8297b29b7ce0352255e389ce9f7", + "2 | Description [7/7] : 36b6dba8e7e1ef4671f96590f952", + "3 | Chain : Edgeware", + "4 | Nonce : 0", + "5 | Tip : EDG 0.000000000055555555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 517, + "name": "Bounties_Propose_bounty", + "blob": "25008ed73e0d010123525d76fc307138b9eab30b4fd73b6db2d1f513b975f1b42b0a9119218f5fcad709998a4477f9c0db0808b4565009df96176097ef77f0ca246a3281e9c49147d503ae11030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Propose bounty", + "1 | Amount : EDG 0.000000000055555555", + "2 | Description [1/4] : 23525d76fc307138b9eab30b4fd73b6db2d1f5", + "2 | Description [2/4] : 13b975f1b42b0a9119218f5fcad709998a4477", + "2 | Description [3/4] : f9c0db0808b4565009df96176097ef77f0ca24", + "2 | Description [4/4] : 6a3281e9c49147", + "3 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Bounties : Propose bounty", + "1 | Amount : EDG 0.000000000055555555", + "2 | Description [1/4] : 23525d76fc307138b9eab30b4fd73b6db2d1f5", + "2 | Description [2/4] : 13b975f1b42b0a9119218f5fcad709998a4477", + "2 | Description [3/4] : f9c0db0808b4565009df96176097ef77f0ca24", + "2 | Description [4/4] : 6a3281e9c49147", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Tip : EDG 0.00000000123456789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 518, + "name": "Bounties_Propose_bounty", + "blob": "25006d0f010123525d76fc307138b9eab30b4fd73b6db2d1f513b975f1b42b0a9119218f5fcad709998a4477f9c0db0808b4565009df96176097ef77f0ca246a3281e9c49147d503040b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Propose bounty", + "1 | Amount : EDG 0.000000000000000987", + "2 | Description [1/4] : 23525d76fc307138b9eab30b4fd73b6db2d1f5", + "2 | Description [2/4] : 13b975f1b42b0a9119218f5fcad709998a4477", + "2 | Description [3/4] : f9c0db0808b4565009df96176097ef77f0ca24", + "2 | Description [4/4] : 6a3281e9c49147", + "3 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Bounties : Propose bounty", + "1 | Amount : EDG 0.000000000000000987", + "2 | Description [1/4] : 23525d76fc307138b9eab30b4fd73b6db2d1f5", + "2 | Description [2/4] : 13b975f1b42b0a9119218f5fcad709998a4477", + "2 | Description [3/4] : f9c0db0808b4565009df96176097ef77f0ca24", + "2 | Description [4/4] : 6a3281e9c49147", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Tip : EDG 0.000005552342355555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 519, + "name": "Bounties_Propose_bounty", + "blob": "250033158139ae28a3dfaac5fe1560a5e9e05c01024fff0f1baa4228af23671ae8fe30d41fdd16f8e8de3421e9991d09e41d575cbb55ca2876e3518b1baa8ec5c3cd87533d21724ca6d80d9e9206fa160228dd70e9e86bec2fd1fd4a93abf246f2212d3390174061cf1afa33b89cc520d02002a0bc723986572e987a346b24c0d7e12b9053d5df9aec0972d6148b46d236e35aadedd5030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Propose bounty", + "1 | Amount [1/2] : EDG 123456789012345678901.2345678901234", + "1 | Amount [2/2] : 56789", + "2 | Description [1/7] : 4fff0f1baa4228af23671ae8fe30d41fdd16f8", + "2 | Description [2/7] : e8de3421e9991d09e41d575cbb55ca2876e351", + "2 | Description [3/7] : 8b1baa8ec5c3cd87533d21724ca6d80d9e9206", + "2 | Description [4/7] : fa160228dd70e9e86bec2fd1fd4a93abf246f2", + "2 | Description [5/7] : 212d3390174061cf1afa33b89cc520d02002a0", + "2 | Description [6/7] : bc723986572e987a346b24c0d7e12b9053d5df", + "2 | Description [7/7] : 9aec0972d6148b46d236e35aaded", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Bounties : Propose bounty", + "1 | Amount [1/2] : EDG 123456789012345678901.2345678901234", + "1 | Amount [2/2] : 56789", + "2 | Description [1/7] : 4fff0f1baa4228af23671ae8fe30d41fdd16f8", + "2 | Description [2/7] : e8de3421e9991d09e41d575cbb55ca2876e351", + "2 | Description [3/7] : 8b1baa8ec5c3cd87533d21724ca6d80d9e9206", + "2 | Description [4/7] : fa160228dd70e9e86bec2fd1fd4a93abf246f2", + "2 | Description [5/7] : 212d3390174061cf1afa33b89cc520d02002a0", + "2 | Description [6/7] : bc723986572e987a346b24c0d7e12b9053d5df", + "2 | Description [7/7] : 9aec0972d6148b46d236e35aaded", + "3 | Chain : Edgeware", + "4 | Nonce : 0", + "5 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "5 | Tip [2/2] : 56789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 520, + "name": "Bounties_Propose_bounty", + "blob": "25006d0f010141a51011fdeea68203b5dfd69ee73bdc4a84956e9381945ac55b1010a497c4f4831dc70b020ab1f64d270fea3e248f2ce09877d8454394180e1e2fd3438129aad503ae110300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Propose bounty", + "1 | Amount : EDG 0.000000000000000987", + "2 | Description [1/4] : 41a51011fdeea68203b5dfd69ee73bdc4a8495", + "2 | Description [2/4] : 6e9381945ac55b1010a497c4f4831dc70b020a", + "2 | Description [3/4] : b1f64d270fea3e248f2ce09877d8454394180e", + "2 | Description [4/4] : 1e2fd3438129aa" + ], + "output_expert": [ + "0 | Bounties : Propose bounty", + "1 | Amount : EDG 0.000000000000000987", + "2 | Description [1/4] : 41a51011fdeea68203b5dfd69ee73bdc4a8495", + "2 | Description [2/4] : 6e9381945ac55b1010a497c4f4831dc70b020a", + "2 | Description [3/4] : b1f64d270fea3e248f2ce09877d8454394180e", + "2 | Description [4/4] : 1e2fd3438129aa", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 521, + "name": "Bounties_Approve_bounty", + "blob": "25018ae32100d5039101002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Approve bounty", + "1 | Bounty id : 555234" + ], + "output_expert": [ + "0 | Bounties : Approve bounty", + "1 | Bounty id : 555234", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 522, + "name": "Bounties_Approve_bounty", + "blob": "25018ae32100d503ae11030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Approve bounty", + "1 | Bounty id : 555234", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Bounties : Approve bounty", + "1 | Bounty id : 555234", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 523, + "name": "Bounties_Approve_bounty", + "blob": "250100d5038d246d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Approve bounty", + "1 | Bounty id : 0", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Bounties : Approve bounty", + "1 | Bounty id : 0", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 524, + "name": "Bounties_Approve_bounty", + "blob": "250100d503ae1103006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Approve bounty", + "1 | Bounty id : 0", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Bounties : Approve bounty", + "1 | Bounty id : 0", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 525, + "name": "Bounties_Approve_bounty", + "blob": "2501de6d0100d503040b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Approve bounty", + "1 | Bounty id : 23415", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Bounties : Approve bounty", + "1 | Bounty id : 23415", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 526, + "name": "Bounties_Propose_curator", + "blob": "25026d0f008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f5511665518ed73e0dd5038d2433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Propose curator", + "1 | Bounty id : 987", + "2 | Curator [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "2 | Curator [2/2] : er4tKs7Z", + "3 | Fee : EDG 0.000000000055555555", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Bounties : Propose curator", + "1 | Bounty id : 987", + "2 | Curator [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "2 | Curator [2/2] : er4tKs7Z", + "3 | Fee : EDG 0.000000000055555555", + "4 | Chain : Edgeware", + "5 | Nonce : 2339", + "6 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "6 | Tip [2/2] : 56789", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 527, + "name": "Bounties_Propose_curator", + "blob": "250200008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f5511665518ed73e0dd5038d240b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Propose curator", + "1 | Bounty id : 0", + "2 | Curator [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "2 | Curator [2/2] : er4tKs7Z", + "3 | Fee : EDG 0.000000000055555555", + "4 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Bounties : Propose curator", + "1 | Bounty id : 0", + "2 | Curator [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "2 | Curator [2/2] : er4tKs7Z", + "3 | Fee : EDG 0.000000000055555555", + "4 | Chain : Edgeware", + "5 | Nonce : 2339", + "6 | Tip : EDG 0.000005552342355555", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 528, + "name": "Bounties_Propose_curator", + "blob": "25026d0f008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f5511665518ed73e0dd5038d2433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Propose curator", + "1 | Bounty id : 987", + "2 | Curator [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "2 | Curator [2/2] : er4tKs7Z", + "3 | Fee : EDG 0.000000000055555555", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Bounties : Propose curator", + "1 | Bounty id : 987", + "2 | Curator [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "2 | Curator [2/2] : er4tKs7Z", + "3 | Fee : EDG 0.000000000055555555", + "4 | Chain : Edgeware", + "5 | Nonce : 2339", + "6 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "6 | Tip [2/2] : 56789", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 529, + "name": "Bounties_Propose_curator", + "blob": "25028ae32100008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f5511665516d0fd503910103d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Propose curator", + "1 | Bounty id : 555234", + "2 | Curator [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "2 | Curator [2/2] : er4tKs7Z", + "3 | Fee : EDG 0.000000000000000987", + "4 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Bounties : Propose curator", + "1 | Bounty id : 555234", + "2 | Curator [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "2 | Curator [2/2] : er4tKs7Z", + "3 | Fee : EDG 0.000000000000000987", + "4 | Chain : Edgeware", + "5 | Nonce : 100", + "6 | Tip : EDG 0.00000000123456789", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 530, + "name": "Bounties_Propose_curator", + "blob": "250200008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f5511665518ed73e0dd5038d240b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Propose curator", + "1 | Bounty id : 0", + "2 | Curator [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "2 | Curator [2/2] : er4tKs7Z", + "3 | Fee : EDG 0.000000000055555555", + "4 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Bounties : Propose curator", + "1 | Bounty id : 0", + "2 | Curator [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "2 | Curator [2/2] : er4tKs7Z", + "3 | Fee : EDG 0.000000000055555555", + "4 | Chain : Edgeware", + "5 | Nonce : 2339", + "6 | Tip : EDG 0.000005552342355555", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 531, + "name": "Bounties_Unassign_curator", + "blob": "25038ae32100d50300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Unassign curator", + "1 | Bounty id : 555234" + ], + "output_expert": [ + "0 | Bounties : Unassign curator", + "1 | Bounty id : 555234", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 532, + "name": "Bounties_Unassign_curator", + "blob": "25038ae32100d5038d24002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Unassign curator", + "1 | Bounty id : 555234" + ], + "output_expert": [ + "0 | Bounties : Unassign curator", + "1 | Bounty id : 555234", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 533, + "name": "Bounties_Unassign_curator", + "blob": "25036d0fd5038d248ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Unassign curator", + "1 | Bounty id : 987", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Bounties : Unassign curator", + "1 | Bounty id : 987", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 534, + "name": "Bounties_Unassign_curator", + "blob": "25036d0fd503910133158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Unassign curator", + "1 | Bounty id : 987", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Bounties : Unassign curator", + "1 | Bounty id : 987", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 535, + "name": "Bounties_Unassign_curator", + "blob": "25036d0fd5038d248ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Unassign curator", + "1 | Bounty id : 987", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Bounties : Unassign curator", + "1 | Bounty id : 987", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 536, + "name": "Bounties_Accept_curator", + "blob": "25046d0fd503006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Accept curator", + "1 | Bounty id : 987", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Bounties : Accept curator", + "1 | Bounty id : 987", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 537, + "name": "Bounties_Accept_curator", + "blob": "250400d503048ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Accept curator", + "1 | Bounty id : 0", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Bounties : Accept curator", + "1 | Bounty id : 0", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 538, + "name": "Bounties_Accept_curator", + "blob": "2504de6d0100d50391018ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Accept curator", + "1 | Bounty id : 23415", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Bounties : Accept curator", + "1 | Bounty id : 23415", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 539, + "name": "Bounties_Accept_curator", + "blob": "25046d0fd503006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Accept curator", + "1 | Bounty id : 987", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Bounties : Accept curator", + "1 | Bounty id : 987", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 540, + "name": "Bounties_Accept_curator", + "blob": "250400d503008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Accept curator", + "1 | Bounty id : 0", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Bounties : Accept curator", + "1 | Bounty id : 0", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 541, + "name": "Bounties_Award_bounty", + "blob": "25056d0f008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f551166551d503ae110300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Award bounty", + "1 | Bounty id : 987", + "2 | Beneficiary [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "2 | Beneficiary [2/2] : er4tKs7Z" + ], + "output_expert": [ + "0 | Bounties : Award bounty", + "1 | Bounty id : 987", + "2 | Beneficiary [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "2 | Beneficiary [2/2] : er4tKs7Z", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 542, + "name": "Bounties_Award_bounty", + "blob": "2505de6d0100008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f551166551d503ae1103008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Award bounty", + "1 | Bounty id : 23415", + "2 | Beneficiary [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "2 | Beneficiary [2/2] : er4tKs7Z", + "3 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Bounties : Award bounty", + "1 | Bounty id : 23415", + "2 | Beneficiary [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "2 | Beneficiary [2/2] : er4tKs7Z", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Tip : EDG 0.000000000055555555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 543, + "name": "Bounties_Award_bounty", + "blob": "25056d0f008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f551166551d5038d24002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Award bounty", + "1 | Bounty id : 987", + "2 | Beneficiary [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "2 | Beneficiary [2/2] : er4tKs7Z" + ], + "output_expert": [ + "0 | Bounties : Award bounty", + "1 | Bounty id : 987", + "2 | Beneficiary [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "2 | Beneficiary [2/2] : er4tKs7Z", + "3 | Chain : Edgeware", + "4 | Nonce : 2339", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 544, + "name": "Bounties_Award_bounty", + "blob": "2505de6d0100008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f551166551d5030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Award bounty", + "1 | Bounty id : 23415", + "2 | Beneficiary [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "2 | Beneficiary [2/2] : er4tKs7Z", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Bounties : Award bounty", + "1 | Bounty id : 23415", + "2 | Beneficiary [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "2 | Beneficiary [2/2] : er4tKs7Z", + "3 | Chain : Edgeware", + "4 | Nonce : 0", + "5 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "5 | Tip [2/2] : 56789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 545, + "name": "Bounties_Award_bounty", + "blob": "250500008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f551166551d50391018ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Award bounty", + "1 | Bounty id : 0", + "2 | Beneficiary [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "2 | Beneficiary [2/2] : er4tKs7Z", + "3 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Bounties : Award bounty", + "1 | Bounty id : 0", + "2 | Beneficiary [1/2] : keTUP1CydsscSvYk86DBdpHhmyfvmhctTuspPGb", + "2 | Beneficiary [2/2] : er4tKs7Z", + "3 | Chain : Edgeware", + "4 | Nonce : 100", + "5 | Tip : EDG 0.000000000055555555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 546, + "name": "Bounties_Claim_bounty", + "blob": "2506de6d0100d503ae1103008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Claim bounty", + "1 | Bounty id : 23415", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Bounties : Claim bounty", + "1 | Bounty id : 23415", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 547, + "name": "Bounties_Claim_bounty", + "blob": "2506de6d0100d503040b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Claim bounty", + "1 | Bounty id : 23415", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Bounties : Claim bounty", + "1 | Bounty id : 23415", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 548, + "name": "Bounties_Claim_bounty", + "blob": "250600d5030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Claim bounty", + "1 | Bounty id : 0", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Bounties : Claim bounty", + "1 | Bounty id : 0", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 549, + "name": "Bounties_Claim_bounty", + "blob": "2506de6d0100d50391018ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Claim bounty", + "1 | Bounty id : 23415", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Bounties : Claim bounty", + "1 | Bounty id : 23415", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 550, + "name": "Bounties_Claim_bounty", + "blob": "25068ae32100d5038d24002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Claim bounty", + "1 | Bounty id : 555234" + ], + "output_expert": [ + "0 | Bounties : Claim bounty", + "1 | Bounty id : 555234", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 551, + "name": "Bounties_Close_bounty", + "blob": "2507de6d0100d5030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Close bounty", + "1 | Bounty id : 23415", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Bounties : Close bounty", + "1 | Bounty id : 23415", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 552, + "name": "Bounties_Close_bounty", + "blob": "2507de6d0100d50391016d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Close bounty", + "1 | Bounty id : 23415", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Bounties : Close bounty", + "1 | Bounty id : 23415", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 553, + "name": "Bounties_Close_bounty", + "blob": "25076d0fd503ae11030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Close bounty", + "1 | Bounty id : 987", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Bounties : Close bounty", + "1 | Bounty id : 987", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 554, + "name": "Bounties_Close_bounty", + "blob": "25076d0fd50391016d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Close bounty", + "1 | Bounty id : 987", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Bounties : Close bounty", + "1 | Bounty id : 987", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 555, + "name": "Bounties_Close_bounty", + "blob": "25078ae32100d5038d24002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Close bounty", + "1 | Bounty id : 555234" + ], + "output_expert": [ + "0 | Bounties : Close bounty", + "1 | Bounty id : 555234", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 556, + "name": "Bounties_Extend_bounty_expiry", + "blob": "25086d0f010228a192d7318f784cb9231f2b018e5a9c99272f2d9c83192c08049ad2387b15cbfbb2b107147972a10bac4f598fb0cdc10b9f39151b2264c9bce34c800f4a2e4524607bbe88efe513d88bf1ae0d179d0ca0b798383e02e763d9c2d195bcafc2e1797e6a6ac8297b29b7ce0352255e389ce9f736b6dba8e7e1ef4671f96590f952d5038d240b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Extend bounty expiry", + "1 | Bounty id : 987", + "2 | Remark [1/7] : 28a192d7318f784cb9231f2b018e5a9c99272f", + "2 | Remark [2/7] : 2d9c83192c08049ad2387b15cbfbb2b1071479", + "2 | Remark [3/7] : 72a10bac4f598fb0cdc10b9f39151b2264c9bc", + "2 | Remark [4/7] : e34c800f4a2e4524607bbe88efe513d88bf1ae", + "2 | Remark [5/7] : 0d179d0ca0b798383e02e763d9c2d195bcafc2", + "2 | Remark [6/7] : e1797e6a6ac8297b29b7ce0352255e389ce9f7", + "2 | Remark [7/7] : 36b6dba8e7e1ef4671f96590f952", + "3 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Bounties : Extend bounty expiry", + "1 | Bounty id : 987", + "2 | Remark [1/7] : 28a192d7318f784cb9231f2b018e5a9c99272f", + "2 | Remark [2/7] : 2d9c83192c08049ad2387b15cbfbb2b1071479", + "2 | Remark [3/7] : 72a10bac4f598fb0cdc10b9f39151b2264c9bc", + "2 | Remark [4/7] : e34c800f4a2e4524607bbe88efe513d88bf1ae", + "2 | Remark [5/7] : 0d179d0ca0b798383e02e763d9c2d195bcafc2", + "2 | Remark [6/7] : e1797e6a6ac8297b29b7ce0352255e389ce9f7", + "2 | Remark [7/7] : 36b6dba8e7e1ef4671f96590f952", + "3 | Chain : Edgeware", + "4 | Nonce : 2339", + "5 | Tip : EDG 0.000005552342355555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 557, + "name": "Bounties_Extend_bounty_expiry", + "blob": "250800010123525d76fc307138b9eab30b4fd73b6db2d1f513b975f1b42b0a9119218f5fcad709998a4477f9c0db0808b4565009df96176097ef77f0ca246a3281e9c49147d5038d2433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Extend bounty expiry", + "1 | Bounty id : 0", + "2 | Remark [1/4] : 23525d76fc307138b9eab30b4fd73b6db2d1f5", + "2 | Remark [2/4] : 13b975f1b42b0a9119218f5fcad709998a4477", + "2 | Remark [3/4] : f9c0db0808b4565009df96176097ef77f0ca24", + "2 | Remark [4/4] : 6a3281e9c49147", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Bounties : Extend bounty expiry", + "1 | Bounty id : 0", + "2 | Remark [1/4] : 23525d76fc307138b9eab30b4fd73b6db2d1f5", + "2 | Remark [2/4] : 13b975f1b42b0a9119218f5fcad709998a4477", + "2 | Remark [3/4] : f9c0db0808b4565009df96176097ef77f0ca24", + "2 | Remark [4/4] : 6a3281e9c49147", + "3 | Chain : Edgeware", + "4 | Nonce : 2339", + "5 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "5 | Tip [2/2] : 56789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 558, + "name": "Bounties_Extend_bounty_expiry", + "blob": "25088ae32100010293859bda4a5499d40a481edfd9cfc89083a367745d339128680aaacc9e7ce65fdf5a9bd46291155579ff30c15ad939f865f7393d41252acdcf1bb50d640b8c5e4090fc011ca336434068fa7ba9e5f4fa9150a58acd829b70ad36cd42ad37f2b649904d2e87240b3ca499f6ab8c7f836662bbb05e2b8866b83aba6e31ae0cd6dcd5030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Extend bounty expiry", + "1 | Bounty id : 555234", + "2 | Remark [1/7] : 93859bda4a5499d40a481edfd9cfc89083a367", + "2 | Remark [2/7] : 745d339128680aaacc9e7ce65fdf5a9bd46291", + "2 | Remark [3/7] : 155579ff30c15ad939f865f7393d41252acdcf", + "2 | Remark [4/7] : 1bb50d640b8c5e4090fc011ca336434068fa7b", + "2 | Remark [5/7] : a9e5f4fa9150a58acd829b70ad36cd42ad37f2", + "2 | Remark [6/7] : b649904d2e87240b3ca499f6ab8c7f836662bb", + "2 | Remark [7/7] : b05e2b8866b83aba6e31ae0cd6dc", + "3 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Bounties : Extend bounty expiry", + "1 | Bounty id : 555234", + "2 | Remark [1/7] : 93859bda4a5499d40a481edfd9cfc89083a367", + "2 | Remark [2/7] : 745d339128680aaacc9e7ce65fdf5a9bd46291", + "2 | Remark [3/7] : 155579ff30c15ad939f865f7393d41252acdcf", + "2 | Remark [4/7] : 1bb50d640b8c5e4090fc011ca336434068fa7b", + "2 | Remark [5/7] : a9e5f4fa9150a58acd829b70ad36cd42ad37f2", + "2 | Remark [6/7] : b649904d2e87240b3ca499f6ab8c7f836662bb", + "2 | Remark [7/7] : b05e2b8866b83aba6e31ae0cd6dc", + "3 | Chain : Edgeware", + "4 | Nonce : 0", + "5 | Tip : EDG 0.00000000123456789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 559, + "name": "Bounties_Extend_bounty_expiry", + "blob": "25088ae3210080a2661c961cab79e32ca6e3044488373e41b21178eea66aa545ebd2fcf33dd35cd5030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Extend bounty expiry", + "1 | Bounty id : 555234", + "2 | Remark [1/2] : a2661c961cab79e32ca6e3044488373e41b211", + "2 | Remark [2/2] : 78eea66aa545ebd2fcf33dd35c", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Bounties : Extend bounty expiry", + "1 | Bounty id : 555234", + "2 | Remark [1/2] : a2661c961cab79e32ca6e3044488373e41b211", + "2 | Remark [2/2] : 78eea66aa545ebd2fcf33dd35c", + "3 | Chain : Edgeware", + "4 | Nonce : 0", + "5 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "5 | Tip [2/2] : 56789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 560, + "name": "Bounties_Extend_bounty_expiry", + "blob": "25080001024fff0f1baa4228af23671ae8fe30d41fdd16f8e8de3421e9991d09e41d575cbb55ca2876e3518b1baa8ec5c3cd87533d21724ca6d80d9e9206fa160228dd70e9e86bec2fd1fd4a93abf246f2212d3390174061cf1afa33b89cc520d02002a0bc723986572e987a346b24c0d7e12b9053d5df9aec0972d6148b46d236e35aadedd503008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Extend bounty expiry", + "1 | Bounty id : 0", + "2 | Remark [1/7] : 4fff0f1baa4228af23671ae8fe30d41fdd16f8", + "2 | Remark [2/7] : e8de3421e9991d09e41d575cbb55ca2876e351", + "2 | Remark [3/7] : 8b1baa8ec5c3cd87533d21724ca6d80d9e9206", + "2 | Remark [4/7] : fa160228dd70e9e86bec2fd1fd4a93abf246f2", + "2 | Remark [5/7] : 212d3390174061cf1afa33b89cc520d02002a0", + "2 | Remark [6/7] : bc723986572e987a346b24c0d7e12b9053d5df", + "2 | Remark [7/7] : 9aec0972d6148b46d236e35aaded", + "3 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Bounties : Extend bounty expiry", + "1 | Bounty id : 0", + "2 | Remark [1/7] : 4fff0f1baa4228af23671ae8fe30d41fdd16f8", + "2 | Remark [2/7] : e8de3421e9991d09e41d575cbb55ca2876e351", + "2 | Remark [3/7] : 8b1baa8ec5c3cd87533d21724ca6d80d9e9206", + "2 | Remark [4/7] : fa160228dd70e9e86bec2fd1fd4a93abf246f2", + "2 | Remark [5/7] : 212d3390174061cf1afa33b89cc520d02002a0", + "2 | Remark [6/7] : bc723986572e987a346b24c0d7e12b9053d5df", + "2 | Remark [7/7] : 9aec0972d6148b46d236e35aaded", + "3 | Chain : Edgeware", + "4 | Nonce : 0", + "5 | Tip : EDG 0.000000000055555555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 561, + "name": "Tips_Report_awesome", + "blob": "260080a2661c961cab79e32ca6e3044488373e41b21178eea66aa545ebd2fcf33dd35c0a020856a01aa594a4a77167f74b11e13dbbbc934d8c942eca62569d4c58390ed5030433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Tips : Report awesome", + "1 | Reason [1/2] : a2661c961cab79e32ca6e3044488373e41b211", + "1 | Reason [2/2] : 78eea66aa545ebd2fcf33dd35c", + "2 | Who [1/2] : hjjtjpF2ZP5MQ71c5PmPgSVTC3Jv6WL2mK4xcEx", + "2 | Who [2/2] : gUKcbvMx", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Tips : Report awesome", + "1 | Reason [1/2] : a2661c961cab79e32ca6e3044488373e41b211", + "1 | Reason [2/2] : 78eea66aa545ebd2fcf33dd35c", + "2 | Who [1/2] : hjjtjpF2ZP5MQ71c5PmPgSVTC3Jv6WL2mK4xcEx", + "2 | Who [2/2] : gUKcbvMx", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "5 | Tip [2/2] : 56789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 562, + "name": "Tips_Report_awesome", + "blob": "26000101db1c923fb5421a898e03cf967a0fdb1aa102778aed44a7c825b8285dbed40845debcddc83951c406e630e86915d7b987ad86c87f0a5eda9a802cbcd59362d3718647fb36b1a57550a3a9ce1810aece028bccdd32d63b89731bc178f750a6d967d5038d240b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Tips : Report awesome", + "1 | Reason [1/4] : db1c923fb5421a898e03cf967a0fdb1aa10277", + "1 | Reason [2/4] : 8aed44a7c825b8285dbed40845debcddc83951", + "1 | Reason [3/4] : c406e630e86915d7b987ad86c87f0a5eda9a80", + "1 | Reason [4/4] : 2cbcd59362d371", + "2 | Who [1/2] : kYgcKBprAL2wXJey222eVRzgpHDtat891TyqH15", + "2 | Who [2/2] : w9pMuDEH", + "3 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Tips : Report awesome", + "1 | Reason [1/4] : db1c923fb5421a898e03cf967a0fdb1aa10277", + "1 | Reason [2/4] : 8aed44a7c825b8285dbed40845debcddc83951", + "1 | Reason [3/4] : c406e630e86915d7b987ad86c87f0a5eda9a80", + "1 | Reason [4/4] : 2cbcd59362d371", + "2 | Who [1/2] : kYgcKBprAL2wXJey222eVRzgpHDtat891TyqH15", + "2 | Who [2/2] : w9pMuDEH", + "3 | Chain : Edgeware", + "4 | Nonce : 2339", + "5 | Tip : EDG 0.000005552342355555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 563, + "name": "Tips_Report_awesome", + "blob": "2600010141a51011fdeea68203b5dfd69ee73bdc4a84956e9381945ac55b1010a497c4f4831dc70b020ab1f64d270fea3e248f2ce09877d8454394180e1e2fd3438129aa8647fb36b1a57550a3a9ce1810aece028bccdd32d63b89731bc178f750a6d967d5038d248ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Tips : Report awesome", + "1 | Reason [1/4] : 41a51011fdeea68203b5dfd69ee73bdc4a8495", + "1 | Reason [2/4] : 6e9381945ac55b1010a497c4f4831dc70b020a", + "1 | Reason [3/4] : b1f64d270fea3e248f2ce09877d8454394180e", + "1 | Reason [4/4] : 1e2fd3438129aa", + "2 | Who [1/2] : kYgcKBprAL2wXJey222eVRzgpHDtat891TyqH15", + "2 | Who [2/2] : w9pMuDEH", + "3 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Tips : Report awesome", + "1 | Reason [1/4] : 41a51011fdeea68203b5dfd69ee73bdc4a8495", + "1 | Reason [2/4] : 6e9381945ac55b1010a497c4f4831dc70b020a", + "1 | Reason [3/4] : b1f64d270fea3e248f2ce09877d8454394180e", + "1 | Reason [4/4] : 1e2fd3438129aa", + "2 | Who [1/2] : kYgcKBprAL2wXJey222eVRzgpHDtat891TyqH15", + "2 | Who [2/2] : w9pMuDEH", + "3 | Chain : Edgeware", + "4 | Nonce : 2339", + "5 | Tip : EDG 0.000000000055555555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 564, + "name": "Tips_Report_awesome", + "blob": "2600010141a51011fdeea68203b5dfd69ee73bdc4a84956e9381945ac55b1010a497c4f4831dc70b020ab1f64d270fea3e248f2ce09877d8454394180e1e2fd3438129aa8647fb36b1a57550a3a9ce1810aece028bccdd32d63b89731bc178f750a6d967d503ae110300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Tips : Report awesome", + "1 | Reason [1/4] : 41a51011fdeea68203b5dfd69ee73bdc4a8495", + "1 | Reason [2/4] : 6e9381945ac55b1010a497c4f4831dc70b020a", + "1 | Reason [3/4] : b1f64d270fea3e248f2ce09877d8454394180e", + "1 | Reason [4/4] : 1e2fd3438129aa", + "2 | Who [1/2] : kYgcKBprAL2wXJey222eVRzgpHDtat891TyqH15", + "2 | Who [2/2] : w9pMuDEH" + ], + "output_expert": [ + "0 | Tips : Report awesome", + "1 | Reason [1/4] : 41a51011fdeea68203b5dfd69ee73bdc4a8495", + "1 | Reason [2/4] : 6e9381945ac55b1010a497c4f4831dc70b020a", + "1 | Reason [3/4] : b1f64d270fea3e248f2ce09877d8454394180e", + "1 | Reason [4/4] : 1e2fd3438129aa", + "2 | Who [1/2] : kYgcKBprAL2wXJey222eVRzgpHDtat891TyqH15", + "2 | Who [2/2] : w9pMuDEH", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 565, + "name": "Tips_Report_awesome", + "blob": "2600010123525d76fc307138b9eab30b4fd73b6db2d1f513b975f1b42b0a9119218f5fcad709998a4477f9c0db0808b4565009df96176097ef77f0ca246a3281e9c4914744934098651253342230b3e67b37bb55f934927ffadbd3d2025686e16269f755d5038d2403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Tips : Report awesome", + "1 | Reason [1/4] : 23525d76fc307138b9eab30b4fd73b6db2d1f5", + "1 | Reason [2/4] : 13b975f1b42b0a9119218f5fcad709998a4477", + "1 | Reason [3/4] : f9c0db0808b4565009df96176097ef77f0ca24", + "1 | Reason [4/4] : 6a3281e9c49147", + "2 | Who [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "2 | Who [2/2] : t8MmbYSG", + "3 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Tips : Report awesome", + "1 | Reason [1/4] : 23525d76fc307138b9eab30b4fd73b6db2d1f5", + "1 | Reason [2/4] : 13b975f1b42b0a9119218f5fcad709998a4477", + "1 | Reason [3/4] : f9c0db0808b4565009df96176097ef77f0ca24", + "1 | Reason [4/4] : 6a3281e9c49147", + "2 | Who [1/2] : j4XouE3pDCqqeQMKArDRBjxHWkbNWcSss9KtPc9", + "2 | Who [2/2] : t8MmbYSG", + "3 | Chain : Edgeware", + "4 | Nonce : 2339", + "5 | Tip : EDG 0.00000000123456789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 566, + "name": "Tips_Retract_tip", + "blob": "26010000000000000000000000000000000000000000000000000000000000000000d5038d240b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Tips : Retract tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Tips : Retract tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 567, + "name": "Tips_Retract_tip", + "blob": "26010000000000000000000000000000000000000000000000000000000000000000d503ae1103006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Tips : Retract tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Tips : Retract tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 568, + "name": "Tips_Retract_tip", + "blob": "26010000000000000000000000000000000000000000000000000000000000000000d503910103d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Tips : Retract tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Tips : Retract tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 569, + "name": "Tips_Retract_tip", + "blob": "26010000000000000000000000000000000000000000000000000000000000000000d5038d240b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Tips : Retract tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Tips : Retract tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 570, + "name": "Tips_Retract_tip", + "blob": "26010000000000000000000000000000000000000000000000000000000000000000d503ae11030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Tips : Retract tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Tips : Retract tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 571, + "name": "Tips_Tip_new", + "blob": "2602010141a51011fdeea68203b5dfd69ee73bdc4a84956e9381945ac55b1010a497c4f4831dc70b020ab1f64d270fea3e248f2ce09877d8454394180e1e2fd3438129aaea33a975e8a0e3908fad9be67b6927f1b5d2fdee682c9a21e59b31fb76804b4203d2029649d5038d248ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Tips : Tip new", + "1 | Reason [1/4] : 41a51011fdeea68203b5dfd69ee73bdc4a8495", + "1 | Reason [2/4] : 6e9381945ac55b1010a497c4f4831dc70b020a", + "1 | Reason [3/4] : b1f64d270fea3e248f2ce09877d8454394180e", + "1 | Reason [4/4] : 1e2fd3438129aa", + "2 | Who [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "2 | Who [2/2] : 8kQ2Cbj7", + "3 | Tip value : EDG 0.00000000123456789", + "4 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Tips : Tip new", + "1 | Reason [1/4] : 41a51011fdeea68203b5dfd69ee73bdc4a8495", + "1 | Reason [2/4] : 6e9381945ac55b1010a497c4f4831dc70b020a", + "1 | Reason [3/4] : b1f64d270fea3e248f2ce09877d8454394180e", + "1 | Reason [4/4] : 1e2fd3438129aa", + "2 | Who [1/2] : nohMx8wLMWgzFGzjzSVCZDSp6WTdJ9xyfyaXEvu", + "2 | Who [2/2] : 8kQ2Cbj7", + "3 | Tip value : EDG 0.00000000123456789", + "4 | Chain : Edgeware", + "5 | Nonce : 2339", + "6 | Tip : EDG 0.000000000055555555", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 572, + "name": "Tips_Tip_new", + "blob": "2602010293859bda4a5499d40a481edfd9cfc89083a367745d339128680aaacc9e7ce65fdf5a9bd46291155579ff30c15ad939f865f7393d41252acdcf1bb50d640b8c5e4090fc011ca336434068fa7ba9e5f4fa9150a58acd829b70ad36cd42ad37f2b649904d2e87240b3ca499f6ab8c7f836662bbb05e2b8866b83aba6e31ae0cd6dc8647fb36b1a57550a3a9ce1810aece028bccdd32d63b89731bc178f750a6d96700d5038d2403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Tips : Tip new", + "1 | Reason [1/7] : 93859bda4a5499d40a481edfd9cfc89083a367", + "1 | Reason [2/7] : 745d339128680aaacc9e7ce65fdf5a9bd46291", + "1 | Reason [3/7] : 155579ff30c15ad939f865f7393d41252acdcf", + "1 | Reason [4/7] : 1bb50d640b8c5e4090fc011ca336434068fa7b", + "1 | Reason [5/7] : a9e5f4fa9150a58acd829b70ad36cd42ad37f2", + "1 | Reason [6/7] : b649904d2e87240b3ca499f6ab8c7f836662bb", + "1 | Reason [7/7] : b05e2b8866b83aba6e31ae0cd6dc", + "2 | Who [1/2] : kYgcKBprAL2wXJey222eVRzgpHDtat891TyqH15", + "2 | Who [2/2] : w9pMuDEH", + "3 | Tip value : EDG 0.0", + "4 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Tips : Tip new", + "1 | Reason [1/7] : 93859bda4a5499d40a481edfd9cfc89083a367", + "1 | Reason [2/7] : 745d339128680aaacc9e7ce65fdf5a9bd46291", + "1 | Reason [3/7] : 155579ff30c15ad939f865f7393d41252acdcf", + "1 | Reason [4/7] : 1bb50d640b8c5e4090fc011ca336434068fa7b", + "1 | Reason [5/7] : a9e5f4fa9150a58acd829b70ad36cd42ad37f2", + "1 | Reason [6/7] : b649904d2e87240b3ca499f6ab8c7f836662bb", + "1 | Reason [7/7] : b05e2b8866b83aba6e31ae0cd6dc", + "2 | Who [1/2] : kYgcKBprAL2wXJey222eVRzgpHDtat891TyqH15", + "2 | Who [2/2] : w9pMuDEH", + "3 | Tip value : EDG 0.0", + "4 | Chain : Edgeware", + "5 | Nonce : 2339", + "6 | Tip : EDG 0.00000000123456789", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 573, + "name": "Tips_Tip_new", + "blob": "2602010293859bda4a5499d40a481edfd9cfc89083a367745d339128680aaacc9e7ce65fdf5a9bd46291155579ff30c15ad939f865f7393d41252acdcf1bb50d640b8c5e4090fc011ca336434068fa7ba9e5f4fa9150a58acd829b70ad36cd42ad37f2b649904d2e87240b3ca499f6ab8c7f836662bbb05e2b8866b83aba6e31ae0cd6dc8647fb36b1a57550a3a9ce1810aece028bccdd32d63b89731bc178f750a6d96703d2029649d503006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Tips : Tip new", + "1 | Reason [1/7] : 93859bda4a5499d40a481edfd9cfc89083a367", + "1 | Reason [2/7] : 745d339128680aaacc9e7ce65fdf5a9bd46291", + "1 | Reason [3/7] : 155579ff30c15ad939f865f7393d41252acdcf", + "1 | Reason [4/7] : 1bb50d640b8c5e4090fc011ca336434068fa7b", + "1 | Reason [5/7] : a9e5f4fa9150a58acd829b70ad36cd42ad37f2", + "1 | Reason [6/7] : b649904d2e87240b3ca499f6ab8c7f836662bb", + "1 | Reason [7/7] : b05e2b8866b83aba6e31ae0cd6dc", + "2 | Who [1/2] : kYgcKBprAL2wXJey222eVRzgpHDtat891TyqH15", + "2 | Who [2/2] : w9pMuDEH", + "3 | Tip value : EDG 0.00000000123456789", + "4 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Tips : Tip new", + "1 | Reason [1/7] : 93859bda4a5499d40a481edfd9cfc89083a367", + "1 | Reason [2/7] : 745d339128680aaacc9e7ce65fdf5a9bd46291", + "1 | Reason [3/7] : 155579ff30c15ad939f865f7393d41252acdcf", + "1 | Reason [4/7] : 1bb50d640b8c5e4090fc011ca336434068fa7b", + "1 | Reason [5/7] : a9e5f4fa9150a58acd829b70ad36cd42ad37f2", + "1 | Reason [6/7] : b649904d2e87240b3ca499f6ab8c7f836662bb", + "1 | Reason [7/7] : b05e2b8866b83aba6e31ae0cd6dc", + "2 | Who [1/2] : kYgcKBprAL2wXJey222eVRzgpHDtat891TyqH15", + "2 | Who [2/2] : w9pMuDEH", + "3 | Tip value : EDG 0.00000000123456789", + "4 | Chain : Edgeware", + "5 | Nonce : 0", + "6 | Tip : EDG 0.000000000000000987", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 574, + "name": "Tips_Tip_new", + "blob": "260280b129f97028bc632c89b3477f89aed40e46c89c1c4e9e70b4bde031ff79decf358647fb36b1a57550a3a9ce1810aece028bccdd32d63b89731bc178f750a6d96703d2029649d5030433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Tips : Tip new", + "1 | Reason [1/2] : b129f97028bc632c89b3477f89aed40e46c89c", + "1 | Reason [2/2] : 1c4e9e70b4bde031ff79decf35", + "2 | Who [1/2] : kYgcKBprAL2wXJey222eVRzgpHDtat891TyqH15", + "2 | Who [2/2] : w9pMuDEH", + "3 | Tip value : EDG 0.00000000123456789", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Tips : Tip new", + "1 | Reason [1/2] : b129f97028bc632c89b3477f89aed40e46c89c", + "1 | Reason [2/2] : 1c4e9e70b4bde031ff79decf35", + "2 | Who [1/2] : kYgcKBprAL2wXJey222eVRzgpHDtat891TyqH15", + "2 | Who [2/2] : w9pMuDEH", + "3 | Tip value : EDG 0.00000000123456789", + "4 | Chain : Edgeware", + "5 | Nonce : 1", + "6 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "6 | Tip [2/2] : 56789", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 575, + "name": "Tips_Tip_new", + "blob": "260280a2661c961cab79e32ca6e3044488373e41b21178eea66aa545ebd2fcf33dd35c8647fb36b1a57550a3a9ce1810aece028bccdd32d63b89731bc178f750a6d96703d2029649d50391016d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Tips : Tip new", + "1 | Reason [1/2] : a2661c961cab79e32ca6e3044488373e41b211", + "1 | Reason [2/2] : 78eea66aa545ebd2fcf33dd35c", + "2 | Who [1/2] : kYgcKBprAL2wXJey222eVRzgpHDtat891TyqH15", + "2 | Who [2/2] : w9pMuDEH", + "3 | Tip value : EDG 0.00000000123456789", + "4 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Tips : Tip new", + "1 | Reason [1/2] : a2661c961cab79e32ca6e3044488373e41b211", + "1 | Reason [2/2] : 78eea66aa545ebd2fcf33dd35c", + "2 | Who [1/2] : kYgcKBprAL2wXJey222eVRzgpHDtat891TyqH15", + "2 | Who [2/2] : w9pMuDEH", + "3 | Tip value : EDG 0.00000000123456789", + "4 | Chain : Edgeware", + "5 | Nonce : 100", + "6 | Tip : EDG 0.000000000000000987", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 576, + "name": "Tips_Tip", + "blob": "260300000000000000000000000000000000000000000000000000000000000000006d0fd503ae1103000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Tips : Tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Tip value : EDG 0.000000000000000987", + "3 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Tips : Tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Tip value : EDG 0.000000000000000987", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Tip : EDG 0.000005552342355555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 577, + "name": "Tips_Tip", + "blob": "260300000000000000000000000000000000000000000000000000000000000000000b63ce64c10c05d50300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Tips : Tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Tip value : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Tips : Tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Tip value : EDG 0.000005552342355555", + "3 | Chain : Edgeware", + "4 | Nonce : 0", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 578, + "name": "Tips_Tip", + "blob": "260300000000000000000000000000000000000000000000000000000000000000000b63ce64c10c05d5038d240b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Tips : Tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Tip value : EDG 0.000005552342355555", + "3 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Tips : Tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Tip value : EDG 0.000005552342355555", + "3 | Chain : Edgeware", + "4 | Nonce : 2339", + "5 | Tip : EDG 0.000005552342355555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 579, + "name": "Tips_Tip", + "blob": "260300000000000000000000000000000000000000000000000000000000000000006d0fd503000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Tips : Tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Tip value : EDG 0.000000000000000987", + "3 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Tips : Tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Tip value : EDG 0.000000000000000987", + "3 | Chain : Edgeware", + "4 | Nonce : 0", + "5 | Tip : EDG 0.000005552342355555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 580, + "name": "Tips_Tip", + "blob": "2603000000000000000000000000000000000000000000000000000000000000000003d2029649d50391010b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Tips : Tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Tip value : EDG 0.00000000123456789", + "3 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Tips : Tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Tip value : EDG 0.00000000123456789", + "3 | Chain : Edgeware", + "4 | Nonce : 100", + "5 | Tip : EDG 0.000005552342355555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 581, + "name": "Tips_Close_tip", + "blob": "26040000000000000000000000000000000000000000000000000000000000000000d503ae1103008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Tips : Close tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Tips : Close tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 582, + "name": "Tips_Close_tip", + "blob": "26040000000000000000000000000000000000000000000000000000000000000000d503ae1103006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Tips : Close tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Tips : Close tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 583, + "name": "Tips_Close_tip", + "blob": "26040000000000000000000000000000000000000000000000000000000000000000d5030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Tips : Close tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Tips : Close tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 584, + "name": "Tips_Close_tip", + "blob": "26040000000000000000000000000000000000000000000000000000000000000000d50304002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Tips : Close tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000" + ], + "output_expert": [ + "0 | Tips : Close tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 585, + "name": "Tips_Close_tip", + "blob": "26040000000000000000000000000000000000000000000000000000000000000000d5030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Tips : Close tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Tips : Close tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 586, + "name": "Tips_Slash_tip", + "blob": "26050000000000000000000000000000000000000000000000000000000000000000d5038d24002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Tips : Slash tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000" + ], + "output_expert": [ + "0 | Tips : Slash tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 587, + "name": "Tips_Slash_tip", + "blob": "26050000000000000000000000000000000000000000000000000000000000000000d5030403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Tips : Slash tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Tips : Slash tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 588, + "name": "Tips_Slash_tip", + "blob": "26050000000000000000000000000000000000000000000000000000000000000000d503ae1103008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Tips : Slash tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Tips : Slash tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 589, + "name": "Tips_Slash_tip", + "blob": "26050000000000000000000000000000000000000000000000000000000000000000d503008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Tips : Slash tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Tips : Slash tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 590, + "name": "Tips_Slash_tip", + "blob": "26050000000000000000000000000000000000000000000000000000000000000000d503000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Tips : Slash tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Tips : Slash tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + } +] \ No newline at end of file diff --git a/tests/testcases_previous.json b/tests/testcases_previous.json new file mode 100644 index 0000000..9b9173a --- /dev/null +++ b/tests/testcases_previous.json @@ -0,0 +1,14510 @@ +[ + { + "index": 1, + "name": "System_Fill_block", + "blob": "00005fe60d6fd503ae1103006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | System : Fill block", + "1 | Ratio : 186.3181919%", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | System : Fill block", + "1 | Ratio : 186.3181919%", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 2, + "name": "System_Fill_block", + "blob": "00005fe60d6fd5030433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | System : Fill block", + "1 | Ratio : 186.3181919%", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | System : Fill block", + "1 | Ratio : 186.3181919%", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 3, + "name": "System_Fill_block", + "blob": "00002107be24d503ae1103000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | System : Fill block", + "1 | Ratio : 61.6433441%", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | System : Fill block", + "1 | Ratio : 61.6433441%", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 4, + "name": "System_Fill_block", + "blob": "00002107be24d503ae11030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | System : Fill block", + "1 | Ratio : 61.6433441%", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | System : Fill block", + "1 | Ratio : 61.6433441%", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 5, + "name": "System_Fill_block", + "blob": "00002107be24d503040b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | System : Fill block", + "1 | Ratio : 61.6433441%", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | System : Fill block", + "1 | Ratio : 61.6433441%", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 6, + "name": "System_Remark", + "blob": "00018096ab01ac193b73fcc76aa234b12a329bc86f9f152b0ae6ffd64e1c32ca7ea706d50304002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | System : Remark", + "1 | Remark [1/2] : 96ab01ac193b73fcc76aa234b12a329bc86f9f", + "1 | Remark [2/2] : 152b0ae6ffd64e1c32ca7ea706" + ], + "output_expert": [ + "0 | System : Remark", + "1 | Remark [1/2] : 96ab01ac193b73fcc76aa234b12a329bc86f9f", + "1 | Remark [2/2] : 152b0ae6ffd64e1c32ca7ea706", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 7, + "name": "System_Remark", + "blob": "00018096ab01ac193b73fcc76aa234b12a329bc86f9f152b0ae6ffd64e1c32ca7ea706d50304002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | System : Remark", + "1 | Remark [1/2] : 96ab01ac193b73fcc76aa234b12a329bc86f9f", + "1 | Remark [2/2] : 152b0ae6ffd64e1c32ca7ea706" + ], + "output_expert": [ + "0 | System : Remark", + "1 | Remark [1/2] : 96ab01ac193b73fcc76aa234b12a329bc86f9f", + "1 | Remark [2/2] : 152b0ae6ffd64e1c32ca7ea706", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 8, + "name": "System_Remark", + "blob": "0001010234988545b1ec4582a1fb89c9de980f64f2b3b06a3fcdf8ad8262cac3055dceb6e798126532162a71974bb41dfc71b564df6ffc276836d6ce8f649fe8267b4d5346d223b167ff7df85f3e7989f20b0a37c4615a1d06b6182622c0d50bb8825a71d710aafb00f7d703f3daed9e77896b87e14cf12c7cca8efcec263bb7128217e7d5038d246d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | System : Remark", + "1 | Remark [1/7] : 34988545b1ec4582a1fb89c9de980f64f2b3b0", + "1 | Remark [2/7] : 6a3fcdf8ad8262cac3055dceb6e79812653216", + "1 | Remark [3/7] : 2a71974bb41dfc71b564df6ffc276836d6ce8f", + "1 | Remark [4/7] : 649fe8267b4d5346d223b167ff7df85f3e7989", + "1 | Remark [5/7] : f20b0a37c4615a1d06b6182622c0d50bb8825a", + "1 | Remark [6/7] : 71d710aafb00f7d703f3daed9e77896b87e14c", + "1 | Remark [7/7] : f12c7cca8efcec263bb7128217e7", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | System : Remark", + "1 | Remark [1/7] : 34988545b1ec4582a1fb89c9de980f64f2b3b0", + "1 | Remark [2/7] : 6a3fcdf8ad8262cac3055dceb6e79812653216", + "1 | Remark [3/7] : 2a71974bb41dfc71b564df6ffc276836d6ce8f", + "1 | Remark [4/7] : 649fe8267b4d5346d223b167ff7df85f3e7989", + "1 | Remark [5/7] : f20b0a37c4615a1d06b6182622c0d50bb8825a", + "1 | Remark [6/7] : 71d710aafb00f7d703f3daed9e77896b87e14c", + "1 | Remark [7/7] : f12c7cca8efcec263bb7128217e7", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 9, + "name": "System_Remark", + "blob": "0001010234988545b1ec4582a1fb89c9de980f64f2b3b06a3fcdf8ad8262cac3055dceb6e798126532162a71974bb41dfc71b564df6ffc276836d6ce8f649fe8267b4d5346d223b167ff7df85f3e7989f20b0a37c4615a1d06b6182622c0d50bb8825a71d710aafb00f7d703f3daed9e77896b87e14cf12c7cca8efcec263bb7128217e7d503ae11030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | System : Remark", + "1 | Remark [1/7] : 34988545b1ec4582a1fb89c9de980f64f2b3b0", + "1 | Remark [2/7] : 6a3fcdf8ad8262cac3055dceb6e79812653216", + "1 | Remark [3/7] : 2a71974bb41dfc71b564df6ffc276836d6ce8f", + "1 | Remark [4/7] : 649fe8267b4d5346d223b167ff7df85f3e7989", + "1 | Remark [5/7] : f20b0a37c4615a1d06b6182622c0d50bb8825a", + "1 | Remark [6/7] : 71d710aafb00f7d703f3daed9e77896b87e14c", + "1 | Remark [7/7] : f12c7cca8efcec263bb7128217e7", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | System : Remark", + "1 | Remark [1/7] : 34988545b1ec4582a1fb89c9de980f64f2b3b0", + "1 | Remark [2/7] : 6a3fcdf8ad8262cac3055dceb6e79812653216", + "1 | Remark [3/7] : 2a71974bb41dfc71b564df6ffc276836d6ce8f", + "1 | Remark [4/7] : 649fe8267b4d5346d223b167ff7df85f3e7989", + "1 | Remark [5/7] : f20b0a37c4615a1d06b6182622c0d50bb8825a", + "1 | Remark [6/7] : 71d710aafb00f7d703f3daed9e77896b87e14c", + "1 | Remark [7/7] : f12c7cca8efcec263bb7128217e7", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 10, + "name": "System_Remark", + "blob": "00010101b2c41fb0ccedfa1e14147b49507e856e54afb2edb7e48c241d45b2f98b0dd76f46f79a541c9e9db5f54389a198aa542e79eb61036cc2f5818e9acb2143a842f4d5038d240b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | System : Remark", + "1 | Remark [1/4] : b2c41fb0ccedfa1e14147b49507e856e54afb2", + "1 | Remark [2/4] : edb7e48c241d45b2f98b0dd76f46f79a541c9e", + "1 | Remark [3/4] : 9db5f54389a198aa542e79eb61036cc2f5818e", + "1 | Remark [4/4] : 9acb2143a842f4", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | System : Remark", + "1 | Remark [1/4] : b2c41fb0ccedfa1e14147b49507e856e54afb2", + "1 | Remark [2/4] : edb7e48c241d45b2f98b0dd76f46f79a541c9e", + "1 | Remark [3/4] : 9db5f54389a198aa542e79eb61036cc2f5818e", + "1 | Remark [4/4] : 9acb2143a842f4", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 11, + "name": "System_Set_heap_pages", + "blob": "00020100000000000000d5038d2403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | System : Set heap pages", + "1 | Pages : 1", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | System : Set heap pages", + "1 | Pages : 1", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 12, + "name": "System_Set_heap_pages", + "blob": "00020100000000000000d5030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | System : Set heap pages", + "1 | Pages : 1", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | System : Set heap pages", + "1 | Pages : 1", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 13, + "name": "System_Set_heap_pages", + "blob": "00022309000000000000d503ae1103006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | System : Set heap pages", + "1 | Pages : 2339", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | System : Set heap pages", + "1 | Pages : 2339", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 14, + "name": "System_Set_heap_pages", + "blob": "00026bc4000000000000d503ae110300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | System : Set heap pages", + "1 | Pages : 50283" + ], + "output_expert": [ + "0 | System : Set heap pages", + "1 | Pages : 50283", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 15, + "name": "System_Set_heap_pages", + "blob": "00020100000000000000d5038d2403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | System : Set heap pages", + "1 | Pages : 1", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | System : Set heap pages", + "1 | Pages : 1", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 16, + "name": "System_Set_code", + "blob": "000380008bca3e10d17b2cfc71ef145d9b2d5d4a3dfb208474480304b3080a2e4131c1d5039101002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | System : Set code", + "1 | Code [1/2] : 008bca3e10d17b2cfc71ef145d9b2d5d4a3dfb", + "1 | Code [2/2] : 208474480304b3080a2e4131c1" + ], + "output_expert": [ + "0 | System : Set code", + "1 | Code [1/2] : 008bca3e10d17b2cfc71ef145d9b2d5d4a3dfb", + "1 | Code [2/2] : 208474480304b3080a2e4131c1", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 17, + "name": "System_Set_code", + "blob": "00030102cf6e0bddae4392c389df38f86156f24ceb15d22310703852c1d3b33ad2609cbb81229cbd86889c15cdf14da89f5ed5bf0045e7d5a4b1866c1f902bbd52e12a4e59968f9fb25166055db3eee594d7b1e7336aeb8aaf3fddb768aa81f2b5423c8d3abd4242271fdb7745efaffc4731095cf3994e1a6a75de0680e881702f430fd6d5038d2403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | System : Set code", + "1 | Code [1/7] : cf6e0bddae4392c389df38f86156f24ceb15d2", + "1 | Code [2/7] : 2310703852c1d3b33ad2609cbb81229cbd8688", + "1 | Code [3/7] : 9c15cdf14da89f5ed5bf0045e7d5a4b1866c1f", + "1 | Code [4/7] : 902bbd52e12a4e59968f9fb25166055db3eee5", + "1 | Code [5/7] : 94d7b1e7336aeb8aaf3fddb768aa81f2b5423c", + "1 | Code [6/7] : 8d3abd4242271fdb7745efaffc4731095cf399", + "1 | Code [7/7] : 4e1a6a75de0680e881702f430fd6", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | System : Set code", + "1 | Code [1/7] : cf6e0bddae4392c389df38f86156f24ceb15d2", + "1 | Code [2/7] : 2310703852c1d3b33ad2609cbb81229cbd8688", + "1 | Code [3/7] : 9c15cdf14da89f5ed5bf0045e7d5a4b1866c1f", + "1 | Code [4/7] : 902bbd52e12a4e59968f9fb25166055db3eee5", + "1 | Code [5/7] : 94d7b1e7336aeb8aaf3fddb768aa81f2b5423c", + "1 | Code [6/7] : 8d3abd4242271fdb7745efaffc4731095cf399", + "1 | Code [7/7] : 4e1a6a75de0680e881702f430fd6", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 18, + "name": "System_Set_code", + "blob": "00038096ab01ac193b73fcc76aa234b12a329bc86f9f152b0ae6ffd64e1c32ca7ea706d503ae1103006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | System : Set code", + "1 | Code [1/2] : 96ab01ac193b73fcc76aa234b12a329bc86f9f", + "1 | Code [2/2] : 152b0ae6ffd64e1c32ca7ea706", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | System : Set code", + "1 | Code [1/2] : 96ab01ac193b73fcc76aa234b12a329bc86f9f", + "1 | Code [2/2] : 152b0ae6ffd64e1c32ca7ea706", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 19, + "name": "System_Set_code", + "blob": "0003010104c7666eb5fd586d1a57965e62578472fcde1857325a569c0bc8ab7ae48f78605c8ab160bf17fba894f0e596590387b45a0fa2bac6da69a1a5ce6ee10010fff1d503ae11030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | System : Set code", + "1 | Code [1/4] : 04c7666eb5fd586d1a57965e62578472fcde18", + "1 | Code [2/4] : 57325a569c0bc8ab7ae48f78605c8ab160bf17", + "1 | Code [3/4] : fba894f0e596590387b45a0fa2bac6da69a1a5", + "1 | Code [4/4] : ce6ee10010fff1", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | System : Set code", + "1 | Code [1/4] : 04c7666eb5fd586d1a57965e62578472fcde18", + "1 | Code [2/4] : 57325a569c0bc8ab7ae48f78605c8ab160bf17", + "1 | Code [3/4] : fba894f0e596590387b45a0fa2bac6da69a1a5", + "1 | Code [4/4] : ce6ee10010fff1", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 20, + "name": "System_Set_code", + "blob": "000380008bca3e10d17b2cfc71ef145d9b2d5d4a3dfb208474480304b3080a2e4131c1d503ae1103008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | System : Set code", + "1 | Code [1/2] : 008bca3e10d17b2cfc71ef145d9b2d5d4a3dfb", + "1 | Code [2/2] : 208474480304b3080a2e4131c1", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | System : Set code", + "1 | Code [1/2] : 008bca3e10d17b2cfc71ef145d9b2d5d4a3dfb", + "1 | Code [2/2] : 208474480304b3080a2e4131c1", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 21, + "name": "System_Set_code_without_checks", + "blob": "000480008bca3e10d17b2cfc71ef145d9b2d5d4a3dfb208474480304b3080a2e4131c1d503000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | System : Set code without checks", + "1 | Code [1/2] : 008bca3e10d17b2cfc71ef145d9b2d5d4a3dfb", + "1 | Code [2/2] : 208474480304b3080a2e4131c1", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | System : Set code without checks", + "1 | Code [1/2] : 008bca3e10d17b2cfc71ef145d9b2d5d4a3dfb", + "1 | Code [2/2] : 208474480304b3080a2e4131c1", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 22, + "name": "System_Set_code_without_checks", + "blob": "00040102cf6e0bddae4392c389df38f86156f24ceb15d22310703852c1d3b33ad2609cbb81229cbd86889c15cdf14da89f5ed5bf0045e7d5a4b1866c1f902bbd52e12a4e59968f9fb25166055db3eee594d7b1e7336aeb8aaf3fddb768aa81f2b5423c8d3abd4242271fdb7745efaffc4731095cf3994e1a6a75de0680e881702f430fd6d503ae1103008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | System : Set code without checks", + "1 | Code [1/7] : cf6e0bddae4392c389df38f86156f24ceb15d2", + "1 | Code [2/7] : 2310703852c1d3b33ad2609cbb81229cbd8688", + "1 | Code [3/7] : 9c15cdf14da89f5ed5bf0045e7d5a4b1866c1f", + "1 | Code [4/7] : 902bbd52e12a4e59968f9fb25166055db3eee5", + "1 | Code [5/7] : 94d7b1e7336aeb8aaf3fddb768aa81f2b5423c", + "1 | Code [6/7] : 8d3abd4242271fdb7745efaffc4731095cf399", + "1 | Code [7/7] : 4e1a6a75de0680e881702f430fd6", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | System : Set code without checks", + "1 | Code [1/7] : cf6e0bddae4392c389df38f86156f24ceb15d2", + "1 | Code [2/7] : 2310703852c1d3b33ad2609cbb81229cbd8688", + "1 | Code [3/7] : 9c15cdf14da89f5ed5bf0045e7d5a4b1866c1f", + "1 | Code [4/7] : 902bbd52e12a4e59968f9fb25166055db3eee5", + "1 | Code [5/7] : 94d7b1e7336aeb8aaf3fddb768aa81f2b5423c", + "1 | Code [6/7] : 8d3abd4242271fdb7745efaffc4731095cf399", + "1 | Code [7/7] : 4e1a6a75de0680e881702f430fd6", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 23, + "name": "System_Set_code_without_checks", + "blob": "00040102cf6e0bddae4392c389df38f86156f24ceb15d22310703852c1d3b33ad2609cbb81229cbd86889c15cdf14da89f5ed5bf0045e7d5a4b1866c1f902bbd52e12a4e59968f9fb25166055db3eee594d7b1e7336aeb8aaf3fddb768aa81f2b5423c8d3abd4242271fdb7745efaffc4731095cf3994e1a6a75de0680e881702f430fd6d503ae1103006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | System : Set code without checks", + "1 | Code [1/7] : cf6e0bddae4392c389df38f86156f24ceb15d2", + "1 | Code [2/7] : 2310703852c1d3b33ad2609cbb81229cbd8688", + "1 | Code [3/7] : 9c15cdf14da89f5ed5bf0045e7d5a4b1866c1f", + "1 | Code [4/7] : 902bbd52e12a4e59968f9fb25166055db3eee5", + "1 | Code [5/7] : 94d7b1e7336aeb8aaf3fddb768aa81f2b5423c", + "1 | Code [6/7] : 8d3abd4242271fdb7745efaffc4731095cf399", + "1 | Code [7/7] : 4e1a6a75de0680e881702f430fd6", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | System : Set code without checks", + "1 | Code [1/7] : cf6e0bddae4392c389df38f86156f24ceb15d2", + "1 | Code [2/7] : 2310703852c1d3b33ad2609cbb81229cbd8688", + "1 | Code [3/7] : 9c15cdf14da89f5ed5bf0045e7d5a4b1866c1f", + "1 | Code [4/7] : 902bbd52e12a4e59968f9fb25166055db3eee5", + "1 | Code [5/7] : 94d7b1e7336aeb8aaf3fddb768aa81f2b5423c", + "1 | Code [6/7] : 8d3abd4242271fdb7745efaffc4731095cf399", + "1 | Code [7/7] : 4e1a6a75de0680e881702f430fd6", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 24, + "name": "System_Set_code_without_checks", + "blob": "0004010191fbb072444e9084c96a7763c0ddfee99ed3c67ce44f67caf5bab4b3cb5b1c4967a79dced7d65c42297630513a56b2b93c7c2ab418315e4d2346f52334d55141d503008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | System : Set code without checks", + "1 | Code [1/4] : 91fbb072444e9084c96a7763c0ddfee99ed3c6", + "1 | Code [2/4] : 7ce44f67caf5bab4b3cb5b1c4967a79dced7d6", + "1 | Code [3/4] : 5c42297630513a56b2b93c7c2ab418315e4d23", + "1 | Code [4/4] : 46f52334d55141", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | System : Set code without checks", + "1 | Code [1/4] : 91fbb072444e9084c96a7763c0ddfee99ed3c6", + "1 | Code [2/4] : 7ce44f67caf5bab4b3cb5b1c4967a79dced7d6", + "1 | Code [3/4] : 5c42297630513a56b2b93c7c2ab418315e4d23", + "1 | Code [4/4] : 46f52334d55141", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 25, + "name": "System_Set_code_without_checks", + "blob": "0004010104c7666eb5fd586d1a57965e62578472fcde1857325a569c0bc8ab7ae48f78605c8ab160bf17fba894f0e596590387b45a0fa2bac6da69a1a5ce6ee10010fff1d503ae110300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | System : Set code without checks", + "1 | Code [1/4] : 04c7666eb5fd586d1a57965e62578472fcde18", + "1 | Code [2/4] : 57325a569c0bc8ab7ae48f78605c8ab160bf17", + "1 | Code [3/4] : fba894f0e596590387b45a0fa2bac6da69a1a5", + "1 | Code [4/4] : ce6ee10010fff1" + ], + "output_expert": [ + "0 | System : Set code without checks", + "1 | Code [1/4] : 04c7666eb5fd586d1a57965e62578472fcde18", + "1 | Code [2/4] : 57325a569c0bc8ab7ae48f78605c8ab160bf17", + "1 | Code [3/4] : fba894f0e596590387b45a0fa2bac6da69a1a5", + "1 | Code [4/4] : ce6ee10010fff1", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 26, + "name": "System_Suicide", + "blob": "0009d50391010b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | System : Suicide", + "1 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | System : Suicide", + "1 | Chain : Edgeware", + "2 | Nonce : 100", + "3 | Tip : EDG 0.000005552342355555", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 27, + "name": "System_Suicide", + "blob": "0009d5030433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | System : Suicide", + "1 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "1 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | System : Suicide", + "1 | Chain : Edgeware", + "2 | Nonce : 1", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 28, + "name": "System_Suicide", + "blob": "0009d5038d2433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | System : Suicide", + "1 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "1 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | System : Suicide", + "1 | Chain : Edgeware", + "2 | Nonce : 2339", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 29, + "name": "System_Suicide", + "blob": "0009d5030403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | System : Suicide", + "1 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | System : Suicide", + "1 | Chain : Edgeware", + "2 | Nonce : 1", + "3 | Tip : EDG 0.00000000123456789", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 30, + "name": "System_Suicide", + "blob": "0009d50391018ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | System : Suicide", + "1 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | System : Suicide", + "1 | Chain : Edgeware", + "2 | Nonce : 100", + "3 | Tip : EDG 0.000000000055555555", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 31, + "name": "Timestamp_Set", + "blob": "0300c920d503ae11030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Timestamp : Set", + "1 | Now : 2098", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Timestamp : Set", + "1 | Now : 2098", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 32, + "name": "Timestamp_Set", + "blob": "030000d50391018ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Timestamp : Set", + "1 | Now : 0", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Timestamp : Set", + "1 | Now : 0", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 33, + "name": "Timestamp_Set", + "blob": "030000d503ae1103008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Timestamp : Set", + "1 | Now : 0", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Timestamp : Set", + "1 | Now : 0", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 34, + "name": "Timestamp_Set", + "blob": "0300c920d503ae11030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Timestamp : Set", + "1 | Now : 2098", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Timestamp : Set", + "1 | Now : 2098", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 35, + "name": "Timestamp_Set", + "blob": "03006d0fd5038d246d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Timestamp : Set", + "1 | Now : 987", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Timestamp : Set", + "1 | Now : 987", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 36, + "name": "Indices_Claim", + "blob": "05007ce1dc76d503000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Indices : Claim", + "1 | Index : 1994187132", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Indices : Claim", + "1 | Index : 1994187132", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 37, + "name": "Indices_Claim", + "blob": "05007ce1dc76d503000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Indices : Claim", + "1 | Index : 1994187132", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Indices : Claim", + "1 | Index : 1994187132", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 38, + "name": "Indices_Claim", + "blob": "05007ce1dc76d503040b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Indices : Claim", + "1 | Index : 1994187132", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Indices : Claim", + "1 | Index : 1994187132", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 39, + "name": "Indices_Claim", + "blob": "05007ce1dc76d503046d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Indices : Claim", + "1 | Index : 1994187132", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Indices : Claim", + "1 | Index : 1994187132", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 40, + "name": "Indices_Claim", + "blob": "05007ce1dc76d5039101002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Indices : Claim", + "1 | Index : 1994187132" + ], + "output_expert": [ + "0 | Indices : Claim", + "1 | Index : 1994187132", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 41, + "name": "Indices_Transfer", + "blob": "05012cca058f2e1c64c04bd9b97014687c400a6bced5ce559a2ac23e5bfa89a60f107ce1dc76d5038d2403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Indices : Transfer", + "1 | New [1/2] : iXLvuB6fsGt5JQ6cBV7VqbS1d2kSUEshqxLkQVq", + "1 | New [2/2] : Jk5843qn", + "2 | Index : 1994187132", + "3 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Indices : Transfer", + "1 | New [1/2] : iXLvuB6fsGt5JQ6cBV7VqbS1d2kSUEshqxLkQVq", + "1 | New [2/2] : Jk5843qn", + "2 | Index : 1994187132", + "3 | Chain : Edgeware", + "4 | Nonce : 2339", + "5 | Tip : EDG 0.00000000123456789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 42, + "name": "Indices_Transfer", + "blob": "05012cca058f2e1c64c04bd9b97014687c400a6bced5ce559a2ac23e5bfa89a60f107ce1dc76d503ae1103000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Indices : Transfer", + "1 | New [1/2] : iXLvuB6fsGt5JQ6cBV7VqbS1d2kSUEshqxLkQVq", + "1 | New [2/2] : Jk5843qn", + "2 | Index : 1994187132", + "3 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Indices : Transfer", + "1 | New [1/2] : iXLvuB6fsGt5JQ6cBV7VqbS1d2kSUEshqxLkQVq", + "1 | New [2/2] : Jk5843qn", + "2 | Index : 1994187132", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Tip : EDG 0.000005552342355555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 43, + "name": "Indices_Transfer", + "blob": "0501fc36502b06380fd21101013d7b678acf7ba77c3b0d070d2fa28da03ad6132c767ce1dc76d503ae1103000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Indices : Transfer", + "1 | New [1/2] : oDK1d3PH2ckj69KyAVZdYyQi8L9Zb4Xp1UfuPP9", + "1 | New [2/2] : 4SGbP52D", + "2 | Index : 1994187132", + "3 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Indices : Transfer", + "1 | New [1/2] : oDK1d3PH2ckj69KyAVZdYyQi8L9Zb4Xp1UfuPP9", + "1 | New [2/2] : 4SGbP52D", + "2 | Index : 1994187132", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Tip : EDG 0.000005552342355555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 44, + "name": "Indices_Transfer", + "blob": "05013a7c18728de7c0d218d9003c299d23321dc154307f40290eae920c9a14df88417ce1dc76d503ae11030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Indices : Transfer", + "1 | New [1/2] : iqJT9NwpA3f4EpBLTXJJ59EzNx1S424Yvfkd7yg", + "1 | New [2/2] : rJDevzAR", + "2 | Index : 1994187132", + "3 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Indices : Transfer", + "1 | New [1/2] : iqJT9NwpA3f4EpBLTXJJ59EzNx1S424Yvfkd7yg", + "1 | New [2/2] : rJDevzAR", + "2 | Index : 1994187132", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Tip : EDG 0.00000000123456789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 45, + "name": "Indices_Transfer", + "blob": "05019c0e53a8c0ca0f3623c056af9a8ea30b94057dba0262f541808b27efe430b9757ce1dc76d50391016d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Indices : Transfer", + "1 | New [1/2] : m3EY3vTASFan5xtFj1vJXRQETywyYNpjgV6dv5Q", + "1 | New [2/2] : MUJ26AsQ", + "2 | Index : 1994187132", + "3 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Indices : Transfer", + "1 | New [1/2] : m3EY3vTASFan5xtFj1vJXRQETywyYNpjgV6dv5Q", + "1 | New [2/2] : MUJ26AsQ", + "2 | Index : 1994187132", + "3 | Chain : Edgeware", + "4 | Nonce : 100", + "5 | Tip : EDG 0.000000000000000987", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 46, + "name": "Indices_Free", + "blob": "05027ce1dc76d5038d248ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Indices : Free", + "1 | Index : 1994187132", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Indices : Free", + "1 | Index : 1994187132", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 47, + "name": "Indices_Free", + "blob": "05027ce1dc76d5038d240b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Indices : Free", + "1 | Index : 1994187132", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Indices : Free", + "1 | Index : 1994187132", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 48, + "name": "Indices_Free", + "blob": "05027ce1dc76d503006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Indices : Free", + "1 | Index : 1994187132", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Indices : Free", + "1 | Index : 1994187132", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 49, + "name": "Indices_Free", + "blob": "05027ce1dc76d5038d248ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Indices : Free", + "1 | Index : 1994187132", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Indices : Free", + "1 | Index : 1994187132", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 50, + "name": "Indices_Free", + "blob": "05027ce1dc76d5038d2403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Indices : Free", + "1 | Index : 1994187132", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Indices : Free", + "1 | Index : 1994187132", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 51, + "name": "Indices_Force_transfer", + "blob": "05033a7c18728de7c0d218d9003c299d23321dc154307f40290eae920c9a14df88417ce1dc7601d503ae110300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Indices : Force transfer", + "1 | New [1/2] : iqJT9NwpA3f4EpBLTXJJ59EzNx1S424Yvfkd7yg", + "1 | New [2/2] : rJDevzAR", + "2 | Index : 1994187132", + "3 | Freeze : True" + ], + "output_expert": [ + "0 | Indices : Force transfer", + "1 | New [1/2] : iqJT9NwpA3f4EpBLTXJJ59EzNx1S424Yvfkd7yg", + "1 | New [2/2] : rJDevzAR", + "2 | Index : 1994187132", + "3 | Freeze : True", + "4 | Chain : Edgeware", + "5 | Nonce : 50283", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 52, + "name": "Indices_Force_transfer", + "blob": "05033a7c18728de7c0d218d9003c299d23321dc154307f40290eae920c9a14df88417ce1dc7600d5038d246d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Indices : Force transfer", + "1 | New [1/2] : iqJT9NwpA3f4EpBLTXJJ59EzNx1S424Yvfkd7yg", + "1 | New [2/2] : rJDevzAR", + "2 | Index : 1994187132", + "3 | Freeze : False", + "4 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Indices : Force transfer", + "1 | New [1/2] : iqJT9NwpA3f4EpBLTXJJ59EzNx1S424Yvfkd7yg", + "1 | New [2/2] : rJDevzAR", + "2 | Index : 1994187132", + "3 | Freeze : False", + "4 | Chain : Edgeware", + "5 | Nonce : 2339", + "6 | Tip : EDG 0.000000000000000987", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 53, + "name": "Indices_Force_transfer", + "blob": "05032cca058f2e1c64c04bd9b97014687c400a6bced5ce559a2ac23e5bfa89a60f107ce1dc7600d5038d24002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Indices : Force transfer", + "1 | New [1/2] : iXLvuB6fsGt5JQ6cBV7VqbS1d2kSUEshqxLkQVq", + "1 | New [2/2] : Jk5843qn", + "2 | Index : 1994187132", + "3 | Freeze : False" + ], + "output_expert": [ + "0 | Indices : Force transfer", + "1 | New [1/2] : iXLvuB6fsGt5JQ6cBV7VqbS1d2kSUEshqxLkQVq", + "1 | New [2/2] : Jk5843qn", + "2 | Index : 1994187132", + "3 | Freeze : False", + "4 | Chain : Edgeware", + "5 | Nonce : 2339", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 54, + "name": "Indices_Force_transfer", + "blob": "0503fc36502b06380fd21101013d7b678acf7ba77c3b0d070d2fa28da03ad6132c767ce1dc7600d503ae11030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Indices : Force transfer", + "1 | New [1/2] : oDK1d3PH2ckj69KyAVZdYyQi8L9Zb4Xp1UfuPP9", + "1 | New [2/2] : 4SGbP52D", + "2 | Index : 1994187132", + "3 | Freeze : False", + "4 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Indices : Force transfer", + "1 | New [1/2] : oDK1d3PH2ckj69KyAVZdYyQi8L9Zb4Xp1UfuPP9", + "1 | New [2/2] : 4SGbP52D", + "2 | Index : 1994187132", + "3 | Freeze : False", + "4 | Chain : Edgeware", + "5 | Nonce : 50283", + "6 | Tip : EDG 0.00000000123456789", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 55, + "name": "Indices_Force_transfer", + "blob": "0503ae0f8c4e9d6bfe2f5a4d357ee743292594cff455e0a480ca635e5511921f3a607ce1dc7601d50304002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Indices : Force transfer", + "1 | New [1/2] : mSqm5tC3qvqidkfu77Le5ySig2XDMgtLjZo6Hbd", + "1 | New [2/2] : TypHehcM", + "2 | Index : 1994187132", + "3 | Freeze : True" + ], + "output_expert": [ + "0 | Indices : Force transfer", + "1 | New [1/2] : mSqm5tC3qvqidkfu77Le5ySig2XDMgtLjZo6Hbd", + "1 | New [2/2] : TypHehcM", + "2 | Index : 1994187132", + "3 | Freeze : True", + "4 | Chain : Edgeware", + "5 | Nonce : 1", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 56, + "name": "Indices_Freeze", + "blob": "05047ce1dc76d50304002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Indices : Freeze", + "1 | Index : 1994187132" + ], + "output_expert": [ + "0 | Indices : Freeze", + "1 | Index : 1994187132", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 57, + "name": "Indices_Freeze", + "blob": "05047ce1dc76d50300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Indices : Freeze", + "1 | Index : 1994187132" + ], + "output_expert": [ + "0 | Indices : Freeze", + "1 | Index : 1994187132", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 58, + "name": "Indices_Freeze", + "blob": "05047ce1dc76d5038d2403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Indices : Freeze", + "1 | Index : 1994187132", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Indices : Freeze", + "1 | Index : 1994187132", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 59, + "name": "Indices_Freeze", + "blob": "05047ce1dc76d5030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Indices : Freeze", + "1 | Index : 1994187132", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Indices : Freeze", + "1 | Index : 1994187132", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 60, + "name": "Indices_Freeze", + "blob": "05047ce1dc76d5030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Indices : Freeze", + "1 | Index : 1994187132", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Indices : Freeze", + "1 | Index : 1994187132", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 61, + "name": "Balances_Transfer", + "blob": "0600001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac66d0fd5038d240b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Balances : Transfer", + "1 | Dest [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Dest [2/2] : SDTfHv5h", + "2 | Amount : EDG 0.000000000000000987", + "3 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Balances : Transfer", + "1 | Dest [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Dest [2/2] : SDTfHv5h", + "2 | Amount : EDG 0.000000000000000987", + "3 | Chain : Edgeware", + "4 | Nonce : 2339", + "5 | Tip : EDG 0.000005552342355555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 62, + "name": "Balances_Transfer", + "blob": "0600001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac603d2029649d5030433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Balances : Transfer", + "1 | Dest [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Dest [2/2] : SDTfHv5h", + "2 | Amount : EDG 0.00000000123456789", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Balances : Transfer", + "1 | Dest [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Dest [2/2] : SDTfHv5h", + "2 | Amount : EDG 0.00000000123456789", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "5 | Tip [2/2] : 56789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 63, + "name": "Balances_Transfer", + "blob": "0600001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac603d2029649d50391010b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Balances : Transfer", + "1 | Dest [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Dest [2/2] : SDTfHv5h", + "2 | Amount : EDG 0.00000000123456789", + "3 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Balances : Transfer", + "1 | Dest [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Dest [2/2] : SDTfHv5h", + "2 | Amount : EDG 0.00000000123456789", + "3 | Chain : Edgeware", + "4 | Nonce : 100", + "5 | Tip : EDG 0.000005552342355555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 64, + "name": "Balances_Transfer", + "blob": "0600001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac600d503006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Balances : Transfer", + "1 | Dest [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Dest [2/2] : SDTfHv5h", + "2 | Amount : EDG 0.0", + "3 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Balances : Transfer", + "1 | Dest [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Dest [2/2] : SDTfHv5h", + "2 | Amount : EDG 0.0", + "3 | Chain : Edgeware", + "4 | Nonce : 0", + "5 | Tip : EDG 0.000000000000000987", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 65, + "name": "Balances_Transfer", + "blob": "0600001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac66d0fd503000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Balances : Transfer", + "1 | Dest [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Dest [2/2] : SDTfHv5h", + "2 | Amount : EDG 0.000000000000000987", + "3 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Balances : Transfer", + "1 | Dest [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Dest [2/2] : SDTfHv5h", + "2 | Amount : EDG 0.000000000000000987", + "3 | Chain : Edgeware", + "4 | Nonce : 0", + "5 | Tip : EDG 0.000005552342355555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 66, + "name": "Balances_Set_balance", + "blob": "0601001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac633158139ae28a3dfaac5fe1560a5e9e05c0b63ce64c10c05d5038d2403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Balances : Set balance", + "1 | Who [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Who [2/2] : SDTfHv5h", + "2 | New free [1/2] : EDG 123456789012345678901.2345678901234", + "2 | New free [2/2] : 56789", + "3 | New reserved : EDG 0.000005552342355555", + "4 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Balances : Set balance", + "1 | Who [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Who [2/2] : SDTfHv5h", + "2 | New free [1/2] : EDG 123456789012345678901.2345678901234", + "2 | New free [2/2] : 56789", + "3 | New reserved : EDG 0.000005552342355555", + "4 | Chain : Edgeware", + "5 | Nonce : 2339", + "6 | Tip : EDG 0.00000000123456789", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 67, + "name": "Balances_Set_balance", + "blob": "0601001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac68ed73e0d6d0fd5038d2403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Balances : Set balance", + "1 | Who [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Who [2/2] : SDTfHv5h", + "2 | New free : EDG 0.000000000055555555", + "3 | New reserved : EDG 0.000000000000000987", + "4 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Balances : Set balance", + "1 | Who [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Who [2/2] : SDTfHv5h", + "2 | New free : EDG 0.000000000055555555", + "3 | New reserved : EDG 0.000000000000000987", + "4 | Chain : Edgeware", + "5 | Nonce : 2339", + "6 | Tip : EDG 0.00000000123456789", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 68, + "name": "Balances_Set_balance", + "blob": "0601001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac68ed73e0d8ed73e0dd5038d240b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Balances : Set balance", + "1 | Who [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Who [2/2] : SDTfHv5h", + "2 | New free : EDG 0.000000000055555555", + "3 | New reserved : EDG 0.000000000055555555", + "4 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Balances : Set balance", + "1 | Who [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Who [2/2] : SDTfHv5h", + "2 | New free : EDG 0.000000000055555555", + "3 | New reserved : EDG 0.000000000055555555", + "4 | Chain : Edgeware", + "5 | Nonce : 2339", + "6 | Tip : EDG 0.000005552342355555", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 69, + "name": "Balances_Set_balance", + "blob": "0601001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac633158139ae28a3dfaac5fe1560a5e9e05c6d0fd503000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Balances : Set balance", + "1 | Who [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Who [2/2] : SDTfHv5h", + "2 | New free [1/2] : EDG 123456789012345678901.2345678901234", + "2 | New free [2/2] : 56789", + "3 | New reserved : EDG 0.000000000000000987", + "4 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Balances : Set balance", + "1 | Who [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Who [2/2] : SDTfHv5h", + "2 | New free [1/2] : EDG 123456789012345678901.2345678901234", + "2 | New free [2/2] : 56789", + "3 | New reserved : EDG 0.000000000000000987", + "4 | Chain : Edgeware", + "5 | Nonce : 0", + "6 | Tip : EDG 0.000005552342355555", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 70, + "name": "Balances_Set_balance", + "blob": "0601001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac6006d0fd50391010b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Balances : Set balance", + "1 | Who [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Who [2/2] : SDTfHv5h", + "2 | New free : EDG 0.0", + "3 | New reserved : EDG 0.000000000000000987", + "4 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Balances : Set balance", + "1 | Who [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Who [2/2] : SDTfHv5h", + "2 | New free : EDG 0.0", + "3 | New reserved : EDG 0.000000000000000987", + "4 | Chain : Edgeware", + "5 | Nonce : 100", + "6 | Tip : EDG 0.000005552342355555", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 71, + "name": "Balances_Force_transfer", + "blob": "0602001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac6001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac60b63ce64c10c05d5030403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Balances : Force transfer", + "1 | Source [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Source [2/2] : SDTfHv5h", + "2 | Dest [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "2 | Dest [2/2] : SDTfHv5h", + "3 | Amount : EDG 0.000005552342355555", + "4 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Balances : Force transfer", + "1 | Source [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Source [2/2] : SDTfHv5h", + "2 | Dest [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "2 | Dest [2/2] : SDTfHv5h", + "3 | Amount : EDG 0.000005552342355555", + "4 | Chain : Edgeware", + "5 | Nonce : 1", + "6 | Tip : EDG 0.00000000123456789", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 72, + "name": "Balances_Force_transfer", + "blob": "0602001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac6001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac66d0fd5039101002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Balances : Force transfer", + "1 | Source [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Source [2/2] : SDTfHv5h", + "2 | Dest [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "2 | Dest [2/2] : SDTfHv5h", + "3 | Amount : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Balances : Force transfer", + "1 | Source [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Source [2/2] : SDTfHv5h", + "2 | Dest [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "2 | Dest [2/2] : SDTfHv5h", + "3 | Amount : EDG 0.000000000000000987", + "4 | Chain : Edgeware", + "5 | Nonce : 100", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 73, + "name": "Balances_Force_transfer", + "blob": "0602001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac6001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac66d0fd503000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Balances : Force transfer", + "1 | Source [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Source [2/2] : SDTfHv5h", + "2 | Dest [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "2 | Dest [2/2] : SDTfHv5h", + "3 | Amount : EDG 0.000000000000000987", + "4 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Balances : Force transfer", + "1 | Source [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Source [2/2] : SDTfHv5h", + "2 | Dest [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "2 | Dest [2/2] : SDTfHv5h", + "3 | Amount : EDG 0.000000000000000987", + "4 | Chain : Edgeware", + "5 | Nonce : 0", + "6 | Tip : EDG 0.000005552342355555", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 74, + "name": "Balances_Force_transfer", + "blob": "0602001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac6001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac68ed73e0dd503040b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Balances : Force transfer", + "1 | Source [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Source [2/2] : SDTfHv5h", + "2 | Dest [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "2 | Dest [2/2] : SDTfHv5h", + "3 | Amount : EDG 0.000000000055555555", + "4 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Balances : Force transfer", + "1 | Source [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Source [2/2] : SDTfHv5h", + "2 | Dest [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "2 | Dest [2/2] : SDTfHv5h", + "3 | Amount : EDG 0.000000000055555555", + "4 | Chain : Edgeware", + "5 | Nonce : 1", + "6 | Tip : EDG 0.000005552342355555", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 75, + "name": "Balances_Force_transfer", + "blob": "0602001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac6001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac68ed73e0dd503ae1103000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Balances : Force transfer", + "1 | Source [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Source [2/2] : SDTfHv5h", + "2 | Dest [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "2 | Dest [2/2] : SDTfHv5h", + "3 | Amount : EDG 0.000000000055555555", + "4 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Balances : Force transfer", + "1 | Source [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Source [2/2] : SDTfHv5h", + "2 | Dest [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "2 | Dest [2/2] : SDTfHv5h", + "3 | Amount : EDG 0.000000000055555555", + "4 | Chain : Edgeware", + "5 | Nonce : 50283", + "6 | Tip : EDG 0.000005552342355555", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 76, + "name": "Balances_Transfer_keep_alive", + "blob": "0603001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac60b63ce64c10c05d503ae1103000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Balances : Transfer keep alive", + "1 | Dest [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Dest [2/2] : SDTfHv5h", + "2 | Amount : EDG 0.000005552342355555", + "3 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Balances : Transfer keep alive", + "1 | Dest [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Dest [2/2] : SDTfHv5h", + "2 | Amount : EDG 0.000005552342355555", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Tip : EDG 0.000005552342355555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 77, + "name": "Balances_Transfer_keep_alive", + "blob": "0603001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac633158139ae28a3dfaac5fe1560a5e9e05cd503910133158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Balances : Transfer keep alive", + "1 | Dest [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Dest [2/2] : SDTfHv5h", + "2 | Amount [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Amount [2/2] : 56789", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Balances : Transfer keep alive", + "1 | Dest [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Dest [2/2] : SDTfHv5h", + "2 | Amount [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Amount [2/2] : 56789", + "3 | Chain : Edgeware", + "4 | Nonce : 100", + "5 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "5 | Tip [2/2] : 56789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 78, + "name": "Balances_Transfer_keep_alive", + "blob": "0603001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac60b63ce64c10c05d5038d248ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Balances : Transfer keep alive", + "1 | Dest [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Dest [2/2] : SDTfHv5h", + "2 | Amount : EDG 0.000005552342355555", + "3 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Balances : Transfer keep alive", + "1 | Dest [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Dest [2/2] : SDTfHv5h", + "2 | Amount : EDG 0.000005552342355555", + "3 | Chain : Edgeware", + "4 | Nonce : 2339", + "5 | Tip : EDG 0.000000000055555555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 79, + "name": "Balances_Transfer_keep_alive", + "blob": "0603001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac68ed73e0dd5030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Balances : Transfer keep alive", + "1 | Dest [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Dest [2/2] : SDTfHv5h", + "2 | Amount : EDG 0.000000000055555555", + "3 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Balances : Transfer keep alive", + "1 | Dest [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Dest [2/2] : SDTfHv5h", + "2 | Amount : EDG 0.000000000055555555", + "3 | Chain : Edgeware", + "4 | Nonce : 0", + "5 | Tip : EDG 0.00000000123456789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 80, + "name": "Balances_Transfer_keep_alive", + "blob": "0603001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac68ed73e0dd503ae1103000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Balances : Transfer keep alive", + "1 | Dest [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Dest [2/2] : SDTfHv5h", + "2 | Amount : EDG 0.000000000055555555", + "3 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Balances : Transfer keep alive", + "1 | Dest [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Dest [2/2] : SDTfHv5h", + "2 | Amount : EDG 0.000000000055555555", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Tip : EDG 0.000005552342355555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 81, + "name": "Staking_Bond", + "blob": "0800001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac633158139ae28a3dfaac5fe1560a5e9e05c02d5038d240b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Bond", + "1 | Controller [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Controller [2/2] : SDTfHv5h", + "2 | Amount [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Amount [2/2] : 56789", + "3 | Payee : Controller", + "4 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Staking : Bond", + "1 | Controller [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Controller [2/2] : SDTfHv5h", + "2 | Amount [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Amount [2/2] : 56789", + "3 | Payee : Controller", + "4 | Chain : Edgeware", + "5 | Nonce : 2339", + "6 | Tip : EDG 0.000005552342355555", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 82, + "name": "Staking_Bond", + "blob": "0800001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac66d0f02d5038d2403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Bond", + "1 | Controller [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Controller [2/2] : SDTfHv5h", + "2 | Amount : EDG 0.000000000000000987", + "3 | Payee : Controller", + "4 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Staking : Bond", + "1 | Controller [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Controller [2/2] : SDTfHv5h", + "2 | Amount : EDG 0.000000000000000987", + "3 | Payee : Controller", + "4 | Chain : Edgeware", + "5 | Nonce : 2339", + "6 | Tip : EDG 0.00000000123456789", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 83, + "name": "Staking_Bond", + "blob": "0800001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac68ed73e0d01d5038d24002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Bond", + "1 | Controller [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Controller [2/2] : SDTfHv5h", + "2 | Amount : EDG 0.000000000055555555", + "3 | Payee : Stash" + ], + "output_expert": [ + "0 | Staking : Bond", + "1 | Controller [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Controller [2/2] : SDTfHv5h", + "2 | Amount : EDG 0.000000000055555555", + "3 | Payee : Stash", + "4 | Chain : Edgeware", + "5 | Nonce : 2339", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 84, + "name": "Staking_Bond", + "blob": "0800001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac603d202964902d503040b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Bond", + "1 | Controller [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Controller [2/2] : SDTfHv5h", + "2 | Amount : EDG 0.00000000123456789", + "3 | Payee : Controller", + "4 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Staking : Bond", + "1 | Controller [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Controller [2/2] : SDTfHv5h", + "2 | Amount : EDG 0.00000000123456789", + "3 | Payee : Controller", + "4 | Chain : Edgeware", + "5 | Nonce : 1", + "6 | Tip : EDG 0.000005552342355555", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 85, + "name": "Staking_Bond", + "blob": "0800001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac66d0f01d50391016d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Bond", + "1 | Controller [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Controller [2/2] : SDTfHv5h", + "2 | Amount : EDG 0.000000000000000987", + "3 | Payee : Stash", + "4 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Staking : Bond", + "1 | Controller [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Controller [2/2] : SDTfHv5h", + "2 | Amount : EDG 0.000000000000000987", + "3 | Payee : Stash", + "4 | Chain : Edgeware", + "5 | Nonce : 100", + "6 | Tip : EDG 0.000000000000000987", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 86, + "name": "Staking_Bond_extra", + "blob": "080100d5030433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Bond extra", + "1 | Amount : EDG 0.0", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Staking : Bond extra", + "1 | Amount : EDG 0.0", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 87, + "name": "Staking_Bond_extra", + "blob": "080100d50391016d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Bond extra", + "1 | Amount : EDG 0.0", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Staking : Bond extra", + "1 | Amount : EDG 0.0", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 88, + "name": "Staking_Bond_extra", + "blob": "080133158139ae28a3dfaac5fe1560a5e9e05cd5030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Bond extra", + "1 | Amount [1/2] : EDG 123456789012345678901.2345678901234", + "1 | Amount [2/2] : 56789", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Staking : Bond extra", + "1 | Amount [1/2] : EDG 123456789012345678901.2345678901234", + "1 | Amount [2/2] : 56789", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 89, + "name": "Staking_Bond_extra", + "blob": "08010b63ce64c10c05d503ae110300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Bond extra", + "1 | Amount : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Staking : Bond extra", + "1 | Amount : EDG 0.000005552342355555", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 90, + "name": "Staking_Bond_extra", + "blob": "080100d503000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Bond extra", + "1 | Amount : EDG 0.0", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Staking : Bond extra", + "1 | Amount : EDG 0.0", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 91, + "name": "Staking_Unbond", + "blob": "080203d2029649d5038d246d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Unbond", + "1 | Amount : EDG 0.00000000123456789", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Staking : Unbond", + "1 | Amount : EDG 0.00000000123456789", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 92, + "name": "Staking_Unbond", + "blob": "08028ed73e0dd5030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Unbond", + "1 | Amount : EDG 0.000000000055555555", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Staking : Unbond", + "1 | Amount : EDG 0.000000000055555555", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 93, + "name": "Staking_Unbond", + "blob": "080203d2029649d503008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Unbond", + "1 | Amount : EDG 0.00000000123456789", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Staking : Unbond", + "1 | Amount : EDG 0.00000000123456789", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 94, + "name": "Staking_Unbond", + "blob": "08028ed73e0dd503ae110300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Unbond", + "1 | Amount : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Staking : Unbond", + "1 | Amount : EDG 0.000000000055555555", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 95, + "name": "Staking_Unbond", + "blob": "08020b63ce64c10c05d50391018ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Unbond", + "1 | Amount : EDG 0.000005552342355555", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Staking : Unbond", + "1 | Amount : EDG 0.000005552342355555", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 96, + "name": "Staking_Withdraw_Unbonded", + "blob": "0803f7010000d503006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Withdraw Unbonded", + "1 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Staking : Withdraw Unbonded", + "1 | Num slashing spans : 503", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 97, + "name": "Staking_Withdraw_Unbonded", + "blob": "080334300000d5030433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Withdraw Unbonded", + "1 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "1 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Staking : Withdraw Unbonded", + "1 | Num slashing spans : 12340", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 98, + "name": "Staking_Withdraw_Unbonded", + "blob": "080300000000d503ae11030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Withdraw Unbonded", + "1 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Staking : Withdraw Unbonded", + "1 | Num slashing spans : 0", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 99, + "name": "Staking_Withdraw_Unbonded", + "blob": "08039d1c0000d503ae1103000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Withdraw Unbonded", + "1 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Staking : Withdraw Unbonded", + "1 | Num slashing spans : 7325", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 100, + "name": "Staking_Withdraw_Unbonded", + "blob": "080300000000d503ae11030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Withdraw Unbonded", + "1 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Staking : Withdraw Unbonded", + "1 | Num slashing spans : 0", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 101, + "name": "Staking_Validate", + "blob": "0804a8d503ae1103008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Validate", + "1 | Prefs : 0.0000042%", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Staking : Validate", + "1 | Prefs : 0.0000042%", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 102, + "name": "Staking_Validate", + "blob": "080404d503ae11030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Validate", + "1 | Prefs : 0.0000001%", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Staking : Validate", + "1 | Prefs : 0.0000001%", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 103, + "name": "Staking_Validate", + "blob": "0804a612eb01d503040b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Validate", + "1 | Prefs : 0.8045737%", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Staking : Validate", + "1 | Prefs : 0.8045737%", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 104, + "name": "Staking_Validate", + "blob": "080404d503ae11030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Validate", + "1 | Prefs : 0.0000001%", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Staking : Validate", + "1 | Prefs : 0.0000001%", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 105, + "name": "Staking_Validate", + "blob": "0804ba86e500d5030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Validate", + "1 | Prefs : 0.3760558%", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Staking : Validate", + "1 | Prefs : 0.3760558%", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 106, + "name": "Staking_Nominate", + "blob": "08050400186ec4d2f61fe422ac14c74791af5ae7028dcdc442e767a818c99cde99883508d503008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Nominate", + "1 | Targets [1/2] : i4es6yCztsZjtm4s79HygGb4VdDzRxDcywH43WF", + "1 | Targets [2/2] : 5t1wZMTM", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Staking : Nominate", + "1 | Targets [1/2] : i4es6yCztsZjtm4s79HygGb4VdDzRxDcywH43WF", + "1 | Targets [2/2] : 5t1wZMTM", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 107, + "name": "Staking_Nominate", + "blob": "08051000be80e725bcc7b78ad79f0e4fa434cbb7c25bbe1194d63ce9480896cf22186170005e7b3cf8ef6a8736af85c469fd2e3c69399bbb55169b66c53113776df9073573008e5841e9bc8064ace7b07de8073cb3f396d6227fd54dee38cb91144da598f04400b48de1fe1830109f4f9fa7cbc24848071e374092fbc050cf72bfc95d49427056d5038d248ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Nominate", + "1 | Targets [1/8] : mpQCad7DpTA9BTdEYQVTSPV699pLQmPZbRqH45Y", + "1 | Targets [2/8] : KuAKCTQP", + "1 | Targets [3/8] : jeVvMfoAoZKE2veJ162jL1wWEBcqvCTbDSyVvu2", + "1 | Targets [4/8] : HLAbbbGC", + "1 | Targets [5/8] : kjFpxugewBgzqmdaHbvXzdEkb97bKS9TwdA6cZW", + "1 | Targets [6/8] : NM9Kub4J", + "1 | Targets [7/8] : mbMaSn2FyFfXUZi89tn9KSukhBTo1fP4aGMLHnA", + "1 | Targets [8/8] : 2X4MtYMF", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Staking : Nominate", + "1 | Targets [1/8] : mpQCad7DpTA9BTdEYQVTSPV699pLQmPZbRqH45Y", + "1 | Targets [2/8] : KuAKCTQP", + "1 | Targets [3/8] : jeVvMfoAoZKE2veJ162jL1wWEBcqvCTbDSyVvu2", + "1 | Targets [4/8] : HLAbbbGC", + "1 | Targets [5/8] : kjFpxugewBgzqmdaHbvXzdEkb97bKS9TwdA6cZW", + "1 | Targets [6/8] : NM9Kub4J", + "1 | Targets [7/8] : mbMaSn2FyFfXUZi89tn9KSukhBTo1fP4aGMLHnA", + "1 | Targets [8/8] : 2X4MtYMF", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 108, + "name": "Staking_Nominate", + "blob": "08052000b4eecac64c501291ca9e4a60b0b3bc5b5ea68bb6a03be885c20bdb7b27bfd007000c3438ee28283bae84c6e655a487516c7d7ab1d93cdbc2239ce89d1dd6476e340024a1a6e2dfea040ee6b302e2c4f970bd82137819c5efa909822ea7dcee96ed2000de233598aed8f184da8896bec2b8896d23e97b94b8d26fd7d12695f02c12a915007618978615a12549ba03d346b4cd2f30e45c7456ff0bbeba628391ff0849416900f2580d7fc4469d02569c978d77d7d9a9d424ed26bc4351871a7ee38531396e00005034e006acbf92e13f6cbe7331d086694b7b29c0ce87f87522d9ca85a68aef1c00aa4a7c72cf0f1d35f5b398a3d503e086f28f4145702f67e8e287de86c2af9d03d50391010b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Nominate", + "1 | Targets [1/16] : mbrN9sFS7GKj34M3croNdcbhqxQY3yrQ8i9Qwm1", + "1 | Targets [2/16] : JrZW88rc", + "1 | Targets [3/16] : hncu3W7tkEi7YDp7QZHW3PoekXVVQYhL3wLNboB", + "1 | Targets [4/16] : 3uLV2fRg", + "1 | Targets [5/16] : iLeZ8GX1dLoNNGdH7dy5qbTXM5sPag5RyDLEwkC", + "1 | Targets [6/16] : BRvnLEzV", + "1 | Targets [7/16] : nXsu9muMMuMSW21mURm2QC87JABBoPSX64fNHzN", + "1 | Targets [8/16] : wFbyY9hN", + "1 | Targets [9/16] : kBTmNomATpjj4NyVvRgiR2iUdfyihhwXmdsmvT4", + "1 | Targets [10/16] : pPNfwKgt", + "1 | Targets [11/16] : nzNZAip4hQbDmrGcexmtC2UM4HBktTJxUofdY9b", + "1 | Targets [12/16] : njjnHZ4Q", + "1 | Targets [13/16] : jKnM9Vm8Y86qVP1CsQkGgEQMLjfWSp7gBZhHJpd", + "1 | Targets [14/16] : ozuvWpwu", + "1 | Targets [15/16] : mMu5TL2JZc6vSFPtvnQ4HZwn8te8bgGqDcVwNmW", + "1 | Targets [16/16] : vrxeKCAD", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Staking : Nominate", + "1 | Targets [1/16] : mbrN9sFS7GKj34M3croNdcbhqxQY3yrQ8i9Qwm1", + "1 | Targets [2/16] : JrZW88rc", + "1 | Targets [3/16] : hncu3W7tkEi7YDp7QZHW3PoekXVVQYhL3wLNboB", + "1 | Targets [4/16] : 3uLV2fRg", + "1 | Targets [5/16] : iLeZ8GX1dLoNNGdH7dy5qbTXM5sPag5RyDLEwkC", + "1 | Targets [6/16] : BRvnLEzV", + "1 | Targets [7/16] : nXsu9muMMuMSW21mURm2QC87JABBoPSX64fNHzN", + "1 | Targets [8/16] : wFbyY9hN", + "1 | Targets [9/16] : kBTmNomATpjj4NyVvRgiR2iUdfyihhwXmdsmvT4", + "1 | Targets [10/16] : pPNfwKgt", + "1 | Targets [11/16] : nzNZAip4hQbDmrGcexmtC2UM4HBktTJxUofdY9b", + "1 | Targets [12/16] : njjnHZ4Q", + "1 | Targets [13/16] : jKnM9Vm8Y86qVP1CsQkGgEQMLjfWSp7gBZhHJpd", + "1 | Targets [14/16] : ozuvWpwu", + "1 | Targets [15/16] : mMu5TL2JZc6vSFPtvnQ4HZwn8te8bgGqDcVwNmW", + "1 | Targets [16/16] : vrxeKCAD", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 109, + "name": "Staking_Nominate", + "blob": "08051000be80e725bcc7b78ad79f0e4fa434cbb7c25bbe1194d63ce9480896cf22186170005e7b3cf8ef6a8736af85c469fd2e3c69399bbb55169b66c53113776df9073573008e5841e9bc8064ace7b07de8073cb3f396d6227fd54dee38cb91144da598f04400b48de1fe1830109f4f9fa7cbc24848071e374092fbc050cf72bfc95d49427056d50391010b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Nominate", + "1 | Targets [1/8] : mpQCad7DpTA9BTdEYQVTSPV699pLQmPZbRqH45Y", + "1 | Targets [2/8] : KuAKCTQP", + "1 | Targets [3/8] : jeVvMfoAoZKE2veJ162jL1wWEBcqvCTbDSyVvu2", + "1 | Targets [4/8] : HLAbbbGC", + "1 | Targets [5/8] : kjFpxugewBgzqmdaHbvXzdEkb97bKS9TwdA6cZW", + "1 | Targets [6/8] : NM9Kub4J", + "1 | Targets [7/8] : mbMaSn2FyFfXUZi89tn9KSukhBTo1fP4aGMLHnA", + "1 | Targets [8/8] : 2X4MtYMF", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Staking : Nominate", + "1 | Targets [1/8] : mpQCad7DpTA9BTdEYQVTSPV699pLQmPZbRqH45Y", + "1 | Targets [2/8] : KuAKCTQP", + "1 | Targets [3/8] : jeVvMfoAoZKE2veJ162jL1wWEBcqvCTbDSyVvu2", + "1 | Targets [4/8] : HLAbbbGC", + "1 | Targets [5/8] : kjFpxugewBgzqmdaHbvXzdEkb97bKS9TwdA6cZW", + "1 | Targets [6/8] : NM9Kub4J", + "1 | Targets [7/8] : mbMaSn2FyFfXUZi89tn9KSukhBTo1fP4aGMLHnA", + "1 | Targets [8/8] : 2X4MtYMF", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 110, + "name": "Staking_Nominate", + "blob": "080508002ad058729c73dd86745cb3c1394fa37307cc11fe09541042f5127381668ccb1800926e038f889d334c31a213a6a6ab9f0086ecaffa3a2a17bfc219bdf3c58cd12ed5030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Nominate", + "1 | Targets [1/4] : iUkiJU8iAG7n92nZBzCQjRAPF3fRawzBugRHTdZ", + "1 | Targets [2/4] : fDHT1kT7", + "1 | Targets [3/4] : kpcUvpJmqj7SNJ74xYMW8jxmuN6zASKAc8dbYCT", + "1 | Targets [4/4] : QiWV31RY", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Staking : Nominate", + "1 | Targets [1/4] : iUkiJU8iAG7n92nZBzCQjRAPF3fRawzBugRHTdZ", + "1 | Targets [2/4] : fDHT1kT7", + "1 | Targets [3/4] : kpcUvpJmqj7SNJ74xYMW8jxmuN6zASKAc8dbYCT", + "1 | Targets [4/4] : QiWV31RY", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 111, + "name": "Staking_Chill", + "blob": "0806d503ae1103006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Chill", + "1 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Staking : Chill", + "1 | Chain : Edgeware", + "2 | Nonce : 50283", + "3 | Tip : EDG 0.000000000000000987", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 112, + "name": "Staking_Chill", + "blob": "0806d503ae1103006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Chill", + "1 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Staking : Chill", + "1 | Chain : Edgeware", + "2 | Nonce : 50283", + "3 | Tip : EDG 0.000000000000000987", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 113, + "name": "Staking_Chill", + "blob": "0806d503ae11030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Chill", + "1 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "1 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Staking : Chill", + "1 | Chain : Edgeware", + "2 | Nonce : 50283", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 114, + "name": "Staking_Chill", + "blob": "0806d503048ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Chill", + "1 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Staking : Chill", + "1 | Chain : Edgeware", + "2 | Nonce : 1", + "3 | Tip : EDG 0.000000000055555555", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 115, + "name": "Staking_Chill", + "blob": "0806d5038d246d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Chill", + "1 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Staking : Chill", + "1 | Chain : Edgeware", + "2 | Nonce : 2339", + "3 | Tip : EDG 0.000000000000000987", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 116, + "name": "Staking_Set_payee", + "blob": "080701d5038d2403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Set payee", + "1 | Payee : Stash", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Staking : Set payee", + "1 | Payee : Stash", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 117, + "name": "Staking_Set_payee", + "blob": "080702d503000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Set payee", + "1 | Payee : Controller", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Staking : Set payee", + "1 | Payee : Controller", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 118, + "name": "Staking_Set_payee", + "blob": "080702d50391018ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Set payee", + "1 | Payee : Controller", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Staking : Set payee", + "1 | Payee : Controller", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 119, + "name": "Staking_Set_payee", + "blob": "080702d5030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Set payee", + "1 | Payee : Controller", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Staking : Set payee", + "1 | Payee : Controller", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 120, + "name": "Staking_Set_payee", + "blob": "080702d5038d2403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Set payee", + "1 | Payee : Controller", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Staking : Set payee", + "1 | Payee : Controller", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 121, + "name": "Staking_Set_controller", + "blob": "0808001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac6d5038d2433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Set controller", + "1 | Controller [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Controller [2/2] : SDTfHv5h", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Staking : Set controller", + "1 | Controller [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Controller [2/2] : SDTfHv5h", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 122, + "name": "Staking_Set_controller", + "blob": "0808001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac6d5038d248ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Set controller", + "1 | Controller [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Controller [2/2] : SDTfHv5h", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Staking : Set controller", + "1 | Controller [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Controller [2/2] : SDTfHv5h", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 123, + "name": "Staking_Set_controller", + "blob": "0808001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac6d5038d246d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Set controller", + "1 | Controller [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Controller [2/2] : SDTfHv5h", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Staking : Set controller", + "1 | Controller [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Controller [2/2] : SDTfHv5h", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 124, + "name": "Staking_Set_controller", + "blob": "0808001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac6d50391018ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Set controller", + "1 | Controller [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Controller [2/2] : SDTfHv5h", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Staking : Set controller", + "1 | Controller [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Controller [2/2] : SDTfHv5h", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 125, + "name": "Staking_Set_controller", + "blob": "0808001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac6d503910103d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Set controller", + "1 | Controller [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Controller [2/2] : SDTfHv5h", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Staking : Set controller", + "1 | Controller [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Controller [2/2] : SDTfHv5h", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 126, + "name": "Staking_Set_validator_count", + "blob": "08099504d5038d248ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Set validator count", + "1 | New : 293", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Staking : Set validator count", + "1 | New : 293", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 127, + "name": "Staking_Set_validator_count", + "blob": "0809ed01d503046d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Set validator count", + "1 | New : 123", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Staking : Set validator count", + "1 | New : 123", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 128, + "name": "Staking_Set_validator_count", + "blob": "0809ed01d5038d248ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Set validator count", + "1 | New : 123", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Staking : Set validator count", + "1 | New : 123", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 129, + "name": "Staking_Set_validator_count", + "blob": "0809ed01d503910103d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Set validator count", + "1 | New : 123", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Staking : Set validator count", + "1 | New : 123", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 130, + "name": "Staking_Set_validator_count", + "blob": "0809ed01d50391018ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Set validator count", + "1 | New : 123", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Staking : Set validator count", + "1 | New : 123", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 131, + "name": "Staking_Increase_validator_count", + "blob": "080a9504d5038d246d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Increase validator count", + "1 | Additional : 293", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Staking : Increase validator count", + "1 | Additional : 293", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 132, + "name": "Staking_Increase_validator_count", + "blob": "080a9504d50391010b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Increase validator count", + "1 | Additional : 293", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Staking : Increase validator count", + "1 | Additional : 293", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 133, + "name": "Staking_Increase_validator_count", + "blob": "080aed01d503ae110300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Increase validator count", + "1 | Additional : 123" + ], + "output_expert": [ + "0 | Staking : Increase validator count", + "1 | Additional : 123", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 134, + "name": "Staking_Increase_validator_count", + "blob": "080a04d503ae1103000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Increase validator count", + "1 | Additional : 1", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Staking : Increase validator count", + "1 | Additional : 1", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 135, + "name": "Staking_Increase_validator_count", + "blob": "080afd0fd503ae11030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Increase validator count", + "1 | Additional : 1023", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Staking : Increase validator count", + "1 | Additional : 1023", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 136, + "name": "Staking_Force_no_eras", + "blob": "080cd503ae110300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Force no eras" + ], + "output_expert": [ + "0 | Staking : Force no eras", + "1 | Chain : Edgeware", + "2 | Nonce : 50283", + "3 | Era Phase : 61", + "4 | Era Period : 64", + "5 | Block [1/2] : 00000000000000000000000000000000000000", + "5 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 137, + "name": "Staking_Force_no_eras", + "blob": "080cd503006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Force no eras", + "1 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Staking : Force no eras", + "1 | Chain : Edgeware", + "2 | Nonce : 0", + "3 | Tip : EDG 0.000000000000000987", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 138, + "name": "Staking_Force_no_eras", + "blob": "080cd503000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Force no eras", + "1 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Staking : Force no eras", + "1 | Chain : Edgeware", + "2 | Nonce : 0", + "3 | Tip : EDG 0.000005552342355555", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 139, + "name": "Staking_Force_no_eras", + "blob": "080cd5030433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Force no eras", + "1 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "1 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Staking : Force no eras", + "1 | Chain : Edgeware", + "2 | Nonce : 1", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 140, + "name": "Staking_Force_no_eras", + "blob": "080cd503006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Force no eras", + "1 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Staking : Force no eras", + "1 | Chain : Edgeware", + "2 | Nonce : 0", + "3 | Tip : EDG 0.000000000000000987", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 141, + "name": "Staking_Force_new_era", + "blob": "080dd50391016d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Force new era", + "1 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Staking : Force new era", + "1 | Chain : Edgeware", + "2 | Nonce : 100", + "3 | Tip : EDG 0.000000000000000987", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 142, + "name": "Staking_Force_new_era", + "blob": "080dd503008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Force new era", + "1 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Staking : Force new era", + "1 | Chain : Edgeware", + "2 | Nonce : 0", + "3 | Tip : EDG 0.000000000055555555", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 143, + "name": "Staking_Force_new_era", + "blob": "080dd5030433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Force new era", + "1 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "1 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Staking : Force new era", + "1 | Chain : Edgeware", + "2 | Nonce : 1", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 144, + "name": "Staking_Force_new_era", + "blob": "080dd5038d246d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Force new era", + "1 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Staking : Force new era", + "1 | Chain : Edgeware", + "2 | Nonce : 2339", + "3 | Tip : EDG 0.000000000000000987", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 145, + "name": "Staking_Force_new_era", + "blob": "080dd503910133158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Force new era", + "1 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "1 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Staking : Force new era", + "1 | Chain : Edgeware", + "2 | Nonce : 100", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 146, + "name": "Staking_Set_invulnerables", + "blob": "080e00d503ae1103000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Set invulnerables", + "1 | Invulnerables : ", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Staking : Set invulnerables", + "1 | Invulnerables : ", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 147, + "name": "Staking_Set_invulnerables", + "blob": "080e205647e656a9b2b386fb81c3379ed216a02f06da139369f600b40dcfb466be6355cc414baeefd7bb64a39c211252feba539a22a320cb39273a75323aba52c5bd2df29eed1eb71d4eaa8cc3c79e577f42e2b2008e70abe00375fde9b83914180077daffe9e267abf57da6bf7055245af1f2b8911f334f8d98b4bc3016321f50c80da2f5b360dc8b11944546e68bb4bb3685d3d450da481aa1ff3a0c97d90d6cb34f2ae7b4d2d8301e19742abb18e8bea820e5cddc1c587b8f65c0a8d8aeb228750760f0259435df976863cf69d55157507ec457c6bc6ac553789a3db0f27e97236c8cd5a27b6ae154311de1d18d7d91a608db7a072fcdbaad75208ec3f276a30b27d5030403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Set invulnerables", + "1 | Invulnerables [1/16] : jTkHbfGsmhUXHfKjiimQiKPrDq2Wwq4KZXWAV7y", + "1 | Invulnerables [2/16] : FcHky3SX", + "1 | Invulnerables [3/16] : n8RyXypmRn8mejaAmwWZLSwDLAWv1NHUKaotCjB", + "1 | Invulnerables [4/16] : TDaC9TL1", + "1 | Invulnerables [5/16] : nzjcHpFKT2Lk8rSggNFZEoW3CJGHCWEKK1V1JjU", + "1 | Invulnerables [6/16] : CLjiLJXN", + "1 | Invulnerables [7/16] : nTmGgtWFNtLbfkBfXmRaWzvDtYvrgiv1BeCwDnK", + "1 | Invulnerables [8/16] : ZF8HvM2J", + "1 | Invulnerables [9/16] : mCHZCEuaPs9WYoqzWDzYuRjbghtm7dupa1dN6ww", + "1 | Invulnerables [10/16] : BktnvuWr", + "1 | Invulnerables [11/16] : iUseoMGwQEhrraKhgTWQvvqP5wSZg8otYQHrnah", + "1 | Invulnerables [12/16] : uhNApnjD", + "1 | Invulnerables [13/16] : jhikCaTnQYMQN9vNBJwnLBT7EmFj12aq4PYcrV4", + "1 | Invulnerables [14/16] : WiCBNazj", + "1 | Invulnerables [15/16] : khGycJEQsn7ixT7MN6x3tFJmMX4if2WpRsziB7C", + "1 | Invulnerables [16/16] : 3FXiWbcr", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Staking : Set invulnerables", + "1 | Invulnerables [1/16] : jTkHbfGsmhUXHfKjiimQiKPrDq2Wwq4KZXWAV7y", + "1 | Invulnerables [2/16] : FcHky3SX", + "1 | Invulnerables [3/16] : n8RyXypmRn8mejaAmwWZLSwDLAWv1NHUKaotCjB", + "1 | Invulnerables [4/16] : TDaC9TL1", + "1 | Invulnerables [5/16] : nzjcHpFKT2Lk8rSggNFZEoW3CJGHCWEKK1V1JjU", + "1 | Invulnerables [6/16] : CLjiLJXN", + "1 | Invulnerables [7/16] : nTmGgtWFNtLbfkBfXmRaWzvDtYvrgiv1BeCwDnK", + "1 | Invulnerables [8/16] : ZF8HvM2J", + "1 | Invulnerables [9/16] : mCHZCEuaPs9WYoqzWDzYuRjbghtm7dupa1dN6ww", + "1 | Invulnerables [10/16] : BktnvuWr", + "1 | Invulnerables [11/16] : iUseoMGwQEhrraKhgTWQvvqP5wSZg8otYQHrnah", + "1 | Invulnerables [12/16] : uhNApnjD", + "1 | Invulnerables [13/16] : jhikCaTnQYMQN9vNBJwnLBT7EmFj12aq4PYcrV4", + "1 | Invulnerables [14/16] : WiCBNazj", + "1 | Invulnerables [15/16] : khGycJEQsn7ixT7MN6x3tFJmMX4if2WpRsziB7C", + "1 | Invulnerables [16/16] : 3FXiWbcr", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 148, + "name": "Staking_Set_invulnerables", + "blob": "080e205647e656a9b2b386fb81c3379ed216a02f06da139369f600b40dcfb466be6355cc414baeefd7bb64a39c211252feba539a22a320cb39273a75323aba52c5bd2df29eed1eb71d4eaa8cc3c79e577f42e2b2008e70abe00375fde9b83914180077daffe9e267abf57da6bf7055245af1f2b8911f334f8d98b4bc3016321f50c80da2f5b360dc8b11944546e68bb4bb3685d3d450da481aa1ff3a0c97d90d6cb34f2ae7b4d2d8301e19742abb18e8bea820e5cddc1c587b8f65c0a8d8aeb228750760f0259435df976863cf69d55157507ec457c6bc6ac553789a3db0f27e97236c8cd5a27b6ae154311de1d18d7d91a608db7a072fcdbaad75208ec3f276a30b27d50300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Set invulnerables", + "1 | Invulnerables [1/16] : jTkHbfGsmhUXHfKjiimQiKPrDq2Wwq4KZXWAV7y", + "1 | Invulnerables [2/16] : FcHky3SX", + "1 | Invulnerables [3/16] : n8RyXypmRn8mejaAmwWZLSwDLAWv1NHUKaotCjB", + "1 | Invulnerables [4/16] : TDaC9TL1", + "1 | Invulnerables [5/16] : nzjcHpFKT2Lk8rSggNFZEoW3CJGHCWEKK1V1JjU", + "1 | Invulnerables [6/16] : CLjiLJXN", + "1 | Invulnerables [7/16] : nTmGgtWFNtLbfkBfXmRaWzvDtYvrgiv1BeCwDnK", + "1 | Invulnerables [8/16] : ZF8HvM2J", + "1 | Invulnerables [9/16] : mCHZCEuaPs9WYoqzWDzYuRjbghtm7dupa1dN6ww", + "1 | Invulnerables [10/16] : BktnvuWr", + "1 | Invulnerables [11/16] : iUseoMGwQEhrraKhgTWQvvqP5wSZg8otYQHrnah", + "1 | Invulnerables [12/16] : uhNApnjD", + "1 | Invulnerables [13/16] : jhikCaTnQYMQN9vNBJwnLBT7EmFj12aq4PYcrV4", + "1 | Invulnerables [14/16] : WiCBNazj", + "1 | Invulnerables [15/16] : khGycJEQsn7ixT7MN6x3tFJmMX4if2WpRsziB7C", + "1 | Invulnerables [16/16] : 3FXiWbcr" + ], + "output_expert": [ + "0 | Staking : Set invulnerables", + "1 | Invulnerables [1/16] : jTkHbfGsmhUXHfKjiimQiKPrDq2Wwq4KZXWAV7y", + "1 | Invulnerables [2/16] : FcHky3SX", + "1 | Invulnerables [3/16] : n8RyXypmRn8mejaAmwWZLSwDLAWv1NHUKaotCjB", + "1 | Invulnerables [4/16] : TDaC9TL1", + "1 | Invulnerables [5/16] : nzjcHpFKT2Lk8rSggNFZEoW3CJGHCWEKK1V1JjU", + "1 | Invulnerables [6/16] : CLjiLJXN", + "1 | Invulnerables [7/16] : nTmGgtWFNtLbfkBfXmRaWzvDtYvrgiv1BeCwDnK", + "1 | Invulnerables [8/16] : ZF8HvM2J", + "1 | Invulnerables [9/16] : mCHZCEuaPs9WYoqzWDzYuRjbghtm7dupa1dN6ww", + "1 | Invulnerables [10/16] : BktnvuWr", + "1 | Invulnerables [11/16] : iUseoMGwQEhrraKhgTWQvvqP5wSZg8otYQHrnah", + "1 | Invulnerables [12/16] : uhNApnjD", + "1 | Invulnerables [13/16] : jhikCaTnQYMQN9vNBJwnLBT7EmFj12aq4PYcrV4", + "1 | Invulnerables [14/16] : WiCBNazj", + "1 | Invulnerables [15/16] : khGycJEQsn7ixT7MN6x3tFJmMX4if2WpRsziB7C", + "1 | Invulnerables [16/16] : 3FXiWbcr", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 149, + "name": "Staking_Set_invulnerables", + "blob": "080e00d5030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Set invulnerables", + "1 | Invulnerables : ", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Staking : Set invulnerables", + "1 | Invulnerables : ", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 150, + "name": "Staking_Set_invulnerables", + "blob": "080e00d503040b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Set invulnerables", + "1 | Invulnerables : ", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Staking : Set invulnerables", + "1 | Invulnerables : ", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 151, + "name": "Staking_Force_unstake", + "blob": "080f2a432fe80ff72d33204e68b384fcd88bfc19ca5060055e78f8ef4dfc708728749d1c0000d5030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Force unstake", + "1 | Stash [1/2] : iU2nCZ2wJUWUw6BpnWbcXY727JgLhM4dm5WuhLd", + "1 | Stash [2/2] : BKhzuLGR", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Staking : Force unstake", + "1 | Stash [1/2] : iU2nCZ2wJUWUw6BpnWbcXY727JgLhM4dm5WuhLd", + "1 | Stash [2/2] : BKhzuLGR", + "2 | Num slashing spans : 7325", + "3 | Chain : Edgeware", + "4 | Nonce : 0", + "5 | Tip : EDG 0.00000000123456789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 152, + "name": "Staking_Force_unstake", + "blob": "080f2cca058f2e1c64c04bd9b97014687c400a6bced5ce559a2ac23e5bfa89a60f1000000000d503ae11030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Force unstake", + "1 | Stash [1/2] : iXLvuB6fsGt5JQ6cBV7VqbS1d2kSUEshqxLkQVq", + "1 | Stash [2/2] : Jk5843qn", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Staking : Force unstake", + "1 | Stash [1/2] : iXLvuB6fsGt5JQ6cBV7VqbS1d2kSUEshqxLkQVq", + "1 | Stash [2/2] : Jk5843qn", + "2 | Num slashing spans : 0", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Tip : EDG 0.00000000123456789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 153, + "name": "Staking_Force_unstake", + "blob": "080f2a432fe80ff72d33204e68b384fcd88bfc19ca5060055e78f8ef4dfc70872874f7010000d503000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Force unstake", + "1 | Stash [1/2] : iU2nCZ2wJUWUw6BpnWbcXY727JgLhM4dm5WuhLd", + "1 | Stash [2/2] : BKhzuLGR", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Staking : Force unstake", + "1 | Stash [1/2] : iU2nCZ2wJUWUw6BpnWbcXY727JgLhM4dm5WuhLd", + "1 | Stash [2/2] : BKhzuLGR", + "2 | Num slashing spans : 503", + "3 | Chain : Edgeware", + "4 | Nonce : 0", + "5 | Tip : EDG 0.000005552342355555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 154, + "name": "Staking_Force_unstake", + "blob": "080ffc36502b06380fd21101013d7b678acf7ba77c3b0d070d2fa28da03ad6132c76d3040000d5030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Force unstake", + "1 | Stash [1/2] : oDK1d3PH2ckj69KyAVZdYyQi8L9Zb4Xp1UfuPP9", + "1 | Stash [2/2] : 4SGbP52D", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Staking : Force unstake", + "1 | Stash [1/2] : oDK1d3PH2ckj69KyAVZdYyQi8L9Zb4Xp1UfuPP9", + "1 | Stash [2/2] : 4SGbP52D", + "2 | Num slashing spans : 1235", + "3 | Chain : Edgeware", + "4 | Nonce : 0", + "5 | Tip : EDG 0.00000000123456789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 155, + "name": "Staking_Force_unstake", + "blob": "080ff0d79b5ca0e4bfe27f9e6440d003d0bf037a5721cb138d4d7a227056a38c321800000000d503ae1103006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Force unstake", + "1 | Stash [1/2] : nxQMKYwLGxtr3Np6DqJsYNPE89GrBC9kKgG81Ug", + "1 | Stash [2/2] : Ew2yqvUu", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Staking : Force unstake", + "1 | Stash [1/2] : nxQMKYwLGxtr3Np6DqJsYNPE89GrBC9kKgG81Ug", + "1 | Stash [2/2] : Ew2yqvUu", + "2 | Num slashing spans : 0", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Tip : EDG 0.000000000000000987", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 156, + "name": "Staking_Force_new_era_always", + "blob": "0810d503910133158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Force new era always", + "1 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "1 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Staking : Force new era always", + "1 | Chain : Edgeware", + "2 | Nonce : 100", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 157, + "name": "Staking_Force_new_era_always", + "blob": "0810d503ae11030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Force new era always", + "1 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "1 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Staking : Force new era always", + "1 | Chain : Edgeware", + "2 | Nonce : 50283", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 158, + "name": "Staking_Force_new_era_always", + "blob": "0810d503040b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Force new era always", + "1 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Staking : Force new era always", + "1 | Chain : Edgeware", + "2 | Nonce : 1", + "3 | Tip : EDG 0.000005552342355555", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 159, + "name": "Staking_Force_new_era_always", + "blob": "0810d503ae1103006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Force new era always", + "1 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Staking : Force new era always", + "1 | Chain : Edgeware", + "2 | Nonce : 50283", + "3 | Tip : EDG 0.000000000000000987", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 160, + "name": "Staking_Force_new_era_always", + "blob": "0810d50304002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Force new era always" + ], + "output_expert": [ + "0 | Staking : Force new era always", + "1 | Chain : Edgeware", + "2 | Nonce : 1", + "3 | Era Phase : 61", + "4 | Era Period : 64", + "5 | Block [1/2] : 00000000000000000000000000000000000000", + "5 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 161, + "name": "Staking_Cancel_deferred_slash", + "blob": "0811d3040000100d0000000c0000001300000023000000d5038d240b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Cancel deferred slash", + "1 | Era : 1235", + "2 | Slash indices [1/4] : 13", + "2 | Slash indices [2/4] : 12", + "2 | Slash indices [3/4] : 19", + "2 | Slash indices [4/4] : 35", + "3 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Staking : Cancel deferred slash", + "1 | Era : 1235", + "2 | Slash indices [1/4] : 13", + "2 | Slash indices [2/4] : 12", + "2 | Slash indices [3/4] : 19", + "2 | Slash indices [4/4] : 35", + "3 | Chain : Edgeware", + "4 | Nonce : 2339", + "5 | Tip : EDG 0.000005552342355555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 162, + "name": "Staking_Cancel_deferred_slash", + "blob": "0811f7010000100c000000290000003400000035000000d5030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Cancel deferred slash", + "1 | Era : 503", + "2 | Slash indices [1/4] : 12", + "2 | Slash indices [2/4] : 41", + "2 | Slash indices [3/4] : 52", + "2 | Slash indices [4/4] : 53", + "3 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Staking : Cancel deferred slash", + "1 | Era : 503", + "2 | Slash indices [1/4] : 12", + "2 | Slash indices [2/4] : 41", + "2 | Slash indices [3/4] : 52", + "2 | Slash indices [4/4] : 53", + "3 | Chain : Edgeware", + "4 | Nonce : 0", + "5 | Tip : EDG 0.00000000123456789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 163, + "name": "Staking_Cancel_deferred_slash", + "blob": "0811d3040000100c000000290000003400000035000000d5038d248ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Cancel deferred slash", + "1 | Era : 1235", + "2 | Slash indices [1/4] : 12", + "2 | Slash indices [2/4] : 41", + "2 | Slash indices [3/4] : 52", + "2 | Slash indices [4/4] : 53", + "3 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Staking : Cancel deferred slash", + "1 | Era : 1235", + "2 | Slash indices [1/4] : 12", + "2 | Slash indices [2/4] : 41", + "2 | Slash indices [3/4] : 52", + "2 | Slash indices [4/4] : 53", + "3 | Chain : Edgeware", + "4 | Nonce : 2339", + "5 | Tip : EDG 0.000000000055555555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 164, + "name": "Staking_Cancel_deferred_slash", + "blob": "08113430000010200000000b000000200000000b000000d5038d248ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Cancel deferred slash", + "1 | Era : 12340", + "2 | Slash indices [1/4] : 32", + "2 | Slash indices [2/4] : 11", + "2 | Slash indices [3/4] : 32", + "2 | Slash indices [4/4] : 11", + "3 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Staking : Cancel deferred slash", + "1 | Era : 12340", + "2 | Slash indices [1/4] : 32", + "2 | Slash indices [2/4] : 11", + "2 | Slash indices [3/4] : 32", + "2 | Slash indices [4/4] : 11", + "3 | Chain : Edgeware", + "4 | Nonce : 2339", + "5 | Tip : EDG 0.000000000055555555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 165, + "name": "Staking_Cancel_deferred_slash", + "blob": "081134300000100e0000002a0000000c00000049000000d503910133158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Cancel deferred slash", + "1 | Era : 12340", + "2 | Slash indices [1/4] : 14", + "2 | Slash indices [2/4] : 42", + "2 | Slash indices [3/4] : 12", + "2 | Slash indices [4/4] : 73", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Staking : Cancel deferred slash", + "1 | Era : 12340", + "2 | Slash indices [1/4] : 14", + "2 | Slash indices [2/4] : 42", + "2 | Slash indices [3/4] : 12", + "2 | Slash indices [4/4] : 73", + "3 | Chain : Edgeware", + "4 | Nonce : 100", + "5 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "5 | Tip [2/2] : 56789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 166, + "name": "Staking_Payout_stakers", + "blob": "08123a7c18728de7c0d218d9003c299d23321dc154307f40290eae920c9a14df8841f7010000d503ae1103000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Payout stakers", + "1 | Validator stash [1/2] : iqJT9NwpA3f4EpBLTXJJ59EzNx1S424Yvfkd7yg", + "1 | Validator stash [2/2] : rJDevzAR", + "2 | Era : 503", + "3 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Staking : Payout stakers", + "1 | Validator stash [1/2] : iqJT9NwpA3f4EpBLTXJJ59EzNx1S424Yvfkd7yg", + "1 | Validator stash [2/2] : rJDevzAR", + "2 | Era : 503", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Tip : EDG 0.000005552342355555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 167, + "name": "Staking_Payout_stakers", + "blob": "0812fc36502b06380fd21101013d7b678acf7ba77c3b0d070d2fa28da03ad6132c769d1c0000d503ae1103006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Payout stakers", + "1 | Validator stash [1/2] : oDK1d3PH2ckj69KyAVZdYyQi8L9Zb4Xp1UfuPP9", + "1 | Validator stash [2/2] : 4SGbP52D", + "2 | Era : 7325", + "3 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Staking : Payout stakers", + "1 | Validator stash [1/2] : oDK1d3PH2ckj69KyAVZdYyQi8L9Zb4Xp1UfuPP9", + "1 | Validator stash [2/2] : 4SGbP52D", + "2 | Era : 7325", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Tip : EDG 0.000000000000000987", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 168, + "name": "Staking_Payout_stakers", + "blob": "08122cca058f2e1c64c04bd9b97014687c400a6bced5ce559a2ac23e5bfa89a60f1000000000d5030433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Payout stakers", + "1 | Validator stash [1/2] : iXLvuB6fsGt5JQ6cBV7VqbS1d2kSUEshqxLkQVq", + "1 | Validator stash [2/2] : Jk5843qn", + "2 | Era : 0", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Staking : Payout stakers", + "1 | Validator stash [1/2] : iXLvuB6fsGt5JQ6cBV7VqbS1d2kSUEshqxLkQVq", + "1 | Validator stash [2/2] : Jk5843qn", + "2 | Era : 0", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "5 | Tip [2/2] : 56789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 169, + "name": "Staking_Payout_stakers", + "blob": "08122cca058f2e1c64c04bd9b97014687c400a6bced5ce559a2ac23e5bfa89a60f109d1c0000d503048ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Payout stakers", + "1 | Validator stash [1/2] : iXLvuB6fsGt5JQ6cBV7VqbS1d2kSUEshqxLkQVq", + "1 | Validator stash [2/2] : Jk5843qn", + "2 | Era : 7325", + "3 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Staking : Payout stakers", + "1 | Validator stash [1/2] : iXLvuB6fsGt5JQ6cBV7VqbS1d2kSUEshqxLkQVq", + "1 | Validator stash [2/2] : Jk5843qn", + "2 | Era : 7325", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Tip : EDG 0.000000000055555555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 170, + "name": "Staking_Payout_stakers", + "blob": "08122cca058f2e1c64c04bd9b97014687c400a6bced5ce559a2ac23e5bfa89a60f1034300000d5038d24002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Payout stakers", + "1 | Validator stash [1/2] : iXLvuB6fsGt5JQ6cBV7VqbS1d2kSUEshqxLkQVq", + "1 | Validator stash [2/2] : Jk5843qn", + "2 | Era : 12340" + ], + "output_expert": [ + "0 | Staking : Payout stakers", + "1 | Validator stash [1/2] : iXLvuB6fsGt5JQ6cBV7VqbS1d2kSUEshqxLkQVq", + "1 | Validator stash [2/2] : Jk5843qn", + "2 | Era : 12340", + "3 | Chain : Edgeware", + "4 | Nonce : 2339", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 171, + "name": "Staking_Rebond", + "blob": "081303d2029649d5038d248ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Rebond", + "1 | Amount : EDG 0.00000000123456789", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Staking : Rebond", + "1 | Amount : EDG 0.00000000123456789", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 172, + "name": "Staking_Rebond", + "blob": "081333158139ae28a3dfaac5fe1560a5e9e05cd503008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Rebond", + "1 | Amount [1/2] : EDG 123456789012345678901.2345678901234", + "1 | Amount [2/2] : 56789", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Staking : Rebond", + "1 | Amount [1/2] : EDG 123456789012345678901.2345678901234", + "1 | Amount [2/2] : 56789", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 173, + "name": "Staking_Rebond", + "blob": "08130b63ce64c10c05d50391016d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Rebond", + "1 | Amount : EDG 0.000005552342355555", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Staking : Rebond", + "1 | Amount : EDG 0.000005552342355555", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 174, + "name": "Staking_Rebond", + "blob": "08138ed73e0dd5030433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Rebond", + "1 | Amount : EDG 0.000000000055555555", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Staking : Rebond", + "1 | Amount : EDG 0.000000000055555555", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 175, + "name": "Staking_Rebond", + "blob": "08138ed73e0dd5038d246d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Rebond", + "1 | Amount : EDG 0.000000000055555555", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Staking : Rebond", + "1 | Amount : EDG 0.000000000055555555", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 176, + "name": "Staking_Set_history_depth", + "blob": "081440ce8e0700d503048ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Set history depth", + "1 | New history depth : 16", + "2 | Era items deleted : 123827", + "3 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Staking : Set history depth", + "1 | New history depth : 16", + "2 | Era items deleted : 123827", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Tip : EDG 0.000000000055555555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 177, + "name": "Staking_Set_history_depth", + "blob": "081440ed01d5038d246d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Set history depth", + "1 | New history depth : 16", + "2 | Era items deleted : 123", + "3 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Staking : Set history depth", + "1 | New history depth : 16", + "2 | Era items deleted : 123", + "3 | Chain : Edgeware", + "4 | Nonce : 2339", + "5 | Tip : EDG 0.000000000000000987", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 178, + "name": "Staking_Set_history_depth", + "blob": "08144800d503910133158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Set history depth", + "1 | New history depth : 18", + "2 | Era items deleted : 0", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Staking : Set history depth", + "1 | New history depth : 18", + "2 | Era items deleted : 0", + "3 | Chain : Edgeware", + "4 | Nonce : 100", + "5 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "5 | Tip [2/2] : 56789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 179, + "name": "Staking_Set_history_depth", + "blob": "08144000d5038d2433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Set history depth", + "1 | New history depth : 16", + "2 | Era items deleted : 0", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Staking : Set history depth", + "1 | New history depth : 16", + "2 | Era items deleted : 0", + "3 | Chain : Edgeware", + "4 | Nonce : 2339", + "5 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "5 | Tip [2/2] : 56789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 180, + "name": "Staking_Set_history_depth", + "blob": "08144800d503ae1103006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Set history depth", + "1 | New history depth : 18", + "2 | Era items deleted : 0", + "3 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Staking : Set history depth", + "1 | New history depth : 18", + "2 | Era items deleted : 0", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Tip : EDG 0.000000000000000987", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 181, + "name": "Staking_Reap_stash", + "blob": "08152a432fe80ff72d33204e68b384fcd88bfc19ca5060055e78f8ef4dfc70872874d3040000d5030403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Reap stash", + "1 | Stash [1/2] : iU2nCZ2wJUWUw6BpnWbcXY727JgLhM4dm5WuhLd", + "1 | Stash [2/2] : BKhzuLGR", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Staking : Reap stash", + "1 | Stash [1/2] : iU2nCZ2wJUWUw6BpnWbcXY727JgLhM4dm5WuhLd", + "1 | Stash [2/2] : BKhzuLGR", + "2 | Num slashing spans : 1235", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Tip : EDG 0.00000000123456789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 182, + "name": "Staking_Reap_stash", + "blob": "08159c0e53a8c0ca0f3623c056af9a8ea30b94057dba0262f541808b27efe430b9759d1c0000d50300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Reap stash", + "1 | Stash [1/2] : m3EY3vTASFan5xtFj1vJXRQETywyYNpjgV6dv5Q", + "1 | Stash [2/2] : MUJ26AsQ" + ], + "output_expert": [ + "0 | Staking : Reap stash", + "1 | Stash [1/2] : m3EY3vTASFan5xtFj1vJXRQETywyYNpjgV6dv5Q", + "1 | Stash [2/2] : MUJ26AsQ", + "2 | Num slashing spans : 7325", + "3 | Chain : Edgeware", + "4 | Nonce : 0", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 183, + "name": "Staking_Reap_stash", + "blob": "0815ae0f8c4e9d6bfe2f5a4d357ee743292594cff455e0a480ca635e5511921f3a60d3040000d5038d248ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Reap stash", + "1 | Stash [1/2] : mSqm5tC3qvqidkfu77Le5ySig2XDMgtLjZo6Hbd", + "1 | Stash [2/2] : TypHehcM", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Staking : Reap stash", + "1 | Stash [1/2] : mSqm5tC3qvqidkfu77Le5ySig2XDMgtLjZo6Hbd", + "1 | Stash [2/2] : TypHehcM", + "2 | Num slashing spans : 1235", + "3 | Chain : Edgeware", + "4 | Nonce : 2339", + "5 | Tip : EDG 0.000000000055555555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 184, + "name": "Staking_Reap_stash", + "blob": "08152cca058f2e1c64c04bd9b97014687c400a6bced5ce559a2ac23e5bfa89a60f109d1c0000d503040b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Reap stash", + "1 | Stash [1/2] : iXLvuB6fsGt5JQ6cBV7VqbS1d2kSUEshqxLkQVq", + "1 | Stash [2/2] : Jk5843qn", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Staking : Reap stash", + "1 | Stash [1/2] : iXLvuB6fsGt5JQ6cBV7VqbS1d2kSUEshqxLkQVq", + "1 | Stash [2/2] : Jk5843qn", + "2 | Num slashing spans : 7325", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Tip : EDG 0.000005552342355555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 185, + "name": "Staking_Reap_stash", + "blob": "08152a432fe80ff72d33204e68b384fcd88bfc19ca5060055e78f8ef4dfc7087287400000000d503ae11030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Staking : Reap stash", + "1 | Stash [1/2] : iU2nCZ2wJUWUw6BpnWbcXY727JgLhM4dm5WuhLd", + "1 | Stash [2/2] : BKhzuLGR", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Staking : Reap stash", + "1 | Stash [1/2] : iU2nCZ2wJUWUw6BpnWbcXY727JgLhM4dm5WuhLd", + "1 | Stash [2/2] : BKhzuLGR", + "2 | Num slashing spans : 0", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Tip : EDG 0.00000000123456789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 186, + "name": "Session_Purge_keys", + "blob": "0901d5030433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Session : Purge keys", + "1 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "1 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Session : Purge keys", + "1 | Chain : Edgeware", + "2 | Nonce : 1", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 187, + "name": "Session_Purge_keys", + "blob": "0901d503040b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Session : Purge keys", + "1 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Session : Purge keys", + "1 | Chain : Edgeware", + "2 | Nonce : 1", + "3 | Tip : EDG 0.000005552342355555", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 188, + "name": "Session_Purge_keys", + "blob": "0901d5038d2403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Session : Purge keys", + "1 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Session : Purge keys", + "1 | Chain : Edgeware", + "2 | Nonce : 2339", + "3 | Tip : EDG 0.00000000123456789", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 189, + "name": "Session_Purge_keys", + "blob": "0901d5030403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Session : Purge keys", + "1 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Session : Purge keys", + "1 | Chain : Edgeware", + "2 | Nonce : 1", + "3 | Tip : EDG 0.00000000123456789", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 190, + "name": "Session_Purge_keys", + "blob": "0901d50391010b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Session : Purge keys", + "1 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Session : Purge keys", + "1 | Chain : Edgeware", + "2 | Nonce : 100", + "3 | Tip : EDG 0.000005552342355555", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 191, + "name": "Democracy_Propose", + "blob": "0a00000000000000000000000000000000000000000000000000000000000000000033158139ae28a3dfaac5fe1560a5e9e05cd503ae1103000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Propose", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Amount [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Amount [2/2] : 56789", + "3 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Democracy : Propose", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Amount [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Amount [2/2] : 56789", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Tip : EDG 0.000005552342355555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 192, + "name": "Democracy_Propose", + "blob": "0a00000000000000000000000000000000000000000000000000000000000000000000d5038d248ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Propose", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Amount : EDG 0.0", + "3 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Democracy : Propose", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Amount : EDG 0.0", + "3 | Chain : Edgeware", + "4 | Nonce : 2339", + "5 | Tip : EDG 0.000000000055555555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 193, + "name": "Democracy_Propose", + "blob": "0a00000000000000000000000000000000000000000000000000000000000000000000d5030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Propose", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Amount : EDG 0.0", + "3 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Democracy : Propose", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Amount : EDG 0.0", + "3 | Chain : Edgeware", + "4 | Nonce : 0", + "5 | Tip : EDG 0.00000000123456789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 194, + "name": "Democracy_Propose", + "blob": "0a00000000000000000000000000000000000000000000000000000000000000000000d503ae11030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Propose", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Amount : EDG 0.0", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Democracy : Propose", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Amount : EDG 0.0", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "5 | Tip [2/2] : 56789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 195, + "name": "Democracy_Propose", + "blob": "0a00000000000000000000000000000000000000000000000000000000000000000033158139ae28a3dfaac5fe1560a5e9e05cd503000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Propose", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Amount [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Amount [2/2] : 56789", + "3 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Democracy : Propose", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Amount [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Amount [2/2] : 56789", + "3 | Chain : Edgeware", + "4 | Nonce : 0", + "5 | Tip : EDG 0.000005552342355555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 196, + "name": "Democracy_Second", + "blob": "0a015256b600fd0fd5038d246d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Second", + "1 | Proposal : 2987412", + "2 | Seconds upper bound : 1023", + "3 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Democracy : Second", + "1 | Proposal : 2987412", + "2 | Seconds upper bound : 1023", + "3 | Chain : Edgeware", + "4 | Nonce : 2339", + "5 | Tip : EDG 0.000000000000000987", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 197, + "name": "Democracy_Second", + "blob": "0a016d0fb1d6d5030433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Second", + "1 | Proposal : 987", + "2 | Seconds upper bound : 13740", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Democracy : Second", + "1 | Proposal : 987", + "2 | Seconds upper bound : 13740", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "5 | Tip [2/2] : 56789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 198, + "name": "Democracy_Second", + "blob": "0a0100fd0fd5038d2403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Second", + "1 | Proposal : 0", + "2 | Seconds upper bound : 1023", + "3 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Democracy : Second", + "1 | Proposal : 0", + "2 | Seconds upper bound : 1023", + "3 | Chain : Edgeware", + "4 | Nonce : 2339", + "5 | Tip : EDG 0.00000000123456789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 199, + "name": "Democracy_Second", + "blob": "0a016ed00100b1d6d503046d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Second", + "1 | Proposal : 29723", + "2 | Seconds upper bound : 13740", + "3 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Democracy : Second", + "1 | Proposal : 29723", + "2 | Seconds upper bound : 13740", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Tip : EDG 0.000000000000000987", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 200, + "name": "Democracy_Second", + "blob": "0a015256b600b1d6d50391016d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Second", + "1 | Proposal : 2987412", + "2 | Seconds upper bound : 13740", + "3 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Democracy : Second", + "1 | Proposal : 2987412", + "2 | Seconds upper bound : 13740", + "3 | Chain : Edgeware", + "4 | Nonce : 100", + "5 | Tip : EDG 0.000000000000000987", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 201, + "name": "Democracy_Vote", + "blob": "0a028ed73e0d013a4d87566706474f950b81e501d2d51616a2ab991bda8d6bfa2257cae73499d9d5030433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Vote", + "1 | Ref index : 55555555", + "2 | Vote [1/5] : Split", + "2 | Vote [2/5] : EDG 30353234594409070233.94114570418384", + "2 | Vote [3/5] : 4154", + "2 | Vote [4/5] : EDG 289237969554308817439.3300303467068", + "2 | Vote [5/5] : 54422", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Democracy : Vote", + "1 | Ref index : 55555555", + "2 | Vote [1/5] : Split", + "2 | Vote [2/5] : EDG 30353234594409070233.94114570418384", + "2 | Vote [3/5] : 4154", + "2 | Vote [4/5] : EDG 289237969554308817439.3300303467068", + "2 | Vote [5/5] : 54422", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "5 | Tip [2/2] : 56789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 202, + "name": "Democracy_Vote", + "blob": "0a020ea521000000fbc46d14310563d2d8e328edc93ccc10d5038d246d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Vote", + "1 | Ref index : 551235", + "2 | Vote [1/4] : Standard", + "2 | Vote [2/4] : False None", + "2 | Vote [3/4] : EDG 22328109434534023607.33009161755910", + "2 | Vote [4/4] : 2715", + "3 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Democracy : Vote", + "1 | Ref index : 551235", + "2 | Vote [1/4] : Standard", + "2 | Vote [2/4] : False None", + "2 | Vote [3/4] : EDG 22328109434534023607.33009161755910", + "2 | Vote [4/4] : 2715", + "3 | Chain : Edgeware", + "4 | Nonce : 2339", + "5 | Tip : EDG 0.000000000000000987", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 203, + "name": "Democracy_Vote", + "blob": "0a028ed73e0d0000fbc46d14310563d2d8e328edc93ccc10d5030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Vote", + "1 | Ref index : 55555555", + "2 | Vote [1/4] : Standard", + "2 | Vote [2/4] : False None", + "2 | Vote [3/4] : EDG 22328109434534023607.33009161755910", + "2 | Vote [4/4] : 2715", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Democracy : Vote", + "1 | Ref index : 55555555", + "2 | Vote [1/4] : Standard", + "2 | Vote [2/4] : False None", + "2 | Vote [3/4] : EDG 22328109434534023607.33009161755910", + "2 | Vote [4/4] : 2715", + "3 | Chain : Edgeware", + "4 | Nonce : 0", + "5 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "5 | Tip [2/2] : 56789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 204, + "name": "Democracy_Vote", + "blob": "0a020ea521000000fbc46d14310563d2d8e328edc93ccc10d50300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Vote", + "1 | Ref index : 551235", + "2 | Vote [1/4] : Standard", + "2 | Vote [2/4] : False None", + "2 | Vote [3/4] : EDG 22328109434534023607.33009161755910", + "2 | Vote [4/4] : 2715" + ], + "output_expert": [ + "0 | Democracy : Vote", + "1 | Ref index : 551235", + "2 | Vote [1/4] : Standard", + "2 | Vote [2/4] : False None", + "2 | Vote [3/4] : EDG 22328109434534023607.33009161755910", + "2 | Vote [4/4] : 2715", + "3 | Chain : Edgeware", + "4 | Nonce : 0", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 205, + "name": "Democracy_Vote", + "blob": "0a026d0f000043f43c226f69b8644cb63701d1f32b85d5038d248ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Vote", + "1 | Ref index : 987", + "2 | Vote [1/4] : Standard", + "2 | Vote [2/4] : False None", + "2 | Vote [3/4] : EDG 177015537388907298331.2029748684231", + "2 | Vote [4/4] : 11747", + "3 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Democracy : Vote", + "1 | Ref index : 987", + "2 | Vote [1/4] : Standard", + "2 | Vote [2/4] : False None", + "2 | Vote [3/4] : EDG 177015537388907298331.2029748684231", + "2 | Vote [4/4] : 11747", + "3 | Chain : Edgeware", + "4 | Nonce : 2339", + "5 | Tip : EDG 0.000000000055555555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 206, + "name": "Democracy_Emergency_cancel", + "blob": "0a03b3e30100d503ae1103000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Emergency cancel", + "1 | Ref index : 123827", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Democracy : Emergency cancel", + "1 | Ref index : 123827", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 207, + "name": "Democracy_Emergency_cancel", + "blob": "0a03ff030000d5038d2433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Emergency cancel", + "1 | Ref index : 1023", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Democracy : Emergency cancel", + "1 | Ref index : 1023", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 208, + "name": "Democracy_Emergency_cancel", + "blob": "0a0301000000d5038d2403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Emergency cancel", + "1 | Ref index : 1", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Democracy : Emergency cancel", + "1 | Ref index : 1", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 209, + "name": "Democracy_Emergency_cancel", + "blob": "0a0325010000d5038d2403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Emergency cancel", + "1 | Ref index : 293", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Democracy : Emergency cancel", + "1 | Ref index : 293", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 210, + "name": "Democracy_Emergency_cancel", + "blob": "0a0300000000d50304002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Emergency cancel", + "1 | Ref index : 0" + ], + "output_expert": [ + "0 | Democracy : Emergency cancel", + "1 | Ref index : 0", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 211, + "name": "Democracy_External_propose", + "blob": "0a040000000000000000000000000000000000000000000000000000000000000000d5030403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : External propose", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Democracy : External propose", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 212, + "name": "Democracy_External_propose", + "blob": "0a040000000000000000000000000000000000000000000000000000000000000000d503000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : External propose", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Democracy : External propose", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 213, + "name": "Democracy_External_propose", + "blob": "0a040000000000000000000000000000000000000000000000000000000000000000d5038d2433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : External propose", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Democracy : External propose", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 214, + "name": "Democracy_External_propose", + "blob": "0a040000000000000000000000000000000000000000000000000000000000000000d5030403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : External propose", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Democracy : External propose", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 215, + "name": "Democracy_External_propose", + "blob": "0a040000000000000000000000000000000000000000000000000000000000000000d5030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : External propose", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Democracy : External propose", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 216, + "name": "Democracy_External_propose_majority", + "blob": "0a050000000000000000000000000000000000000000000000000000000000000000d503910133158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : External propose majority", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Democracy : External propose majority", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 217, + "name": "Democracy_External_propose_majority", + "blob": "0a050000000000000000000000000000000000000000000000000000000000000000d50391018ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : External propose majority", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Democracy : External propose majority", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 218, + "name": "Democracy_External_propose_majority", + "blob": "0a050000000000000000000000000000000000000000000000000000000000000000d503910103d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : External propose majority", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Democracy : External propose majority", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 219, + "name": "Democracy_External_propose_majority", + "blob": "0a050000000000000000000000000000000000000000000000000000000000000000d503008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : External propose majority", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Democracy : External propose majority", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 220, + "name": "Democracy_External_propose_majority", + "blob": "0a050000000000000000000000000000000000000000000000000000000000000000d5030433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : External propose majority", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Democracy : External propose majority", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 221, + "name": "Democracy_External_propose_default", + "blob": "0a060000000000000000000000000000000000000000000000000000000000000000d5038d246d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : External propose default", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Democracy : External propose default", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 222, + "name": "Democracy_External_propose_default", + "blob": "0a060000000000000000000000000000000000000000000000000000000000000000d503ae11030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : External propose default", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Democracy : External propose default", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 223, + "name": "Democracy_External_propose_default", + "blob": "0a060000000000000000000000000000000000000000000000000000000000000000d5038d246d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : External propose default", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Democracy : External propose default", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 224, + "name": "Democracy_External_propose_default", + "blob": "0a060000000000000000000000000000000000000000000000000000000000000000d503008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : External propose default", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Democracy : External propose default", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 225, + "name": "Democracy_External_propose_default", + "blob": "0a060000000000000000000000000000000000000000000000000000000000000000d503ae1103008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : External propose default", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Democracy : External propose default", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 226, + "name": "Democracy_Fast_track", + "blob": "0a07000000000000000000000000000000000000000000000000000000000000000001000000b3e30100d5038d2403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Fast track", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Voting period : 1", + "3 | Delay : 123827", + "4 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Democracy : Fast track", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Voting period : 1", + "3 | Delay : 123827", + "4 | Chain : Edgeware", + "5 | Nonce : 2339", + "6 | Tip : EDG 0.00000000123456789", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 227, + "name": "Democracy_Fast_track", + "blob": "0a070000000000000000000000000000000000000000000000000000000000000000ff030000ac350000d5038d246d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Fast track", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Voting period : 1023", + "3 | Delay : 13740", + "4 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Democracy : Fast track", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Voting period : 1023", + "3 | Delay : 13740", + "4 | Chain : Edgeware", + "5 | Nonce : 2339", + "6 | Tip : EDG 0.000000000000000987", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 228, + "name": "Democracy_Fast_track", + "blob": "0a07000000000000000000000000000000000000000000000000000000000000000000000000b3e30100d5038d248ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Fast track", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Voting period : 0", + "3 | Delay : 123827", + "4 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Democracy : Fast track", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Voting period : 0", + "3 | Delay : 123827", + "4 | Chain : Edgeware", + "5 | Nonce : 2339", + "6 | Tip : EDG 0.000000000055555555", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 229, + "name": "Democracy_Fast_track", + "blob": "0a070000000000000000000000000000000000000000000000000000000000000000ac35000000000000d503910103d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Fast track", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Voting period : 13740", + "3 | Delay : 0", + "4 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Democracy : Fast track", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Voting period : 13740", + "3 | Delay : 0", + "4 | Chain : Edgeware", + "5 | Nonce : 100", + "6 | Tip : EDG 0.00000000123456789", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 230, + "name": "Democracy_Fast_track", + "blob": "0a070000000000000000000000000000000000000000000000000000000000000000b3e3010000000000d5030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Fast track", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Voting period : 123827", + "3 | Delay : 0", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Democracy : Fast track", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Voting period : 123827", + "3 | Delay : 0", + "4 | Chain : Edgeware", + "5 | Nonce : 0", + "6 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "6 | Tip [2/2] : 56789", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 231, + "name": "Democracy_Veto_external", + "blob": "0a080000000000000000000000000000000000000000000000000000000000000000d50391010b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Veto external", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Democracy : Veto external", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 232, + "name": "Democracy_Veto_external", + "blob": "0a080000000000000000000000000000000000000000000000000000000000000000d5030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Veto external", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Democracy : Veto external", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 233, + "name": "Democracy_Veto_external", + "blob": "0a080000000000000000000000000000000000000000000000000000000000000000d5039101002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Veto external", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000" + ], + "output_expert": [ + "0 | Democracy : Veto external", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 234, + "name": "Democracy_Veto_external", + "blob": "0a080000000000000000000000000000000000000000000000000000000000000000d503ae11030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Veto external", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Democracy : Veto external", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 235, + "name": "Democracy_Veto_external", + "blob": "0a080000000000000000000000000000000000000000000000000000000000000000d503ae110300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Veto external", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000" + ], + "output_expert": [ + "0 | Democracy : Veto external", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 236, + "name": "Democracy_Cancel_referendum", + "blob": "0a0900d5030433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Cancel referendum", + "1 | Ref index : 0", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Democracy : Cancel referendum", + "1 | Ref index : 0", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 237, + "name": "Democracy_Cancel_referendum", + "blob": "0a098ed73e0dd503048ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Cancel referendum", + "1 | Ref index : 55555555", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Democracy : Cancel referendum", + "1 | Ref index : 55555555", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 238, + "name": "Democracy_Cancel_referendum", + "blob": "0a0900d5030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Cancel referendum", + "1 | Ref index : 0", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Democracy : Cancel referendum", + "1 | Ref index : 0", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 239, + "name": "Democracy_Cancel_referendum", + "blob": "0a090ea52100d503ae1103008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Cancel referendum", + "1 | Ref index : 551235", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Democracy : Cancel referendum", + "1 | Ref index : 551235", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 240, + "name": "Democracy_Cancel_referendum", + "blob": "0a098ed73e0dd5039101002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Cancel referendum", + "1 | Ref index : 55555555" + ], + "output_expert": [ + "0 | Democracy : Cancel referendum", + "1 | Ref index : 55555555", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 241, + "name": "Democracy_Cancel_queued", + "blob": "0a0a25010000d503ae110300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Cancel queued", + "1 | Which : 293" + ], + "output_expert": [ + "0 | Democracy : Cancel queued", + "1 | Which : 293", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 242, + "name": "Democracy_Cancel_queued", + "blob": "0a0aff030000d503000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Cancel queued", + "1 | Which : 1023", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Democracy : Cancel queued", + "1 | Which : 1023", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 243, + "name": "Democracy_Cancel_queued", + "blob": "0a0a7b000000d5038d248ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Cancel queued", + "1 | Which : 123", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Democracy : Cancel queued", + "1 | Which : 123", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 244, + "name": "Democracy_Cancel_queued", + "blob": "0a0a00000000d5030433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Cancel queued", + "1 | Which : 0", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Democracy : Cancel queued", + "1 | Which : 0", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 245, + "name": "Democracy_Cancel_queued", + "blob": "0a0a00000000d503ae1103008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Cancel queued", + "1 | Which : 0", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Democracy : Cancel queued", + "1 | Which : 0", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 246, + "name": "Democracy_Delegate", + "blob": "0a0bae0f8c4e9d6bfe2f5a4d357ee743292594cff455e0a480ca635e5511921f3a6001d2040000000000000000000000000000d5038d240b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Delegate", + "1 | To [1/2] : mSqm5tC3qvqidkfu77Le5ySig2XDMgtLjZo6Hbd", + "1 | To [2/2] : TypHehcM", + "2 | Conviction : Locked1x", + "3 | Balance : EDG 0.000000000000001234", + "4 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Democracy : Delegate", + "1 | To [1/2] : mSqm5tC3qvqidkfu77Le5ySig2XDMgtLjZo6Hbd", + "1 | To [2/2] : TypHehcM", + "2 | Conviction : Locked1x", + "3 | Balance : EDG 0.000000000000001234", + "4 | Chain : Edgeware", + "5 | Nonce : 2339", + "6 | Tip : EDG 0.000005552342355555", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 247, + "name": "Democracy_Delegate", + "blob": "0a0b9c0e53a8c0ca0f3623c056af9a8ea30b94057dba0262f541808b27efe430b97502d2040000000000000000000000000000d503046d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Delegate", + "1 | To [1/2] : m3EY3vTASFan5xtFj1vJXRQETywyYNpjgV6dv5Q", + "1 | To [2/2] : MUJ26AsQ", + "2 | Conviction : Locked2x", + "3 | Balance : EDG 0.000000000000001234", + "4 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Democracy : Delegate", + "1 | To [1/2] : m3EY3vTASFan5xtFj1vJXRQETywyYNpjgV6dv5Q", + "1 | To [2/2] : MUJ26AsQ", + "2 | Conviction : Locked2x", + "3 | Balance : EDG 0.000000000000001234", + "4 | Chain : Edgeware", + "5 | Nonce : 1", + "6 | Tip : EDG 0.000000000000000987", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 248, + "name": "Democracy_Delegate", + "blob": "0a0bae0f8c4e9d6bfe2f5a4d357ee743292594cff455e0a480ca635e5511921f3a6001d2040000000000000000000000000000d5030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Delegate", + "1 | To [1/2] : mSqm5tC3qvqidkfu77Le5ySig2XDMgtLjZo6Hbd", + "1 | To [2/2] : TypHehcM", + "2 | Conviction : Locked1x", + "3 | Balance : EDG 0.000000000000001234", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Democracy : Delegate", + "1 | To [1/2] : mSqm5tC3qvqidkfu77Le5ySig2XDMgtLjZo6Hbd", + "1 | To [2/2] : TypHehcM", + "2 | Conviction : Locked1x", + "3 | Balance : EDG 0.000000000000001234", + "4 | Chain : Edgeware", + "5 | Nonce : 0", + "6 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "6 | Tip [2/2] : 56789", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 249, + "name": "Democracy_Delegate", + "blob": "0a0b3a7c18728de7c0d218d9003c299d23321dc154307f40290eae920c9a14df884102d2040000000000000000000000000000d503046d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Delegate", + "1 | To [1/2] : iqJT9NwpA3f4EpBLTXJJ59EzNx1S424Yvfkd7yg", + "1 | To [2/2] : rJDevzAR", + "2 | Conviction : Locked2x", + "3 | Balance : EDG 0.000000000000001234", + "4 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Democracy : Delegate", + "1 | To [1/2] : iqJT9NwpA3f4EpBLTXJJ59EzNx1S424Yvfkd7yg", + "1 | To [2/2] : rJDevzAR", + "2 | Conviction : Locked2x", + "3 | Balance : EDG 0.000000000000001234", + "4 | Chain : Edgeware", + "5 | Nonce : 1", + "6 | Tip : EDG 0.000000000000000987", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 250, + "name": "Democracy_Delegate", + "blob": "0a0bf0d79b5ca0e4bfe27f9e6440d003d0bf037a5721cb138d4d7a227056a38c321803d2040000000000000000000000000000d50304002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Delegate", + "1 | To [1/2] : nxQMKYwLGxtr3Np6DqJsYNPE89GrBC9kKgG81Ug", + "1 | To [2/2] : Ew2yqvUu", + "2 | Conviction : Locked3x", + "3 | Balance : EDG 0.000000000000001234" + ], + "output_expert": [ + "0 | Democracy : Delegate", + "1 | To [1/2] : nxQMKYwLGxtr3Np6DqJsYNPE89GrBC9kKgG81Ug", + "1 | To [2/2] : Ew2yqvUu", + "2 | Conviction : Locked3x", + "3 | Balance : EDG 0.000000000000001234", + "4 | Chain : Edgeware", + "5 | Nonce : 1", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 251, + "name": "Democracy_Undelegate", + "blob": "0a0cd503ae1103000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Undelegate", + "1 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Democracy : Undelegate", + "1 | Chain : Edgeware", + "2 | Nonce : 50283", + "3 | Tip : EDG 0.000005552342355555", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 252, + "name": "Democracy_Undelegate", + "blob": "0a0cd503910133158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Undelegate", + "1 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "1 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Democracy : Undelegate", + "1 | Chain : Edgeware", + "2 | Nonce : 100", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 253, + "name": "Democracy_Undelegate", + "blob": "0a0cd5038d2403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Undelegate", + "1 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Democracy : Undelegate", + "1 | Chain : Edgeware", + "2 | Nonce : 2339", + "3 | Tip : EDG 0.00000000123456789", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 254, + "name": "Democracy_Undelegate", + "blob": "0a0cd503048ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Undelegate", + "1 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Democracy : Undelegate", + "1 | Chain : Edgeware", + "2 | Nonce : 1", + "3 | Tip : EDG 0.000000000055555555", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 255, + "name": "Democracy_Undelegate", + "blob": "0a0cd5039101002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Undelegate" + ], + "output_expert": [ + "0 | Democracy : Undelegate", + "1 | Chain : Edgeware", + "2 | Nonce : 100", + "3 | Era Phase : 61", + "4 | Era Period : 64", + "5 | Block [1/2] : 00000000000000000000000000000000000000", + "5 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 256, + "name": "Democracy_Clear_public_proposals", + "blob": "0a0dd503040b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Clear public proposals", + "1 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Democracy : Clear public proposals", + "1 | Chain : Edgeware", + "2 | Nonce : 1", + "3 | Tip : EDG 0.000005552342355555", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 257, + "name": "Democracy_Clear_public_proposals", + "blob": "0a0dd503ae11030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Clear public proposals", + "1 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Democracy : Clear public proposals", + "1 | Chain : Edgeware", + "2 | Nonce : 50283", + "3 | Tip : EDG 0.00000000123456789", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 258, + "name": "Democracy_Clear_public_proposals", + "blob": "0a0dd5038d24002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Clear public proposals" + ], + "output_expert": [ + "0 | Democracy : Clear public proposals", + "1 | Chain : Edgeware", + "2 | Nonce : 2339", + "3 | Era Phase : 61", + "4 | Era Period : 64", + "5 | Block [1/2] : 00000000000000000000000000000000000000", + "5 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 259, + "name": "Democracy_Clear_public_proposals", + "blob": "0a0dd503ae1103006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Clear public proposals", + "1 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Democracy : Clear public proposals", + "1 | Chain : Edgeware", + "2 | Nonce : 50283", + "3 | Tip : EDG 0.000000000000000987", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 260, + "name": "Democracy_Clear_public_proposals", + "blob": "0a0dd50391018ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Clear public proposals", + "1 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Democracy : Clear public proposals", + "1 | Chain : Edgeware", + "2 | Nonce : 100", + "3 | Tip : EDG 0.000000000055555555", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 261, + "name": "Democracy_Note_preimage", + "blob": "0a0e80008bca3e10d17b2cfc71ef145d9b2d5d4a3dfb208474480304b3080a2e4131c1d5038d248ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Note preimage", + "1 | Encoded proposal [1/2] : 008bca3e10d17b2cfc71ef145d9b2d5d4a3dfb", + "1 | Encoded proposal [2/2] : 208474480304b3080a2e4131c1", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Democracy : Note preimage", + "1 | Encoded proposal [1/2] : 008bca3e10d17b2cfc71ef145d9b2d5d4a3dfb", + "1 | Encoded proposal [2/2] : 208474480304b3080a2e4131c1", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 262, + "name": "Democracy_Note_preimage", + "blob": "0a0e0102cf6e0bddae4392c389df38f86156f24ceb15d22310703852c1d3b33ad2609cbb81229cbd86889c15cdf14da89f5ed5bf0045e7d5a4b1866c1f902bbd52e12a4e59968f9fb25166055db3eee594d7b1e7336aeb8aaf3fddb768aa81f2b5423c8d3abd4242271fdb7745efaffc4731095cf3994e1a6a75de0680e881702f430fd6d5039101002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Note preimage", + "1 | Encoded proposal [1/7] : cf6e0bddae4392c389df38f86156f24ceb15d2", + "1 | Encoded proposal [2/7] : 2310703852c1d3b33ad2609cbb81229cbd8688", + "1 | Encoded proposal [3/7] : 9c15cdf14da89f5ed5bf0045e7d5a4b1866c1f", + "1 | Encoded proposal [4/7] : 902bbd52e12a4e59968f9fb25166055db3eee5", + "1 | Encoded proposal [5/7] : 94d7b1e7336aeb8aaf3fddb768aa81f2b5423c", + "1 | Encoded proposal [6/7] : 8d3abd4242271fdb7745efaffc4731095cf399", + "1 | Encoded proposal [7/7] : 4e1a6a75de0680e881702f430fd6" + ], + "output_expert": [ + "0 | Democracy : Note preimage", + "1 | Encoded proposal [1/7] : cf6e0bddae4392c389df38f86156f24ceb15d2", + "1 | Encoded proposal [2/7] : 2310703852c1d3b33ad2609cbb81229cbd8688", + "1 | Encoded proposal [3/7] : 9c15cdf14da89f5ed5bf0045e7d5a4b1866c1f", + "1 | Encoded proposal [4/7] : 902bbd52e12a4e59968f9fb25166055db3eee5", + "1 | Encoded proposal [5/7] : 94d7b1e7336aeb8aaf3fddb768aa81f2b5423c", + "1 | Encoded proposal [6/7] : 8d3abd4242271fdb7745efaffc4731095cf399", + "1 | Encoded proposal [7/7] : 4e1a6a75de0680e881702f430fd6", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 263, + "name": "Democracy_Note_preimage", + "blob": "0a0e8096ab01ac193b73fcc76aa234b12a329bc86f9f152b0ae6ffd64e1c32ca7ea706d5038d2433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Note preimage", + "1 | Encoded proposal [1/2] : 96ab01ac193b73fcc76aa234b12a329bc86f9f", + "1 | Encoded proposal [2/2] : 152b0ae6ffd64e1c32ca7ea706", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Democracy : Note preimage", + "1 | Encoded proposal [1/2] : 96ab01ac193b73fcc76aa234b12a329bc86f9f", + "1 | Encoded proposal [2/2] : 152b0ae6ffd64e1c32ca7ea706", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 264, + "name": "Democracy_Note_preimage", + "blob": "0a0e010191fbb072444e9084c96a7763c0ddfee99ed3c67ce44f67caf5bab4b3cb5b1c4967a79dced7d65c42297630513a56b2b93c7c2ab418315e4d2346f52334d55141d503008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Note preimage", + "1 | Encoded proposal [1/4] : 91fbb072444e9084c96a7763c0ddfee99ed3c6", + "1 | Encoded proposal [2/4] : 7ce44f67caf5bab4b3cb5b1c4967a79dced7d6", + "1 | Encoded proposal [3/4] : 5c42297630513a56b2b93c7c2ab418315e4d23", + "1 | Encoded proposal [4/4] : 46f52334d55141", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Democracy : Note preimage", + "1 | Encoded proposal [1/4] : 91fbb072444e9084c96a7763c0ddfee99ed3c6", + "1 | Encoded proposal [2/4] : 7ce44f67caf5bab4b3cb5b1c4967a79dced7d6", + "1 | Encoded proposal [3/4] : 5c42297630513a56b2b93c7c2ab418315e4d23", + "1 | Encoded proposal [4/4] : 46f52334d55141", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 265, + "name": "Democracy_Note_preimage", + "blob": "0a0e010104c7666eb5fd586d1a57965e62578472fcde1857325a569c0bc8ab7ae48f78605c8ab160bf17fba894f0e596590387b45a0fa2bac6da69a1a5ce6ee10010fff1d503ae11030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Note preimage", + "1 | Encoded proposal [1/4] : 04c7666eb5fd586d1a57965e62578472fcde18", + "1 | Encoded proposal [2/4] : 57325a569c0bc8ab7ae48f78605c8ab160bf17", + "1 | Encoded proposal [3/4] : fba894f0e596590387b45a0fa2bac6da69a1a5", + "1 | Encoded proposal [4/4] : ce6ee10010fff1", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Democracy : Note preimage", + "1 | Encoded proposal [1/4] : 04c7666eb5fd586d1a57965e62578472fcde18", + "1 | Encoded proposal [2/4] : 57325a569c0bc8ab7ae48f78605c8ab160bf17", + "1 | Encoded proposal [3/4] : fba894f0e596590387b45a0fa2bac6da69a1a5", + "1 | Encoded proposal [4/4] : ce6ee10010fff1", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 266, + "name": "Democracy_Note_preimage_operational", + "blob": "0a0f010104c7666eb5fd586d1a57965e62578472fcde1857325a569c0bc8ab7ae48f78605c8ab160bf17fba894f0e596590387b45a0fa2bac6da69a1a5ce6ee10010fff1d503ae1103008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Note preimage operational", + "1 | Encoded proposal [1/4] : 04c7666eb5fd586d1a57965e62578472fcde18", + "1 | Encoded proposal [2/4] : 57325a569c0bc8ab7ae48f78605c8ab160bf17", + "1 | Encoded proposal [3/4] : fba894f0e596590387b45a0fa2bac6da69a1a5", + "1 | Encoded proposal [4/4] : ce6ee10010fff1", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Democracy : Note preimage operational", + "1 | Encoded proposal [1/4] : 04c7666eb5fd586d1a57965e62578472fcde18", + "1 | Encoded proposal [2/4] : 57325a569c0bc8ab7ae48f78605c8ab160bf17", + "1 | Encoded proposal [3/4] : fba894f0e596590387b45a0fa2bac6da69a1a5", + "1 | Encoded proposal [4/4] : ce6ee10010fff1", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 267, + "name": "Democracy_Note_preimage_operational", + "blob": "0a0f0101b2c41fb0ccedfa1e14147b49507e856e54afb2edb7e48c241d45b2f98b0dd76f46f79a541c9e9db5f54389a198aa542e79eb61036cc2f5818e9acb2143a842f4d5038d24002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Note preimage operational", + "1 | Encoded proposal [1/4] : b2c41fb0ccedfa1e14147b49507e856e54afb2", + "1 | Encoded proposal [2/4] : edb7e48c241d45b2f98b0dd76f46f79a541c9e", + "1 | Encoded proposal [3/4] : 9db5f54389a198aa542e79eb61036cc2f5818e", + "1 | Encoded proposal [4/4] : 9acb2143a842f4" + ], + "output_expert": [ + "0 | Democracy : Note preimage operational", + "1 | Encoded proposal [1/4] : b2c41fb0ccedfa1e14147b49507e856e54afb2", + "1 | Encoded proposal [2/4] : edb7e48c241d45b2f98b0dd76f46f79a541c9e", + "1 | Encoded proposal [3/4] : 9db5f54389a198aa542e79eb61036cc2f5818e", + "1 | Encoded proposal [4/4] : 9acb2143a842f4", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 268, + "name": "Democracy_Note_preimage_operational", + "blob": "0a0f8096ab01ac193b73fcc76aa234b12a329bc86f9f152b0ae6ffd64e1c32ca7ea706d503040b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Note preimage operational", + "1 | Encoded proposal [1/2] : 96ab01ac193b73fcc76aa234b12a329bc86f9f", + "1 | Encoded proposal [2/2] : 152b0ae6ffd64e1c32ca7ea706", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Democracy : Note preimage operational", + "1 | Encoded proposal [1/2] : 96ab01ac193b73fcc76aa234b12a329bc86f9f", + "1 | Encoded proposal [2/2] : 152b0ae6ffd64e1c32ca7ea706", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 269, + "name": "Democracy_Note_preimage_operational", + "blob": "0a0f80008bca3e10d17b2cfc71ef145d9b2d5d4a3dfb208474480304b3080a2e4131c1d5038d2403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Note preimage operational", + "1 | Encoded proposal [1/2] : 008bca3e10d17b2cfc71ef145d9b2d5d4a3dfb", + "1 | Encoded proposal [2/2] : 208474480304b3080a2e4131c1", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Democracy : Note preimage operational", + "1 | Encoded proposal [1/2] : 008bca3e10d17b2cfc71ef145d9b2d5d4a3dfb", + "1 | Encoded proposal [2/2] : 208474480304b3080a2e4131c1", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 270, + "name": "Democracy_Note_preimage_operational", + "blob": "0a0f010191fbb072444e9084c96a7763c0ddfee99ed3c67ce44f67caf5bab4b3cb5b1c4967a79dced7d65c42297630513a56b2b93c7c2ab418315e4d2346f52334d55141d50391016d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Note preimage operational", + "1 | Encoded proposal [1/4] : 91fbb072444e9084c96a7763c0ddfee99ed3c6", + "1 | Encoded proposal [2/4] : 7ce44f67caf5bab4b3cb5b1c4967a79dced7d6", + "1 | Encoded proposal [3/4] : 5c42297630513a56b2b93c7c2ab418315e4d23", + "1 | Encoded proposal [4/4] : 46f52334d55141", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Democracy : Note preimage operational", + "1 | Encoded proposal [1/4] : 91fbb072444e9084c96a7763c0ddfee99ed3c6", + "1 | Encoded proposal [2/4] : 7ce44f67caf5bab4b3cb5b1c4967a79dced7d6", + "1 | Encoded proposal [3/4] : 5c42297630513a56b2b93c7c2ab418315e4d23", + "1 | Encoded proposal [4/4] : 46f52334d55141", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 271, + "name": "Democracy_Note_imminent_preimage", + "blob": "0a108096ab01ac193b73fcc76aa234b12a329bc86f9f152b0ae6ffd64e1c32ca7ea706d5030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Note imminent preimage", + "1 | Encoded proposal [1/2] : 96ab01ac193b73fcc76aa234b12a329bc86f9f", + "1 | Encoded proposal [2/2] : 152b0ae6ffd64e1c32ca7ea706", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Democracy : Note imminent preimage", + "1 | Encoded proposal [1/2] : 96ab01ac193b73fcc76aa234b12a329bc86f9f", + "1 | Encoded proposal [2/2] : 152b0ae6ffd64e1c32ca7ea706", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 272, + "name": "Democracy_Note_imminent_preimage", + "blob": "0a100101b2c41fb0ccedfa1e14147b49507e856e54afb2edb7e48c241d45b2f98b0dd76f46f79a541c9e9db5f54389a198aa542e79eb61036cc2f5818e9acb2143a842f4d503ae11030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Note imminent preimage", + "1 | Encoded proposal [1/4] : b2c41fb0ccedfa1e14147b49507e856e54afb2", + "1 | Encoded proposal [2/4] : edb7e48c241d45b2f98b0dd76f46f79a541c9e", + "1 | Encoded proposal [3/4] : 9db5f54389a198aa542e79eb61036cc2f5818e", + "1 | Encoded proposal [4/4] : 9acb2143a842f4", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Democracy : Note imminent preimage", + "1 | Encoded proposal [1/4] : b2c41fb0ccedfa1e14147b49507e856e54afb2", + "1 | Encoded proposal [2/4] : edb7e48c241d45b2f98b0dd76f46f79a541c9e", + "1 | Encoded proposal [3/4] : 9db5f54389a198aa542e79eb61036cc2f5818e", + "1 | Encoded proposal [4/4] : 9acb2143a842f4", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 273, + "name": "Democracy_Note_imminent_preimage", + "blob": "0a10010234988545b1ec4582a1fb89c9de980f64f2b3b06a3fcdf8ad8262cac3055dceb6e798126532162a71974bb41dfc71b564df6ffc276836d6ce8f649fe8267b4d5346d223b167ff7df85f3e7989f20b0a37c4615a1d06b6182622c0d50bb8825a71d710aafb00f7d703f3daed9e77896b87e14cf12c7cca8efcec263bb7128217e7d5030403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Note imminent preimage", + "1 | Encoded proposal [1/7] : 34988545b1ec4582a1fb89c9de980f64f2b3b0", + "1 | Encoded proposal [2/7] : 6a3fcdf8ad8262cac3055dceb6e79812653216", + "1 | Encoded proposal [3/7] : 2a71974bb41dfc71b564df6ffc276836d6ce8f", + "1 | Encoded proposal [4/7] : 649fe8267b4d5346d223b167ff7df85f3e7989", + "1 | Encoded proposal [5/7] : f20b0a37c4615a1d06b6182622c0d50bb8825a", + "1 | Encoded proposal [6/7] : 71d710aafb00f7d703f3daed9e77896b87e14c", + "1 | Encoded proposal [7/7] : f12c7cca8efcec263bb7128217e7", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Democracy : Note imminent preimage", + "1 | Encoded proposal [1/7] : 34988545b1ec4582a1fb89c9de980f64f2b3b0", + "1 | Encoded proposal [2/7] : 6a3fcdf8ad8262cac3055dceb6e79812653216", + "1 | Encoded proposal [3/7] : 2a71974bb41dfc71b564df6ffc276836d6ce8f", + "1 | Encoded proposal [4/7] : 649fe8267b4d5346d223b167ff7df85f3e7989", + "1 | Encoded proposal [5/7] : f20b0a37c4615a1d06b6182622c0d50bb8825a", + "1 | Encoded proposal [6/7] : 71d710aafb00f7d703f3daed9e77896b87e14c", + "1 | Encoded proposal [7/7] : f12c7cca8efcec263bb7128217e7", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 274, + "name": "Democracy_Note_imminent_preimage", + "blob": "0a108096ab01ac193b73fcc76aa234b12a329bc86f9f152b0ae6ffd64e1c32ca7ea706d5038d2403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Note imminent preimage", + "1 | Encoded proposal [1/2] : 96ab01ac193b73fcc76aa234b12a329bc86f9f", + "1 | Encoded proposal [2/2] : 152b0ae6ffd64e1c32ca7ea706", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Democracy : Note imminent preimage", + "1 | Encoded proposal [1/2] : 96ab01ac193b73fcc76aa234b12a329bc86f9f", + "1 | Encoded proposal [2/2] : 152b0ae6ffd64e1c32ca7ea706", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 275, + "name": "Democracy_Note_imminent_preimage", + "blob": "0a100102cf6e0bddae4392c389df38f86156f24ceb15d22310703852c1d3b33ad2609cbb81229cbd86889c15cdf14da89f5ed5bf0045e7d5a4b1866c1f902bbd52e12a4e59968f9fb25166055db3eee594d7b1e7336aeb8aaf3fddb768aa81f2b5423c8d3abd4242271fdb7745efaffc4731095cf3994e1a6a75de0680e881702f430fd6d5038d2433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Note imminent preimage", + "1 | Encoded proposal [1/7] : cf6e0bddae4392c389df38f86156f24ceb15d2", + "1 | Encoded proposal [2/7] : 2310703852c1d3b33ad2609cbb81229cbd8688", + "1 | Encoded proposal [3/7] : 9c15cdf14da89f5ed5bf0045e7d5a4b1866c1f", + "1 | Encoded proposal [4/7] : 902bbd52e12a4e59968f9fb25166055db3eee5", + "1 | Encoded proposal [5/7] : 94d7b1e7336aeb8aaf3fddb768aa81f2b5423c", + "1 | Encoded proposal [6/7] : 8d3abd4242271fdb7745efaffc4731095cf399", + "1 | Encoded proposal [7/7] : 4e1a6a75de0680e881702f430fd6", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Democracy : Note imminent preimage", + "1 | Encoded proposal [1/7] : cf6e0bddae4392c389df38f86156f24ceb15d2", + "1 | Encoded proposal [2/7] : 2310703852c1d3b33ad2609cbb81229cbd8688", + "1 | Encoded proposal [3/7] : 9c15cdf14da89f5ed5bf0045e7d5a4b1866c1f", + "1 | Encoded proposal [4/7] : 902bbd52e12a4e59968f9fb25166055db3eee5", + "1 | Encoded proposal [5/7] : 94d7b1e7336aeb8aaf3fddb768aa81f2b5423c", + "1 | Encoded proposal [6/7] : 8d3abd4242271fdb7745efaffc4731095cf399", + "1 | Encoded proposal [7/7] : 4e1a6a75de0680e881702f430fd6", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 276, + "name": "Democracy_Note_imminent_preimage_operational", + "blob": "0a118096ab01ac193b73fcc76aa234b12a329bc86f9f152b0ae6ffd64e1c32ca7ea706d503046d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Note imminent preimage operational", + "1 | Encoded proposal [1/2] : 96ab01ac193b73fcc76aa234b12a329bc86f9f", + "1 | Encoded proposal [2/2] : 152b0ae6ffd64e1c32ca7ea706", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Democracy : Note imminent preimage operational", + "1 | Encoded proposal [1/2] : 96ab01ac193b73fcc76aa234b12a329bc86f9f", + "1 | Encoded proposal [2/2] : 152b0ae6ffd64e1c32ca7ea706", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 277, + "name": "Democracy_Note_imminent_preimage_operational", + "blob": "0a118096ab01ac193b73fcc76aa234b12a329bc86f9f152b0ae6ffd64e1c32ca7ea706d5038d2433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Note imminent preimage operational", + "1 | Encoded proposal [1/2] : 96ab01ac193b73fcc76aa234b12a329bc86f9f", + "1 | Encoded proposal [2/2] : 152b0ae6ffd64e1c32ca7ea706", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Democracy : Note imminent preimage operational", + "1 | Encoded proposal [1/2] : 96ab01ac193b73fcc76aa234b12a329bc86f9f", + "1 | Encoded proposal [2/2] : 152b0ae6ffd64e1c32ca7ea706", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 278, + "name": "Democracy_Note_imminent_preimage_operational", + "blob": "0a11010234988545b1ec4582a1fb89c9de980f64f2b3b06a3fcdf8ad8262cac3055dceb6e798126532162a71974bb41dfc71b564df6ffc276836d6ce8f649fe8267b4d5346d223b167ff7df85f3e7989f20b0a37c4615a1d06b6182622c0d50bb8825a71d710aafb00f7d703f3daed9e77896b87e14cf12c7cca8efcec263bb7128217e7d503ae1103006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Note imminent preimage operational", + "1 | Encoded proposal [1/7] : 34988545b1ec4582a1fb89c9de980f64f2b3b0", + "1 | Encoded proposal [2/7] : 6a3fcdf8ad8262cac3055dceb6e79812653216", + "1 | Encoded proposal [3/7] : 2a71974bb41dfc71b564df6ffc276836d6ce8f", + "1 | Encoded proposal [4/7] : 649fe8267b4d5346d223b167ff7df85f3e7989", + "1 | Encoded proposal [5/7] : f20b0a37c4615a1d06b6182622c0d50bb8825a", + "1 | Encoded proposal [6/7] : 71d710aafb00f7d703f3daed9e77896b87e14c", + "1 | Encoded proposal [7/7] : f12c7cca8efcec263bb7128217e7", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Democracy : Note imminent preimage operational", + "1 | Encoded proposal [1/7] : 34988545b1ec4582a1fb89c9de980f64f2b3b0", + "1 | Encoded proposal [2/7] : 6a3fcdf8ad8262cac3055dceb6e79812653216", + "1 | Encoded proposal [3/7] : 2a71974bb41dfc71b564df6ffc276836d6ce8f", + "1 | Encoded proposal [4/7] : 649fe8267b4d5346d223b167ff7df85f3e7989", + "1 | Encoded proposal [5/7] : f20b0a37c4615a1d06b6182622c0d50bb8825a", + "1 | Encoded proposal [6/7] : 71d710aafb00f7d703f3daed9e77896b87e14c", + "1 | Encoded proposal [7/7] : f12c7cca8efcec263bb7128217e7", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 279, + "name": "Democracy_Note_imminent_preimage_operational", + "blob": "0a11010191fbb072444e9084c96a7763c0ddfee99ed3c67ce44f67caf5bab4b3cb5b1c4967a79dced7d65c42297630513a56b2b93c7c2ab418315e4d2346f52334d55141d5038d24002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Note imminent preimage operational", + "1 | Encoded proposal [1/4] : 91fbb072444e9084c96a7763c0ddfee99ed3c6", + "1 | Encoded proposal [2/4] : 7ce44f67caf5bab4b3cb5b1c4967a79dced7d6", + "1 | Encoded proposal [3/4] : 5c42297630513a56b2b93c7c2ab418315e4d23", + "1 | Encoded proposal [4/4] : 46f52334d55141" + ], + "output_expert": [ + "0 | Democracy : Note imminent preimage operational", + "1 | Encoded proposal [1/4] : 91fbb072444e9084c96a7763c0ddfee99ed3c6", + "1 | Encoded proposal [2/4] : 7ce44f67caf5bab4b3cb5b1c4967a79dced7d6", + "1 | Encoded proposal [3/4] : 5c42297630513a56b2b93c7c2ab418315e4d23", + "1 | Encoded proposal [4/4] : 46f52334d55141", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 280, + "name": "Democracy_Note_imminent_preimage_operational", + "blob": "0a1180008bca3e10d17b2cfc71ef145d9b2d5d4a3dfb208474480304b3080a2e4131c1d503ae110300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Note imminent preimage operational", + "1 | Encoded proposal [1/2] : 008bca3e10d17b2cfc71ef145d9b2d5d4a3dfb", + "1 | Encoded proposal [2/2] : 208474480304b3080a2e4131c1" + ], + "output_expert": [ + "0 | Democracy : Note imminent preimage operational", + "1 | Encoded proposal [1/2] : 008bca3e10d17b2cfc71ef145d9b2d5d4a3dfb", + "1 | Encoded proposal [2/2] : 208474480304b3080a2e4131c1", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 281, + "name": "Democracy_Reap_preimage", + "blob": "0a120000000000000000000000000000000000000000000000000000000000000000ce8e0700d503008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Reap preimage", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Proposal len upper bound : 123827", + "3 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Democracy : Reap preimage", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Proposal len upper bound : 123827", + "3 | Chain : Edgeware", + "4 | Nonce : 0", + "5 | Tip : EDG 0.000000000055555555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 282, + "name": "Democracy_Reap_preimage", + "blob": "0a1200000000000000000000000000000000000000000000000000000000000000009504d5030403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Reap preimage", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Proposal len upper bound : 293", + "3 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Democracy : Reap preimage", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Proposal len upper bound : 293", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Tip : EDG 0.00000000123456789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 283, + "name": "Democracy_Reap_preimage", + "blob": "0a12000000000000000000000000000000000000000000000000000000000000000000d50391018ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Reap preimage", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Proposal len upper bound : 0", + "3 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Democracy : Reap preimage", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Proposal len upper bound : 0", + "3 | Chain : Edgeware", + "4 | Nonce : 100", + "5 | Tip : EDG 0.000000000055555555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 284, + "name": "Democracy_Reap_preimage", + "blob": "0a12000000000000000000000000000000000000000000000000000000000000000000d5030403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Reap preimage", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Proposal len upper bound : 0", + "3 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Democracy : Reap preimage", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Proposal len upper bound : 0", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Tip : EDG 0.00000000123456789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 285, + "name": "Democracy_Reap_preimage", + "blob": "0a120000000000000000000000000000000000000000000000000000000000000000b1d6d50304002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Reap preimage", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Proposal len upper bound : 13740" + ], + "output_expert": [ + "0 | Democracy : Reap preimage", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Proposal len upper bound : 13740", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 286, + "name": "Democracy_Unlock", + "blob": "0a13ae0f8c4e9d6bfe2f5a4d357ee743292594cff455e0a480ca635e5511921f3a60d5038d2433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Unlock", + "1 | Target [1/2] : mSqm5tC3qvqidkfu77Le5ySig2XDMgtLjZo6Hbd", + "1 | Target [2/2] : TypHehcM", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Democracy : Unlock", + "1 | Target [1/2] : mSqm5tC3qvqidkfu77Le5ySig2XDMgtLjZo6Hbd", + "1 | Target [2/2] : TypHehcM", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 287, + "name": "Democracy_Unlock", + "blob": "0a13f0d79b5ca0e4bfe27f9e6440d003d0bf037a5721cb138d4d7a227056a38c3218d5030433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Unlock", + "1 | Target [1/2] : nxQMKYwLGxtr3Np6DqJsYNPE89GrBC9kKgG81Ug", + "1 | Target [2/2] : Ew2yqvUu", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Democracy : Unlock", + "1 | Target [1/2] : nxQMKYwLGxtr3Np6DqJsYNPE89GrBC9kKgG81Ug", + "1 | Target [2/2] : Ew2yqvUu", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 288, + "name": "Democracy_Unlock", + "blob": "0a13fc36502b06380fd21101013d7b678acf7ba77c3b0d070d2fa28da03ad6132c76d503048ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Unlock", + "1 | Target [1/2] : oDK1d3PH2ckj69KyAVZdYyQi8L9Zb4Xp1UfuPP9", + "1 | Target [2/2] : 4SGbP52D", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Democracy : Unlock", + "1 | Target [1/2] : oDK1d3PH2ckj69KyAVZdYyQi8L9Zb4Xp1UfuPP9", + "1 | Target [2/2] : 4SGbP52D", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 289, + "name": "Democracy_Unlock", + "blob": "0a132cca058f2e1c64c04bd9b97014687c400a6bced5ce559a2ac23e5bfa89a60f10d50391010b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Unlock", + "1 | Target [1/2] : iXLvuB6fsGt5JQ6cBV7VqbS1d2kSUEshqxLkQVq", + "1 | Target [2/2] : Jk5843qn", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Democracy : Unlock", + "1 | Target [1/2] : iXLvuB6fsGt5JQ6cBV7VqbS1d2kSUEshqxLkQVq", + "1 | Target [2/2] : Jk5843qn", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 290, + "name": "Democracy_Unlock", + "blob": "0a133a7c18728de7c0d218d9003c299d23321dc154307f40290eae920c9a14df8841d503ae11030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Unlock", + "1 | Target [1/2] : iqJT9NwpA3f4EpBLTXJJ59EzNx1S424Yvfkd7yg", + "1 | Target [2/2] : rJDevzAR", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Democracy : Unlock", + "1 | Target [1/2] : iqJT9NwpA3f4EpBLTXJJ59EzNx1S424Yvfkd7yg", + "1 | Target [2/2] : rJDevzAR", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 291, + "name": "Democracy_Remove_vote", + "blob": "0a14ff030000d5038d2403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Remove vote", + "1 | Index : 1023", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Democracy : Remove vote", + "1 | Index : 1023", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 292, + "name": "Democracy_Remove_vote", + "blob": "0a14ff030000d503ae1103006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Remove vote", + "1 | Index : 1023", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Democracy : Remove vote", + "1 | Index : 1023", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 293, + "name": "Democracy_Remove_vote", + "blob": "0a14b3e30100d503040b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Remove vote", + "1 | Index : 123827", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Democracy : Remove vote", + "1 | Index : 123827", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 294, + "name": "Democracy_Remove_vote", + "blob": "0a14b3e30100d503040b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Remove vote", + "1 | Index : 123827", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Democracy : Remove vote", + "1 | Index : 123827", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 295, + "name": "Democracy_Remove_vote", + "blob": "0a147b000000d503ae1103006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Remove vote", + "1 | Index : 123", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Democracy : Remove vote", + "1 | Index : 123", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 296, + "name": "Democracy_Remove_other_vote", + "blob": "0a152cca058f2e1c64c04bd9b97014687c400a6bced5ce559a2ac23e5bfa89a60f107b000000d50300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Remove other vote", + "1 | Target [1/2] : iXLvuB6fsGt5JQ6cBV7VqbS1d2kSUEshqxLkQVq", + "1 | Target [2/2] : Jk5843qn", + "2 | Index : 123" + ], + "output_expert": [ + "0 | Democracy : Remove other vote", + "1 | Target [1/2] : iXLvuB6fsGt5JQ6cBV7VqbS1d2kSUEshqxLkQVq", + "1 | Target [2/2] : Jk5843qn", + "2 | Index : 123", + "3 | Chain : Edgeware", + "4 | Nonce : 0", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 297, + "name": "Democracy_Remove_other_vote", + "blob": "0a152a432fe80ff72d33204e68b384fcd88bfc19ca5060055e78f8ef4dfc7087287425010000d5030403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Remove other vote", + "1 | Target [1/2] : iU2nCZ2wJUWUw6BpnWbcXY727JgLhM4dm5WuhLd", + "1 | Target [2/2] : BKhzuLGR", + "2 | Index : 293", + "3 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Democracy : Remove other vote", + "1 | Target [1/2] : iU2nCZ2wJUWUw6BpnWbcXY727JgLhM4dm5WuhLd", + "1 | Target [2/2] : BKhzuLGR", + "2 | Index : 293", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Tip : EDG 0.00000000123456789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 298, + "name": "Democracy_Remove_other_vote", + "blob": "0a15f0d79b5ca0e4bfe27f9e6440d003d0bf037a5721cb138d4d7a227056a38c321825010000d5030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Remove other vote", + "1 | Target [1/2] : nxQMKYwLGxtr3Np6DqJsYNPE89GrBC9kKgG81Ug", + "1 | Target [2/2] : Ew2yqvUu", + "2 | Index : 293", + "3 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Democracy : Remove other vote", + "1 | Target [1/2] : nxQMKYwLGxtr3Np6DqJsYNPE89GrBC9kKgG81Ug", + "1 | Target [2/2] : Ew2yqvUu", + "2 | Index : 293", + "3 | Chain : Edgeware", + "4 | Nonce : 0", + "5 | Tip : EDG 0.00000000123456789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 299, + "name": "Democracy_Remove_other_vote", + "blob": "0a153a7c18728de7c0d218d9003c299d23321dc154307f40290eae920c9a14df88417b000000d503000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Remove other vote", + "1 | Target [1/2] : iqJT9NwpA3f4EpBLTXJJ59EzNx1S424Yvfkd7yg", + "1 | Target [2/2] : rJDevzAR", + "2 | Index : 123", + "3 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Democracy : Remove other vote", + "1 | Target [1/2] : iqJT9NwpA3f4EpBLTXJJ59EzNx1S424Yvfkd7yg", + "1 | Target [2/2] : rJDevzAR", + "2 | Index : 123", + "3 | Chain : Edgeware", + "4 | Nonce : 0", + "5 | Tip : EDG 0.000005552342355555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 300, + "name": "Democracy_Remove_other_vote", + "blob": "0a159c0e53a8c0ca0f3623c056af9a8ea30b94057dba0262f541808b27efe430b97500000000d503ae1103008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Remove other vote", + "1 | Target [1/2] : m3EY3vTASFan5xtFj1vJXRQETywyYNpjgV6dv5Q", + "1 | Target [2/2] : MUJ26AsQ", + "2 | Index : 0", + "3 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Democracy : Remove other vote", + "1 | Target [1/2] : m3EY3vTASFan5xtFj1vJXRQETywyYNpjgV6dv5Q", + "1 | Target [2/2] : MUJ26AsQ", + "2 | Index : 0", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Tip : EDG 0.000000000055555555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 301, + "name": "Democracy_Enact_proposal", + "blob": "0a160000000000000000000000000000000000000000000000000000000000000000ff030000d50300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Enact proposal", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Index : 1023" + ], + "output_expert": [ + "0 | Democracy : Enact proposal", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Index : 1023", + "3 | Chain : Edgeware", + "4 | Nonce : 0", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 302, + "name": "Democracy_Enact_proposal", + "blob": "0a1600000000000000000000000000000000000000000000000000000000000000007b000000d50300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Enact proposal", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Index : 123" + ], + "output_expert": [ + "0 | Democracy : Enact proposal", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Index : 123", + "3 | Chain : Edgeware", + "4 | Nonce : 0", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 303, + "name": "Democracy_Enact_proposal", + "blob": "0a16000000000000000000000000000000000000000000000000000000000000000001000000d50300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Enact proposal", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Index : 1" + ], + "output_expert": [ + "0 | Democracy : Enact proposal", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Index : 1", + "3 | Chain : Edgeware", + "4 | Nonce : 0", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 304, + "name": "Democracy_Enact_proposal", + "blob": "0a160000000000000000000000000000000000000000000000000000000000000000b3e30100d503ae1103008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Enact proposal", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Index : 123827", + "3 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Democracy : Enact proposal", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Index : 123827", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Tip : EDG 0.000000000055555555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 305, + "name": "Democracy_Enact_proposal", + "blob": "0a1600000000000000000000000000000000000000000000000000000000000000007b000000d5038d240b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Enact proposal", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Index : 123", + "3 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Democracy : Enact proposal", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Index : 123", + "3 | Chain : Edgeware", + "4 | Nonce : 2339", + "5 | Tip : EDG 0.000005552342355555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 306, + "name": "Democracy_Cancel_proposal", + "blob": "0a186d0fd50391016d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Cancel proposal", + "1 | Prop index : 987", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Democracy : Cancel proposal", + "1 | Prop index : 987", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 307, + "name": "Democracy_Cancel_proposal", + "blob": "0a186ed00100d503000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Cancel proposal", + "1 | Prop index : 29723", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Democracy : Cancel proposal", + "1 | Prop index : 29723", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 308, + "name": "Democracy_Cancel_proposal", + "blob": "0a1800d503ae11030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Cancel proposal", + "1 | Prop index : 0", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Democracy : Cancel proposal", + "1 | Prop index : 0", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 309, + "name": "Democracy_Cancel_proposal", + "blob": "0a186ed00100d503ae11030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Cancel proposal", + "1 | Prop index : 29723", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Democracy : Cancel proposal", + "1 | Prop index : 29723", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 310, + "name": "Democracy_Cancel_proposal", + "blob": "0a185256b600d5030403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Democracy : Cancel proposal", + "1 | Prop index : 2987412", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Democracy : Cancel proposal", + "1 | Prop index : 2987412", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 311, + "name": "Council_Set_members", + "blob": "0b000001440ec24edfc0c015cfea80063089882072ea8f926e7ee9c0f5cd2bcf9bd6f6130c000000d50391018ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Council : Set members", + "1 | New members : ", + "2 | Prime [1/2] : j3rT6SjZBQnmU1EMdprtoYXXBwGGEgecwudUJL6", + "2 | Prime [2/2] : 6qcTE46z", + "3 | Old count : 12", + "4 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Council : Set members", + "1 | New members : ", + "2 | Prime [1/2] : j3rT6SjZBQnmU1EMdprtoYXXBwGGEgecwudUJL6", + "2 | Prime [2/2] : 6qcTE46z", + "3 | Old count : 12", + "4 | Chain : Edgeware", + "5 | Nonce : 100", + "6 | Tip : EDG 0.000000000055555555", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 312, + "name": "Council_Set_members", + "blob": "0b000001440ec24edfc0c015cfea80063089882072ea8f926e7ee9c0f5cd2bcf9bd6f61300000000d503ae1103008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Council : Set members", + "1 | New members : ", + "2 | Prime [1/2] : j3rT6SjZBQnmU1EMdprtoYXXBwGGEgecwudUJL6", + "2 | Prime [2/2] : 6qcTE46z", + "3 | Old count : 0", + "4 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Council : Set members", + "1 | New members : ", + "2 | Prime [1/2] : j3rT6SjZBQnmU1EMdprtoYXXBwGGEgecwudUJL6", + "2 | Prime [2/2] : 6qcTE46z", + "3 | Old count : 0", + "4 | Chain : Edgeware", + "5 | Nonce : 50283", + "6 | Tip : EDG 0.000000000055555555", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 313, + "name": "Council_Set_members", + "blob": "0b00000156ccbef657e2fd36a366188b51e052d62c28d476d9766cec4e2f99c50932845604000000d5038d248ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Council : Set members", + "1 | New members : ", + "2 | Prime [1/2] : jURkV5UvH17x7UDazYzdWeyCFzv1TuKZwcA9sRg", + "2 | Prime [2/2] : AAw233LJ", + "3 | Old count : 4", + "4 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Council : Set members", + "1 | New members : ", + "2 | Prime [1/2] : jURkV5UvH17x7UDazYzdWeyCFzv1TuKZwcA9sRg", + "2 | Prime [2/2] : AAw233LJ", + "3 | Old count : 4", + "4 | Chain : Edgeware", + "5 | Nonce : 2339", + "6 | Tip : EDG 0.000000000055555555", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 314, + "name": "Council_Set_members", + "blob": "0b000884abf7f6a433f4583265e6f7fc5f3a4c2d888e4db6bda002ca8968cda4485d15189ba1af35becc223473135bd3716176f9cebae3a34bf0602dfc8dceecb515190156ccbef657e2fd36a366188b51e052d62c28d476d9766cec4e2f99c50932845600000000d5030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Council : Set members", + "1 | New members [1/4] : kWaDW1FoaBx8fpuVm2eVgKW24SvRE8MRUUDt4vX", + "1 | New members [2/4] : uHtr7es5", + "1 | New members [3/4] : i4tC53zpSf1Ps7G7pt4gk756qxSKz15RvnAxfiy", + "1 | New members [4/4] : BMR3PNq8", + "2 | Prime [1/2] : jURkV5UvH17x7UDazYzdWeyCFzv1TuKZwcA9sRg", + "2 | Prime [2/2] : AAw233LJ", + "3 | Old count : 0", + "4 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Council : Set members", + "1 | New members [1/4] : kWaDW1FoaBx8fpuVm2eVgKW24SvRE8MRUUDt4vX", + "1 | New members [2/4] : uHtr7es5", + "1 | New members [3/4] : i4tC53zpSf1Ps7G7pt4gk756qxSKz15RvnAxfiy", + "1 | New members [4/4] : BMR3PNq8", + "2 | Prime [1/2] : jURkV5UvH17x7UDazYzdWeyCFzv1TuKZwcA9sRg", + "2 | Prime [2/2] : AAw233LJ", + "3 | Old count : 0", + "4 | Chain : Edgeware", + "5 | Nonce : 0", + "6 | Tip : EDG 0.00000000123456789", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 315, + "name": "Council_Set_members", + "blob": "0b000001c0edfd9fbb6828360c2ffdb212b8e42634191f0b041b7de36fb830e3f8a2044a00000000d503008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Council : Set members", + "1 | New members : ", + "2 | Prime [1/2] : msahg48TXgMD7TSyYwnxH4WRbx5v6rq1G1ew7Lw", + "2 | Prime [2/2] : nW7xSwsg", + "3 | Old count : 0", + "4 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Council : Set members", + "1 | New members : ", + "2 | Prime [1/2] : msahg48TXgMD7TSyYwnxH4WRbx5v6rq1G1ew7Lw", + "2 | Prime [2/2] : nW7xSwsg", + "3 | Old count : 0", + "4 | Chain : Edgeware", + "5 | Nonce : 0", + "6 | Tip : EDG 0.000000000055555555", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 316, + "name": "Council_Vote", + "blob": "0b0300000000000000000000000000000000000000000000000000000000000000000001d503910133158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Council : Vote", + "1 | Proposal [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal [2/2] : 00000000000000000000000000", + "2 | Index : 0", + "3 | Approve : True", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Council : Vote", + "1 | Proposal [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal [2/2] : 00000000000000000000000000", + "2 | Index : 0", + "3 | Approve : True", + "4 | Chain : Edgeware", + "5 | Nonce : 100", + "6 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "6 | Tip [2/2] : 56789", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 317, + "name": "Council_Vote", + "blob": "0b0300000000000000000000000000000000000000000000000000000000000000000001d503910103d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Council : Vote", + "1 | Proposal [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal [2/2] : 00000000000000000000000000", + "2 | Index : 0", + "3 | Approve : True", + "4 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Council : Vote", + "1 | Proposal [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal [2/2] : 00000000000000000000000000", + "2 | Index : 0", + "3 | Approve : True", + "4 | Chain : Edgeware", + "5 | Nonce : 100", + "6 | Tip : EDG 0.00000000123456789", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 318, + "name": "Council_Vote", + "blob": "0b0300000000000000000000000000000000000000000000000000000000000000006d0f00d503ae1103000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Council : Vote", + "1 | Proposal [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal [2/2] : 00000000000000000000000000", + "2 | Index : 987", + "3 | Approve : False", + "4 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Council : Vote", + "1 | Proposal [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal [2/2] : 00000000000000000000000000", + "2 | Index : 987", + "3 | Approve : False", + "4 | Chain : Edgeware", + "5 | Nonce : 50283", + "6 | Tip : EDG 0.000005552342355555", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 319, + "name": "Council_Vote", + "blob": "0b0300000000000000000000000000000000000000000000000000000000000000006d0f00d503040b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Council : Vote", + "1 | Proposal [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal [2/2] : 00000000000000000000000000", + "2 | Index : 987", + "3 | Approve : False", + "4 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Council : Vote", + "1 | Proposal [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal [2/2] : 00000000000000000000000000", + "2 | Index : 987", + "3 | Approve : False", + "4 | Chain : Edgeware", + "5 | Nonce : 1", + "6 | Tip : EDG 0.000005552342355555", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 320, + "name": "Council_Vote", + "blob": "0b03000000000000000000000000000000000000000000000000000000000000000025c100d5038d240b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Council : Vote", + "1 | Proposal [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal [2/2] : 00000000000000000000000000", + "2 | Index : 12361", + "3 | Approve : False", + "4 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Council : Vote", + "1 | Proposal [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal [2/2] : 00000000000000000000000000", + "2 | Index : 12361", + "3 | Approve : False", + "4 | Chain : Edgeware", + "5 | Nonce : 2339", + "6 | Tip : EDG 0.000005552342355555", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 321, + "name": "Council_Close", + "blob": "0b040000000000000000000000000000000000000000000000000000000000000000006d01ed01d5030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Council : Close", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Index : 0", + "3 | Proposal weight bound : 91", + "4 | Length bound : 123", + "5 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "5 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Council : Close", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Index : 0", + "3 | Proposal weight bound : 91", + "4 | Length bound : 123", + "5 | Chain : Edgeware", + "6 | Nonce : 0", + "7 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "7 | Tip [2/2] : 56789", + "8 | Era Phase : 61", + "9 | Era Period : 64", + "10 | Block [1/2] : 00000000000000000000000000000000000000", + "10 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 322, + "name": "Council_Close", + "blob": "0b040000000000000000000000000000000000000000000000000000000000000000ce8307006d01b1d6d50391016d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Council : Close", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Index : 123123", + "3 | Proposal weight bound : 91", + "4 | Length bound : 13740", + "5 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Council : Close", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Index : 123123", + "3 | Proposal weight bound : 91", + "4 | Length bound : 13740", + "5 | Chain : Edgeware", + "6 | Nonce : 100", + "7 | Tip : EDG 0.000000000000000987", + "8 | Era Phase : 61", + "9 | Era Period : 64", + "10 | Block [1/2] : 00000000000000000000000000000000000000", + "10 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 323, + "name": "Council_Close", + "blob": "0b0400000000000000000000000000000000000000000000000000000000000000006d0f6d0104d50391010b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Council : Close", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Index : 987", + "3 | Proposal weight bound : 91", + "4 | Length bound : 1", + "5 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Council : Close", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Index : 987", + "3 | Proposal weight bound : 91", + "4 | Length bound : 1", + "5 | Chain : Edgeware", + "6 | Nonce : 100", + "7 | Tip : EDG 0.000005552342355555", + "8 | Era Phase : 61", + "9 | Era Period : 64", + "10 | Block [1/2] : 00000000000000000000000000000000000000", + "10 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 324, + "name": "Council_Close", + "blob": "0b04000000000000000000000000000000000000000000000000000000000000000025c14d019504d5030433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Council : Close", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Index : 12361", + "3 | Proposal weight bound : 83", + "4 | Length bound : 293", + "5 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "5 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Council : Close", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Index : 12361", + "3 | Proposal weight bound : 83", + "4 | Length bound : 293", + "5 | Chain : Edgeware", + "6 | Nonce : 1", + "7 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "7 | Tip [2/2] : 56789", + "8 | Era Phase : 61", + "9 | Era Period : 64", + "10 | Block [1/2] : 00000000000000000000000000000000000000", + "10 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 325, + "name": "Council_Close", + "blob": "0b040000000000000000000000000000000000000000000000000000000000000000000c00d503910103d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Council : Close", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Index : 0", + "3 | Proposal weight bound : 3", + "4 | Length bound : 0", + "5 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Council : Close", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Index : 0", + "3 | Proposal weight bound : 3", + "4 | Length bound : 0", + "5 | Chain : Edgeware", + "6 | Nonce : 100", + "7 | Tip : EDG 0.00000000123456789", + "8 | Era Phase : 61", + "9 | Era Period : 64", + "10 | Block [1/2] : 00000000000000000000000000000000000000", + "10 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 326, + "name": "Council_Disapprove_proposal", + "blob": "0b050000000000000000000000000000000000000000000000000000000000000000d503ae1103008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Council : Disapprove proposal", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Council : Disapprove proposal", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 327, + "name": "Council_Disapprove_proposal", + "blob": "0b050000000000000000000000000000000000000000000000000000000000000000d50300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Council : Disapprove proposal", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000" + ], + "output_expert": [ + "0 | Council : Disapprove proposal", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 328, + "name": "Council_Disapprove_proposal", + "blob": "0b050000000000000000000000000000000000000000000000000000000000000000d503040b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Council : Disapprove proposal", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Council : Disapprove proposal", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 329, + "name": "Council_Disapprove_proposal", + "blob": "0b050000000000000000000000000000000000000000000000000000000000000000d50304002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Council : Disapprove proposal", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000" + ], + "output_expert": [ + "0 | Council : Disapprove proposal", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 330, + "name": "Council_Disapprove_proposal", + "blob": "0b050000000000000000000000000000000000000000000000000000000000000000d5038d2433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Council : Disapprove proposal", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Council : Disapprove proposal", + "1 | Proposal hash [1/2] : 00000000000000000000000000000000000000", + "1 | Proposal hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 331, + "name": "Elections_Vote", + "blob": "0c00205647e656a9b2b386fb81c3379ed216a02f06da139369f600b40dcfb466be6355cc414baeefd7bb64a39c211252feba539a22a320cb39273a75323aba52c5bd2df29eed1eb71d4eaa8cc3c79e577f42e2b2008e70abe00375fde9b83914180077daffe9e267abf57da6bf7055245af1f2b8911f334f8d98b4bc3016321f50c80da2f5b360dc8b11944546e68bb4bb3685d3d450da481aa1ff3a0c97d90d6cb34f2ae7b4d2d8301e19742abb18e8bea820e5cddc1c587b8f65c0a8d8aeb228750760f0259435df976863cf69d55157507ec457c6bc6ac553789a3db0f27e97236c8cd5a27b6ae154311de1d18d7d91a608db7a072fcdbaad75208ec3f276a30b2700d503ae110300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Elections : Vote", + "1 | Votes [1/16] : jTkHbfGsmhUXHfKjiimQiKPrDq2Wwq4KZXWAV7y", + "1 | Votes [2/16] : FcHky3SX", + "1 | Votes [3/16] : n8RyXypmRn8mejaAmwWZLSwDLAWv1NHUKaotCjB", + "1 | Votes [4/16] : TDaC9TL1", + "1 | Votes [5/16] : nzjcHpFKT2Lk8rSggNFZEoW3CJGHCWEKK1V1JjU", + "1 | Votes [6/16] : CLjiLJXN", + "1 | Votes [7/16] : nTmGgtWFNtLbfkBfXmRaWzvDtYvrgiv1BeCwDnK", + "1 | Votes [8/16] : ZF8HvM2J", + "1 | Votes [9/16] : mCHZCEuaPs9WYoqzWDzYuRjbghtm7dupa1dN6ww", + "1 | Votes [10/16] : BktnvuWr", + "1 | Votes [11/16] : iUseoMGwQEhrraKhgTWQvvqP5wSZg8otYQHrnah", + "1 | Votes [12/16] : uhNApnjD", + "1 | Votes [13/16] : jhikCaTnQYMQN9vNBJwnLBT7EmFj12aq4PYcrV4", + "1 | Votes [14/16] : WiCBNazj", + "1 | Votes [15/16] : khGycJEQsn7ixT7MN6x3tFJmMX4if2WpRsziB7C", + "1 | Votes [16/16] : 3FXiWbcr", + "2 | Amount : EDG 0.0" + ], + "output_expert": [ + "0 | Elections : Vote", + "1 | Votes [1/16] : jTkHbfGsmhUXHfKjiimQiKPrDq2Wwq4KZXWAV7y", + "1 | Votes [2/16] : FcHky3SX", + "1 | Votes [3/16] : n8RyXypmRn8mejaAmwWZLSwDLAWv1NHUKaotCjB", + "1 | Votes [4/16] : TDaC9TL1", + "1 | Votes [5/16] : nzjcHpFKT2Lk8rSggNFZEoW3CJGHCWEKK1V1JjU", + "1 | Votes [6/16] : CLjiLJXN", + "1 | Votes [7/16] : nTmGgtWFNtLbfkBfXmRaWzvDtYvrgiv1BeCwDnK", + "1 | Votes [8/16] : ZF8HvM2J", + "1 | Votes [9/16] : mCHZCEuaPs9WYoqzWDzYuRjbghtm7dupa1dN6ww", + "1 | Votes [10/16] : BktnvuWr", + "1 | Votes [11/16] : iUseoMGwQEhrraKhgTWQvvqP5wSZg8otYQHrnah", + "1 | Votes [12/16] : uhNApnjD", + "1 | Votes [13/16] : jhikCaTnQYMQN9vNBJwnLBT7EmFj12aq4PYcrV4", + "1 | Votes [14/16] : WiCBNazj", + "1 | Votes [15/16] : khGycJEQsn7ixT7MN6x3tFJmMX4if2WpRsziB7C", + "1 | Votes [16/16] : 3FXiWbcr", + "2 | Amount : EDG 0.0", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 332, + "name": "Elections_Vote", + "blob": "0c000003d2029649d5038d248ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Elections : Vote", + "1 | Votes : ", + "2 | Amount : EDG 0.00000000123456789", + "3 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Elections : Vote", + "1 | Votes : ", + "2 | Amount : EDG 0.00000000123456789", + "3 | Chain : Edgeware", + "4 | Nonce : 2339", + "5 | Tip : EDG 0.000000000055555555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 333, + "name": "Elections_Vote", + "blob": "0c000884abf7f6a433f4583265e6f7fc5f3a4c2d888e4db6bda002ca8968cda4485d15189ba1af35becc223473135bd3716176f9cebae3a34bf0602dfc8dceecb515190b63ce64c10c05d503ae110300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Elections : Vote", + "1 | Votes [1/4] : kWaDW1FoaBx8fpuVm2eVgKW24SvRE8MRUUDt4vX", + "1 | Votes [2/4] : uHtr7es5", + "1 | Votes [3/4] : i4tC53zpSf1Ps7G7pt4gk756qxSKz15RvnAxfiy", + "1 | Votes [4/4] : BMR3PNq8", + "2 | Amount : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Elections : Vote", + "1 | Votes [1/4] : kWaDW1FoaBx8fpuVm2eVgKW24SvRE8MRUUDt4vX", + "1 | Votes [2/4] : uHtr7es5", + "1 | Votes [3/4] : i4tC53zpSf1Ps7G7pt4gk756qxSKz15RvnAxfiy", + "1 | Votes [4/4] : BMR3PNq8", + "2 | Amount : EDG 0.000005552342355555", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 334, + "name": "Elections_Vote", + "blob": "0c000884abf7f6a433f4583265e6f7fc5f3a4c2d888e4db6bda002ca8968cda4485d15189ba1af35becc223473135bd3716176f9cebae3a34bf0602dfc8dceecb515196d0fd503ae11030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Elections : Vote", + "1 | Votes [1/4] : kWaDW1FoaBx8fpuVm2eVgKW24SvRE8MRUUDt4vX", + "1 | Votes [2/4] : uHtr7es5", + "1 | Votes [3/4] : i4tC53zpSf1Ps7G7pt4gk756qxSKz15RvnAxfiy", + "1 | Votes [4/4] : BMR3PNq8", + "2 | Amount : EDG 0.000000000000000987", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Elections : Vote", + "1 | Votes [1/4] : kWaDW1FoaBx8fpuVm2eVgKW24SvRE8MRUUDt4vX", + "1 | Votes [2/4] : uHtr7es5", + "1 | Votes [3/4] : i4tC53zpSf1Ps7G7pt4gk756qxSKz15RvnAxfiy", + "1 | Votes [4/4] : BMR3PNq8", + "2 | Amount : EDG 0.000000000000000987", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "5 | Tip [2/2] : 56789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 335, + "name": "Elections_Vote", + "blob": "0c000884abf7f6a433f4583265e6f7fc5f3a4c2d888e4db6bda002ca8968cda4485d15189ba1af35becc223473135bd3716176f9cebae3a34bf0602dfc8dceecb5151903d2029649d503048ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Elections : Vote", + "1 | Votes [1/4] : kWaDW1FoaBx8fpuVm2eVgKW24SvRE8MRUUDt4vX", + "1 | Votes [2/4] : uHtr7es5", + "1 | Votes [3/4] : i4tC53zpSf1Ps7G7pt4gk756qxSKz15RvnAxfiy", + "1 | Votes [4/4] : BMR3PNq8", + "2 | Amount : EDG 0.00000000123456789", + "3 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Elections : Vote", + "1 | Votes [1/4] : kWaDW1FoaBx8fpuVm2eVgKW24SvRE8MRUUDt4vX", + "1 | Votes [2/4] : uHtr7es5", + "1 | Votes [3/4] : i4tC53zpSf1Ps7G7pt4gk756qxSKz15RvnAxfiy", + "1 | Votes [4/4] : BMR3PNq8", + "2 | Amount : EDG 0.00000000123456789", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Tip : EDG 0.000000000055555555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 336, + "name": "Elections_Remove_voter", + "blob": "0c01d5038d2403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Elections : Remove voter", + "1 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Elections : Remove voter", + "1 | Chain : Edgeware", + "2 | Nonce : 2339", + "3 | Tip : EDG 0.00000000123456789", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 337, + "name": "Elections_Remove_voter", + "blob": "0c01d5039101002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Elections : Remove voter" + ], + "output_expert": [ + "0 | Elections : Remove voter", + "1 | Chain : Edgeware", + "2 | Nonce : 100", + "3 | Era Phase : 61", + "4 | Era Period : 64", + "5 | Block [1/2] : 00000000000000000000000000000000000000", + "5 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 338, + "name": "Elections_Remove_voter", + "blob": "0c01d50391016d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Elections : Remove voter", + "1 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Elections : Remove voter", + "1 | Chain : Edgeware", + "2 | Nonce : 100", + "3 | Tip : EDG 0.000000000000000987", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 339, + "name": "Elections_Remove_voter", + "blob": "0c01d50304002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Elections : Remove voter" + ], + "output_expert": [ + "0 | Elections : Remove voter", + "1 | Chain : Edgeware", + "2 | Nonce : 1", + "3 | Era Phase : 61", + "4 | Era Period : 64", + "5 | Block [1/2] : 00000000000000000000000000000000000000", + "5 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 340, + "name": "Elections_Remove_voter", + "blob": "0c01d503910103d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Elections : Remove voter", + "1 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Elections : Remove voter", + "1 | Chain : Edgeware", + "2 | Nonce : 100", + "3 | Tip : EDG 0.00000000123456789", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 341, + "name": "Elections_Submit_candidacy", + "blob": "0c03b1d6d503ae1103000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Elections : Submit candidacy", + "1 | Candidate count : 13740", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Elections : Submit candidacy", + "1 | Candidate count : 13740", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 342, + "name": "Elections_Submit_candidacy", + "blob": "0c039504d503ae11030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Elections : Submit candidacy", + "1 | Candidate count : 293", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Elections : Submit candidacy", + "1 | Candidate count : 293", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 343, + "name": "Elections_Submit_candidacy", + "blob": "0c03b1d6d5030403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Elections : Submit candidacy", + "1 | Candidate count : 13740", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Elections : Submit candidacy", + "1 | Candidate count : 13740", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 344, + "name": "Elections_Submit_candidacy", + "blob": "0c03b1d6d503910103d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Elections : Submit candidacy", + "1 | Candidate count : 13740", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Elections : Submit candidacy", + "1 | Candidate count : 13740", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 345, + "name": "Elections_Submit_candidacy", + "blob": "0c0304d50391016d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Elections : Submit candidacy", + "1 | Candidate count : 1", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Elections : Submit candidacy", + "1 | Candidate count : 1", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 346, + "name": "Elections_Remove_member", + "blob": "0c05001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac600d503ae1103008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Elections : Remove member", + "1 | Who [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Who [2/2] : SDTfHv5h", + "2 | Has replacement : False", + "3 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Elections : Remove member", + "1 | Who [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Who [2/2] : SDTfHv5h", + "2 | Has replacement : False", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Tip : EDG 0.000000000055555555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 347, + "name": "Elections_Remove_member", + "blob": "0c05001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac601d5038d2403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Elections : Remove member", + "1 | Who [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Who [2/2] : SDTfHv5h", + "2 | Has replacement : True", + "3 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Elections : Remove member", + "1 | Who [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Who [2/2] : SDTfHv5h", + "2 | Has replacement : True", + "3 | Chain : Edgeware", + "4 | Nonce : 2339", + "5 | Tip : EDG 0.00000000123456789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 348, + "name": "Elections_Remove_member", + "blob": "0c05001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac600d503ae1103006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Elections : Remove member", + "1 | Who [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Who [2/2] : SDTfHv5h", + "2 | Has replacement : False", + "3 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Elections : Remove member", + "1 | Who [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Who [2/2] : SDTfHv5h", + "2 | Has replacement : False", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Tip : EDG 0.000000000000000987", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 349, + "name": "Elections_Remove_member", + "blob": "0c05001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac600d5038d2433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Elections : Remove member", + "1 | Who [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Who [2/2] : SDTfHv5h", + "2 | Has replacement : False", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Elections : Remove member", + "1 | Who [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Who [2/2] : SDTfHv5h", + "2 | Has replacement : False", + "3 | Chain : Edgeware", + "4 | Nonce : 2339", + "5 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "5 | Tip [2/2] : 56789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 350, + "name": "Elections_Remove_member", + "blob": "0c05001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac601d50391016d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Elections : Remove member", + "1 | Who [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Who [2/2] : SDTfHv5h", + "2 | Has replacement : True", + "3 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Elections : Remove member", + "1 | Who [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Who [2/2] : SDTfHv5h", + "2 | Has replacement : True", + "3 | Chain : Edgeware", + "4 | Nonce : 100", + "5 | Tip : EDG 0.000000000000000987", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 351, + "name": "Grandpa_Note_stalled", + "blob": "0e020000000000000000d503ae110300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Grandpa : Note stalled", + "1 | Delay : 0", + "2 | Best finalized block number : 0" + ], + "output_expert": [ + "0 | Grandpa : Note stalled", + "1 | Delay : 0", + "2 | Best finalized block number : 0", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 352, + "name": "Grandpa_Note_stalled", + "blob": "0e02b3e3010000000000d5030403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Grandpa : Note stalled", + "1 | Delay : 123827", + "2 | Best finalized block number : 0", + "3 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Grandpa : Note stalled", + "1 | Delay : 123827", + "2 | Best finalized block number : 0", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Tip : EDG 0.00000000123456789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 353, + "name": "Grandpa_Note_stalled", + "blob": "0e02ff030000ac350000d503006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Grandpa : Note stalled", + "1 | Delay : 1023", + "2 | Best finalized block number : 13740", + "3 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Grandpa : Note stalled", + "1 | Delay : 1023", + "2 | Best finalized block number : 13740", + "3 | Chain : Edgeware", + "4 | Nonce : 0", + "5 | Tip : EDG 0.000000000000000987", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 354, + "name": "Grandpa_Note_stalled", + "blob": "0e022501000025010000d50300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Grandpa : Note stalled", + "1 | Delay : 293", + "2 | Best finalized block number : 293" + ], + "output_expert": [ + "0 | Grandpa : Note stalled", + "1 | Delay : 293", + "2 | Best finalized block number : 293", + "3 | Chain : Edgeware", + "4 | Nonce : 0", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 355, + "name": "Grandpa_Note_stalled", + "blob": "0e02ff0300007b000000d503048ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Grandpa : Note stalled", + "1 | Delay : 1023", + "2 | Best finalized block number : 123", + "3 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Grandpa : Note stalled", + "1 | Delay : 1023", + "2 | Best finalized block number : 123", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Tip : EDG 0.000000000055555555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 356, + "name": "Treasury_Propose_spend", + "blob": "0f0000001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac6d5038d2403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Treasury : Propose spend", + "1 | Amount : EDG 0.0", + "2 | Beneficiary [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "2 | Beneficiary [2/2] : SDTfHv5h", + "3 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Treasury : Propose spend", + "1 | Amount : EDG 0.0", + "2 | Beneficiary [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "2 | Beneficiary [2/2] : SDTfHv5h", + "3 | Chain : Edgeware", + "4 | Nonce : 2339", + "5 | Tip : EDG 0.00000000123456789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 357, + "name": "Treasury_Propose_spend", + "blob": "0f0033158139ae28a3dfaac5fe1560a5e9e05c001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac6d5038d2403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Treasury : Propose spend", + "1 | Amount [1/2] : EDG 123456789012345678901.2345678901234", + "1 | Amount [2/2] : 56789", + "2 | Beneficiary [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "2 | Beneficiary [2/2] : SDTfHv5h", + "3 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Treasury : Propose spend", + "1 | Amount [1/2] : EDG 123456789012345678901.2345678901234", + "1 | Amount [2/2] : 56789", + "2 | Beneficiary [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "2 | Beneficiary [2/2] : SDTfHv5h", + "3 | Chain : Edgeware", + "4 | Nonce : 2339", + "5 | Tip : EDG 0.00000000123456789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 358, + "name": "Treasury_Propose_spend", + "blob": "0f000b63ce64c10c05001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac6d5039101002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Treasury : Propose spend", + "1 | Amount : EDG 0.000005552342355555", + "2 | Beneficiary [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "2 | Beneficiary [2/2] : SDTfHv5h" + ], + "output_expert": [ + "0 | Treasury : Propose spend", + "1 | Amount : EDG 0.000005552342355555", + "2 | Beneficiary [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "2 | Beneficiary [2/2] : SDTfHv5h", + "3 | Chain : Edgeware", + "4 | Nonce : 100", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 359, + "name": "Treasury_Propose_spend", + "blob": "0f0003d2029649001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac6d503ae11030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Treasury : Propose spend", + "1 | Amount : EDG 0.00000000123456789", + "2 | Beneficiary [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "2 | Beneficiary [2/2] : SDTfHv5h", + "3 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Treasury : Propose spend", + "1 | Amount : EDG 0.00000000123456789", + "2 | Beneficiary [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "2 | Beneficiary [2/2] : SDTfHv5h", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Tip : EDG 0.00000000123456789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 360, + "name": "Treasury_Propose_spend", + "blob": "0f008ed73e0d001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac6d50391018ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Treasury : Propose spend", + "1 | Amount : EDG 0.000000000055555555", + "2 | Beneficiary [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "2 | Beneficiary [2/2] : SDTfHv5h", + "3 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Treasury : Propose spend", + "1 | Amount : EDG 0.000000000055555555", + "2 | Beneficiary [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "2 | Beneficiary [2/2] : SDTfHv5h", + "3 | Chain : Edgeware", + "4 | Nonce : 100", + "5 | Tip : EDG 0.000000000055555555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 361, + "name": "Treasury_Reject_proposal", + "blob": "0f0125c1d503040b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Treasury : Reject proposal", + "1 | Proposal id : 12361", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Treasury : Reject proposal", + "1 | Proposal id : 12361", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 362, + "name": "Treasury_Reject_proposal", + "blob": "0f01ce830700d5030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Treasury : Reject proposal", + "1 | Proposal id : 123123", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Treasury : Reject proposal", + "1 | Proposal id : 123123", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 363, + "name": "Treasury_Reject_proposal", + "blob": "0f016d0fd503ae1103000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Treasury : Reject proposal", + "1 | Proposal id : 987", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Treasury : Reject proposal", + "1 | Proposal id : 987", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 364, + "name": "Treasury_Reject_proposal", + "blob": "0f016d0fd503008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Treasury : Reject proposal", + "1 | Proposal id : 987", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Treasury : Reject proposal", + "1 | Proposal id : 987", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 365, + "name": "Treasury_Reject_proposal", + "blob": "0f0100d5030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Treasury : Reject proposal", + "1 | Proposal id : 0", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Treasury : Reject proposal", + "1 | Proposal id : 0", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 366, + "name": "Treasury_Approve_proposal", + "blob": "0f02ce830700d50391016d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Treasury : Approve proposal", + "1 | Proposal id : 123123", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Treasury : Approve proposal", + "1 | Proposal id : 123123", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 367, + "name": "Treasury_Approve_proposal", + "blob": "0f026d0fd503008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Treasury : Approve proposal", + "1 | Proposal id : 987", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Treasury : Approve proposal", + "1 | Proposal id : 987", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 368, + "name": "Treasury_Approve_proposal", + "blob": "0f026d0fd503ae11030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Treasury : Approve proposal", + "1 | Proposal id : 987", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Treasury : Approve proposal", + "1 | Proposal id : 987", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 369, + "name": "Treasury_Approve_proposal", + "blob": "0f02ce830700d503ae11030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Treasury : Approve proposal", + "1 | Proposal id : 123123", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Treasury : Approve proposal", + "1 | Proposal id : 123123", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 370, + "name": "Treasury_Approve_proposal", + "blob": "0f026d0fd50300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Treasury : Approve proposal", + "1 | Proposal id : 987" + ], + "output_expert": [ + "0 | Treasury : Approve proposal", + "1 | Proposal id : 987", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 371, + "name": "Contracts_Put_code", + "blob": "1001010261b2f48ba11a70bce18ae644216231b55ebce5f950084c360402b60e4b224f0eafa8316529b77c12e5acaba3884505751fbe0d7a91d7368f0e599f5f3aa2362f7b6dd94aa1be2b309ab126ae960f349cbbae09eb005c7783177aef11a55513d97edc49fd36aa3b6aa83997aba8ad68e0c0ebef22833a061ce1d2096b7c6ef926d503ae1103006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Contracts : Put code", + "1 | Code [1/7] : 61b2f48ba11a70bce18ae644216231b55ebce5", + "1 | Code [2/7] : f950084c360402b60e4b224f0eafa8316529b7", + "1 | Code [3/7] : 7c12e5acaba3884505751fbe0d7a91d7368f0e", + "1 | Code [4/7] : 599f5f3aa2362f7b6dd94aa1be2b309ab126ae", + "1 | Code [5/7] : 960f349cbbae09eb005c7783177aef11a55513", + "1 | Code [6/7] : d97edc49fd36aa3b6aa83997aba8ad68e0c0eb", + "1 | Code [7/7] : ef22833a061ce1d2096b7c6ef926", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Contracts : Put code", + "1 | Code [1/7] : 61b2f48ba11a70bce18ae644216231b55ebce5", + "1 | Code [2/7] : f950084c360402b60e4b224f0eafa8316529b7", + "1 | Code [3/7] : 7c12e5acaba3884505751fbe0d7a91d7368f0e", + "1 | Code [4/7] : 599f5f3aa2362f7b6dd94aa1be2b309ab126ae", + "1 | Code [5/7] : 960f349cbbae09eb005c7783177aef11a55513", + "1 | Code [6/7] : d97edc49fd36aa3b6aa83997aba8ad68e0c0eb", + "1 | Code [7/7] : ef22833a061ce1d2096b7c6ef926", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 372, + "name": "Contracts_Put_code", + "blob": "1001010234988545b1ec4582a1fb89c9de980f64f2b3b06a3fcdf8ad8262cac3055dceb6e798126532162a71974bb41dfc71b564df6ffc276836d6ce8f649fe8267b4d5346d223b167ff7df85f3e7989f20b0a37c4615a1d06b6182622c0d50bb8825a71d710aafb00f7d703f3daed9e77896b87e14cf12c7cca8efcec263bb7128217e7d503ae1103000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Contracts : Put code", + "1 | Code [1/7] : 34988545b1ec4582a1fb89c9de980f64f2b3b0", + "1 | Code [2/7] : 6a3fcdf8ad8262cac3055dceb6e79812653216", + "1 | Code [3/7] : 2a71974bb41dfc71b564df6ffc276836d6ce8f", + "1 | Code [4/7] : 649fe8267b4d5346d223b167ff7df85f3e7989", + "1 | Code [5/7] : f20b0a37c4615a1d06b6182622c0d50bb8825a", + "1 | Code [6/7] : 71d710aafb00f7d703f3daed9e77896b87e14c", + "1 | Code [7/7] : f12c7cca8efcec263bb7128217e7", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Contracts : Put code", + "1 | Code [1/7] : 34988545b1ec4582a1fb89c9de980f64f2b3b0", + "1 | Code [2/7] : 6a3fcdf8ad8262cac3055dceb6e79812653216", + "1 | Code [3/7] : 2a71974bb41dfc71b564df6ffc276836d6ce8f", + "1 | Code [4/7] : 649fe8267b4d5346d223b167ff7df85f3e7989", + "1 | Code [5/7] : f20b0a37c4615a1d06b6182622c0d50bb8825a", + "1 | Code [6/7] : 71d710aafb00f7d703f3daed9e77896b87e14c", + "1 | Code [7/7] : f12c7cca8efcec263bb7128217e7", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 373, + "name": "Contracts_Put_code", + "blob": "1001010261b2f48ba11a70bce18ae644216231b55ebce5f950084c360402b60e4b224f0eafa8316529b77c12e5acaba3884505751fbe0d7a91d7368f0e599f5f3aa2362f7b6dd94aa1be2b309ab126ae960f349cbbae09eb005c7783177aef11a55513d97edc49fd36aa3b6aa83997aba8ad68e0c0ebef22833a061ce1d2096b7c6ef926d5030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Contracts : Put code", + "1 | Code [1/7] : 61b2f48ba11a70bce18ae644216231b55ebce5", + "1 | Code [2/7] : f950084c360402b60e4b224f0eafa8316529b7", + "1 | Code [3/7] : 7c12e5acaba3884505751fbe0d7a91d7368f0e", + "1 | Code [4/7] : 599f5f3aa2362f7b6dd94aa1be2b309ab126ae", + "1 | Code [5/7] : 960f349cbbae09eb005c7783177aef11a55513", + "1 | Code [6/7] : d97edc49fd36aa3b6aa83997aba8ad68e0c0eb", + "1 | Code [7/7] : ef22833a061ce1d2096b7c6ef926", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Contracts : Put code", + "1 | Code [1/7] : 61b2f48ba11a70bce18ae644216231b55ebce5", + "1 | Code [2/7] : f950084c360402b60e4b224f0eafa8316529b7", + "1 | Code [3/7] : 7c12e5acaba3884505751fbe0d7a91d7368f0e", + "1 | Code [4/7] : 599f5f3aa2362f7b6dd94aa1be2b309ab126ae", + "1 | Code [5/7] : 960f349cbbae09eb005c7783177aef11a55513", + "1 | Code [6/7] : d97edc49fd36aa3b6aa83997aba8ad68e0c0eb", + "1 | Code [7/7] : ef22833a061ce1d2096b7c6ef926", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 374, + "name": "Contracts_Put_code", + "blob": "100180008bca3e10d17b2cfc71ef145d9b2d5d4a3dfb208474480304b3080a2e4131c1d5038d2403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Contracts : Put code", + "1 | Code [1/2] : 008bca3e10d17b2cfc71ef145d9b2d5d4a3dfb", + "1 | Code [2/2] : 208474480304b3080a2e4131c1", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Contracts : Put code", + "1 | Code [1/2] : 008bca3e10d17b2cfc71ef145d9b2d5d4a3dfb", + "1 | Code [2/2] : 208474480304b3080a2e4131c1", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 375, + "name": "Contracts_Put_code", + "blob": "1001010261b2f48ba11a70bce18ae644216231b55ebce5f950084c360402b60e4b224f0eafa8316529b77c12e5acaba3884505751fbe0d7a91d7368f0e599f5f3aa2362f7b6dd94aa1be2b309ab126ae960f349cbbae09eb005c7783177aef11a55513d97edc49fd36aa3b6aa83997aba8ad68e0c0ebef22833a061ce1d2096b7c6ef926d50391016d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Contracts : Put code", + "1 | Code [1/7] : 61b2f48ba11a70bce18ae644216231b55ebce5", + "1 | Code [2/7] : f950084c360402b60e4b224f0eafa8316529b7", + "1 | Code [3/7] : 7c12e5acaba3884505751fbe0d7a91d7368f0e", + "1 | Code [4/7] : 599f5f3aa2362f7b6dd94aa1be2b309ab126ae", + "1 | Code [5/7] : 960f349cbbae09eb005c7783177aef11a55513", + "1 | Code [6/7] : d97edc49fd36aa3b6aa83997aba8ad68e0c0eb", + "1 | Code [7/7] : ef22833a061ce1d2096b7c6ef926", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Contracts : Put code", + "1 | Code [1/7] : 61b2f48ba11a70bce18ae644216231b55ebce5", + "1 | Code [2/7] : f950084c360402b60e4b224f0eafa8316529b7", + "1 | Code [3/7] : 7c12e5acaba3884505751fbe0d7a91d7368f0e", + "1 | Code [4/7] : 599f5f3aa2362f7b6dd94aa1be2b309ab126ae", + "1 | Code [5/7] : 960f349cbbae09eb005c7783177aef11a55513", + "1 | Code [6/7] : d97edc49fd36aa3b6aa83997aba8ad68e0c0eb", + "1 | Code [7/7] : ef22833a061ce1d2096b7c6ef926", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 376, + "name": "Contracts_Call", + "blob": "1002001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac603d2029649000102cf6e0bddae4392c389df38f86156f24ceb15d22310703852c1d3b33ad2609cbb81229cbd86889c15cdf14da89f5ed5bf0045e7d5a4b1866c1f902bbd52e12a4e59968f9fb25166055db3eee594d7b1e7336aeb8aaf3fddb768aa81f2b5423c8d3abd4242271fdb7745efaffc4731095cf3994e1a6a75de0680e881702f430fd6d5038d2433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Contracts : Call", + "1 | Dest [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Dest [2/2] : SDTfHv5h", + "2 | Amount : EDG 0.00000000123456789", + "3 | Gas limit : 0", + "4 | Data [1/7] : cf6e0bddae4392c389df38f86156f24ceb15d2", + "4 | Data [2/7] : 2310703852c1d3b33ad2609cbb81229cbd8688", + "4 | Data [3/7] : 9c15cdf14da89f5ed5bf0045e7d5a4b1866c1f", + "4 | Data [4/7] : 902bbd52e12a4e59968f9fb25166055db3eee5", + "4 | Data [5/7] : 94d7b1e7336aeb8aaf3fddb768aa81f2b5423c", + "4 | Data [6/7] : 8d3abd4242271fdb7745efaffc4731095cf399", + "4 | Data [7/7] : 4e1a6a75de0680e881702f430fd6", + "5 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "5 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Contracts : Call", + "1 | Dest [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Dest [2/2] : SDTfHv5h", + "2 | Amount : EDG 0.00000000123456789", + "3 | Gas limit : 0", + "4 | Data [1/7] : cf6e0bddae4392c389df38f86156f24ceb15d2", + "4 | Data [2/7] : 2310703852c1d3b33ad2609cbb81229cbd8688", + "4 | Data [3/7] : 9c15cdf14da89f5ed5bf0045e7d5a4b1866c1f", + "4 | Data [4/7] : 902bbd52e12a4e59968f9fb25166055db3eee5", + "4 | Data [5/7] : 94d7b1e7336aeb8aaf3fddb768aa81f2b5423c", + "4 | Data [6/7] : 8d3abd4242271fdb7745efaffc4731095cf399", + "4 | Data [7/7] : 4e1a6a75de0680e881702f430fd6", + "5 | Chain : Edgeware", + "6 | Nonce : 2339", + "7 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "7 | Tip [2/2] : 56789", + "8 | Era Phase : 61", + "9 | Era Period : 64", + "10 | Block [1/2] : 00000000000000000000000000000000000000", + "10 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 377, + "name": "Contracts_Call", + "blob": "1002001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac60b63ce64c10c050080008bca3e10d17b2cfc71ef145d9b2d5d4a3dfb208474480304b3080a2e4131c1d5030433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Contracts : Call", + "1 | Dest [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Dest [2/2] : SDTfHv5h", + "2 | Amount : EDG 0.000005552342355555", + "3 | Gas limit : 0", + "4 | Data [1/2] : 008bca3e10d17b2cfc71ef145d9b2d5d4a3dfb", + "4 | Data [2/2] : 208474480304b3080a2e4131c1", + "5 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "5 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Contracts : Call", + "1 | Dest [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Dest [2/2] : SDTfHv5h", + "2 | Amount : EDG 0.000005552342355555", + "3 | Gas limit : 0", + "4 | Data [1/2] : 008bca3e10d17b2cfc71ef145d9b2d5d4a3dfb", + "4 | Data [2/2] : 208474480304b3080a2e4131c1", + "5 | Chain : Edgeware", + "6 | Nonce : 1", + "7 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "7 | Tip [2/2] : 56789", + "8 | Era Phase : 61", + "9 | Era Period : 64", + "10 | Block [1/2] : 00000000000000000000000000000000000000", + "10 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 378, + "name": "Contracts_Call", + "blob": "1002001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac68ed73e0d000101b2c41fb0ccedfa1e14147b49507e856e54afb2edb7e48c241d45b2f98b0dd76f46f79a541c9e9db5f54389a198aa542e79eb61036cc2f5818e9acb2143a842f4d503ae11030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Contracts : Call", + "1 | Dest [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Dest [2/2] : SDTfHv5h", + "2 | Amount : EDG 0.000000000055555555", + "3 | Gas limit : 0", + "4 | Data [1/4] : b2c41fb0ccedfa1e14147b49507e856e54afb2", + "4 | Data [2/4] : edb7e48c241d45b2f98b0dd76f46f79a541c9e", + "4 | Data [3/4] : 9db5f54389a198aa542e79eb61036cc2f5818e", + "4 | Data [4/4] : 9acb2143a842f4", + "5 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Contracts : Call", + "1 | Dest [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Dest [2/2] : SDTfHv5h", + "2 | Amount : EDG 0.000000000055555555", + "3 | Gas limit : 0", + "4 | Data [1/4] : b2c41fb0ccedfa1e14147b49507e856e54afb2", + "4 | Data [2/4] : edb7e48c241d45b2f98b0dd76f46f79a541c9e", + "4 | Data [3/4] : 9db5f54389a198aa542e79eb61036cc2f5818e", + "4 | Data [4/4] : 9acb2143a842f4", + "5 | Chain : Edgeware", + "6 | Nonce : 50283", + "7 | Tip : EDG 0.00000000123456789", + "8 | Era Phase : 61", + "9 | Era Period : 64", + "10 | Block [1/2] : 00000000000000000000000000000000000000", + "10 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 379, + "name": "Contracts_Call", + "blob": "1002001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac60b63ce64c10c0500010234988545b1ec4582a1fb89c9de980f64f2b3b06a3fcdf8ad8262cac3055dceb6e798126532162a71974bb41dfc71b564df6ffc276836d6ce8f649fe8267b4d5346d223b167ff7df85f3e7989f20b0a37c4615a1d06b6182622c0d50bb8825a71d710aafb00f7d703f3daed9e77896b87e14cf12c7cca8efcec263bb7128217e7d503910103d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Contracts : Call", + "1 | Dest [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Dest [2/2] : SDTfHv5h", + "2 | Amount : EDG 0.000005552342355555", + "3 | Gas limit : 0", + "4 | Data [1/7] : 34988545b1ec4582a1fb89c9de980f64f2b3b0", + "4 | Data [2/7] : 6a3fcdf8ad8262cac3055dceb6e79812653216", + "4 | Data [3/7] : 2a71974bb41dfc71b564df6ffc276836d6ce8f", + "4 | Data [4/7] : 649fe8267b4d5346d223b167ff7df85f3e7989", + "4 | Data [5/7] : f20b0a37c4615a1d06b6182622c0d50bb8825a", + "4 | Data [6/7] : 71d710aafb00f7d703f3daed9e77896b87e14c", + "4 | Data [7/7] : f12c7cca8efcec263bb7128217e7", + "5 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Contracts : Call", + "1 | Dest [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Dest [2/2] : SDTfHv5h", + "2 | Amount : EDG 0.000005552342355555", + "3 | Gas limit : 0", + "4 | Data [1/7] : 34988545b1ec4582a1fb89c9de980f64f2b3b0", + "4 | Data [2/7] : 6a3fcdf8ad8262cac3055dceb6e79812653216", + "4 | Data [3/7] : 2a71974bb41dfc71b564df6ffc276836d6ce8f", + "4 | Data [4/7] : 649fe8267b4d5346d223b167ff7df85f3e7989", + "4 | Data [5/7] : f20b0a37c4615a1d06b6182622c0d50bb8825a", + "4 | Data [6/7] : 71d710aafb00f7d703f3daed9e77896b87e14c", + "4 | Data [7/7] : f12c7cca8efcec263bb7128217e7", + "5 | Chain : Edgeware", + "6 | Nonce : 100", + "7 | Tip : EDG 0.00000000123456789", + "8 | Era Phase : 61", + "9 | Era Period : 64", + "10 | Block [1/2] : 00000000000000000000000000000000000000", + "10 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 380, + "name": "Contracts_Call", + "blob": "1002001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac603d202964900010104c7666eb5fd586d1a57965e62578472fcde1857325a569c0bc8ab7ae48f78605c8ab160bf17fba894f0e596590387b45a0fa2bac6da69a1a5ce6ee10010fff1d503910103d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Contracts : Call", + "1 | Dest [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Dest [2/2] : SDTfHv5h", + "2 | Amount : EDG 0.00000000123456789", + "3 | Gas limit : 0", + "4 | Data [1/4] : 04c7666eb5fd586d1a57965e62578472fcde18", + "4 | Data [2/4] : 57325a569c0bc8ab7ae48f78605c8ab160bf17", + "4 | Data [3/4] : fba894f0e596590387b45a0fa2bac6da69a1a5", + "4 | Data [4/4] : ce6ee10010fff1", + "5 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Contracts : Call", + "1 | Dest [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Dest [2/2] : SDTfHv5h", + "2 | Amount : EDG 0.00000000123456789", + "3 | Gas limit : 0", + "4 | Data [1/4] : 04c7666eb5fd586d1a57965e62578472fcde18", + "4 | Data [2/4] : 57325a569c0bc8ab7ae48f78605c8ab160bf17", + "4 | Data [3/4] : fba894f0e596590387b45a0fa2bac6da69a1a5", + "4 | Data [4/4] : ce6ee10010fff1", + "5 | Chain : Edgeware", + "6 | Nonce : 100", + "7 | Tip : EDG 0.00000000123456789", + "8 | Era Phase : 61", + "9 | Era Period : 64", + "10 | Block [1/2] : 00000000000000000000000000000000000000", + "10 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 381, + "name": "Contracts_Instantiate", + "blob": "10038ed73e0d000000000000000000000000000000000000000000000000000000000000000000010234988545b1ec4582a1fb89c9de980f64f2b3b06a3fcdf8ad8262cac3055dceb6e798126532162a71974bb41dfc71b564df6ffc276836d6ce8f649fe8267b4d5346d223b167ff7df85f3e7989f20b0a37c4615a1d06b6182622c0d50bb8825a71d710aafb00f7d703f3daed9e77896b87e14cf12c7cca8efcec263bb7128217e7010261b2f48ba11a70bce18ae644216231b55ebce5f950084c360402b60e4b224f0eafa8316529b77c12e5acaba3884505751fbe0d7a91d7368f0e599f5f3aa2362f7b6dd94aa1be2b309ab126ae960f349cbbae09eb005c7783177aef11a55513d97edc49fd36aa3b6aa83997aba8ad68e0c0ebef22833a061ce1d2096b7c6ef926d503910133158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Contracts : Instantiate", + "1 | Endowment : EDG 0.000000000055555555", + "2 | Gas limit : 0", + "3 | Code hash [1/2] : 00000000000000000000000000000000000000", + "3 | Code hash [2/2] : 00000000000000000000000000", + "4 | Data [1/7] : 34988545b1ec4582a1fb89c9de980f64f2b3b0", + "4 | Data [2/7] : 6a3fcdf8ad8262cac3055dceb6e79812653216", + "4 | Data [3/7] : 2a71974bb41dfc71b564df6ffc276836d6ce8f", + "4 | Data [4/7] : 649fe8267b4d5346d223b167ff7df85f3e7989", + "4 | Data [5/7] : f20b0a37c4615a1d06b6182622c0d50bb8825a", + "4 | Data [6/7] : 71d710aafb00f7d703f3daed9e77896b87e14c", + "4 | Data [7/7] : f12c7cca8efcec263bb7128217e7", + "5 | Salt [1/7] : 61b2f48ba11a70bce18ae644216231b55ebce5", + "5 | Salt [2/7] : f950084c360402b60e4b224f0eafa8316529b7", + "5 | Salt [3/7] : 7c12e5acaba3884505751fbe0d7a91d7368f0e", + "5 | Salt [4/7] : 599f5f3aa2362f7b6dd94aa1be2b309ab126ae", + "5 | Salt [5/7] : 960f349cbbae09eb005c7783177aef11a55513", + "5 | Salt [6/7] : d97edc49fd36aa3b6aa83997aba8ad68e0c0eb", + "5 | Salt [7/7] : ef22833a061ce1d2096b7c6ef926", + "6 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "6 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Contracts : Instantiate", + "1 | Endowment : EDG 0.000000000055555555", + "2 | Gas limit : 0", + "3 | Code hash [1/2] : 00000000000000000000000000000000000000", + "3 | Code hash [2/2] : 00000000000000000000000000", + "4 | Data [1/7] : 34988545b1ec4582a1fb89c9de980f64f2b3b0", + "4 | Data [2/7] : 6a3fcdf8ad8262cac3055dceb6e79812653216", + "4 | Data [3/7] : 2a71974bb41dfc71b564df6ffc276836d6ce8f", + "4 | Data [4/7] : 649fe8267b4d5346d223b167ff7df85f3e7989", + "4 | Data [5/7] : f20b0a37c4615a1d06b6182622c0d50bb8825a", + "4 | Data [6/7] : 71d710aafb00f7d703f3daed9e77896b87e14c", + "4 | Data [7/7] : f12c7cca8efcec263bb7128217e7", + "5 | Salt [1/7] : 61b2f48ba11a70bce18ae644216231b55ebce5", + "5 | Salt [2/7] : f950084c360402b60e4b224f0eafa8316529b7", + "5 | Salt [3/7] : 7c12e5acaba3884505751fbe0d7a91d7368f0e", + "5 | Salt [4/7] : 599f5f3aa2362f7b6dd94aa1be2b309ab126ae", + "5 | Salt [5/7] : 960f349cbbae09eb005c7783177aef11a55513", + "5 | Salt [6/7] : d97edc49fd36aa3b6aa83997aba8ad68e0c0eb", + "5 | Salt [7/7] : ef22833a061ce1d2096b7c6ef926", + "6 | Chain : Edgeware", + "7 | Nonce : 100", + "8 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "8 | Tip [2/2] : 56789", + "9 | Era Phase : 61", + "10 | Era Period : 64", + "11 | Block [1/2] : 00000000000000000000000000000000000000", + "11 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 382, + "name": "Contracts_Instantiate", + "blob": "10038ed73e0d000000000000000000000000000000000000000000000000000000000000000000010104c7666eb5fd586d1a57965e62578472fcde1857325a569c0bc8ab7ae48f78605c8ab160bf17fba894f0e596590387b45a0fa2bac6da69a1a5ce6ee10010fff1010261b2f48ba11a70bce18ae644216231b55ebce5f950084c360402b60e4b224f0eafa8316529b77c12e5acaba3884505751fbe0d7a91d7368f0e599f5f3aa2362f7b6dd94aa1be2b309ab126ae960f349cbbae09eb005c7783177aef11a55513d97edc49fd36aa3b6aa83997aba8ad68e0c0ebef22833a061ce1d2096b7c6ef926d5030403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Contracts : Instantiate", + "1 | Endowment : EDG 0.000000000055555555", + "2 | Gas limit : 0", + "3 | Code hash [1/2] : 00000000000000000000000000000000000000", + "3 | Code hash [2/2] : 00000000000000000000000000", + "4 | Data [1/4] : 04c7666eb5fd586d1a57965e62578472fcde18", + "4 | Data [2/4] : 57325a569c0bc8ab7ae48f78605c8ab160bf17", + "4 | Data [3/4] : fba894f0e596590387b45a0fa2bac6da69a1a5", + "4 | Data [4/4] : ce6ee10010fff1", + "5 | Salt [1/7] : 61b2f48ba11a70bce18ae644216231b55ebce5", + "5 | Salt [2/7] : f950084c360402b60e4b224f0eafa8316529b7", + "5 | Salt [3/7] : 7c12e5acaba3884505751fbe0d7a91d7368f0e", + "5 | Salt [4/7] : 599f5f3aa2362f7b6dd94aa1be2b309ab126ae", + "5 | Salt [5/7] : 960f349cbbae09eb005c7783177aef11a55513", + "5 | Salt [6/7] : d97edc49fd36aa3b6aa83997aba8ad68e0c0eb", + "5 | Salt [7/7] : ef22833a061ce1d2096b7c6ef926", + "6 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Contracts : Instantiate", + "1 | Endowment : EDG 0.000000000055555555", + "2 | Gas limit : 0", + "3 | Code hash [1/2] : 00000000000000000000000000000000000000", + "3 | Code hash [2/2] : 00000000000000000000000000", + "4 | Data [1/4] : 04c7666eb5fd586d1a57965e62578472fcde18", + "4 | Data [2/4] : 57325a569c0bc8ab7ae48f78605c8ab160bf17", + "4 | Data [3/4] : fba894f0e596590387b45a0fa2bac6da69a1a5", + "4 | Data [4/4] : ce6ee10010fff1", + "5 | Salt [1/7] : 61b2f48ba11a70bce18ae644216231b55ebce5", + "5 | Salt [2/7] : f950084c360402b60e4b224f0eafa8316529b7", + "5 | Salt [3/7] : 7c12e5acaba3884505751fbe0d7a91d7368f0e", + "5 | Salt [4/7] : 599f5f3aa2362f7b6dd94aa1be2b309ab126ae", + "5 | Salt [5/7] : 960f349cbbae09eb005c7783177aef11a55513", + "5 | Salt [6/7] : d97edc49fd36aa3b6aa83997aba8ad68e0c0eb", + "5 | Salt [7/7] : ef22833a061ce1d2096b7c6ef926", + "6 | Chain : Edgeware", + "7 | Nonce : 1", + "8 | Tip : EDG 0.00000000123456789", + "9 | Era Phase : 61", + "10 | Era Period : 64", + "11 | Block [1/2] : 00000000000000000000000000000000000000", + "11 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 383, + "name": "Contracts_Instantiate", + "blob": "100303d202964900000000000000000000000000000000000000000000000000000000000000000080008bca3e10d17b2cfc71ef145d9b2d5d4a3dfb208474480304b3080a2e4131c1010261b2f48ba11a70bce18ae644216231b55ebce5f950084c360402b60e4b224f0eafa8316529b77c12e5acaba3884505751fbe0d7a91d7368f0e599f5f3aa2362f7b6dd94aa1be2b309ab126ae960f349cbbae09eb005c7783177aef11a55513d97edc49fd36aa3b6aa83997aba8ad68e0c0ebef22833a061ce1d2096b7c6ef926d5038d2403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Contracts : Instantiate", + "1 | Endowment : EDG 0.00000000123456789", + "2 | Gas limit : 0", + "3 | Code hash [1/2] : 00000000000000000000000000000000000000", + "3 | Code hash [2/2] : 00000000000000000000000000", + "4 | Data [1/2] : 008bca3e10d17b2cfc71ef145d9b2d5d4a3dfb", + "4 | Data [2/2] : 208474480304b3080a2e4131c1", + "5 | Salt [1/7] : 61b2f48ba11a70bce18ae644216231b55ebce5", + "5 | Salt [2/7] : f950084c360402b60e4b224f0eafa8316529b7", + "5 | Salt [3/7] : 7c12e5acaba3884505751fbe0d7a91d7368f0e", + "5 | Salt [4/7] : 599f5f3aa2362f7b6dd94aa1be2b309ab126ae", + "5 | Salt [5/7] : 960f349cbbae09eb005c7783177aef11a55513", + "5 | Salt [6/7] : d97edc49fd36aa3b6aa83997aba8ad68e0c0eb", + "5 | Salt [7/7] : ef22833a061ce1d2096b7c6ef926", + "6 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Contracts : Instantiate", + "1 | Endowment : EDG 0.00000000123456789", + "2 | Gas limit : 0", + "3 | Code hash [1/2] : 00000000000000000000000000000000000000", + "3 | Code hash [2/2] : 00000000000000000000000000", + "4 | Data [1/2] : 008bca3e10d17b2cfc71ef145d9b2d5d4a3dfb", + "4 | Data [2/2] : 208474480304b3080a2e4131c1", + "5 | Salt [1/7] : 61b2f48ba11a70bce18ae644216231b55ebce5", + "5 | Salt [2/7] : f950084c360402b60e4b224f0eafa8316529b7", + "5 | Salt [3/7] : 7c12e5acaba3884505751fbe0d7a91d7368f0e", + "5 | Salt [4/7] : 599f5f3aa2362f7b6dd94aa1be2b309ab126ae", + "5 | Salt [5/7] : 960f349cbbae09eb005c7783177aef11a55513", + "5 | Salt [6/7] : d97edc49fd36aa3b6aa83997aba8ad68e0c0eb", + "5 | Salt [7/7] : ef22833a061ce1d2096b7c6ef926", + "6 | Chain : Edgeware", + "7 | Nonce : 2339", + "8 | Tip : EDG 0.00000000123456789", + "9 | Era Phase : 61", + "10 | Era Period : 64", + "11 | Block [1/2] : 00000000000000000000000000000000000000", + "11 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 384, + "name": "Contracts_Instantiate", + "blob": "100300000000000000000000000000000000000000000000000000000000000000000000010104c7666eb5fd586d1a57965e62578472fcde1857325a569c0bc8ab7ae48f78605c8ab160bf17fba894f0e596590387b45a0fa2bac6da69a1a5ce6ee10010fff10101b2c41fb0ccedfa1e14147b49507e856e54afb2edb7e48c241d45b2f98b0dd76f46f79a541c9e9db5f54389a198aa542e79eb61036cc2f5818e9acb2143a842f4d503006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Contracts : Instantiate", + "1 | Endowment : EDG 0.0", + "2 | Gas limit : 0", + "3 | Code hash [1/2] : 00000000000000000000000000000000000000", + "3 | Code hash [2/2] : 00000000000000000000000000", + "4 | Data [1/4] : 04c7666eb5fd586d1a57965e62578472fcde18", + "4 | Data [2/4] : 57325a569c0bc8ab7ae48f78605c8ab160bf17", + "4 | Data [3/4] : fba894f0e596590387b45a0fa2bac6da69a1a5", + "4 | Data [4/4] : ce6ee10010fff1", + "5 | Salt [1/4] : b2c41fb0ccedfa1e14147b49507e856e54afb2", + "5 | Salt [2/4] : edb7e48c241d45b2f98b0dd76f46f79a541c9e", + "5 | Salt [3/4] : 9db5f54389a198aa542e79eb61036cc2f5818e", + "5 | Salt [4/4] : 9acb2143a842f4", + "6 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Contracts : Instantiate", + "1 | Endowment : EDG 0.0", + "2 | Gas limit : 0", + "3 | Code hash [1/2] : 00000000000000000000000000000000000000", + "3 | Code hash [2/2] : 00000000000000000000000000", + "4 | Data [1/4] : 04c7666eb5fd586d1a57965e62578472fcde18", + "4 | Data [2/4] : 57325a569c0bc8ab7ae48f78605c8ab160bf17", + "4 | Data [3/4] : fba894f0e596590387b45a0fa2bac6da69a1a5", + "4 | Data [4/4] : ce6ee10010fff1", + "5 | Salt [1/4] : b2c41fb0ccedfa1e14147b49507e856e54afb2", + "5 | Salt [2/4] : edb7e48c241d45b2f98b0dd76f46f79a541c9e", + "5 | Salt [3/4] : 9db5f54389a198aa542e79eb61036cc2f5818e", + "5 | Salt [4/4] : 9acb2143a842f4", + "6 | Chain : Edgeware", + "7 | Nonce : 0", + "8 | Tip : EDG 0.000000000000000987", + "9 | Era Phase : 61", + "10 | Era Period : 64", + "11 | Block [1/2] : 00000000000000000000000000000000000000", + "11 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 385, + "name": "Contracts_Instantiate", + "blob": "100300000000000000000000000000000000000000000000000000000000000000000000010261b2f48ba11a70bce18ae644216231b55ebce5f950084c360402b60e4b224f0eafa8316529b77c12e5acaba3884505751fbe0d7a91d7368f0e599f5f3aa2362f7b6dd94aa1be2b309ab126ae960f349cbbae09eb005c7783177aef11a55513d97edc49fd36aa3b6aa83997aba8ad68e0c0ebef22833a061ce1d2096b7c6ef926010261b2f48ba11a70bce18ae644216231b55ebce5f950084c360402b60e4b224f0eafa8316529b77c12e5acaba3884505751fbe0d7a91d7368f0e599f5f3aa2362f7b6dd94aa1be2b309ab126ae960f349cbbae09eb005c7783177aef11a55513d97edc49fd36aa3b6aa83997aba8ad68e0c0ebef22833a061ce1d2096b7c6ef926d5038d24002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Contracts : Instantiate", + "1 | Endowment : EDG 0.0", + "2 | Gas limit : 0", + "3 | Code hash [1/2] : 00000000000000000000000000000000000000", + "3 | Code hash [2/2] : 00000000000000000000000000", + "4 | Data [1/7] : 61b2f48ba11a70bce18ae644216231b55ebce5", + "4 | Data [2/7] : f950084c360402b60e4b224f0eafa8316529b7", + "4 | Data [3/7] : 7c12e5acaba3884505751fbe0d7a91d7368f0e", + "4 | Data [4/7] : 599f5f3aa2362f7b6dd94aa1be2b309ab126ae", + "4 | Data [5/7] : 960f349cbbae09eb005c7783177aef11a55513", + "4 | Data [6/7] : d97edc49fd36aa3b6aa83997aba8ad68e0c0eb", + "4 | Data [7/7] : ef22833a061ce1d2096b7c6ef926", + "5 | Salt [1/7] : 61b2f48ba11a70bce18ae644216231b55ebce5", + "5 | Salt [2/7] : f950084c360402b60e4b224f0eafa8316529b7", + "5 | Salt [3/7] : 7c12e5acaba3884505751fbe0d7a91d7368f0e", + "5 | Salt [4/7] : 599f5f3aa2362f7b6dd94aa1be2b309ab126ae", + "5 | Salt [5/7] : 960f349cbbae09eb005c7783177aef11a55513", + "5 | Salt [6/7] : d97edc49fd36aa3b6aa83997aba8ad68e0c0eb", + "5 | Salt [7/7] : ef22833a061ce1d2096b7c6ef926" + ], + "output_expert": [ + "0 | Contracts : Instantiate", + "1 | Endowment : EDG 0.0", + "2 | Gas limit : 0", + "3 | Code hash [1/2] : 00000000000000000000000000000000000000", + "3 | Code hash [2/2] : 00000000000000000000000000", + "4 | Data [1/7] : 61b2f48ba11a70bce18ae644216231b55ebce5", + "4 | Data [2/7] : f950084c360402b60e4b224f0eafa8316529b7", + "4 | Data [3/7] : 7c12e5acaba3884505751fbe0d7a91d7368f0e", + "4 | Data [4/7] : 599f5f3aa2362f7b6dd94aa1be2b309ab126ae", + "4 | Data [5/7] : 960f349cbbae09eb005c7783177aef11a55513", + "4 | Data [6/7] : d97edc49fd36aa3b6aa83997aba8ad68e0c0eb", + "4 | Data [7/7] : ef22833a061ce1d2096b7c6ef926", + "5 | Salt [1/7] : 61b2f48ba11a70bce18ae644216231b55ebce5", + "5 | Salt [2/7] : f950084c360402b60e4b224f0eafa8316529b7", + "5 | Salt [3/7] : 7c12e5acaba3884505751fbe0d7a91d7368f0e", + "5 | Salt [4/7] : 599f5f3aa2362f7b6dd94aa1be2b309ab126ae", + "5 | Salt [5/7] : 960f349cbbae09eb005c7783177aef11a55513", + "5 | Salt [6/7] : d97edc49fd36aa3b6aa83997aba8ad68e0c0eb", + "5 | Salt [7/7] : ef22833a061ce1d2096b7c6ef926", + "6 | Chain : Edgeware", + "7 | Nonce : 2339", + "8 | Era Phase : 61", + "9 | Era Period : 64", + "10 | Block [1/2] : 00000000000000000000000000000000000000", + "10 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 386, + "name": "Contracts_Claim_surcharge", + "blob": "1004fc36502b06380fd21101013d7b678acf7ba77c3b0d070d2fa28da03ad6132c7601440ec24edfc0c015cfea80063089882072ea8f926e7ee9c0f5cd2bcf9bd6f613d503ae1103006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Contracts : Claim surcharge", + "1 | Dest [1/2] : oDK1d3PH2ckj69KyAVZdYyQi8L9Zb4Xp1UfuPP9", + "1 | Dest [2/2] : 4SGbP52D", + "2 | Aux sender [1/2] : j3rT6SjZBQnmU1EMdprtoYXXBwGGEgecwudUJL6", + "2 | Aux sender [2/2] : 6qcTE46z", + "3 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Contracts : Claim surcharge", + "1 | Dest [1/2] : oDK1d3PH2ckj69KyAVZdYyQi8L9Zb4Xp1UfuPP9", + "1 | Dest [2/2] : 4SGbP52D", + "2 | Aux sender [1/2] : j3rT6SjZBQnmU1EMdprtoYXXBwGGEgecwudUJL6", + "2 | Aux sender [2/2] : 6qcTE46z", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Tip : EDG 0.000000000000000987", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 387, + "name": "Contracts_Claim_surcharge", + "blob": "10043a7c18728de7c0d218d9003c299d23321dc154307f40290eae920c9a14df884101c0edfd9fbb6828360c2ffdb212b8e42634191f0b041b7de36fb830e3f8a2044ad50391010b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Contracts : Claim surcharge", + "1 | Dest [1/2] : iqJT9NwpA3f4EpBLTXJJ59EzNx1S424Yvfkd7yg", + "1 | Dest [2/2] : rJDevzAR", + "2 | Aux sender [1/2] : msahg48TXgMD7TSyYwnxH4WRbx5v6rq1G1ew7Lw", + "2 | Aux sender [2/2] : nW7xSwsg", + "3 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Contracts : Claim surcharge", + "1 | Dest [1/2] : iqJT9NwpA3f4EpBLTXJJ59EzNx1S424Yvfkd7yg", + "1 | Dest [2/2] : rJDevzAR", + "2 | Aux sender [1/2] : msahg48TXgMD7TSyYwnxH4WRbx5v6rq1G1ew7Lw", + "2 | Aux sender [2/2] : nW7xSwsg", + "3 | Chain : Edgeware", + "4 | Nonce : 100", + "5 | Tip : EDG 0.000005552342355555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 388, + "name": "Contracts_Claim_surcharge", + "blob": "10042cca058f2e1c64c04bd9b97014687c400a6bced5ce559a2ac23e5bfa89a60f1001c0edfd9fbb6828360c2ffdb212b8e42634191f0b041b7de36fb830e3f8a2044ad503000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Contracts : Claim surcharge", + "1 | Dest [1/2] : iXLvuB6fsGt5JQ6cBV7VqbS1d2kSUEshqxLkQVq", + "1 | Dest [2/2] : Jk5843qn", + "2 | Aux sender [1/2] : msahg48TXgMD7TSyYwnxH4WRbx5v6rq1G1ew7Lw", + "2 | Aux sender [2/2] : nW7xSwsg", + "3 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Contracts : Claim surcharge", + "1 | Dest [1/2] : iXLvuB6fsGt5JQ6cBV7VqbS1d2kSUEshqxLkQVq", + "1 | Dest [2/2] : Jk5843qn", + "2 | Aux sender [1/2] : msahg48TXgMD7TSyYwnxH4WRbx5v6rq1G1ew7Lw", + "2 | Aux sender [2/2] : nW7xSwsg", + "3 | Chain : Edgeware", + "4 | Nonce : 0", + "5 | Tip : EDG 0.000005552342355555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 389, + "name": "Contracts_Claim_surcharge", + "blob": "1004fc36502b06380fd21101013d7b678acf7ba77c3b0d070d2fa28da03ad6132c7601c0edfd9fbb6828360c2ffdb212b8e42634191f0b041b7de36fb830e3f8a2044ad503048ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Contracts : Claim surcharge", + "1 | Dest [1/2] : oDK1d3PH2ckj69KyAVZdYyQi8L9Zb4Xp1UfuPP9", + "1 | Dest [2/2] : 4SGbP52D", + "2 | Aux sender [1/2] : msahg48TXgMD7TSyYwnxH4WRbx5v6rq1G1ew7Lw", + "2 | Aux sender [2/2] : nW7xSwsg", + "3 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Contracts : Claim surcharge", + "1 | Dest [1/2] : oDK1d3PH2ckj69KyAVZdYyQi8L9Zb4Xp1UfuPP9", + "1 | Dest [2/2] : 4SGbP52D", + "2 | Aux sender [1/2] : msahg48TXgMD7TSyYwnxH4WRbx5v6rq1G1ew7Lw", + "2 | Aux sender [2/2] : nW7xSwsg", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Tip : EDG 0.000000000055555555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 390, + "name": "Contracts_Claim_surcharge", + "blob": "10043a7c18728de7c0d218d9003c299d23321dc154307f40290eae920c9a14df884101440ec24edfc0c015cfea80063089882072ea8f926e7ee9c0f5cd2bcf9bd6f613d5038d246d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Contracts : Claim surcharge", + "1 | Dest [1/2] : iqJT9NwpA3f4EpBLTXJJ59EzNx1S424Yvfkd7yg", + "1 | Dest [2/2] : rJDevzAR", + "2 | Aux sender [1/2] : j3rT6SjZBQnmU1EMdprtoYXXBwGGEgecwudUJL6", + "2 | Aux sender [2/2] : 6qcTE46z", + "3 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Contracts : Claim surcharge", + "1 | Dest [1/2] : iqJT9NwpA3f4EpBLTXJJ59EzNx1S424Yvfkd7yg", + "1 | Dest [2/2] : rJDevzAR", + "2 | Aux sender [1/2] : j3rT6SjZBQnmU1EMdprtoYXXBwGGEgecwudUJL6", + "2 | Aux sender [2/2] : 6qcTE46z", + "3 | Chain : Edgeware", + "4 | Nonce : 2339", + "5 | Tip : EDG 0.000000000000000987", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 391, + "name": "Identity_Add_registrar", + "blob": "17009c0e53a8c0ca0f3623c056af9a8ea30b94057dba0262f541808b27efe430b975d503046d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Add registrar", + "1 | Account [1/2] : m3EY3vTASFan5xtFj1vJXRQETywyYNpjgV6dv5Q", + "1 | Account [2/2] : MUJ26AsQ", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Identity : Add registrar", + "1 | Account [1/2] : m3EY3vTASFan5xtFj1vJXRQETywyYNpjgV6dv5Q", + "1 | Account [2/2] : MUJ26AsQ", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 392, + "name": "Identity_Add_registrar", + "blob": "17002cca058f2e1c64c04bd9b97014687c400a6bced5ce559a2ac23e5bfa89a60f10d50304002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Add registrar", + "1 | Account [1/2] : iXLvuB6fsGt5JQ6cBV7VqbS1d2kSUEshqxLkQVq", + "1 | Account [2/2] : Jk5843qn" + ], + "output_expert": [ + "0 | Identity : Add registrar", + "1 | Account [1/2] : iXLvuB6fsGt5JQ6cBV7VqbS1d2kSUEshqxLkQVq", + "1 | Account [2/2] : Jk5843qn", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 393, + "name": "Identity_Add_registrar", + "blob": "1700f0d79b5ca0e4bfe27f9e6440d003d0bf037a5721cb138d4d7a227056a38c3218d503910133158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Add registrar", + "1 | Account [1/2] : nxQMKYwLGxtr3Np6DqJsYNPE89GrBC9kKgG81Ug", + "1 | Account [2/2] : Ew2yqvUu", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Identity : Add registrar", + "1 | Account [1/2] : nxQMKYwLGxtr3Np6DqJsYNPE89GrBC9kKgG81Ug", + "1 | Account [2/2] : Ew2yqvUu", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 394, + "name": "Identity_Add_registrar", + "blob": "17002a432fe80ff72d33204e68b384fcd88bfc19ca5060055e78f8ef4dfc70872874d5030433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Add registrar", + "1 | Account [1/2] : iU2nCZ2wJUWUw6BpnWbcXY727JgLhM4dm5WuhLd", + "1 | Account [2/2] : BKhzuLGR", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Identity : Add registrar", + "1 | Account [1/2] : iU2nCZ2wJUWUw6BpnWbcXY727JgLhM4dm5WuhLd", + "1 | Account [2/2] : BKhzuLGR", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 395, + "name": "Identity_Add_registrar", + "blob": "17009c0e53a8c0ca0f3623c056af9a8ea30b94057dba0262f541808b27efe430b975d50391016d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Add registrar", + "1 | Account [1/2] : m3EY3vTASFan5xtFj1vJXRQETywyYNpjgV6dv5Q", + "1 | Account [2/2] : MUJ26AsQ", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Identity : Add registrar", + "1 | Account [1/2] : m3EY3vTASFan5xtFj1vJXRQETywyYNpjgV6dv5Q", + "1 | Account [2/2] : MUJ26AsQ", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 396, + "name": "Identity_Clear_identity", + "blob": "1703d503ae1103006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Clear identity", + "1 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Identity : Clear identity", + "1 | Chain : Edgeware", + "2 | Nonce : 50283", + "3 | Tip : EDG 0.000000000000000987", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 397, + "name": "Identity_Clear_identity", + "blob": "1703d5030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Clear identity", + "1 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Identity : Clear identity", + "1 | Chain : Edgeware", + "2 | Nonce : 0", + "3 | Tip : EDG 0.00000000123456789", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 398, + "name": "Identity_Clear_identity", + "blob": "1703d5030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Clear identity", + "1 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "1 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Identity : Clear identity", + "1 | Chain : Edgeware", + "2 | Nonce : 0", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 399, + "name": "Identity_Clear_identity", + "blob": "1703d503ae11030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Clear identity", + "1 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Identity : Clear identity", + "1 | Chain : Edgeware", + "2 | Nonce : 50283", + "3 | Tip : EDG 0.00000000123456789", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 400, + "name": "Identity_Clear_identity", + "blob": "1703d5038d2403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Clear identity", + "1 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Identity : Clear identity", + "1 | Chain : Edgeware", + "2 | Nonce : 2339", + "3 | Tip : EDG 0.00000000123456789", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 401, + "name": "Identity_Request_judgement", + "blob": "17048ed73e0d0b63ce64c10c05d5030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Request judgement", + "1 | Reg index : 55555555", + "2 | Max fee : EDG 0.000005552342355555", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Identity : Request judgement", + "1 | Reg index : 55555555", + "2 | Max fee : EDG 0.000005552342355555", + "3 | Chain : Edgeware", + "4 | Nonce : 0", + "5 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "5 | Tip [2/2] : 56789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 402, + "name": "Identity_Request_judgement", + "blob": "17046d0f00d5030403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Request judgement", + "1 | Reg index : 987", + "2 | Max fee : EDG 0.0", + "3 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Identity : Request judgement", + "1 | Reg index : 987", + "2 | Max fee : EDG 0.0", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Tip : EDG 0.00000000123456789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 403, + "name": "Identity_Request_judgement", + "blob": "17040ea521006d0fd5030403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Request judgement", + "1 | Reg index : 551235", + "2 | Max fee : EDG 0.000000000000000987", + "3 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Identity : Request judgement", + "1 | Reg index : 551235", + "2 | Max fee : EDG 0.000000000000000987", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Tip : EDG 0.00000000123456789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 404, + "name": "Identity_Request_judgement", + "blob": "17046d0f6d0fd503910133158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Request judgement", + "1 | Reg index : 987", + "2 | Max fee : EDG 0.000000000000000987", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Identity : Request judgement", + "1 | Reg index : 987", + "2 | Max fee : EDG 0.000000000000000987", + "3 | Chain : Edgeware", + "4 | Nonce : 100", + "5 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "5 | Tip [2/2] : 56789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 405, + "name": "Identity_Request_judgement", + "blob": "17046d0f0b63ce64c10c05d503ae1103000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Request judgement", + "1 | Reg index : 987", + "2 | Max fee : EDG 0.000005552342355555", + "3 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Identity : Request judgement", + "1 | Reg index : 987", + "2 | Max fee : EDG 0.000005552342355555", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Tip : EDG 0.000005552342355555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 406, + "name": "Identity_Cancel_request", + "blob": "1705b3e30100d503048ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Cancel request", + "1 | Reg index : 123827", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Identity : Cancel request", + "1 | Reg index : 123827", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 407, + "name": "Identity_Cancel_request", + "blob": "1705ff030000d503ae1103008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Cancel request", + "1 | Reg index : 1023", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Identity : Cancel request", + "1 | Reg index : 1023", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 408, + "name": "Identity_Cancel_request", + "blob": "170525010000d503008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Cancel request", + "1 | Reg index : 293", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Identity : Cancel request", + "1 | Reg index : 293", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 409, + "name": "Identity_Cancel_request", + "blob": "1705b3e30100d503046d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Cancel request", + "1 | Reg index : 123827", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Identity : Cancel request", + "1 | Reg index : 123827", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 410, + "name": "Identity_Cancel_request", + "blob": "1705ff030000d5030433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Cancel request", + "1 | Reg index : 1023", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Identity : Cancel request", + "1 | Reg index : 1023", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 411, + "name": "Identity_Set_fee", + "blob": "17060033158139ae28a3dfaac5fe1560a5e9e05cd5039101002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Set fee", + "1 | Index : 0", + "2 | Fee [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Fee [2/2] : 56789" + ], + "output_expert": [ + "0 | Identity : Set fee", + "1 | Index : 0", + "2 | Fee [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Fee [2/2] : 56789", + "3 | Chain : Edgeware", + "4 | Nonce : 100", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 412, + "name": "Identity_Set_fee", + "blob": "17068ed73e0d8ed73e0dd503ae110300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Set fee", + "1 | Index : 55555555", + "2 | Fee : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Identity : Set fee", + "1 | Index : 55555555", + "2 | Fee : EDG 0.000000000055555555", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 413, + "name": "Identity_Set_fee", + "blob": "17066d0f03d2029649d50391016d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Set fee", + "1 | Index : 987", + "2 | Fee : EDG 0.00000000123456789", + "3 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Identity : Set fee", + "1 | Index : 987", + "2 | Fee : EDG 0.00000000123456789", + "3 | Chain : Edgeware", + "4 | Nonce : 100", + "5 | Tip : EDG 0.000000000000000987", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 414, + "name": "Identity_Set_fee", + "blob": "1706000b63ce64c10c05d50300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Set fee", + "1 | Index : 0", + "2 | Fee : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Identity : Set fee", + "1 | Index : 0", + "2 | Fee : EDG 0.000005552342355555", + "3 | Chain : Edgeware", + "4 | Nonce : 0", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 415, + "name": "Identity_Set_fee", + "blob": "17060ea5210003d2029649d503ae1103008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Set fee", + "1 | Index : 551235", + "2 | Fee : EDG 0.00000000123456789", + "3 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Identity : Set fee", + "1 | Index : 551235", + "2 | Fee : EDG 0.00000000123456789", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Tip : EDG 0.000000000055555555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 416, + "name": "Identity_Set_account_id", + "blob": "17070ea521009c0e53a8c0ca0f3623c056af9a8ea30b94057dba0262f541808b27efe430b975d503040b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Set account id", + "1 | Index : 551235", + "2 | New [1/2] : m3EY3vTASFan5xtFj1vJXRQETywyYNpjgV6dv5Q", + "2 | New [2/2] : MUJ26AsQ", + "3 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Identity : Set account id", + "1 | Index : 551235", + "2 | New [1/2] : m3EY3vTASFan5xtFj1vJXRQETywyYNpjgV6dv5Q", + "2 | New [2/2] : MUJ26AsQ", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Tip : EDG 0.000005552342355555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 417, + "name": "Identity_Set_account_id", + "blob": "17078ed73e0dfc36502b06380fd21101013d7b678acf7ba77c3b0d070d2fa28da03ad6132c76d503040b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Set account id", + "1 | Index : 55555555", + "2 | New [1/2] : oDK1d3PH2ckj69KyAVZdYyQi8L9Zb4Xp1UfuPP9", + "2 | New [2/2] : 4SGbP52D", + "3 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Identity : Set account id", + "1 | Index : 55555555", + "2 | New [1/2] : oDK1d3PH2ckj69KyAVZdYyQi8L9Zb4Xp1UfuPP9", + "2 | New [2/2] : 4SGbP52D", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Tip : EDG 0.000005552342355555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 418, + "name": "Identity_Set_account_id", + "blob": "17076d0f3a7c18728de7c0d218d9003c299d23321dc154307f40290eae920c9a14df8841d503048ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Set account id", + "1 | Index : 987", + "2 | New [1/2] : iqJT9NwpA3f4EpBLTXJJ59EzNx1S424Yvfkd7yg", + "2 | New [2/2] : rJDevzAR", + "3 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Identity : Set account id", + "1 | Index : 987", + "2 | New [1/2] : iqJT9NwpA3f4EpBLTXJJ59EzNx1S424Yvfkd7yg", + "2 | New [2/2] : rJDevzAR", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Tip : EDG 0.000000000055555555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 419, + "name": "Identity_Set_account_id", + "blob": "17078ed73e0dae0f8c4e9d6bfe2f5a4d357ee743292594cff455e0a480ca635e5511921f3a60d503910103d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Set account id", + "1 | Index : 55555555", + "2 | New [1/2] : mSqm5tC3qvqidkfu77Le5ySig2XDMgtLjZo6Hbd", + "2 | New [2/2] : TypHehcM", + "3 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Identity : Set account id", + "1 | Index : 55555555", + "2 | New [1/2] : mSqm5tC3qvqidkfu77Le5ySig2XDMgtLjZo6Hbd", + "2 | New [2/2] : TypHehcM", + "3 | Chain : Edgeware", + "4 | Nonce : 100", + "5 | Tip : EDG 0.00000000123456789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 420, + "name": "Identity_Set_account_id", + "blob": "17070ea52100f0d79b5ca0e4bfe27f9e6440d003d0bf037a5721cb138d4d7a227056a38c3218d5038d248ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Set account id", + "1 | Index : 551235", + "2 | New [1/2] : nxQMKYwLGxtr3Np6DqJsYNPE89GrBC9kKgG81Ug", + "2 | New [2/2] : Ew2yqvUu", + "3 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Identity : Set account id", + "1 | Index : 551235", + "2 | New [1/2] : nxQMKYwLGxtr3Np6DqJsYNPE89GrBC9kKgG81Ug", + "2 | New [2/2] : Ew2yqvUu", + "3 | Chain : Edgeware", + "4 | Nonce : 2339", + "5 | Tip : EDG 0.000000000055555555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 421, + "name": "Identity_Kill_identity", + "blob": "170a001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac6d503ae1103006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Kill identity", + "1 | Target [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Target [2/2] : SDTfHv5h", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Identity : Kill identity", + "1 | Target [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Target [2/2] : SDTfHv5h", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 422, + "name": "Identity_Kill_identity", + "blob": "170a001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac6d50391018ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Kill identity", + "1 | Target [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Target [2/2] : SDTfHv5h", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Identity : Kill identity", + "1 | Target [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Target [2/2] : SDTfHv5h", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 423, + "name": "Identity_Kill_identity", + "blob": "170a001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac6d5030433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Kill identity", + "1 | Target [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Target [2/2] : SDTfHv5h", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Identity : Kill identity", + "1 | Target [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Target [2/2] : SDTfHv5h", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 424, + "name": "Identity_Kill_identity", + "blob": "170a001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac6d503ae1103006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Kill identity", + "1 | Target [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Target [2/2] : SDTfHv5h", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Identity : Kill identity", + "1 | Target [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Target [2/2] : SDTfHv5h", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 425, + "name": "Identity_Kill_identity", + "blob": "170a001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac6d5038d24002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Kill identity", + "1 | Target [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Target [2/2] : SDTfHv5h" + ], + "output_expert": [ + "0 | Identity : Kill identity", + "1 | Target [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Target [2/2] : SDTfHv5h", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 426, + "name": "Identity_Remove_sub", + "blob": "170d001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac6d503000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Remove sub", + "1 | Sub [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Sub [2/2] : SDTfHv5h", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Identity : Remove sub", + "1 | Sub [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Sub [2/2] : SDTfHv5h", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 427, + "name": "Identity_Remove_sub", + "blob": "170d001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac6d5030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Remove sub", + "1 | Sub [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Sub [2/2] : SDTfHv5h", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Identity : Remove sub", + "1 | Sub [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Sub [2/2] : SDTfHv5h", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 428, + "name": "Identity_Remove_sub", + "blob": "170d001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac6d503040b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Remove sub", + "1 | Sub [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Sub [2/2] : SDTfHv5h", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Identity : Remove sub", + "1 | Sub [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Sub [2/2] : SDTfHv5h", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 429, + "name": "Identity_Remove_sub", + "blob": "170d001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac6d503ae1103000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Remove sub", + "1 | Sub [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Sub [2/2] : SDTfHv5h", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Identity : Remove sub", + "1 | Sub [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Sub [2/2] : SDTfHv5h", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 430, + "name": "Identity_Remove_sub", + "blob": "170d001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac6d5038d240b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Remove sub", + "1 | Sub [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Sub [2/2] : SDTfHv5h", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Identity : Remove sub", + "1 | Sub [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Sub [2/2] : SDTfHv5h", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 431, + "name": "Identity_Quit_sub", + "blob": "170ed50300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Quit sub" + ], + "output_expert": [ + "0 | Identity : Quit sub", + "1 | Chain : Edgeware", + "2 | Nonce : 0", + "3 | Era Phase : 61", + "4 | Era Period : 64", + "5 | Block [1/2] : 00000000000000000000000000000000000000", + "5 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 432, + "name": "Identity_Quit_sub", + "blob": "170ed50304002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Quit sub" + ], + "output_expert": [ + "0 | Identity : Quit sub", + "1 | Chain : Edgeware", + "2 | Nonce : 1", + "3 | Era Phase : 61", + "4 | Era Period : 64", + "5 | Block [1/2] : 00000000000000000000000000000000000000", + "5 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 433, + "name": "Identity_Quit_sub", + "blob": "170ed503000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Quit sub", + "1 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Identity : Quit sub", + "1 | Chain : Edgeware", + "2 | Nonce : 0", + "3 | Tip : EDG 0.000005552342355555", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 434, + "name": "Identity_Quit_sub", + "blob": "170ed503ae1103008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Quit sub", + "1 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Identity : Quit sub", + "1 | Chain : Edgeware", + "2 | Nonce : 50283", + "3 | Tip : EDG 0.000000000055555555", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 435, + "name": "Identity_Quit_sub", + "blob": "170ed50304002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Identity : Quit sub" + ], + "output_expert": [ + "0 | Identity : Quit sub", + "1 | Chain : Edgeware", + "2 | Nonce : 1", + "3 | Era Phase : 61", + "4 | Era Period : 64", + "5 | Block [1/2] : 00000000000000000000000000000000000000", + "5 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 436, + "name": "Recovery_Set_recovered", + "blob": "18012a432fe80ff72d33204e68b384fcd88bfc19ca5060055e78f8ef4dfc708728742cca058f2e1c64c04bd9b97014687c400a6bced5ce559a2ac23e5bfa89a60f10d5038d24002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Set recovered", + "1 | Lost [1/2] : iU2nCZ2wJUWUw6BpnWbcXY727JgLhM4dm5WuhLd", + "1 | Lost [2/2] : BKhzuLGR", + "2 | Rescuer [1/2] : iXLvuB6fsGt5JQ6cBV7VqbS1d2kSUEshqxLkQVq", + "2 | Rescuer [2/2] : Jk5843qn" + ], + "output_expert": [ + "0 | Recovery : Set recovered", + "1 | Lost [1/2] : iU2nCZ2wJUWUw6BpnWbcXY727JgLhM4dm5WuhLd", + "1 | Lost [2/2] : BKhzuLGR", + "2 | Rescuer [1/2] : iXLvuB6fsGt5JQ6cBV7VqbS1d2kSUEshqxLkQVq", + "2 | Rescuer [2/2] : Jk5843qn", + "3 | Chain : Edgeware", + "4 | Nonce : 2339", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 437, + "name": "Recovery_Set_recovered", + "blob": "18012a432fe80ff72d33204e68b384fcd88bfc19ca5060055e78f8ef4dfc708728742cca058f2e1c64c04bd9b97014687c400a6bced5ce559a2ac23e5bfa89a60f10d503ae110300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Set recovered", + "1 | Lost [1/2] : iU2nCZ2wJUWUw6BpnWbcXY727JgLhM4dm5WuhLd", + "1 | Lost [2/2] : BKhzuLGR", + "2 | Rescuer [1/2] : iXLvuB6fsGt5JQ6cBV7VqbS1d2kSUEshqxLkQVq", + "2 | Rescuer [2/2] : Jk5843qn" + ], + "output_expert": [ + "0 | Recovery : Set recovered", + "1 | Lost [1/2] : iU2nCZ2wJUWUw6BpnWbcXY727JgLhM4dm5WuhLd", + "1 | Lost [2/2] : BKhzuLGR", + "2 | Rescuer [1/2] : iXLvuB6fsGt5JQ6cBV7VqbS1d2kSUEshqxLkQVq", + "2 | Rescuer [2/2] : Jk5843qn", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 438, + "name": "Recovery_Set_recovered", + "blob": "1801ae0f8c4e9d6bfe2f5a4d357ee743292594cff455e0a480ca635e5511921f3a60f0d79b5ca0e4bfe27f9e6440d003d0bf037a5721cb138d4d7a227056a38c3218d5030433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Set recovered", + "1 | Lost [1/2] : mSqm5tC3qvqidkfu77Le5ySig2XDMgtLjZo6Hbd", + "1 | Lost [2/2] : TypHehcM", + "2 | Rescuer [1/2] : nxQMKYwLGxtr3Np6DqJsYNPE89GrBC9kKgG81Ug", + "2 | Rescuer [2/2] : Ew2yqvUu", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Recovery : Set recovered", + "1 | Lost [1/2] : mSqm5tC3qvqidkfu77Le5ySig2XDMgtLjZo6Hbd", + "1 | Lost [2/2] : TypHehcM", + "2 | Rescuer [1/2] : nxQMKYwLGxtr3Np6DqJsYNPE89GrBC9kKgG81Ug", + "2 | Rescuer [2/2] : Ew2yqvUu", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "5 | Tip [2/2] : 56789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 439, + "name": "Recovery_Set_recovered", + "blob": "18013a7c18728de7c0d218d9003c299d23321dc154307f40290eae920c9a14df88419c0e53a8c0ca0f3623c056af9a8ea30b94057dba0262f541808b27efe430b975d503ae1103000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Set recovered", + "1 | Lost [1/2] : iqJT9NwpA3f4EpBLTXJJ59EzNx1S424Yvfkd7yg", + "1 | Lost [2/2] : rJDevzAR", + "2 | Rescuer [1/2] : m3EY3vTASFan5xtFj1vJXRQETywyYNpjgV6dv5Q", + "2 | Rescuer [2/2] : MUJ26AsQ", + "3 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Recovery : Set recovered", + "1 | Lost [1/2] : iqJT9NwpA3f4EpBLTXJJ59EzNx1S424Yvfkd7yg", + "1 | Lost [2/2] : rJDevzAR", + "2 | Rescuer [1/2] : m3EY3vTASFan5xtFj1vJXRQETywyYNpjgV6dv5Q", + "2 | Rescuer [2/2] : MUJ26AsQ", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Tip : EDG 0.000005552342355555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 440, + "name": "Recovery_Set_recovered", + "blob": "18012cca058f2e1c64c04bd9b97014687c400a6bced5ce559a2ac23e5bfa89a60f102cca058f2e1c64c04bd9b97014687c400a6bced5ce559a2ac23e5bfa89a60f10d5038d248ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Set recovered", + "1 | Lost [1/2] : iXLvuB6fsGt5JQ6cBV7VqbS1d2kSUEshqxLkQVq", + "1 | Lost [2/2] : Jk5843qn", + "2 | Rescuer [1/2] : iXLvuB6fsGt5JQ6cBV7VqbS1d2kSUEshqxLkQVq", + "2 | Rescuer [2/2] : Jk5843qn", + "3 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Recovery : Set recovered", + "1 | Lost [1/2] : iXLvuB6fsGt5JQ6cBV7VqbS1d2kSUEshqxLkQVq", + "1 | Lost [2/2] : Jk5843qn", + "2 | Rescuer [1/2] : iXLvuB6fsGt5JQ6cBV7VqbS1d2kSUEshqxLkQVq", + "2 | Rescuer [2/2] : Jk5843qn", + "3 | Chain : Edgeware", + "4 | Nonce : 2339", + "5 | Tip : EDG 0.000000000055555555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 441, + "name": "Recovery_Initiate_recovery", + "blob": "1803fc36502b06380fd21101013d7b678acf7ba77c3b0d070d2fa28da03ad6132c76d5038d240b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Initiate recovery", + "1 | Account [1/2] : oDK1d3PH2ckj69KyAVZdYyQi8L9Zb4Xp1UfuPP9", + "1 | Account [2/2] : 4SGbP52D", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Recovery : Initiate recovery", + "1 | Account [1/2] : oDK1d3PH2ckj69KyAVZdYyQi8L9Zb4Xp1UfuPP9", + "1 | Account [2/2] : 4SGbP52D", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 442, + "name": "Recovery_Initiate_recovery", + "blob": "18033a7c18728de7c0d218d9003c299d23321dc154307f40290eae920c9a14df8841d5030433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Initiate recovery", + "1 | Account [1/2] : iqJT9NwpA3f4EpBLTXJJ59EzNx1S424Yvfkd7yg", + "1 | Account [2/2] : rJDevzAR", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Recovery : Initiate recovery", + "1 | Account [1/2] : iqJT9NwpA3f4EpBLTXJJ59EzNx1S424Yvfkd7yg", + "1 | Account [2/2] : rJDevzAR", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 443, + "name": "Recovery_Initiate_recovery", + "blob": "18032cca058f2e1c64c04bd9b97014687c400a6bced5ce559a2ac23e5bfa89a60f10d503910103d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Initiate recovery", + "1 | Account [1/2] : iXLvuB6fsGt5JQ6cBV7VqbS1d2kSUEshqxLkQVq", + "1 | Account [2/2] : Jk5843qn", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Recovery : Initiate recovery", + "1 | Account [1/2] : iXLvuB6fsGt5JQ6cBV7VqbS1d2kSUEshqxLkQVq", + "1 | Account [2/2] : Jk5843qn", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 444, + "name": "Recovery_Initiate_recovery", + "blob": "18032a432fe80ff72d33204e68b384fcd88bfc19ca5060055e78f8ef4dfc70872874d5038d2433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Initiate recovery", + "1 | Account [1/2] : iU2nCZ2wJUWUw6BpnWbcXY727JgLhM4dm5WuhLd", + "1 | Account [2/2] : BKhzuLGR", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Recovery : Initiate recovery", + "1 | Account [1/2] : iU2nCZ2wJUWUw6BpnWbcXY727JgLhM4dm5WuhLd", + "1 | Account [2/2] : BKhzuLGR", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 445, + "name": "Recovery_Initiate_recovery", + "blob": "1803ae0f8c4e9d6bfe2f5a4d357ee743292594cff455e0a480ca635e5511921f3a60d503ae11030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Initiate recovery", + "1 | Account [1/2] : mSqm5tC3qvqidkfu77Le5ySig2XDMgtLjZo6Hbd", + "1 | Account [2/2] : TypHehcM", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Recovery : Initiate recovery", + "1 | Account [1/2] : mSqm5tC3qvqidkfu77Le5ySig2XDMgtLjZo6Hbd", + "1 | Account [2/2] : TypHehcM", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 446, + "name": "Recovery_Vouch_recovery", + "blob": "18049c0e53a8c0ca0f3623c056af9a8ea30b94057dba0262f541808b27efe430b975fc36502b06380fd21101013d7b678acf7ba77c3b0d070d2fa28da03ad6132c76d503ae11030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Vouch recovery", + "1 | Lost [1/2] : m3EY3vTASFan5xtFj1vJXRQETywyYNpjgV6dv5Q", + "1 | Lost [2/2] : MUJ26AsQ", + "2 | Rescuer [1/2] : oDK1d3PH2ckj69KyAVZdYyQi8L9Zb4Xp1UfuPP9", + "2 | Rescuer [2/2] : 4SGbP52D", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Recovery : Vouch recovery", + "1 | Lost [1/2] : m3EY3vTASFan5xtFj1vJXRQETywyYNpjgV6dv5Q", + "1 | Lost [2/2] : MUJ26AsQ", + "2 | Rescuer [1/2] : oDK1d3PH2ckj69KyAVZdYyQi8L9Zb4Xp1UfuPP9", + "2 | Rescuer [2/2] : 4SGbP52D", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "5 | Tip [2/2] : 56789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 447, + "name": "Recovery_Vouch_recovery", + "blob": "1804f0d79b5ca0e4bfe27f9e6440d003d0bf037a5721cb138d4d7a227056a38c32183a7c18728de7c0d218d9003c299d23321dc154307f40290eae920c9a14df8841d503ae11030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Vouch recovery", + "1 | Lost [1/2] : nxQMKYwLGxtr3Np6DqJsYNPE89GrBC9kKgG81Ug", + "1 | Lost [2/2] : Ew2yqvUu", + "2 | Rescuer [1/2] : iqJT9NwpA3f4EpBLTXJJ59EzNx1S424Yvfkd7yg", + "2 | Rescuer [2/2] : rJDevzAR", + "3 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Recovery : Vouch recovery", + "1 | Lost [1/2] : nxQMKYwLGxtr3Np6DqJsYNPE89GrBC9kKgG81Ug", + "1 | Lost [2/2] : Ew2yqvUu", + "2 | Rescuer [1/2] : iqJT9NwpA3f4EpBLTXJJ59EzNx1S424Yvfkd7yg", + "2 | Rescuer [2/2] : rJDevzAR", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Tip : EDG 0.00000000123456789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 448, + "name": "Recovery_Vouch_recovery", + "blob": "1804ae0f8c4e9d6bfe2f5a4d357ee743292594cff455e0a480ca635e5511921f3a60ae0f8c4e9d6bfe2f5a4d357ee743292594cff455e0a480ca635e5511921f3a60d50391016d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Vouch recovery", + "1 | Lost [1/2] : mSqm5tC3qvqidkfu77Le5ySig2XDMgtLjZo6Hbd", + "1 | Lost [2/2] : TypHehcM", + "2 | Rescuer [1/2] : mSqm5tC3qvqidkfu77Le5ySig2XDMgtLjZo6Hbd", + "2 | Rescuer [2/2] : TypHehcM", + "3 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Recovery : Vouch recovery", + "1 | Lost [1/2] : mSqm5tC3qvqidkfu77Le5ySig2XDMgtLjZo6Hbd", + "1 | Lost [2/2] : TypHehcM", + "2 | Rescuer [1/2] : mSqm5tC3qvqidkfu77Le5ySig2XDMgtLjZo6Hbd", + "2 | Rescuer [2/2] : TypHehcM", + "3 | Chain : Edgeware", + "4 | Nonce : 100", + "5 | Tip : EDG 0.000000000000000987", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 449, + "name": "Recovery_Vouch_recovery", + "blob": "18049c0e53a8c0ca0f3623c056af9a8ea30b94057dba0262f541808b27efe430b975fc36502b06380fd21101013d7b678acf7ba77c3b0d070d2fa28da03ad6132c76d50391018ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Vouch recovery", + "1 | Lost [1/2] : m3EY3vTASFan5xtFj1vJXRQETywyYNpjgV6dv5Q", + "1 | Lost [2/2] : MUJ26AsQ", + "2 | Rescuer [1/2] : oDK1d3PH2ckj69KyAVZdYyQi8L9Zb4Xp1UfuPP9", + "2 | Rescuer [2/2] : 4SGbP52D", + "3 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Recovery : Vouch recovery", + "1 | Lost [1/2] : m3EY3vTASFan5xtFj1vJXRQETywyYNpjgV6dv5Q", + "1 | Lost [2/2] : MUJ26AsQ", + "2 | Rescuer [1/2] : oDK1d3PH2ckj69KyAVZdYyQi8L9Zb4Xp1UfuPP9", + "2 | Rescuer [2/2] : 4SGbP52D", + "3 | Chain : Edgeware", + "4 | Nonce : 100", + "5 | Tip : EDG 0.000000000055555555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 450, + "name": "Recovery_Vouch_recovery", + "blob": "18042a432fe80ff72d33204e68b384fcd88bfc19ca5060055e78f8ef4dfc708728749c0e53a8c0ca0f3623c056af9a8ea30b94057dba0262f541808b27efe430b975d503ae110300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Vouch recovery", + "1 | Lost [1/2] : iU2nCZ2wJUWUw6BpnWbcXY727JgLhM4dm5WuhLd", + "1 | Lost [2/2] : BKhzuLGR", + "2 | Rescuer [1/2] : m3EY3vTASFan5xtFj1vJXRQETywyYNpjgV6dv5Q", + "2 | Rescuer [2/2] : MUJ26AsQ" + ], + "output_expert": [ + "0 | Recovery : Vouch recovery", + "1 | Lost [1/2] : iU2nCZ2wJUWUw6BpnWbcXY727JgLhM4dm5WuhLd", + "1 | Lost [2/2] : BKhzuLGR", + "2 | Rescuer [1/2] : m3EY3vTASFan5xtFj1vJXRQETywyYNpjgV6dv5Q", + "2 | Rescuer [2/2] : MUJ26AsQ", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 451, + "name": "Recovery_Claim_recovery", + "blob": "1805f0d79b5ca0e4bfe27f9e6440d003d0bf037a5721cb138d4d7a227056a38c3218d503040b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Claim recovery", + "1 | Account [1/2] : nxQMKYwLGxtr3Np6DqJsYNPE89GrBC9kKgG81Ug", + "1 | Account [2/2] : Ew2yqvUu", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Recovery : Claim recovery", + "1 | Account [1/2] : nxQMKYwLGxtr3Np6DqJsYNPE89GrBC9kKgG81Ug", + "1 | Account [2/2] : Ew2yqvUu", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 452, + "name": "Recovery_Claim_recovery", + "blob": "18052cca058f2e1c64c04bd9b97014687c400a6bced5ce559a2ac23e5bfa89a60f10d503910103d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Claim recovery", + "1 | Account [1/2] : iXLvuB6fsGt5JQ6cBV7VqbS1d2kSUEshqxLkQVq", + "1 | Account [2/2] : Jk5843qn", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Recovery : Claim recovery", + "1 | Account [1/2] : iXLvuB6fsGt5JQ6cBV7VqbS1d2kSUEshqxLkQVq", + "1 | Account [2/2] : Jk5843qn", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 453, + "name": "Recovery_Claim_recovery", + "blob": "1805fc36502b06380fd21101013d7b678acf7ba77c3b0d070d2fa28da03ad6132c76d503048ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Claim recovery", + "1 | Account [1/2] : oDK1d3PH2ckj69KyAVZdYyQi8L9Zb4Xp1UfuPP9", + "1 | Account [2/2] : 4SGbP52D", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Recovery : Claim recovery", + "1 | Account [1/2] : oDK1d3PH2ckj69KyAVZdYyQi8L9Zb4Xp1UfuPP9", + "1 | Account [2/2] : 4SGbP52D", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 454, + "name": "Recovery_Claim_recovery", + "blob": "18052cca058f2e1c64c04bd9b97014687c400a6bced5ce559a2ac23e5bfa89a60f10d503ae1103008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Claim recovery", + "1 | Account [1/2] : iXLvuB6fsGt5JQ6cBV7VqbS1d2kSUEshqxLkQVq", + "1 | Account [2/2] : Jk5843qn", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Recovery : Claim recovery", + "1 | Account [1/2] : iXLvuB6fsGt5JQ6cBV7VqbS1d2kSUEshqxLkQVq", + "1 | Account [2/2] : Jk5843qn", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 455, + "name": "Recovery_Claim_recovery", + "blob": "1805ae0f8c4e9d6bfe2f5a4d357ee743292594cff455e0a480ca635e5511921f3a60d5039101002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Claim recovery", + "1 | Account [1/2] : mSqm5tC3qvqidkfu77Le5ySig2XDMgtLjZo6Hbd", + "1 | Account [2/2] : TypHehcM" + ], + "output_expert": [ + "0 | Recovery : Claim recovery", + "1 | Account [1/2] : mSqm5tC3qvqidkfu77Le5ySig2XDMgtLjZo6Hbd", + "1 | Account [2/2] : TypHehcM", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 456, + "name": "Recovery_Close_recovery", + "blob": "18069c0e53a8c0ca0f3623c056af9a8ea30b94057dba0262f541808b27efe430b975d503ae110300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Close recovery", + "1 | Rescuer [1/2] : m3EY3vTASFan5xtFj1vJXRQETywyYNpjgV6dv5Q", + "1 | Rescuer [2/2] : MUJ26AsQ" + ], + "output_expert": [ + "0 | Recovery : Close recovery", + "1 | Rescuer [1/2] : m3EY3vTASFan5xtFj1vJXRQETywyYNpjgV6dv5Q", + "1 | Rescuer [2/2] : MUJ26AsQ", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 457, + "name": "Recovery_Close_recovery", + "blob": "18069c0e53a8c0ca0f3623c056af9a8ea30b94057dba0262f541808b27efe430b975d50304002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Close recovery", + "1 | Rescuer [1/2] : m3EY3vTASFan5xtFj1vJXRQETywyYNpjgV6dv5Q", + "1 | Rescuer [2/2] : MUJ26AsQ" + ], + "output_expert": [ + "0 | Recovery : Close recovery", + "1 | Rescuer [1/2] : m3EY3vTASFan5xtFj1vJXRQETywyYNpjgV6dv5Q", + "1 | Rescuer [2/2] : MUJ26AsQ", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 458, + "name": "Recovery_Close_recovery", + "blob": "18062a432fe80ff72d33204e68b384fcd88bfc19ca5060055e78f8ef4dfc70872874d5038d2433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Close recovery", + "1 | Rescuer [1/2] : iU2nCZ2wJUWUw6BpnWbcXY727JgLhM4dm5WuhLd", + "1 | Rescuer [2/2] : BKhzuLGR", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Recovery : Close recovery", + "1 | Rescuer [1/2] : iU2nCZ2wJUWUw6BpnWbcXY727JgLhM4dm5WuhLd", + "1 | Rescuer [2/2] : BKhzuLGR", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 459, + "name": "Recovery_Close_recovery", + "blob": "18069c0e53a8c0ca0f3623c056af9a8ea30b94057dba0262f541808b27efe430b975d5030433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Close recovery", + "1 | Rescuer [1/2] : m3EY3vTASFan5xtFj1vJXRQETywyYNpjgV6dv5Q", + "1 | Rescuer [2/2] : MUJ26AsQ", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Recovery : Close recovery", + "1 | Rescuer [1/2] : m3EY3vTASFan5xtFj1vJXRQETywyYNpjgV6dv5Q", + "1 | Rescuer [2/2] : MUJ26AsQ", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 460, + "name": "Recovery_Close_recovery", + "blob": "18062cca058f2e1c64c04bd9b97014687c400a6bced5ce559a2ac23e5bfa89a60f10d50300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Close recovery", + "1 | Rescuer [1/2] : iXLvuB6fsGt5JQ6cBV7VqbS1d2kSUEshqxLkQVq", + "1 | Rescuer [2/2] : Jk5843qn" + ], + "output_expert": [ + "0 | Recovery : Close recovery", + "1 | Rescuer [1/2] : iXLvuB6fsGt5JQ6cBV7VqbS1d2kSUEshqxLkQVq", + "1 | Rescuer [2/2] : Jk5843qn", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 461, + "name": "Recovery_Remove_recovery", + "blob": "1807d50391016d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Remove recovery", + "1 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Recovery : Remove recovery", + "1 | Chain : Edgeware", + "2 | Nonce : 100", + "3 | Tip : EDG 0.000000000000000987", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 462, + "name": "Recovery_Remove_recovery", + "blob": "1807d5038d240b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Remove recovery", + "1 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Recovery : Remove recovery", + "1 | Chain : Edgeware", + "2 | Nonce : 2339", + "3 | Tip : EDG 0.000005552342355555", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 463, + "name": "Recovery_Remove_recovery", + "blob": "1807d5038d24002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Remove recovery" + ], + "output_expert": [ + "0 | Recovery : Remove recovery", + "1 | Chain : Edgeware", + "2 | Nonce : 2339", + "3 | Era Phase : 61", + "4 | Era Period : 64", + "5 | Block [1/2] : 00000000000000000000000000000000000000", + "5 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 464, + "name": "Recovery_Remove_recovery", + "blob": "1807d50300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Remove recovery" + ], + "output_expert": [ + "0 | Recovery : Remove recovery", + "1 | Chain : Edgeware", + "2 | Nonce : 0", + "3 | Era Phase : 61", + "4 | Era Period : 64", + "5 | Block [1/2] : 00000000000000000000000000000000000000", + "5 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 465, + "name": "Recovery_Remove_recovery", + "blob": "1807d503ae1103008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Remove recovery", + "1 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Recovery : Remove recovery", + "1 | Chain : Edgeware", + "2 | Nonce : 50283", + "3 | Tip : EDG 0.000000000055555555", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 466, + "name": "Recovery_Cancel_recovered", + "blob": "1808f0d79b5ca0e4bfe27f9e6440d003d0bf037a5721cb138d4d7a227056a38c3218d50391018ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Cancel recovered", + "1 | Account [1/2] : nxQMKYwLGxtr3Np6DqJsYNPE89GrBC9kKgG81Ug", + "1 | Account [2/2] : Ew2yqvUu", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Recovery : Cancel recovered", + "1 | Account [1/2] : nxQMKYwLGxtr3Np6DqJsYNPE89GrBC9kKgG81Ug", + "1 | Account [2/2] : Ew2yqvUu", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 467, + "name": "Recovery_Cancel_recovered", + "blob": "1808fc36502b06380fd21101013d7b678acf7ba77c3b0d070d2fa28da03ad6132c76d503910103d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Cancel recovered", + "1 | Account [1/2] : oDK1d3PH2ckj69KyAVZdYyQi8L9Zb4Xp1UfuPP9", + "1 | Account [2/2] : 4SGbP52D", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Recovery : Cancel recovered", + "1 | Account [1/2] : oDK1d3PH2ckj69KyAVZdYyQi8L9Zb4Xp1UfuPP9", + "1 | Account [2/2] : 4SGbP52D", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 468, + "name": "Recovery_Cancel_recovered", + "blob": "1808fc36502b06380fd21101013d7b678acf7ba77c3b0d070d2fa28da03ad6132c76d50391016d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Cancel recovered", + "1 | Account [1/2] : oDK1d3PH2ckj69KyAVZdYyQi8L9Zb4Xp1UfuPP9", + "1 | Account [2/2] : 4SGbP52D", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Recovery : Cancel recovered", + "1 | Account [1/2] : oDK1d3PH2ckj69KyAVZdYyQi8L9Zb4Xp1UfuPP9", + "1 | Account [2/2] : 4SGbP52D", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 469, + "name": "Recovery_Cancel_recovered", + "blob": "18089c0e53a8c0ca0f3623c056af9a8ea30b94057dba0262f541808b27efe430b975d50391016d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Cancel recovered", + "1 | Account [1/2] : m3EY3vTASFan5xtFj1vJXRQETywyYNpjgV6dv5Q", + "1 | Account [2/2] : MUJ26AsQ", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Recovery : Cancel recovered", + "1 | Account [1/2] : m3EY3vTASFan5xtFj1vJXRQETywyYNpjgV6dv5Q", + "1 | Account [2/2] : MUJ26AsQ", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 470, + "name": "Recovery_Cancel_recovered", + "blob": "1808f0d79b5ca0e4bfe27f9e6440d003d0bf037a5721cb138d4d7a227056a38c3218d503910133158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Recovery : Cancel recovered", + "1 | Account [1/2] : nxQMKYwLGxtr3Np6DqJsYNPE89GrBC9kKgG81Ug", + "1 | Account [2/2] : Ew2yqvUu", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Recovery : Cancel recovered", + "1 | Account [1/2] : nxQMKYwLGxtr3Np6DqJsYNPE89GrBC9kKgG81Ug", + "1 | Account [2/2] : Ew2yqvUu", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 471, + "name": "Vesting_Vest", + "blob": "1900d50391010b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Vesting : Vest", + "1 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Vesting : Vest", + "1 | Chain : Edgeware", + "2 | Nonce : 100", + "3 | Tip : EDG 0.000005552342355555", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 472, + "name": "Vesting_Vest", + "blob": "1900d503ae11030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Vesting : Vest", + "1 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "1 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Vesting : Vest", + "1 | Chain : Edgeware", + "2 | Nonce : 50283", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 473, + "name": "Vesting_Vest", + "blob": "1900d503046d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Vesting : Vest", + "1 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Vesting : Vest", + "1 | Chain : Edgeware", + "2 | Nonce : 1", + "3 | Tip : EDG 0.000000000000000987", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 474, + "name": "Vesting_Vest", + "blob": "1900d5038d246d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Vesting : Vest", + "1 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Vesting : Vest", + "1 | Chain : Edgeware", + "2 | Nonce : 2339", + "3 | Tip : EDG 0.000000000000000987", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 475, + "name": "Vesting_Vest", + "blob": "1900d50304002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Vesting : Vest" + ], + "output_expert": [ + "0 | Vesting : Vest", + "1 | Chain : Edgeware", + "2 | Nonce : 1", + "3 | Era Phase : 61", + "4 | Era Period : 64", + "5 | Block [1/2] : 00000000000000000000000000000000000000", + "5 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 476, + "name": "Vesting_Vest_other", + "blob": "1901001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac6d503910103d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Vesting : Vest other", + "1 | Target [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Target [2/2] : SDTfHv5h", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Vesting : Vest other", + "1 | Target [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Target [2/2] : SDTfHv5h", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 477, + "name": "Vesting_Vest_other", + "blob": "1901001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac6d503ae1103000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Vesting : Vest other", + "1 | Target [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Target [2/2] : SDTfHv5h", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Vesting : Vest other", + "1 | Target [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Target [2/2] : SDTfHv5h", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 478, + "name": "Vesting_Vest_other", + "blob": "1901001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac6d503008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Vesting : Vest other", + "1 | Target [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Target [2/2] : SDTfHv5h", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Vesting : Vest other", + "1 | Target [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Target [2/2] : SDTfHv5h", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 479, + "name": "Vesting_Vest_other", + "blob": "1901001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac6d5038d240b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Vesting : Vest other", + "1 | Target [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Target [2/2] : SDTfHv5h", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Vesting : Vest other", + "1 | Target [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Target [2/2] : SDTfHv5h", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 480, + "name": "Vesting_Vest_other", + "blob": "1901001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac6d50304002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Vesting : Vest other", + "1 | Target [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Target [2/2] : SDTfHv5h" + ], + "output_expert": [ + "0 | Vesting : Vest other", + "1 | Target [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Target [2/2] : SDTfHv5h", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 481, + "name": "Vesting_Vested_transfer", + "blob": "1902001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac64fbac026a6324415b69469cfd53684d0e661910cb9580dc5e0e9882698ae924305d24453d503910133158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Vesting : Vested transfer", + "1 | Target [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Target [2/2] : SDTfHv5h", + "2 | Schedule [1/5] : EDG 277165918498497348052.6219515046123", + "2 | Schedule [2/5] : 75119", + "2 | Schedule [3/5] : EDG 89819892252813134619.49259261280160", + "2 | Schedule [4/5] : 2022", + "2 | Schedule [5/5] : 1397019141", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Vesting : Vested transfer", + "1 | Target [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Target [2/2] : SDTfHv5h", + "2 | Schedule [1/5] : EDG 277165918498497348052.6219515046123", + "2 | Schedule [2/5] : 75119", + "2 | Schedule [3/5] : EDG 89819892252813134619.49259261280160", + "2 | Schedule [4/5] : 2022", + "2 | Schedule [5/5] : 1397019141", + "3 | Chain : Edgeware", + "4 | Nonce : 100", + "5 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "5 | Tip [2/2] : 56789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 482, + "name": "Vesting_Vested_transfer", + "blob": "1902001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac6527214d659d9d09c48df5dfb9a891be3af0637c117a89c57f03f885fc81f76157323c59cd503ae1103006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Vesting : Vested transfer", + "1 | Target [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Target [2/2] : SDTfHv5h", + "2 | Schedule [1/5] : EDG 301877738027403292964.2633927097993", + "2 | Schedule [2/5] : 42674", + "2 | Schedule [3/5] : EDG 28527123570686350832.91268307851614", + "2 | Schedule [4/5] : 7887", + "2 | Schedule [5/5] : 2630165363", + "3 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Vesting : Vested transfer", + "1 | Target [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Target [2/2] : SDTfHv5h", + "2 | Schedule [1/5] : EDG 301877738027403292964.2633927097993", + "2 | Schedule [2/5] : 42674", + "2 | Schedule [3/5] : EDG 28527123570686350832.91268307851614", + "2 | Schedule [4/5] : 7887", + "2 | Schedule [5/5] : 2630165363", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Tip : EDG 0.000000000000000987", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 483, + "name": "Vesting_Vested_transfer", + "blob": "1902001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac64fbac026a6324415b69469cfd53684d0e661910cb9580dc5e0e9882698ae924305d24453d50300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Vesting : Vested transfer", + "1 | Target [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Target [2/2] : SDTfHv5h", + "2 | Schedule [1/5] : EDG 277165918498497348052.6219515046123", + "2 | Schedule [2/5] : 75119", + "2 | Schedule [3/5] : EDG 89819892252813134619.49259261280160", + "2 | Schedule [4/5] : 2022", + "2 | Schedule [5/5] : 1397019141" + ], + "output_expert": [ + "0 | Vesting : Vested transfer", + "1 | Target [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Target [2/2] : SDTfHv5h", + "2 | Schedule [1/5] : EDG 277165918498497348052.6219515046123", + "2 | Schedule [2/5] : 75119", + "2 | Schedule [3/5] : EDG 89819892252813134619.49259261280160", + "2 | Schedule [4/5] : 2022", + "2 | Schedule [5/5] : 1397019141", + "3 | Chain : Edgeware", + "4 | Nonce : 0", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 484, + "name": "Vesting_Vested_transfer", + "blob": "1902001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac6052f07f7aac346fcc0f992066b299395a53b608c2a3899928b3a72cae155a80e8cceb61ed50391010b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Vesting : Vested transfer", + "1 | Target [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Target [2/2] : SDTfHv5h", + "2 | Schedule [1/5] : EDG 198819079068398816126.6320743394039", + "2 | Schedule [2/5] : 02725", + "2 | Schedule [3/5] : EDG 19483239707029615362.97315674072339", + "2 | Schedule [4/5] : 1397", + "2 | Schedule [5/5] : 515296908", + "3 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Vesting : Vested transfer", + "1 | Target [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Target [2/2] : SDTfHv5h", + "2 | Schedule [1/5] : EDG 198819079068398816126.6320743394039", + "2 | Schedule [2/5] : 02725", + "2 | Schedule [3/5] : EDG 19483239707029615362.97315674072339", + "2 | Schedule [4/5] : 1397", + "2 | Schedule [5/5] : 515296908", + "3 | Chain : Edgeware", + "4 | Nonce : 100", + "5 | Tip : EDG 0.000005552342355555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 485, + "name": "Vesting_Vested_transfer", + "blob": "1902001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac6527214d659d9d09c48df5dfb9a891be3af0637c117a89c57f03f885fc81f76157323c59cd503000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Vesting : Vested transfer", + "1 | Target [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Target [2/2] : SDTfHv5h", + "2 | Schedule [1/5] : EDG 301877738027403292964.2633927097993", + "2 | Schedule [2/5] : 42674", + "2 | Schedule [3/5] : EDG 28527123570686350832.91268307851614", + "2 | Schedule [4/5] : 7887", + "2 | Schedule [5/5] : 2630165363", + "3 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Vesting : Vested transfer", + "1 | Target [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Target [2/2] : SDTfHv5h", + "2 | Schedule [1/5] : EDG 301877738027403292964.2633927097993", + "2 | Schedule [2/5] : 42674", + "2 | Schedule [3/5] : EDG 28527123570686350832.91268307851614", + "2 | Schedule [4/5] : 7887", + "2 | Schedule [5/5] : 2630165363", + "3 | Chain : Edgeware", + "4 | Nonce : 0", + "5 | Tip : EDG 0.000005552342355555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 486, + "name": "Vesting_Force_vested_transfer", + "blob": "1903001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac6001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac64fbac026a6324415b69469cfd53684d0e661910cb9580dc5e0e9882698ae924305d24453d5038d2433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Vesting : Force vested transfer", + "1 | Source [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Source [2/2] : SDTfHv5h", + "2 | Target [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "2 | Target [2/2] : SDTfHv5h", + "3 | Schedule [1/5] : EDG 277165918498497348052.6219515046123", + "3 | Schedule [2/5] : 75119", + "3 | Schedule [3/5] : EDG 89819892252813134619.49259261280160", + "3 | Schedule [4/5] : 2022", + "3 | Schedule [5/5] : 1397019141", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Vesting : Force vested transfer", + "1 | Source [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Source [2/2] : SDTfHv5h", + "2 | Target [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "2 | Target [2/2] : SDTfHv5h", + "3 | Schedule [1/5] : EDG 277165918498497348052.6219515046123", + "3 | Schedule [2/5] : 75119", + "3 | Schedule [3/5] : EDG 89819892252813134619.49259261280160", + "3 | Schedule [4/5] : 2022", + "3 | Schedule [5/5] : 1397019141", + "4 | Chain : Edgeware", + "5 | Nonce : 2339", + "6 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "6 | Tip [2/2] : 56789", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 487, + "name": "Vesting_Force_vested_transfer", + "blob": "1903001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac6001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac64fbac026a6324415b69469cfd53684d0e661910cb9580dc5e0e9882698ae924305d24453d503040b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Vesting : Force vested transfer", + "1 | Source [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Source [2/2] : SDTfHv5h", + "2 | Target [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "2 | Target [2/2] : SDTfHv5h", + "3 | Schedule [1/5] : EDG 277165918498497348052.6219515046123", + "3 | Schedule [2/5] : 75119", + "3 | Schedule [3/5] : EDG 89819892252813134619.49259261280160", + "3 | Schedule [4/5] : 2022", + "3 | Schedule [5/5] : 1397019141", + "4 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Vesting : Force vested transfer", + "1 | Source [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Source [2/2] : SDTfHv5h", + "2 | Target [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "2 | Target [2/2] : SDTfHv5h", + "3 | Schedule [1/5] : EDG 277165918498497348052.6219515046123", + "3 | Schedule [2/5] : 75119", + "3 | Schedule [3/5] : EDG 89819892252813134619.49259261280160", + "3 | Schedule [4/5] : 2022", + "3 | Schedule [5/5] : 1397019141", + "4 | Chain : Edgeware", + "5 | Nonce : 1", + "6 | Tip : EDG 0.000005552342355555", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 488, + "name": "Vesting_Force_vested_transfer", + "blob": "1903001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac6001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac6527214d659d9d09c48df5dfb9a891be3af0637c117a89c57f03f885fc81f76157323c59cd5030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Vesting : Force vested transfer", + "1 | Source [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Source [2/2] : SDTfHv5h", + "2 | Target [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "2 | Target [2/2] : SDTfHv5h", + "3 | Schedule [1/5] : EDG 301877738027403292964.2633927097993", + "3 | Schedule [2/5] : 42674", + "3 | Schedule [3/5] : EDG 28527123570686350832.91268307851614", + "3 | Schedule [4/5] : 7887", + "3 | Schedule [5/5] : 2630165363", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Vesting : Force vested transfer", + "1 | Source [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Source [2/2] : SDTfHv5h", + "2 | Target [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "2 | Target [2/2] : SDTfHv5h", + "3 | Schedule [1/5] : EDG 301877738027403292964.2633927097993", + "3 | Schedule [2/5] : 42674", + "3 | Schedule [3/5] : EDG 28527123570686350832.91268307851614", + "3 | Schedule [4/5] : 7887", + "3 | Schedule [5/5] : 2630165363", + "4 | Chain : Edgeware", + "5 | Nonce : 0", + "6 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "6 | Tip [2/2] : 56789", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 489, + "name": "Vesting_Force_vested_transfer", + "blob": "1903001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac6001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac64fbac026a6324415b69469cfd53684d0e661910cb9580dc5e0e9882698ae924305d24453d503910133158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Vesting : Force vested transfer", + "1 | Source [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Source [2/2] : SDTfHv5h", + "2 | Target [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "2 | Target [2/2] : SDTfHv5h", + "3 | Schedule [1/5] : EDG 277165918498497348052.6219515046123", + "3 | Schedule [2/5] : 75119", + "3 | Schedule [3/5] : EDG 89819892252813134619.49259261280160", + "3 | Schedule [4/5] : 2022", + "3 | Schedule [5/5] : 1397019141", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Vesting : Force vested transfer", + "1 | Source [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Source [2/2] : SDTfHv5h", + "2 | Target [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "2 | Target [2/2] : SDTfHv5h", + "3 | Schedule [1/5] : EDG 277165918498497348052.6219515046123", + "3 | Schedule [2/5] : 75119", + "3 | Schedule [3/5] : EDG 89819892252813134619.49259261280160", + "3 | Schedule [4/5] : 2022", + "3 | Schedule [5/5] : 1397019141", + "4 | Chain : Edgeware", + "5 | Nonce : 100", + "6 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "6 | Tip [2/2] : 56789", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 490, + "name": "Vesting_Force_vested_transfer", + "blob": "1903001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac6001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac6052f07f7aac346fcc0f992066b299395a53b608c2a3899928b3a72cae155a80e8cceb61ed50300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Vesting : Force vested transfer", + "1 | Source [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Source [2/2] : SDTfHv5h", + "2 | Target [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "2 | Target [2/2] : SDTfHv5h", + "3 | Schedule [1/5] : EDG 198819079068398816126.6320743394039", + "3 | Schedule [2/5] : 02725", + "3 | Schedule [3/5] : EDG 19483239707029615362.97315674072339", + "3 | Schedule [4/5] : 1397", + "3 | Schedule [5/5] : 515296908" + ], + "output_expert": [ + "0 | Vesting : Force vested transfer", + "1 | Source [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "1 | Source [2/2] : SDTfHv5h", + "2 | Target [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "2 | Target [2/2] : SDTfHv5h", + "3 | Schedule [1/5] : EDG 198819079068398816126.6320743394039", + "3 | Schedule [2/5] : 02725", + "3 | Schedule [3/5] : EDG 19483239707029615362.97315674072339", + "3 | Schedule [4/5] : 1397", + "3 | Schedule [5/5] : 515296908", + "4 | Chain : Edgeware", + "5 | Nonce : 0", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 491, + "name": "Treasuryreward_Set_current_payout", + "blob": "2000d2040000000000000000000000000000d503ae11030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Treasuryreward : Set current payout", + "1 | Payout : EDG 0.000000000000001234", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Treasuryreward : Set current payout", + "1 | Payout : EDG 0.000000000000001234", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 492, + "name": "Treasuryreward_Set_current_payout", + "blob": "2000d2040000000000000000000000000000d503ae11030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Treasuryreward : Set current payout", + "1 | Payout : EDG 0.000000000000001234", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Treasuryreward : Set current payout", + "1 | Payout : EDG 0.000000000000001234", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 493, + "name": "Treasuryreward_Set_current_payout", + "blob": "2000d2040000000000000000000000000000d503ae1103006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Treasuryreward : Set current payout", + "1 | Payout : EDG 0.000000000000001234", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Treasuryreward : Set current payout", + "1 | Payout : EDG 0.000000000000001234", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 494, + "name": "Treasuryreward_Set_current_payout", + "blob": "2000d2040000000000000000000000000000d5038d2403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Treasuryreward : Set current payout", + "1 | Payout : EDG 0.000000000000001234", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Treasuryreward : Set current payout", + "1 | Payout : EDG 0.000000000000001234", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 495, + "name": "Treasuryreward_Set_current_payout", + "blob": "2000d2040000000000000000000000000000d503006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Treasuryreward : Set current payout", + "1 | Payout : EDG 0.000000000000001234", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Treasuryreward : Set current payout", + "1 | Payout : EDG 0.000000000000001234", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 496, + "name": "Treasuryreward_Set_minting_interval", + "blob": "2001ff030000d503910133158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Treasuryreward : Set minting interval", + "1 | Interval : 1023", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Treasuryreward : Set minting interval", + "1 | Interval : 1023", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 497, + "name": "Treasuryreward_Set_minting_interval", + "blob": "2001ac350000d50391018ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Treasuryreward : Set minting interval", + "1 | Interval : 13740", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Treasuryreward : Set minting interval", + "1 | Interval : 13740", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 498, + "name": "Treasuryreward_Set_minting_interval", + "blob": "200100000000d503000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Treasuryreward : Set minting interval", + "1 | Interval : 0", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Treasuryreward : Set minting interval", + "1 | Interval : 0", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 499, + "name": "Treasuryreward_Set_minting_interval", + "blob": "2001b3e30100d5030403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Treasuryreward : Set minting interval", + "1 | Interval : 123827", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Treasuryreward : Set minting interval", + "1 | Interval : 123827", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 500, + "name": "Treasuryreward_Set_minting_interval", + "blob": "20017b000000d50391010b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Treasuryreward : Set minting interval", + "1 | Interval : 123", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Treasuryreward : Set minting interval", + "1 | Interval : 123", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 501, + "name": "Chainbridge_Set_threshold", + "blob": "2300d3040000d503ae11030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Chainbridge : Set threshold", + "1 | Threshold : 1235", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Chainbridge : Set threshold", + "1 | Threshold : 1235", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 502, + "name": "Chainbridge_Set_threshold", + "blob": "23009d1c0000d503046d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Chainbridge : Set threshold", + "1 | Threshold : 7325", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Chainbridge : Set threshold", + "1 | Threshold : 7325", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 503, + "name": "Chainbridge_Set_threshold", + "blob": "230034300000d503000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Chainbridge : Set threshold", + "1 | Threshold : 12340", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Chainbridge : Set threshold", + "1 | Threshold : 12340", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 504, + "name": "Chainbridge_Set_threshold", + "blob": "2300f7010000d503000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Chainbridge : Set threshold", + "1 | Threshold : 503", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Chainbridge : Set threshold", + "1 | Threshold : 503", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 505, + "name": "Chainbridge_Set_threshold", + "blob": "23009d1c0000d503ae11030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Chainbridge : Set threshold", + "1 | Threshold : 7325", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Chainbridge : Set threshold", + "1 | Threshold : 7325", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 506, + "name": "Chainbridge_Add_relayer", + "blob": "23043a7c18728de7c0d218d9003c299d23321dc154307f40290eae920c9a14df8841d503048ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Chainbridge : Add relayer", + "1 | V [1/2] : iqJT9NwpA3f4EpBLTXJJ59EzNx1S424Yvfkd7yg", + "1 | V [2/2] : rJDevzAR", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Chainbridge : Add relayer", + "1 | V [1/2] : iqJT9NwpA3f4EpBLTXJJ59EzNx1S424Yvfkd7yg", + "1 | V [2/2] : rJDevzAR", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 507, + "name": "Chainbridge_Add_relayer", + "blob": "23042cca058f2e1c64c04bd9b97014687c400a6bced5ce559a2ac23e5bfa89a60f10d503000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Chainbridge : Add relayer", + "1 | V [1/2] : iXLvuB6fsGt5JQ6cBV7VqbS1d2kSUEshqxLkQVq", + "1 | V [2/2] : Jk5843qn", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Chainbridge : Add relayer", + "1 | V [1/2] : iXLvuB6fsGt5JQ6cBV7VqbS1d2kSUEshqxLkQVq", + "1 | V [2/2] : Jk5843qn", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 508, + "name": "Chainbridge_Add_relayer", + "blob": "23042cca058f2e1c64c04bd9b97014687c400a6bced5ce559a2ac23e5bfa89a60f10d503046d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Chainbridge : Add relayer", + "1 | V [1/2] : iXLvuB6fsGt5JQ6cBV7VqbS1d2kSUEshqxLkQVq", + "1 | V [2/2] : Jk5843qn", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Chainbridge : Add relayer", + "1 | V [1/2] : iXLvuB6fsGt5JQ6cBV7VqbS1d2kSUEshqxLkQVq", + "1 | V [2/2] : Jk5843qn", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 509, + "name": "Chainbridge_Add_relayer", + "blob": "2304fc36502b06380fd21101013d7b678acf7ba77c3b0d070d2fa28da03ad6132c76d503ae110300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Chainbridge : Add relayer", + "1 | V [1/2] : oDK1d3PH2ckj69KyAVZdYyQi8L9Zb4Xp1UfuPP9", + "1 | V [2/2] : 4SGbP52D" + ], + "output_expert": [ + "0 | Chainbridge : Add relayer", + "1 | V [1/2] : oDK1d3PH2ckj69KyAVZdYyQi8L9Zb4Xp1UfuPP9", + "1 | V [2/2] : 4SGbP52D", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 510, + "name": "Chainbridge_Add_relayer", + "blob": "23049c0e53a8c0ca0f3623c056af9a8ea30b94057dba0262f541808b27efe430b975d503ae1103008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Chainbridge : Add relayer", + "1 | V [1/2] : m3EY3vTASFan5xtFj1vJXRQETywyYNpjgV6dv5Q", + "1 | V [2/2] : MUJ26AsQ", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Chainbridge : Add relayer", + "1 | V [1/2] : m3EY3vTASFan5xtFj1vJXRQETywyYNpjgV6dv5Q", + "1 | V [2/2] : MUJ26AsQ", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 511, + "name": "Chainbridge_Remove_relayer", + "blob": "23053a7c18728de7c0d218d9003c299d23321dc154307f40290eae920c9a14df8841d503ae1103008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Chainbridge : Remove relayer", + "1 | V [1/2] : iqJT9NwpA3f4EpBLTXJJ59EzNx1S424Yvfkd7yg", + "1 | V [2/2] : rJDevzAR", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Chainbridge : Remove relayer", + "1 | V [1/2] : iqJT9NwpA3f4EpBLTXJJ59EzNx1S424Yvfkd7yg", + "1 | V [2/2] : rJDevzAR", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 512, + "name": "Chainbridge_Remove_relayer", + "blob": "23053a7c18728de7c0d218d9003c299d23321dc154307f40290eae920c9a14df8841d5038d24002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Chainbridge : Remove relayer", + "1 | V [1/2] : iqJT9NwpA3f4EpBLTXJJ59EzNx1S424Yvfkd7yg", + "1 | V [2/2] : rJDevzAR" + ], + "output_expert": [ + "0 | Chainbridge : Remove relayer", + "1 | V [1/2] : iqJT9NwpA3f4EpBLTXJJ59EzNx1S424Yvfkd7yg", + "1 | V [2/2] : rJDevzAR", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 513, + "name": "Chainbridge_Remove_relayer", + "blob": "2305f0d79b5ca0e4bfe27f9e6440d003d0bf037a5721cb138d4d7a227056a38c3218d503ae11030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Chainbridge : Remove relayer", + "1 | V [1/2] : nxQMKYwLGxtr3Np6DqJsYNPE89GrBC9kKgG81Ug", + "1 | V [2/2] : Ew2yqvUu", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Chainbridge : Remove relayer", + "1 | V [1/2] : nxQMKYwLGxtr3Np6DqJsYNPE89GrBC9kKgG81Ug", + "1 | V [2/2] : Ew2yqvUu", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 514, + "name": "Chainbridge_Remove_relayer", + "blob": "23059c0e53a8c0ca0f3623c056af9a8ea30b94057dba0262f541808b27efe430b975d503910103d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Chainbridge : Remove relayer", + "1 | V [1/2] : m3EY3vTASFan5xtFj1vJXRQETywyYNpjgV6dv5Q", + "1 | V [2/2] : MUJ26AsQ", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Chainbridge : Remove relayer", + "1 | V [1/2] : m3EY3vTASFan5xtFj1vJXRQETywyYNpjgV6dv5Q", + "1 | V [2/2] : MUJ26AsQ", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 515, + "name": "Chainbridge_Remove_relayer", + "blob": "23052cca058f2e1c64c04bd9b97014687c400a6bced5ce559a2ac23e5bfa89a60f10d503046d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Chainbridge : Remove relayer", + "1 | V [1/2] : iXLvuB6fsGt5JQ6cBV7VqbS1d2kSUEshqxLkQVq", + "1 | V [2/2] : Jk5843qn", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Chainbridge : Remove relayer", + "1 | V [1/2] : iXLvuB6fsGt5JQ6cBV7VqbS1d2kSUEshqxLkQVq", + "1 | V [2/2] : Jk5843qn", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 516, + "name": "Edgebridge_Transfer", + "blob": "24012cca058f2e1c64c04bd9b97014687c400a6bced5ce559a2ac23e5bfa89a60f10d2040000000000000000000000000000d503048ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Edgebridge : Transfer", + "1 | To [1/2] : iXLvuB6fsGt5JQ6cBV7VqbS1d2kSUEshqxLkQVq", + "1 | To [2/2] : Jk5843qn", + "2 | Amount : EDG 0.000000000000001234", + "3 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Edgebridge : Transfer", + "1 | To [1/2] : iXLvuB6fsGt5JQ6cBV7VqbS1d2kSUEshqxLkQVq", + "1 | To [2/2] : Jk5843qn", + "2 | Amount : EDG 0.000000000000001234", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Tip : EDG 0.000000000055555555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 517, + "name": "Edgebridge_Transfer", + "blob": "2401f0d79b5ca0e4bfe27f9e6440d003d0bf037a5721cb138d4d7a227056a38c3218d2040000000000000000000000000000d5038d240b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Edgebridge : Transfer", + "1 | To [1/2] : nxQMKYwLGxtr3Np6DqJsYNPE89GrBC9kKgG81Ug", + "1 | To [2/2] : Ew2yqvUu", + "2 | Amount : EDG 0.000000000000001234", + "3 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Edgebridge : Transfer", + "1 | To [1/2] : nxQMKYwLGxtr3Np6DqJsYNPE89GrBC9kKgG81Ug", + "1 | To [2/2] : Ew2yqvUu", + "2 | Amount : EDG 0.000000000000001234", + "3 | Chain : Edgeware", + "4 | Nonce : 2339", + "5 | Tip : EDG 0.000005552342355555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 518, + "name": "Edgebridge_Transfer", + "blob": "24012cca058f2e1c64c04bd9b97014687c400a6bced5ce559a2ac23e5bfa89a60f10d2040000000000000000000000000000d5030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Edgebridge : Transfer", + "1 | To [1/2] : iXLvuB6fsGt5JQ6cBV7VqbS1d2kSUEshqxLkQVq", + "1 | To [2/2] : Jk5843qn", + "2 | Amount : EDG 0.000000000000001234", + "3 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Edgebridge : Transfer", + "1 | To [1/2] : iXLvuB6fsGt5JQ6cBV7VqbS1d2kSUEshqxLkQVq", + "1 | To [2/2] : Jk5843qn", + "2 | Amount : EDG 0.000000000000001234", + "3 | Chain : Edgeware", + "4 | Nonce : 0", + "5 | Tip : EDG 0.00000000123456789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 519, + "name": "Edgebridge_Transfer", + "blob": "2401fc36502b06380fd21101013d7b678acf7ba77c3b0d070d2fa28da03ad6132c76d2040000000000000000000000000000d5030433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Edgebridge : Transfer", + "1 | To [1/2] : oDK1d3PH2ckj69KyAVZdYyQi8L9Zb4Xp1UfuPP9", + "1 | To [2/2] : 4SGbP52D", + "2 | Amount : EDG 0.000000000000001234", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Edgebridge : Transfer", + "1 | To [1/2] : oDK1d3PH2ckj69KyAVZdYyQi8L9Zb4Xp1UfuPP9", + "1 | To [2/2] : 4SGbP52D", + "2 | Amount : EDG 0.000000000000001234", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "5 | Tip [2/2] : 56789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 520, + "name": "Edgebridge_Transfer", + "blob": "24019c0e53a8c0ca0f3623c056af9a8ea30b94057dba0262f541808b27efe430b975d2040000000000000000000000000000d5038d240b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Edgebridge : Transfer", + "1 | To [1/2] : m3EY3vTASFan5xtFj1vJXRQETywyYNpjgV6dv5Q", + "1 | To [2/2] : MUJ26AsQ", + "2 | Amount : EDG 0.000000000000001234", + "3 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Edgebridge : Transfer", + "1 | To [1/2] : m3EY3vTASFan5xtFj1vJXRQETywyYNpjgV6dv5Q", + "1 | To [2/2] : MUJ26AsQ", + "2 | Amount : EDG 0.000000000000001234", + "3 | Chain : Edgeware", + "4 | Nonce : 2339", + "5 | Tip : EDG 0.000005552342355555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 521, + "name": "Bounties_Propose_bounty", + "blob": "25008ed73e0d0102cf6e0bddae4392c389df38f86156f24ceb15d22310703852c1d3b33ad2609cbb81229cbd86889c15cdf14da89f5ed5bf0045e7d5a4b1866c1f902bbd52e12a4e59968f9fb25166055db3eee594d7b1e7336aeb8aaf3fddb768aa81f2b5423c8d3abd4242271fdb7745efaffc4731095cf3994e1a6a75de0680e881702f430fd6d5038d2433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Propose bounty", + "1 | Amount : EDG 0.000000000055555555", + "2 | Description [1/7] : cf6e0bddae4392c389df38f86156f24ceb15d2", + "2 | Description [2/7] : 2310703852c1d3b33ad2609cbb81229cbd8688", + "2 | Description [3/7] : 9c15cdf14da89f5ed5bf0045e7d5a4b1866c1f", + "2 | Description [4/7] : 902bbd52e12a4e59968f9fb25166055db3eee5", + "2 | Description [5/7] : 94d7b1e7336aeb8aaf3fddb768aa81f2b5423c", + "2 | Description [6/7] : 8d3abd4242271fdb7745efaffc4731095cf399", + "2 | Description [7/7] : 4e1a6a75de0680e881702f430fd6", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Bounties : Propose bounty", + "1 | Amount : EDG 0.000000000055555555", + "2 | Description [1/7] : cf6e0bddae4392c389df38f86156f24ceb15d2", + "2 | Description [2/7] : 2310703852c1d3b33ad2609cbb81229cbd8688", + "2 | Description [3/7] : 9c15cdf14da89f5ed5bf0045e7d5a4b1866c1f", + "2 | Description [4/7] : 902bbd52e12a4e59968f9fb25166055db3eee5", + "2 | Description [5/7] : 94d7b1e7336aeb8aaf3fddb768aa81f2b5423c", + "2 | Description [6/7] : 8d3abd4242271fdb7745efaffc4731095cf399", + "2 | Description [7/7] : 4e1a6a75de0680e881702f430fd6", + "3 | Chain : Edgeware", + "4 | Nonce : 2339", + "5 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "5 | Tip [2/2] : 56789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 522, + "name": "Bounties_Propose_bounty", + "blob": "2500000102cf6e0bddae4392c389df38f86156f24ceb15d22310703852c1d3b33ad2609cbb81229cbd86889c15cdf14da89f5ed5bf0045e7d5a4b1866c1f902bbd52e12a4e59968f9fb25166055db3eee594d7b1e7336aeb8aaf3fddb768aa81f2b5423c8d3abd4242271fdb7745efaffc4731095cf3994e1a6a75de0680e881702f430fd6d5038d248ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Propose bounty", + "1 | Amount : EDG 0.0", + "2 | Description [1/7] : cf6e0bddae4392c389df38f86156f24ceb15d2", + "2 | Description [2/7] : 2310703852c1d3b33ad2609cbb81229cbd8688", + "2 | Description [3/7] : 9c15cdf14da89f5ed5bf0045e7d5a4b1866c1f", + "2 | Description [4/7] : 902bbd52e12a4e59968f9fb25166055db3eee5", + "2 | Description [5/7] : 94d7b1e7336aeb8aaf3fddb768aa81f2b5423c", + "2 | Description [6/7] : 8d3abd4242271fdb7745efaffc4731095cf399", + "2 | Description [7/7] : 4e1a6a75de0680e881702f430fd6", + "3 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Bounties : Propose bounty", + "1 | Amount : EDG 0.0", + "2 | Description [1/7] : cf6e0bddae4392c389df38f86156f24ceb15d2", + "2 | Description [2/7] : 2310703852c1d3b33ad2609cbb81229cbd8688", + "2 | Description [3/7] : 9c15cdf14da89f5ed5bf0045e7d5a4b1866c1f", + "2 | Description [4/7] : 902bbd52e12a4e59968f9fb25166055db3eee5", + "2 | Description [5/7] : 94d7b1e7336aeb8aaf3fddb768aa81f2b5423c", + "2 | Description [6/7] : 8d3abd4242271fdb7745efaffc4731095cf399", + "2 | Description [7/7] : 4e1a6a75de0680e881702f430fd6", + "3 | Chain : Edgeware", + "4 | Nonce : 2339", + "5 | Tip : EDG 0.000000000055555555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 523, + "name": "Bounties_Propose_bounty", + "blob": "250033158139ae28a3dfaac5fe1560a5e9e05c80008bca3e10d17b2cfc71ef145d9b2d5d4a3dfb208474480304b3080a2e4131c1d503008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Propose bounty", + "1 | Amount [1/2] : EDG 123456789012345678901.2345678901234", + "1 | Amount [2/2] : 56789", + "2 | Description [1/2] : 008bca3e10d17b2cfc71ef145d9b2d5d4a3dfb", + "2 | Description [2/2] : 208474480304b3080a2e4131c1", + "3 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Bounties : Propose bounty", + "1 | Amount [1/2] : EDG 123456789012345678901.2345678901234", + "1 | Amount [2/2] : 56789", + "2 | Description [1/2] : 008bca3e10d17b2cfc71ef145d9b2d5d4a3dfb", + "2 | Description [2/2] : 208474480304b3080a2e4131c1", + "3 | Chain : Edgeware", + "4 | Nonce : 0", + "5 | Tip : EDG 0.000000000055555555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 524, + "name": "Bounties_Propose_bounty", + "blob": "250003d20296490102cf6e0bddae4392c389df38f86156f24ceb15d22310703852c1d3b33ad2609cbb81229cbd86889c15cdf14da89f5ed5bf0045e7d5a4b1866c1f902bbd52e12a4e59968f9fb25166055db3eee594d7b1e7336aeb8aaf3fddb768aa81f2b5423c8d3abd4242271fdb7745efaffc4731095cf3994e1a6a75de0680e881702f430fd6d503040b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Propose bounty", + "1 | Amount : EDG 0.00000000123456789", + "2 | Description [1/7] : cf6e0bddae4392c389df38f86156f24ceb15d2", + "2 | Description [2/7] : 2310703852c1d3b33ad2609cbb81229cbd8688", + "2 | Description [3/7] : 9c15cdf14da89f5ed5bf0045e7d5a4b1866c1f", + "2 | Description [4/7] : 902bbd52e12a4e59968f9fb25166055db3eee5", + "2 | Description [5/7] : 94d7b1e7336aeb8aaf3fddb768aa81f2b5423c", + "2 | Description [6/7] : 8d3abd4242271fdb7745efaffc4731095cf399", + "2 | Description [7/7] : 4e1a6a75de0680e881702f430fd6", + "3 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Bounties : Propose bounty", + "1 | Amount : EDG 0.00000000123456789", + "2 | Description [1/7] : cf6e0bddae4392c389df38f86156f24ceb15d2", + "2 | Description [2/7] : 2310703852c1d3b33ad2609cbb81229cbd8688", + "2 | Description [3/7] : 9c15cdf14da89f5ed5bf0045e7d5a4b1866c1f", + "2 | Description [4/7] : 902bbd52e12a4e59968f9fb25166055db3eee5", + "2 | Description [5/7] : 94d7b1e7336aeb8aaf3fddb768aa81f2b5423c", + "2 | Description [6/7] : 8d3abd4242271fdb7745efaffc4731095cf399", + "2 | Description [7/7] : 4e1a6a75de0680e881702f430fd6", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Tip : EDG 0.000005552342355555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 525, + "name": "Bounties_Propose_bounty", + "blob": "25000b63ce64c10c050102cf6e0bddae4392c389df38f86156f24ceb15d22310703852c1d3b33ad2609cbb81229cbd86889c15cdf14da89f5ed5bf0045e7d5a4b1866c1f902bbd52e12a4e59968f9fb25166055db3eee594d7b1e7336aeb8aaf3fddb768aa81f2b5423c8d3abd4242271fdb7745efaffc4731095cf3994e1a6a75de0680e881702f430fd6d503910133158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Propose bounty", + "1 | Amount : EDG 0.000005552342355555", + "2 | Description [1/7] : cf6e0bddae4392c389df38f86156f24ceb15d2", + "2 | Description [2/7] : 2310703852c1d3b33ad2609cbb81229cbd8688", + "2 | Description [3/7] : 9c15cdf14da89f5ed5bf0045e7d5a4b1866c1f", + "2 | Description [4/7] : 902bbd52e12a4e59968f9fb25166055db3eee5", + "2 | Description [5/7] : 94d7b1e7336aeb8aaf3fddb768aa81f2b5423c", + "2 | Description [6/7] : 8d3abd4242271fdb7745efaffc4731095cf399", + "2 | Description [7/7] : 4e1a6a75de0680e881702f430fd6", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Bounties : Propose bounty", + "1 | Amount : EDG 0.000005552342355555", + "2 | Description [1/7] : cf6e0bddae4392c389df38f86156f24ceb15d2", + "2 | Description [2/7] : 2310703852c1d3b33ad2609cbb81229cbd8688", + "2 | Description [3/7] : 9c15cdf14da89f5ed5bf0045e7d5a4b1866c1f", + "2 | Description [4/7] : 902bbd52e12a4e59968f9fb25166055db3eee5", + "2 | Description [5/7] : 94d7b1e7336aeb8aaf3fddb768aa81f2b5423c", + "2 | Description [6/7] : 8d3abd4242271fdb7745efaffc4731095cf399", + "2 | Description [7/7] : 4e1a6a75de0680e881702f430fd6", + "3 | Chain : Edgeware", + "4 | Nonce : 100", + "5 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "5 | Tip [2/2] : 56789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 526, + "name": "Bounties_Approve_bounty", + "blob": "25018ae32100d5039101002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Approve bounty", + "1 | Bounty id : 555234" + ], + "output_expert": [ + "0 | Bounties : Approve bounty", + "1 | Bounty id : 555234", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 527, + "name": "Bounties_Approve_bounty", + "blob": "2501de6d0100d503910103d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Approve bounty", + "1 | Bounty id : 23415", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Bounties : Approve bounty", + "1 | Bounty id : 23415", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 528, + "name": "Bounties_Approve_bounty", + "blob": "25018ae32100d50391010b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Approve bounty", + "1 | Bounty id : 555234", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Bounties : Approve bounty", + "1 | Bounty id : 555234", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 529, + "name": "Bounties_Approve_bounty", + "blob": "2501de6d0100d5030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Approve bounty", + "1 | Bounty id : 23415", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Bounties : Approve bounty", + "1 | Bounty id : 23415", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 530, + "name": "Bounties_Approve_bounty", + "blob": "25018ae32100d5038d248ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Approve bounty", + "1 | Bounty id : 555234", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Bounties : Approve bounty", + "1 | Bounty id : 555234", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 531, + "name": "Bounties_Propose_curator", + "blob": "25028ae32100001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac633158139ae28a3dfaac5fe1560a5e9e05cd503048ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Propose curator", + "1 | Bounty id : 555234", + "2 | Curator [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "2 | Curator [2/2] : SDTfHv5h", + "3 | Fee [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Fee [2/2] : 56789", + "4 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Bounties : Propose curator", + "1 | Bounty id : 555234", + "2 | Curator [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "2 | Curator [2/2] : SDTfHv5h", + "3 | Fee [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Fee [2/2] : 56789", + "4 | Chain : Edgeware", + "5 | Nonce : 1", + "6 | Tip : EDG 0.000000000055555555", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 532, + "name": "Bounties_Propose_curator", + "blob": "250200001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac60b63ce64c10c05d50391010b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Propose curator", + "1 | Bounty id : 0", + "2 | Curator [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "2 | Curator [2/2] : SDTfHv5h", + "3 | Fee : EDG 0.000005552342355555", + "4 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Bounties : Propose curator", + "1 | Bounty id : 0", + "2 | Curator [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "2 | Curator [2/2] : SDTfHv5h", + "3 | Fee : EDG 0.000005552342355555", + "4 | Chain : Edgeware", + "5 | Nonce : 100", + "6 | Tip : EDG 0.000005552342355555", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 533, + "name": "Bounties_Propose_curator", + "blob": "25028ae32100001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac68ed73e0dd503ae1103008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Propose curator", + "1 | Bounty id : 555234", + "2 | Curator [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "2 | Curator [2/2] : SDTfHv5h", + "3 | Fee : EDG 0.000000000055555555", + "4 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Bounties : Propose curator", + "1 | Bounty id : 555234", + "2 | Curator [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "2 | Curator [2/2] : SDTfHv5h", + "3 | Fee : EDG 0.000000000055555555", + "4 | Chain : Edgeware", + "5 | Nonce : 50283", + "6 | Tip : EDG 0.000000000055555555", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 534, + "name": "Bounties_Propose_curator", + "blob": "25026d0f001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac60b63ce64c10c05d50391016d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Propose curator", + "1 | Bounty id : 987", + "2 | Curator [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "2 | Curator [2/2] : SDTfHv5h", + "3 | Fee : EDG 0.000005552342355555", + "4 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Bounties : Propose curator", + "1 | Bounty id : 987", + "2 | Curator [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "2 | Curator [2/2] : SDTfHv5h", + "3 | Fee : EDG 0.000005552342355555", + "4 | Chain : Edgeware", + "5 | Nonce : 100", + "6 | Tip : EDG 0.000000000000000987", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 535, + "name": "Bounties_Propose_curator", + "blob": "250200001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac68ed73e0dd5038d240b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Propose curator", + "1 | Bounty id : 0", + "2 | Curator [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "2 | Curator [2/2] : SDTfHv5h", + "3 | Fee : EDG 0.000000000055555555", + "4 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Bounties : Propose curator", + "1 | Bounty id : 0", + "2 | Curator [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "2 | Curator [2/2] : SDTfHv5h", + "3 | Fee : EDG 0.000000000055555555", + "4 | Chain : Edgeware", + "5 | Nonce : 2339", + "6 | Tip : EDG 0.000005552342355555", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 536, + "name": "Bounties_Unassign_curator", + "blob": "25038ae32100d5038d246d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Unassign curator", + "1 | Bounty id : 555234", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Bounties : Unassign curator", + "1 | Bounty id : 555234", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 537, + "name": "Bounties_Unassign_curator", + "blob": "25036d0fd5038d246d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Unassign curator", + "1 | Bounty id : 987", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Bounties : Unassign curator", + "1 | Bounty id : 987", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 538, + "name": "Bounties_Unassign_curator", + "blob": "250300d50391016d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Unassign curator", + "1 | Bounty id : 0", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Bounties : Unassign curator", + "1 | Bounty id : 0", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 539, + "name": "Bounties_Unassign_curator", + "blob": "25038ae32100d5030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Unassign curator", + "1 | Bounty id : 555234", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Bounties : Unassign curator", + "1 | Bounty id : 555234", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 540, + "name": "Bounties_Unassign_curator", + "blob": "250300d503048ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Unassign curator", + "1 | Bounty id : 0", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Bounties : Unassign curator", + "1 | Bounty id : 0", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 541, + "name": "Bounties_Accept_curator", + "blob": "25048ae32100d5030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Accept curator", + "1 | Bounty id : 555234", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Bounties : Accept curator", + "1 | Bounty id : 555234", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 542, + "name": "Bounties_Accept_curator", + "blob": "250400d5030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Accept curator", + "1 | Bounty id : 0", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Bounties : Accept curator", + "1 | Bounty id : 0", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 543, + "name": "Bounties_Accept_curator", + "blob": "2504de6d0100d50391016d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Accept curator", + "1 | Bounty id : 23415", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Bounties : Accept curator", + "1 | Bounty id : 23415", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 544, + "name": "Bounties_Accept_curator", + "blob": "25048ae32100d5030403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Accept curator", + "1 | Bounty id : 555234", + "2 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Bounties : Accept curator", + "1 | Bounty id : 555234", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.00000000123456789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 545, + "name": "Bounties_Accept_curator", + "blob": "2504de6d0100d503ae11030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Accept curator", + "1 | Bounty id : 23415", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Bounties : Accept curator", + "1 | Bounty id : 23415", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 546, + "name": "Bounties_Award_bounty", + "blob": "250500001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac6d503ae11030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Award bounty", + "1 | Bounty id : 0", + "2 | Beneficiary [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "2 | Beneficiary [2/2] : SDTfHv5h", + "3 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Bounties : Award bounty", + "1 | Bounty id : 0", + "2 | Beneficiary [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "2 | Beneficiary [2/2] : SDTfHv5h", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Tip : EDG 0.00000000123456789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 547, + "name": "Bounties_Award_bounty", + "blob": "250500001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac6d5039101002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Award bounty", + "1 | Bounty id : 0", + "2 | Beneficiary [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "2 | Beneficiary [2/2] : SDTfHv5h" + ], + "output_expert": [ + "0 | Bounties : Award bounty", + "1 | Bounty id : 0", + "2 | Beneficiary [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "2 | Beneficiary [2/2] : SDTfHv5h", + "3 | Chain : Edgeware", + "4 | Nonce : 100", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 548, + "name": "Bounties_Award_bounty", + "blob": "25058ae32100001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac6d503046d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Award bounty", + "1 | Bounty id : 555234", + "2 | Beneficiary [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "2 | Beneficiary [2/2] : SDTfHv5h", + "3 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Bounties : Award bounty", + "1 | Bounty id : 555234", + "2 | Beneficiary [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "2 | Beneficiary [2/2] : SDTfHv5h", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Tip : EDG 0.000000000000000987", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 549, + "name": "Bounties_Award_bounty", + "blob": "25056d0f001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac6d5038d248ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Award bounty", + "1 | Bounty id : 987", + "2 | Beneficiary [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "2 | Beneficiary [2/2] : SDTfHv5h", + "3 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Bounties : Award bounty", + "1 | Bounty id : 987", + "2 | Beneficiary [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "2 | Beneficiary [2/2] : SDTfHv5h", + "3 | Chain : Edgeware", + "4 | Nonce : 2339", + "5 | Tip : EDG 0.000000000055555555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 550, + "name": "Bounties_Award_bounty", + "blob": "25056d0f001b87b7fc0586195ab18e8c7746ff27dcd3cf2ea7600ca4bf54acc669dbffaac6d503040b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Award bounty", + "1 | Bounty id : 987", + "2 | Beneficiary [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "2 | Beneficiary [2/2] : SDTfHv5h", + "3 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Bounties : Award bounty", + "1 | Bounty id : 987", + "2 | Beneficiary [1/2] : i8iRK28QeDGdHyUmX82BonQrBpbmQZWWSsfgvco", + "2 | Beneficiary [2/2] : SDTfHv5h", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Tip : EDG 0.000005552342355555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 551, + "name": "Bounties_Claim_bounty", + "blob": "25068ae32100d503910133158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Claim bounty", + "1 | Bounty id : 555234", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Bounties : Claim bounty", + "1 | Bounty id : 555234", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 552, + "name": "Bounties_Claim_bounty", + "blob": "2506de6d0100d503ae1103000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Claim bounty", + "1 | Bounty id : 23415", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Bounties : Claim bounty", + "1 | Bounty id : 23415", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 553, + "name": "Bounties_Claim_bounty", + "blob": "25068ae32100d5030433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Claim bounty", + "1 | Bounty id : 555234", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Bounties : Claim bounty", + "1 | Bounty id : 555234", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 554, + "name": "Bounties_Claim_bounty", + "blob": "25068ae32100d5038d248ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Claim bounty", + "1 | Bounty id : 555234", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Bounties : Claim bounty", + "1 | Bounty id : 555234", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 555, + "name": "Bounties_Claim_bounty", + "blob": "25066d0fd503006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Claim bounty", + "1 | Bounty id : 987", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Bounties : Claim bounty", + "1 | Bounty id : 987", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 556, + "name": "Bounties_Close_bounty", + "blob": "25076d0fd503ae1103000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Close bounty", + "1 | Bounty id : 987", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Bounties : Close bounty", + "1 | Bounty id : 987", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 557, + "name": "Bounties_Close_bounty", + "blob": "250700d503006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Close bounty", + "1 | Bounty id : 0", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Bounties : Close bounty", + "1 | Bounty id : 0", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 558, + "name": "Bounties_Close_bounty", + "blob": "2507de6d0100d5030433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Close bounty", + "1 | Bounty id : 23415", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Bounties : Close bounty", + "1 | Bounty id : 23415", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 559, + "name": "Bounties_Close_bounty", + "blob": "25076d0fd50300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Close bounty", + "1 | Bounty id : 987" + ], + "output_expert": [ + "0 | Bounties : Close bounty", + "1 | Bounty id : 987", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 560, + "name": "Bounties_Close_bounty", + "blob": "2507de6d0100d50300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Close bounty", + "1 | Bounty id : 23415" + ], + "output_expert": [ + "0 | Bounties : Close bounty", + "1 | Bounty id : 23415", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 561, + "name": "Bounties_Extend_bounty_expiry", + "blob": "2508000101b2c41fb0ccedfa1e14147b49507e856e54afb2edb7e48c241d45b2f98b0dd76f46f79a541c9e9db5f54389a198aa542e79eb61036cc2f5818e9acb2143a842f4d503ae1103000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Extend bounty expiry", + "1 | Bounty id : 0", + "2 | Remark [1/4] : b2c41fb0ccedfa1e14147b49507e856e54afb2", + "2 | Remark [2/4] : edb7e48c241d45b2f98b0dd76f46f79a541c9e", + "2 | Remark [3/4] : 9db5f54389a198aa542e79eb61036cc2f5818e", + "2 | Remark [4/4] : 9acb2143a842f4", + "3 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Bounties : Extend bounty expiry", + "1 | Bounty id : 0", + "2 | Remark [1/4] : b2c41fb0ccedfa1e14147b49507e856e54afb2", + "2 | Remark [2/4] : edb7e48c241d45b2f98b0dd76f46f79a541c9e", + "2 | Remark [3/4] : 9db5f54389a198aa542e79eb61036cc2f5818e", + "2 | Remark [4/4] : 9acb2143a842f4", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Tip : EDG 0.000005552342355555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 562, + "name": "Bounties_Extend_bounty_expiry", + "blob": "2508de6d0100010104c7666eb5fd586d1a57965e62578472fcde1857325a569c0bc8ab7ae48f78605c8ab160bf17fba894f0e596590387b45a0fa2bac6da69a1a5ce6ee10010fff1d5038d240b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Extend bounty expiry", + "1 | Bounty id : 23415", + "2 | Remark [1/4] : 04c7666eb5fd586d1a57965e62578472fcde18", + "2 | Remark [2/4] : 57325a569c0bc8ab7ae48f78605c8ab160bf17", + "2 | Remark [3/4] : fba894f0e596590387b45a0fa2bac6da69a1a5", + "2 | Remark [4/4] : ce6ee10010fff1", + "3 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Bounties : Extend bounty expiry", + "1 | Bounty id : 23415", + "2 | Remark [1/4] : 04c7666eb5fd586d1a57965e62578472fcde18", + "2 | Remark [2/4] : 57325a569c0bc8ab7ae48f78605c8ab160bf17", + "2 | Remark [3/4] : fba894f0e596590387b45a0fa2bac6da69a1a5", + "2 | Remark [4/4] : ce6ee10010fff1", + "3 | Chain : Edgeware", + "4 | Nonce : 2339", + "5 | Tip : EDG 0.000005552342355555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 563, + "name": "Bounties_Extend_bounty_expiry", + "blob": "250800010234988545b1ec4582a1fb89c9de980f64f2b3b06a3fcdf8ad8262cac3055dceb6e798126532162a71974bb41dfc71b564df6ffc276836d6ce8f649fe8267b4d5346d223b167ff7df85f3e7989f20b0a37c4615a1d06b6182622c0d50bb8825a71d710aafb00f7d703f3daed9e77896b87e14cf12c7cca8efcec263bb7128217e7d503048ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Extend bounty expiry", + "1 | Bounty id : 0", + "2 | Remark [1/7] : 34988545b1ec4582a1fb89c9de980f64f2b3b0", + "2 | Remark [2/7] : 6a3fcdf8ad8262cac3055dceb6e79812653216", + "2 | Remark [3/7] : 2a71974bb41dfc71b564df6ffc276836d6ce8f", + "2 | Remark [4/7] : 649fe8267b4d5346d223b167ff7df85f3e7989", + "2 | Remark [5/7] : f20b0a37c4615a1d06b6182622c0d50bb8825a", + "2 | Remark [6/7] : 71d710aafb00f7d703f3daed9e77896b87e14c", + "2 | Remark [7/7] : f12c7cca8efcec263bb7128217e7", + "3 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Bounties : Extend bounty expiry", + "1 | Bounty id : 0", + "2 | Remark [1/7] : 34988545b1ec4582a1fb89c9de980f64f2b3b0", + "2 | Remark [2/7] : 6a3fcdf8ad8262cac3055dceb6e79812653216", + "2 | Remark [3/7] : 2a71974bb41dfc71b564df6ffc276836d6ce8f", + "2 | Remark [4/7] : 649fe8267b4d5346d223b167ff7df85f3e7989", + "2 | Remark [5/7] : f20b0a37c4615a1d06b6182622c0d50bb8825a", + "2 | Remark [6/7] : 71d710aafb00f7d703f3daed9e77896b87e14c", + "2 | Remark [7/7] : f12c7cca8efcec263bb7128217e7", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Tip : EDG 0.000000000055555555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 564, + "name": "Bounties_Extend_bounty_expiry", + "blob": "25088ae32100010191fbb072444e9084c96a7763c0ddfee99ed3c67ce44f67caf5bab4b3cb5b1c4967a79dced7d65c42297630513a56b2b93c7c2ab418315e4d2346f52334d55141d5038d246d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Extend bounty expiry", + "1 | Bounty id : 555234", + "2 | Remark [1/4] : 91fbb072444e9084c96a7763c0ddfee99ed3c6", + "2 | Remark [2/4] : 7ce44f67caf5bab4b3cb5b1c4967a79dced7d6", + "2 | Remark [3/4] : 5c42297630513a56b2b93c7c2ab418315e4d23", + "2 | Remark [4/4] : 46f52334d55141", + "3 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Bounties : Extend bounty expiry", + "1 | Bounty id : 555234", + "2 | Remark [1/4] : 91fbb072444e9084c96a7763c0ddfee99ed3c6", + "2 | Remark [2/4] : 7ce44f67caf5bab4b3cb5b1c4967a79dced7d6", + "2 | Remark [3/4] : 5c42297630513a56b2b93c7c2ab418315e4d23", + "2 | Remark [4/4] : 46f52334d55141", + "3 | Chain : Edgeware", + "4 | Nonce : 2339", + "5 | Tip : EDG 0.000000000000000987", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 565, + "name": "Bounties_Extend_bounty_expiry", + "blob": "25088ae321008096ab01ac193b73fcc76aa234b12a329bc86f9f152b0ae6ffd64e1c32ca7ea706d50391018ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Bounties : Extend bounty expiry", + "1 | Bounty id : 555234", + "2 | Remark [1/2] : 96ab01ac193b73fcc76aa234b12a329bc86f9f", + "2 | Remark [2/2] : 152b0ae6ffd64e1c32ca7ea706", + "3 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Bounties : Extend bounty expiry", + "1 | Bounty id : 555234", + "2 | Remark [1/2] : 96ab01ac193b73fcc76aa234b12a329bc86f9f", + "2 | Remark [2/2] : 152b0ae6ffd64e1c32ca7ea706", + "3 | Chain : Edgeware", + "4 | Nonce : 100", + "5 | Tip : EDG 0.000000000055555555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 566, + "name": "Tips_Report_awesome", + "blob": "26000102cf6e0bddae4392c389df38f86156f24ceb15d22310703852c1d3b33ad2609cbb81229cbd86889c15cdf14da89f5ed5bf0045e7d5a4b1866c1f902bbd52e12a4e59968f9fb25166055db3eee594d7b1e7336aeb8aaf3fddb768aa81f2b5423c8d3abd4242271fdb7745efaffc4731095cf3994e1a6a75de0680e881702f430fd62cca058f2e1c64c04bd9b97014687c400a6bced5ce559a2ac23e5bfa89a60f10d503ae11030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Tips : Report awesome", + "1 | Reason [1/7] : cf6e0bddae4392c389df38f86156f24ceb15d2", + "1 | Reason [2/7] : 2310703852c1d3b33ad2609cbb81229cbd8688", + "1 | Reason [3/7] : 9c15cdf14da89f5ed5bf0045e7d5a4b1866c1f", + "1 | Reason [4/7] : 902bbd52e12a4e59968f9fb25166055db3eee5", + "1 | Reason [5/7] : 94d7b1e7336aeb8aaf3fddb768aa81f2b5423c", + "1 | Reason [6/7] : 8d3abd4242271fdb7745efaffc4731095cf399", + "1 | Reason [7/7] : 4e1a6a75de0680e881702f430fd6", + "2 | Who [1/2] : iXLvuB6fsGt5JQ6cBV7VqbS1d2kSUEshqxLkQVq", + "2 | Who [2/2] : Jk5843qn", + "3 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Tips : Report awesome", + "1 | Reason [1/7] : cf6e0bddae4392c389df38f86156f24ceb15d2", + "1 | Reason [2/7] : 2310703852c1d3b33ad2609cbb81229cbd8688", + "1 | Reason [3/7] : 9c15cdf14da89f5ed5bf0045e7d5a4b1866c1f", + "1 | Reason [4/7] : 902bbd52e12a4e59968f9fb25166055db3eee5", + "1 | Reason [5/7] : 94d7b1e7336aeb8aaf3fddb768aa81f2b5423c", + "1 | Reason [6/7] : 8d3abd4242271fdb7745efaffc4731095cf399", + "1 | Reason [7/7] : 4e1a6a75de0680e881702f430fd6", + "2 | Who [1/2] : iXLvuB6fsGt5JQ6cBV7VqbS1d2kSUEshqxLkQVq", + "2 | Who [2/2] : Jk5843qn", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Tip : EDG 0.00000000123456789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 567, + "name": "Tips_Report_awesome", + "blob": "26000101b2c41fb0ccedfa1e14147b49507e856e54afb2edb7e48c241d45b2f98b0dd76f46f79a541c9e9db5f54389a198aa542e79eb61036cc2f5818e9acb2143a842f42a432fe80ff72d33204e68b384fcd88bfc19ca5060055e78f8ef4dfc70872874d5038d240b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Tips : Report awesome", + "1 | Reason [1/4] : b2c41fb0ccedfa1e14147b49507e856e54afb2", + "1 | Reason [2/4] : edb7e48c241d45b2f98b0dd76f46f79a541c9e", + "1 | Reason [3/4] : 9db5f54389a198aa542e79eb61036cc2f5818e", + "1 | Reason [4/4] : 9acb2143a842f4", + "2 | Who [1/2] : iU2nCZ2wJUWUw6BpnWbcXY727JgLhM4dm5WuhLd", + "2 | Who [2/2] : BKhzuLGR", + "3 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Tips : Report awesome", + "1 | Reason [1/4] : b2c41fb0ccedfa1e14147b49507e856e54afb2", + "1 | Reason [2/4] : edb7e48c241d45b2f98b0dd76f46f79a541c9e", + "1 | Reason [3/4] : 9db5f54389a198aa542e79eb61036cc2f5818e", + "1 | Reason [4/4] : 9acb2143a842f4", + "2 | Who [1/2] : iU2nCZ2wJUWUw6BpnWbcXY727JgLhM4dm5WuhLd", + "2 | Who [2/2] : BKhzuLGR", + "3 | Chain : Edgeware", + "4 | Nonce : 2339", + "5 | Tip : EDG 0.000005552342355555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 568, + "name": "Tips_Report_awesome", + "blob": "2600010191fbb072444e9084c96a7763c0ddfee99ed3c67ce44f67caf5bab4b3cb5b1c4967a79dced7d65c42297630513a56b2b93c7c2ab418315e4d2346f52334d551419c0e53a8c0ca0f3623c056af9a8ea30b94057dba0262f541808b27efe430b975d503910103d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Tips : Report awesome", + "1 | Reason [1/4] : 91fbb072444e9084c96a7763c0ddfee99ed3c6", + "1 | Reason [2/4] : 7ce44f67caf5bab4b3cb5b1c4967a79dced7d6", + "1 | Reason [3/4] : 5c42297630513a56b2b93c7c2ab418315e4d23", + "1 | Reason [4/4] : 46f52334d55141", + "2 | Who [1/2] : m3EY3vTASFan5xtFj1vJXRQETywyYNpjgV6dv5Q", + "2 | Who [2/2] : MUJ26AsQ", + "3 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Tips : Report awesome", + "1 | Reason [1/4] : 91fbb072444e9084c96a7763c0ddfee99ed3c6", + "1 | Reason [2/4] : 7ce44f67caf5bab4b3cb5b1c4967a79dced7d6", + "1 | Reason [3/4] : 5c42297630513a56b2b93c7c2ab418315e4d23", + "1 | Reason [4/4] : 46f52334d55141", + "2 | Who [1/2] : m3EY3vTASFan5xtFj1vJXRQETywyYNpjgV6dv5Q", + "2 | Who [2/2] : MUJ26AsQ", + "3 | Chain : Edgeware", + "4 | Nonce : 100", + "5 | Tip : EDG 0.00000000123456789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 569, + "name": "Tips_Report_awesome", + "blob": "2600010261b2f48ba11a70bce18ae644216231b55ebce5f950084c360402b60e4b224f0eafa8316529b77c12e5acaba3884505751fbe0d7a91d7368f0e599f5f3aa2362f7b6dd94aa1be2b309ab126ae960f349cbbae09eb005c7783177aef11a55513d97edc49fd36aa3b6aa83997aba8ad68e0c0ebef22833a061ce1d2096b7c6ef9269c0e53a8c0ca0f3623c056af9a8ea30b94057dba0262f541808b27efe430b975d503ae1103006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Tips : Report awesome", + "1 | Reason [1/7] : 61b2f48ba11a70bce18ae644216231b55ebce5", + "1 | Reason [2/7] : f950084c360402b60e4b224f0eafa8316529b7", + "1 | Reason [3/7] : 7c12e5acaba3884505751fbe0d7a91d7368f0e", + "1 | Reason [4/7] : 599f5f3aa2362f7b6dd94aa1be2b309ab126ae", + "1 | Reason [5/7] : 960f349cbbae09eb005c7783177aef11a55513", + "1 | Reason [6/7] : d97edc49fd36aa3b6aa83997aba8ad68e0c0eb", + "1 | Reason [7/7] : ef22833a061ce1d2096b7c6ef926", + "2 | Who [1/2] : m3EY3vTASFan5xtFj1vJXRQETywyYNpjgV6dv5Q", + "2 | Who [2/2] : MUJ26AsQ", + "3 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Tips : Report awesome", + "1 | Reason [1/7] : 61b2f48ba11a70bce18ae644216231b55ebce5", + "1 | Reason [2/7] : f950084c360402b60e4b224f0eafa8316529b7", + "1 | Reason [3/7] : 7c12e5acaba3884505751fbe0d7a91d7368f0e", + "1 | Reason [4/7] : 599f5f3aa2362f7b6dd94aa1be2b309ab126ae", + "1 | Reason [5/7] : 960f349cbbae09eb005c7783177aef11a55513", + "1 | Reason [6/7] : d97edc49fd36aa3b6aa83997aba8ad68e0c0eb", + "1 | Reason [7/7] : ef22833a061ce1d2096b7c6ef926", + "2 | Who [1/2] : m3EY3vTASFan5xtFj1vJXRQETywyYNpjgV6dv5Q", + "2 | Who [2/2] : MUJ26AsQ", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Tip : EDG 0.000000000000000987", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 570, + "name": "Tips_Report_awesome", + "blob": "2600010234988545b1ec4582a1fb89c9de980f64f2b3b06a3fcdf8ad8262cac3055dceb6e798126532162a71974bb41dfc71b564df6ffc276836d6ce8f649fe8267b4d5346d223b167ff7df85f3e7989f20b0a37c4615a1d06b6182622c0d50bb8825a71d710aafb00f7d703f3daed9e77896b87e14cf12c7cca8efcec263bb7128217e73a7c18728de7c0d218d9003c299d23321dc154307f40290eae920c9a14df8841d50391018ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Tips : Report awesome", + "1 | Reason [1/7] : 34988545b1ec4582a1fb89c9de980f64f2b3b0", + "1 | Reason [2/7] : 6a3fcdf8ad8262cac3055dceb6e79812653216", + "1 | Reason [3/7] : 2a71974bb41dfc71b564df6ffc276836d6ce8f", + "1 | Reason [4/7] : 649fe8267b4d5346d223b167ff7df85f3e7989", + "1 | Reason [5/7] : f20b0a37c4615a1d06b6182622c0d50bb8825a", + "1 | Reason [6/7] : 71d710aafb00f7d703f3daed9e77896b87e14c", + "1 | Reason [7/7] : f12c7cca8efcec263bb7128217e7", + "2 | Who [1/2] : iqJT9NwpA3f4EpBLTXJJ59EzNx1S424Yvfkd7yg", + "2 | Who [2/2] : rJDevzAR", + "3 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Tips : Report awesome", + "1 | Reason [1/7] : 34988545b1ec4582a1fb89c9de980f64f2b3b0", + "1 | Reason [2/7] : 6a3fcdf8ad8262cac3055dceb6e79812653216", + "1 | Reason [3/7] : 2a71974bb41dfc71b564df6ffc276836d6ce8f", + "1 | Reason [4/7] : 649fe8267b4d5346d223b167ff7df85f3e7989", + "1 | Reason [5/7] : f20b0a37c4615a1d06b6182622c0d50bb8825a", + "1 | Reason [6/7] : 71d710aafb00f7d703f3daed9e77896b87e14c", + "1 | Reason [7/7] : f12c7cca8efcec263bb7128217e7", + "2 | Who [1/2] : iqJT9NwpA3f4EpBLTXJJ59EzNx1S424Yvfkd7yg", + "2 | Who [2/2] : rJDevzAR", + "3 | Chain : Edgeware", + "4 | Nonce : 100", + "5 | Tip : EDG 0.000000000055555555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 571, + "name": "Tips_Retract_tip", + "blob": "26010000000000000000000000000000000000000000000000000000000000000000d503910133158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Tips : Retract tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Tips : Retract tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 572, + "name": "Tips_Retract_tip", + "blob": "26010000000000000000000000000000000000000000000000000000000000000000d503ae11030033158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Tips : Retract tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Tips : Retract tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "4 | Tip [2/2] : 56789", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 573, + "name": "Tips_Retract_tip", + "blob": "26010000000000000000000000000000000000000000000000000000000000000000d503046d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Tips : Retract tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Tips : Retract tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 574, + "name": "Tips_Retract_tip", + "blob": "26010000000000000000000000000000000000000000000000000000000000000000d503008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Tips : Retract tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Tips : Retract tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 575, + "name": "Tips_Retract_tip", + "blob": "26010000000000000000000000000000000000000000000000000000000000000000d50391010b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Tips : Retract tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Tips : Retract tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 576, + "name": "Tips_Tip_new", + "blob": "26020101b2c41fb0ccedfa1e14147b49507e856e54afb2edb7e48c241d45b2f98b0dd76f46f79a541c9e9db5f54389a198aa542e79eb61036cc2f5818e9acb2143a842f4fc36502b06380fd21101013d7b678acf7ba77c3b0d070d2fa28da03ad6132c7633158139ae28a3dfaac5fe1560a5e9e05cd5030003d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Tips : Tip new", + "1 | Reason [1/4] : b2c41fb0ccedfa1e14147b49507e856e54afb2", + "1 | Reason [2/4] : edb7e48c241d45b2f98b0dd76f46f79a541c9e", + "1 | Reason [3/4] : 9db5f54389a198aa542e79eb61036cc2f5818e", + "1 | Reason [4/4] : 9acb2143a842f4", + "2 | Who [1/2] : oDK1d3PH2ckj69KyAVZdYyQi8L9Zb4Xp1UfuPP9", + "2 | Who [2/2] : 4SGbP52D", + "3 | Tip value [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip value [2/2] : 56789", + "4 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Tips : Tip new", + "1 | Reason [1/4] : b2c41fb0ccedfa1e14147b49507e856e54afb2", + "1 | Reason [2/4] : edb7e48c241d45b2f98b0dd76f46f79a541c9e", + "1 | Reason [3/4] : 9db5f54389a198aa542e79eb61036cc2f5818e", + "1 | Reason [4/4] : 9acb2143a842f4", + "2 | Who [1/2] : oDK1d3PH2ckj69KyAVZdYyQi8L9Zb4Xp1UfuPP9", + "2 | Who [2/2] : 4SGbP52D", + "3 | Tip value [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip value [2/2] : 56789", + "4 | Chain : Edgeware", + "5 | Nonce : 0", + "6 | Tip : EDG 0.00000000123456789", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 577, + "name": "Tips_Tip_new", + "blob": "2602010261b2f48ba11a70bce18ae644216231b55ebce5f950084c360402b60e4b224f0eafa8316529b77c12e5acaba3884505751fbe0d7a91d7368f0e599f5f3aa2362f7b6dd94aa1be2b309ab126ae960f349cbbae09eb005c7783177aef11a55513d97edc49fd36aa3b6aa83997aba8ad68e0c0ebef22833a061ce1d2096b7c6ef926fc36502b06380fd21101013d7b678acf7ba77c3b0d070d2fa28da03ad6132c768ed73e0dd503ae110300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Tips : Tip new", + "1 | Reason [1/7] : 61b2f48ba11a70bce18ae644216231b55ebce5", + "1 | Reason [2/7] : f950084c360402b60e4b224f0eafa8316529b7", + "1 | Reason [3/7] : 7c12e5acaba3884505751fbe0d7a91d7368f0e", + "1 | Reason [4/7] : 599f5f3aa2362f7b6dd94aa1be2b309ab126ae", + "1 | Reason [5/7] : 960f349cbbae09eb005c7783177aef11a55513", + "1 | Reason [6/7] : d97edc49fd36aa3b6aa83997aba8ad68e0c0eb", + "1 | Reason [7/7] : ef22833a061ce1d2096b7c6ef926", + "2 | Who [1/2] : oDK1d3PH2ckj69KyAVZdYyQi8L9Zb4Xp1UfuPP9", + "2 | Who [2/2] : 4SGbP52D", + "3 | Tip value : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Tips : Tip new", + "1 | Reason [1/7] : 61b2f48ba11a70bce18ae644216231b55ebce5", + "1 | Reason [2/7] : f950084c360402b60e4b224f0eafa8316529b7", + "1 | Reason [3/7] : 7c12e5acaba3884505751fbe0d7a91d7368f0e", + "1 | Reason [4/7] : 599f5f3aa2362f7b6dd94aa1be2b309ab126ae", + "1 | Reason [5/7] : 960f349cbbae09eb005c7783177aef11a55513", + "1 | Reason [6/7] : d97edc49fd36aa3b6aa83997aba8ad68e0c0eb", + "1 | Reason [7/7] : ef22833a061ce1d2096b7c6ef926", + "2 | Who [1/2] : oDK1d3PH2ckj69KyAVZdYyQi8L9Zb4Xp1UfuPP9", + "2 | Who [2/2] : 4SGbP52D", + "3 | Tip value : EDG 0.000000000055555555", + "4 | Chain : Edgeware", + "5 | Nonce : 50283", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 578, + "name": "Tips_Tip_new", + "blob": "26020102cf6e0bddae4392c389df38f86156f24ceb15d22310703852c1d3b33ad2609cbb81229cbd86889c15cdf14da89f5ed5bf0045e7d5a4b1866c1f902bbd52e12a4e59968f9fb25166055db3eee594d7b1e7336aeb8aaf3fddb768aa81f2b5423c8d3abd4242271fdb7745efaffc4731095cf3994e1a6a75de0680e881702f430fd6ae0f8c4e9d6bfe2f5a4d357ee743292594cff455e0a480ca635e5511921f3a6033158139ae28a3dfaac5fe1560a5e9e05cd503ae1103000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Tips : Tip new", + "1 | Reason [1/7] : cf6e0bddae4392c389df38f86156f24ceb15d2", + "1 | Reason [2/7] : 2310703852c1d3b33ad2609cbb81229cbd8688", + "1 | Reason [3/7] : 9c15cdf14da89f5ed5bf0045e7d5a4b1866c1f", + "1 | Reason [4/7] : 902bbd52e12a4e59968f9fb25166055db3eee5", + "1 | Reason [5/7] : 94d7b1e7336aeb8aaf3fddb768aa81f2b5423c", + "1 | Reason [6/7] : 8d3abd4242271fdb7745efaffc4731095cf399", + "1 | Reason [7/7] : 4e1a6a75de0680e881702f430fd6", + "2 | Who [1/2] : mSqm5tC3qvqidkfu77Le5ySig2XDMgtLjZo6Hbd", + "2 | Who [2/2] : TypHehcM", + "3 | Tip value [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip value [2/2] : 56789", + "4 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Tips : Tip new", + "1 | Reason [1/7] : cf6e0bddae4392c389df38f86156f24ceb15d2", + "1 | Reason [2/7] : 2310703852c1d3b33ad2609cbb81229cbd8688", + "1 | Reason [3/7] : 9c15cdf14da89f5ed5bf0045e7d5a4b1866c1f", + "1 | Reason [4/7] : 902bbd52e12a4e59968f9fb25166055db3eee5", + "1 | Reason [5/7] : 94d7b1e7336aeb8aaf3fddb768aa81f2b5423c", + "1 | Reason [6/7] : 8d3abd4242271fdb7745efaffc4731095cf399", + "1 | Reason [7/7] : 4e1a6a75de0680e881702f430fd6", + "2 | Who [1/2] : mSqm5tC3qvqidkfu77Le5ySig2XDMgtLjZo6Hbd", + "2 | Who [2/2] : TypHehcM", + "3 | Tip value [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip value [2/2] : 56789", + "4 | Chain : Edgeware", + "5 | Nonce : 50283", + "6 | Tip : EDG 0.000005552342355555", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 579, + "name": "Tips_Tip_new", + "blob": "2602010104c7666eb5fd586d1a57965e62578472fcde1857325a569c0bc8ab7ae48f78605c8ab160bf17fba894f0e596590387b45a0fa2bac6da69a1a5ce6ee10010fff1f0d79b5ca0e4bfe27f9e6440d003d0bf037a5721cb138d4d7a227056a38c321803d2029649d5039101002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Tips : Tip new", + "1 | Reason [1/4] : 04c7666eb5fd586d1a57965e62578472fcde18", + "1 | Reason [2/4] : 57325a569c0bc8ab7ae48f78605c8ab160bf17", + "1 | Reason [3/4] : fba894f0e596590387b45a0fa2bac6da69a1a5", + "1 | Reason [4/4] : ce6ee10010fff1", + "2 | Who [1/2] : nxQMKYwLGxtr3Np6DqJsYNPE89GrBC9kKgG81Ug", + "2 | Who [2/2] : Ew2yqvUu", + "3 | Tip value : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Tips : Tip new", + "1 | Reason [1/4] : 04c7666eb5fd586d1a57965e62578472fcde18", + "1 | Reason [2/4] : 57325a569c0bc8ab7ae48f78605c8ab160bf17", + "1 | Reason [3/4] : fba894f0e596590387b45a0fa2bac6da69a1a5", + "1 | Reason [4/4] : ce6ee10010fff1", + "2 | Who [1/2] : nxQMKYwLGxtr3Np6DqJsYNPE89GrBC9kKgG81Ug", + "2 | Who [2/2] : Ew2yqvUu", + "3 | Tip value : EDG 0.00000000123456789", + "4 | Chain : Edgeware", + "5 | Nonce : 100", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 580, + "name": "Tips_Tip_new", + "blob": "260280008bca3e10d17b2cfc71ef145d9b2d5d4a3dfb208474480304b3080a2e4131c1f0d79b5ca0e4bfe27f9e6440d003d0bf037a5721cb138d4d7a227056a38c321800d5030403d20296492d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Tips : Tip new", + "1 | Reason [1/2] : 008bca3e10d17b2cfc71ef145d9b2d5d4a3dfb", + "1 | Reason [2/2] : 208474480304b3080a2e4131c1", + "2 | Who [1/2] : nxQMKYwLGxtr3Np6DqJsYNPE89GrBC9kKgG81Ug", + "2 | Who [2/2] : Ew2yqvUu", + "3 | Tip value : EDG 0.0", + "4 | Tip : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Tips : Tip new", + "1 | Reason [1/2] : 008bca3e10d17b2cfc71ef145d9b2d5d4a3dfb", + "1 | Reason [2/2] : 208474480304b3080a2e4131c1", + "2 | Who [1/2] : nxQMKYwLGxtr3Np6DqJsYNPE89GrBC9kKgG81Ug", + "2 | Who [2/2] : Ew2yqvUu", + "3 | Tip value : EDG 0.0", + "4 | Chain : Edgeware", + "5 | Nonce : 1", + "6 | Tip : EDG 0.00000000123456789", + "7 | Era Phase : 61", + "8 | Era Period : 64", + "9 | Block [1/2] : 00000000000000000000000000000000000000", + "9 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 581, + "name": "Tips_Tip", + "blob": "2603000000000000000000000000000000000000000000000000000000000000000033158139ae28a3dfaac5fe1560a5e9e05cd5030433158139ae28a3dfaac5fe1560a5e9e05c2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Tips : Tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Tip value [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip value [2/2] : 56789", + "3 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "3 | Tip [2/2] : 56789" + ], + "output_expert": [ + "0 | Tips : Tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Tip value [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip value [2/2] : 56789", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Tip [1/2] : EDG 123456789012345678901.2345678901234", + "5 | Tip [2/2] : 56789", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 582, + "name": "Tips_Tip", + "blob": "260300000000000000000000000000000000000000000000000000000000000000008ed73e0dd503ae1103008ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Tips : Tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Tip value : EDG 0.000000000055555555", + "3 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Tips : Tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Tip value : EDG 0.000000000055555555", + "3 | Chain : Edgeware", + "4 | Nonce : 50283", + "5 | Tip : EDG 0.000000000055555555", + "6 | Era Phase : 61", + "7 | Era Period : 64", + "8 | Block [1/2] : 00000000000000000000000000000000000000", + "8 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 583, + "name": "Tips_Tip", + "blob": "2603000000000000000000000000000000000000000000000000000000000000000003d2029649d50300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Tips : Tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Tip value : EDG 0.00000000123456789" + ], + "output_expert": [ + "0 | Tips : Tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Tip value : EDG 0.00000000123456789", + "3 | Chain : Edgeware", + "4 | Nonce : 0", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 584, + "name": "Tips_Tip", + "blob": "2603000000000000000000000000000000000000000000000000000000000000000033158139ae28a3dfaac5fe1560a5e9e05cd50300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Tips : Tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Tip value [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip value [2/2] : 56789" + ], + "output_expert": [ + "0 | Tips : Tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Tip value [1/2] : EDG 123456789012345678901.2345678901234", + "2 | Tip value [2/2] : 56789", + "3 | Chain : Edgeware", + "4 | Nonce : 0", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 585, + "name": "Tips_Tip", + "blob": "260300000000000000000000000000000000000000000000000000000000000000006d0fd50304002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Tips : Tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Tip value : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Tips : Tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Tip value : EDG 0.000000000000000987", + "3 | Chain : Edgeware", + "4 | Nonce : 1", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 586, + "name": "Tips_Close_tip", + "blob": "26040000000000000000000000000000000000000000000000000000000000000000d503006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Tips : Close tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Tips : Close tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 587, + "name": "Tips_Close_tip", + "blob": "26040000000000000000000000000000000000000000000000000000000000000000d50391018ed73e0d2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Tips : Close tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Tip : EDG 0.000000000055555555" + ], + "output_expert": [ + "0 | Tips : Close tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.000000000055555555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 588, + "name": "Tips_Close_tip", + "blob": "26040000000000000000000000000000000000000000000000000000000000000000d50300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Tips : Close tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000" + ], + "output_expert": [ + "0 | Tips : Close tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 589, + "name": "Tips_Close_tip", + "blob": "26040000000000000000000000000000000000000000000000000000000000000000d503046d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Tips : Close tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Tips : Close tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 1", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 590, + "name": "Tips_Close_tip", + "blob": "26040000000000000000000000000000000000000000000000000000000000000000d503006d0f2d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Tips : Close tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Tip : EDG 0.000000000000000987" + ], + "output_expert": [ + "0 | Tips : Close tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000000000000000987", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 591, + "name": "Tips_Slash_tip", + "blob": "26050000000000000000000000000000000000000000000000000000000000000000d50391010b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Tips : Slash tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Tips : Slash tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 592, + "name": "Tips_Slash_tip", + "blob": "26050000000000000000000000000000000000000000000000000000000000000000d503000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Tips : Slash tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Tips : Slash tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 0", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 593, + "name": "Tips_Slash_tip", + "blob": "26050000000000000000000000000000000000000000000000000000000000000000d5039101002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Tips : Slash tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000" + ], + "output_expert": [ + "0 | Tips : Slash tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 100", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 594, + "name": "Tips_Slash_tip", + "blob": "26050000000000000000000000000000000000000000000000000000000000000000d5038d24002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Tips : Slash tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000" + ], + "output_expert": [ + "0 | Tips : Slash tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 2339", + "4 | Era Phase : 61", + "5 | Era Period : 64", + "6 | Block [1/2] : 00000000000000000000000000000000000000", + "6 | Block [2/2] : 00000000000000000000000000" + ] + }, + { + "index": 595, + "name": "Tips_Slash_tip", + "blob": "26050000000000000000000000000000000000000000000000000000000000000000d503ae1103000b63ce64c10c052d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "output": [ + "0 | Tips : Slash tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Tip : EDG 0.000005552342355555" + ], + "output_expert": [ + "0 | Tips : Slash tip", + "1 | Hash [1/2] : 00000000000000000000000000000000000000", + "1 | Hash [2/2] : 00000000000000000000000000", + "2 | Chain : Edgeware", + "3 | Nonce : 50283", + "4 | Tip : EDG 0.000005552342355555", + "5 | Era Phase : 61", + "6 | Era Period : 64", + "7 | Block [1/2] : 00000000000000000000000000000000000000", + "7 | Block [2/2] : 00000000000000000000000000" + ] + } +] \ No newline at end of file diff --git a/tests/ui_tests.cpp b/tests/ui_tests.cpp new file mode 100644 index 0000000..7f8f603 --- /dev/null +++ b/tests/ui_tests.cpp @@ -0,0 +1,162 @@ +/******************************************************************************* +* (c) 2019 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ + +#include "gmock/gmock.h" + +#include +#include +#include +#include +#include +#include "parser.h" +#include "app_mode.h" +#include "utils/common.h" + +using ::testing::TestWithParam; + +typedef struct { + uint64_t index; + std::string name; + std::string blob; + std::vector expected; + std::vector expected_expert; +} testcase_t; + +class JsonTestsA : public ::testing::TestWithParam { +public: + struct PrintToStringParamName { + template + std::string operator()(const testing::TestParamInfo &info) const { + auto p = static_cast(info.param); + std::stringstream ss; + ss << p.index << "_" << p.name; + return ss.str(); + } + }; +}; + +//class JsonTestsB : public ::testing::TestWithParam { +//public: +// struct PrintToStringParamName { +// template +// std::string operator()(const testing::TestParamInfo &info) const { +// auto p = static_cast(info.param); +// std::stringstream ss; +// ss << p.index << "_" << p.name; +// return ss.str(); +// } +// }; +//}; + +// Retrieve testcases from json file +std::vector GetJsonTestCases(std::string jsonFile) { + auto answer = std::vector(); + + Json::CharReaderBuilder builder; + Json::Value obj; + + std::string fullPathJsonFile = std::string(TESTVECTORS_DIR) + jsonFile; + + std::ifstream inFile(fullPathJsonFile); + if (!inFile.is_open()) { + return answer; + } + + // Retrieve all test cases + JSONCPP_STRING errs; + Json::parseFromStream(builder, inFile, &obj, &errs); + std::cout << "Number of testcases: " << obj.size() << std::endl; + + for (int i = 0; i < obj.size(); i++) { + + auto outputs = std::vector(); + for (auto s : obj[i]["output"]) { + outputs.push_back(s.asString()); + } + + auto outputs_expert = std::vector(); + for (auto s : obj[i]["output_expert"]) { + outputs_expert.push_back(s.asString()); + } + + answer.push_back(testcase_t{ + obj[i]["index"].asUInt64(), + obj[i]["name"].asString(), + obj[i]["blob"].asString(), + outputs, + outputs_expert + }); + } + + return answer; +} + +void check_testcase(const testcase_t &tc, bool expert_mode) { + + app_mode_set_expert(expert_mode); + + parser_context_t ctx; + parser_error_t err; + + uint8_t buffer[5000]; + uint16_t bufferLen = parseHexString(buffer, sizeof(buffer), tc.blob.c_str()); + + parser_tx_t tx_obj; + err = parser_parse(&ctx, buffer, bufferLen, &tx_obj); + ASSERT_EQ(err, parser_ok) << parser_getErrorDescription(err); + + auto output = dumpUI(&ctx, 40, 40); + + std::cout << std::endl; + for (const auto &i : output) { + std::cout << i << std::endl; + } + std::cout << std::endl << std::endl; + + std::vector expected = app_mode_expert() ? tc.expected_expert : tc.expected; + EXPECT_EQ(output.size(), expected.size()); + for (size_t i = 0; i < expected.size(); i++) { + if (i < output.size()) { + EXPECT_THAT(output[i], testing::Eq(expected[i])); + } + } +} + +INSTANTIATE_TEST_SUITE_P + +( + JsonTestCasesCurrentTxVer, + JsonTestsA, + ::testing::ValuesIn(GetJsonTestCases("testcases_current.json")), + JsonTestsA::PrintToStringParamName() +); + +// Parametric test using current runtime: +TEST_P(JsonTestsA, CheckUIOutput_CurrentTX_Normal) { check_testcase(GetParam(), false); } +TEST_P(JsonTestsA, CheckUIOutput_CurrentTX_Expert) { check_testcase(GetParam(), true); } + +//INSTANTIATE_TEST_SUITE_P +// +//( +// JsonTestCasesPreviousTxVer, +// JsonTestsB, +// ::testing::ValuesIn(GetJsonTestCases("testcases_previous.json")), +// JsonTestsB::PrintToStringParamName() +//); + +//// Parametric test using previous runtime: +//TEST_P(JsonTestsB, CheckUIOutput_PreviousTX_Normal) { check_testcase(GetParam(), false); } +//TEST_P(JsonTestsB, CheckUIOutput_PreviousTX_Expert) { check_testcase(GetParam(), true); } diff --git a/tests/utils/common.cpp b/tests/utils/common.cpp new file mode 100644 index 0000000..b72f41a --- /dev/null +++ b/tests/utils/common.cpp @@ -0,0 +1,66 @@ +/******************************************************************************* +* (c) 2019 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#include +#include +#include +#include "common.h" + +std::vector dumpUI(parser_context_t *ctx, + uint16_t maxKeyLen, + uint16_t maxValueLen) { + auto answer = std::vector(); + + uint8_t numItems; + parser_error_t err = parser_getNumItems(ctx, &numItems); + if (err != parser_ok) { + return answer; + } + + for (uint16_t idx = 0; idx < numItems; idx++) { + char keyBuffer[1000]; + char valueBuffer[1000]; + uint8_t pageIdx = 0; + uint8_t pageCount = 1; + + while (pageIdx < pageCount) { + std::stringstream ss; + + err = parser_getItem(ctx, + idx, + keyBuffer, maxKeyLen, + valueBuffer, maxValueLen, + pageIdx, &pageCount); + + ss << idx << " | " << keyBuffer; + if (pageCount > 1) { + ss << " [" << (int) pageIdx + 1 << "/" << (int) pageCount << "]"; + } + ss << " : "; + + if (err == parser_ok) { + ss << valueBuffer; + } else { + ss << parser_getErrorDescription(err); + } + + answer.push_back(ss.str()); + + pageIdx++; + } + } + + return answer; +} diff --git a/tests/utils/common.h b/tests/utils/common.h new file mode 100644 index 0000000..84b1732 --- /dev/null +++ b/tests/utils/common.h @@ -0,0 +1,21 @@ +/******************************************************************************* +* (c) 2019 Zondax GmbH +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +********************************************************************************/ +#include +#include + +std::vector dumpUI(parser_context_t *ctx, + uint16_t maxKeyLen, + uint16_t maxValueLen); diff --git a/tests_tools/Cargo.lock b/tests_tools/Cargo.lock new file mode 100644 index 0000000..42ae57d --- /dev/null +++ b/tests_tools/Cargo.lock @@ -0,0 +1,448 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +[[package]] +name = "aho-corasick" +version = "0.7.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "043164d8ba5c4c3035fec9bbee8647c0261d788f3474306f93bb65901cae0e86" +dependencies = [ + "memchr", +] + +[[package]] +name = "arrayref" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" + +[[package]] +name = "arrayvec" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" + +[[package]] +name = "block-buffer" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" +dependencies = [ + "block-padding", + "byte-tools", + "byteorder", + "generic-array", +] + +[[package]] +name = "block-padding" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5" +dependencies = [ + "byte-tools", +] + +[[package]] +name = "byte-tools" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" + +[[package]] +name = "byteorder" +version = "1.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de" + +[[package]] +name = "cc" +version = "1.0.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef611cc68ff783f18535d77ddd080185275713d852c4f5cbb6122c462a7a825c" + +[[package]] +name = "cfg-if" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "cslice" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "697c714f50560202b1f4e2e09cd50a421881c83e9025db75d15f276616f04f40" + +[[package]] +name = "curve25519-dalek" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "434e1720189a637d44fe464f4df1e6eb900b4835255b14354497c78af37d9bb8" +dependencies = [ + "byteorder", + "digest", + "rand_core", + "subtle", + "zeroize", +] + +[[package]] +name = "digest" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" +dependencies = [ + "generic-array", +] + +[[package]] +name = "fake-simd" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" + +[[package]] +name = "generic-array" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c68f0274ae0e023facc3c97b2e00f076be70e254bc851d972503b328db79b2ec" +dependencies = [ + "typenum", +] + +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "wasi", +] + +[[package]] +name = "keccak" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "libc" +version = "0.2.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89203f3fba0a3795506acaad8ebce3c80c0af93f994d5a1d7a0b1eeb23271929" + +[[package]] +name = "memchr" +version = "2.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400" + +[[package]] +name = "merlin" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6feca46f4fa3443a01769d768727f10c10a20fdb65e52dc16a81f0c8269bb78" +dependencies = [ + "byteorder", + "keccak", + "rand_core", + "zeroize", +] + +[[package]] +name = "neon" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f1314e1a7a6375ddfab87906f98e5a848649c5a88d7d118e9d603c12440964e" +dependencies = [ + "cslice", + "neon-build", + "neon-runtime", + "semver", + "winapi", +] + +[[package]] +name = "neon-build" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39a7bb825db76fd7b73956ea39329b92bc599adc8b71e1675908d9062c6dae69" +dependencies = [ + "cfg-if 0.1.10", + "neon-sys", +] + +[[package]] +name = "neon-runtime" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5e7dcc582b1c713f58f0b092b3f11de3ac94b2b8d78ea4b658b8990bfb3412c" +dependencies = [ + "cfg-if 0.1.10", + "neon-sys", +] + +[[package]] +name = "neon-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c41690bb07b1673ec8073f5c64dc041ab997d56a5d3cb2cbcc6dbfb7416c135e" +dependencies = [ + "cc", + "regex", +] + +[[package]] +name = "opaque-debug" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" + +[[package]] +name = "ppv-lite86" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857" + +[[package]] +name = "proc-macro2" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e0704ee1a7e00d7bb417d0770ea303c1bccbabf0ef1667dae92b5967f5f8a71" +dependencies = [ + "unicode-xid", +] + +[[package]] +name = "quote" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "991431c3519a3f36861882da93630ce66b52918dcf1b8e2fd66b397fc96f28df" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom", + "libc", + "rand_chacha", + "rand_core", + "rand_hc", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core", +] + +[[package]] +name = "regex" +version = "1.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c3780fcf44b193bc4d09f36d2a3c87b251da4a046c87795a0d35f4f927ad8e6" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", + "thread_local", +] + +[[package]] +name = "regex-syntax" +version = "0.6.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26412eb97c6b088a6997e05f69403a802a92d520de2f8e63c2b65f9e0f47c4e8" + +[[package]] +name = "schnorrkel" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "021b403afe70d81eea68f6ea12f6b3c9588e5d536a94c3bf80f15e7faa267862" +dependencies = [ + "arrayref", + "arrayvec", + "curve25519-dalek", + "getrandom", + "merlin", + "rand", + "rand_core", + "sha2", + "subtle", + "zeroize", +] + +[[package]] +name = "semver" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver-parser" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" + +[[package]] +name = "sha2" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a256f46ea78a0c0d9ff00077504903ac881a1dafdc20da66545699e7776b3e69" +dependencies = [ + "block-buffer", + "digest", + "fake-simd", + "opaque-debug", +] + +[[package]] +name = "subtle" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e81da0851ada1f3e9d4312c704aa4f8806f0f9d69faaf8df2f3464b4a9437c2" + +[[package]] +name = "syn" +version = "1.0.58" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc60a3d73ea6594cd712d830cc1f0390fd71542d8c8cd24e70cc54cdfd5e05d5" +dependencies = [ + "proc-macro2", + "quote", + "unicode-xid", +] + +[[package]] +name = "synstructure" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b834f2d66f734cb897113e34aaff2f1ab4719ca946f9a7358dba8f8064148701" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "unicode-xid", +] + +[[package]] +name = "teststools" +version = "0.1.0" +dependencies = [ + "neon", + "neon-build", + "schnorrkel", +] + +[[package]] +name = "thread_local" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d40c6d1b69745a6ec6fb1ca717914848da4b44ae29d9b3080cbee91d72a69b14" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "typenum" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "373c8a200f9e67a0c95e62a4f52fbf80c23b4381c05a17845531982fa99e6b33" + +[[package]] +name = "unicode-xid" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" + +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "zeroize" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81a974bcdd357f0dca4d41677db03436324d45a4c9ed2d0b873a5a360ce41c36" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3f369ddb18862aba61aa49bf31e74d29f0f162dec753063200e1dc084345d16" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] diff --git a/tests_tools/Cargo.toml b/tests_tools/Cargo.toml new file mode 100644 index 0000000..2987d6f --- /dev/null +++ b/tests_tools/Cargo.toml @@ -0,0 +1,9 @@ +[workspace] +members = [ + "neon/native", +] + +[profile.release] +# Tell `rustc` to optimize for small code size. +opt-level = "s" +overflow-checks = true diff --git a/tests_tools/neon/.gitignore b/tests_tools/neon/.gitignore new file mode 100644 index 0000000..0b3cb79 --- /dev/null +++ b/tests_tools/neon/.gitignore @@ -0,0 +1,6 @@ +native/target +native/index.node +native/artifacts.json +**/*~ +**/node_modules +**/.DS_Store diff --git a/tests_tools/neon/README.md b/tests_tools/neon/README.md new file mode 100644 index 0000000..4a10ef8 --- /dev/null +++ b/tests_tools/neon/README.md @@ -0,0 +1,9 @@ +# zcashtools + +The main Node entry point is at: `zcashtools/lib/index.js` + +The main Rust entry point is at: `zcashtools/native/src/lib.rs` + +To build your project, just run `yarn install` from within the zcashtools directory. Then you can test it out +with `node -e 'require("./")'`. + diff --git a/tests_tools/neon/lib/index.js b/tests_tools/neon/lib/index.js new file mode 100644 index 0000000..8d75791 --- /dev/null +++ b/tests_tools/neon/lib/index.js @@ -0,0 +1,12 @@ +var addon = require('../native'); + +// Here we can write some simple tests for play around +console.log("--------------------------------------") +console.log("- Edgeware Tools Scratch Tests -") +console.log("--------------------------------------\n\n") + +a = Buffer.from("b65abc66a8fdeac1197d03daa6c3791d0c0799a52db6b7127b1cd12d46e34364",'hex'); +b = Buffer.from([116, 101, 115, 116, 32, 109, 101, 115, 115, 97, 103, 101]); +c = Buffer.from("48fdbe5cf3524bdd078ac711565d658a3053d10660749959883c4710f49d9948b2d5f829bea6800897dc6ea0150ca11075cc36b75bfcf3712aafb8e1bd10bf8f", 'hex'); + +console.log(addon.schnorrkel_verify(a,Buffer.from([103, 111, 111, 100]),b, c)); diff --git a/tests_tools/neon/native/Cargo.lock b/tests_tools/neon/native/Cargo.lock new file mode 100644 index 0000000..6eb1204 --- /dev/null +++ b/tests_tools/neon/native/Cargo.lock @@ -0,0 +1,137 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +[[package]] +name = "aho-corasick" +version = "0.7.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "043164d8ba5c4c3035fec9bbee8647c0261d788f3474306f93bb65901cae0e86" +dependencies = [ + "memchr", +] + +[[package]] +name = "cc" +version = "1.0.59" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66120af515773fb005778dc07c261bd201ec8ce50bd6e7144c927753fe013381" + +[[package]] +name = "cfg-if" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" + +[[package]] +name = "cslice" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "697c714f50560202b1f4e2e09cd50a421881c83e9025db75d15f276616f04f40" + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "memchr" +version = "2.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400" + +[[package]] +name = "neon" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6cac4691701b686e6c07b2eb5b51a9f26f5c11179c5d7924b78100dd387fc99d" +dependencies = [ + "cslice", + "neon-build", + "neon-runtime", + "semver", +] + +[[package]] +name = "neon-build" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9ed332afd4711b84f4f83d334428a1fd9ce53620b62b87595934297c5ede2ed" +dependencies = [ + "cfg-if", + "neon-sys", +] + +[[package]] +name = "neon-runtime" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2beea093a60c08463f65e1da4cda68149986f60d8d2177489b44589463c782a6" +dependencies = [ + "cfg-if", + "neon-sys", +] + +[[package]] +name = "neon-sys" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69a6c1ba6b926746f4d3f596de18ce49d062d78fd9f35f636080232aa77a0e16" +dependencies = [ + "cc", + "regex", +] + +[[package]] +name = "regex" +version = "1.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c3780fcf44b193bc4d09f36d2a3c87b251da4a046c87795a0d35f4f927ad8e6" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", + "thread_local", +] + +[[package]] +name = "regex-syntax" +version = "0.6.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26412eb97c6b088a6997e05f69403a802a92d520de2f8e63c2b65f9e0f47c4e8" + +[[package]] +name = "semver" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver-parser" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" + +[[package]] +name = "thread_local" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d40c6d1b69745a6ec6fb1ca717914848da4b44ae29d9b3080cbee91d72a69b14" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "zcashlib" +version = "0.1.0" + +[[package]] +name = "zcashtool" +version = "0.1.0" +dependencies = [ + "neon", + "neon-build", + "zcashlib", +] diff --git a/tests_tools/neon/native/Cargo.toml b/tests_tools/neon/native/Cargo.toml new file mode 100644 index 0000000..71c25e3 --- /dev/null +++ b/tests_tools/neon/native/Cargo.toml @@ -0,0 +1,19 @@ +[package] +name = "teststools" +version = "0.1.0" +authors = ["Zondax GmbH "] +license = "Apache-2.0" +build = "build.rs" +edition = "2018" +exclude = ["artifacts.json", "index.node"] + +[lib] +name = "teststools" +crate-type = ["cdylib"] + +[build-dependencies] +neon-build = "0.5.0" + +[dependencies] +neon = "0.5.0" +schnorrkel = "0.9.1" diff --git a/tests_tools/neon/native/build.rs b/tests_tools/neon/native/build.rs new file mode 100644 index 0000000..687a661 --- /dev/null +++ b/tests_tools/neon/native/build.rs @@ -0,0 +1,7 @@ +extern crate neon_build; + +fn main() { + neon_build::setup(); // must be called in build.rs + + // add project-specific build logic here... +} diff --git a/tests_tools/neon/native/src/lib.rs b/tests_tools/neon/native/src/lib.rs new file mode 100644 index 0000000..1ad7024 --- /dev/null +++ b/tests_tools/neon/native/src/lib.rs @@ -0,0 +1,52 @@ +extern crate neon; +use neon::prelude::*; + +// reference +// https://neon-bindings.com/docs/primitives + +//bridge stuff only + +use schnorrkel::{context::*, PublicKey, Signature}; + +fn schnorrkel_verify(mut cx: FunctionContext) -> JsResult { + + let handler_pubkey = cx.argument::(0)?; + let pubkeybytes = cx.borrow(&handler_pubkey, |data| data.as_slice::()); + + let pubkey = PublicKey::from_bytes(pubkeybytes); + if !pubkey.is_ok(){ + return Ok(cx.boolean(false).upcast()); + } + + let pk = pubkey.unwrap(); + + let handler_context = cx.argument::(1)?; + let context = cx.borrow(&handler_context, |data| data.as_slice::()); + + let handler_message = cx.argument::(2)?; + let message = cx.borrow(&handler_message, |data| data.as_slice::()); + + let handler_signature = cx.argument::(3)?; + let signaturebytes = cx.borrow(&handler_signature, |data| data.as_slice::()); + + let signature = Signature::from_bytes(signaturebytes); + if !signature.is_ok(){ + return Ok(cx.boolean(false).upcast()); + } + + let sig = signature.unwrap(); + + let sigcontext = signing_context(context); + + let v = pk.verify(sigcontext.bytes(message), &sig); + if v.is_ok(){ + Ok(cx.boolean(true).upcast()) + }else{ + Ok(cx.boolean(false).upcast()) + } +} + +register_module!(mut m, { + m.export_function("schnorrkel_verify", schnorrkel_verify)?; + Ok(()) +}); diff --git a/tests_tools/neon/package.json b/tests_tools/neon/package.json new file mode 100644 index 0000000..d04c00b --- /dev/null +++ b/tests_tools/neon/package.json @@ -0,0 +1,16 @@ +{ + "name": "@zondax/test_tools", + "version": "0.1.0", + "description": "", + "main": "lib/index.js", + "author": "Zondax GmbH ", + "license": "Apache-2.0", + "private": true, + "dependencies": { + "neon-cli": "^0.5.1" + }, + "scripts": { + "install": "node_modules/.bin/neon build", + "test": "node -e 'require(\"./\")'" + } +} diff --git a/tests_tools/neon/yarn.lock b/tests_tools/neon/yarn.lock new file mode 100644 index 0000000..6ae36d0 --- /dev/null +++ b/tests_tools/neon/yarn.lock @@ -0,0 +1,564 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +ansi-escapes@^4.2.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" + integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== + dependencies: + type-fest "^0.11.0" + +ansi-regex@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + +ansi-styles@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +array-back@^3.0.1: + version "3.1.0" + resolved "https://registry.yarnpkg.com/array-back/-/array-back-3.1.0.tgz#b8859d7a508871c9a7b2cf42f99428f65e96bfb0" + integrity sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q== + +array-back@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/array-back/-/array-back-4.0.1.tgz#9b80312935a52062e1a233a9c7abeb5481b30e90" + integrity sha512-Z/JnaVEXv+A9xabHzN43FiiiWEE7gPCRXMrVmRm00tWbjZRul1iHm7ECzlyNq1p4a4ATXz+G9FJ3GqGOkOV3fg== + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +builtins@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" + integrity sha1-y5T662HIaWRR2zZTThQi+U8K7og= + +chalk@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chalk@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" + integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== + +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-width@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" + integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +command-line-args@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.1.1.tgz#88e793e5bb3ceb30754a86863f0401ac92fd369a" + integrity sha512-hL/eG8lrll1Qy1ezvkant+trihbGnaKaeEjj6Scyr3DN+RC7iQ5Rz84IeLERfAWDGo0HBSNAakczwgCilDXnWg== + dependencies: + array-back "^3.0.1" + find-replace "^3.0.0" + lodash.camelcase "^4.3.0" + typical "^4.0.0" + +command-line-commands@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/command-line-commands/-/command-line-commands-3.0.2.tgz#53872a1181db837f21906b1228e260a4eeb42ee4" + integrity sha512-ac6PdCtdR6q7S3HN+JiVLIWGHY30PRYIEl2qPo+FuEuzwAUk0UYyimrngrg7FvF/mCr4Jgoqv5ZnHZgads50rw== + dependencies: + array-back "^4.0.1" + +command-line-usage@^6.1.0: + version "6.1.1" + resolved "https://registry.yarnpkg.com/command-line-usage/-/command-line-usage-6.1.1.tgz#c908e28686108917758a49f45efb4f02f76bc03f" + integrity sha512-F59pEuAR9o1SF/bD0dQBDluhpT4jJQNWUHEuVBqpDmCUo6gPjCi+m9fCWnWZVR/oG6cMTUms4h+3NPl74wGXvA== + dependencies: + array-back "^4.0.1" + chalk "^2.4.2" + table-layout "^1.0.1" + typical "^5.2.0" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +deep-extend@~0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +external-editor@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" + +figures@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== + dependencies: + escape-string-regexp "^1.0.5" + +find-replace@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-3.0.0.tgz#3e7e23d3b05167a76f770c9fbd5258b0def68c38" + integrity sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ== + dependencies: + array-back "^3.0.1" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +git-config@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/git-config/-/git-config-0.0.7.tgz#a9c8a3ef07a776c3d72261356d8b727b62202b28" + integrity sha1-qcij7wendsPXImE1bYtye2IgKyg= + dependencies: + iniparser "~1.0.5" + +glob@^7.1.3: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +handlebars@^4.7.6: + version "4.7.6" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.6.tgz#d4c05c1baf90e9945f77aa68a7a219aa4a7df74e" + integrity sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA== + dependencies: + minimist "^1.2.5" + neo-async "^2.6.0" + source-map "^0.6.1" + wordwrap "^1.0.0" + optionalDependencies: + uglify-js "^3.1.4" + +has-flag@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +iconv-lite@^0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +iniparser@~1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/iniparser/-/iniparser-1.0.5.tgz#836d6befe6dfbfcee0bccf1cf9f2acc7027f783d" + integrity sha1-g21r7+bfv87gvM8c+fKsxwJ/eD0= + +inquirer@^7.3.3: + version "7.3.3" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003" + integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA== + dependencies: + ansi-escapes "^4.2.1" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-width "^3.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.19" + mute-stream "0.0.8" + run-async "^2.4.0" + rxjs "^6.6.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + through "^2.3.6" + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= + +lodash@^4.17.19: + version "4.17.20" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" + integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== + +make-promises-safe@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/make-promises-safe/-/make-promises-safe-5.1.0.tgz#dd9d311f555bcaa144f12e225b3d37785f0aa8f2" + integrity sha512-AfdZ49rtyhQR/6cqVKGoH7y4ql7XkS5HJI1lZm0/5N6CQosy1eYbBJ/qbhkKHzo17UH7M918Bysf6XB9f3kS1g== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimist@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + +mute-stream@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== + +neo-async@^2.6.0: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +neon-cli@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/neon-cli/-/neon-cli-0.5.1.tgz#a8568f64878687c7c95e1aad0ff99256b3daf65f" + integrity sha512-j8y4BvCoKn+sBabMbFe4on5ZZkuJOvBRNdPnE61etWixQFWCaBJOa0ZUH9UQM1+2FfPFDQlHNb/alpzSWz+b9w== + dependencies: + chalk "^4.1.0" + command-line-args "^5.1.1" + command-line-commands "^3.0.1" + command-line-usage "^6.1.0" + git-config "0.0.7" + handlebars "^4.7.6" + inquirer "^7.3.3" + make-promises-safe "^5.1.0" + rimraf "^3.0.2" + semver "^7.3.2" + toml "^3.0.0" + ts-typed-json "^0.3.2" + validate-npm-package-license "^3.0.4" + validate-npm-package-name "^3.0.0" + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +onetime@^5.1.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +reduce-flatten@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-2.0.0.tgz#734fd84e65f375d7ca4465c69798c25c9d10ae27" + integrity sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w== + +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +run-async@^2.4.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" + integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== + +rxjs@^6.6.0: + version "6.6.3" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.3.tgz#8ca84635c4daa900c0d3967a6ee7ac60271ee552" + integrity sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ== + dependencies: + tslib "^1.9.0" + +"safer-buffer@>= 2.1.2 < 3": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +semver@^7.3.2: + version "7.3.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" + integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== + +signal-exit@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" + integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== + +source-map@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +spdx-correct@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" + integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + +spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.6" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.6.tgz#c80757383c28abf7296744998cbc106ae8b854ce" + integrity sha512-+orQK83kyMva3WyPf59k1+Y525csj5JejicWut55zeTWANuN17qSiSLUXWtzHeNWORSvT7GLDJ/E/XiIWoXBTw== + +string-width@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.0.tgz#952182c46cc7b2c313d1596e623992bd163b72b5" + integrity sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.0" + +strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + +supports-color@^5.3.0: + version "5.5.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +table-layout@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-1.0.1.tgz#8411181ee951278ad0638aea2f779a9ce42894f9" + integrity sha512-dEquqYNJiGwY7iPfZ3wbXDI944iqanTSchrACLL2nOB+1r+h1Nzu2eH+DuPPvWvm5Ry7iAPeFlgEtP5bIp5U7Q== + dependencies: + array-back "^4.0.1" + deep-extend "~0.6.0" + typical "^5.2.0" + wordwrapjs "^4.0.0" + +through@^2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +toml@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/toml/-/toml-3.0.0.tgz#342160f1af1904ec9d204d03a5d61222d762c5ee" + integrity sha512-y/mWCZinnvxjTKYhJ+pYxwD0mRLVvOtdS2Awbgxln6iEnt4rk0yBxeSBHkGJcPucRiG0e55mwWp+g/05rsrd6w== + +ts-typed-json@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/ts-typed-json/-/ts-typed-json-0.3.2.tgz#f4f20f45950bae0a383857f7b0a94187eca1b56a" + integrity sha512-Tdu3BWzaer7R5RvBIJcg9r8HrTZgpJmsX+1meXMJzYypbkj8NK2oJN0yvm4Dp/Iv6tzFa/L5jKRmEVTga6K3nA== + +tslib@^1.9.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +type-fest@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" + integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== + +typical@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/typical/-/typical-4.0.0.tgz#cbeaff3b9d7ae1e2bbfaf5a4e6f11eccfde94fc4" + integrity sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw== + +typical@^5.0.0, typical@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/typical/-/typical-5.2.0.tgz#4daaac4f2b5315460804f0acf6cb69c52bb93066" + integrity sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg== + +uglify-js@^3.1.4: + version "3.11.5" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.11.5.tgz#d6788bc83cf35ff18ea78a65763e480803409bc6" + integrity sha512-btvv/baMqe7HxP7zJSF7Uc16h1mSfuuSplT0/qdjxseesDU+yYzH33eHBH+eMdeRXwujXspaCTooWHQVVBh09w== + +validate-npm-package-license@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +validate-npm-package-name@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" + integrity sha1-X6kS2B630MdK/BQN5zF/DKffQ34= + dependencies: + builtins "^1.0.3" + +wordwrap@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= + +wordwrapjs@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/wordwrapjs/-/wordwrapjs-4.0.0.tgz#9aa9394155993476e831ba8e59fb5795ebde6800" + integrity sha512-Svqw723a3R34KvsMgpjFBYCgNOSdcW3mQFK4wIfhGQhtaFVOJmdYoXgi63ne3dTlWgatVcUc7t4HtQ/+bUVIzQ== + dependencies: + reduce-flatten "^2.0.0" + typical "^5.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= diff --git a/tests_zemu/.editorconfig b/tests_zemu/.editorconfig new file mode 100644 index 0000000..4a7ea30 --- /dev/null +++ b/tests_zemu/.editorconfig @@ -0,0 +1,12 @@ +root = true + +[*] +indent_style = space +indent_size = 2 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.md] +trim_trailing_whitespace = false diff --git a/tests_zemu/.eslintrc.js b/tests_zemu/.eslintrc.js new file mode 100644 index 0000000..1599684 --- /dev/null +++ b/tests_zemu/.eslintrc.js @@ -0,0 +1,32 @@ +module.exports = { + root: true, + parser: "@typescript-eslint/parser", + plugins: [ + "@typescript-eslint", + "jest" + ], + extends: [ + "eslint:recommended", + "plugin:@typescript-eslint/recommended", + "plugin:jest/recommended", + "prettier" + ], + env: { + browser: true, + es6: true, + node: true + }, + settings: {}, + globals: { + Atomics: "readonly", + SharedArrayBuffer: "readonly" + }, + parserOptions: {}, + rules: { + "@typescript-eslint/explicit-function-return-type": "off", + "@typescript-eslint/explicit-module-boundary-types": "off", + "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/no-var-requires": 0, + "@typescript-eslint/ban-ts-comment": "off" + } +}; diff --git a/tests_zemu/.gitignore b/tests_zemu/.gitignore new file mode 100644 index 0000000..4e214c5 --- /dev/null +++ b/tests_zemu/.gitignore @@ -0,0 +1,71 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ +/docs/.vuepress/dist + +# TypeScript v1 declaration files +typings/ + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env + +# next.js build output +.next + +\.idea/ + +.vscode + +TODO\.md + +\dist +\tests/snapshots-tmp diff --git a/tests_zemu/.npmignore b/tests_zemu/.npmignore new file mode 100644 index 0000000..3c3629e --- /dev/null +++ b/tests_zemu/.npmignore @@ -0,0 +1 @@ +node_modules diff --git a/tests_zemu/.prettierignore b/tests_zemu/.prettierignore new file mode 100644 index 0000000..de4d1f0 --- /dev/null +++ b/tests_zemu/.prettierignore @@ -0,0 +1,2 @@ +dist +node_modules diff --git a/tests_zemu/.prettierrc b/tests_zemu/.prettierrc new file mode 100644 index 0000000..6523ceb --- /dev/null +++ b/tests_zemu/.prettierrc @@ -0,0 +1,9 @@ +{ + "trailingComma": "all", + "singleQuote": true, + "arrowParens": "avoid", + "semi": false, + "useTabs": false, + "printWidth": 140, + "tabWidth": 2 +} diff --git a/tests_zemu/globalsetup.js b/tests_zemu/globalsetup.js new file mode 100644 index 0000000..802b268 --- /dev/null +++ b/tests_zemu/globalsetup.js @@ -0,0 +1,16 @@ +import Zemu from "@zondax/zemu"; + +const catchExit = async () => { + process.on('SIGINT', () => { + Zemu.stopAllEmuContainers(function () { + process.exit() + }) + }) +} + +module.exports = async () => { + await catchExit() + await Zemu.checkAndPullImage() + await Zemu.stopAllEmuContainers() +} +// \ No newline at end of file diff --git a/tests_zemu/jest.config.js b/tests_zemu/jest.config.js new file mode 100644 index 0000000..c4a20eb --- /dev/null +++ b/tests_zemu/jest.config.js @@ -0,0 +1,5 @@ +module.exports = { + preset: 'ts-jest', + testEnvironment: 'node', + transformIgnorePatterns: ['^.+\\.js$'], +} diff --git a/tests_zemu/jest.js b/tests_zemu/jest.js new file mode 100644 index 0000000..e69de29 diff --git a/tests_zemu/package.json b/tests_zemu/package.json new file mode 100644 index 0000000..0923ead --- /dev/null +++ b/tests_zemu/package.json @@ -0,0 +1,44 @@ +{ + "name": "integration-tests", + "author": "Zondax GmbH", + "license": "Apache-2.0", + "version": "1.0.0", + "description": "", + "types": "./dist/index.d.ts", + "repository": { + "type": "git", + "url": "git+https://github.com/Zondax/ledger-edgeware" + }, + "keywords": [ + "Zondax", + "Ledger" + ], + "scripts": { + "test": "jest --detectOpenHandles -t 'Standard'", + "testSR25519": "jest --detectOpenHandles --runInBand tests/sr25519.test.ts" + }, + "dependencies": { + "@zondax/ledger-polkadot": "^0.13.6", + "@zondax/zemu": "^0.12.5" + }, + "devDependencies": { + "@types/jest": "^26.0.22", + "@types/ledgerhq__hw-transport": "^4.21.3", + "@typescript-eslint/eslint-plugin": "^4.20.0", + "@typescript-eslint/parser": "^4.20.0", + "blakejs": "^1.1.0", + "crypto-js": "4.0.0", + "ed25519-supercop": "^2.0.1", + "eslint": "^7.24.0", + "eslint-config-prettier": "^8.2.0", + "eslint-plugin-import": "^2.22.1", + "eslint-plugin-jest": "^24.3.5", + "eslint-plugin-prettier": "^3.4.0", + "jest": "26.6.3", + "jest-serial-runner": "^1.1.0", + "jssha": "^3.1.1", + "prettier": "^2.0.4", + "ts-jest": "^26.5.4", + "typescript": "^4.2.3" + } +} diff --git a/tests_zemu/snapshots/s-mainmenu/00000.png b/tests_zemu/snapshots/s-mainmenu/00000.png new file mode 100644 index 0000000..f9903ba Binary files /dev/null and b/tests_zemu/snapshots/s-mainmenu/00000.png differ diff --git a/tests_zemu/snapshots/s-mainmenu/00001.png b/tests_zemu/snapshots/s-mainmenu/00001.png new file mode 100644 index 0000000..27a6e33 Binary files /dev/null and b/tests_zemu/snapshots/s-mainmenu/00001.png differ diff --git a/tests_zemu/snapshots/s-mainmenu/00002.png b/tests_zemu/snapshots/s-mainmenu/00002.png new file mode 100644 index 0000000..f5097a0 Binary files /dev/null and b/tests_zemu/snapshots/s-mainmenu/00002.png differ diff --git a/tests_zemu/snapshots/s-mainmenu/00003.png b/tests_zemu/snapshots/s-mainmenu/00003.png new file mode 100644 index 0000000..8a57fc9 Binary files /dev/null and b/tests_zemu/snapshots/s-mainmenu/00003.png differ diff --git a/tests_zemu/snapshots/s-mainmenu/00004.png b/tests_zemu/snapshots/s-mainmenu/00004.png new file mode 100644 index 0000000..8a57fc9 Binary files /dev/null and b/tests_zemu/snapshots/s-mainmenu/00004.png differ diff --git a/tests_zemu/snapshots/s-show_address/00000.png b/tests_zemu/snapshots/s-show_address/00000.png new file mode 100644 index 0000000..981a8d6 Binary files /dev/null and b/tests_zemu/snapshots/s-show_address/00000.png differ diff --git a/tests_zemu/snapshots/s-show_address/00001.png b/tests_zemu/snapshots/s-show_address/00001.png new file mode 100644 index 0000000..b577b62 Binary files /dev/null and b/tests_zemu/snapshots/s-show_address/00001.png differ diff --git a/tests_zemu/snapshots/s-show_address/00002.png b/tests_zemu/snapshots/s-show_address/00002.png new file mode 100644 index 0000000..06ec16e Binary files /dev/null and b/tests_zemu/snapshots/s-show_address/00002.png differ diff --git a/tests_zemu/snapshots/s-show_address/00003.png b/tests_zemu/snapshots/s-show_address/00003.png new file mode 100644 index 0000000..f9903ba Binary files /dev/null and b/tests_zemu/snapshots/s-show_address/00003.png differ diff --git a/tests_zemu/snapshots/s-show_address_reject/00000.png b/tests_zemu/snapshots/s-show_address_reject/00000.png new file mode 100644 index 0000000..981a8d6 Binary files /dev/null and b/tests_zemu/snapshots/s-show_address_reject/00000.png differ diff --git a/tests_zemu/snapshots/s-show_address_reject/00001.png b/tests_zemu/snapshots/s-show_address_reject/00001.png new file mode 100644 index 0000000..b577b62 Binary files /dev/null and b/tests_zemu/snapshots/s-show_address_reject/00001.png differ diff --git a/tests_zemu/snapshots/s-show_address_reject/00002.png b/tests_zemu/snapshots/s-show_address_reject/00002.png new file mode 100644 index 0000000..06ec16e Binary files /dev/null and b/tests_zemu/snapshots/s-show_address_reject/00002.png differ diff --git a/tests_zemu/snapshots/s-show_address_reject/00003.png b/tests_zemu/snapshots/s-show_address_reject/00003.png new file mode 100644 index 0000000..0d95b38 Binary files /dev/null and b/tests_zemu/snapshots/s-show_address_reject/00003.png differ diff --git a/tests_zemu/snapshots/s-show_address_reject/00004.png b/tests_zemu/snapshots/s-show_address_reject/00004.png new file mode 100644 index 0000000..06ec16e Binary files /dev/null and b/tests_zemu/snapshots/s-show_address_reject/00004.png differ diff --git a/tests_zemu/snapshots/s-show_address_reject/00005.png b/tests_zemu/snapshots/s-show_address_reject/00005.png new file mode 100644 index 0000000..b577b62 Binary files /dev/null and b/tests_zemu/snapshots/s-show_address_reject/00005.png differ diff --git a/tests_zemu/snapshots/s-show_address_reject/00006.png b/tests_zemu/snapshots/s-show_address_reject/00006.png new file mode 100644 index 0000000..06ec16e Binary files /dev/null and b/tests_zemu/snapshots/s-show_address_reject/00006.png differ diff --git a/tests_zemu/snapshots/s-show_address_reject/00007.png b/tests_zemu/snapshots/s-show_address_reject/00007.png new file mode 100644 index 0000000..0d95b38 Binary files /dev/null and b/tests_zemu/snapshots/s-show_address_reject/00007.png differ diff --git a/tests_zemu/snapshots/s-show_address_reject/00008.png b/tests_zemu/snapshots/s-show_address_reject/00008.png new file mode 100644 index 0000000..f9903ba Binary files /dev/null and b/tests_zemu/snapshots/s-show_address_reject/00008.png differ diff --git a/tests_zemu/snapshots/s-show_address_reject_sr25519/00000.png b/tests_zemu/snapshots/s-show_address_reject_sr25519/00000.png new file mode 100644 index 0000000..c0c7b2c Binary files /dev/null and b/tests_zemu/snapshots/s-show_address_reject_sr25519/00000.png differ diff --git a/tests_zemu/snapshots/s-show_address_reject_sr25519/00001.png b/tests_zemu/snapshots/s-show_address_reject_sr25519/00001.png new file mode 100644 index 0000000..8144592 Binary files /dev/null and b/tests_zemu/snapshots/s-show_address_reject_sr25519/00001.png differ diff --git a/tests_zemu/snapshots/s-show_address_reject_sr25519/00002.png b/tests_zemu/snapshots/s-show_address_reject_sr25519/00002.png new file mode 100644 index 0000000..06ec16e Binary files /dev/null and b/tests_zemu/snapshots/s-show_address_reject_sr25519/00002.png differ diff --git a/tests_zemu/snapshots/s-show_address_reject_sr25519/00003.png b/tests_zemu/snapshots/s-show_address_reject_sr25519/00003.png new file mode 100644 index 0000000..0d95b38 Binary files /dev/null and b/tests_zemu/snapshots/s-show_address_reject_sr25519/00003.png differ diff --git a/tests_zemu/snapshots/s-show_address_reject_sr25519/00004.png b/tests_zemu/snapshots/s-show_address_reject_sr25519/00004.png new file mode 100644 index 0000000..06ec16e Binary files /dev/null and b/tests_zemu/snapshots/s-show_address_reject_sr25519/00004.png differ diff --git a/tests_zemu/snapshots/s-show_address_reject_sr25519/00005.png b/tests_zemu/snapshots/s-show_address_reject_sr25519/00005.png new file mode 100644 index 0000000..8144592 Binary files /dev/null and b/tests_zemu/snapshots/s-show_address_reject_sr25519/00005.png differ diff --git a/tests_zemu/snapshots/s-show_address_reject_sr25519/00006.png b/tests_zemu/snapshots/s-show_address_reject_sr25519/00006.png new file mode 100644 index 0000000..06ec16e Binary files /dev/null and b/tests_zemu/snapshots/s-show_address_reject_sr25519/00006.png differ diff --git a/tests_zemu/snapshots/s-show_address_reject_sr25519/00007.png b/tests_zemu/snapshots/s-show_address_reject_sr25519/00007.png new file mode 100644 index 0000000..0d95b38 Binary files /dev/null and b/tests_zemu/snapshots/s-show_address_reject_sr25519/00007.png differ diff --git a/tests_zemu/snapshots/s-show_address_reject_sr25519/00008.png b/tests_zemu/snapshots/s-show_address_reject_sr25519/00008.png new file mode 100644 index 0000000..f9903ba Binary files /dev/null and b/tests_zemu/snapshots/s-show_address_reject_sr25519/00008.png differ diff --git a/tests_zemu/snapshots/s-show_address_sr25519/00000.png b/tests_zemu/snapshots/s-show_address_sr25519/00000.png new file mode 100644 index 0000000..c0c7b2c Binary files /dev/null and b/tests_zemu/snapshots/s-show_address_sr25519/00000.png differ diff --git a/tests_zemu/snapshots/s-show_address_sr25519/00001.png b/tests_zemu/snapshots/s-show_address_sr25519/00001.png new file mode 100644 index 0000000..8144592 Binary files /dev/null and b/tests_zemu/snapshots/s-show_address_sr25519/00001.png differ diff --git a/tests_zemu/snapshots/s-show_address_sr25519/00002.png b/tests_zemu/snapshots/s-show_address_sr25519/00002.png new file mode 100644 index 0000000..06ec16e Binary files /dev/null and b/tests_zemu/snapshots/s-show_address_sr25519/00002.png differ diff --git a/tests_zemu/snapshots/s-show_address_sr25519/00003.png b/tests_zemu/snapshots/s-show_address_sr25519/00003.png new file mode 100644 index 0000000..f9903ba Binary files /dev/null and b/tests_zemu/snapshots/s-show_address_sr25519/00003.png differ diff --git a/tests_zemu/snapshots/s-sign_basic_expert/00000.png b/tests_zemu/snapshots/s-sign_basic_expert/00000.png new file mode 100644 index 0000000..ba63e56 Binary files /dev/null and b/tests_zemu/snapshots/s-sign_basic_expert/00000.png differ diff --git a/tests_zemu/snapshots/s-sign_basic_expert/00001.png b/tests_zemu/snapshots/s-sign_basic_expert/00001.png new file mode 100644 index 0000000..22d3916 Binary files /dev/null and b/tests_zemu/snapshots/s-sign_basic_expert/00001.png differ diff --git a/tests_zemu/snapshots/s-sign_basic_expert/00002.png b/tests_zemu/snapshots/s-sign_basic_expert/00002.png new file mode 100644 index 0000000..8afa66a Binary files /dev/null and b/tests_zemu/snapshots/s-sign_basic_expert/00002.png differ diff --git a/tests_zemu/snapshots/s-sign_basic_expert/00003.png b/tests_zemu/snapshots/s-sign_basic_expert/00003.png new file mode 100644 index 0000000..6d52217 Binary files /dev/null and b/tests_zemu/snapshots/s-sign_basic_expert/00003.png differ diff --git a/tests_zemu/snapshots/s-sign_basic_expert/00004.png b/tests_zemu/snapshots/s-sign_basic_expert/00004.png new file mode 100644 index 0000000..9edb084 Binary files /dev/null and b/tests_zemu/snapshots/s-sign_basic_expert/00004.png differ diff --git a/tests_zemu/snapshots/s-sign_basic_expert/00005.png b/tests_zemu/snapshots/s-sign_basic_expert/00005.png new file mode 100644 index 0000000..3d67c61 Binary files /dev/null and b/tests_zemu/snapshots/s-sign_basic_expert/00005.png differ diff --git a/tests_zemu/snapshots/s-sign_basic_expert/00006.png b/tests_zemu/snapshots/s-sign_basic_expert/00006.png new file mode 100644 index 0000000..f7074ec Binary files /dev/null and b/tests_zemu/snapshots/s-sign_basic_expert/00006.png differ diff --git a/tests_zemu/snapshots/s-sign_basic_expert/00007.png b/tests_zemu/snapshots/s-sign_basic_expert/00007.png new file mode 100644 index 0000000..72a9d66 Binary files /dev/null and b/tests_zemu/snapshots/s-sign_basic_expert/00007.png differ diff --git a/tests_zemu/snapshots/s-sign_basic_expert/00008.png b/tests_zemu/snapshots/s-sign_basic_expert/00008.png new file mode 100644 index 0000000..11c859d Binary files /dev/null and b/tests_zemu/snapshots/s-sign_basic_expert/00008.png differ diff --git a/tests_zemu/snapshots/s-sign_basic_expert/00009.png b/tests_zemu/snapshots/s-sign_basic_expert/00009.png new file mode 100644 index 0000000..71710fd Binary files /dev/null and b/tests_zemu/snapshots/s-sign_basic_expert/00009.png differ diff --git a/tests_zemu/snapshots/s-sign_basic_expert/00010.png b/tests_zemu/snapshots/s-sign_basic_expert/00010.png new file mode 100644 index 0000000..06ec16e Binary files /dev/null and b/tests_zemu/snapshots/s-sign_basic_expert/00010.png differ diff --git a/tests_zemu/snapshots/s-sign_basic_expert/00011.png b/tests_zemu/snapshots/s-sign_basic_expert/00011.png new file mode 100644 index 0000000..f9903ba Binary files /dev/null and b/tests_zemu/snapshots/s-sign_basic_expert/00011.png differ diff --git a/tests_zemu/snapshots/s-sign_basic_normal/00000.png b/tests_zemu/snapshots/s-sign_basic_normal/00000.png new file mode 100644 index 0000000..ba63e56 Binary files /dev/null and b/tests_zemu/snapshots/s-sign_basic_normal/00000.png differ diff --git a/tests_zemu/snapshots/s-sign_basic_normal/00001.png b/tests_zemu/snapshots/s-sign_basic_normal/00001.png new file mode 100644 index 0000000..22d3916 Binary files /dev/null and b/tests_zemu/snapshots/s-sign_basic_normal/00001.png differ diff --git a/tests_zemu/snapshots/s-sign_basic_normal/00002.png b/tests_zemu/snapshots/s-sign_basic_normal/00002.png new file mode 100644 index 0000000..8afa66a Binary files /dev/null and b/tests_zemu/snapshots/s-sign_basic_normal/00002.png differ diff --git a/tests_zemu/snapshots/s-sign_basic_normal/00003.png b/tests_zemu/snapshots/s-sign_basic_normal/00003.png new file mode 100644 index 0000000..6d52217 Binary files /dev/null and b/tests_zemu/snapshots/s-sign_basic_normal/00003.png differ diff --git a/tests_zemu/snapshots/s-sign_basic_normal/00004.png b/tests_zemu/snapshots/s-sign_basic_normal/00004.png new file mode 100644 index 0000000..06ec16e Binary files /dev/null and b/tests_zemu/snapshots/s-sign_basic_normal/00004.png differ diff --git a/tests_zemu/snapshots/s-sign_basic_normal/00005.png b/tests_zemu/snapshots/s-sign_basic_normal/00005.png new file mode 100644 index 0000000..f9903ba Binary files /dev/null and b/tests_zemu/snapshots/s-sign_basic_normal/00005.png differ diff --git a/tests_zemu/snapshots/s-sign_large_nomination/00000.png b/tests_zemu/snapshots/s-sign_large_nomination/00000.png new file mode 100644 index 0000000..cb2eb8f Binary files /dev/null and b/tests_zemu/snapshots/s-sign_large_nomination/00000.png differ diff --git a/tests_zemu/snapshots/s-sign_large_nomination/00001.png b/tests_zemu/snapshots/s-sign_large_nomination/00001.png new file mode 100644 index 0000000..d8e182a Binary files /dev/null and b/tests_zemu/snapshots/s-sign_large_nomination/00001.png differ diff --git a/tests_zemu/snapshots/s-sign_large_nomination/00002.png b/tests_zemu/snapshots/s-sign_large_nomination/00002.png new file mode 100644 index 0000000..7cf8e7f Binary files /dev/null and b/tests_zemu/snapshots/s-sign_large_nomination/00002.png differ diff --git a/tests_zemu/snapshots/s-sign_large_nomination/00003.png b/tests_zemu/snapshots/s-sign_large_nomination/00003.png new file mode 100644 index 0000000..2c67564 Binary files /dev/null and b/tests_zemu/snapshots/s-sign_large_nomination/00003.png differ diff --git a/tests_zemu/snapshots/s-sign_large_nomination/00004.png b/tests_zemu/snapshots/s-sign_large_nomination/00004.png new file mode 100644 index 0000000..312eebb Binary files /dev/null and b/tests_zemu/snapshots/s-sign_large_nomination/00004.png differ diff --git a/tests_zemu/snapshots/s-sign_large_nomination/00005.png b/tests_zemu/snapshots/s-sign_large_nomination/00005.png new file mode 100644 index 0000000..48f45e1 Binary files /dev/null and b/tests_zemu/snapshots/s-sign_large_nomination/00005.png differ diff --git a/tests_zemu/snapshots/s-sign_large_nomination/00006.png b/tests_zemu/snapshots/s-sign_large_nomination/00006.png new file mode 100644 index 0000000..783fdb3 Binary files /dev/null and b/tests_zemu/snapshots/s-sign_large_nomination/00006.png differ diff --git a/tests_zemu/snapshots/s-sign_large_nomination/00007.png b/tests_zemu/snapshots/s-sign_large_nomination/00007.png new file mode 100644 index 0000000..271ba8a Binary files /dev/null and b/tests_zemu/snapshots/s-sign_large_nomination/00007.png differ diff --git a/tests_zemu/snapshots/s-sign_large_nomination/00008.png b/tests_zemu/snapshots/s-sign_large_nomination/00008.png new file mode 100644 index 0000000..5588502 Binary files /dev/null and b/tests_zemu/snapshots/s-sign_large_nomination/00008.png differ diff --git a/tests_zemu/snapshots/s-sign_large_nomination/00009.png b/tests_zemu/snapshots/s-sign_large_nomination/00009.png new file mode 100644 index 0000000..06ec16e Binary files /dev/null and b/tests_zemu/snapshots/s-sign_large_nomination/00009.png differ diff --git a/tests_zemu/snapshots/s-sign_large_nomination/00010.png b/tests_zemu/snapshots/s-sign_large_nomination/00010.png new file mode 100644 index 0000000..f9903ba Binary files /dev/null and b/tests_zemu/snapshots/s-sign_large_nomination/00010.png differ diff --git a/tests_zemu/snapshots/x-mainmenu/00000.png b/tests_zemu/snapshots/x-mainmenu/00000.png new file mode 100644 index 0000000..73fd129 Binary files /dev/null and b/tests_zemu/snapshots/x-mainmenu/00000.png differ diff --git a/tests_zemu/snapshots/x-mainmenu/00001.png b/tests_zemu/snapshots/x-mainmenu/00001.png new file mode 100644 index 0000000..33d6bcc Binary files /dev/null and b/tests_zemu/snapshots/x-mainmenu/00001.png differ diff --git a/tests_zemu/snapshots/x-mainmenu/00002.png b/tests_zemu/snapshots/x-mainmenu/00002.png new file mode 100644 index 0000000..207f140 Binary files /dev/null and b/tests_zemu/snapshots/x-mainmenu/00002.png differ diff --git a/tests_zemu/snapshots/x-mainmenu/00003.png b/tests_zemu/snapshots/x-mainmenu/00003.png new file mode 100644 index 0000000..495d0ee Binary files /dev/null and b/tests_zemu/snapshots/x-mainmenu/00003.png differ diff --git a/tests_zemu/snapshots/x-mainmenu/00004.png b/tests_zemu/snapshots/x-mainmenu/00004.png new file mode 100644 index 0000000..495d0ee Binary files /dev/null and b/tests_zemu/snapshots/x-mainmenu/00004.png differ diff --git a/tests_zemu/snapshots/x-show_address/00000.png b/tests_zemu/snapshots/x-show_address/00000.png new file mode 100644 index 0000000..bd5d82e Binary files /dev/null and b/tests_zemu/snapshots/x-show_address/00000.png differ diff --git a/tests_zemu/snapshots/x-show_address/00001.png b/tests_zemu/snapshots/x-show_address/00001.png new file mode 100644 index 0000000..3a08d84 Binary files /dev/null and b/tests_zemu/snapshots/x-show_address/00001.png differ diff --git a/tests_zemu/snapshots/x-show_address/00002.png b/tests_zemu/snapshots/x-show_address/00002.png new file mode 100644 index 0000000..ff34de8 Binary files /dev/null and b/tests_zemu/snapshots/x-show_address/00002.png differ diff --git a/tests_zemu/snapshots/x-show_address/00003.png b/tests_zemu/snapshots/x-show_address/00003.png new file mode 100644 index 0000000..73fd129 Binary files /dev/null and b/tests_zemu/snapshots/x-show_address/00003.png differ diff --git a/tests_zemu/snapshots/x-show_address_reject/00000.png b/tests_zemu/snapshots/x-show_address_reject/00000.png new file mode 100644 index 0000000..bd5d82e Binary files /dev/null and b/tests_zemu/snapshots/x-show_address_reject/00000.png differ diff --git a/tests_zemu/snapshots/x-show_address_reject/00001.png b/tests_zemu/snapshots/x-show_address_reject/00001.png new file mode 100644 index 0000000..3a08d84 Binary files /dev/null and b/tests_zemu/snapshots/x-show_address_reject/00001.png differ diff --git a/tests_zemu/snapshots/x-show_address_reject/00002.png b/tests_zemu/snapshots/x-show_address_reject/00002.png new file mode 100644 index 0000000..ff34de8 Binary files /dev/null and b/tests_zemu/snapshots/x-show_address_reject/00002.png differ diff --git a/tests_zemu/snapshots/x-show_address_reject/00003.png b/tests_zemu/snapshots/x-show_address_reject/00003.png new file mode 100644 index 0000000..d8740f5 Binary files /dev/null and b/tests_zemu/snapshots/x-show_address_reject/00003.png differ diff --git a/tests_zemu/snapshots/x-show_address_reject/00004.png b/tests_zemu/snapshots/x-show_address_reject/00004.png new file mode 100644 index 0000000..ff34de8 Binary files /dev/null and b/tests_zemu/snapshots/x-show_address_reject/00004.png differ diff --git a/tests_zemu/snapshots/x-show_address_reject/00005.png b/tests_zemu/snapshots/x-show_address_reject/00005.png new file mode 100644 index 0000000..3a08d84 Binary files /dev/null and b/tests_zemu/snapshots/x-show_address_reject/00005.png differ diff --git a/tests_zemu/snapshots/x-show_address_reject/00006.png b/tests_zemu/snapshots/x-show_address_reject/00006.png new file mode 100644 index 0000000..ff34de8 Binary files /dev/null and b/tests_zemu/snapshots/x-show_address_reject/00006.png differ diff --git a/tests_zemu/snapshots/x-show_address_reject/00007.png b/tests_zemu/snapshots/x-show_address_reject/00007.png new file mode 100644 index 0000000..d8740f5 Binary files /dev/null and b/tests_zemu/snapshots/x-show_address_reject/00007.png differ diff --git a/tests_zemu/snapshots/x-show_address_reject/00008.png b/tests_zemu/snapshots/x-show_address_reject/00008.png new file mode 100644 index 0000000..73fd129 Binary files /dev/null and b/tests_zemu/snapshots/x-show_address_reject/00008.png differ diff --git a/tests_zemu/snapshots/x-sign_basic_expert/00000.png b/tests_zemu/snapshots/x-sign_basic_expert/00000.png new file mode 100644 index 0000000..bd5d82e Binary files /dev/null and b/tests_zemu/snapshots/x-sign_basic_expert/00000.png differ diff --git a/tests_zemu/snapshots/x-sign_basic_expert/00001.png b/tests_zemu/snapshots/x-sign_basic_expert/00001.png new file mode 100644 index 0000000..02dedda Binary files /dev/null and b/tests_zemu/snapshots/x-sign_basic_expert/00001.png differ diff --git a/tests_zemu/snapshots/x-sign_basic_expert/00002.png b/tests_zemu/snapshots/x-sign_basic_expert/00002.png new file mode 100644 index 0000000..d677df8 Binary files /dev/null and b/tests_zemu/snapshots/x-sign_basic_expert/00002.png differ diff --git a/tests_zemu/snapshots/x-sign_basic_expert/00003.png b/tests_zemu/snapshots/x-sign_basic_expert/00003.png new file mode 100644 index 0000000..89026bb Binary files /dev/null and b/tests_zemu/snapshots/x-sign_basic_expert/00003.png differ diff --git a/tests_zemu/snapshots/x-sign_basic_expert/00004.png b/tests_zemu/snapshots/x-sign_basic_expert/00004.png new file mode 100644 index 0000000..1ff5040 Binary files /dev/null and b/tests_zemu/snapshots/x-sign_basic_expert/00004.png differ diff --git a/tests_zemu/snapshots/x-sign_basic_expert/00005.png b/tests_zemu/snapshots/x-sign_basic_expert/00005.png new file mode 100644 index 0000000..40c7027 Binary files /dev/null and b/tests_zemu/snapshots/x-sign_basic_expert/00005.png differ diff --git a/tests_zemu/snapshots/x-sign_basic_expert/00006.png b/tests_zemu/snapshots/x-sign_basic_expert/00006.png new file mode 100644 index 0000000..7d5ab4e Binary files /dev/null and b/tests_zemu/snapshots/x-sign_basic_expert/00006.png differ diff --git a/tests_zemu/snapshots/x-sign_basic_expert/00007.png b/tests_zemu/snapshots/x-sign_basic_expert/00007.png new file mode 100644 index 0000000..79bdefc Binary files /dev/null and b/tests_zemu/snapshots/x-sign_basic_expert/00007.png differ diff --git a/tests_zemu/snapshots/x-sign_basic_expert/00008.png b/tests_zemu/snapshots/x-sign_basic_expert/00008.png new file mode 100644 index 0000000..23cb61b Binary files /dev/null and b/tests_zemu/snapshots/x-sign_basic_expert/00008.png differ diff --git a/tests_zemu/snapshots/x-sign_basic_expert/00009.png b/tests_zemu/snapshots/x-sign_basic_expert/00009.png new file mode 100644 index 0000000..2d2328b Binary files /dev/null and b/tests_zemu/snapshots/x-sign_basic_expert/00009.png differ diff --git a/tests_zemu/snapshots/x-sign_basic_expert/00010.png b/tests_zemu/snapshots/x-sign_basic_expert/00010.png new file mode 100644 index 0000000..ff34de8 Binary files /dev/null and b/tests_zemu/snapshots/x-sign_basic_expert/00010.png differ diff --git a/tests_zemu/snapshots/x-sign_basic_expert/00011.png b/tests_zemu/snapshots/x-sign_basic_expert/00011.png new file mode 100644 index 0000000..73fd129 Binary files /dev/null and b/tests_zemu/snapshots/x-sign_basic_expert/00011.png differ diff --git a/tests_zemu/snapshots/x-sign_basic_normal/00000.png b/tests_zemu/snapshots/x-sign_basic_normal/00000.png new file mode 100644 index 0000000..bd5d82e Binary files /dev/null and b/tests_zemu/snapshots/x-sign_basic_normal/00000.png differ diff --git a/tests_zemu/snapshots/x-sign_basic_normal/00001.png b/tests_zemu/snapshots/x-sign_basic_normal/00001.png new file mode 100644 index 0000000..02dedda Binary files /dev/null and b/tests_zemu/snapshots/x-sign_basic_normal/00001.png differ diff --git a/tests_zemu/snapshots/x-sign_basic_normal/00002.png b/tests_zemu/snapshots/x-sign_basic_normal/00002.png new file mode 100644 index 0000000..d677df8 Binary files /dev/null and b/tests_zemu/snapshots/x-sign_basic_normal/00002.png differ diff --git a/tests_zemu/snapshots/x-sign_basic_normal/00003.png b/tests_zemu/snapshots/x-sign_basic_normal/00003.png new file mode 100644 index 0000000..89026bb Binary files /dev/null and b/tests_zemu/snapshots/x-sign_basic_normal/00003.png differ diff --git a/tests_zemu/snapshots/x-sign_basic_normal/00004.png b/tests_zemu/snapshots/x-sign_basic_normal/00004.png new file mode 100644 index 0000000..ff34de8 Binary files /dev/null and b/tests_zemu/snapshots/x-sign_basic_normal/00004.png differ diff --git a/tests_zemu/snapshots/x-sign_basic_normal/00005.png b/tests_zemu/snapshots/x-sign_basic_normal/00005.png new file mode 100644 index 0000000..73fd129 Binary files /dev/null and b/tests_zemu/snapshots/x-sign_basic_normal/00005.png differ diff --git a/tests_zemu/snapshots/x-sign_large_nomination/00000.png b/tests_zemu/snapshots/x-sign_large_nomination/00000.png new file mode 100644 index 0000000..bd5d82e Binary files /dev/null and b/tests_zemu/snapshots/x-sign_large_nomination/00000.png differ diff --git a/tests_zemu/snapshots/x-sign_large_nomination/00001.png b/tests_zemu/snapshots/x-sign_large_nomination/00001.png new file mode 100644 index 0000000..5efacf4 Binary files /dev/null and b/tests_zemu/snapshots/x-sign_large_nomination/00001.png differ diff --git a/tests_zemu/snapshots/x-sign_large_nomination/00002.png b/tests_zemu/snapshots/x-sign_large_nomination/00002.png new file mode 100644 index 0000000..2b86195 Binary files /dev/null and b/tests_zemu/snapshots/x-sign_large_nomination/00002.png differ diff --git a/tests_zemu/snapshots/x-sign_large_nomination/00003.png b/tests_zemu/snapshots/x-sign_large_nomination/00003.png new file mode 100644 index 0000000..d3a2b75 Binary files /dev/null and b/tests_zemu/snapshots/x-sign_large_nomination/00003.png differ diff --git a/tests_zemu/snapshots/x-sign_large_nomination/00004.png b/tests_zemu/snapshots/x-sign_large_nomination/00004.png new file mode 100644 index 0000000..863607e Binary files /dev/null and b/tests_zemu/snapshots/x-sign_large_nomination/00004.png differ diff --git a/tests_zemu/snapshots/x-sign_large_nomination/00005.png b/tests_zemu/snapshots/x-sign_large_nomination/00005.png new file mode 100644 index 0000000..511d0c6 Binary files /dev/null and b/tests_zemu/snapshots/x-sign_large_nomination/00005.png differ diff --git a/tests_zemu/snapshots/x-sign_large_nomination/00006.png b/tests_zemu/snapshots/x-sign_large_nomination/00006.png new file mode 100644 index 0000000..ff34de8 Binary files /dev/null and b/tests_zemu/snapshots/x-sign_large_nomination/00006.png differ diff --git a/tests_zemu/snapshots/x-sign_large_nomination/00007.png b/tests_zemu/snapshots/x-sign_large_nomination/00007.png new file mode 100644 index 0000000..73fd129 Binary files /dev/null and b/tests_zemu/snapshots/x-sign_large_nomination/00007.png differ diff --git a/tests_zemu/tests/common.ts b/tests_zemu/tests/common.ts new file mode 100644 index 0000000..3b39bdf --- /dev/null +++ b/tests_zemu/tests/common.ts @@ -0,0 +1,63 @@ +// @ts-ignore +import {blake2bFinal, blake2bInit, blake2bUpdate} from "blakejs"; +// @ts-ignore +import ed25519 from "ed25519-supercop"; +import {DeviceModel} from "@zondax/zemu"; + +const Resolve = require("path").resolve; + +export const APP_SEED = "equip will roof matter pink blind book anxiety banner elbow sun young" + +const APP_PATH_S = Resolve("../app/output/app_s.elf"); +const APP_PATH_X = Resolve("../app/output/app_x.elf"); + +export const models: DeviceModel[] = [ + {name: 'nanos', prefix: 'S', path: APP_PATH_S}, + {name: 'nanox', prefix: 'X', path: APP_PATH_X} +] + +export const TESTING_ALLOWLIST_SEED = "0000000000000000000000000000000000000000000000000000000000000000" + +export function dummyAllowlist(nonce: number) { + const addresses = [ + "16dGaSkriYA9aLfDZ3wzYExzD39ysdXrmFkE1F8r4oenXHxB", + "14wbzhrtCQJ62YrAivvZby79H4MEne4M7HNdidWnLUC6rjPc", + ] + + // Prepare len field + const nonce_bytes = Buffer.alloc(4); + const allowlist_len_bytes = Buffer.alloc(4); + + nonce_bytes.writeUInt32LE(nonce); + allowlist_len_bytes.writeUInt32LE(addresses.length); + + // Prepare items field + const addressBuffer = Buffer.alloc(64 * addresses.length, 0); + for (let i = 0; i < addresses.length; i++) { + const tmp = Buffer.from(addresses[i]) + tmp.copy(addressBuffer, i * 64) + } + + // calculate digest + const context = blake2bInit(32, null); + blake2bUpdate(context, nonce_bytes); + blake2bUpdate(context, allowlist_len_bytes); + blake2bUpdate(context, addressBuffer); + const digest = Buffer.from(blake2bFinal(context)); + console.log(`-------------------- ${digest.toString("hex")}`) + + // sign + const keypair = ed25519.createKeyPair(TESTING_ALLOWLIST_SEED) + console.log(`PK : ${keypair.publicKey.toString("hex")}`) + console.log(`SK : ${keypair.secretKey.toString("hex")}`) + + const allowlist_signature = ed25519.sign(digest, keypair.publicKey, keypair.secretKey) + console.log(`SIG: ${allowlist_signature.toString("hex")}`) + + return Buffer.concat([ + nonce_bytes, + allowlist_len_bytes, + allowlist_signature, + addressBuffer + ]) +} diff --git a/tests_zemu/tests/sr25519.test.ts b/tests_zemu/tests/sr25519.test.ts new file mode 100644 index 0000000..2d958da --- /dev/null +++ b/tests_zemu/tests/sr25519.test.ts @@ -0,0 +1,302 @@ +/** ****************************************************************************** + * (c) 2020 Zondax GmbH + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ******************************************************************************* */ + +import Zemu, {DEFAULT_START_OPTIONS} from "@zondax/zemu"; +import {newEdgewareApp} from "@zondax/ledger-polkadot"; + +// @ts-ignore +import {blake2bFinal, blake2bInit, blake2bUpdate} from "blakejs"; +import {APP_SEED} from "./common"; +const addon = require('../../tests_tools/neon/native'); + +const Resolve = require("path").resolve; +const APP_PATH = Resolve("../app/output/app_sr25519.elf"); + +const defaultOptions = { + ...DEFAULT_START_OPTIONS, + logging: true, + custom: `-s "${APP_SEED}"`, + X11: false, + model: 'nanos' +}; + +jest.setTimeout(60000) + +describe('SR25519', function () { + test('get address sr25519', async function () { + const sim = new Zemu(APP_PATH); + try { + await sim.start({...defaultOptions}); + const app = newEdgewareApp(sim.getTransport()); + + const resp = await app.getAddress(0x80000000, 0x80000000, 0x80000000, false, 1); + + console.log(resp) + + expect(resp.return_code).toEqual(0x9000); + expect(resp.error_message).toEqual("No errors"); + + const expected_address = "niSdcp3RnvwZbcobU7YDijKe7CQXCWNXauJXztuQerxuwNT"; + const expected_pk = "e631d987c5bc9f47fa63f0cf9b938dd8ba8d83d9d240c4ee13e49f2eea74882a"; + + expect(resp.address).toEqual(expected_address); + expect(resp.pubKey).toEqual(expected_pk); + } finally { + await sim.close(); + } + }); + + test('show address sr25519', async function () { + const sim = new Zemu(APP_PATH); + try { + await sim.start({...defaultOptions}); + const app = newEdgewareApp(sim.getTransport()); + + const respRequest = app.getAddress(0x80000000, 0x80000000, 0x80000000, true, 1); + // Wait until we are not in the main menu + await sim.waitUntilScreenIsNot(sim.getMainMenuSnapshot()); + + await sim.compareSnapshotsAndAccept(".", "s-show_address_sr25519", 2); + + const resp = await respRequest; + console.log(resp); + + expect(resp.return_code).toEqual(0x9000); + expect(resp.error_message).toEqual("No errors"); + + const expected_address = "niSdcp3RnvwZbcobU7YDijKe7CQXCWNXauJXztuQerxuwNT"; + const expected_pk = "e631d987c5bc9f47fa63f0cf9b938dd8ba8d83d9d240c4ee13e49f2eea74882a"; + + expect(resp.address).toEqual(expected_address); + expect(resp.pubKey).toEqual(expected_pk); + } finally { + await sim.close(); + } + }); + + test('show address - reject sr25519', async function () { + const sim = new Zemu(APP_PATH); + try { + await sim.start({...defaultOptions}); + const app = newEdgewareApp(sim.getTransport()); + + const respRequest = app.getAddress(0x80000000, 0x80000000, 0x80000000, true, 1); + // Wait until we are not in the main menu + await sim.waitUntilScreenIsNot(sim.getMainMenuSnapshot()); + await sim.compareSnapshotsAndAccept(".", "s-show_address_reject_sr25519", 3, 2); + + const resp = await respRequest; + console.log(resp); + + expect(resp.return_code).toEqual(0x6986); + expect(resp.error_message).toEqual("Transaction rejected"); + } finally { + await sim.close(); + } + }); + + test('sign basic normal', async function () { + const sim = new Zemu(APP_PATH); + try { + await sim.start({...defaultOptions}); + const app = newEdgewareApp(sim.getTransport()); + const pathAccount = 0x80000000; + const pathChange = 0x80000000; + const pathIndex = 0x80000000; + + const txBlobStr = "0600008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f5511665516d0fd503ae110300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + + const txBlob = Buffer.from(txBlobStr, "hex"); + + const responseAddr = await app.getAddress(pathAccount, pathChange, pathIndex, false, 1); + const pubKey = Buffer.from(responseAddr.pubKey, "hex"); + + // do not wait here.. we need to navigate + const signatureRequest = app.sign(pathAccount, pathChange, pathIndex, txBlob, 1); + // Wait until we are not in the main menu + await sim.waitUntilScreenIsNot(sim.getMainMenuSnapshot()); + + await sim.compareSnapshotsAndAccept(".", "s-sign_basic_normal", 4); + + const signatureResponse = await signatureRequest; + console.log(signatureResponse); + + expect(signatureResponse.return_code).toEqual(0x9000); + expect(signatureResponse.error_message).toEqual("No errors"); + + // Now verify the signature + let prehash = txBlob; + if (txBlob.length > 256) { + const context = blake2bInit(32, null); + blake2bUpdate(context, txBlob); + prehash = Buffer.from(blake2bFinal(context)); + } + const signingcontext = Buffer.from([]); + const valid = addon.schnorrkel_verify(pubKey, signingcontext, prehash, signatureResponse.signature.slice(1)); + expect(valid).toEqual(true); + } finally { + await sim.close(); + } + }); + + test('sign basic expert', async function () { + const sim = new Zemu(APP_PATH); + try { + await sim.start({...defaultOptions}); + const app = newEdgewareApp(sim.getTransport()); + const pathAccount = 0x80000000; + const pathChange = 0x80000000; + const pathIndex = 0x80000000; + + // Change to expert mode so we can skip fields + await sim.clickRight(); + await sim.clickBoth(); + await sim.clickLeft(); + + const txBlobStr = "0600008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f5511665516d0fd503ae110300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + + const txBlob = Buffer.from(txBlobStr, "hex"); + + const responseAddr = await app.getAddress(pathAccount, pathChange, pathIndex, false, 1); + const pubKey = Buffer.from(responseAddr.pubKey, "hex"); + + // do not wait here.. we need to navigate + const signatureRequest = app.sign(pathAccount, pathChange, pathIndex, txBlob, 1); + + // Wait until we are not in the main menu + await sim.waitUntilScreenIsNot(sim.getMainMenuSnapshot()); + + await sim.compareSnapshotsAndAccept(".", "s-sign_basic_expert", 10); + + const signatureResponse = await signatureRequest; + console.log(signatureResponse); + + expect(signatureResponse.return_code).toEqual(0x9000); + expect(signatureResponse.error_message).toEqual("No errors"); + + // Now verify the signature + let prehash = txBlob; + if (txBlob.length > 256) { + const context = blake2bInit(32, null); + blake2bUpdate(context, txBlob); + prehash = Buffer.from(blake2bFinal(context)); + } + const signingcontext = Buffer.from([]); + const valid = addon.schnorrkel_verify(pubKey, signingcontext, prehash, signatureResponse.signature.slice(1)); + expect(valid).toEqual(true); + } finally { + await sim.close(); + } + }); + + test('sign basic expert - accept shortcut', async function () { + const sim = new Zemu(APP_PATH); + try { + await sim.start({...defaultOptions}); + const app = newEdgewareApp(sim.getTransport()); + const pathAccount = 0x80000000; + const pathChange = 0x80000000; + const pathIndex = 0x80000000; + + // Change to expert mode so we can skip fields + await sim.clickRight(); + await sim.clickBoth(); + await sim.clickLeft(); + + const txBlobStr = "0600008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f5511665516d0fd503ae110300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + + const txBlob = Buffer.from(txBlobStr, "hex"); + + const responseAddr = await app.getAddress(pathAccount, pathChange, pathIndex, false, 1); + const pubKey = Buffer.from(responseAddr.pubKey, "hex"); + + // do not wait here.. we need to navigate + const signatureRequest = app.sign(pathAccount, pathChange, pathIndex, txBlob, 1); + + // Wait until we are not in the main menu + await sim.waitUntilScreenIsNot(sim.getMainMenuSnapshot()); + + // Shortcut to accept menu + await sim.clickBoth(); + + // Accept tx + await sim.clickBoth(); + + const signatureResponse = await signatureRequest; + console.log(signatureResponse); + + expect(signatureResponse.return_code).toEqual(0x9000); + expect(signatureResponse.error_message).toEqual("No errors"); + + // Now verify the signature + let prehash = txBlob; + if (txBlob.length > 256) { + const context = blake2bInit(32, null); + blake2bUpdate(context, txBlob); + prehash = Buffer.from(blake2bFinal(context)); + } + const signingcontext = Buffer.from([]); + const valid = addon.schnorrkel_verify(pubKey, signingcontext, prehash, signatureResponse.signature.slice(1)); + expect(valid).toEqual(true); + } finally { + await sim.close(); + } + }); + + test('sign large nomination', async function () { + const sim = new Zemu(APP_PATH); + try { + await sim.start({...defaultOptions}); + const app = newEdgewareApp(sim.getTransport()); + const pathAccount = 0x80000000; + const pathChange = 0x80000000; + const pathIndex = 0x80000000; + + const txBlobStr = "0805100096b662ea2d97cf848204aa5f97efcffb5eb45980be3722c359bbdae6c27d0869002c152713cb391768b963abdd9d124bfce77fc0546bf4053be9c1500ea3b5e346006ef1f811bdd71390f57f00cccf8cf6a751f1ba1311dfaaad1759c6da592dff0300b653b19dae0aac5f18845f238cef82dbc310c530a1ed482e05eb2a9c5c6d1307d50304002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + + const txBlob = Buffer.from(txBlobStr, "hex"); + + const responseAddr = await app.getAddress(pathAccount, pathChange, pathIndex, false, 1); + const pubKey = Buffer.from(responseAddr.pubKey, "hex"); + + // do not wait here.. we need to navigate + const signatureRequest = app.sign(pathAccount, pathChange, pathIndex, txBlob, 1); + // Wait until we are not in the main menu + await sim.waitUntilScreenIsNot(sim.getMainMenuSnapshot()); + + await sim.compareSnapshotsAndAccept(".", "s-sign_large_nomination", 9); + + const signatureResponse = await signatureRequest; + console.log(signatureResponse); + + expect(signatureResponse.return_code).toEqual(0x9000); + expect(signatureResponse.error_message).toEqual("No errors"); + + // Now verify the signature + let prehash = txBlob; + if (txBlob.length > 256) { + const context = blake2bInit(32, null); + blake2bUpdate(context, txBlob); + prehash = Buffer.from(blake2bFinal(context)); + } + const signingcontext = Buffer.from([]); + const valid = addon.schnorrkel_verify(pubKey, signingcontext, prehash, signatureResponse.signature.slice(1)); + expect(valid).toEqual(true); + } finally { + await sim.close(); + } + }); +}); diff --git a/tests_zemu/tests/test.ts b/tests_zemu/tests/test.ts new file mode 100644 index 0000000..6a753e6 --- /dev/null +++ b/tests_zemu/tests/test.ts @@ -0,0 +1,283 @@ +/** ****************************************************************************** + * (c) 2020 Zondax GmbH + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + ******************************************************************************* */ + +import Zemu, {DEFAULT_START_OPTIONS} from "@zondax/zemu"; +import {newEdgewareApp} from "@zondax/ledger-polkadot"; +import {APP_SEED, models} from "./common"; + +// @ts-ignore +import ed25519 from "ed25519-supercop"; +// @ts-ignore +import {blake2bFinal, blake2bInit, blake2bUpdate} from "blakejs"; + +const defaultOptions = { + ...DEFAULT_START_OPTIONS, + logging: true, + custom: `-s "${APP_SEED}"`, + X11: true, +}; + +jest.setTimeout(60000) + +describe('Standard', function () { + test.each(models)('can start and stop container', async function (m) { + const sim = new Zemu(m.path); + try { + await sim.start({...defaultOptions, model: m.name,}); + } finally { + await sim.close(); + } + }); + + test.each(models)('main menu', async function (m) { + const sim = new Zemu(m.path); + try { + await sim.start({...defaultOptions, model: m.name,}); + await sim.compareSnapshotsAndAccept(".", `${m.prefix.toLowerCase()}-mainmenu`, 3); + } finally { + await sim.close(); + } + }); + + test.each(models)('get app version', async function (m) { + const sim = new Zemu(m.path); + try { + await sim.start({...defaultOptions, model: m.name,}); + const app = newEdgewareApp(sim.getTransport()); + const resp = await app.getVersion(); + + console.log(resp); + + expect(resp.return_code).toEqual(0x9000); + expect(resp.error_message).toEqual("No errors"); + expect(resp).toHaveProperty("test_mode"); + expect(resp).toHaveProperty("major"); + expect(resp).toHaveProperty("minor"); + expect(resp).toHaveProperty("patch"); + } finally { + await sim.close(); + } + }); + + test.each(models)('get address', async function (m) { + const sim = new Zemu(m.path); + try { + await sim.start({...defaultOptions, model: m.name,}); + const app = newEdgewareApp(sim.getTransport()); + + const resp = await app.getAddress(0x80000000, 0x80000000, 0x80000000); + + console.log(resp) + + expect(resp.return_code).toEqual(0x9000); + expect(resp.error_message).toEqual("No errors"); + + const expected_address = "ndQcBy1NSwonPeWBFWcG159epFUTxn4afoAAAuhRTNutr9c"; + const expected_pk = "e25acea4eab17e0ed9cabfa56b83a48229fad7545dc6a8e9e0643b786cb3df3f"; + + expect(resp.address).toEqual(expected_address); + expect(resp.pubKey).toEqual(expected_pk); + } finally { + await sim.close(); + } + }); + + test.each(models)('show address', async function (m) { + const sim = new Zemu(m.path); + try { + await sim.start({...defaultOptions, model: m.name,}); + const app = newEdgewareApp(sim.getTransport()); + + const respRequest = app.getAddress(0x80000000, 0x80000000, 0x80000000, true); + // Wait until we are not in the main menu + await sim.waitUntilScreenIsNot(sim.getMainMenuSnapshot()); + + await sim.compareSnapshotsAndAccept(".", `${m.prefix.toLowerCase()}-show_address`, 2); + + const resp = await respRequest; + + console.log(resp); + + expect(resp.return_code).toEqual(0x9000); + expect(resp.error_message).toEqual("No errors"); + + const expected_address = "ndQcBy1NSwonPeWBFWcG159epFUTxn4afoAAAuhRTNutr9c"; + const expected_pk = "e25acea4eab17e0ed9cabfa56b83a48229fad7545dc6a8e9e0643b786cb3df3f"; + + expect(resp.address).toEqual(expected_address); + expect(resp.pubKey).toEqual(expected_pk); + } finally { + await sim.close(); + } + }); + + test.each(models)('show address - reject', async function (m) { + const sim = new Zemu(m.path); + try { + await sim.start({...defaultOptions, model: m.name,}); + const app = newEdgewareApp(sim.getTransport()); + + const respRequest = app.getAddress(0x80000000, 0x80000000, 0x80000000, true); + // Wait until we are not in the main menu + await sim.waitUntilScreenIsNot(sim.getMainMenuSnapshot()); + + await sim.compareSnapshotsAndAccept(".", `${m.prefix.toLowerCase()}-show_address_reject`, 3, 2); + + const resp = await respRequest; + console.log(resp); + + expect(resp.return_code).toEqual(0x6986); + expect(resp.error_message).toEqual("Transaction rejected"); + } finally { + await sim.close(); + } + }); + + test.each(models)('sign basic normal', async function (m) { + const sim = new Zemu(m.path); + try { + await sim.start({...defaultOptions, model: m.name,}); + const app = newEdgewareApp(sim.getTransport()); + const pathAccount = 0x80000000; + const pathChange = 0x80000000; + const pathIndex = 0x80000000; + + const txBlobStr = "0600008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f5511665516d0fd503ae110300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + + const txBlob = Buffer.from(txBlobStr, "hex"); + + const responseAddr = await app.getAddress(pathAccount, pathChange, pathIndex); + const pubKey = Buffer.from(responseAddr.pubKey, "hex"); + + // do not wait here.. we need to navigate + const signatureRequest = app.sign(pathAccount, pathChange, pathIndex, txBlob); + // Wait until we are not in the main menu + await sim.waitUntilScreenIsNot(sim.getMainMenuSnapshot()); + + await sim.compareSnapshotsAndAccept(".", `${m.prefix.toLowerCase()}-sign_basic_normal`, m.name === "nanos" ? 4 : 4); + + const signatureResponse = await signatureRequest; + console.log(signatureResponse); + + expect(signatureResponse.return_code).toEqual(0x9000); + expect(signatureResponse.error_message).toEqual("No errors"); + + // Now verify the signature + let prehash = txBlob; + if (txBlob.length > 256) { + const context = blake2bInit(32, null); + blake2bUpdate(context, txBlob); + prehash = Buffer.from(blake2bFinal(context)); + } + const valid = ed25519.verify(signatureResponse.signature.slice(1), prehash, pubKey); + expect(valid).toEqual(true); + } finally { + await sim.close(); + } + }); + + test.each(models)('sign basic expert', async function (m) { + const sim = new Zemu(m.path); + try { + await sim.start({...defaultOptions, model: m.name,}); + const app = newEdgewareApp(sim.getTransport()); + const pathAccount = 0x80000000; + const pathChange = 0x80000000; + const pathIndex = 0x80000000; + + // Change to expert mode so we can skip fields + await sim.clickRight(); + await sim.clickBoth(); + await sim.clickLeft(); + + const txBlobStr = "0600008aaf3b387e93d944d6bed7c56a0b75907f9ce2faca80f161f852c0f5511665516d0fd503ae110300002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + + const txBlob = Buffer.from(txBlobStr, "hex"); + + const responseAddr = await app.getAddress(pathAccount, pathChange, pathIndex); + const pubKey = Buffer.from(responseAddr.pubKey, "hex"); + + // do not wait here.. we need to navigate + const signatureRequest = app.sign(pathAccount, pathChange, pathIndex, txBlob); + + // Wait until we are not in the main menu + await sim.waitUntilScreenIsNot(sim.getMainMenuSnapshot()); + + await sim.compareSnapshotsAndAccept(".", `${m.prefix.toLowerCase()}-sign_basic_expert`, 10); + + const signatureResponse = await signatureRequest; + console.log(signatureResponse); + + expect(signatureResponse.return_code).toEqual(0x9000); + expect(signatureResponse.error_message).toEqual("No errors"); + + // Now verify the signature + let prehash = txBlob; + if (txBlob.length > 256) { + const context = blake2bInit(32, null); + blake2bUpdate(context, txBlob); + prehash = Buffer.from(blake2bFinal(context)); + } + const valid = ed25519.verify(signatureResponse.signature.slice(1), prehash, pubKey); + expect(valid).toEqual(true); + } finally { + await sim.close(); + } + }); + + test.each(models)('sign large nomination', async function (m) { + const sim = new Zemu(m.path); + try { + await sim.start({...defaultOptions, model: m.name,}); + const app = newEdgewareApp(sim.getTransport()); + const pathAccount = 0x80000000; + const pathChange = 0x80000000; + const pathIndex = 0x80000000; + + const txBlobStr = "0805100096b662ea2d97cf848204aa5f97efcffb5eb45980be3722c359bbdae6c27d0869002c152713cb391768b963abdd9d124bfce77fc0546bf4053be9c1500ea3b5e346006ef1f811bdd71390f57f00cccf8cf6a751f1ba1311dfaaad1759c6da592dff0300b653b19dae0aac5f18845f238cef82dbc310c530a1ed482e05eb2a9c5c6d1307d50304002d0000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"; + + const txBlob = Buffer.from(txBlobStr, "hex"); + + const responseAddr = await app.getAddress(pathAccount, pathChange, pathIndex); + const pubKey = Buffer.from(responseAddr.pubKey, "hex"); + + // do not wait here.. we need to navigate + const signatureRequest = app.sign(pathAccount, pathChange, pathIndex, txBlob); + // Wait until we are not in the main menu + await sim.waitUntilScreenIsNot(sim.getMainMenuSnapshot()); + + await sim.compareSnapshotsAndAccept(".", `${m.prefix.toLowerCase()}-sign_large_nomination`, m.name === "nanos" ? 9 : 6); + + const signatureResponse = await signatureRequest; + console.log(signatureResponse); + + expect(signatureResponse.return_code).toEqual(0x9000); + expect(signatureResponse.error_message).toEqual("No errors"); + + // Now verify the signature + let prehash = txBlob; + if (txBlob.length > 256) { + const context = blake2bInit(32, null); + blake2bUpdate(context, txBlob); + prehash = Buffer.from(blake2bFinal(context)); + } + const valid = ed25519.verify(signatureResponse.signature.slice(1), prehash, pubKey); + expect(valid).toEqual(true); + } finally { + await sim.close(); + } + }); +}); diff --git a/tests_zemu/tsconfig.json b/tests_zemu/tsconfig.json new file mode 100644 index 0000000..3435f95 --- /dev/null +++ b/tests_zemu/tsconfig.json @@ -0,0 +1,15 @@ +{ + "compilerOptions": { + "module": "commonjs", + "strict": true, + "esModuleInterop": true, + "declaration": true, + "forceConsistentCasingInFileNames": true, + "skipLibCheck": true, + "outDir": "./dist" + }, + "exclude": [ + "node_modules", + "./dist/**" + ] +}