diff --git a/app/Makefile b/app/Makefile index 6f56e0c2..1465aa1d 100755 --- a/app/Makefile +++ b/app/Makefile @@ -55,7 +55,7 @@ endif APP_LOAD_PARAMS = --curve ed25519 $(COMMON_LOAD_PARAMS) --path $(APPPATH) -NANOS_STACK_SIZE := 2888 +NANOS_STACK_SIZE := 2850 include $(CURDIR)/../deps/ledger-zxlib/makefiles/Makefile.devices $(info TARGET_NAME = [$(TARGET_NAME)]) diff --git a/app/Makefile.version b/app/Makefile.version index b9a13d18..64765923 100644 --- a/app/Makefile.version +++ b/app/Makefile.version @@ -3,4 +3,4 @@ APPVERSION_M=0 # This is the `spec_version` field of `Runtime` APPVERSION_N=0 # This is the patch version of this release -APPVERSION_P=6 +APPVERSION_P=7 diff --git a/app/glyphs/icon_app.gif b/app/glyphs/icon_app.gif index d428a588..ccdc3f9f 100644 Binary files a/app/glyphs/icon_app.gif and b/app/glyphs/icon_app.gif differ diff --git a/app/nanos_icon.gif b/app/nanos_icon.gif index d428a588..ccdc3f9f 100644 Binary files a/app/nanos_icon.gif and b/app/nanos_icon.gif differ diff --git a/app/nanox_icon.gif b/app/nanox_icon.gif index 789c657e..6e779f16 100644 Binary files a/app/nanox_icon.gif and b/app/nanox_icon.gif differ diff --git a/app/src/addr.c b/app/src/addr.c index d78aa0b7..517cfc5e 100644 --- a/app/src/addr.c +++ b/app/src/addr.c @@ -40,7 +40,7 @@ zxerr_t addr_getItem(int8_t displayIdx, switch (displayIdx) { case 0: snprintf(outKey, outKeyLen, "Address"); - pageString(outVal, outValLen, (char *) (G_io_apdu_buffer + PK_LEN_25519), pageIdx, pageCount); + pageString(outVal, outValLen, (char *) (G_io_apdu_buffer + PK_LEN_25519_PLUS_TAG), pageIdx, pageCount); return zxerr_ok; case 1: { if (!app_mode_expert()) { diff --git a/app/src/apdu_handler.c b/app/src/apdu_handler.c index 2ce0af24..d8b4dd6b 100644 --- a/app/src/apdu_handler.c +++ b/app/src/apdu_handler.c @@ -123,20 +123,6 @@ __Z_INLINE void handleSignTransaction(volatile uint32_t *flags, volatile uint32_ *flags |= IO_ASYNCH_REPLY; } -__Z_INLINE void handleGetSignature(volatile uint32_t *tx) { - ZEMU_LOGF(50, "HandleGetSignature") - *tx = 0; - const uint8_t slot = G_io_apdu_buffer[OFFSET_P2]; - - const zxerr_t err = crypto_getSignature(G_io_apdu_buffer, IO_APDU_BUFFER_SIZE - 3, slot); - if (err == zxerr_ok){ - *tx = SALT_LEN + HASH_LEN + PK_LEN_25519 + SIG_ED25519_LEN; - THROW(APDU_CODE_OK); - } else { - THROW(APDU_CODE_CONDITIONS_NOT_SATISFIED); - } -} - // For wrapper transactions, address is derived from Ed25519 pubkey __Z_INLINE void handleGetAddr(volatile uint32_t *flags, volatile uint32_t *tx, uint32_t rx) { zemu_log("handleGetAddr\n"); @@ -176,7 +162,8 @@ __Z_INLINE void handle_getversion(__Z_UNUSED volatile uint32_t *flags, volatile 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; + // SDK won't reply if device is blocked ---> Always false + G_io_apdu_buffer[7] = 0; G_io_apdu_buffer[8] = (TARGET_ID >> 24) & 0xFF; G_io_apdu_buffer[9] = (TARGET_ID >> 16) & 0xFF; @@ -226,12 +213,6 @@ void handleApdu(volatile uint32_t *flags, volatile uint32_t *tx, uint32_t rx) { break; } - case INS_GET_SIGNATURE: { - CHECK_PIN_VALIDATED() - handleGetSignature(tx); - break; - } - #if defined(APP_TESTING) case INS_TEST: { handleTest(flags, tx, rx); diff --git a/app/src/coin.h b/app/src/coin.h index 86fbfdbc..cdb74615 100644 --- a/app/src/coin.h +++ b/app/src/coin.h @@ -35,14 +35,20 @@ extern "C" { #define SECP256K1_SK_LEN 32u #define SCALAR_LEN_SECP256K1 32u -#define SK_LEN_25519 64u +#define SK_LEN_25519 32u #define SCALAR_LEN_ED25519 32u #define SIG_PLUS_TYPE_LEN 65u #define ED25519_SIGNATURE_SIZE 64u #define PK_LEN_25519 32u -#define PK_HASH_LEN 40u +#define PK_HASH_LEN 20u +#define PK_HASH_STR_LEN 40u + +// Extra byte at the beginning to indicate type (ED25519 = 0) +#define PK_LEN_25519_PLUS_TAG 33u +#define SIG_LEN_25519_PLUS_TAG 65u + #define ADDRESS_LEN_MAINNET 80u #define ADDRESS_LEN_TESTNET 84u @@ -65,6 +71,8 @@ extern "C" { #define COIN_AMOUNT_DECIMAL_PLACES 6 #define COIN_TICKER "NAM " +#define POS_DECIMAL_PRECISION 12 + #define MENU_MAIN_APP_LINE1 "Namada" #define MENU_MAIN_APP_LINE2 "Ready" #define MENU_MAIN_APP_LINE2_SECRET "???" diff --git a/app/src/common/actions.h b/app/src/common/actions.h index ef2b2bb5..fc4240a4 100644 --- a/app/src/common/actions.h +++ b/app/src/common/actions.h @@ -16,6 +16,7 @@ #pragma once #include +#include "crypto_helper.h" #include "crypto.h" #include "tx.h" #include "apdu_codes.h" @@ -57,24 +58,16 @@ __Z_INLINE zxerr_t app_fill_address(signing_key_type_e addressKind) { __Z_INLINE void app_sign() { const parser_tx_t *txObj = tx_get_txObject(); - - uint8_t pubkey[PK_LEN_25519] = {0}; - const bytes_t pubkey_bytes = {.ptr = pubkey, .len = PK_LEN_25519}; - zxerr_t err = crypto_extractPublicKey_ed25519(pubkey, sizeof(pubkey)); - if (err == zxerr_ok) { - const zxerr_t headerSigErr = crypto_signHeader(&txObj->transaction.header, &pubkey_bytes); - const zxerr_t dataSigErr = crypto_signDataSection(&txObj->transaction.sections.data, &pubkey_bytes); - const zxerr_t codeSigErr = crypto_signCodeSection(&txObj->transaction.sections.code, &pubkey_bytes); - err = (headerSigErr == zxerr_ok && dataSigErr == zxerr_ok && codeSigErr == zxerr_ok) ? zxerr_ok : zxerr_unknown; - } + const zxerr_t err = crypto_sign(txObj, G_io_apdu_buffer, sizeof(G_io_apdu_buffer) - 2); if (err != zxerr_ok) { MEMZERO(G_io_apdu_buffer, sizeof(G_io_apdu_buffer)); 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, 0, APDU_CODE_OK); - io_exchange(CHANNEL_APDU | IO_RETURN_AFTER_TX, 2); + const uint16_t responseLen = PK_LEN_25519_PLUS_TAG + 2 * SALT_LEN + 2 * SIG_LEN_25519_PLUS_TAG; + set_code(G_io_apdu_buffer, responseLen, APDU_CODE_OK); + io_exchange(CHANNEL_APDU | IO_RETURN_AFTER_TX, responseLen + 2); } } diff --git a/app/src/crypto.c b/app/src/crypto.c index 5a1f93e6..53b17a17 100644 --- a/app/src/crypto.c +++ b/app/src/crypto.c @@ -28,279 +28,90 @@ #define SIGN_PREFIX_SIZE 11u #define SIGN_PREHASH_SIZE (SIGN_PREFIX_SIZE + CX_SHA256_SIZE) -typedef struct { - uint8_t salt[SALT_LEN]; - uint8_t hash[HASH_LEN]; - uint8_t pubkey[PK_LEN_25519]; - uint8_t signature[SIG_ED25519_LEN]; -} crypto_signatures_t[3]; - -crypto_signatures_t NV_CONST -N_signatures_impl __attribute__ ((aligned(64))); -#define N_signatures (*(NV_VOLATILE crypto_signatures_t *)PIC(&N_signatures_impl)) - -typedef enum { - signature_header = 0, - signature_data, - signature_code, -} signature_slot_e; - -typedef struct { - uint8_t r[32]; - uint8_t s[32]; - uint8_t v; - - // DER signature max size should be 73 - // https://bitcoin.stackexchange.com/questions/77191/what-is-the-maximum-size-of-a-der-encoded-ecdsa-signature#77192 - uint8_t der_signature[73]; - -} __attribute__((packed)) rsv_signature_t; +#define MAX_SIGNATURE_HASHES 6 -static zxerr_t crypto_store_signature(const bytes_t *salt, const bytes_t *hash, const bytes_t *pubkey, const bytes_t *signature, signature_slot_e slot){ - if (salt == NULL || hash == NULL || pubkey == NULL || signature == NULL || slot > signature_code) { - return zxerr_no_data; - } - - if (salt->len != SALT_LEN || hash->len != HASH_LEN || pubkey->len != PK_LEN_25519 || signature->len != SIG_ED25519_LEN) { +static zxerr_t crypto_extractPublicKey_ed25519(uint8_t *pubKey, uint16_t pubKeyLen) { + if (pubKey == NULL || pubKeyLen < PK_LEN_25519) { return zxerr_invalid_crypto_settings; } - - MEMCPY_NV((void*) &N_signatures[slot].salt, (uint8_t*)salt->ptr, salt->len); - MEMCPY_NV((void *)&N_signatures[slot].hash, (uint8_t*)hash->ptr, hash->len); - MEMCPY_NV((void *)&N_signatures[slot].pubkey, (uint8_t*)pubkey->ptr, pubkey->len); - MEMCPY_NV((void *)&N_signatures[slot].signature, (uint8_t*)signature->ptr, signature->len); - - return zxerr_ok; -} - -zxerr_t crypto_getSignature(uint8_t *output, uint16_t outputLen, uint8_t slot) { - const uint8_t minimum_output_len = SALT_LEN + HASH_LEN + PK_LEN_25519 + SIG_ED25519_LEN; - if (output == NULL || outputLen < minimum_output_len || slot > signature_code) { - return zxerr_out_of_bounds; - } - - const uint8_t *saltPtr = (uint8_t *)&N_signatures[slot].salt; - const uint8_t *hashPtr = (uint8_t *)&N_signatures[slot].hash; - const uint8_t *pubkeyPtr = (uint8_t *)&N_signatures[slot].pubkey; - const uint8_t *sigPtr = (uint8_t *)&N_signatures[slot].signature; - - MEMCPY(output, saltPtr, SALT_LEN); - output += SALT_LEN; - MEMCPY(output, hashPtr, HASH_LEN); - output += HASH_LEN; - MEMCPY(output, pubkeyPtr, PK_LEN_25519); - output += PK_LEN_25519; - MEMCPY(output, sigPtr, ED25519_SIGNATURE_SIZE); - - return zxerr_ok; -} - - -zxerr_t crypto_extractPublicKey_ed25519(uint8_t *pubKey, uint16_t pubKeyLen) { + zxerr_t error = zxerr_unknown; cx_ecfp_public_key_t cx_publicKey; cx_ecfp_private_key_t cx_privateKey; - uint8_t privateKeyData[SK_LEN_25519]; - - if (pubKeyLen < PK_LEN_25519) { - return zxerr_invalid_crypto_settings; - } - - zxerr_t err = zxerr_ok; - 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, 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; - } - } - CATCH_ALL - { - err = zxerr_ledger_api_error; - } - FINALLY - { - MEMZERO(&cx_privateKey, sizeof(cx_privateKey)); - MEMZERO(privateKeyData, SK_LEN_25519); - } + uint8_t privateKeyData[2 * SK_LEN_25519] = {0}; + + // Generate keys + CATCH_CXERROR(os_derive_bip32_with_seed_no_throw(HDW_NORMAL, + CX_CURVE_Ed25519, + hdPath, + HDPATH_LEN_DEFAULT, + privateKeyData, + NULL, + NULL, + 0)) + + CATCH_CXERROR(cx_ecfp_init_private_key_no_throw(CX_CURVE_Ed25519, privateKeyData, SK_LEN_25519, &cx_privateKey)) + CATCH_CXERROR(cx_ecfp_init_public_key_no_throw(CX_CURVE_Ed25519, NULL, 0, &cx_publicKey)) + CATCH_CXERROR(cx_ecfp_generate_pair_no_throw(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]; } - END_TRY; - - return err; -} - -zxerr_t crypto_extractPublicKey_secp256k1(uint8_t *pubKey, uint16_t pubKeyLen) -{ - cx_ecfp_public_key_t cx_publicKey; - cx_ecfp_private_key_t cx_privateKey; - uint8_t privateKeyData[SECP256K1_SK_LEN] = {0}; - if (pubKeyLen < SECP256K1_PK_LEN) { - return zxerr_invalid_crypto_settings; + if ((cx_publicKey.W[PK_LEN_25519] & 1) != 0) { + pubKey[31] |= 0x80; } + error = zxerr_ok; - zxerr_t err = zxerr_ok; - BEGIN_TRY - { - TRY { - os_perso_derive_node_bip32(CX_CURVE_256K1, - hdPath, - HDPATH_LEN_DEFAULT, - privateKeyData, NULL); - - cx_ecfp_init_private_key(CX_CURVE_256K1, privateKeyData, SECP256K1_SK_LEN, &cx_privateKey); - cx_ecfp_init_public_key(CX_CURVE_256K1, NULL, 0, &cx_publicKey); - cx_ecfp_generate_pair(CX_CURVE_256K1, &cx_publicKey, &cx_privateKey, 1); - memcpy(pubKey, cx_publicKey.W, SECP256K1_PK_LEN); - } - CATCH_ALL { - err = zxerr_ledger_api_error; - } - FINALLY { - MEMZERO(&cx_privateKey, sizeof(cx_privateKey)); - MEMZERO(privateKeyData, SECP256K1_SK_LEN); - } +catch_cx_error: + MEMZERO(&cx_privateKey, sizeof(cx_privateKey)); + MEMZERO(privateKeyData, sizeof(privateKeyData)); + if (error != zxerr_ok) { + MEMZERO(pubKey, pubKeyLen); } - END_TRY; - return err; + return error; } -zxerr_t crypto_sign_ed25519(uint8_t *signature, uint16_t signatureMaxLen, const uint8_t *message, uint16_t messageLen) -{ - cx_ecfp_private_key_t cx_privateKey; - uint8_t privateKeyData[SK_LEN_25519] = {0}; - - zxerr_t err = zxerr_unknown; - 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 - cx_eddsa_sign(&cx_privateKey, - CX_LAST, - CX_SHA512, - message, - messageLen, - NULL, - 0, - signature, - signatureMaxLen, - NULL); - - err = zxerr_ok; - } - CATCH_ALL - { - err = zxerr_unknown; - } - FINALLY - { - MEMZERO(&cx_privateKey, sizeof(cx_privateKey)); - MEMZERO(privateKeyData, SK_LEN_25519); - } - } - END_TRY; - - return err; -} - -zxerr_t crypto_sign_secp256k1(uint8_t *signature, - uint16_t signatureMaxLen, - uint16_t *sigSize) { - if (signatureMaxLen < SIGN_PREHASH_SIZE + sizeof(rsv_signature_t)){ - return zxerr_buffer_too_small; +static zxerr_t crypto_sign_ed25519(uint8_t *output, uint16_t outputLen, const uint8_t *message, uint16_t messageLen) { + if (output == NULL || message == NULL || outputLen < ED25519_SIGNATURE_SIZE || messageLen == 0) { + return zxerr_unknown; } - uint8_t messageDigest[CX_SHA256_SIZE]; - MEMZERO(messageDigest,sizeof(messageDigest)); - - // Hash the message to be signed - const uint8_t *message = tx_get_buffer(); - const uint16_t messageLen = tx_get_buffer_length(); - cx_hash_sha256(message, messageLen, messageDigest, CX_SHA256_SIZE); - - CHECK_APP_CANARY() - - cx_ecfp_private_key_t cx_privateKey; - uint8_t privateKeyData[SECP256K1_SK_LEN]; - unsigned int info = 0; - int signatureLength = 0; - - zxerr_t err = zxerr_ok; - BEGIN_TRY - { - TRY - { - // Generate keys - os_perso_derive_node_bip32(CX_CURVE_SECP256K1, - hdPath, - HDPATH_LEN_DEFAULT, - privateKeyData, NULL); - - cx_ecfp_init_private_key(CX_CURVE_SECP256K1, privateKeyData, SECP256K1_SK_LEN, &cx_privateKey); - - // Sign - signatureLength = cx_ecdsa_sign(&cx_privateKey, - CX_RND_RFC6979 | CX_LAST, - CX_SHA256, - messageDigest, - CX_SHA256_SIZE, - signature, - signatureMaxLen, - &info); - - // TODO: DO WE NEED TO CONVERT DER TO RSV? - } - CATCH_ALL { - signatureLength = 0; - err = zxerr_ledger_api_error; - } - FINALLY { - MEMZERO(&cx_privateKey, sizeof(cx_privateKey)); - MEMZERO(privateKeyData, SECP256K1_SK_LEN); - } + uint8_t privateKeyData[2 * SK_LEN_25519] = {0}; + + zxerr_t error = zxerr_unknown; + + CATCH_CXERROR(os_derive_bip32_with_seed_no_throw(HDW_NORMAL, + CX_CURVE_Ed25519, + hdPath, + HDPATH_LEN_DEFAULT, + privateKeyData, + NULL, + NULL, + 0)) + + CATCH_CXERROR(cx_ecfp_init_private_key_no_throw(CX_CURVE_Ed25519, privateKeyData, SK_LEN_25519, &cx_privateKey)) + CATCH_CXERROR(cx_eddsa_sign_no_throw(&cx_privateKey, + CX_SHA512, + message, + messageLen, + output, + outputLen)) + error = zxerr_ok; + +catch_cx_error: + MEMZERO(&cx_privateKey, sizeof(cx_privateKey)); + MEMZERO(privateKeyData, sizeof(privateKeyData)); + + if (error != zxerr_ok) { + MEMZERO(output, outputLen); } - END_TRY; - *sigSize = signatureLength; - return err; + return error; } - typedef struct { - uint8_t publicKey[PK_LEN_25519]; + uint8_t publicKey[PK_LEN_25519_PLUS_TAG]; uint8_t address[ADDRESS_LEN_TESTNET]; } __attribute__((packed)) ed25519_answer_t; @@ -311,20 +122,20 @@ zxerr_t crypto_fillAddress_ed25519(uint8_t *buffer, uint16_t bufferLen, uint16_t uint8_t outLen = 0; ed25519_answer_t *const answer = (ed25519_answer_t *) buffer; - if (bufferLen < PK_LEN_25519 + ADDRESS_LEN_TESTNET) { + if (bufferLen < PK_LEN_25519_PLUS_TAG + ADDRESS_LEN_TESTNET) { return zxerr_unknown; } - CHECK_ZXERR(crypto_extractPublicKey_ed25519(answer->publicKey, sizeof_field(ed25519_answer_t, publicKey))) + CHECK_ZXERR(crypto_extractPublicKey_ed25519(answer->publicKey + 1, PK_LEN_25519)) const bool isTestnet = hdPath[1] == HDPATH_1_TESTNET; - outLen = crypto_encodePubkey_ed25519(answer->address, sizeof(answer->address), answer->publicKey, isTestnet); + outLen = crypto_encodePubkey_ed25519(answer->address, sizeof(answer->address), answer->publicKey + 1, isTestnet); if (outLen == 0) { MEMZERO(buffer, bufferLen); return zxerr_encoding_failed; } - *addrResponseLen = PK_LEN_25519 + outLen; + *addrResponseLen = PK_LEN_25519_PLUS_TAG + outLen; return zxerr_ok; } @@ -343,99 +154,157 @@ zxerr_t crypto_fillAddress(signing_key_type_e addressKind, uint8_t *buffer, uint } -zxerr_t crypto_hashHeader(const header_t *header, uint8_t *output, uint32_t outputLen) { +static zxerr_t crypto_hashHeader(const header_t *header, uint8_t *output, uint32_t outputLen) { if (header == NULL || output == NULL || outputLen < CX_SHA256_SIZE) { return zxerr_invalid_crypto_settings; } - cx_hash_sha256(header->bytes.ptr, header->bytes.len, output, outputLen); - return zxerr_ok; -} - - -zxerr_t crypto_hashDataSection(const section_t *data, uint8_t *output, uint32_t outputLen) { - if (data == NULL || output == NULL || outputLen < CX_SHA256_SIZE) { - return zxerr_no_data; - } - cx_sha256_t sha256 = {0}; cx_sha256_init(&sha256); - cx_sha256_update(&sha256, &data->discriminant, 1); - cx_sha256_update(&sha256, data->salt.ptr, data->salt.len); - cx_sha256_update(&sha256, (uint8_t*) &data->bytes.len, sizeof(data->bytes.len)); - cx_sha256_update(&sha256, data->bytes.ptr, data->bytes.len); + const uint8_t discriminant = 0x07; + cx_sha256_update(&sha256, &discriminant, sizeof(discriminant)); + cx_sha256_update(&sha256, header->bytes.ptr, header->bytes.len); cx_sha256_final(&sha256, output); - return zxerr_ok; } -zxerr_t crypto_hashCodeSection(const section_t *code, uint8_t *output, uint32_t outputLen) { - if (code == NULL || output == NULL || outputLen < CX_SHA256_SIZE) { +zxerr_t crypto_hashSigSection(const signature_section_t *signature_section, const uint8_t *prefix, uint32_t prefixLen, uint8_t *output, uint32_t outputLen) { + if (signature_section == NULL || output == NULL || outputLen < CX_SHA256_SIZE) { return zxerr_invalid_crypto_settings; } cx_sha256_t sha256 = {0}; cx_sha256_init(&sha256); - cx_sha256_update(&sha256, &code->discriminant, 1); - cx_sha256_update(&sha256, code->salt.ptr, code->salt.len); - cx_sha256_update(&sha256, code->bytes.ptr, code->bytes.len); + if (prefix != NULL) { + cx_sha256_update(&sha256, prefix, prefixLen); + } + cx_sha256_update(&sha256, signature_section->salt.ptr, signature_section->salt.len); + cx_sha256_update(&sha256, (uint8_t*) &signature_section->hashes.hashesLen, 4); + cx_sha256_update(&sha256, signature_section->hashes.hashes.ptr, HASH_LEN * signature_section->hashes.hashesLen); + cx_sha256_update(&sha256, signature_section->pubKey.ptr, signature_section->pubKey.len); + cx_sha256_update(&sha256, (const uint8_t*) &signature_section->has_signature, 1); + if(signature_section->has_signature) { + cx_sha256_update(&sha256, signature_section->signature.ptr, signature_section->signature.len); + } cx_sha256_final(&sha256, output); - return zxerr_ok; } -zxerr_t crypto_signHeader(const header_t *header, const bytes_t *pubkey) { - if (header == NULL || pubkey == NULL) { - return zxerr_no_data; +static zxerr_t crypto_addTxnHashes(const parser_tx_t *txObj, concatenated_hashes_t *hashes) { + if (txObj == NULL || hashes == NULL) { + return zxerr_unknown; } - uint8_t hash[HASH_LEN] = {0}; - CHECK_ZXERR(crypto_hashHeader(header, hash, sizeof(hash))) - - uint8_t signature[SIG_ED25519_LEN] = {0}; - CHECK_ZXERR(crypto_sign_ed25519(signature, sizeof(signature), hash, sizeof(hash))) + // Append additional sections depending on the transaction type + switch (txObj->typeTx) { + case InitAccount: + MEMCPY(hashes->hashes.ptr + hashes->hashesLen * HASH_LEN, txObj->initAccount.vp_type_sechash.ptr, HASH_LEN); + hashes->hashesLen++; + break; - const bytes_t hash_bytes = {.ptr = hash, .len = HASH_LEN}; - const bytes_t signature_bytes = {.ptr = signature, .len = SIG_ED25519_LEN}; + case InitValidator: + MEMCPY(hashes->hashes.ptr + hashes->hashesLen * HASH_LEN, txObj->initValidator.vp_type_sechash.ptr, HASH_LEN); + hashes->hashesLen++; + break; - const uint8_t salt[SALT_LEN] = {0}; - const bytes_t salt_bytes = {.ptr = salt, .len = sizeof(salt)}; - CHECK_ZXERR(crypto_store_signature(&salt_bytes, &hash_bytes, pubkey, &signature_bytes, signature_header)) + case UpdateVP: + MEMCPY(hashes->hashes.ptr + hashes->hashesLen * HASH_LEN, txObj->updateVp.vp_type_sechash.ptr, HASH_LEN); + hashes->hashesLen++; + break; - return zxerr_ok; -} + case InitProposal: + MEMCPY(hashes->hashes.ptr + hashes->hashesLen * HASH_LEN, txObj->initProposal.content_sechash.ptr, HASH_LEN); + hashes->hashesLen++; + if (txObj->initProposal.has_proposal_code) { + MEMCPY(hashes->hashes.ptr + hashes->hashesLen * HASH_LEN, txObj->initProposal.proposal_code_sechash.ptr, HASH_LEN); + hashes->hashesLen++; + } + break; -zxerr_t crypto_signDataSection(const section_t *data, const bytes_t *pubkey) { - if (data == NULL || pubkey == NULL) { - return zxerr_no_data; + default: + // Other transaction types do not have extra data + break; } - uint8_t hash[HASH_LEN] = {0}; - CHECK_ZXERR(crypto_hashDataSection(data, hash, sizeof(hash))) - - uint8_t signature[SIG_ED25519_LEN] = {0}; - CHECK_ZXERR(crypto_sign_ed25519(signature, sizeof(signature), hash, sizeof(hash))) - - const bytes_t hash_bytes = {.ptr = hash, .len = HASH_LEN}; - const bytes_t signature_bytes = {.ptr = signature, .len = SIG_ED25519_LEN}; - CHECK_ZXERR(crypto_store_signature(&data->salt, &hash_bytes, pubkey, &signature_bytes, signature_data)) - return zxerr_ok; } -zxerr_t crypto_signCodeSection(const section_t *code, const bytes_t *pubkey) { - if (code == NULL || pubkey == NULL) { - return zxerr_no_data; - } - uint8_t hash[HASH_LEN] = {0}; - CHECK_ZXERR(crypto_hashCodeSection(code, hash, sizeof(hash))) - - uint8_t signature[SIG_ED25519_LEN] = {0}; - CHECK_ZXERR(crypto_sign_ed25519(signature, sizeof(signature), hash, sizeof(hash))) - - const bytes_t hash_bytes = {.ptr = hash, .len = HASH_LEN}; - const bytes_t signature_bytes = {.ptr = signature, .len = SIG_ED25519_LEN}; - CHECK_ZXERR(crypto_store_signature(&code->salt, &hash_bytes, pubkey, &signature_bytes, signature_code)) +zxerr_t crypto_sign(const parser_tx_t *txObj, uint8_t *output, uint16_t outputLen) { + const uint16_t minimumBufferSize = PK_LEN_25519_PLUS_TAG + 2 * SALT_LEN + 2 * SIG_LEN_25519_PLUS_TAG; + if (txObj ==NULL || output == NULL || outputLen < minimumBufferSize) { + return zxerr_unknown; + } + MEMZERO(output, outputLen); + CHECK_ZXERR(crypto_extractPublicKey_ed25519(output + 1, PK_LEN_25519)) + const bytes_t pubkey = {.ptr = output, .len = PK_LEN_25519_PLUS_TAG}; + + // Hashes: code, data, (initAcc | initVali | updateVP = 1 / initProp = 2), raw_signature, header ---> MaxHashes = 6 + uint8_t hashes_buffer[MAX_SIGNATURE_HASHES * HASH_LEN] = {0}; + concatenated_hashes_t section_hashes = { + .hashes.ptr = hashes_buffer, + .hashes.len = sizeof(hashes_buffer), + .hashesLen = 0 + }; + + const section_t *data = &txObj->transaction.sections.data; + const section_t *code = &txObj->transaction.sections.code; + uint8_t *codeHash = section_hashes.hashes.ptr; + uint8_t *dataHash = section_hashes.hashes.ptr + HASH_LEN; + // Concatenate the code and data section hashes + CHECK_ZXERR(crypto_hashCodeSection(code, codeHash, HASH_LEN)) + CHECK_ZXERR(crypto_hashDataSection(data, dataHash, HASH_LEN)) + section_hashes.hashesLen = 2; + + CHECK_ZXERR(crypto_addTxnHashes(txObj, §ion_hashes)) + + // Construct the salt for the signature section being constructed + uint8_t *salt_buffer = output + PK_LEN_25519_PLUS_TAG; + const bytes_t salt = {.ptr = salt_buffer, .len = SALT_LEN}; + + // Construct the unsigned variant of the raw signature section + signature_section_t signature_section = { + .salt = salt, + .hashes = section_hashes, + .pubKey = pubkey, + .has_signature = false, + .signature = {NULL, 0}, + }; + + // Hash the unsigned signature section + uint8_t *raw_signature_hash = section_hashes.hashes.ptr + (section_hashes.hashesLen * HASH_LEN); + CHECK_ZXERR(crypto_hashSigSection(&signature_section, NULL, 0, raw_signature_hash, HASH_LEN)) + + // Sign over the hash of the unsigned signature section + uint8_t *raw = salt_buffer + SALT_LEN; + CHECK_ZXERR(crypto_sign_ed25519(raw + 1, ED25519_SIGNATURE_SIZE, raw_signature_hash, HASH_LEN)) + + // ---------------------------------------------------------------------- + // Start generating wrapper signature + // Affix the signature to make the signature section signed + signature_section.has_signature = true; + signature_section.signature.ptr = raw; + signature_section.signature.len = SIG_LEN_25519_PLUS_TAG; + + // Compute the hash of the signed signature section and concatenate it + const uint8_t sig_sec_prefix = 0x03; + CHECK_ZXERR(crypto_hashSigSection(&signature_section, &sig_sec_prefix, 1, raw_signature_hash, HASH_LEN)) + section_hashes.hashesLen++; + signature_section.hashes.hashesLen++; + + /// Hash the header section + uint8_t *header_hash = section_hashes.hashes.ptr + (section_hashes.hashesLen * HASH_LEN); + CHECK_ZXERR(crypto_hashHeader(&txObj->transaction.header, header_hash, HASH_LEN)) + section_hashes.hashesLen++; + signature_section.hashes.hashesLen++; + + signature_section.has_signature = false; + // Hash the unsigned signature section into raw_sig_hash + uint8_t wrapper_sig_hash[HASH_LEN] = {0}; + CHECK_ZXERR(crypto_hashSigSection(&signature_section, NULL, 0, wrapper_sig_hash, sizeof(wrapper_sig_hash))) + + // Sign over the hash of the unsigned signature section + uint8_t *wrapper = raw + SALT_LEN + SIG_LEN_25519_PLUS_TAG; + CHECK_ZXERR(crypto_sign_ed25519(wrapper + 1, ED25519_SIGNATURE_SIZE, wrapper_sig_hash, sizeof(wrapper_sig_hash))) return zxerr_ok; } diff --git a/app/src/crypto.h b/app/src/crypto.h index 43e4b9c6..f046486a 100644 --- a/app/src/crypto.h +++ b/app/src/crypto.h @@ -29,24 +29,7 @@ extern "C" { extern uint32_t hdPath[HDPATH_LEN_DEFAULT]; zxerr_t crypto_fillAddress(signing_key_type_e addressKind, uint8_t *buffer, uint16_t bufferLen, uint16_t *addrResponseLen); -zxerr_t crypto_extractPublicKey_ed25519(uint8_t *pubKey, uint16_t pubKeyLen); - -zxerr_t crypto_extractPublicKey_secp256k1(uint8_t *pubKey, uint16_t pubKeyLen); - -zxerr_t crypto_sign_ed25519(uint8_t *signature, uint16_t signatureMaxLen, const uint8_t *message, uint16_t messageLen); - -zxerr_t crypto_sign_secp256k1(uint8_t *signature, - uint16_t signatureMaxLen, - uint16_t *sigSize); - -zxerr_t crypto_hashHeader(const header_t *header, uint8_t *output, uint32_t outputLen); -zxerr_t crypto_hashDataSection(const section_t *data, uint8_t *output, uint32_t outputLen); -zxerr_t crypto_hashCodeSection(const section_t *section, uint8_t *output, uint32_t outputLen); - -zxerr_t crypto_signHeader(const header_t *header, const bytes_t *pubkey); -zxerr_t crypto_signDataSection(const section_t *data, const bytes_t *pubkey); -zxerr_t crypto_signCodeSection(const section_t *code, const bytes_t *pubkey); -zxerr_t crypto_getSignature(uint8_t *output, uint16_t outputLen, uint8_t slot); +zxerr_t crypto_sign(const parser_tx_t *txObj, uint8_t *output, uint16_t outputLen); #ifdef __cplusplus } diff --git a/app/src/crypto_helper.c b/app/src/crypto_helper.c index 7bb60742..c9883d34 100644 --- a/app/src/crypto_helper.c +++ b/app/src/crypto_helper.c @@ -65,7 +65,7 @@ static zxerr_t crypto_publicKeyHash_ed25519(uint8_t *publicKeyHash, const uint8_ snprintf((char*) publicKeyHash, FIXED_LEN_STRING_BYTES, "imp::"); // Step 4. The Public Key Hash consists of the first 40 characters of the hex encoding. ---> UPPERCASE - MEMCPY(publicKeyHash + 5, hexPubKeyHash, PK_HASH_LEN); + MEMCPY(publicKeyHash + 5, hexPubKeyHash, PK_HASH_STR_LEN); return zxerr_ok; } @@ -122,116 +122,101 @@ zxerr_t crypto_sha256(const uint8_t *input, uint16_t inputLen, uint8_t *output, return zxerr_ok; } -zxerr_t crypto_serializeCodeHash(uint8_t *buffer, uint16_t bufferLen) { - if (bufferLen < 2) { - return zxerr_buffer_too_small; +zxerr_t crypto_hashExtraDataSection(const section_t *extraData, uint8_t *output, uint32_t outputLen) { + if (extraData == NULL || output == NULL || outputLen < CX_SHA256_SIZE) { + return zxerr_invalid_crypto_settings; } - MEMZERO(buffer, bufferLen); - buffer[0] = 10; - buffer[1] = CX_SHA256_SIZE; +#if defined(TARGET_NANOS) || defined(TARGET_NANOS2) || defined(TARGET_NANOX) + cx_sha256_t sha256 = {0}; + cx_sha256_init(&sha256); + cx_sha256_update(&sha256, &extraData->discriminant, 1); + cx_sha256_update(&sha256, extraData->salt.ptr, extraData->salt.len); + cx_sha256_update(&sha256, extraData->bytes.ptr, extraData->bytes.len); + cx_sha256_final(&sha256, output); +#else + picohash_ctx_t sha256 = {0}; + picohash_init_sha256(&sha256); + picohash_update(&sha256, &extraData->discriminant, 1); + picohash_update(&sha256, extraData->salt.ptr, extraData->salt.len); + picohash_update(&sha256, extraData->bytes.ptr, extraData->bytes.len); + picohash_final(&sha256, output); +#endif return zxerr_ok; } -zxerr_t crypto_serializeData(const uint64_t dataSize, uint8_t *buffer, uint16_t bufferLen, uint8_t *dataInfoSize) { - if (bufferLen < 11) { - return zxerr_buffer_too_small; +zxerr_t crypto_hashDataSection(const section_t *data, uint8_t *output, uint32_t outputLen) { + if (data == NULL || output == NULL || outputLen < CX_SHA256_SIZE) { + return zxerr_no_data; } - MEMZERO(buffer, bufferLen); - buffer[0] = 18; - CHECK_ZXERR(encodeLEB128(dataSize, buffer + 1, MAX_LEB128_OUTPUT, dataInfoSize)) +#if defined(TARGET_NANOS) || defined(TARGET_NANOS2) || defined(TARGET_NANOX) + cx_sha256_t sha256 = {0}; + cx_sha256_init(&sha256); + cx_sha256_update(&sha256, &data->discriminant, 1); + cx_sha256_update(&sha256, data->salt.ptr, data->salt.len); + cx_sha256_update(&sha256, (uint8_t*) &data->bytes.len, sizeof(data->bytes.len)); + cx_sha256_update(&sha256, data->bytes.ptr, data->bytes.len); + cx_sha256_final(&sha256, output); +#else + picohash_ctx_t sha256 = {0}; + picohash_init_sha256(&sha256); + picohash_update(&sha256, &data->discriminant, 1); + picohash_update(&sha256, data->salt.ptr, data->salt.len); + picohash_update(&sha256, (uint8_t*) &data->bytes.len, sizeof(data->bytes.len)); + picohash_update(&sha256, data->bytes.ptr, data->bytes.len); + picohash_final(&sha256, output); +#endif - (*dataInfoSize)++; return zxerr_ok; } -#if 0 -zxerr_t crypto_serializeTimestamp(const prototimestamp_t *timestamp, uint8_t *buffer, uint16_t bufferLen, uint8_t *timestampSize) { - if (timestamp == NULL || buffer == NULL || timestampSize == NULL) { - return zxerr_encoding_failed; - } - MEMZERO(buffer, bufferLen); - *timestampSize = 0; - - uint8_t offset = 0; - buffer[offset++] = 0x1A; // TAG_TS - buffer[offset++] = 0x00; // Size (reserved) - - uint8_t tmpLebSize = 0; - if (timestamp->seconds > 0) { - buffer[offset++] = 0x08; //TAG_S - CHECK_ZXERR(encodeLEB128(timestamp->seconds, buffer + offset, MAX_LEB128_OUTPUT, &tmpLebSize)) - offset += tmpLebSize; +zxerr_t crypto_hashCodeSection(const section_t *code, uint8_t *output, uint32_t outputLen) { + if (code == NULL || output == NULL || outputLen < CX_SHA256_SIZE) { + return zxerr_invalid_crypto_settings; } - if (timestamp->nanos > 0) { - buffer[offset++] = 0x10; //TAG_N - CHECK_ZXERR(encodeLEB128(timestamp->nanos, buffer + offset, MAX_LEB128_OUTPUT, &tmpLebSize)) - offset += tmpLebSize; - } +#if defined(TARGET_NANOS) || defined(TARGET_NANOS2) || defined(TARGET_NANOX) + cx_sha256_t sha256 = {0}; + cx_sha256_init(&sha256); + cx_sha256_update(&sha256, &code->discriminant, 1); + cx_sha256_update(&sha256, code->salt.ptr, code->salt.len); + cx_sha256_update(&sha256, code->bytes.ptr, code->bytes.len); + cx_sha256_final(&sha256, output); +#else + picohash_ctx_t sha256 = {0}; + picohash_init_sha256(&sha256); + picohash_update(&sha256, &code->discriminant, 1); + picohash_update(&sha256, code->salt.ptr, code->salt.len); + picohash_update(&sha256, code->bytes.ptr, code->bytes.len); + picohash_final(&sha256, output); +#endif - // Update size with correct value - buffer[1] = offset - 2; - *timestampSize = offset; // Total size timestamp serialized struct return zxerr_ok; } -zxerr_t crypto_getBytesToSign(const outer_layer_tx_t *outerTxn, uint8_t *toSign, size_t toSignLen) { - if (outerTxn == NULL || toSign == NULL || toSignLen < CX_SHA256_SIZE) { - return zxerr_encoding_failed; +zxerr_t crypto_serializeCodeHash(uint8_t *buffer, uint16_t bufferLen) { + if (bufferLen < 2) { + return zxerr_buffer_too_small; } - MEMZERO(toSign, toSignLen); - - uint8_t code_hash[32] = {0}; - CHECK_ZXERR(crypto_sha256(outerTxn->code, outerTxn->codeSize, (uint8_t*) &code_hash, sizeof(code_hash))) - - uint8_t tmpBuff[20] = {0}; - uint8_t tmpSize = 0; - #if defined(TARGET_NANOS) || defined(TARGET_NANOS2) || defined(TARGET_NANOX) - cx_sha256_t ctx; - cx_sha256_init(&ctx); - - // Code - Code hash - CHECK_ZXERR(crypto_serializeCodeHash((uint8_t*) tmpBuff, sizeof(tmpBuff))) - cx_sha256_update(&ctx, (const uint8_t*) tmpBuff, 2); - cx_sha256_update(&ctx, (const uint8_t*) code_hash, sizeof(code_hash)); - - // Data - CHECK_ZXERR(crypto_serializeData((const uint64_t)outerTxn->dataSize, (uint8_t*) tmpBuff, sizeof(tmpBuff), &tmpSize)) - cx_sha256_update(&ctx, (const uint8_t*) tmpBuff, tmpSize); - cx_sha256_update(&ctx, outerTxn->data, outerTxn->dataSize); - - // Timestamp - CHECK_ZXERR(crypto_serializeTimestamp(&outerTxn->timestamp, (uint8_t*) tmpBuff, sizeof(tmpBuff), &tmpSize)) - cx_sha256_update(&ctx, (const uint8_t*) tmpBuff, tmpSize); - - - // Hash SigningTxn - cx_sha256_final(&ctx, toSign); - #else - picohash_ctx_t ctx; - picohash_init_sha256(&ctx); - - // Code - Code hash - CHECK_ZXERR(crypto_serializeCodeHash((uint8_t*) tmpBuff, sizeof(tmpBuff))) - picohash_update(&ctx, tmpBuff, 2); - picohash_update(&ctx, code_hash, sizeof(code_hash)); + MEMZERO(buffer, bufferLen); + buffer[0] = 10; + buffer[1] = CX_SHA256_SIZE; - // Data - CHECK_ZXERR(crypto_serializeData((const uint64_t)outerTxn->dataSize, (uint8_t*) tmpBuff, sizeof(tmpBuff), &tmpSize)) - picohash_update(&ctx, &tmpBuff, tmpSize); - picohash_update(&ctx, outerTxn->data, outerTxn->dataSize); + return zxerr_ok; +} - // Timestamp - CHECK_ZXERR(crypto_serializeTimestamp(&outerTxn->timestamp, (uint8_t*) tmpBuff, sizeof(tmpBuff), &tmpSize)) - picohash_update(&ctx, tmpBuff, tmpSize); +zxerr_t crypto_serializeData(const uint64_t dataSize, uint8_t *buffer, uint16_t bufferLen, uint8_t *dataInfoSize) { + if (bufferLen < 11) { + return zxerr_buffer_too_small; + } - picohash_final(&ctx, toSign); - #endif + MEMZERO(buffer, bufferLen); + buffer[0] = 18; + CHECK_ZXERR(encodeLEB128(dataSize, buffer + 1, MAX_LEB128_OUTPUT, dataInfoSize)) + (*dataInfoSize)++; return zxerr_ok; } -#endif diff --git a/app/src/crypto_helper.h b/app/src/crypto_helper.h index 7d05842f..ae158518 100644 --- a/app/src/crypto_helper.h +++ b/app/src/crypto_helper.h @@ -36,12 +36,9 @@ uint8_t crypto_encodePubkey_ed25519(uint8_t *buffer, uint16_t bufferLen, zxerr_t crypto_sha256(const uint8_t *input, uint16_t inputLen, uint8_t *output, uint16_t outputLen); - -#if 0 -zxerr_t crypto_serializeTimestamp(const prototimestamp_t *timestamp, uint8_t *buffer, uint16_t bufferLen, uint8_t *timestampSize); -zxerr_t crypto_getBytesToSign(const outer_layer_tx_t *outerTxn, uint8_t *toSign, size_t toSignLen); -#endif - +zxerr_t crypto_hashDataSection(const section_t *data, uint8_t *output, uint32_t outputLen); +zxerr_t crypto_hashCodeSection(const section_t *section, uint8_t *output, uint32_t outputLen); +zxerr_t crypto_hashExtraDataSection(const section_t *section, uint8_t *output, uint32_t outputLen); #ifdef __cplusplus } diff --git a/app/src/parser_impl_common.c b/app/src/parser_impl_common.c index 044928b8..2560d1f4 100644 --- a/app/src/parser_impl_common.c +++ b/app/src/parser_impl_common.c @@ -59,6 +59,16 @@ parser_error_t readUint64(parser_context_t *ctx, uint64_t *value) { return parser_ok; } +parser_error_t readUint256(parser_context_t *ctx, uint256_t *value) { + if (value == NULL || ctx->offset + sizeof(uint256_t) > ctx->bufferLen) { + return parser_unexpected_error; + } + + MEMCPY(value, ctx->buffer + ctx->offset, sizeof(uint256_t)); + ctx->offset += sizeof(uint256_t); + return parser_ok; +} + zxerr_t recover_decimal(const uint8_t* bytes, int64_t* num, uint32_t* scale) { if (bytes == NULL) { return zxerr_unknown; // Invalid byte sequence diff --git a/app/src/parser_impl_common.h b/app/src/parser_impl_common.h index ee861144..80764153 100644 --- a/app/src/parser_impl_common.h +++ b/app/src/parser_impl_common.h @@ -27,14 +27,14 @@ extern "C" { #define BOND_NORMAL_PARAMS 3 #define BOND_EXPERT_PARAMS 8 -#define CUSTOM_NORMAL_PARAMS 0 +#define CUSTOM_NORMAL_PARAMS 1 #define CUSTOM_EXPERT_PARAMS 6 #define INIT_ACCOUNT_NORMAL_PARAMS 3 #define INIT_ACCOUNT_EXPERT_PARAMS 8 -#define INIT_PROPOSAL_NORMAL_PARAMS 6 -#define INIT_PROPOSAL_EXPERT_PARAMS 11 +#define INIT_PROPOSAL_NORMAL_PARAMS 7 +#define INIT_PROPOSAL_EXPERT_PARAMS 12 #define VOTE_PROPOSAL_NORMAL_PARAMS 4 #define VOTE_PROPOSAL_EXPERT_PARAMS 9 @@ -62,6 +62,7 @@ parser_error_t readBytes(parser_context_t *ctx, const uint8_t **output, uint16_t parser_error_t readUint16(parser_context_t *ctx, uint16_t *value); parser_error_t readUint32(parser_context_t *ctx, uint32_t *value); parser_error_t readUint64(parser_context_t *ctx, uint64_t *value); +parser_error_t readUint256(parser_context_t *ctx, uint256_t *value); parser_error_t readDecimal(parser_context_t *ctx, serialized_decimal *value); parser_error_t readFieldSize(parser_context_t *ctx, uint32_t *size); parser_error_t checkTag(parser_context_t *ctx, uint8_t expectedTag); diff --git a/app/src/parser_impl_txn.c b/app/src/parser_impl_txn.c index 4e088cd8..1f69992e 100644 --- a/app/src/parser_impl_txn.c +++ b/app/src/parser_impl_txn.c @@ -15,11 +15,13 @@ ********************************************************************************/ #include "parser_impl_common.h" #include "parser_txdef.h" +#include "crypto_helper.h" #include "leb128.h" #include "bech32.h" #include "stdbool.h" +#include -#define ADDRESS_LEN_BYTES 45 +#define ADDRESS_LEN_BYTES 21 #define DISCRIMINANT_DATA 0x00 #define DISCRIMINANT_EXTRA_DATA 0x01 @@ -29,27 +31,48 @@ #define DISCRIMINANT_MASP_TX 0x05 #define DISCRIMINANT_MASP_BUILDER 0x06 +static const txn_types_t allowed_txn[] = { + {{0xf4, 0x4f, 0x82, 0x15, 0x02, 0xb1, 0xd8, 0xef, 0x3b, 0xb1, 0x1a, 0xf6, 0x45, 0xba, 0xbe, 0x35, 0x03, 0x94, 0xc3, 0x9c, 0x6b, 0x8b, 0x1c, 0xef, 0x84, 0x8b, 0xf6, 0x0a, 0xa4, 0xaa, 0xaf, 0x8d}, + Bond}, -static const uint8_t hash_bond[] = {0xc5, 0xaf, 0x31, 0x37, 0x28, 0xe2, 0x81, 0xc2, 0x57, 0x8b, 0x4b, 0xd8, 0xcb, 0xc9, 0xcb, 0xbf, 0xb0, 0x20, 0x9d, 0x07, 0x85, 0x73, 0x4b, 0x46, 0x2c, 0x44, 0xb9, 0xa6, 0x31, 0x01, 0x29, 0x00 }; -static const uint8_t hash_unbond[] = {0x7c, 0x18, 0x51, 0x53, 0x4a, 0x76, 0xb7, 0xb3, 0x35, 0x16, 0xeb, 0x48, 0x97, 0x54, 0x8b, 0xc5, 0x45, 0x73, 0xe1, 0xc4, 0x79, 0x2d, 0xb1, 0xe6, 0x95, 0x96, 0x7a, 0x19, 0xa8, 0xc6, 0x48, 0x48}; -static const uint8_t hash_custom[] = {0x1c, 0x3e, 0x0c, 0x79, 0x1a, 0xa8, 0xa4, 0x33, 0x00, 0xe0, 0x8a, 0x5e, 0x54, 0x08, 0xdf, 0x66, 0xe6, 0x7e, 0xed, 0x26, 0x72, 0x1f, 0x3f, 0x48, 0x97, 0xb0, 0x17, 0xed, 0xdf, 0xc8, 0xcc, 0x78}; -static const uint8_t hash_init_account[] = {0xfb, 0xd9, 0xe6, 0x6c, 0xe6, 0x6f, 0xc8, 0xae, 0x92, 0x57, 0x87, 0x8a, 0x60, 0xc6, 0xaf, 0xfe, 0x50, 0x46, 0xf3, 0xfc, 0xb4, 0x14, 0x8f, 0x39, 0x4a, 0x6e, 0xfa, 0x57, 0x89, 0xd8, 0xef, 0x72}; -static const uint8_t hash_init_proposal[] ={0x65, 0x9f, 0xaa, 0xd0, 0xbf, 0x46, 0xb6, 0x89, 0xce, 0xa0, 0x6b, 0x4d, 0x31, 0x04, 0x0c, 0xa2, 0x30, 0xdb, 0x1b, 0x00, 0x96, 0xe8, 0x64, 0x0e, 0x40, 0xad, 0x57, 0x43, 0x4c, 0x9d, 0x4b, 0x16}; -static const uint8_t hash_vote_proposal[] = {0x26, 0x9e, 0xd9, 0x2f, 0xd7, 0xe6, 0x8a, 0xf0, 0x06, 0xb9, 0x5f, 0x1f, 0x4b, 0x9a, 0x91, 0x1c, 0x0c, 0xf5, 0x1a, 0x2d, 0x60, 0x56, 0xb3, 0xc0, 0x61, 0x9e, 0x10, 0xe8, 0xfd, 0x0e, 0xe2, 0x72}; -static const uint8_t hash_init_validator[] = {0x47, 0x03, 0x71, 0x62, 0x33, 0x73, 0x8e, 0xe2, 0x0e, 0x16, 0x1d, 0x5b, 0x8f, 0x1a, 0xe8, 0x56, 0xf7, 0x09, 0x6f, 0x51, 0x42, 0xe2, 0x8b, 0xbd, 0x79, 0xe5, 0xed, 0xe9, 0xb8, 0x6f, 0x9c, 0x56}; -static const uint8_t hash_reveal_pubkey[] ={0xcc, 0xd2, 0xd3, 0xcf, 0x7e, 0xb3, 0x6a, 0xf9, 0x65, 0xe5, 0x2e, 0x10, 0xb3, 0x00, 0x52, 0x3e, 0x79, 0x6b, 0x7c, 0x55, 0x17, 0x27, 0x8a, 0x07, 0x03, 0xc4, 0x29, 0xd6, 0x70, 0xff, 0xf4, 0x79}; -static const uint8_t hash_transfer[] = {0x22, 0x59, 0x91, 0xdd, 0xf8, 0x8d, 0x81, 0xb7, 0xa5, 0x87, 0xe9, 0x8f, 0xc4, 0x5d, 0x4e, 0xfe, 0x6d, 0xf3, 0xb3, 0xbc, 0x62, 0xd9, 0xba, 0x94, 0x6a, 0x82, 0x9b, 0x7a, 0x2d, 0x00, 0x25, 0xed}; -static const uint8_t hash_update_vp[] = {0x8d, 0x00, 0xc0, 0xf6, 0xb7, 0x15, 0x11, 0xfd, 0x48, 0xda, 0x76, 0x67, 0x9f, 0x3f, 0x9a, 0x5b, 0x41, 0x10, 0x3b, 0x93, 0x16, 0x1a, 0x71, 0xb0, 0xc9, 0x7b, 0x21, 0x29, 0x06, 0xa7, 0x1d, 0xbb}; -static const uint8_t hash_withdraw[] = {0xf7, 0xa3, 0xac, 0xf0, 0x46, 0xf3, 0xc2, 0x16, 0xea, 0xf4, 0xc6, 0x82, 0x7a, 0x3f, 0x91, 0x43, 0x3d, 0xac, 0x58, 0x05, 0xd8, 0x2f, 0x2d, 0x6a, 0xd7, 0xbd, 0xf1, 0x57, 0x4d, 0x50, 0x41, 0x40}; -static const uint8_t hash_commission_change[] = {0x63, 0x31, 0x87, 0x82, 0x47, 0x80, 0x28, 0xc3, 0xa4, 0x69, 0x51, 0x04, 0xff, 0x4a, 0xab, 0x62, 0x08, 0xf0, 0xfc, 0x07, 0x52, 0x82, 0x8d, 0x4a, 0xb4, 0x86, 0x27, 0x6c, 0x69, 0xcf, 0xd4, 0x6c}; + {{0x48, 0x78, 0xbf, 0x97, 0x80, 0x63, 0x4d, 0x8e, 0xe4, 0xc8, 0x94, 0x32, 0xd7, 0x12, 0xe5, 0xa7, 0x19, 0x73, 0x73, 0x59, 0x0c, 0xea, 0x65, 0x8f, 0xe2, 0x9c, 0x5e, 0xf1, 0x5c, 0x50, 0x1f, 0xe5}, + Unbond}, + + {{0x39, 0xc4, 0xf8, 0xd4, 0xe9, 0xb1, 0x4a, 0xac, 0x44, 0x91, 0xd1, 0x15, 0xfa, 0x5d, 0x43, 0x82, 0xbe, 0x49, 0x0a, 0xc9, 0xb5, 0xbf, 0x6d, 0x19, 0x1f, 0x8a, 0xa6, 0x6f, 0xa4, 0xe1, 0x2b, 0xf6}, + InitAccount}, + + {{0xd0, 0xa4, 0xd6, 0x81, 0xcd, 0xc8, 0xb8, 0x3e, 0x04, 0xa6, 0x4f, 0xbc, 0x59, 0x2b, 0xcb, 0xe9, 0xd9, 0x3f, 0x28, 0x16, 0x4d, 0x2d, 0x5c, 0xb5, 0xff, 0x9a, 0x4f, 0xbd, 0x43, 0xd2, 0x06, 0xb8}, + InitProposal}, + + {{0xbd, 0x14, 0x0b, 0xc5, 0xda, 0xef, 0xff, 0x5b, 0xc3, 0x97, 0x5e, 0xd6, 0x65, 0x88, 0x60, 0xa2, 0xdf, 0x91, 0x9b, 0xd0, 0xfe, 0x93, 0x6d, 0x66, 0xd8, 0x8d, 0x2b, 0xdc, 0x74, 0x12, 0xe8, 0xb6}, + VoteProposal}, + + {{0xe5, 0x4e, 0xb1, 0x1b, 0xed, 0x86, 0xe5, 0x7e, 0x68, 0x88, 0xa7, 0x0e, 0xf4, 0xd2, 0x70, 0x50, 0x34, 0xb4, 0x2f, 0xcc, 0x7d, 0xd4, 0xc1, 0x31, 0x4a, 0x49, 0xf5, 0x9d, 0xc0, 0x04, 0xe4, 0x97}, + InitValidator}, + + {{0x55, 0xff, 0xd1, 0x17, 0x71, 0x03, 0x4c, 0x91, 0x73, 0x8b, 0xf8, 0xdd, 0x55, 0xca, 0x2f, 0xfa, 0x12, 0x99, 0xbe, 0x50, 0xfd, 0xb0, 0x8c, 0xee, 0xd0, 0x71, 0xd9, 0x50, 0x46, 0x9d, 0xdf, 0xee}, + RevealPubkey}, + + {{0x55, 0xf9, 0x78, 0x0f, 0x74, 0xdf, 0xbc, 0xfe, 0xfe, 0x09, 0xfb, 0x66, 0x73, 0x31, 0x89, 0x3a, 0xbd, 0x63, 0xed, 0xdf, 0xcf, 0x07, 0xf7, 0x8e, 0x5f, 0x19, 0x71, 0x1c, 0xb9, 0xf0, 0xa8, 0xaa}, + Transfer}, + + {{0x08, 0x7d, 0xe3, 0x03, 0x84, 0x82, 0xe3, 0xcc, 0x0f, 0xd5, 0x3c, 0x2b, 0xf5, 0xdd, 0x98, 0x8b, 0x6a, 0x55, 0xa5, 0x50, 0x7c, 0x27, 0x14, 0x03, 0xa4, 0x8b, 0x94, 0x56, 0x16, 0x2b, 0x7c, 0xc7}, + UpdateVP}, + + {{0x9d, 0x36, 0x6f, 0xb3, 0x83, 0x54, 0xc7, 0x4e, 0x9d, 0xdb, 0xdd, 0x74, 0x20, 0xe4, 0x6f, 0x22, 0x01, 0xf3, 0x47, 0x44, 0x68, 0xb8, 0x49, 0x47, 0xba, 0x62, 0x63, 0x16, 0x31, 0xfa, 0x8d, 0xb1}, + Withdraw}, + + {{0x00, 0xe4, 0x1e, 0x22, 0x72, 0xcb, 0x17, 0xda, 0xb3, 0x19, 0xea, 0x05, 0x98, 0x85, 0x4d, 0xb7, 0x38, 0xee, 0x90, 0x1d, 0x75, 0x89, 0x3b, 0x61, 0xb8, 0xb7, 0x54, 0x46, 0x0f, 0x23, 0xdf, 0x78}, + CommissionChange}, +}; +static const uint32_t allowed_txn_len = sizeof(allowed_txn) / sizeof(allowed_txn[0]); // Update VP types static const vp_types_t vp_user = { - {0xa4, 0x64, 0xa5, 0xb9, 0x3a, 0x58, 0x27, 0xe2, 0xc0, 0xee, 0xa0, 0xed, 0xb3, 0x7b, 0x16, 0xc8, 0x29, 0x67, 0x6f, 0xe7, 0x87, 0x9f, 0xcc, 0x36, 0xe8, 0x72, 0xc4, 0xa4, 0x0b, 0xad, 0xf1, 0x0d}, + {0x24, 0x51, 0x51, 0x5c, 0x3a, 0x6f, 0xa0, 0x63, 0xeb, 0x25, 0xd9, 0x0e, 0xf1, 0x52, 0x68, 0xdf, 0xbd, 0xd3, 0x71, 0x33, 0x52, 0x1c, 0x34, 0xfb, 0x58, 0xb6, 0x8b, 0x1c, 0x4b, 0x61, 0x91, 0x80}, "User" }; - -// Add blindsigning code hash +static const char *unknown_vp = "Unknown VP hash"; #define NAM_TOKEN(_address, _symbol) { \ .address = _address, \ @@ -95,15 +118,10 @@ parser_error_t readVPType(const bytes_t *vp_type_hash, const char **vp_type_text return parser_unexpected_value; } - // Type is User - if (!memcmp(vp_type_hash->ptr, vp_user.hash, SHA256_SIZE)) - { + *vp_type_text = (char*) PIC(unknown_vp); + if (!memcmp(vp_type_hash->ptr, vp_user.hash, HASH_LEN)) { *vp_type_text = (char*) PIC(vp_user.text); } - else { - *vp_type_text = (char*) PIC("Unknown VP hash"); - } - return parser_ok; } @@ -126,22 +144,17 @@ parser_error_t readAddress(bytes_t pubkeyHash, char *address, uint16_t addressLe return parser_value_out_of_range; } - uint32_t hashLen = 0; - MEMCPY(&hashLen, pubkeyHash.ptr, sizeof(uint32_t)); - pubkeyHash.ptr += sizeof(uint32_t); - if (hashLen != PK_HASH_LEN) { - return parser_unexpected_value; - } - - uint8_t tmpBuffer[FIXED_LEN_STRING_BYTES] = {0}; - snprintf((char*) tmpBuffer, sizeof(tmpBuffer), "%s", prefix); - MEMCPY(tmpBuffer + strnlen(prefix, 5), pubkeyHash.ptr, PK_HASH_LEN); + char tmpBuffer[FIXED_LEN_STRING_BYTES+1] = {0}; + snprintf(tmpBuffer, sizeof(tmpBuffer), "%s", prefix); + const uint8_t prefixLen = strlen(prefix); + array_to_hexstr_uppercase(tmpBuffer + prefixLen, sizeof(tmpBuffer) - prefixLen, pubkeyHash.ptr, PK_HASH_LEN); + // Check HRP for mainnet/testnet const char *hrp = "atest"; const zxerr_t err = bech32EncodeFromBytes(address, addressLen, hrp, - tmpBuffer, + (uint8_t*) tmpBuffer, FIXED_LEN_STRING_BYTES, 0, BECH32_ENCODING_BECH32M); @@ -157,150 +170,139 @@ static parser_error_t readTransactionType(bytes_t codeHash, transaction_type_e * return parser_unexpected_error; } - // Bond - if (!memcmp(codeHash.ptr, hash_bond, SHA256_SIZE)) { - *type = Bond; - return parser_ok; - } - // Unbond - if (!memcmp(codeHash.ptr, hash_unbond, SHA256_SIZE)) { - *type = Unbond; - return parser_ok; - } - // Custom - if (!memcmp(codeHash.ptr, hash_custom, SHA256_SIZE)) { - *type = Custom; - return parser_ok; - } - - // Transfer - if (!memcmp(codeHash.ptr, hash_transfer, SHA256_SIZE)) { - *type = Transfer; - return parser_ok; - } - - // Init account - if (!memcmp(codeHash.ptr, hash_init_account, SHA256_SIZE)) { - *type = InitAccount; - return parser_ok; - } - - - // Init proposal - if(!memcmp(codeHash.ptr, hash_init_proposal, SHA256_SIZE)){ - *type = InitProposal; - return parser_ok; - } - - // Vote proposal - if(!memcmp(codeHash.ptr, hash_vote_proposal, SHA256_SIZE)){ - *type = VoteProposal; - return parser_ok; - } - - // Init validator - if (!memcmp(codeHash.ptr, hash_init_validator, SHA256_SIZE)) { - *type = InitValidator; - return parser_ok; - } - - // Reveal pubkey - if(!memcmp(codeHash.ptr, hash_reveal_pubkey, SHA256_SIZE)){ - *type = RevealPubkey; - return parser_ok; - } - - // Withdraw - if (!memcmp(codeHash.ptr, hash_withdraw, SHA256_SIZE)) { - *type = Withdraw; - return parser_ok; - } - - // Change Commission - if (!memcmp(codeHash.ptr, hash_commission_change, SHA256_SIZE)) { - *type = CommissionChange; - return parser_ok; - } - - // Update VP - if (!memcmp(codeHash.ptr,hash_update_vp,SHA256_SIZE)) - { - *type = UpdateVP; - return parser_ok; + // Custom txn as default value + *type = Custom; + for (uint32_t i = 0; i < allowed_txn_len; i++) { + if (memcmp(codeHash.ptr, allowed_txn[i].hash, HASH_LEN) == 0) { + *type = allowed_txn[i].type; + break; + } } - - *type = Unknown; - return parser_unexpected_method; + return parser_ok; } -static parser_error_t readInitValidatorTxn(bytes_t *data,const bytes_t *extra_data, parser_tx_t *v) { +static parser_error_t readInitValidatorTxn(bytes_t *data, const section_t *extra_data, const uint32_t extraDataLen, parser_tx_t *v) { + if (data == NULL || extra_data == NULL || v == NULL || extraDataLen >= MAX_EXTRA_DATA_SECS) { + return parser_unexpected_value; + } parser_context_t ctx = {.buffer = data->ptr, .bufferLen = data->len, .offset = 0, .tx_obj = NULL}; - parser_context_t extra_data_ctx = {.buffer = extra_data->ptr, - .bufferLen = extra_data->len, - .offset = 0, - .tx_obj = NULL}; - - v->initValidator.account_key.len = 33; + v->initValidator.account_key.len = PK_LEN_25519_PLUS_TAG; CHECK_ERROR(readBytes(&ctx, &v->initValidator.account_key.ptr, v->initValidator.account_key.len)) - v->initValidator.consensus_key.len = 33; + v->initValidator.consensus_key.len = PK_LEN_25519_PLUS_TAG; CHECK_ERROR(readBytes(&ctx, &v->initValidator.consensus_key.ptr, v->initValidator.consensus_key.len)) - v->initValidator.protocol_key.len = 33; + v->initValidator.protocol_key.len = PK_LEN_25519_PLUS_TAG; CHECK_ERROR(readBytes(&ctx, &v->initValidator.protocol_key.ptr, v->initValidator.protocol_key.len)) v->initValidator.dkg_key.len = 100; //Check this size. Is fixed? CHECK_ERROR(readBytes(&ctx, &v->initValidator.dkg_key.ptr, v->initValidator.dkg_key.len)) // Commission rate - CHECK_ERROR(readDecimal(&ctx, &v->initValidator.commission_rate)); + CHECK_ERROR(readUint256(&ctx, &v->initValidator.commission_rate)); // Max commission rate change - CHECK_ERROR(readDecimal(&ctx, &v->initValidator.max_commission_rate_change)); + CHECK_ERROR(readUint256(&ctx, &v->initValidator.max_commission_rate_change)); // VP code hash - v->initValidator.vp_type_hash.len = HASH_LEN; - CHECK_ERROR(readBytes(&extra_data_ctx, &v->initValidator.vp_type_hash.ptr, v->initValidator.vp_type_hash.len)) - // Get text from hash - CHECK_ERROR(readVPType(&v->initValidator.vp_type_hash, &v->initValidator.vp_type_text)) + v->initValidator.vp_type_sechash.len = HASH_LEN; + CHECK_ERROR(readBytes(&ctx, &v->initValidator.vp_type_sechash.ptr, v->initValidator.vp_type_sechash.len)) + + bool found_vp_code = false; + // Load the linked to data from the extra data sections + for (uint32_t i = 0; i < extraDataLen; i++) { + parser_context_t extra_data_ctx = { + .buffer = extra_data[i].bytes.ptr, + .bufferLen = extra_data[i].bytes.len, + .offset = 0, + .tx_obj = NULL}; - // Skip the rest of the fields - ctx.offset = ctx.bufferLen; + // Read the hash inside the extra data section + bytes_t commitment = { .ptr = NULL, .len = HASH_LEN }; + CHECK_ERROR(readBytes(&extra_data_ctx, &commitment.ptr, commitment.len)) - if (ctx.offset != ctx.bufferLen) { + uint8_t extraDataHash[HASH_LEN] = {0}; + if (crypto_hashExtraDataSection(&extra_data[i], extraDataHash, sizeof(extraDataHash)) != zxerr_ok) { + return parser_unexpected_error; + } + + if (!memcmp(extraDataHash, v->initValidator.vp_type_sechash.ptr, HASH_LEN)) { + // If this section contains the VP code hash + v->initValidator.vp_type_secidx = extra_data[i].idx; + v->initValidator.vp_type_hash = commitment; + CHECK_ERROR(readVPType(&v->initValidator.vp_type_hash, &v->initValidator.vp_type_text)) + found_vp_code = true; + } + if (extra_data_ctx.offset != extra_data_ctx.bufferLen) { + return parser_unexpected_characters; + } + } + + if (!found_vp_code) { + return parser_missing_field; + } else if (ctx.offset != ctx.bufferLen) { return parser_unexpected_characters; } return parser_ok; } -static parser_error_t readInitAccountTxn(const bytes_t *data,const bytes_t *extra_data, parser_tx_t *v) { +static parser_error_t readInitAccountTxn(const bytes_t *data,const section_t *extra_data,const uint32_t extraDataLen, parser_tx_t *v) { + if (data == NULL || extra_data == NULL || v == NULL || extraDataLen >= MAX_EXTRA_DATA_SECS) { + return parser_unexpected_value; + } parser_context_t ctx = {.buffer = data->ptr, .bufferLen = data->len, .offset = 0, .tx_obj = NULL}; - parser_context_t extra_data_ctx = {.buffer = extra_data->ptr, - .bufferLen = extra_data->len, - .offset = 0, - .tx_obj = NULL}; // Pubkey - v->initAccount.pubkey.len = 33; + v->initAccount.pubkey.len = PK_LEN_25519_PLUS_TAG; CHECK_ERROR(readBytes(&ctx, &v->initAccount.pubkey.ptr, v->initAccount.pubkey.len)) - // Skip leftover bytes - ctx.offset = ctx.bufferLen; - // VP code hash - v->initAccount.vp_type_hash.len = HASH_LEN; - CHECK_ERROR(readBytes(&extra_data_ctx, &v->initAccount.vp_type_hash.ptr, v->initAccount.vp_type_hash.len)) - // Get text from hash - CHECK_ERROR(readVPType(&v->initAccount.vp_type_hash, &v->initAccount.vp_type_text)) + v->initAccount.vp_type_sechash.len = HASH_LEN; + CHECK_ERROR(readBytes(&ctx, &v->initAccount.vp_type_sechash.ptr, v->initAccount.vp_type_sechash.len)) + + bool found_vp_code = false; + // Load the linked to data from the extra data sections + for (uint32_t i = 0; i < extraDataLen; i++) { + parser_context_t extra_data_ctx = { + .buffer = extra_data[i].bytes.ptr, + .bufferLen = extra_data[i].bytes.len, + .offset = 0, + .tx_obj = NULL}; + + // Read the hash inside the extra data section + bytes_t commitment = { .ptr = NULL, .len = HASH_LEN }; + CHECK_ERROR(readBytes(&extra_data_ctx, &commitment.ptr, commitment.len)) + uint8_t extraDataHash[HASH_LEN] = {0}; + if (crypto_hashExtraDataSection(&extra_data[i], extraDataHash, sizeof(extraDataHash)) != zxerr_ok) { + return parser_unexpected_error; + } + + if (!memcmp(extraDataHash, v->initAccount.vp_type_sechash.ptr, HASH_LEN)) { + // If this section contains the VP code hash + v->initAccount.vp_type_secidx = extra_data[i].idx; + v->initAccount.vp_type_hash = commitment; + CHECK_ERROR(readVPType(&v->initAccount.vp_type_hash, &v->initAccount.vp_type_text)) + found_vp_code = true; + } + if (extra_data_ctx.offset != extra_data_ctx.bufferLen) { + return parser_unexpected_characters; + } + } - if ((ctx.offset != ctx.bufferLen)|| (extra_data_ctx.offset != extra_data_ctx.bufferLen)) { + if (!found_vp_code) { + return parser_missing_field; + } else if (ctx.offset != ctx.bufferLen) { return parser_unexpected_characters; } + return parser_ok; } -static parser_error_t readInitProposalTxn(const bytes_t *data, parser_tx_t *v) { +static parser_error_t readInitProposalTxn(const bytes_t *data, const section_t *extra_data, const uint32_t extraDataLen, parser_tx_t *v) { + if (data == NULL || extra_data == NULL || v == NULL || extraDataLen >= MAX_EXTRA_DATA_SECS) { + return parser_unexpected_value; + } parser_context_t ctx = {.buffer = data->ptr, .bufferLen = data->len, .offset = 0, .tx_obj = NULL}; // Check if the proposal has an ID @@ -310,9 +312,9 @@ static parser_error_t readInitProposalTxn(const bytes_t *data, parser_tx_t *v) { CHECK_ERROR(readBytes(&ctx, &v->initProposal.proposal_id.ptr, v->initProposal.proposal_id.len)) } - // Read content hash - v->initProposal.content.len = SHA256_SIZE; - CHECK_ERROR(readBytes(&ctx, &v->initProposal.content.ptr, v->initProposal.content.len)) + // Read content section hash + v->initProposal.content_sechash.len = HASH_LEN; + CHECK_ERROR(readBytes(&ctx, &v->initProposal.content_sechash.ptr, v->initProposal.content_sechash.len)) // Author, should be of length ADDRESS_LEN_BYTES v->initProposal.author.len = ADDRESS_LEN_BYTES; @@ -320,16 +322,15 @@ static parser_error_t readInitProposalTxn(const bytes_t *data, parser_tx_t *v) { // Proposal type v->initProposal.has_proposal_code = 0; - uint8_t proposal_type; - CHECK_ERROR(readByte(&ctx, &proposal_type)) + CHECK_ERROR(readByte(&ctx, &v->initProposal.proposal_type)) // Proposal type 0 is Default(Option>), // where Vec is the proposal code (of 32 bytes) // Other proposal types have no data associated to the enum - if (proposal_type==0){ + if (v->initProposal.proposal_type == 0) { CHECK_ERROR(readByte(&ctx, &v->initProposal.has_proposal_code)) if (v->initProposal.has_proposal_code){ - v->initProposal.proposal_code.len = SHA256_SIZE; - CHECK_ERROR(readBytes(&ctx, &v->initProposal.proposal_code.ptr, v->initProposal.proposal_code.len)) + v->initProposal.proposal_code_sechash.len = HASH_LEN; + CHECK_ERROR(readBytes(&ctx, &v->initProposal.proposal_code_sechash.ptr, v->initProposal.proposal_code_sechash.len)) } } @@ -342,7 +343,46 @@ static parser_error_t readInitProposalTxn(const bytes_t *data, parser_tx_t *v) { // Grace epoch CHECK_ERROR(readUint64(&ctx, &v->initProposal.grace_epoch)) - if (ctx.offset != ctx.bufferLen) { + bool found_content = false, found_code = false; + // Load the linked to data from the extra data sections + for (uint32_t i = 0; i < extraDataLen; i++) { + parser_context_t extra_data_ctx = { + .buffer = extra_data[i].bytes.ptr, + .bufferLen = extra_data[i].bytes.len, + .offset = 0, + .tx_obj = NULL}; + + // Read the hash inside the extra data section + bytes_t commitment = { .ptr = NULL, .len = HASH_LEN }; + CHECK_ERROR(readBytes(&extra_data_ctx, &commitment.ptr, commitment.len)) + + uint8_t extraDataHash[HASH_LEN] = {0}; + if (crypto_hashExtraDataSection(&extra_data[i], extraDataHash, sizeof(extraDataHash)) != zxerr_ok) { + return parser_unexpected_error; + } + + if (!memcmp(extraDataHash, v->initProposal.content_sechash.ptr, HASH_LEN)) { + // If this section contains the init proposal content + v->initProposal.content_secidx = extra_data[i].idx; + v->initProposal.content_hash = commitment; + found_content = true; + } + if (v->initProposal.has_proposal_code && + !memcmp(extraDataHash, v->initProposal.proposal_code_sechash.ptr, HASH_LEN)) + { + // If this section contains the proposal code + v->initProposal.proposal_code_secidx = extra_data[i].idx; + v->initProposal.proposal_code_hash = commitment; + found_code = true; + } + if (extra_data_ctx.offset != extra_data_ctx.bufferLen) { + return parser_unexpected_characters; + } + } + + if (!found_content || (v->initProposal.has_proposal_code && !found_code)) { + return parser_missing_field; + } else if (ctx.offset != ctx.bufferLen) { return parser_unexpected_characters; } return parser_ok; @@ -357,7 +397,7 @@ parser_error_t readCouncils(parser_context_t *ctx, uint32_t numberOfCouncils, co CHECK_ERROR(readBytes(ctx, &tmpCouncil.council_address.ptr, ADDRESS_LEN_BYTES)) - CHECK_ERROR(readUint64(ctx, &tmpCouncil.amount)) + CHECK_ERROR(readUint256(ctx, &tmpCouncil.amount)) } if (council != NULL) { @@ -388,7 +428,7 @@ static parser_error_t readVoteProposalTxn(const bytes_t *data, parser_tx_t *v) { case Council: { CHECK_ERROR(readUint32(&ctx, &v->voteProposal.number_of_councils)) v->voteProposal.councils.ptr = ctx.buffer + ctx.offset; - v->voteProposal.councils.len = v->voteProposal.number_of_councils * (ADDRESS_LEN_BYTES + sizeof(uint64_t)); + v->voteProposal.councils.len = v->voteProposal.number_of_councils * (ADDRESS_LEN_BYTES + sizeof(uint256_t)); CHECK_ERROR(readCouncils(&ctx, v->voteProposal.number_of_councils, NULL)) break; } @@ -486,7 +526,7 @@ static parser_error_t readCommissionChangeTxn(bytes_t *buffer, parser_tx_t *v) { CHECK_ERROR(readBytes(&ctx, &v->commissionChange.validator.ptr, v->commissionChange.validator.len)) // Read new commission rate - CHECK_ERROR(readDecimal(&ctx, &v->commissionChange.new_rate)); + CHECK_ERROR(readUint256(&ctx, &v->commissionChange.new_rate)); if (ctx.offset != ctx.bufferLen) { @@ -496,27 +536,53 @@ static parser_error_t readCommissionChangeTxn(bytes_t *buffer, parser_tx_t *v) { } -static parser_error_t readUpdateVPTxn(const bytes_t *data,const bytes_t *extra_data, parser_tx_t *v) { +static parser_error_t readUpdateVPTxn(const bytes_t *data, const section_t *extra_data, const uint32_t extraDataLen, parser_tx_t *v) { + if (data == NULL || extra_data == NULL || v == NULL || extraDataLen >= MAX_EXTRA_DATA_SECS) { + return parser_unexpected_value; + } parser_context_t ctx = {.buffer = data->ptr, .bufferLen = data->len, .offset = 0, .tx_obj = NULL}; - parser_context_t extra_data_ctx = {.buffer = extra_data->ptr, - .bufferLen = extra_data->len, - .offset = 0, - .tx_obj = NULL}; - // Address v->updateVp.address.len = ADDRESS_LEN_BYTES; CHECK_ERROR(readBytes(&ctx, &v->updateVp.address.ptr, v->updateVp.address.len)) // VP code hash - v->updateVp.vp_type_hash.len = HASH_LEN; - CHECK_ERROR(readBytes(&extra_data_ctx, &v->updateVp.vp_type_hash.ptr, v->updateVp.vp_type_hash.len)) - // Get text from hash - CHECK_ERROR(readVPType(&v->updateVp.vp_type_hash, &v->updateVp.vp_type_text)) + v->updateVp.vp_type_sechash.len = HASH_LEN; + CHECK_ERROR(readBytes(&ctx, &v->updateVp.vp_type_sechash.ptr, v->updateVp.vp_type_sechash.len)) + + bool found_vp_code = false; + // Load the linked to data from the extra data sections + for (uint32_t i = 0; i < extraDataLen; i++) { + parser_context_t extra_data_ctx = { + .buffer = extra_data[i].bytes.ptr, + .bufferLen = extra_data[i].bytes.len, + .offset = 0, + .tx_obj = NULL}; + + // Read the hash inside the extra data section + bytes_t commitment = { .ptr = NULL, .len = HASH_LEN }; + CHECK_ERROR(readBytes(&extra_data_ctx, &commitment.ptr, commitment.len)) + + uint8_t extraDataHash[HASH_LEN] = {0}; + if (crypto_hashExtraDataSection(&extra_data[i], extraDataHash, sizeof(extraDataHash)) != zxerr_ok) { + return parser_unexpected_error; + } - ctx.offset += 32; // Skip tx_code_path (?) + if (!memcmp(extraDataHash, v->updateVp.vp_type_sechash.ptr, HASH_LEN)) { + // If this section contains the VP code hash + v->updateVp.vp_type_secidx = extra_data[i].idx; + v->updateVp.vp_type_hash = commitment; + CHECK_ERROR(readVPType(&v->updateVp.vp_type_hash, &v->updateVp.vp_type_text)) + found_vp_code = true; + } + if (extra_data_ctx.offset != extra_data_ctx.bufferLen) { + return parser_unexpected_characters; + } + } - if ((ctx.offset != ctx.bufferLen) || (extra_data_ctx.offset != extra_data_ctx.bufferLen)) { + if (!found_vp_code) { + return parser_missing_field; + } else if (ctx.offset != ctx.bufferLen) { return parser_unexpected_characters; } return parser_ok; @@ -548,7 +614,10 @@ static parser_error_t readTransferTxn(const bytes_t *data, parser_tx_t *v) { } // Amount - CHECK_ERROR(readUint64(&ctx, &v->transfer.amount)) + CHECK_ERROR(readUint256(&ctx, &v->transfer.amount)) + + // Amount denomination + CHECK_ERROR(readByte(&ctx, &v->transfer.amount_denom)) // Key, check if it is there CHECK_ERROR(readByte(&ctx, &v->transfer.has_key)) @@ -560,7 +629,7 @@ static parser_error_t readTransferTxn(const bytes_t *data, parser_tx_t *v) { // shielded hash, check if it is there CHECK_ERROR(readByte(&ctx, &v->transfer.has_shielded_hash)) if (v->transfer.has_shielded_hash){ - v->transfer.shielded_hash.len = SHA256_SIZE; + v->transfer.shielded_hash.len = HASH_LEN; // we are not displaying these bytes ctx.offset += v->transfer.shielded_hash.len; } @@ -581,8 +650,8 @@ static parser_error_t readBondUnbondTxn(const bytes_t *data, parser_tx_t *v) { CHECK_ERROR(readBytes(&ctx, &v->bond.validator.ptr, v->bond.validator.len)) // Amount - MEMCPY(&v->bond.amount, ctx.buffer + ctx.offset, sizeof(uint64_t)); - ctx.offset += sizeof(uint64_t); + MEMCPY(&v->bond.amount, ctx.buffer + ctx.offset, sizeof(uint256_t)); + ctx.offset += sizeof(uint256_t); ctx.offset++; // Skip last byte --> Check this // Source @@ -603,6 +672,7 @@ parser_error_t readHeader(parser_context_t *ctx, parser_tx_t *v) { if (ctx == NULL || v == NULL) { return parser_unexpected_value; } + v->transaction.header.bytes.ptr = ctx->buffer + ctx->offset; const uint16_t tmpOffset = ctx->offset; // Read length of chain_id @@ -625,28 +695,29 @@ parser_error_t readHeader(parser_context_t *ctx, parser_tx_t *v) { CHECK_ERROR(readBytes(ctx, &v->transaction.timestamp.ptr, v->transaction.timestamp.len)) // Code hash - v->transaction.header.codeHash.len = SHA256_SIZE; + v->transaction.header.codeHash.len = HASH_LEN; CHECK_ERROR(readBytes(ctx, &v->transaction.header.codeHash.ptr, v->transaction.header.codeHash.len)) // Data hash - v->transaction.header.dataHash.len = SHA256_SIZE; + v->transaction.header.dataHash.len = HASH_LEN; CHECK_ERROR(readBytes(ctx, &v->transaction.header.dataHash.ptr, v->transaction.header.dataHash.len)) - v->transaction.header.bytes.ptr = ctx->buffer + ctx->offset; - CHECK_ERROR(checkTag(ctx, 0x01)) // Fee.amount - CHECK_ERROR(readUint64(ctx, &v->transaction.header.fees.amount)) + CHECK_ERROR(readUint256(ctx, &v->transaction.header.fees.amount)) + // Fee.address - v->transaction.header.fees.address.len = 45; + v->transaction.header.fees.address.len = ADDRESS_LEN_BYTES; CHECK_ERROR(readBytes(ctx, &v->transaction.header.fees.address.ptr, v->transaction.header.fees.address.len)) + // Get symbol from token + CHECK_ERROR(readToken(&v->transaction.header.fees.address, &v->transaction.header.fees.symbol)) // Pubkey - v->transaction.header.pubkey.len = 33; // Check first byte (0x00 | 0x01) + v->transaction.header.pubkey.len = PK_LEN_25519_PLUS_TAG; // Check tag (first byte: 0x00 | 0x01) CHECK_ERROR(readBytes(ctx, &v->transaction.header.pubkey.ptr, v->transaction.header.pubkey.len)) // Epoch CHECK_ERROR(readUint64(ctx, &v->transaction.header.epoch)) // GasLimit - CHECK_ERROR(readUint64(ctx, &v->transaction.header.gasLimit)) + CHECK_ERROR(readUint256(ctx, &v->transaction.header.gasLimit)) // Check if a PoW solution is present (should only exist in mainnet) uint8_t num_pow_solution = 0; @@ -706,6 +777,15 @@ static parser_error_t readDataSection(parser_context_t *ctx, section_t *data) { CHECK_ERROR(readUint32(ctx, &data->bytes.len)) CHECK_ERROR(readBytes(ctx, &data->bytes.ptr, data->bytes.len)) + // Must make sure that header dataHash refers to this section's hash + uint8_t dataHash[HASH_LEN] = {0}; + if (crypto_hashDataSection(data, dataHash, sizeof(dataHash)) != zxerr_ok) { + return parser_unexpected_error; + } + header_t *header = &ctx->tx_obj->transaction.header; + if (memcmp(dataHash, header->dataHash.ptr, header->dataHash.len) != 0) { + return parser_unexpected_value; + } return parser_ok; } @@ -725,45 +805,18 @@ static parser_error_t readCodeSection(parser_context_t *ctx, section_t *code) { code->bytes.len = HASH_LEN; CHECK_ERROR(readBytes(ctx, &code->bytes.ptr, code->bytes.len)) - return parser_ok; -} - -static parser_error_t readSignature(parser_context_t *ctx, signature_section_t *signature) { - (void) ctx; - (void) signature; -#if 0 - if (ctx == NULL || signature == NULL) { + // Must make sure that header codeHash refers to this section's hash + uint8_t codeHash[HASH_LEN] = {0}; + if (crypto_hashCodeSection(code, codeHash, sizeof(codeHash)) != zxerr_ok) { return parser_unexpected_error; } - // CHECK_ERROR(checkTag(ctx, 0x03)) - // CHECK_ERROR(readSalt(ctx)) - // Read hash 32 bytes - // Read tag 0x00 -> ED25519 - // Read R 32 bytes - // Read S 32 bytes - // Read tag 0x00 -> ED25519 - // Read VerificationKey 32 bytes - - const uint8_t SIGNATURE_TAG = 0x03; - const uint8_t ED25519_TAG = 0x00; - - CHECK_ERROR(checkTag(ctx, SIGNATURE_TAG)) - CHECK_ERROR(readSalt(ctx)) - signature->hash.len = HASH_LEN; - CHECK_ERROR(readBytes(ctx, &signature->hash.ptr, signature->hash.len)) - - CHECK_ERROR(checkTag(ctx, ED25519_TAG)) - signature->r.len = SIG_R_LEN; - CHECK_ERROR(readBytes(ctx, &signature->r.ptr, signature->r.len)) - signature->s.len = SIG_S_LEN; - CHECK_ERROR(readBytes(ctx, &signature->s.ptr, signature->s.len)) - - CHECK_ERROR(checkTag(ctx, ED25519_TAG)) - signature->pubKey.len = PK_LEN_25519; - CHECK_ERROR(readBytes(ctx, &signature->pubKey.ptr, signature->pubKey.len)) -#endif + header_t *header = &ctx->tx_obj->transaction.header; + if (memcmp(codeHash, header->codeHash.ptr, header->codeHash.len) != 0) { + return parser_unexpected_value; + } return parser_ok; } + #if(0) static parser_error_t readCiphertext(parser_context_t *ctx, section_t *ciphertext) { (void) ctx; @@ -791,26 +844,34 @@ parser_error_t readSections(parser_context_t *ctx, parser_tx_t *v) { CHECK_ERROR(readUint32(ctx, &v->transaction.sections.sectionLen)) if (v->transaction.sections.sectionLen > 7) { - return parser_unexpected_value; + return parser_invalid_output_buffer; } + v->transaction.sections.extraDataLen = 0; + for (uint32_t i = 0; i < v->transaction.sections.sectionLen; i++) { const uint8_t discriminant = *(ctx->buffer + ctx->offset); switch (discriminant) { - case DISCRIMINANT_DATA: + case DISCRIMINANT_DATA: { CHECK_ERROR(readDataSection(ctx, &v->transaction.sections.data)) + v->transaction.sections.data.idx = i+1; break; - - case DISCRIMINANT_EXTRA_DATA: - CHECK_ERROR(readExtraDataSection(ctx, &v->transaction.sections.extraData)) + } + case DISCRIMINANT_EXTRA_DATA: { + if (v->transaction.sections.extraDataLen >= MAX_EXTRA_DATA_SECS) { + return parser_unexpected_field; + } + section_t *extraData = &v->transaction.sections.extraData[v->transaction.sections.extraDataLen++]; + CHECK_ERROR(readExtraDataSection(ctx, extraData)) + extraData->idx = i+1; break; - - case DISCRIMINANT_CODE: + } + case DISCRIMINANT_CODE: { CHECK_ERROR(readCodeSection(ctx, &v->transaction.sections.code)) + v->transaction.sections.code.idx = i+1; break; - + } case DISCRIMINANT_SIGNATURE: - CHECK_ERROR(readSignature(ctx, &v->transaction.sections.signatures[0])) break; #if(0) case DISCRIMINANT_CIPHERTEXT: @@ -850,13 +911,11 @@ parser_error_t validateTransactionParams(parser_tx_t *txObj) { CHECK_ERROR(readTransferTxn(&txObj->transaction.sections.data.bytes, txObj)) break; case InitAccount: - CHECK_ERROR(readInitAccountTxn(&txObj->transaction.sections.data.bytes,&txObj->transaction.sections.extraData.bytes, txObj)) - break; - + CHECK_ERROR(readInitAccountTxn(&txObj->transaction.sections.data.bytes,txObj->transaction.sections.extraData,txObj->transaction.sections.extraDataLen,txObj)) + break; case InitProposal: - CHECK_ERROR(readInitProposalTxn(&txObj->transaction.sections.data.bytes, txObj)) + CHECK_ERROR(readInitProposalTxn(&txObj->transaction.sections.data.bytes, txObj->transaction.sections.extraData, txObj->transaction.sections.extraDataLen, txObj)) break; - case VoteProposal: CHECK_ERROR(readVoteProposalTxn(&txObj->transaction.sections.data.bytes, txObj)) break; @@ -864,16 +923,16 @@ parser_error_t validateTransactionParams(parser_tx_t *txObj) { CHECK_ERROR(readRevealPubkeyTxn(&txObj->transaction.sections.data.bytes, txObj)) break; case Withdraw: - CHECK_ERROR(readWithdrawTxn(&txObj->transaction.sections.data.bytes, txObj)) - break; + CHECK_ERROR(readWithdrawTxn(&txObj->transaction.sections.data.bytes, txObj)) + break; case CommissionChange: CHECK_ERROR(readCommissionChangeTxn(&txObj->transaction.sections.data.bytes, txObj)) break; case InitValidator: - CHECK_ERROR(readInitValidatorTxn(&txObj->transaction.sections.data.bytes, &txObj->transaction.sections.extraData.bytes,txObj)) - break; + CHECK_ERROR(readInitValidatorTxn(&txObj->transaction.sections.data.bytes, txObj->transaction.sections.extraData, txObj->transaction.sections.extraDataLen, txObj)) + break; case UpdateVP: - CHECK_ERROR(readUpdateVPTxn(&txObj->transaction.sections.data.bytes, &txObj->transaction.sections.extraData.bytes, txObj)) + CHECK_ERROR(readUpdateVPTxn(&txObj->transaction.sections.data.bytes, txObj->transaction.sections.extraData, txObj->transaction.sections.extraDataLen, txObj)) break; default: return parser_unexpected_method; diff --git a/app/src/parser_print_common.c b/app/src/parser_print_common.c index 02b439f9..59a897bb 100644 --- a/app/src/parser_print_common.c +++ b/app/src/parser_print_common.c @@ -34,6 +34,55 @@ return parser_decimal_too_big; \ } +__Z_INLINE bool isAllZeroes(const void *buf, size_t n) { + uint8_t *p = (uint8_t *) buf; + for (size_t i = 0; i < n; ++i) { + if (p[i]) { + return false; + } + } + return true; +} + +parser_error_t uint256_to_str(char *output, uint16_t outputLen, const uint256_t *value) { + if (output == NULL || value == NULL) { + return parser_unexpected_error; + } + MEMZERO(output, outputLen); + + uint16_t n[16] = {0}; + // Copy and right-align the number + memcpy((uint8_t *) n, value, sizeof(*value)); + + // Special case when value is 0 + if (isAllZeroes(n, sizeof(n))) { + if (outputLen < 2) { + // Not enough space to hold "0" and \0. + return parser_decimal_too_big; + } + strncpy(output, "0", outputLen); + return parser_ok; + } + + int pos = outputLen; + while (!isAllZeroes(n, sizeof(n))) { + if (pos == 0) { + return parser_decimal_too_big; + } + pos--; + unsigned int carry = 0; + for (int i = 15; i >= 0; i--) { + int rem = ((carry << 16) | n[i]) % 10; + n[i] = ((carry << 16) | n[i]) / 10; + carry = rem; + } + output[pos] = '0' + carry; + } + memmove(output, output + pos, outputLen - pos); + output[outputLen - pos] = 0; + return parser_ok; +} + parser_error_t printAddress( bytes_t pubkeyHash, char *outVal, uint16_t outValLen, uint8_t pageIdx, uint8_t *pageCount) { @@ -49,7 +98,7 @@ parser_error_t printCouncilVote(const council_t *council, char *outVal, uint16_t outValLen, uint8_t pageIdx, uint8_t *pageCount) { uint8_t offset = 0; - char strVote[200] = {0}; + char strVote[230] = {0}; // Print prefix snprintf(strVote, sizeof(strVote) - offset, PREFIX); @@ -65,9 +114,9 @@ parser_error_t printCouncilVote(const council_t *council, offset = strlen(strVote); // Print spending cap - char spendingCap[50] = {0}; - if (uint64_to_str(spendingCap, sizeof(spendingCap), council->amount) != NULL || - intstr_to_fpstr_inplace(spendingCap, sizeof(spendingCap), COIN_AMOUNT_DECIMAL_PLACES) == 0) { + char spendingCap[80] = {0}; + CHECK_ERROR(uint256_to_str(spendingCap, sizeof(spendingCap), &council->amount)) + if (intstr_to_fpstr_inplace(spendingCap, sizeof(spendingCap), COIN_AMOUNT_DECIMAL_PLACES) == 0) { return parser_unexpected_error; } number_inplace_trimming(spendingCap, 1); @@ -76,14 +125,6 @@ parser_error_t printCouncilVote(const council_t *council, } snprintf(strVote + offset, sizeof(strVote) - offset, PREFIX_SPENDING "%s", spendingCap); -#if 0 - if (number_printed < number_of_councils){ - const char* dots = NULL; - dots = PIC("..."); - snprintf((char*) strVote + offset, strlen(dots) + 1, "%s", dots); - } -#endif - pageString(outVal, outValLen, (const char*) strVote, pageIdx, pageCount); return parser_ok; } @@ -122,13 +163,13 @@ static parser_error_t printTimestamp(const bytes_t timestamp, return parser_ok; } -parser_error_t printAmount( uint64_t amount, const char* symbol, +parser_error_t printAmount( const uint256_t *amount, uint8_t amountDenom, const char* symbol, char *outVal, uint16_t outValLen, uint8_t pageIdx, uint8_t *pageCount) { - char strAmount[50] = {0}; - if (uint64_to_str(strAmount, sizeof(strAmount), amount) != NULL || - intstr_to_fpstr_inplace(strAmount, sizeof(strAmount), COIN_AMOUNT_DECIMAL_PLACES) == 0) { + char strAmount[90] = {0}; + CHECK_ERROR(uint256_to_str(strAmount, sizeof(strAmount), amount)) + if (intstr_to_fpstr_inplace(strAmount, sizeof(strAmount), amountDenom) == 0) { return parser_unexpected_error; } @@ -211,22 +252,6 @@ parser_error_t decimal_to_string(int64_t num, uint32_t scale, char* strDec, size return parser_ok; } - -// Print a decimal, which is characterised by an uint32_t scale and int64_t num -// for example scale = 2 and num = 1 prints 0.01 -parser_error_t printDecimal( const serialized_decimal decimal, - char *outVal, uint16_t outValLen, - uint8_t pageIdx, uint8_t *pageCount) { - char strDec[100] = {0}; - CHECK_ERROR(decimal_to_string(decimal.num, decimal.scale, (char*) strDec, 100)) - number_inplace_trimming(strDec, 1); - pageString(outVal, outValLen, strDec, pageIdx, pageCount); - - return parser_ok; -} - - - parser_error_t printExpert( const parser_context_t *ctx, uint8_t displayIdx, char *outKey, uint16_t outKeyLen, @@ -253,23 +278,20 @@ parser_error_t printExpert( const parser_context_t *ctx, return parser_unexpected_error; } break; - case 3: + case 3: { snprintf(outKey, outKeyLen, "Gas limit"); - if (uint64_to_str(outVal, outValLen, ctx->tx_obj->transaction.header.gasLimit) != NULL) { - return parser_unexpected_error; - } + char strAmount[80] = {0}; + CHECK_ERROR(uint256_to_str(strAmount, sizeof(strAmount), &ctx->tx_obj->transaction.header.gasLimit)) + pageString(outVal, outValLen, (char *) &strAmount, pageIdx, pageCount); break; - case 4: + } + case 4: { snprintf(outKey, outKeyLen, "Fees"); - if (uint64_to_str(outVal, outValLen, ctx->tx_obj->transaction.header.fees.amount) != NULL || - intstr_to_fpstr_inplace(outVal, outValLen, COIN_AMOUNT_DECIMAL_PLACES) == 0) { - return parser_unexpected_error; - } - z_str3join(outVal, outValLen, COIN_TICKER, ""); - number_inplace_trimming(outVal, 1); + CHECK_ERROR(printAmount(&ctx->tx_obj->transaction.header.fees.amount, COIN_AMOUNT_DECIMAL_PLACES, + ctx->tx_obj->transaction.header.fees.symbol, + outVal, outValLen, pageIdx, pageCount)) break; - - + } default: return parser_display_idx_out_of_range; } diff --git a/app/src/parser_print_common.h b/app/src/parser_print_common.h index 8fd7cfd5..1e0e3e70 100644 --- a/app/src/parser_print_common.h +++ b/app/src/parser_print_common.h @@ -49,18 +49,16 @@ parser_error_t printCouncilVote(const council_t *councils, char *outVal, uint16_t outValLen, uint8_t pageIdx, uint8_t *pageCount); -parser_error_t printAmount( uint64_t amount, const char* symbol, +parser_error_t printAmount( const uint256_t *amount, uint8_t amountDenom, const char* symbol, char *outVal, uint16_t outValLen, uint8_t pageIdx, uint8_t *pageCount); -parser_error_t printDecimal( const serialized_decimal decimal, - char *outVal, uint16_t outValLen, - uint8_t pageIdx, uint8_t *pageCount); - parser_error_t printVPTypeHash(bytes_t *codeHash, char *outVal, uint16_t outValLen, uint8_t pageIdx, uint8_t *pageCount); +parser_error_t uint256_to_str(char *output, uint16_t outputLen, const uint256_t *value); + #ifdef __cplusplus } #endif diff --git a/app/src/parser_print_txn.c b/app/src/parser_print_txn.c index 4b2095ea..0c6c3015 100644 --- a/app/src/parser_print_txn.c +++ b/app/src/parser_print_txn.c @@ -54,16 +54,12 @@ static parser_error_t printBondTxn( const parser_context_t *ctx, snprintf(outKey, outKeyLen, "Validator"); CHECK_ERROR(printAddress(ctx->tx_obj->bond.validator, outVal, outValLen, pageIdx, pageCount)) break; - case 3: + case 3: { snprintf(outKey, outKeyLen, "Amount"); - if (uint64_to_str(outVal, outValLen, ctx->tx_obj->bond.amount) != NULL || - intstr_to_fpstr_inplace(outVal, outValLen, COIN_AMOUNT_DECIMAL_PLACES) == 0) { - return parser_unexpected_error; - } - z_str3join(outVal, outValLen, COIN_TICKER, ""); - number_inplace_trimming(outVal, 1); + CHECK_ERROR(printAmount(&ctx->tx_obj->bond.amount, COIN_AMOUNT_DECIMAL_PLACES, COIN_TICKER, + outVal, outValLen, pageIdx, pageCount)) break; - default: + } default: if (!app_mode_expert()) { return parser_display_idx_out_of_range; } @@ -89,9 +85,6 @@ static parser_error_t printTransferTxn( const parser_context_t *ctx, } break; case 1: - if (ctx->tx_obj->bond.has_source == 0) { - return parser_unexpected_value; - } snprintf(outKey, outKeyLen, "Sender"); CHECK_ERROR(printAddress(ctx->tx_obj->transfer.source_address, outVal, outValLen, pageIdx, pageCount)) break; @@ -101,7 +94,8 @@ static parser_error_t printTransferTxn( const parser_context_t *ctx, break; case 3: snprintf(outKey, outKeyLen, "Amount"); - CHECK_ERROR(printAmount(ctx->tx_obj->transfer.amount, ctx->tx_obj->transfer.symbol, + CHECK_ERROR(printAmount(&ctx->tx_obj->transfer.amount, ctx->tx_obj->transfer.amount_denom, + ctx->tx_obj->transfer.symbol, outVal, outValLen, pageIdx, pageCount)) break; default: @@ -123,12 +117,12 @@ static parser_error_t printCustomTxn( const parser_context_t *ctx, switch (displayIdx) { case 0: - if (!app_mode_expert()) { - return parser_display_idx_out_of_range; - } snprintf(outKey, outKeyLen, "Type"); - CHECK_ERROR(printCodeHash(&ctx->tx_obj->transaction.sections.code.bytes, outKey, outKeyLen, + snprintf(outVal, outValLen, "Custom"); + if (app_mode_expert()) { + CHECK_ERROR(printCodeHash(&ctx->tx_obj->transaction.sections.code.bytes, outKey, outKeyLen, outVal, outValLen, pageIdx, pageCount)) + } break; default: if (!app_mode_expert()) { @@ -165,9 +159,9 @@ static parser_error_t printInitAccountTxn( const parser_context_t *ctx, break; case 2: snprintf(outKey, outKeyLen, "VP type"); - pageString(outVal, outValLen,ctx->tx_obj->updateVp.vp_type_text, pageIdx, pageCount); + pageString(outVal, outValLen,ctx->tx_obj->initAccount.vp_type_text, pageIdx, pageCount); if (app_mode_expert()) { - CHECK_ERROR(printVPTypeHash(&ctx->tx_obj->updateVp.vp_type_hash, + CHECK_ERROR(printVPTypeHash(&ctx->tx_obj->initAccount.vp_type_hash, outVal, outValLen, pageIdx, pageCount)) } break; @@ -189,9 +183,12 @@ static parser_error_t printInitProposalTxn( const parser_context_t *ctx, uint8_t pageIdx, uint8_t *pageCount) { // Bump itemIdx if ID is not present - if (ctx->tx_obj->initProposal.has_id == 0 && displayIdx >= 1) { + if (ctx->tx_obj->initProposal.has_id == 0 && displayIdx >= 2) { displayIdx++; } + + // Less than 20 characters are epochs are uint64 + char strEpoch[20] = {0}; switch (displayIdx) { case 0: snprintf(outKey, outKeyLen, "Type"); @@ -202,6 +199,21 @@ static parser_error_t printInitProposalTxn( const parser_context_t *ctx, } break; case 1: + snprintf(outKey, outKeyLen, "Proposal type"); + if (ctx->tx_obj->initProposal.proposal_type == 0 && ctx->tx_obj->initProposal.has_proposal_code == 0) { + snprintf(outVal, outValLen, "Default"); + } else if (ctx->tx_obj->initProposal.proposal_type == 0 && ctx->tx_obj->initProposal.has_proposal_code == 1) { + const bytes_t *codeHash = &ctx->tx_obj->initProposal.proposal_code_hash; + pageStringHex(outVal, outValLen, (const char*)codeHash->ptr, codeHash->len, pageIdx, pageCount); + } else if (ctx->tx_obj->initProposal.proposal_type == 1) { + snprintf(outVal, outValLen, "PGF Council"); + } else if (ctx->tx_obj->initProposal.proposal_type == 2) { + snprintf(outVal, outValLen, "ETH Bridge"); + } else { + return parser_unexpected_error; + } + break; + case 2: if (ctx->tx_obj->initProposal.has_id == 0) { return parser_unexpected_value; } @@ -211,41 +223,35 @@ static parser_error_t printInitProposalTxn( const parser_context_t *ctx, memcpy(id, ctx->tx_obj->initProposal.proposal_id.ptr, ctx->tx_obj->initProposal.proposal_id.len); pageString(outVal, outValLen, id, pageIdx, pageCount); break; - case 2: + case 3: snprintf(outKey, outKeyLen, "Author"); CHECK_ERROR(printAddress(ctx->tx_obj->initProposal.author, outVal, outValLen, pageIdx, pageCount)) break; - case 3: + case 4: snprintf(outKey, outKeyLen, "Voting start epoch"); - // Less than 20 characters are epochs are uint64 - char strVotingStartEpoch[20] = {0}; - if (uint64_to_str(strVotingStartEpoch, sizeof(strVotingStartEpoch), ctx->tx_obj->initProposal.voting_start_epoch) != NULL) { + if (uint64_to_str(strEpoch, sizeof(strEpoch), ctx->tx_obj->initProposal.voting_start_epoch) != NULL) { return parser_unexpected_error; } - pageString(outVal, outValLen, strVotingStartEpoch, pageIdx, pageCount); + pageString(outVal, outValLen, strEpoch, pageIdx, pageCount); break; - case 4: + case 5: snprintf(outKey, outKeyLen, "Voting end epoch"); - // Less than 20 characters are epochs are uint64 - char strVotingEndEpoch[20] = {0}; - if (uint64_to_str(strVotingEndEpoch, sizeof(strVotingEndEpoch), ctx->tx_obj->initProposal.voting_end_epoch) != NULL) { + if (uint64_to_str(strEpoch, sizeof(strEpoch), ctx->tx_obj->initProposal.voting_end_epoch) != NULL) { return parser_unexpected_error; } - pageString(outVal, outValLen, strVotingEndEpoch, pageIdx, pageCount); + pageString(outVal, outValLen, strEpoch, pageIdx, pageCount); break; - case 5: + case 6: snprintf(outKey, outKeyLen, "Grace epoch"); - // Less than 20 characters are epochs are uint64 - char strGraceEpoch[20] = {0}; - if (uint64_to_str(strGraceEpoch, sizeof(strGraceEpoch), ctx->tx_obj->initProposal.grace_epoch) != NULL) { + if (uint64_to_str(strEpoch, sizeof(strEpoch), ctx->tx_obj->initProposal.grace_epoch) != NULL) { return parser_unexpected_error; } - pageString(outVal, outValLen, strGraceEpoch, pageIdx, pageCount); + pageString(outVal, outValLen, strEpoch, pageIdx, pageCount); break; - case 6: + case 7: snprintf(outKey, outKeyLen, "Content"); char strContent[65] = {0}; - const bytes_t *content = &ctx->tx_obj->initProposal.content; + const bytes_t *content = &ctx->tx_obj->initProposal.content_hash; array_to_hexstr((char*) strContent, sizeof(strContent), content->ptr, content->len); pageString(outVal, outValLen, (const char*) &strContent, pageIdx, pageCount); break; @@ -253,7 +259,7 @@ static parser_error_t printInitProposalTxn( const parser_context_t *ctx, if (!app_mode_expert()) { return parser_display_idx_out_of_range; } - displayIdx -= 7; + displayIdx -= 8; return printExpert(ctx, displayIdx, outKey, outKeyLen, outVal, outValLen, pageIdx, pageCount); } @@ -468,11 +474,11 @@ static parser_error_t printInitValidatorTxn( const parser_context_t *ctx, break; case 5: snprintf(outKey, outKeyLen, "Commission rate"); - CHECK_ERROR(printDecimal(ctx->tx_obj->initValidator.commission_rate, outVal, outValLen, pageIdx, pageCount)) + CHECK_ERROR(printAmount(&ctx->tx_obj->initValidator.commission_rate, POS_DECIMAL_PRECISION, "", outVal, outValLen, pageIdx, pageCount)) break; case 6: snprintf(outKey, outKeyLen, "Maximum commission rate change"); - CHECK_ERROR(printDecimal(ctx->tx_obj->initValidator.max_commission_rate_change, outVal, outValLen, pageIdx, pageCount)) + CHECK_ERROR(printAmount(&ctx->tx_obj->initValidator.max_commission_rate_change, POS_DECIMAL_PRECISION, "", outVal, outValLen, pageIdx, pageCount)) break; case 7: snprintf(outKey, outKeyLen, "Validator VP type"); @@ -553,7 +559,7 @@ static parser_error_t printCommissionChangeTxn( const parser_context_t *ctx, break; case 1: snprintf(outKey, outKeyLen, "New rate"); - CHECK_ERROR(printDecimal(ctx->tx_obj->commissionChange.new_rate, outVal, outValLen, pageIdx, pageCount)) + CHECK_ERROR(printAmount(&ctx->tx_obj->commissionChange.new_rate, POS_DECIMAL_PRECISION, "", outVal, outValLen, pageIdx, pageCount)) break; case 2: snprintf(outKey, outKeyLen, "Validator"); diff --git a/app/src/parser_txdef.h b/app/src/parser_txdef.h index 92c322c8..bfdf2f2d 100644 --- a/app/src/parser_txdef.h +++ b/app/src/parser_txdef.h @@ -21,24 +21,38 @@ extern "C" { #include #include +#include #include "parser_types.h" #include "coin.h" +#define MAX_EXTRA_DATA_SECS 3 + typedef struct { uint8_t address[ADDRESS_LEN_TESTNET]; const char *symbol; } tokens_t; typedef struct { - uint8_t hash[SHA256_SIZE]; + uint8_t hash[HASH_LEN]; const char *text; } vp_types_t; + +typedef struct { + uint8_t hash[HASH_LEN]; + transaction_type_e type; +} txn_types_t; + +typedef struct { + uint32_t hashesLen; + mut_bytes_t hashes; +} concatenated_hashes_t; // ----------------------------------------------------------------- typedef struct { - bytes_t hash; - bytes_t r; - bytes_t s; + bytes_t salt; + concatenated_hashes_t hashes; bytes_t pubKey; + bool has_signature; + bytes_t signature; } signature_section_t; #if(0) typedef struct { @@ -108,7 +122,7 @@ typedef struct { fees_t fees; bytes_t pubkey; uint64_t epoch; - uint64_t gasLimit; + uint256_t gasLimit; bytes_t dataHash; bytes_t codeHash; } header_t; @@ -117,14 +131,15 @@ typedef struct { uint8_t discriminant; bytes_t salt; bytes_t bytes; + uint8_t idx; } section_t; typedef struct { uint32_t sectionLen; - section_t data; - section_t extraData; + uint32_t extraDataLen; section_t code; - signature_section_t signatures[3]; + section_t data; + section_t extraData[MAX_EXTRA_DATA_SECS]; #if(0) section_t ciphertext; // todo: if we need to parse this in future, it will not be a section_t masp_tx_section_t maspTx; diff --git a/app/src/parser_types.h b/app/src/parser_types.h index 1e7c46c0..4ee5560c 100644 --- a/app/src/parser_types.h +++ b/app/src/parser_types.h @@ -29,9 +29,6 @@ extern "C" { #define TAG_N 0x10 #define TAG_INNER_TX_HASH 0x22 -#define SHA256_SIZE 32 -#define MAX_COUNCILS 5 - typedef enum { Bond = 0, Unbond, @@ -45,7 +42,6 @@ typedef enum { Custom, Withdraw, CommissionChange, - Unknown, } transaction_type_e; typedef enum { @@ -78,18 +74,27 @@ typedef struct { typedef struct { uint8_t has_id; bytes_t proposal_id; - bytes_t content; + bytes_t content_hash; + bytes_t content_sechash; bytes_t author; uint64_t voting_start_epoch; uint64_t voting_end_epoch; uint64_t grace_epoch; uint8_t has_proposal_code; - bytes_t proposal_code; + bytes_t proposal_code_sechash; + bytes_t proposal_code_hash; + uint8_t proposal_type; + uint8_t content_secidx; + uint8_t proposal_code_secidx; } tx_init_proposal_t; +typedef struct { + uint64_t b[4]; +} uint256_t; + typedef struct { bytes_t council_address; - uint64_t amount; + uint256_t amount; } council_t; typedef struct { @@ -108,13 +113,15 @@ typedef struct { typedef struct { bytes_t pubkey; + bytes_t vp_type_sechash; bytes_t vp_type_hash; + uint8_t vp_type_secidx; const char* vp_type_text; } tx_init_account_t; typedef struct { bytes_t validator; - uint64_t amount; + uint256_t amount; uint8_t has_source; bytes_t source; } tx_bond_t; @@ -133,7 +140,7 @@ typedef struct { typedef struct { bytes_t validator; - serialized_decimal new_rate; + uint256_t new_rate; } tx_commission_change_t; typedef struct { @@ -141,15 +148,19 @@ typedef struct { bytes_t consensus_key; bytes_t protocol_key; bytes_t dkg_key; - serialized_decimal commission_rate; - serialized_decimal max_commission_rate_change; + uint256_t commission_rate; + uint256_t max_commission_rate_change; + uint8_t vp_type_secidx; + bytes_t vp_type_sechash; bytes_t vp_type_hash; const char* vp_type_text; } tx_init_validator_t; typedef struct { bytes_t address; + bytes_t vp_type_sechash; bytes_t vp_type_hash; + uint8_t vp_type_secidx; const char* vp_type_text; } tx_update_vp_t; @@ -160,7 +171,8 @@ typedef struct { bytes_t token; uint8_t has_sub_prefix; bytes_t sub_prefix; - uint64_t amount; + uint256_t amount; + uint8_t amount_denom; const char* symbol; uint8_t has_key; bytes_t key; @@ -170,10 +182,10 @@ typedef struct { typedef struct { bytes_t address; - uint64_t amount; + uint256_t amount; + const char *symbol; } fees_t; - #ifdef __cplusplus } #endif diff --git a/cpp_test.txt b/cpp_test.txt deleted file mode 100644 index 4121db72..00000000 --- a/cpp_test.txt +++ /dev/null @@ -1,2405 +0,0 @@ -USERID : 501 -GROUPID : 20 -TESTS_ZEMU_DIR : /Users/ftheirs/Repositories/ledger-namada/tests_zemu -EXAMPLE_VUE_DIR : /Users/ftheirs/Repositories/ledger-namada/example_vue -TESTS_JS_DIR : /Users/ftheirs/Repositories/ledger-namada/js -TESTS_JS_PACKAGE : "@zondax/ledger-namada" -mkdir -p build && cd build && cmake -DCMAKE_BUILD_TYPE=Debug .. && make --- Conan: checking conan executable in path --- Conan: Found program /opt/homebrew/bin/conan --- Conan: Version found Conan version 1.60.1 - --- Conan: Automatic detection of conan settings from cmake --- Conan: Settings= -s;build_type=Debug;-s;compiler=apple-clang;-s;compiler.version=14.0;-s;compiler.libcxx=libc++ --- Conan executing: conan install /Users/ftheirs/Repositories/ledger-namada/conanfile.txt -s build_type=Debug -s compiler=apple-clang -s compiler.version=14.0 -s compiler.libcxx=libc++ -g=cmake --build=missing --- Configuration: -[settings] -arch=armv8 -arch_build=armv8 -build_type=Debug -compiler=apple-clang -compiler.libcxx=libc++ -compiler.version=14.0 -os=Macos -os_build=Macos -[options] -[build_requires] -[env] - -conanfile.txt: Installing package -Requirements - fmt/7.0.2 from 'conancenter' - Cache - jsoncpp/1.9.3 from 'conancenter' - Cache -Packages - fmt/7.0.2:8e7434fcc661c31c4aaeb10ac7df17b23eb3b4b7 - Cache - jsoncpp/1.9.3:dcdda45c74e4819365fdc09d8295453331965264 - Cache - -Installing (downloading, building) binaries... -fmt/7.0.2: Already installed! -jsoncpp/1.9.3: Already installed! -conanfile.txt: Generator txt created conanbuildinfo.txt -conanfile.txt: Generator cmake created conanbuildinfo.cmake -conanfile.txt: Aggregating env generators -conanfile.txt: Generated conaninfo.txt -conanfile.txt: Generated graphinfo - --- Conan: Loading conanbuildinfo.cmake --- Conan: Adjusting output directories --- Conan: Using cmake targets configuration --- Library jsoncpp found /Users/ftheirs/.conan/data/jsoncpp/1.9.3/_/_/package/dcdda45c74e4819365fdc09d8295453331965264/lib/libjsoncpp.a --- Library fmtd found /Users/ftheirs/.conan/data/fmt/7.0.2/_/_/package/8e7434fcc661c31c4aaeb10ac7df17b23eb3b4b7/lib/libfmtd.a --- Conan: Adjusting default RPATHs Conan policies --- Conan: Adjusting language standard --- Current conanbuildinfo.cmake directory: /Users/ftheirs/Repositories/ledger-namada/build --- Configuring done (0.0s) --- Generating done (0.0s) --- Build files have been written to: /Users/ftheirs/Repositories/ledger-namada/build/googletest-download -[ 11%] Performing update step for 'googletest' -[ 22%] No patch step for 'googletest' -[ 33%] No configure step for 'googletest' -[ 44%] No build step for 'googletest' -[ 55%] No install step for 'googletest' -[ 66%] No test step for 'googletest' -[ 77%] Completed 'googletest' -[100%] Built target googletest --- LEDGER_MAJOR_VERSION [0]: 0 --- LEDGER_MINOR_VERSION [0]: 0 --- Configuring done (0.7s) --- Generating done (0.0s) --- Build files have been written to: /Users/ftheirs/Repositories/ledger-namada/build -[ 60%] Built target app_lib -[ 66%] Built target gtest -[ 73%] Built target gtest_main -[ 86%] Built target unittests -[ 93%] Built target gmock -[100%] Built target gmock_main -cd build && GTEST_COLOR=1 ASAN_OPTIONS=detect_leaks=0 ctest -VV -UpdateCTestConfiguration from :/Users/ftheirs/Repositories/ledger-namada/build/DartConfiguration.tcl -UpdateCTestConfiguration from :/Users/ftheirs/Repositories/ledger-namada/build/DartConfiguration.tcl -Test project /Users/ftheirs/Repositories/ledger-namada/build -Constructing a list of tests -Done constructing a list of tests -Updating test list for fixtures -Added 0 tests to meet fixture requirements -Checking test dependency graph... -Checking test dependency graph end -test 1 - Start 1: unittests - -1: Test command: /Users/ftheirs/Repositories/ledger-namada/build/bin/unittests -1: Working Directory: /Users/ftheirs/Repositories/ledger-namada/tests -1: Test timeout computed to be: 10000000 -1: Running main() from /Users/ftheirs/Repositories/ledger-namada/build/googletest-src/googletest/src/gtest_main.cc -1: Number of testcases: 54 -1: Number of testcases: 54 -1: [==========] Running 110 tests from 3 test suites. -1: [----------] Global test environment set-up. -1: [----------] 1 test from Address -1: [ RUN ] Address.NamadaEncodingTestnet -1: [ OK ] Address.NamadaEncodingTestnet (0 ms) -1: [----------] 1 test from Address (0 ms total) -1: -1: [----------] 1 test from LEB128 -1: [ RUN ] LEB128.LEB128Encoding -1: [ OK ] LEB128.LEB128Encoding (0 ms) -1: [----------] 1 test from LEB128 (0 ms total) -1: -1: [----------] 108 tests from JsonTestCasesCurrentTxVer/JsonTestsA -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Transfer_0 -1: -1: 0 | Type : Transfer -1: 1 | Sender [1/3] : atest1v4ehgw36gdz5vv34gsurvs6pg3p5gs3e -1: 1 | Sender [2/3] : xerrzv3cg4zrzdjyg3ryzs34xvc5gve5xuc52v -1: 1 | Sender [3/3] : j9nrutay -1: 2 | Destination [1/3] : atest1v4ehgw36xqeyzdjpxyu5yvf4xdqnwwps -1: 2 | Destination [2/3] : xcc5vv3hxu6njwfsxgurq334gvmn2vjpgerrxd -1: 2 | Destination [3/3] : 2rny0fga -1: 3 | Amount : BTC 23.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Transfer_0 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Transfer_1 -1: -1: 0 | Type : Transfer -1: 1 | Sender [1/3] : atest1v4ehgw36xsey2wzrgcc5ydzpxqeryvf4 -1: 1 | Sender [2/3] : g9znvv3jxvuyzdphxuuyvs3jxumy233e8qerzs -1: 1 | Sender [3/3] : ecdvt2tj -1: 2 | Destination [1/3] : atest1v4ehgw36g5mnywp3xvcrxsesxve5vs35 -1: 2 | Destination [2/3] : xpznjven8qmrqse5xdp52sehxcenv32yxyen23 -1: 2 | Destination [3/3] : psmfq3rl -1: 3 | Amount : BTC 23.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Transfer_1 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Transfer_2 -1: -1: 0 | Type : Transfer -1: 1 | Sender [1/3] : atest1v4ehgw36xser2d69gdz5xseexv6rwvej -1: 1 | Sender [2/3] : xdpyyvenx5erswphggeyxwpegccygv6p8quygv -1: 1 | Sender [3/3] : jp4gcn9a -1: 2 | Destination [1/3] : atest1v4ehgw36ggmyzvehxfpnwv2xxdpnsvek -1: 2 | Destination [2/3] : xccryd2pxdzrzvehxfprj3fexezyzdfsxuunyv -1: 2 | Destination [3/3] : jxt2vu2r -1: 3 | Amount : BTC 23.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Transfer_2 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Bond_1 -1: -1: 0 | Type : Bond -1: 1 | Source [1/3] : atest1v4ehgw36xsey2wzrgcc5ydzpxqeryvf4 -1: 1 | Source [2/3] : g9znvv3jxvuyzdphxuuyvs3jxumy233e8qerzs -1: 1 | Source [3/3] : ecdvt2tj -1: 2 | Validator [1/3] : atest1v4ehgw36x5m5g33sxvunz32rg3znxwfj -1: 2 | Validator [2/3] : xppnjvjygyens3f5gezrww2xgfznzse3x4q5vv -1: 2 | Validator [3/3] : 3nss6z3p -1: 3 | Amount : NAM 900.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Bond_1 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Bond_2 -1: -1: 0 | Type : Bond -1: 1 | Source [1/3] : atest1v4ehgw36xumnxsj9gguyxdpkxvcngs3e -1: 1 | Source [2/3] : g4q5vvzpgdp5gwpjxqcrwvf3gccnqdzrgfrr2d -1: 1 | Source [3/3] : jyuetzra -1: 2 | Validator [1/3] : atest1v4ehgw36x5m5g33sxvunz32rg3znxwfj -1: 2 | Validator [2/3] : xppnjvjygyens3f5gezrww2xgfznzse3x4q5vv -1: 2 | Validator [3/3] : 3nss6z3p -1: 3 | Amount : NAM 900.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Bond_2 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Bond_3 -1: -1: 0 | Type : Bond -1: 1 | Source [1/3] : atest1v4ehgw36xsey2wzrgcc5ydzpxqeryvf4 -1: 1 | Source [2/3] : g9znvv3jxvuyzdphxuuyvs3jxumy233e8qerzs -1: 1 | Source [3/3] : ecdvt2tj -1: 2 | Validator [1/3] : atest1v4ehgw36x5m5g33sxvunz32rg3znxwfj -1: 2 | Validator [2/3] : xppnjvjygyens3f5gezrww2xgfznzse3x4q5vv -1: 2 | Validator [3/3] : 3nss6z3p -1: 3 | Amount : NAM 900.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Bond_3 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Bond_4 -1: -1: 0 | Type : Bond -1: 1 | Source [1/3] : atest1v4ehgw36xsey2wzrgcc5ydzpxqeryvf4 -1: 1 | Source [2/3] : g9znvv3jxvuyzdphxuuyvs3jxumy233e8qerzs -1: 1 | Source [3/3] : ecdvt2tj -1: 2 | Validator [1/3] : atest1v4ehgw36x5m5g33sxvunz32rg3znxwfj -1: 2 | Validator [2/3] : xppnjvjygyens3f5gezrww2xgfznzse3x4q5vv -1: 2 | Validator [3/3] : 3nss6z3p -1: 3 | Amount : NAM 900.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Bond_4 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Bond_5 -1: -1: 0 | Type : Bond -1: 1 | Validator [1/3] : atest1v4ehgw36xsey2wzrgcc5ydzpxqeryvf4 -1: 1 | Validator [2/3] : g9znvv3jxvuyzdphxuuyvs3jxumy233e8qerzs -1: 1 | Validator [3/3] : ecdvt2tj -1: 2 | Amount : NAM 25.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Bond_5 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Bond_6 -1: -1: 0 | Type : Bond -1: 1 | Source [1/3] : atest1v4ehgw36xser2d69gdz5xseexv6rwvej -1: 1 | Source [2/3] : xdpyyvenx5erswphggeyxwpegccygv6p8quygv -1: 1 | Source [3/3] : jp4gcn9a -1: 2 | Validator [1/3] : atest1v4ehgw36xyenqdf4g5urzve5g5cnwvp3 -1: 2 | Validator [2/3] : g3qnwvesxqursd6xgvurwdjrgdry23p5xcuryd -1: 2 | Validator [3/3] : 69jx6t2q -1: 3 | Amount : NAM 900.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Bond_6 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Bond_7 -1: -1: 0 | Type : Bond -1: 1 | Source [1/3] : atest1v4ehgw36gvmyy3jyxs65vd69gsu5vdzy -1: 1 | Source [2/3] : g5urv3pngscyz3pjxscnjwz9gy6rw3z9xdz5v3 -1: 1 | Source [3/3] : pjksl96e -1: 2 | Validator [1/3] : atest1v4ehgw36xyenqdf4g5urzve5g5cnwvp3 -1: 2 | Validator [2/3] : g3qnwvesxqursd6xgvurwdjrgdry23p5xcuryd -1: 2 | Validator [3/3] : 69jx6t2q -1: 3 | Amount : NAM 900.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Bond_7 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Bond_8 -1: -1: 0 | Type : Bond -1: 1 | Source [1/3] : atest1v4ehgw36xser2d69gdz5xseexv6rwvej -1: 1 | Source [2/3] : xdpyyvenx5erswphggeyxwpegccygv6p8quygv -1: 1 | Source [3/3] : jp4gcn9a -1: 2 | Validator [1/3] : atest1v4ehgw36xyenqdf4g5urzve5g5cnwvp3 -1: 2 | Validator [2/3] : g3qnwvesxqursd6xgvurwdjrgdry23p5xcuryd -1: 2 | Validator [3/3] : 69jx6t2q -1: 3 | Amount : NAM 900.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Bond_8 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Bond_9 -1: -1: 0 | Type : Bond -1: 1 | Source [1/3] : atest1v4ehgw36xser2d69gdz5xseexv6rwvej -1: 1 | Source [2/3] : xdpyyvenx5erswphggeyxwpegccygv6p8quygv -1: 1 | Source [3/3] : jp4gcn9a -1: 2 | Validator [1/3] : atest1v4ehgw36xyenqdf4g5urzve5g5cnwvp3 -1: 2 | Validator [2/3] : g3qnwvesxqursd6xgvurwdjrgdry23p5xcuryd -1: 2 | Validator [3/3] : 69jx6t2q -1: 3 | Amount : NAM 900.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Bond_9 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Bond_10 -1: -1: 0 | Type : Bond -1: 1 | Validator [1/3] : atest1v4ehgw36xser2d69gdz5xseexv6rwvej -1: 1 | Validator [2/3] : xdpyyvenx5erswphggeyxwpegccygv6p8quygv -1: 1 | Validator [3/3] : jp4gcn9a -1: 2 | Amount : NAM 25.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Bond_10 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Reveal_Pubkey_0 -1: -1: 0 | Type : Reveal Pubkey -1: 1 | Public key [1/2] : 008cd8ee423546ee43cf7dd4ee51638557682e -1: 1 | Public key [2/2] : 045ec0303b8b8ce9e6714297e008 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Reveal_Pubkey_0 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Reveal_Pubkey_1 -1: -1: 0 | Type : Reveal Pubkey -1: 1 | Public key [1/2] : 00d9458d9ae70b725813fd13be8c26febd094b -1: 1 | Public key [2/2] : b5a3f81654ddcd8416e45fc2b373 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Reveal_Pubkey_1 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Reveal_Pubkey_2 -1: -1: 0 | Type : Reveal Pubkey -1: 1 | Public key [1/2] : 00bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0 -1: 1 | Public key [2/2] : b4612d4d8cc517e92682205a7477 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Reveal_Pubkey_2 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_UpdateVP_0 -1: -1: 0 | Type : Update VP -1: 1 | Address [1/3] : atest1v4ehgw36gdz5vv34gsurvs6pg3p5gs3e -1: 1 | Address [2/3] : xerrzv3cg4zrzdjyg3ryzs34xvc5gve5xuc52v -1: 1 | Address [3/3] : j9nrutay -1: 2 | VP type : User -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_UpdateVP_0 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_UpdateVP_1 -1: -1: 0 | Type : Update VP -1: 1 | Address [1/3] : atest1v4ehgw36xsey2wzrgcc5ydzpxqeryvf4 -1: 1 | Address [2/3] : g9znvv3jxvuyzdphxuuyvs3jxumy233e8qerzs -1: 1 | Address [3/3] : ecdvt2tj -1: 2 | VP type : User -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_UpdateVP_1 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Update_VP_2 -1: -1: 0 | Type : Update VP -1: 1 | Address [1/3] : atest1v4ehgw36xser2d69gdz5xseexv6rwvej -1: 1 | Address [2/3] : xdpyyvenx5erswphggeyxwpegccygv6p8quygv -1: 1 | Address [3/3] : jp4gcn9a -1: 2 | VP type : User -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Update_VP_2 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Init_Account_0 -1: -1: 0 | Type : Init Account -1: 1 | Public key [1/2] : 008cd8ee423546ee43cf7dd4ee51638557682e -1: 1 | Public key [2/2] : 045ec0303b8b8ce9e6714297e008 -1: 2 | VP type : User -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Init_Account_0 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Init_Account_1 -1: -1: 0 | Type : Init Account -1: 1 | Public key [1/2] : 00d9458d9ae70b725813fd13be8c26febd094b -1: 1 | Public key [2/2] : b5a3f81654ddcd8416e45fc2b373 -1: 2 | VP type : User -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Init_Account_1 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Init_Account_2 -1: -1: 0 | Type : Init Account -1: 1 | Public key [1/2] : 00bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0 -1: 1 | Public key [2/2] : b4612d4d8cc517e92682205a7477 -1: 2 | VP type : User -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Init_Account_2 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Withdraw_0 -1: -1: 0 | Type : Withdraw -1: 1 | Validator [1/3] : atest1v4ehgw36g56nws3jg3pnzdzxgccrvd3j -1: 1 | Validator [2/3] : xgunwse5xv6rzdzrgsunx33589qngd35x9zrvd -1: 1 | Validator [3/3] : 3heqphwc -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Withdraw_0 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Withdraw_1 -1: -1: 0 | Type : Withdraw -1: 1 | Validator [1/3] : atest1v4ehgw36xumnxsj9gguyxdpkxvcngs3e -1: 1 | Validator [2/3] : g4q5vvzpgdp5gwpjxqcrwvf3gccnqdzrgfrr2d -1: 1 | Validator [3/3] : jyuetzra -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Withdraw_1 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Withdraw_2 -1: -1: 0 | Type : Withdraw -1: 1 | Validator [1/3] : atest1v4ehgw36gvmyy3jyxs65vd69gsu5vdzy -1: 1 | Validator [2/3] : g5urv3pngscyz3pjxscnjwz9gy6rw3z9xdz5v3 -1: 1 | Validator [3/3] : pjksl96e -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Withdraw_2 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Unbond_0 -1: -1: 0 | Type : Unbond -1: 1 | Validator [1/3] : atest1v4ehgw36xqeyzdjpxyu5yvf4xdqnwwps -1: 1 | Validator [2/3] : xcc5vv3hxu6njwfsxgurq334gvmn2vjpgerrxd -1: 1 | Validator [3/3] : 2rny0fga -1: 2 | Amount : NAM 5.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Unbond_0 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Unbond_1 -1: -1: 0 | Type : Unbond -1: 1 | Validator [1/3] : atest1v4ehgw36g5mnywp3xvcrxsesxve5vs35 -1: 1 | Validator [2/3] : xpznjven8qmrqse5xdp52sehxcenv32yxyen23 -1: 1 | Validator [3/3] : psmfq3rl -1: 2 | Amount : NAM 5.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Unbond_1 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Unbond_2 -1: -1: 0 | Type : Unbond -1: 1 | Validator [1/3] : atest1v4ehgw36ggmyzvehxfpnwv2xxdpnsvek -1: 1 | Validator [2/3] : xccryd2pxdzrzvehxfprj3fexezyzdfsxuunyv -1: 1 | Validator [3/3] : jxt2vu2r -1: 2 | Amount : NAM 5.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Unbond_2 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Init_Validator_0 -1: -1: 0 | Type : Init Validator -1: 1 | Account key [1/2] : 009b71ace52f0e7884f21db208a55354fdbb6b -1: 1 | Account key [2/2] : 85c965e629e2bc6ac5c5fc609a2a -1: 2 | Consensus key [1/2] : 0019920adf7b836381b48bdc7d0dae29cff3a9 -1: 2 | Consensus key [2/2] : 44304b55a54cc59adf879b67c5fc -1: 3 | Protocol key [1/2] : 00c560e9a8c963d1dc32bff13ff2f147586869 -1: 3 | Protocol key [2/2] : 9a884add8ad31fa5d906f209c888 -1: 4 | DKG key [1/6] : 6000000005b8e49ca7c6bf63ca8adcfd4e365b -1: 4 | DKG key [2/6] : d5e1c683b53bc293ee410e7d3f47677250cfd8 -1: 4 | DKG key [3/6] : 2dc167df6d249203445e5a28930937c985a6ba -1: 4 | DKG key [4/6] : 06c3d9198185a2ee1cdb6979ea5570c3546126 -1: 4 | DKG key [5/6] : d536e485295e1409507bf581c988d09032578b -1: 4 | DKG key [6/6] : 590f869589 -1: 5 | Commission rate : 0.05 -1: 6 | Maximum commission rate change : 0.01 -1: 7 | Validator VP type : User -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Init_Validator_0 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Init_Validator_1 -1: -1: 0 | Type : Init Validator -1: 1 | Account key [1/2] : 001ea4e07a73edff32c5c4180412a007aa4078 -1: 1 | Account key [2/2] : 95f84fd20203f6867c7eba12b533 -1: 2 | Consensus key [1/2] : 005b1096c50642388c69a740fd31e1537971ad -1: 2 | Consensus key [2/2] : b27e07876bef6d57ef1585a6ada0 -1: 3 | Protocol key [1/2] : 0048bfd36ab9fbbdd6db60bc363d5196ec91f7 -1: 3 | Protocol key [2/2] : ae47bc688d6c3f5d012ff82f60b0 -1: 4 | DKG key [1/6] : 60000000be9ef2789e87afc5dd50566484b4dd -1: 4 | DKG key [2/6] : 6fc64beda8a33001a7cca96c71de94f11cc16f -1: 4 | DKG key [3/6] : a02a1ae31af5f247e4761a7819191dcb07567e -1: 4 | DKG key [4/6] : 488607758459724bba2e54f66801b6221e6a8b -1: 4 | DKG key [5/6] : 30107ca1e54a84cdb871b81b1bae6f4ff2753d -1: 4 | DKG key [6/6] : 4184c80008 -1: 5 | Commission rate : 0.05 -1: 6 | Maximum commission rate change : 0.01 -1: 7 | Validator VP type : User -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Init_Validator_1 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Init_Validator_2 -1: -1: 0 | Type : Init Validator -1: 1 | Account key [1/2] : 00192c084fc9cd3432b08b5745bcdc5f5eb6f3 -1: 1 | Account key [2/2] : 03158aebd0b37c4d1b968e6f86b3 -1: 2 | Consensus key [1/2] : 007f58fff171179823d58a6abd4a1b7218a14f -1: 2 | Consensus key [2/2] : e2cb5a13096435204e695f74f02e -1: 3 | Protocol key [1/2] : 00faad2ea24a47bda7c85514d6b9ee03f6110b -1: 3 | Protocol key [2/2] : 94bc41438c6049d35bd52396d8a0 -1: 4 | DKG key [1/6] : 6000000057680d3693d9f2cfddd5776af31b78 -1: 4 | DKG key [2/6] : 5383c395aa3035216d9fec466f7b3060add8d7 -1: 4 | DKG key [3/6] : cb59a692e4b020fa2861fb6857142cc25467ea -1: 4 | DKG key [4/6] : 04985018b37c80a67a9873dca721e92c0c754d -1: 4 | DKG key [5/6] : 5e4769cf3bce0adbe3d0269a4a50df5d3b2074 -1: 4 | DKG key [6/6] : 3bd38fc88a -1: 5 | Commission rate : 0.05 -1: 6 | Maximum commission rate change : 0.01 -1: 7 | Validator VP type : User -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Init_Validator_2 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Init_Proposal_0 -1: -1: 0 | Type : Init proposal -1: 1 | Author [1/3] : atest1v4ehgw36xumnxsj9gguyxdpkxvcngs3e -1: 1 | Author [2/3] : g4q5vvzpgdp5gwpjxqcrwvf3gccnqdzrgfrr2d -1: 1 | Author [3/3] : jyuetzra -1: 2 | Voting start epoch : 12 -1: 3 | Voting end epoch : 24 -1: 4 | Grace epoch : 30 -1: 5 | Content [1/2] : f8073848db6037887e84e03602dac5ade844fa -1: 5 | Content [2/2] : 48e984c072931c7cdf7cdf0c97 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Init_Proposal_0 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Init_Proposal_1 -1: -1: 0 | Type : Init proposal -1: 1 | Author [1/3] : atest1v4ehgw36gvmyy3jyxs65vd69gsu5vdzy -1: 1 | Author [2/3] : g5urv3pngscyz3pjxscnjwz9gy6rw3z9xdz5v3 -1: 1 | Author [3/3] : pjksl96e -1: 2 | Voting start epoch : 12 -1: 3 | Voting end epoch : 24 -1: 4 | Grace epoch : 30 -1: 5 | Content [1/2] : 08b9d5dcf5dd094d46d6a401fc62e61893f691 -1: 5 | Content [2/2] : 622c08207028a8e7b89a279e5b -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Init_Proposal_1 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Init_Proposal_2 -1: -1: 0 | Type : Init proposal -1: 1 | Author [1/3] : atest1v4ehgw36gvmyy3jyxs65vd69gsu5vdzy -1: 1 | Author [2/3] : g5urv3pngscyz3pjxscnjwz9gy6rw3z9xdz5v3 -1: 1 | Author [3/3] : pjksl96e -1: 2 | Voting start epoch : 12 -1: 3 | Voting end epoch : 24 -1: 4 | Grace epoch : 30 -1: 5 | Content [1/2] : f34c7c8ef99934a54da19a1698118fbd351706 -1: 5 | Content [2/2] : 13249ee369a5969a30d1d6dbb0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Init_Proposal_2 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Init_Proposal_3 -1: -1: 0 | Type : Init proposal -1: 1 | Author [1/3] : atest1v4ehgw36gvmyy3jyxs65vd69gsu5vdzy -1: 1 | Author [2/3] : g5urv3pngscyz3pjxscnjwz9gy6rw3z9xdz5v3 -1: 1 | Author [3/3] : pjksl96e -1: 2 | Voting start epoch : 12 -1: 3 | Voting end epoch : 24 -1: 4 | Grace epoch : 30 -1: 5 | Content [1/2] : 99076284e6bf18b016166cecec783f0af9caf8 -1: 5 | Content [2/2] : 2580137304f316d131ee9d33a7 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Init_Proposal_3 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Init_Proposal_4 -1: -1: 0 | Type : Init proposal -1: 1 | Author [1/3] : atest1v4ehgw36gvmyy3jyxs65vd69gsu5vdzy -1: 1 | Author [2/3] : g5urv3pngscyz3pjxscnjwz9gy6rw3z9xdz5v3 -1: 1 | Author [3/3] : pjksl96e -1: 2 | Voting start epoch : 12 -1: 3 | Voting end epoch : 24 -1: 4 | Grace epoch : 30 -1: 5 | Content [1/2] : 4d07ce9751a42ab7038b59f3da52844b8b52e9 -1: 5 | Content [2/2] : 6e449b8322286b7c06f323e263 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Init_Proposal_4 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Vote_Proposal_Nay -1: -1: 0 | ID : 0 -1: 1 | Vote : nay -1: 2 | Voter [1/3] : atest1v4ehgw36xeznxv6zxpprqvp5x5myvd34 -1: 2 | Voter [2/3] : xerrzv6rg9qnqs34xy6nxs3jx9py2df3xppngd -1: 2 | Voter [3/3] : 345p5atp -1: 3 | Voter [1/3] : atest1v4ehgw36xeznxv6zxpprqvp5x5myvd34 -1: 3 | Voter [2/3] : xerrzv6rg9qnqs34xy6nxs3jx9py2df3xppngd -1: 3 | Voter [3/3] : 345p5atp -1: -1: -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:120: Failure -1: Expected equality of these values: -1: output.size() -1: Which is: 8 -1: expected.size() -1: Which is: 6 -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "0 | Type : Vote Proposal" -1: Actual: "0 | ID : 0" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "1 | ID : 0" -1: Actual: "1 | Vote : nay" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "2 | Vote : nay" -1: Actual: "2 | Voter [1/3] : atest1v4ehgw36xeznxv6zxpprqvp5x5myvd34" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "3 | Voter [1/3] : atest1v4ehgw36xeznxv6zxpprqvp5x5myvd34" -1: Actual: "2 | Voter [2/3] : xerrzv6rg9qnqs34xy6nxs3jx9py2df3xppngd" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "3 | Voter [2/3] : xerrzv6rg9qnqs34xy6nxs3jx9py2df3xppngd" -1: Actual: "2 | Voter [3/3] : 345p5atp" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "3 | Voter [3/3] : 345p5atp" -1: Actual: "3 | Voter [1/3] : atest1v4ehgw36xeznxv6zxpprqvp5x5myvd34" -1: [ FAILED ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Vote_Proposal_Nay, where GetParam() = 104-byte object <00-00 00-00 00-00 00-00 56-6F 74-65 5F-50 72-6F 70-6F 73-61 6C-5F 4E-61 79-00 00-00 00-00 00-11 00-9A 81-42 01-00 00-00 10-06 00-00 00-00 00-00 20-06 00-00 00-00 00-80 50-71 62-42 01-00 00-00 E0-71 62-42 01-00 00-00 E0-71 62-42 01-00 00-00 D0-72 62-42 01-00 00-00 08-74 62-42 01-00 00-00 08-74 62-42 01-00 00-00> (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Vote_Proposal_Yay -1: -1: 0 | ID : 0 -1: 1 | Vote : yay -1: 2 | Voter [1/3] : atest1v4ehgw36xdqngd3ex4zn2wfnxarrzwzx -1: 2 | Voter [2/3] : g3qnswzzgvur2dp4g3p5vvzpx3pn2dpsxs6r2v -1: 2 | Voter [3/3] : 6ruyw9dk -1: 3 | Voter [1/3] : atest1v4ehgw36xdqngd3ex4zn2wfnxarrzwzx -1: 3 | Voter [2/3] : g3qnswzzgvur2dp4g3p5vvzpx3pn2dpsxs6r2v -1: 3 | Voter [3/3] : 6ruyw9dk -1: -1: -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:120: Failure -1: Expected equality of these values: -1: output.size() -1: Which is: 8 -1: expected.size() -1: Which is: 6 -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "0 | Type : Vote Proposal" -1: Actual: "0 | ID : 0" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "1 | ID : 0" -1: Actual: "1 | Vote : yay" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "2 | Vote : yay" -1: Actual: "2 | Voter [1/3] : atest1v4ehgw36xdqngd3ex4zn2wfnxarrzwzx" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "3 | Voter [1/3] : atest1v4ehgw36xdqngd3ex4zn2wfnxarrzwzx" -1: Actual: "2 | Voter [2/3] : g3qnswzzgvur2dp4g3p5vvzpx3pn2dpsxs6r2v" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "3 | Voter [2/3] : g3qnswzzgvur2dp4g3p5vvzpx3pn2dpsxs6r2v" -1: Actual: "2 | Voter [3/3] : 6ruyw9dk" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "3 | Voter [3/3] : 6ruyw9dk" -1: Actual: "3 | Voter [1/3] : atest1v4ehgw36xdqngd3ex4zn2wfnxarrzwzx" -1: [ FAILED ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Vote_Proposal_Yay, where GetParam() = 104-byte object <00-00 00-00 00-00 00-00 56-6F 74-65 5F-50 72-6F 70-6F 73-61 6C-5F 59-61 79-00 00-00 00-00 00-11 00-9A 81-42 01-00 00-00 34-06 00-00 00-00 00-00 40-06 00-00 00-00 00-80 50-71 62-42 01-00 00-00 E0-71 62-42 01-00 00-00 E0-71 62-42 01-00 00-00 20-59 62-42 01-00 00-00 58-5A 62-42 01-00 00-00 58-5A 62-42 01-00 00-00> (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Vote_Proposal_Nay_with_Delegations -1: -1: 0 | ID : 0 -1: 1 | Vote : nay -1: 2 | Voter [1/3] : atest1v4ehgw36xsey2wzrgcc5ydzpxqeryvf4 -1: 2 | Voter [2/3] : g9znvv3jxvuyzdphxuuyvs3jxumy233e8qerzs -1: 2 | Voter [3/3] : ecdvt2tj -1: 3 | Voter [1/3] : atest1v4ehgw36xsey2wzrgcc5ydzpxqeryvf4 -1: 3 | Voter [2/3] : g9znvv3jxvuyzdphxuuyvs3jxumy233e8qerzs -1: 3 | Voter [3/3] : ecdvt2tj -1: 4 | Delegations [1/3] : atest1v4ehgw36x5m5g33sxvunz32rg3znxwfj -1: 4 | Delegations [2/3] : xppnjvjygyens3f5gezrww2xgfznzse3x4q5vv -1: 4 | Delegations [3/3] : 3nss6z3p -1: -1: -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:120: Failure -1: Expected equality of these values: -1: output.size() -1: Which is: 11 -1: expected.size() -1: Which is: 9 -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "0 | Type : Vote Proposal" -1: Actual: "0 | ID : 0" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "1 | ID : 0" -1: Actual: "1 | Vote : nay" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "2 | Vote : nay" -1: Actual: "2 | Voter [1/3] : atest1v4ehgw36xsey2wzrgcc5ydzpxqeryvf4" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "3 | Voter [1/3] : atest1v4ehgw36xsey2wzrgcc5ydzpxqeryvf4" -1: Actual: "2 | Voter [2/3] : g9znvv3jxvuyzdphxuuyvs3jxumy233e8qerzs" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "3 | Voter [2/3] : g9znvv3jxvuyzdphxuuyvs3jxumy233e8qerzs" -1: Actual: "2 | Voter [3/3] : ecdvt2tj" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "3 | Voter [3/3] : ecdvt2tj" -1: Actual: "3 | Voter [1/3] : atest1v4ehgw36xsey2wzrgcc5ydzpxqeryvf4" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "4 | Delegations [1/3] : atest1v4ehgw36x5m5g33sxvunz32rg3znxwfj" -1: Actual: "3 | Voter [2/3] : g9znvv3jxvuyzdphxuuyvs3jxumy233e8qerzs" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "4 | Delegations [2/3] : xppnjvjygyens3f5gezrww2xgfznzse3x4q5vv" -1: Actual: "3 | Voter [3/3] : ecdvt2tj" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "4 | Delegations [3/3] : 3nss6z3p" -1: Actual: "4 | Delegations [1/3] : atest1v4ehgw36x5m5g33sxvunz32rg3znxwfj" -1: [ FAILED ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Vote_Proposal_Nay_with_Delegations, where GetParam() = 104-byte object <00-00 00-00 00-00 00-00 60-FC 64-42 01-00 00-00 22-00 00-00 00-00 00-00 30-00 00-00 00-00 00-80 00-9A 81-42 01-00 00-00 6A-06 00-00 00-00 00-00 70-06 00-00 00-00 00-80 20-59 62-42 01-00 00-00 F8-59 62-42 01-00 00-00 F8-59 62-42 01-00 00-00 10-7A 62-42 01-00 00-00 90-7B 62-42 01-00 00-00 90-7B 62-42 01-00 00-00> (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Vote_Proposal_yay_1 -1: -1: 0 | ID : 0 -1: 1 | Vote : yay -1: 2 | Voter [1/3] : atest1v4ehgw36xumnxsj9gguyxdpkxvcngs3e -1: 2 | Voter [2/3] : g4q5vvzpgdp5gwpjxqcrwvf3gccnqdzrgfrr2d -1: 2 | Voter [3/3] : jyuetzra -1: 3 | Voter [1/3] : atest1v4ehgw36xumnxsj9gguyxdpkxvcngs3e -1: 3 | Voter [2/3] : g4q5vvzpgdp5gwpjxqcrwvf3gccnqdzrgfrr2d -1: 3 | Voter [3/3] : jyuetzra -1: -1: -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:120: Failure -1: Expected equality of these values: -1: output.size() -1: Which is: 8 -1: expected.size() -1: Which is: 6 -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "0 | Type : Vote Proposal" -1: Actual: "0 | ID : 0" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "1 | ID : 0" -1: Actual: "1 | Vote : yay" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "2 | Vote : yay" -1: Actual: "2 | Voter [1/3] : atest1v4ehgw36xumnxsj9gguyxdpkxvcngs3e" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "3 | Voter [1/3] : atest1v4ehgw36xumnxsj9gguyxdpkxvcngs3e" -1: Actual: "2 | Voter [2/3] : g4q5vvzpgdp5gwpjxqcrwvf3gccnqdzrgfrr2d" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "3 | Voter [2/3] : g4q5vvzpgdp5gwpjxqcrwvf3gccnqdzrgfrr2d" -1: Actual: "2 | Voter [3/3] : jyuetzra" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "3 | Voter [3/3] : jyuetzra" -1: Actual: "3 | Voter [1/3] : atest1v4ehgw36xumnxsj9gguyxdpkxvcngs3e" -1: [ FAILED ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Vote_Proposal_yay_1, where GetParam() = 104-byte object <00-00 00-00 00-00 00-00 56-6F 74-65 5F-50 72-6F 70-6F 73-61 6C-5F 79-61 79-5F 31-00 00-00 00-13 00-9A 81-42 01-00 00-00 34-06 00-00 00-00 00-00 40-06 00-00 00-00 00-80 50-71 62-42 01-00 00-00 E0-71 62-42 01-00 00-00 E0-71 62-42 01-00 00-00 20-59 62-42 01-00 00-00 58-5A 62-42 01-00 00-00 58-5A 62-42 01-00 00-00> (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Vote_Proposal_yay_with_councils_1 -1: -1: 0 | Type : Vote Proposal -1: 1 | ID : 2 -1: 2 | Vote [1/4] : yay with councils: -1: Council: atest1v4eh -1: 2 | Vote [2/4] : gw36xumnxsj9gguyxdpkxvcngs3eg4q5vvzpgd -1: 2 | Vote [3/4] : p5gwpjxqcrwvf3gccnqdzrgfrr2djyuetzra, -1: 2 | Vote [4/4] : spending cap: 0.0009 -1: 3 | Voter [1/3] : atest1v4ehgw36xsey2wzrgcc5ydzpxqeryvf4 -1: 3 | Voter [2/3] : g9znvv3jxvuyzdphxuuyvs3jxumy233e8qerzs -1: 3 | Voter [3/3] : ecdvt2tj -1: 4 | Delegations [1/3] : atest1v4ehgw36x5m5g33sxvunz32rg3znxwfj -1: 4 | Delegations [2/3] : xppnjvjygyens3f5gezrww2xgfznzse3x4q5vv -1: 4 | Delegations [3/3] : 3nss6z3p -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Vote_Proposal_yay_with_councils_1 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Vote_Proposal_yay_with_councils_2 -1: -1: 0 | Type : Vote Proposal -1: 1 | ID : 3 -1: 2 | Vote [1/4] : yay with councils: -1: Council: atest1v4eh -1: 2 | Vote [2/4] : gw36xumnxsj9gguyxdpkxvcngs3eg4q5vvzpgd -1: 2 | Vote [3/4] : p5gwpjxqcrwvf3gccnqdzrgfrr2djyuetzra, -1: 2 | Vote [4/4] : spending cap: 0.0009 -1: 3 | Voter [1/3] : atest1v4ehgw36xsey2wzrgcc5ydzpxqeryvf4 -1: 3 | Voter [2/3] : g9znvv3jxvuyzdphxuuyvs3jxumy233e8qerzs -1: 3 | Voter [3/3] : ecdvt2tj -1: 4 | Delegations [1/3] : atest1v4ehgw36x5m5g33sxvunz32rg3znxwfj -1: 4 | Delegations [2/3] : xppnjvjygyens3f5gezrww2xgfznzse3x4q5vv -1: 4 | Delegations [3/3] : 3nss6z3p -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Vote_Proposal_yay_with_councils_2 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Vote_Proposal_Nay_2 -1: -1: 0 | ID : 0 -1: 1 | Vote : nay -1: 2 | Voter [1/3] : atest1v4ehgw36xser2d69gdz5xseexv6rwvej -1: 2 | Voter [2/3] : xdpyyvenx5erswphggeyxwpegccygv6p8quygv -1: 2 | Voter [3/3] : jp4gcn9a -1: 3 | Voter [1/3] : atest1v4ehgw36xser2d69gdz5xseexv6rwvej -1: 3 | Voter [2/3] : xdpyyvenx5erswphggeyxwpegccygv6p8quygv -1: 3 | Voter [3/3] : jp4gcn9a -1: 4 | Delegations [1/3] : atest1v4ehgw36xyenqdf4g5urzve5g5cnwvp3 -1: 4 | Delegations [2/3] : g3qnwvesxqursd6xgvurwdjrgdry23p5xcuryd -1: 4 | Delegations [3/3] : 69jx6t2q -1: -1: -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:120: Failure -1: Expected equality of these values: -1: output.size() -1: Which is: 11 -1: expected.size() -1: Which is: 9 -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "0 | Type : Vote Proposal" -1: Actual: "0 | ID : 0" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "1 | ID : 0" -1: Actual: "1 | Vote : nay" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "2 | Vote : nay" -1: Actual: "2 | Voter [1/3] : atest1v4ehgw36xser2d69gdz5xseexv6rwvej" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "3 | Voter [1/3] : atest1v4ehgw36xser2d69gdz5xseexv6rwvej" -1: Actual: "2 | Voter [2/3] : xdpyyvenx5erswphggeyxwpegccygv6p8quygv" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "3 | Voter [2/3] : xdpyyvenx5erswphggeyxwpegccygv6p8quygv" -1: Actual: "2 | Voter [3/3] : jp4gcn9a" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "3 | Voter [3/3] : jp4gcn9a" -1: Actual: "3 | Voter [1/3] : atest1v4ehgw36xser2d69gdz5xseexv6rwvej" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "4 | Delegations [1/3] : atest1v4ehgw36xyenqdf4g5urzve5g5cnwvp3" -1: Actual: "3 | Voter [2/3] : xdpyyvenx5erswphggeyxwpegccygv6p8quygv" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "4 | Delegations [2/3] : g3qnwvesxqursd6xgvurwdjrgdry23p5xcuryd" -1: Actual: "3 | Voter [3/3] : jp4gcn9a" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "4 | Delegations [3/3] : 69jx6t2q" -1: Actual: "4 | Delegations [1/3] : atest1v4ehgw36xyenqdf4g5urzve5g5cnwvp3" -1: [ FAILED ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Vote_Proposal_Nay_2, where GetParam() = 104-byte object <00-00 00-00 00-00 00-00 56-6F 74-65 5F-50 72-6F 70-6F 73-61 6C-5F 4E-61 79-5F 32-00 00-00 00-13 00-9A 81-42 01-00 00-00 6A-06 00-00 00-00 00-00 70-06 00-00 00-00 00-80 20-59 62-42 01-00 00-00 F8-59 62-42 01-00 00-00 F8-59 62-42 01-00 00-00 10-0C 63-42 01-00 00-00 90-0D 63-42 01-00 00-00 90-0D 63-42 01-00 00-00> (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Vote_Proposal_Yay_2 -1: -1: 0 | ID : 0 -1: 1 | Vote : yay -1: 2 | Voter [1/3] : atest1v4ehgw36gvmyy3jyxs65vd69gsu5vdzy -1: 2 | Voter [2/3] : g5urv3pngscyz3pjxscnjwz9gy6rw3z9xdz5v3 -1: 2 | Voter [3/3] : pjksl96e -1: 3 | Voter [1/3] : atest1v4ehgw36gvmyy3jyxs65vd69gsu5vdzy -1: 3 | Voter [2/3] : g5urv3pngscyz3pjxscnjwz9gy6rw3z9xdz5v3 -1: 3 | Voter [3/3] : pjksl96e -1: -1: -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:120: Failure -1: Expected equality of these values: -1: output.size() -1: Which is: 8 -1: expected.size() -1: Which is: 6 -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "0 | Type : Vote Proposal" -1: Actual: "0 | ID : 0" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "1 | ID : 0" -1: Actual: "1 | Vote : yay" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "2 | Vote : yay" -1: Actual: "2 | Voter [1/3] : atest1v4ehgw36gvmyy3jyxs65vd69gsu5vdzy" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "3 | Voter [1/3] : atest1v4ehgw36gvmyy3jyxs65vd69gsu5vdzy" -1: Actual: "2 | Voter [2/3] : g5urv3pngscyz3pjxscnjwz9gy6rw3z9xdz5v3" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "3 | Voter [2/3] : g5urv3pngscyz3pjxscnjwz9gy6rw3z9xdz5v3" -1: Actual: "2 | Voter [3/3] : pjksl96e" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "3 | Voter [3/3] : pjksl96e" -1: Actual: "3 | Voter [1/3] : atest1v4ehgw36gvmyy3jyxs65vd69gsu5vdzy" -1: [ FAILED ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Vote_Proposal_Yay_2, where GetParam() = 104-byte object <00-00 00-00 00-00 00-00 56-6F 74-65 5F-50 72-6F 70-6F 73-61 6C-5F 59-61 79-5F 32-00 00-00 00-13 00-9A 81-42 01-00 00-00 34-06 00-00 00-00 00-00 40-06 00-00 00-00 00-80 50-71 62-42 01-00 00-00 E0-71 62-42 01-00 00-00 E0-71 62-42 01-00 00-00 20-59 62-42 01-00 00-00 58-5A 62-42 01-00 00-00 58-5A 62-42 01-00 00-00> (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Vote_Proposal_Yay_3 -1: -1: 0 | Type : Vote Proposal -1: 1 | ID : 2 -1: 2 | Vote [1/4] : yay with councils: -1: Council: atest1v4eh -1: 2 | Vote [2/4] : gw36gvmyy3jyxs65vd69gsu5vdzyg5urv3pngs -1: 2 | Vote [3/4] : cyz3pjxscnjwz9gy6rw3z9xdz5v3pjksl96e, -1: 2 | Vote [4/4] : spending cap: 0.0009 -1: 3 | Voter [1/3] : atest1v4ehgw36xser2d69gdz5xseexv6rwvej -1: 3 | Voter [2/3] : xdpyyvenx5erswphggeyxwpegccygv6p8quygv -1: 3 | Voter [3/3] : jp4gcn9a -1: 4 | Delegations [1/3] : atest1v4ehgw36xyenqdf4g5urzve5g5cnwvp3 -1: 4 | Delegations [2/3] : g3qnwvesxqursd6xgvurwdjrgdry23p5xcuryd -1: 4 | Delegations [3/3] : 69jx6t2q -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Vote_Proposal_Yay_3 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Vote_Proposal_Yay_4 -1: -1: 0 | Type : Vote Proposal -1: 1 | ID : 3 -1: 2 | Vote [1/4] : yay with councils: -1: Council: atest1v4eh -1: 2 | Vote [2/4] : gw36gvmyy3jyxs65vd69gsu5vdzyg5urv3pngs -1: 2 | Vote [3/4] : cyz3pjxscnjwz9gy6rw3z9xdz5v3pjksl96e, -1: 2 | Vote [4/4] : spending cap: 0.0009 -1: 3 | Voter [1/3] : atest1v4ehgw36xser2d69gdz5xseexv6rwvej -1: 3 | Voter [2/3] : xdpyyvenx5erswphggeyxwpegccygv6p8quygv -1: 3 | Voter [3/3] : jp4gcn9a -1: 4 | Delegations [1/3] : atest1v4ehgw36xyenqdf4g5urzve5g5cnwvp3 -1: 4 | Delegations [2/3] : g3qnwvesxqursd6xgvurwdjrgdry23p5xcuryd -1: 4 | Delegations [3/3] : 69jx6t2q -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Vote_Proposal_Yay_4 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Custom_0 -1: -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Custom_0 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Custom_1 -1: -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Custom_1 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Custom_2 -1: -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Custom_2 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Change_Commission_0 -1: -1: 0 | Type : Change commission -1: 1 | New rate : 0.02 -1: 2 | Validator [1/3] : atest1v4ehgw36xser2d69gdz5xseexv6rwvej -1: 2 | Validator [2/3] : xdpyyvenx5erswphggeyxwpegccygv6p8quygv -1: 2 | Validator [3/3] : jp4gcn9a -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Change_Commission_0 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Change_Commission_1 -1: -1: 0 | Type : Change commission -1: 1 | New rate : 0.05 -1: 2 | Validator [1/3] : atest1v4ehgw36gvmyy3jyxs65vd69gsu5vdzy -1: 2 | Validator [2/3] : g5urv3pngscyz3pjxscnjwz9gy6rw3z9xdz5v3 -1: 2 | Validator [3/3] : pjksl96e -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Change_Commission_1 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Change_Commission_2 -1: -1: 0 | Type : Change commission -1: 1 | New rate : 0.07 -1: 2 | Validator [1/3] : atest1v4ehgw36xser2d69gdz5xseexv6rwvej -1: 2 | Validator [2/3] : xdpyyvenx5erswphggeyxwpegccygv6p8quygv -1: 2 | Validator [3/3] : jp4gcn9a -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Change_Commission_2 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Change_Commission_3 -1: -1: 0 | Type : Change commission -1: 1 | New rate : 0.09 -1: 2 | Validator [1/3] : atest1v4ehgw36xser2d69gdz5xseexv6rwvej -1: 2 | Validator [2/3] : xdpyyvenx5erswphggeyxwpegccygv6p8quygv -1: 2 | Validator [3/3] : jp4gcn9a -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Change_Commission_3 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Change_Commission_4 -1: -1: 0 | Type : Change commission -1: 1 | New rate : 0.11 -1: 2 | Validator [1/3] : atest1v4ehgw36xser2d69gdz5xseexv6rwvej -1: 2 | Validator [2/3] : xdpyyvenx5erswphggeyxwpegccygv6p8quygv -1: 2 | Validator [3/3] : jp4gcn9a -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Change_Commission_4 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Transfer_0 -1: -1: 0 | Code hash [1/2] : 225991ddf88d81b7a587e98fc45d4efe6df3b3 -1: 0 | Code hash [2/2] : bc62d9ba946a829b7a2d0025ed -1: 1 | Sender [1/3] : atest1v4ehgw36gdz5vv34gsurvs6pg3p5gs3e -1: 1 | Sender [2/3] : xerrzv3cg4zrzdjyg3ryzs34xvc5gve5xuc52v -1: 1 | Sender [3/3] : j9nrutay -1: 2 | Destination [1/3] : atest1v4ehgw36xqeyzdjpxyu5yvf4xdqnwwps -1: 2 | Destination [2/3] : xcc5vv3hxu6njwfsxgurq334gvmn2vjpgerrxd -1: 2 | Destination [3/3] : 2rny0fga -1: 3 | Amount : BTC 23.0 -1: 4 | Timestamp : 2023-06-13 18:04:29.045657885 UTC -1: 5 | Pubkey [1/2] : 00d04d39252f8f76ee4ce7ff1ce846f45d9bb0 -1: 5 | Pubkey [2/2] : aa4b84e10e7ee96382958f4c9d3a -1: 6 | Epoch : 1 -1: 7 | Gas limit : 0 -1: 8 | Fees : NAM 100.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Transfer_0 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Transfer_1 -1: -1: 0 | Code hash [1/2] : 225991ddf88d81b7a587e98fc45d4efe6df3b3 -1: 0 | Code hash [2/2] : bc62d9ba946a829b7a2d0025ed -1: 1 | Sender [1/3] : atest1v4ehgw36xsey2wzrgcc5ydzpxqeryvf4 -1: 1 | Sender [2/3] : g9znvv3jxvuyzdphxuuyvs3jxumy233e8qerzs -1: 1 | Sender [3/3] : ecdvt2tj -1: 2 | Destination [1/3] : atest1v4ehgw36g5mnywp3xvcrxsesxve5vs35 -1: 2 | Destination [2/3] : xpznjven8qmrqse5xdp52sehxcenv32yxyen23 -1: 2 | Destination [3/3] : psmfq3rl -1: 3 | Amount : BTC 23.0 -1: 4 | Timestamp : 2023-06-19 11:09:28.930908666 UTC -1: 5 | Pubkey [1/2] : 00a99a391a750acf6424a3b0a0aaa3f2c8f379 -1: 5 | Pubkey [2/2] : f24cabaaeb2c23408f024e952de8 -1: 6 | Epoch : 1 -1: 7 | Gas limit : 0 -1: 8 | Fees : NAM 100.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Transfer_1 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Transfer_2 -1: -1: 0 | Code hash [1/2] : 225991ddf88d81b7a587e98fc45d4efe6df3b3 -1: 0 | Code hash [2/2] : bc62d9ba946a829b7a2d0025ed -1: 1 | Sender [1/3] : atest1v4ehgw36xser2d69gdz5xseexv6rwvej -1: 1 | Sender [2/3] : xdpyyvenx5erswphggeyxwpegccygv6p8quygv -1: 1 | Sender [3/3] : jp4gcn9a -1: 2 | Destination [1/3] : atest1v4ehgw36ggmyzvehxfpnwv2xxdpnsvek -1: 2 | Destination [2/3] : xccryd2pxdzrzvehxfprj3fexezyzdfsxuunyv -1: 2 | Destination [3/3] : jxt2vu2r -1: 3 | Amount : BTC 23.0 -1: 4 | Timestamp : 2023-06-19 12:55:38.322736177 UTC -1: 5 | Pubkey [1/2] : 00ef8ffbbcf933342a6ba57bc159e222c7d127 -1: 5 | Pubkey [2/2] : df1fe1ce8fa0a8dbf1f062ee6ed1 -1: 6 | Epoch : 1 -1: 7 | Gas limit : 0 -1: 8 | Fees : NAM 100.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Transfer_2 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Bond_1 -1: -1: 0 | Code hash [1/2] : c5af313728e281c2578b4bd8cbc9cbbfb0209d -1: 0 | Code hash [2/2] : 0785734b462c44b9a631012900 -1: 1 | Source [1/3] : atest1v4ehgw36xsey2wzrgcc5ydzpxqeryvf4 -1: 1 | Source [2/3] : g9znvv3jxvuyzdphxuuyvs3jxumy233e8qerzs -1: 1 | Source [3/3] : ecdvt2tj -1: 2 | Validator [1/3] : atest1v4ehgw36x5m5g33sxvunz32rg3znxwfj -1: 2 | Validator [2/3] : xppnjvjygyens3f5gezrww2xgfznzse3x4q5vv -1: 2 | Validator [3/3] : 3nss6z3p -1: 3 | Amount : NAM 900.0 -1: 4 | Timestamp : 2023-06-19 11:08:35.246405369 UTC -1: 5 | Pubkey [1/2] : 00a99a391a750acf6424a3b0a0aaa3f2c8f379 -1: 5 | Pubkey [2/2] : f24cabaaeb2c23408f024e952de8 -1: 6 | Epoch : 1 -1: 7 | Gas limit : 0 -1: 8 | Fees : NAM 100.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Bond_1 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Bond_2 -1: -1: 0 | Code hash [1/2] : c5af313728e281c2578b4bd8cbc9cbbfb0209d -1: 0 | Code hash [2/2] : 0785734b462c44b9a631012900 -1: 1 | Source [1/3] : atest1v4ehgw36xumnxsj9gguyxdpkxvcngs3e -1: 1 | Source [2/3] : g4q5vvzpgdp5gwpjxqcrwvf3gccnqdzrgfrr2d -1: 1 | Source [3/3] : jyuetzra -1: 2 | Validator [1/3] : atest1v4ehgw36x5m5g33sxvunz32rg3znxwfj -1: 2 | Validator [2/3] : xppnjvjygyens3f5gezrww2xgfznzse3x4q5vv -1: 2 | Validator [3/3] : 3nss6z3p -1: 3 | Amount : NAM 900.0 -1: 4 | Timestamp : 2023-06-19 11:08:51.718772869 UTC -1: 5 | Pubkey [1/2] : 00d9458d9ae70b725813fd13be8c26febd094b -1: 5 | Pubkey [2/2] : b5a3f81654ddcd8416e45fc2b373 -1: 6 | Epoch : 1 -1: 7 | Gas limit : 0 -1: 8 | Fees : NAM 100.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Bond_2 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Bond_3 -1: -1: 0 | Code hash [1/2] : c5af313728e281c2578b4bd8cbc9cbbfb0209d -1: 0 | Code hash [2/2] : 0785734b462c44b9a631012900 -1: 1 | Source [1/3] : atest1v4ehgw36xsey2wzrgcc5ydzpxqeryvf4 -1: 1 | Source [2/3] : g9znvv3jxvuyzdphxuuyvs3jxumy233e8qerzs -1: 1 | Source [3/3] : ecdvt2tj -1: 2 | Validator [1/3] : atest1v4ehgw36x5m5g33sxvunz32rg3znxwfj -1: 2 | Validator [2/3] : xppnjvjygyens3f5gezrww2xgfznzse3x4q5vv -1: 2 | Validator [3/3] : 3nss6z3p -1: 3 | Amount : NAM 900.0 -1: 4 | Timestamp : 2023-06-19 11:08:57.681951754 UTC -1: 5 | Pubkey [1/2] : 00a99a391a750acf6424a3b0a0aaa3f2c8f379 -1: 5 | Pubkey [2/2] : f24cabaaeb2c23408f024e952de8 -1: 6 | Epoch : 1 -1: 7 | Gas limit : 0 -1: 8 | Fees : NAM 100.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Bond_3 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Bond_4 -1: -1: 0 | Code hash [1/2] : c5af313728e281c2578b4bd8cbc9cbbfb0209d -1: 0 | Code hash [2/2] : 0785734b462c44b9a631012900 -1: 1 | Source [1/3] : atest1v4ehgw36xsey2wzrgcc5ydzpxqeryvf4 -1: 1 | Source [2/3] : g9znvv3jxvuyzdphxuuyvs3jxumy233e8qerzs -1: 1 | Source [3/3] : ecdvt2tj -1: 2 | Validator [1/3] : atest1v4ehgw36x5m5g33sxvunz32rg3znxwfj -1: 2 | Validator [2/3] : xppnjvjygyens3f5gezrww2xgfznzse3x4q5vv -1: 2 | Validator [3/3] : 3nss6z3p -1: 3 | Amount : NAM 900.0 -1: 4 | Timestamp : 2023-06-19 11:09:07.299292566 UTC -1: 5 | Pubkey [1/2] : 00a99a391a750acf6424a3b0a0aaa3f2c8f379 -1: 5 | Pubkey [2/2] : f24cabaaeb2c23408f024e952de8 -1: 6 | Epoch : 1 -1: 7 | Gas limit : 0 -1: 8 | Fees : NAM 100.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Bond_4 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Bond_5 -1: -1: 0 | Code hash [1/2] : c5af313728e281c2578b4bd8cbc9cbbfb0209d -1: 0 | Code hash [2/2] : 0785734b462c44b9a631012900 -1: 1 | Validator [1/3] : atest1v4ehgw36xsey2wzrgcc5ydzpxqeryvf4 -1: 1 | Validator [2/3] : g9znvv3jxvuyzdphxuuyvs3jxumy233e8qerzs -1: 1 | Validator [3/3] : ecdvt2tj -1: 2 | Amount : NAM 25.0 -1: 3 | Timestamp : 2023-06-19 11:09:32.377882526 UTC -1: 4 | Pubkey [1/2] : 00a99a391a750acf6424a3b0a0aaa3f2c8f379 -1: 4 | Pubkey [2/2] : f24cabaaeb2c23408f024e952de8 -1: 5 | Epoch : 1 -1: 6 | Gas limit : 0 -1: 7 | Fees : NAM 100.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Bond_5 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Bond_6 -1: -1: 0 | Code hash [1/2] : c5af313728e281c2578b4bd8cbc9cbbfb0209d -1: 0 | Code hash [2/2] : 0785734b462c44b9a631012900 -1: 1 | Source [1/3] : atest1v4ehgw36xser2d69gdz5xseexv6rwvej -1: 1 | Source [2/3] : xdpyyvenx5erswphggeyxwpegccygv6p8quygv -1: 1 | Source [3/3] : jp4gcn9a -1: 2 | Validator [1/3] : atest1v4ehgw36xyenqdf4g5urzve5g5cnwvp3 -1: 2 | Validator [2/3] : g3qnwvesxqursd6xgvurwdjrgdry23p5xcuryd -1: 2 | Validator [3/3] : 69jx6t2q -1: 3 | Amount : NAM 900.0 -1: 4 | Timestamp : 2023-06-19 12:54:27.746050522 UTC -1: 5 | Pubkey [1/2] : 00ef8ffbbcf933342a6ba57bc159e222c7d127 -1: 5 | Pubkey [2/2] : df1fe1ce8fa0a8dbf1f062ee6ed1 -1: 6 | Epoch : 1 -1: 7 | Gas limit : 0 -1: 8 | Fees : NAM 100.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Bond_6 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Bond_7 -1: -1: 0 | Code hash [1/2] : c5af313728e281c2578b4bd8cbc9cbbfb0209d -1: 0 | Code hash [2/2] : 0785734b462c44b9a631012900 -1: 1 | Source [1/3] : atest1v4ehgw36gvmyy3jyxs65vd69gsu5vdzy -1: 1 | Source [2/3] : g5urv3pngscyz3pjxscnjwz9gy6rw3z9xdz5v3 -1: 1 | Source [3/3] : pjksl96e -1: 2 | Validator [1/3] : atest1v4ehgw36xyenqdf4g5urzve5g5cnwvp3 -1: 2 | Validator [2/3] : g3qnwvesxqursd6xgvurwdjrgdry23p5xcuryd -1: 2 | Validator [3/3] : 69jx6t2q -1: 3 | Amount : NAM 900.0 -1: 4 | Timestamp : 2023-06-19 12:54:49.374301356 UTC -1: 5 | Pubkey [1/2] : 00bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0 -1: 5 | Pubkey [2/2] : b4612d4d8cc517e92682205a7477 -1: 6 | Epoch : 1 -1: 7 | Gas limit : 0 -1: 8 | Fees : NAM 100.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Bond_7 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Bond_8 -1: -1: 0 | Code hash [1/2] : c5af313728e281c2578b4bd8cbc9cbbfb0209d -1: 0 | Code hash [2/2] : 0785734b462c44b9a631012900 -1: 1 | Source [1/3] : atest1v4ehgw36xser2d69gdz5xseexv6rwvej -1: 1 | Source [2/3] : xdpyyvenx5erswphggeyxwpegccygv6p8quygv -1: 1 | Source [3/3] : jp4gcn9a -1: 2 | Validator [1/3] : atest1v4ehgw36xyenqdf4g5urzve5g5cnwvp3 -1: 2 | Validator [2/3] : g3qnwvesxqursd6xgvurwdjrgdry23p5xcuryd -1: 2 | Validator [3/3] : 69jx6t2q -1: 3 | Amount : NAM 900.0 -1: 4 | Timestamp : 2023-06-19 12:54:59.306273381 UTC -1: 5 | Pubkey [1/2] : 00ef8ffbbcf933342a6ba57bc159e222c7d127 -1: 5 | Pubkey [2/2] : df1fe1ce8fa0a8dbf1f062ee6ed1 -1: 6 | Epoch : 1 -1: 7 | Gas limit : 0 -1: 8 | Fees : NAM 100.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Bond_8 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Bond_9 -1: -1: 0 | Code hash [1/2] : c5af313728e281c2578b4bd8cbc9cbbfb0209d -1: 0 | Code hash [2/2] : 0785734b462c44b9a631012900 -1: 1 | Source [1/3] : atest1v4ehgw36xser2d69gdz5xseexv6rwvej -1: 1 | Source [2/3] : xdpyyvenx5erswphggeyxwpegccygv6p8quygv -1: 1 | Source [3/3] : jp4gcn9a -1: 2 | Validator [1/3] : atest1v4ehgw36xyenqdf4g5urzve5g5cnwvp3 -1: 2 | Validator [2/3] : g3qnwvesxqursd6xgvurwdjrgdry23p5xcuryd -1: 2 | Validator [3/3] : 69jx6t2q -1: 3 | Amount : NAM 900.0 -1: 4 | Timestamp : 2023-06-19 12:55:11.829903089 UTC -1: 5 | Pubkey [1/2] : 00ef8ffbbcf933342a6ba57bc159e222c7d127 -1: 5 | Pubkey [2/2] : df1fe1ce8fa0a8dbf1f062ee6ed1 -1: 6 | Epoch : 1 -1: 7 | Gas limit : 0 -1: 8 | Fees : NAM 100.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Bond_9 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Bond_10 -1: -1: 0 | Code hash [1/2] : c5af313728e281c2578b4bd8cbc9cbbfb0209d -1: 0 | Code hash [2/2] : 0785734b462c44b9a631012900 -1: 1 | Validator [1/3] : atest1v4ehgw36xser2d69gdz5xseexv6rwvej -1: 1 | Validator [2/3] : xdpyyvenx5erswphggeyxwpegccygv6p8quygv -1: 1 | Validator [3/3] : jp4gcn9a -1: 2 | Amount : NAM 25.0 -1: 3 | Timestamp : 2023-06-19 12:55:41.937949102 UTC -1: 4 | Pubkey [1/2] : 00ef8ffbbcf933342a6ba57bc159e222c7d127 -1: 4 | Pubkey [2/2] : df1fe1ce8fa0a8dbf1f062ee6ed1 -1: 5 | Epoch : 1 -1: 6 | Gas limit : 0 -1: 7 | Fees : NAM 100.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Bond_10 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Reveal_Pubkey_0 -1: -1: 0 | Code hash [1/2] : ccd2d3cf7eb36af965e52e10b300523e796b7c -1: 0 | Code hash [2/2] : 5517278a0703c429d670fff479 -1: 1 | Public key [1/2] : 008cd8ee423546ee43cf7dd4ee51638557682e -1: 1 | Public key [2/2] : 045ec0303b8b8ce9e6714297e008 -1: 2 | Timestamp : 2023-06-13 18:04:37.357400082 UTC -1: 3 | Pubkey [1/2] : 008cd8ee423546ee43cf7dd4ee51638557682e -1: 3 | Pubkey [2/2] : 045ec0303b8b8ce9e6714297e008 -1: 4 | Epoch : 1 -1: 5 | Gas limit : 0 -1: 6 | Fees : NAM 100.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Reveal_Pubkey_0 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Reveal_Pubkey_1 -1: -1: 0 | Code hash [1/2] : ccd2d3cf7eb36af965e52e10b300523e796b7c -1: 0 | Code hash [2/2] : 5517278a0703c429d670fff479 -1: 1 | Public key [1/2] : 00d9458d9ae70b725813fd13be8c26febd094b -1: 1 | Public key [2/2] : b5a3f81654ddcd8416e45fc2b373 -1: 2 | Timestamp : 2023-06-19 11:09:35.756927194 UTC -1: 3 | Pubkey [1/2] : 00d9458d9ae70b725813fd13be8c26febd094b -1: 3 | Pubkey [2/2] : b5a3f81654ddcd8416e45fc2b373 -1: 4 | Epoch : 1 -1: 5 | Gas limit : 0 -1: 6 | Fees : NAM 100.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Reveal_Pubkey_1 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Reveal_Pubkey_2 -1: -1: 0 | Code hash [1/2] : ccd2d3cf7eb36af965e52e10b300523e796b7c -1: 0 | Code hash [2/2] : 5517278a0703c429d670fff479 -1: 1 | Public key [1/2] : 00bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0 -1: 1 | Public key [2/2] : b4612d4d8cc517e92682205a7477 -1: 2 | Timestamp : 2023-06-19 12:55:50.007390357 UTC -1: 3 | Pubkey [1/2] : 00bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0 -1: 3 | Pubkey [2/2] : b4612d4d8cc517e92682205a7477 -1: 4 | Epoch : 1 -1: 5 | Gas limit : 0 -1: 6 | Fees : NAM 100.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Reveal_Pubkey_2 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_UpdateVP_0 -1: -1: 0 | Code hash [1/2] : 8d00c0f6b71511fd48da76679f3f9a5b41103b -1: 0 | Code hash [2/2] : 93161a71b0c97b212906a71dbb -1: 1 | Address [1/3] : atest1v4ehgw36gdz5vv34gsurvs6pg3p5gs3e -1: 1 | Address [2/3] : xerrzv3cg4zrzdjyg3ryzs34xvc5gve5xuc52v -1: 1 | Address [3/3] : j9nrutay -1: 2 | VP type [1/2] : a464a5b93a5827e2c0eea0edb37b16c829676f -1: 2 | VP type [2/2] : e7879fcc36e872c4a40badf10d -1: 3 | Timestamp : 2023-06-13 18:04:41.153429841 UTC -1: 4 | Pubkey [1/2] : 00d04d39252f8f76ee4ce7ff1ce846f45d9bb0 -1: 4 | Pubkey [2/2] : aa4b84e10e7ee96382958f4c9d3a -1: 5 | Epoch : 1 -1: 6 | Gas limit : 0 -1: 7 | Fees : NAM 100.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_UpdateVP_0 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_UpdateVP_1 -1: -1: 0 | Code hash [1/2] : 8d00c0f6b71511fd48da76679f3f9a5b41103b -1: 0 | Code hash [2/2] : 93161a71b0c97b212906a71dbb -1: 1 | Address [1/3] : atest1v4ehgw36xsey2wzrgcc5ydzpxqeryvf4 -1: 1 | Address [2/3] : g9znvv3jxvuyzdphxuuyvs3jxumy233e8qerzs -1: 1 | Address [3/3] : ecdvt2tj -1: 2 | VP type [1/2] : a464a5b93a5827e2c0eea0edb37b16c829676f -1: 2 | VP type [2/2] : e7879fcc36e872c4a40badf10d -1: 3 | Timestamp : 2023-06-19 11:09:39.469858655 UTC -1: 4 | Pubkey [1/2] : 00a99a391a750acf6424a3b0a0aaa3f2c8f379 -1: 4 | Pubkey [2/2] : f24cabaaeb2c23408f024e952de8 -1: 5 | Epoch : 1 -1: 6 | Gas limit : 0 -1: 7 | Fees : NAM 100.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_UpdateVP_1 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Update_VP_2 -1: -1: 0 | Code hash [1/2] : 8d00c0f6b71511fd48da76679f3f9a5b41103b -1: 0 | Code hash [2/2] : 93161a71b0c97b212906a71dbb -1: 1 | Address [1/3] : atest1v4ehgw36xser2d69gdz5xseexv6rwvej -1: 1 | Address [2/3] : xdpyyvenx5erswphggeyxwpegccygv6p8quygv -1: 1 | Address [3/3] : jp4gcn9a -1: 2 | VP type [1/2] : a464a5b93a5827e2c0eea0edb37b16c829676f -1: 2 | VP type [2/2] : e7879fcc36e872c4a40badf10d -1: 3 | Timestamp : 2023-06-19 12:55:54.789936948 UTC -1: 4 | Pubkey [1/2] : 00ef8ffbbcf933342a6ba57bc159e222c7d127 -1: 4 | Pubkey [2/2] : df1fe1ce8fa0a8dbf1f062ee6ed1 -1: 5 | Epoch : 1 -1: 6 | Gas limit : 0 -1: 7 | Fees : NAM 100.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Update_VP_2 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Init_Account_0 -1: -1: 0 | Code hash [1/2] : fbd9e66ce66fc8ae9257878a60c6affe5046f3 -1: 0 | Code hash [2/2] : fcb4148f394a6efa5789d8ef72 -1: 1 | Public key [1/2] : 008cd8ee423546ee43cf7dd4ee51638557682e -1: 1 | Public key [2/2] : 045ec0303b8b8ce9e6714297e008 -1: 2 | VP type [1/2] : a464a5b93a5827e2c0eea0edb37b16c829676f -1: 2 | VP type [2/2] : e7879fcc36e872c4a40badf10d -1: 3 | Timestamp : 2023-06-13 18:04:59.304251849 UTC -1: 4 | Pubkey [1/2] : 008cd8ee423546ee43cf7dd4ee51638557682e -1: 4 | Pubkey [2/2] : 045ec0303b8b8ce9e6714297e008 -1: 5 | Epoch : 1 -1: 6 | Gas limit : 0 -1: 7 | Fees : NAM 100.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Init_Account_0 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Init_Account_1 -1: -1: 0 | Code hash [1/2] : fbd9e66ce66fc8ae9257878a60c6affe5046f3 -1: 0 | Code hash [2/2] : fcb4148f394a6efa5789d8ef72 -1: 1 | Public key [1/2] : 00d9458d9ae70b725813fd13be8c26febd094b -1: 1 | Public key [2/2] : b5a3f81654ddcd8416e45fc2b373 -1: 2 | VP type [1/2] : a464a5b93a5827e2c0eea0edb37b16c829676f -1: 2 | VP type [2/2] : e7879fcc36e872c4a40badf10d -1: 3 | Timestamp : 2023-06-19 11:09:56.653976396 UTC -1: 4 | Pubkey [1/2] : 00d9458d9ae70b725813fd13be8c26febd094b -1: 4 | Pubkey [2/2] : b5a3f81654ddcd8416e45fc2b373 -1: 5 | Epoch : 1 -1: 6 | Gas limit : 0 -1: 7 | Fees : NAM 100.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Init_Account_1 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Init_Account_2 -1: -1: 0 | Code hash [1/2] : fbd9e66ce66fc8ae9257878a60c6affe5046f3 -1: 0 | Code hash [2/2] : fcb4148f394a6efa5789d8ef72 -1: 1 | Public key [1/2] : 00bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0 -1: 1 | Public key [2/2] : b4612d4d8cc517e92682205a7477 -1: 2 | VP type [1/2] : a464a5b93a5827e2c0eea0edb37b16c829676f -1: 2 | VP type [2/2] : e7879fcc36e872c4a40badf10d -1: 3 | Timestamp : 2023-06-19 12:56:09.509959609 UTC -1: 4 | Pubkey [1/2] : 00bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0 -1: 4 | Pubkey [2/2] : b4612d4d8cc517e92682205a7477 -1: 5 | Epoch : 2 -1: 6 | Gas limit : 0 -1: 7 | Fees : NAM 100.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Init_Account_2 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Withdraw_0 -1: -1: 0 | Code hash [1/2] : f7a3acf046f3c216eaf4c6827a3f91433dac58 -1: 0 | Code hash [2/2] : 05d82f2d6ad7bdf1574d504140 -1: 1 | Validator [1/3] : atest1v4ehgw36g56nws3jg3pnzdzxgccrvd3j -1: 1 | Validator [2/3] : xgunwse5xv6rzdzrgsunx33589qngd35x9zrvd -1: 1 | Validator [3/3] : 3heqphwc -1: 2 | Timestamp : 2023-06-13 18:04:55.596721751 UTC -1: 3 | Pubkey [1/2] : 008cd8ee423546ee43cf7dd4ee51638557682e -1: 3 | Pubkey [2/2] : 045ec0303b8b8ce9e6714297e008 -1: 4 | Epoch : 1 -1: 5 | Gas limit : 0 -1: 6 | Fees : NAM 100.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Withdraw_0 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Withdraw_1 -1: -1: 0 | Code hash [1/2] : f7a3acf046f3c216eaf4c6827a3f91433dac58 -1: 0 | Code hash [2/2] : 05d82f2d6ad7bdf1574d504140 -1: 1 | Validator [1/3] : atest1v4ehgw36xumnxsj9gguyxdpkxvcngs3e -1: 1 | Validator [2/3] : g4q5vvzpgdp5gwpjxqcrwvf3gccnqdzrgfrr2d -1: 1 | Validator [3/3] : jyuetzra -1: 2 | Timestamp : 2023-06-19 11:09:52.873983344 UTC -1: 3 | Pubkey [1/2] : 00d9458d9ae70b725813fd13be8c26febd094b -1: 3 | Pubkey [2/2] : b5a3f81654ddcd8416e45fc2b373 -1: 4 | Epoch : 1 -1: 5 | Gas limit : 0 -1: 6 | Fees : NAM 100.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Withdraw_1 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Withdraw_2 -1: -1: 0 | Code hash [1/2] : f7a3acf046f3c216eaf4c6827a3f91433dac58 -1: 0 | Code hash [2/2] : 05d82f2d6ad7bdf1574d504140 -1: 1 | Validator [1/3] : atest1v4ehgw36gvmyy3jyxs65vd69gsu5vdzy -1: 1 | Validator [2/3] : g5urv3pngscyz3pjxscnjwz9gy6rw3z9xdz5v3 -1: 1 | Validator [3/3] : pjksl96e -1: 2 | Timestamp : 2023-06-19 12:56:05.746298449 UTC -1: 3 | Pubkey [1/2] : 00bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0 -1: 3 | Pubkey [2/2] : b4612d4d8cc517e92682205a7477 -1: 4 | Epoch : 2 -1: 5 | Gas limit : 0 -1: 6 | Fees : NAM 100.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Withdraw_2 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Unbond_0 -1: -1: 0 | Code hash [1/2] : 7c1851534a76b7b33516eb4897548bc54573e1 -1: 0 | Code hash [2/2] : c4792db1e695967a19a8c64848 -1: 1 | Validator [1/3] : atest1v4ehgw36xqeyzdjpxyu5yvf4xdqnwwps -1: 1 | Validator [2/3] : xcc5vv3hxu6njwfsxgurq334gvmn2vjpgerrxd -1: 1 | Validator [3/3] : 2rny0fga -1: 2 | Amount : NAM 5.0 -1: 3 | Timestamp : 2023-06-13 18:04:50.611679830 UTC -1: 4 | Pubkey [1/2] : 0030b40d3dd095dfeee4c4f57a03c100858df1 -1: 4 | Pubkey [2/2] : 000dd615f647e13c7d2c8482f55f -1: 5 | Epoch : 1 -1: 6 | Gas limit : 0 -1: 7 | Fees : NAM 100.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Unbond_0 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Unbond_1 -1: -1: 0 | Code hash [1/2] : 7c1851534a76b7b33516eb4897548bc54573e1 -1: 0 | Code hash [2/2] : c4792db1e695967a19a8c64848 -1: 1 | Validator [1/3] : atest1v4ehgw36g5mnywp3xvcrxsesxve5vs35 -1: 1 | Validator [2/3] : xpznjven8qmrqse5xdp52sehxcenv32yxyen23 -1: 1 | Validator [3/3] : psmfq3rl -1: 2 | Amount : NAM 5.0 -1: 3 | Timestamp : 2023-06-19 11:09:48.286269366 UTC -1: 4 | Pubkey [1/2] : 00d92250d7017975b5e2a1dafca8aa230fb131 -1: 4 | Pubkey [2/2] : 232878a227c4713a149b3fab16f2 -1: 5 | Epoch : 1 -1: 6 | Gas limit : 0 -1: 7 | Fees : NAM 100.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Unbond_1 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Unbond_2 -1: -1: 0 | Code hash [1/2] : 7c1851534a76b7b33516eb4897548bc54573e1 -1: 0 | Code hash [2/2] : c4792db1e695967a19a8c64848 -1: 1 | Validator [1/3] : atest1v4ehgw36ggmyzvehxfpnwv2xxdpnsvek -1: 1 | Validator [2/3] : xccryd2pxdzrzvehxfprj3fexezyzdfsxuunyv -1: 1 | Validator [3/3] : jxt2vu2r -1: 2 | Amount : NAM 5.0 -1: 3 | Timestamp : 2023-06-19 12:56:02.102135576 UTC -1: 4 | Pubkey [1/2] : 00660a067bd53d3af5b8e1b63adacecb2bcace -1: 4 | Pubkey [2/2] : cf3668c85dec22bdb0934deaeda2 -1: 5 | Epoch : 1 -1: 6 | Gas limit : 0 -1: 7 | Fees : NAM 100.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Unbond_2 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Init_Validator_0 -1: -1: 0 | Code hash [1/2] : 4703716233738ee20e161d5b8f1ae856f7096f -1: 0 | Code hash [2/2] : 5142e28bbd79e5ede9b86f9c56 -1: 1 | Account key [1/2] : 009b71ace52f0e7884f21db208a55354fdbb6b -1: 1 | Account key [2/2] : 85c965e629e2bc6ac5c5fc609a2a -1: 2 | Consensus key [1/2] : 0019920adf7b836381b48bdc7d0dae29cff3a9 -1: 2 | Consensus key [2/2] : 44304b55a54cc59adf879b67c5fc -1: 3 | Protocol key [1/2] : 00c560e9a8c963d1dc32bff13ff2f147586869 -1: 3 | Protocol key [2/2] : 9a884add8ad31fa5d906f209c888 -1: 4 | DKG key [1/6] : 6000000005b8e49ca7c6bf63ca8adcfd4e365b -1: 4 | DKG key [2/6] : d5e1c683b53bc293ee410e7d3f47677250cfd8 -1: 4 | DKG key [3/6] : 2dc167df6d249203445e5a28930937c985a6ba -1: 4 | DKG key [4/6] : 06c3d9198185a2ee1cdb6979ea5570c3546126 -1: 4 | DKG key [5/6] : d536e485295e1409507bf581c988d09032578b -1: 4 | DKG key [6/6] : 590f869589 -1: 5 | Commission rate : 0.05 -1: 6 | Maximum commission rate change : 0.01 -1: 7 | Validator VP type [1/2] : a464a5b93a5827e2c0eea0edb37b16c829676f -1: 7 | Validator VP type [2/2] : e7879fcc36e872c4a40badf10d -1: 8 | Timestamp : 2023-06-13 18:04:45.887757782 UTC -1: 9 | Pubkey [1/2] : 00d04d39252f8f76ee4ce7ff1ce846f45d9bb0 -1: 9 | Pubkey [2/2] : aa4b84e10e7ee96382958f4c9d3a -1: 10 | Epoch : 1 -1: 11 | Gas limit : 0 -1: 12 | Fees : NAM 100.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Init_Validator_0 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Init_Validator_1 -1: -1: 0 | Code hash [1/2] : 4703716233738ee20e161d5b8f1ae856f7096f -1: 0 | Code hash [2/2] : 5142e28bbd79e5ede9b86f9c56 -1: 1 | Account key [1/2] : 001ea4e07a73edff32c5c4180412a007aa4078 -1: 1 | Account key [2/2] : 95f84fd20203f6867c7eba12b533 -1: 2 | Consensus key [1/2] : 005b1096c50642388c69a740fd31e1537971ad -1: 2 | Consensus key [2/2] : b27e07876bef6d57ef1585a6ada0 -1: 3 | Protocol key [1/2] : 0048bfd36ab9fbbdd6db60bc363d5196ec91f7 -1: 3 | Protocol key [2/2] : ae47bc688d6c3f5d012ff82f60b0 -1: 4 | DKG key [1/6] : 60000000be9ef2789e87afc5dd50566484b4dd -1: 4 | DKG key [2/6] : 6fc64beda8a33001a7cca96c71de94f11cc16f -1: 4 | DKG key [3/6] : a02a1ae31af5f247e4761a7819191dcb07567e -1: 4 | DKG key [4/6] : 488607758459724bba2e54f66801b6221e6a8b -1: 4 | DKG key [5/6] : 30107ca1e54a84cdb871b81b1bae6f4ff2753d -1: 4 | DKG key [6/6] : 4184c80008 -1: 5 | Commission rate : 0.05 -1: 6 | Maximum commission rate change : 0.01 -1: 7 | Validator VP type [1/2] : a464a5b93a5827e2c0eea0edb37b16c829676f -1: 7 | Validator VP type [2/2] : e7879fcc36e872c4a40badf10d -1: 8 | Timestamp : 2023-06-19 11:09:43.902064087 UTC -1: 9 | Pubkey [1/2] : 00a99a391a750acf6424a3b0a0aaa3f2c8f379 -1: 9 | Pubkey [2/2] : f24cabaaeb2c23408f024e952de8 -1: 10 | Epoch : 1 -1: 11 | Gas limit : 0 -1: 12 | Fees : NAM 100.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Init_Validator_1 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Init_Validator_2 -1: -1: 0 | Code hash [1/2] : 4703716233738ee20e161d5b8f1ae856f7096f -1: 0 | Code hash [2/2] : 5142e28bbd79e5ede9b86f9c56 -1: 1 | Account key [1/2] : 00192c084fc9cd3432b08b5745bcdc5f5eb6f3 -1: 1 | Account key [2/2] : 03158aebd0b37c4d1b968e6f86b3 -1: 2 | Consensus key [1/2] : 007f58fff171179823d58a6abd4a1b7218a14f -1: 2 | Consensus key [2/2] : e2cb5a13096435204e695f74f02e -1: 3 | Protocol key [1/2] : 00faad2ea24a47bda7c85514d6b9ee03f6110b -1: 3 | Protocol key [2/2] : 94bc41438c6049d35bd52396d8a0 -1: 4 | DKG key [1/6] : 6000000057680d3693d9f2cfddd5776af31b78 -1: 4 | DKG key [2/6] : 5383c395aa3035216d9fec466f7b3060add8d7 -1: 4 | DKG key [3/6] : cb59a692e4b020fa2861fb6857142cc25467ea -1: 4 | DKG key [4/6] : 04985018b37c80a67a9873dca721e92c0c754d -1: 4 | DKG key [5/6] : 5e4769cf3bce0adbe3d0269a4a50df5d3b2074 -1: 4 | DKG key [6/6] : 3bd38fc88a -1: 5 | Commission rate : 0.05 -1: 6 | Maximum commission rate change : 0.01 -1: 7 | Validator VP type [1/2] : a464a5b93a5827e2c0eea0edb37b16c829676f -1: 7 | Validator VP type [2/2] : e7879fcc36e872c4a40badf10d -1: 8 | Timestamp : 2023-06-19 12:55:58.406266035 UTC -1: 9 | Pubkey [1/2] : 00ef8ffbbcf933342a6ba57bc159e222c7d127 -1: 9 | Pubkey [2/2] : df1fe1ce8fa0a8dbf1f062ee6ed1 -1: 10 | Epoch : 1 -1: 11 | Gas limit : 0 -1: 12 | Fees : NAM 100.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Init_Validator_2 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Init_Proposal_0 -1: -1: 0 | Code hash [1/2] : 659faad0bf46b689cea06b4d31040ca230db1b -1: 0 | Code hash [2/2] : 0096e8640e40ad57434c9d4b16 -1: 1 | Author [1/3] : atest1v4ehgw36xumnxsj9gguyxdpkxvcngs3e -1: 1 | Author [2/3] : g4q5vvzpgdp5gwpjxqcrwvf3gccnqdzrgfrr2d -1: 1 | Author [3/3] : jyuetzra -1: 2 | Voting start epoch : 12 -1: 3 | Voting end epoch : 24 -1: 4 | Grace epoch : 30 -1: 5 | Content [1/2] : f8073848db6037887e84e03602dac5ade844fa -1: 5 | Content [2/2] : 48e984c072931c7cdf7cdf0c97 -1: 6 | Timestamp : 2023-06-19 11:08:39.766009196 UTC -1: 7 | Pubkey [1/2] : 00d9458d9ae70b725813fd13be8c26febd094b -1: 7 | Pubkey [2/2] : b5a3f81654ddcd8416e45fc2b373 -1: 8 | Epoch : 1 -1: 9 | Gas limit : 0 -1: 10 | Fees : NAM 100.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Init_Proposal_0 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Init_Proposal_1 -1: -1: 0 | Code hash [1/2] : 659faad0bf46b689cea06b4d31040ca230db1b -1: 0 | Code hash [2/2] : 0096e8640e40ad57434c9d4b16 -1: 1 | Author [1/3] : atest1v4ehgw36gvmyy3jyxs65vd69gsu5vdzy -1: 1 | Author [2/3] : g5urv3pngscyz3pjxscnjwz9gy6rw3z9xdz5v3 -1: 1 | Author [3/3] : pjksl96e -1: 2 | Voting start epoch : 12 -1: 3 | Voting end epoch : 24 -1: 4 | Grace epoch : 30 -1: 5 | Content [1/2] : 08b9d5dcf5dd094d46d6a401fc62e61893f691 -1: 5 | Content [2/2] : 622c08207028a8e7b89a279e5b -1: 6 | Timestamp : 2023-06-19 12:54:35.506068554 UTC -1: 7 | Pubkey [1/2] : 00bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0 -1: 7 | Pubkey [2/2] : b4612d4d8cc517e92682205a7477 -1: 8 | Epoch : 1 -1: 9 | Gas limit : 0 -1: 10 | Fees : NAM 100.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Init_Proposal_1 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Init_Proposal_2 -1: -1: 0 | Code hash [1/2] : 659faad0bf46b689cea06b4d31040ca230db1b -1: 0 | Code hash [2/2] : 0096e8640e40ad57434c9d4b16 -1: 1 | Author [1/3] : atest1v4ehgw36gvmyy3jyxs65vd69gsu5vdzy -1: 1 | Author [2/3] : g5urv3pngscyz3pjxscnjwz9gy6rw3z9xdz5v3 -1: 1 | Author [3/3] : pjksl96e -1: 2 | Voting start epoch : 12 -1: 3 | Voting end epoch : 24 -1: 4 | Grace epoch : 30 -1: 5 | Content [1/2] : f34c7c8ef99934a54da19a1698118fbd351706 -1: 5 | Content [2/2] : 13249ee369a5969a30d1d6dbb0 -1: 6 | Timestamp : 2023-06-19 12:55:06.798469298 UTC -1: 7 | Pubkey [1/2] : 00bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0 -1: 7 | Pubkey [2/2] : b4612d4d8cc517e92682205a7477 -1: 8 | Epoch : 1 -1: 9 | Gas limit : 0 -1: 10 | Fees : NAM 100.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Init_Proposal_2 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Init_Proposal_3 -1: -1: 0 | Code hash [1/2] : 659faad0bf46b689cea06b4d31040ca230db1b -1: 0 | Code hash [2/2] : 0096e8640e40ad57434c9d4b16 -1: 1 | Author [1/3] : atest1v4ehgw36gvmyy3jyxs65vd69gsu5vdzy -1: 1 | Author [2/3] : g5urv3pngscyz3pjxscnjwz9gy6rw3z9xdz5v3 -1: 1 | Author [3/3] : pjksl96e -1: 2 | Voting start epoch : 12 -1: 3 | Voting end epoch : 24 -1: 4 | Grace epoch : 30 -1: 5 | Content [1/2] : 99076284e6bf18b016166cecec783f0af9caf8 -1: 5 | Content [2/2] : 2580137304f316d131ee9d33a7 -1: 6 | Timestamp : 2023-06-19 12:55:19.202655027 UTC -1: 7 | Pubkey [1/2] : 00bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0 -1: 7 | Pubkey [2/2] : b4612d4d8cc517e92682205a7477 -1: 8 | Epoch : 1 -1: 9 | Gas limit : 0 -1: 10 | Fees : NAM 100.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Init_Proposal_3 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Init_Proposal_4 -1: -1: 0 | Code hash [1/2] : 659faad0bf46b689cea06b4d31040ca230db1b -1: 0 | Code hash [2/2] : 0096e8640e40ad57434c9d4b16 -1: 1 | Author [1/3] : atest1v4ehgw36gvmyy3jyxs65vd69gsu5vdzy -1: 1 | Author [2/3] : g5urv3pngscyz3pjxscnjwz9gy6rw3z9xdz5v3 -1: 1 | Author [3/3] : pjksl96e -1: 2 | Voting start epoch : 12 -1: 3 | Voting end epoch : 24 -1: 4 | Grace epoch : 30 -1: 5 | Content [1/2] : 4d07ce9751a42ab7038b59f3da52844b8b52e9 -1: 5 | Content [2/2] : 6e449b8322286b7c06f323e263 -1: 6 | Timestamp : 2023-06-19 12:55:23.282281601 UTC -1: 7 | Pubkey [1/2] : 00bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0 -1: 7 | Pubkey [2/2] : b4612d4d8cc517e92682205a7477 -1: 8 | Epoch : 1 -1: 9 | Gas limit : 0 -1: 10 | Fees : NAM 100.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Init_Proposal_4 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Vote_Proposal_Nay -1: -1: 0 | ID : 0 -1: 1 | Vote : nay -1: 2 | Voter [1/3] : atest1v4ehgw36xeznxv6zxpprqvp5x5myvd34 -1: 2 | Voter [2/3] : xerrzv6rg9qnqs34xy6nxs3jx9py2df3xppngd -1: 2 | Voter [3/3] : 345p5atp -1: 3 | Voter [1/3] : atest1v4ehgw36xeznxv6zxpprqvp5x5myvd34 -1: 3 | Voter [2/3] : xerrzv6rg9qnqs34xy6nxs3jx9py2df3xppngd -1: 3 | Voter [3/3] : 345p5atp -1: 4 | Timestamp : 2023-06-16 13:10:37.228571980 UTC -1: 5 | Pubkey [1/2] : 00d52a4b6c502bc42a2ad3e67ba860491500ad -1: 5 | Pubkey [2/2] : 438071746c57bc060847ddf653bd -1: 6 | Epoch : 26 -1: 7 | Gas limit : 0 -1: 8 | Fees : NAM 100.0 -1: -1: -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:120: Failure -1: Expected equality of these values: -1: output.size() -1: Which is: 14 -1: expected.size() -1: Which is: 13 -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "0 | Code hash [1/2] : 269ed92fd7e68af006b95f1f4b9a911c0cf51a" -1: Actual: "0 | ID : 0" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "0 | Code hash [2/2] : 2d6056b3c0619e10e8fd0ee272" -1: Actual: "1 | Vote : nay" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "1 | ID : 0" -1: Actual: "2 | Voter [1/3] : atest1v4ehgw36xeznxv6zxpprqvp5x5myvd34" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "2 | Vote : nay" -1: Actual: "2 | Voter [2/3] : xerrzv6rg9qnqs34xy6nxs3jx9py2df3xppngd" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "3 | Voter [1/3] : atest1v4ehgw36xeznxv6zxpprqvp5x5myvd34" -1: Actual: "2 | Voter [3/3] : 345p5atp" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "3 | Voter [2/3] : xerrzv6rg9qnqs34xy6nxs3jx9py2df3xppngd" -1: Actual: "3 | Voter [1/3] : atest1v4ehgw36xeznxv6zxpprqvp5x5myvd34" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "3 | Voter [3/3] : 345p5atp" -1: Actual: "3 | Voter [2/3] : xerrzv6rg9qnqs34xy6nxs3jx9py2df3xppngd" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "4 | Timestamp : 2023-06-16 13:10:37.228571980 UTC" -1: Actual: "3 | Voter [3/3] : 345p5atp" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "5 | Pubkey [1/2] : 00d52a4b6c502bc42a2ad3e67ba860491500ad" -1: Actual: "4 | Timestamp : 2023-06-16 13:10:37.228571980 UTC" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "5 | Pubkey [2/2] : 438071746c57bc060847ddf653bd" -1: Actual: "5 | Pubkey [1/2] : 00d52a4b6c502bc42a2ad3e67ba860491500ad" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "6 | Epoch : 26" -1: Actual: "5 | Pubkey [2/2] : 438071746c57bc060847ddf653bd" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "7 | Gas limit : 0" -1: Actual: "6 | Epoch : 26" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "8 | Fees : NAM 100.0" -1: Actual: "7 | Gas limit : 0" -1: [ FAILED ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Vote_Proposal_Nay, where GetParam() = 104-byte object <00-00 00-00 00-00 00-00 56-6F 74-65 5F-50 72-6F 70-6F 73-61 6C-5F 4E-61 79-00 00-00 00-00 00-11 00-78 85-42 01-00 00-00 10-06 00-00 00-00 00-00 20-06 00-00 00-00 00-80 10-C1 66-42 01-00 00-00 A0-C1 66-42 01-00 00-00 A0-C1 66-42 01-00 00-00 E0-9A 66-42 01-00 00-00 18-9C 66-42 01-00 00-00 18-9C 66-42 01-00 00-00> (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Vote_Proposal_Yay -1: -1: 0 | ID : 0 -1: 1 | Vote : yay -1: 2 | Voter [1/3] : atest1v4ehgw36xdqngd3ex4zn2wfnxarrzwzx -1: 2 | Voter [2/3] : g3qnswzzgvur2dp4g3p5vvzpx3pn2dpsxs6r2v -1: 2 | Voter [3/3] : 6ruyw9dk -1: 3 | Voter [1/3] : atest1v4ehgw36xdqngd3ex4zn2wfnxarrzwzx -1: 3 | Voter [2/3] : g3qnswzzgvur2dp4g3p5vvzpx3pn2dpsxs6r2v -1: 3 | Voter [3/3] : 6ruyw9dk -1: 4 | Timestamp : 2023-06-16 13:10:41.020160946 UTC -1: 5 | Pubkey [1/2] : 006b4bdfc5ae6f3460323b355fb87d8caaef55 -1: 5 | Pubkey [2/2] : 4b8bb8dcb7c9bba59e9e4d67b83e -1: 6 | Epoch : 26 -1: 7 | Gas limit : 0 -1: 8 | Fees : NAM 100.0 -1: -1: -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:120: Failure -1: Expected equality of these values: -1: output.size() -1: Which is: 14 -1: expected.size() -1: Which is: 13 -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "0 | Code hash [1/2] : 269ed92fd7e68af006b95f1f4b9a911c0cf51a" -1: Actual: "0 | ID : 0" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "0 | Code hash [2/2] : 2d6056b3c0619e10e8fd0ee272" -1: Actual: "1 | Vote : yay" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "1 | ID : 0" -1: Actual: "2 | Voter [1/3] : atest1v4ehgw36xdqngd3ex4zn2wfnxarrzwzx" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "2 | Vote : yay" -1: Actual: "2 | Voter [2/3] : g3qnswzzgvur2dp4g3p5vvzpx3pn2dpsxs6r2v" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "3 | Voter [1/3] : atest1v4ehgw36xdqngd3ex4zn2wfnxarrzwzx" -1: Actual: "2 | Voter [3/3] : 6ruyw9dk" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "3 | Voter [2/3] : g3qnswzzgvur2dp4g3p5vvzpx3pn2dpsxs6r2v" -1: Actual: "3 | Voter [1/3] : atest1v4ehgw36xdqngd3ex4zn2wfnxarrzwzx" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "3 | Voter [3/3] : 6ruyw9dk" -1: Actual: "3 | Voter [2/3] : g3qnswzzgvur2dp4g3p5vvzpx3pn2dpsxs6r2v" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "4 | Timestamp : 2023-06-16 13:10:41.020160946 UTC" -1: Actual: "3 | Voter [3/3] : 6ruyw9dk" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "5 | Pubkey [1/2] : 006b4bdfc5ae6f3460323b355fb87d8caaef55" -1: Actual: "4 | Timestamp : 2023-06-16 13:10:41.020160946 UTC" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "5 | Pubkey [2/2] : 4b8bb8dcb7c9bba59e9e4d67b83e" -1: Actual: "5 | Pubkey [1/2] : 006b4bdfc5ae6f3460323b355fb87d8caaef55" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "6 | Epoch : 26" -1: Actual: "5 | Pubkey [2/2] : 4b8bb8dcb7c9bba59e9e4d67b83e" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "7 | Gas limit : 0" -1: Actual: "6 | Epoch : 26" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "8 | Fees : NAM 100.0" -1: Actual: "7 | Gas limit : 0" -1: [ FAILED ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Vote_Proposal_Yay, where GetParam() = 104-byte object <00-00 00-00 00-00 00-00 56-6F 74-65 5F-50 72-6F 70-6F 73-61 6C-5F 59-61 79-00 00-00 00-00 00-11 00-78 85-42 01-00 00-00 34-06 00-00 00-00 00-00 40-06 00-00 00-00 00-80 10-C1 66-42 01-00 00-00 A0-C1 66-42 01-00 00-00 A0-C1 66-42 01-00 00-00 E0-9A 66-42 01-00 00-00 18-9C 66-42 01-00 00-00 18-9C 66-42 01-00 00-00> (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Vote_Proposal_Nay_with_Delegations -1: -1: 0 | ID : 0 -1: 1 | Vote : nay -1: 2 | Voter [1/3] : atest1v4ehgw36xsey2wzrgcc5ydzpxqeryvf4 -1: 2 | Voter [2/3] : g9znvv3jxvuyzdphxuuyvs3jxumy233e8qerzs -1: 2 | Voter [3/3] : ecdvt2tj -1: 3 | Voter [1/3] : atest1v4ehgw36xsey2wzrgcc5ydzpxqeryvf4 -1: 3 | Voter [2/3] : g9znvv3jxvuyzdphxuuyvs3jxumy233e8qerzs -1: 3 | Voter [3/3] : ecdvt2tj -1: 4 | Delegations [1/3] : atest1v4ehgw36x5m5g33sxvunz32rg3znxwfj -1: 4 | Delegations [2/3] : xppnjvjygyens3f5gezrww2xgfznzse3x4q5vv -1: 4 | Delegations [3/3] : 3nss6z3p -1: 5 | Timestamp : 2023-06-19 11:08:44.206113299 UTC -1: 6 | Pubkey [1/2] : 00a99a391a750acf6424a3b0a0aaa3f2c8f379 -1: 6 | Pubkey [2/2] : f24cabaaeb2c23408f024e952de8 -1: 7 | Epoch : 1 -1: 8 | Gas limit : 0 -1: 9 | Fees : NAM 100.0 -1: -1: -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:120: Failure -1: Expected equality of these values: -1: output.size() -1: Which is: 17 -1: expected.size() -1: Which is: 16 -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "0 | Code hash [1/2] : 269ed92fd7e68af006b95f1f4b9a911c0cf51a" -1: Actual: "0 | ID : 0" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "0 | Code hash [2/2] : 2d6056b3c0619e10e8fd0ee272" -1: Actual: "1 | Vote : nay" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "1 | ID : 0" -1: Actual: "2 | Voter [1/3] : atest1v4ehgw36xsey2wzrgcc5ydzpxqeryvf4" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "2 | Vote : nay" -1: Actual: "2 | Voter [2/3] : g9znvv3jxvuyzdphxuuyvs3jxumy233e8qerzs" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "3 | Voter [1/3] : atest1v4ehgw36xsey2wzrgcc5ydzpxqeryvf4" -1: Actual: "2 | Voter [3/3] : ecdvt2tj" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "3 | Voter [2/3] : g9znvv3jxvuyzdphxuuyvs3jxumy233e8qerzs" -1: Actual: "3 | Voter [1/3] : atest1v4ehgw36xsey2wzrgcc5ydzpxqeryvf4" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "3 | Voter [3/3] : ecdvt2tj" -1: Actual: "3 | Voter [2/3] : g9znvv3jxvuyzdphxuuyvs3jxumy233e8qerzs" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "4 | Delegations [1/3] : atest1v4ehgw36x5m5g33sxvunz32rg3znxwfj" -1: Actual: "3 | Voter [3/3] : ecdvt2tj" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "4 | Delegations [2/3] : xppnjvjygyens3f5gezrww2xgfznzse3x4q5vv" -1: Actual: "4 | Delegations [1/3] : atest1v4ehgw36x5m5g33sxvunz32rg3znxwfj" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "4 | Delegations [3/3] : 3nss6z3p" -1: Actual: "4 | Delegations [2/3] : xppnjvjygyens3f5gezrww2xgfznzse3x4q5vv" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "5 | Timestamp : 2023-06-19 11:08:44.206113299 UTC" -1: Actual: "4 | Delegations [3/3] : 3nss6z3p" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "6 | Pubkey [1/2] : 00a99a391a750acf6424a3b0a0aaa3f2c8f379" -1: Actual: "5 | Timestamp : 2023-06-19 11:08:44.206113299 UTC" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "6 | Pubkey [2/2] : f24cabaaeb2c23408f024e952de8" -1: Actual: "6 | Pubkey [1/2] : 00a99a391a750acf6424a3b0a0aaa3f2c8f379" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "7 | Epoch : 1" -1: Actual: "6 | Pubkey [2/2] : f24cabaaeb2c23408f024e952de8" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "8 | Gas limit : 0" -1: Actual: "7 | Epoch : 1" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "9 | Fees : NAM 100.0" -1: Actual: "8 | Gas limit : 0" -1: [ FAILED ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Vote_Proposal_Nay_with_Delegations, where GetParam() = 104-byte object <00-00 00-00 00-00 00-00 D0-E7 66-42 01-00 00-00 22-00 00-00 00-00 00-00 30-00 00-00 00-00 00-80 00-78 85-42 01-00 00-00 6A-06 00-00 00-00 00-00 70-06 00-00 00-00 00-80 10-C1 66-42 01-00 00-00 E8-C1 66-42 01-00 00-00 E8-C1 66-42 01-00 00-00 E0-9A 66-42 01-00 00-00 60-9C 66-42 01-00 00-00 60-9C 66-42 01-00 00-00> (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Vote_Proposal_yay_1 -1: -1: 0 | ID : 0 -1: 1 | Vote : yay -1: 2 | Voter [1/3] : atest1v4ehgw36xumnxsj9gguyxdpkxvcngs3e -1: 2 | Voter [2/3] : g4q5vvzpgdp5gwpjxqcrwvf3gccnqdzrgfrr2d -1: 2 | Voter [3/3] : jyuetzra -1: 3 | Voter [1/3] : atest1v4ehgw36xumnxsj9gguyxdpkxvcngs3e -1: 3 | Voter [2/3] : g4q5vvzpgdp5gwpjxqcrwvf3gccnqdzrgfrr2d -1: 3 | Voter [3/3] : jyuetzra -1: 4 | Timestamp : 2023-06-19 11:08:47.977931937 UTC -1: 5 | Pubkey [1/2] : 00d9458d9ae70b725813fd13be8c26febd094b -1: 5 | Pubkey [2/2] : b5a3f81654ddcd8416e45fc2b373 -1: 6 | Epoch : 1 -1: 7 | Gas limit : 0 -1: 8 | Fees : NAM 100.0 -1: -1: -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:120: Failure -1: Expected equality of these values: -1: output.size() -1: Which is: 14 -1: expected.size() -1: Which is: 13 -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "0 | Code hash [1/2] : 269ed92fd7e68af006b95f1f4b9a911c0cf51a" -1: Actual: "0 | ID : 0" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "0 | Code hash [2/2] : 2d6056b3c0619e10e8fd0ee272" -1: Actual: "1 | Vote : yay" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "1 | ID : 0" -1: Actual: "2 | Voter [1/3] : atest1v4ehgw36xumnxsj9gguyxdpkxvcngs3e" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "2 | Vote : yay" -1: Actual: "2 | Voter [2/3] : g4q5vvzpgdp5gwpjxqcrwvf3gccnqdzrgfrr2d" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "3 | Voter [1/3] : atest1v4ehgw36xumnxsj9gguyxdpkxvcngs3e" -1: Actual: "2 | Voter [3/3] : jyuetzra" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "3 | Voter [2/3] : g4q5vvzpgdp5gwpjxqcrwvf3gccnqdzrgfrr2d" -1: Actual: "3 | Voter [1/3] : atest1v4ehgw36xumnxsj9gguyxdpkxvcngs3e" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "3 | Voter [3/3] : jyuetzra" -1: Actual: "3 | Voter [2/3] : g4q5vvzpgdp5gwpjxqcrwvf3gccnqdzrgfrr2d" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "4 | Timestamp : 2023-06-19 11:08:47.977931937 UTC" -1: Actual: "3 | Voter [3/3] : jyuetzra" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "5 | Pubkey [1/2] : 00d9458d9ae70b725813fd13be8c26febd094b" -1: Actual: "4 | Timestamp : 2023-06-19 11:08:47.977931937 UTC" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "5 | Pubkey [2/2] : b5a3f81654ddcd8416e45fc2b373" -1: Actual: "5 | Pubkey [1/2] : 00d9458d9ae70b725813fd13be8c26febd094b" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "6 | Epoch : 1" -1: Actual: "5 | Pubkey [2/2] : b5a3f81654ddcd8416e45fc2b373" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "7 | Gas limit : 0" -1: Actual: "6 | Epoch : 1" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "8 | Fees : NAM 100.0" -1: Actual: "7 | Gas limit : 0" -1: [ FAILED ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Vote_Proposal_yay_1, where GetParam() = 104-byte object <00-00 00-00 00-00 00-00 56-6F 74-65 5F-50 72-6F 70-6F 73-61 6C-5F 79-61 79-5F 31-00 00-00 00-13 00-78 85-42 01-00 00-00 34-06 00-00 00-00 00-00 40-06 00-00 00-00 00-80 90-18 61-42 01-00 00-00 20-19 61-42 01-00 00-00 20-19 61-42 01-00 00-00 E0-9A 66-42 01-00 00-00 18-9C 66-42 01-00 00-00 18-9C 66-42 01-00 00-00> (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Vote_Proposal_yay_with_councils_1 -1: -1: 0 | Code hash [1/2] : 269ed92fd7e68af006b95f1f4b9a911c0cf51a -1: 0 | Code hash [2/2] : 2d6056b3c0619e10e8fd0ee272 -1: 1 | ID : 2 -1: 2 | Vote [1/4] : yay with councils: -1: Council: atest1v4eh -1: 2 | Vote [2/4] : gw36xumnxsj9gguyxdpkxvcngs3eg4q5vvzpgd -1: 2 | Vote [3/4] : p5gwpjxqcrwvf3gccnqdzrgfrr2djyuetzra, -1: 2 | Vote [4/4] : spending cap: 0.0009 -1: 3 | Voter [1/3] : atest1v4ehgw36xsey2wzrgcc5ydzpxqeryvf4 -1: 3 | Voter [2/3] : g9znvv3jxvuyzdphxuuyvs3jxumy233e8qerzs -1: 3 | Voter [3/3] : ecdvt2tj -1: 4 | Delegations [1/3] : atest1v4ehgw36x5m5g33sxvunz32rg3znxwfj -1: 4 | Delegations [2/3] : xppnjvjygyens3f5gezrww2xgfznzse3x4q5vv -1: 4 | Delegations [3/3] : 3nss6z3p -1: 5 | Timestamp : 2023-06-19 11:09:20.443572774 UTC -1: 6 | Pubkey [1/2] : 00a99a391a750acf6424a3b0a0aaa3f2c8f379 -1: 6 | Pubkey [2/2] : f24cabaaeb2c23408f024e952de8 -1: 7 | Epoch : 1 -1: 8 | Gas limit : 0 -1: 9 | Fees : NAM 100.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Vote_Proposal_yay_with_councils_1 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Vote_Proposal_yay_with_councils_2 -1: -1: 0 | Code hash [1/2] : 269ed92fd7e68af006b95f1f4b9a911c0cf51a -1: 0 | Code hash [2/2] : 2d6056b3c0619e10e8fd0ee272 -1: 1 | ID : 3 -1: 2 | Vote [1/4] : yay with councils: -1: Council: atest1v4eh -1: 2 | Vote [2/4] : gw36xumnxsj9gguyxdpkxvcngs3eg4q5vvzpgd -1: 2 | Vote [3/4] : p5gwpjxqcrwvf3gccnqdzrgfrr2djyuetzra, -1: 2 | Vote [4/4] : spending cap: 0.0009 -1: 3 | Voter [1/3] : atest1v4ehgw36xsey2wzrgcc5ydzpxqeryvf4 -1: 3 | Voter [2/3] : g9znvv3jxvuyzdphxuuyvs3jxumy233e8qerzs -1: 3 | Voter [3/3] : ecdvt2tj -1: 4 | Delegations [1/3] : atest1v4ehgw36x5m5g33sxvunz32rg3znxwfj -1: 4 | Delegations [2/3] : xppnjvjygyens3f5gezrww2xgfznzse3x4q5vv -1: 4 | Delegations [3/3] : 3nss6z3p -1: 5 | Timestamp : 2023-06-19 11:09:25.110004019 UTC -1: 6 | Pubkey [1/2] : 00a99a391a750acf6424a3b0a0aaa3f2c8f379 -1: 6 | Pubkey [2/2] : f24cabaaeb2c23408f024e952de8 -1: 7 | Epoch : 1 -1: 8 | Gas limit : 0 -1: 9 | Fees : NAM 100.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Vote_Proposal_yay_with_councils_2 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Vote_Proposal_Nay_2 -1: -1: 0 | ID : 0 -1: 1 | Vote : nay -1: 2 | Voter [1/3] : atest1v4ehgw36xser2d69gdz5xseexv6rwvej -1: 2 | Voter [2/3] : xdpyyvenx5erswphggeyxwpegccygv6p8quygv -1: 2 | Voter [3/3] : jp4gcn9a -1: 3 | Voter [1/3] : atest1v4ehgw36xser2d69gdz5xseexv6rwvej -1: 3 | Voter [2/3] : xdpyyvenx5erswphggeyxwpegccygv6p8quygv -1: 3 | Voter [3/3] : jp4gcn9a -1: 4 | Delegations [1/3] : atest1v4ehgw36xyenqdf4g5urzve5g5cnwvp3 -1: 4 | Delegations [2/3] : g3qnwvesxqursd6xgvurwdjrgdry23p5xcuryd -1: 4 | Delegations [3/3] : 69jx6t2q -1: 5 | Timestamp : 2023-06-19 12:54:40.838003677 UTC -1: 6 | Pubkey [1/2] : 00ef8ffbbcf933342a6ba57bc159e222c7d127 -1: 6 | Pubkey [2/2] : df1fe1ce8fa0a8dbf1f062ee6ed1 -1: 7 | Epoch : 1 -1: 8 | Gas limit : 0 -1: 9 | Fees : NAM 100.0 -1: -1: -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:120: Failure -1: Expected equality of these values: -1: output.size() -1: Which is: 17 -1: expected.size() -1: Which is: 16 -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "0 | Code hash [1/2] : 269ed92fd7e68af006b95f1f4b9a911c0cf51a" -1: Actual: "0 | ID : 0" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "0 | Code hash [2/2] : 2d6056b3c0619e10e8fd0ee272" -1: Actual: "1 | Vote : nay" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "1 | ID : 0" -1: Actual: "2 | Voter [1/3] : atest1v4ehgw36xser2d69gdz5xseexv6rwvej" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "2 | Vote : nay" -1: Actual: "2 | Voter [2/3] : xdpyyvenx5erswphggeyxwpegccygv6p8quygv" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "3 | Voter [1/3] : atest1v4ehgw36xser2d69gdz5xseexv6rwvej" -1: Actual: "2 | Voter [3/3] : jp4gcn9a" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "3 | Voter [2/3] : xdpyyvenx5erswphggeyxwpegccygv6p8quygv" -1: Actual: "3 | Voter [1/3] : atest1v4ehgw36xser2d69gdz5xseexv6rwvej" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "3 | Voter [3/3] : jp4gcn9a" -1: Actual: "3 | Voter [2/3] : xdpyyvenx5erswphggeyxwpegccygv6p8quygv" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "4 | Delegations [1/3] : atest1v4ehgw36xyenqdf4g5urzve5g5cnwvp3" -1: Actual: "3 | Voter [3/3] : jp4gcn9a" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "4 | Delegations [2/3] : g3qnwvesxqursd6xgvurwdjrgdry23p5xcuryd" -1: Actual: "4 | Delegations [1/3] : atest1v4ehgw36xyenqdf4g5urzve5g5cnwvp3" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "4 | Delegations [3/3] : 69jx6t2q" -1: Actual: "4 | Delegations [2/3] : g3qnwvesxqursd6xgvurwdjrgdry23p5xcuryd" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "5 | Timestamp : 2023-06-19 12:54:40.838003677 UTC" -1: Actual: "4 | Delegations [3/3] : 69jx6t2q" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "6 | Pubkey [1/2] : 00ef8ffbbcf933342a6ba57bc159e222c7d127" -1: Actual: "5 | Timestamp : 2023-06-19 12:54:40.838003677 UTC" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "6 | Pubkey [2/2] : df1fe1ce8fa0a8dbf1f062ee6ed1" -1: Actual: "6 | Pubkey [1/2] : 00ef8ffbbcf933342a6ba57bc159e222c7d127" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "7 | Epoch : 1" -1: Actual: "6 | Pubkey [2/2] : df1fe1ce8fa0a8dbf1f062ee6ed1" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "8 | Gas limit : 0" -1: Actual: "7 | Epoch : 1" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "9 | Fees : NAM 100.0" -1: Actual: "8 | Gas limit : 0" -1: [ FAILED ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Vote_Proposal_Nay_2, where GetParam() = 104-byte object <00-00 00-00 00-00 00-00 56-6F 74-65 5F-50 72-6F 70-6F 73-61 6C-5F 4E-61 79-5F 32-00 00-00 00-13 00-78 85-42 01-00 00-00 6A-06 00-00 00-00 00-00 70-06 00-00 00-00 00-80 10-44 61-42 01-00 00-00 E8-44 61-42 01-00 00-00 E8-44 61-42 01-00 00-00 D0-1A 61-42 01-00 00-00 50-1C 61-42 01-00 00-00 50-1C 61-42 01-00 00-00> (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Vote_Proposal_Yay_2 -1: -1: 0 | ID : 0 -1: 1 | Vote : yay -1: 2 | Voter [1/3] : atest1v4ehgw36gvmyy3jyxs65vd69gsu5vdzy -1: 2 | Voter [2/3] : g5urv3pngscyz3pjxscnjwz9gy6rw3z9xdz5v3 -1: 2 | Voter [3/3] : pjksl96e -1: 3 | Voter [1/3] : atest1v4ehgw36gvmyy3jyxs65vd69gsu5vdzy -1: 3 | Voter [2/3] : g5urv3pngscyz3pjxscnjwz9gy6rw3z9xdz5v3 -1: 3 | Voter [3/3] : pjksl96e -1: 4 | Timestamp : 2023-06-19 12:54:44.525957298 UTC -1: 5 | Pubkey [1/2] : 00bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0 -1: 5 | Pubkey [2/2] : b4612d4d8cc517e92682205a7477 -1: 6 | Epoch : 1 -1: 7 | Gas limit : 0 -1: 8 | Fees : NAM 100.0 -1: -1: -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:120: Failure -1: Expected equality of these values: -1: output.size() -1: Which is: 14 -1: expected.size() -1: Which is: 13 -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "0 | Code hash [1/2] : 269ed92fd7e68af006b95f1f4b9a911c0cf51a" -1: Actual: "0 | ID : 0" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "0 | Code hash [2/2] : 2d6056b3c0619e10e8fd0ee272" -1: Actual: "1 | Vote : yay" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "1 | ID : 0" -1: Actual: "2 | Voter [1/3] : atest1v4ehgw36gvmyy3jyxs65vd69gsu5vdzy" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "2 | Vote : yay" -1: Actual: "2 | Voter [2/3] : g5urv3pngscyz3pjxscnjwz9gy6rw3z9xdz5v3" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "3 | Voter [1/3] : atest1v4ehgw36gvmyy3jyxs65vd69gsu5vdzy" -1: Actual: "2 | Voter [3/3] : pjksl96e" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "3 | Voter [2/3] : g5urv3pngscyz3pjxscnjwz9gy6rw3z9xdz5v3" -1: Actual: "3 | Voter [1/3] : atest1v4ehgw36gvmyy3jyxs65vd69gsu5vdzy" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "3 | Voter [3/3] : pjksl96e" -1: Actual: "3 | Voter [2/3] : g5urv3pngscyz3pjxscnjwz9gy6rw3z9xdz5v3" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "4 | Timestamp : 2023-06-19 12:54:44.525957298 UTC" -1: Actual: "3 | Voter [3/3] : pjksl96e" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "5 | Pubkey [1/2] : 00bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0" -1: Actual: "4 | Timestamp : 2023-06-19 12:54:44.525957298 UTC" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "5 | Pubkey [2/2] : b4612d4d8cc517e92682205a7477" -1: Actual: "5 | Pubkey [1/2] : 00bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "6 | Epoch : 1" -1: Actual: "5 | Pubkey [2/2] : b4612d4d8cc517e92682205a7477" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "7 | Gas limit : 0" -1: Actual: "6 | Epoch : 1" -1: /Users/ftheirs/Repositories/ledger-namada/tests/ui_tests.cpp:123: Failure -1: Value of: output[i] -1: Expected: is equal to "8 | Fees : NAM 100.0" -1: Actual: "7 | Gas limit : 0" -1: [ FAILED ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Vote_Proposal_Yay_2, where GetParam() = 104-byte object <00-00 00-00 00-00 00-00 56-6F 74-65 5F-50 72-6F 70-6F 73-61 6C-5F 59-61 79-5F 32-00 00-00 00-13 00-78 85-42 01-00 00-00 34-06 00-00 00-00 00-00 40-06 00-00 00-00 00-80 E0-EA 60-42 01-00 00-00 70-EB 60-42 01-00 00-00 70-EB 60-42 01-00 00-00 E0-9A 66-42 01-00 00-00 18-9C 66-42 01-00 00-00 18-9C 66-42 01-00 00-00> (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Vote_Proposal_Yay_3 -1: -1: 0 | Code hash [1/2] : 269ed92fd7e68af006b95f1f4b9a911c0cf51a -1: 0 | Code hash [2/2] : 2d6056b3c0619e10e8fd0ee272 -1: 1 | ID : 2 -1: 2 | Vote [1/4] : yay with councils: -1: Council: atest1v4eh -1: 2 | Vote [2/4] : gw36gvmyy3jyxs65vd69gsu5vdzyg5urv3pngs -1: 2 | Vote [3/4] : cyz3pjxscnjwz9gy6rw3z9xdz5v3pjksl96e, -1: 2 | Vote [4/4] : spending cap: 0.0009 -1: 3 | Voter [1/3] : atest1v4ehgw36xser2d69gdz5xseexv6rwvej -1: 3 | Voter [2/3] : xdpyyvenx5erswphggeyxwpegccygv6p8quygv -1: 3 | Voter [3/3] : jp4gcn9a -1: 4 | Delegations [1/3] : atest1v4ehgw36xyenqdf4g5urzve5g5cnwvp3 -1: 4 | Delegations [2/3] : g3qnwvesxqursd6xgvurwdjrgdry23p5xcuryd -1: 4 | Delegations [3/3] : 69jx6t2q -1: 5 | Timestamp : 2023-06-19 12:55:28.798434782 UTC -1: 6 | Pubkey [1/2] : 00ef8ffbbcf933342a6ba57bc159e222c7d127 -1: 6 | Pubkey [2/2] : df1fe1ce8fa0a8dbf1f062ee6ed1 -1: 7 | Epoch : 1 -1: 8 | Gas limit : 0 -1: 9 | Fees : NAM 100.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Vote_Proposal_Yay_3 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Vote_Proposal_Yay_4 -1: -1: 0 | Code hash [1/2] : 269ed92fd7e68af006b95f1f4b9a911c0cf51a -1: 0 | Code hash [2/2] : 2d6056b3c0619e10e8fd0ee272 -1: 1 | ID : 3 -1: 2 | Vote [1/4] : yay with councils: -1: Council: atest1v4eh -1: 2 | Vote [2/4] : gw36gvmyy3jyxs65vd69gsu5vdzyg5urv3pngs -1: 2 | Vote [3/4] : cyz3pjxscnjwz9gy6rw3z9xdz5v3pjksl96e, -1: 2 | Vote [4/4] : spending cap: 0.0009 -1: 3 | Voter [1/3] : atest1v4ehgw36xser2d69gdz5xseexv6rwvej -1: 3 | Voter [2/3] : xdpyyvenx5erswphggeyxwpegccygv6p8quygv -1: 3 | Voter [3/3] : jp4gcn9a -1: 4 | Delegations [1/3] : atest1v4ehgw36xyenqdf4g5urzve5g5cnwvp3 -1: 4 | Delegations [2/3] : g3qnwvesxqursd6xgvurwdjrgdry23p5xcuryd -1: 4 | Delegations [3/3] : 69jx6t2q -1: 5 | Timestamp : 2023-06-19 12:55:33.558038294 UTC -1: 6 | Pubkey [1/2] : 00ef8ffbbcf933342a6ba57bc159e222c7d127 -1: 6 | Pubkey [2/2] : df1fe1ce8fa0a8dbf1f062ee6ed1 -1: 7 | Epoch : 1 -1: 8 | Gas limit : 0 -1: 9 | Fees : NAM 100.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Vote_Proposal_Yay_4 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Custom_0 -1: -1: 0 | Code hash [1/2] : 1c3e0c791aa8a43300e08a5e5408df66e67eed -1: 0 | Code hash [2/2] : 26721f3f4897b017eddfc8cc78 -1: 1 | Timestamp : 2023-06-13 18:05:04.392625270 UTC -1: 2 | Pubkey [1/2] : 008cd8ee423546ee43cf7dd4ee51638557682e -1: 2 | Pubkey [2/2] : 045ec0303b8b8ce9e6714297e008 -1: 3 | Epoch : 1 -1: 4 | Gas limit : 0 -1: 5 | Fees : NAM 100.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Custom_0 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Custom_1 -1: -1: 0 | Code hash [1/2] : 1c3e0c791aa8a43300e08a5e5408df66e67eed -1: 0 | Code hash [2/2] : 26721f3f4897b017eddfc8cc78 -1: 1 | Timestamp : 2023-06-19 11:10:00.246743126 UTC -1: 2 | Pubkey [1/2] : 00d9458d9ae70b725813fd13be8c26febd094b -1: 2 | Pubkey [2/2] : b5a3f81654ddcd8416e45fc2b373 -1: 3 | Epoch : 1 -1: 4 | Gas limit : 0 -1: 5 | Fees : NAM 100.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Custom_1 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Custom_2 -1: -1: 0 | Code hash [1/2] : 1c3e0c791aa8a43300e08a5e5408df66e67eed -1: 0 | Code hash [2/2] : 26721f3f4897b017eddfc8cc78 -1: 1 | Timestamp : 2023-06-19 12:56:13.146246569 UTC -1: 2 | Pubkey [1/2] : 00bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0 -1: 2 | Pubkey [2/2] : b4612d4d8cc517e92682205a7477 -1: 3 | Epoch : 2 -1: 4 | Gas limit : 0 -1: 5 | Fees : NAM 100.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Custom_2 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Change_Commission_0 -1: -1: 0 | Code hash [1/2] : 63318782478028c3a4695104ff4aab6208f0fc -1: 0 | Code hash [2/2] : 0752828d4ab486276c69cfd46c -1: 1 | New rate : 0.02 -1: 2 | Validator [1/3] : atest1v4ehgw36xser2d69gdz5xseexv6rwvej -1: 2 | Validator [2/3] : xdpyyvenx5erswphggeyxwpegccygv6p8quygv -1: 2 | Validator [3/3] : jp4gcn9a -1: 3 | Timestamp : 2023-06-19 12:54:31.598398128 UTC -1: 4 | Pubkey [1/2] : 00ef8ffbbcf933342a6ba57bc159e222c7d127 -1: 4 | Pubkey [2/2] : df1fe1ce8fa0a8dbf1f062ee6ed1 -1: 5 | Epoch : 1 -1: 6 | Gas limit : 0 -1: 7 | Fees : NAM 100.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Change_Commission_0 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Change_Commission_1 -1: -1: 0 | Code hash [1/2] : 63318782478028c3a4695104ff4aab6208f0fc -1: 0 | Code hash [2/2] : 0752828d4ab486276c69cfd46c -1: 1 | New rate : 0.05 -1: 2 | Validator [1/3] : atest1v4ehgw36gvmyy3jyxs65vd69gsu5vdzy -1: 2 | Validator [2/3] : g5urv3pngscyz3pjxscnjwz9gy6rw3z9xdz5v3 -1: 2 | Validator [3/3] : pjksl96e -1: 3 | Timestamp : 2023-06-19 12:54:53.158027319 UTC -1: 4 | Pubkey [1/2] : 00bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0 -1: 4 | Pubkey [2/2] : b4612d4d8cc517e92682205a7477 -1: 5 | Epoch : 1 -1: 6 | Gas limit : 0 -1: 7 | Fees : NAM 100.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Change_Commission_1 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Change_Commission_2 -1: -1: 0 | Code hash [1/2] : 63318782478028c3a4695104ff4aab6208f0fc -1: 0 | Code hash [2/2] : 0752828d4ab486276c69cfd46c -1: 1 | New rate : 0.07 -1: 2 | Validator [1/3] : atest1v4ehgw36xser2d69gdz5xseexv6rwvej -1: 2 | Validator [2/3] : xdpyyvenx5erswphggeyxwpegccygv6p8quygv -1: 2 | Validator [3/3] : jp4gcn9a -1: 3 | Timestamp : 2023-06-19 12:55:02.986469363 UTC -1: 4 | Pubkey [1/2] : 00ef8ffbbcf933342a6ba57bc159e222c7d127 -1: 4 | Pubkey [2/2] : df1fe1ce8fa0a8dbf1f062ee6ed1 -1: 5 | Epoch : 1 -1: 6 | Gas limit : 0 -1: 7 | Fees : NAM 100.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Change_Commission_2 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Change_Commission_3 -1: -1: 0 | Code hash [1/2] : 63318782478028c3a4695104ff4aab6208f0fc -1: 0 | Code hash [2/2] : 0752828d4ab486276c69cfd46c -1: 1 | New rate : 0.09 -1: 2 | Validator [1/3] : atest1v4ehgw36xser2d69gdz5xseexv6rwvej -1: 2 | Validator [2/3] : xdpyyvenx5erswphggeyxwpegccygv6p8quygv -1: 2 | Validator [3/3] : jp4gcn9a -1: 3 | Timestamp : 2023-06-19 12:55:15.466270058 UTC -1: 4 | Pubkey [1/2] : 00ef8ffbbcf933342a6ba57bc159e222c7d127 -1: 4 | Pubkey [2/2] : df1fe1ce8fa0a8dbf1f062ee6ed1 -1: 5 | Epoch : 1 -1: 6 | Gas limit : 0 -1: 7 | Fees : NAM 100.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Change_Commission_3 (0 ms) -1: [ RUN ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Change_Commission_4 -1: -1: 0 | Code hash [1/2] : 63318782478028c3a4695104ff4aab6208f0fc -1: 0 | Code hash [2/2] : 0752828d4ab486276c69cfd46c -1: 1 | New rate : 0.11 -1: 2 | Validator [1/3] : atest1v4ehgw36xser2d69gdz5xseexv6rwvej -1: 2 | Validator [2/3] : xdpyyvenx5erswphggeyxwpegccygv6p8quygv -1: 2 | Validator [3/3] : jp4gcn9a -1: 3 | Timestamp : 2023-06-19 12:55:45.510561505 UTC -1: 4 | Pubkey [1/2] : 00ef8ffbbcf933342a6ba57bc159e222c7d127 -1: 4 | Pubkey [2/2] : df1fe1ce8fa0a8dbf1f062ee6ed1 -1: 5 | Epoch : 1 -1: 6 | Gas limit : 0 -1: 7 | Fees : NAM 100.0 -1: -1: -1: [ OK ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Change_Commission_4 (0 ms) -1: [----------] 108 tests from JsonTestCasesCurrentTxVer/JsonTestsA (7 ms total) -1: -1: [----------] Global test environment tear-down -1: [==========] 110 tests from 3 test suites ran. (7 ms total) -1: [ PASSED ] 98 tests. -1: [ FAILED ] 12 tests, listed below: -1: [ FAILED ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Vote_Proposal_Nay, where GetParam() = 104-byte object <00-00 00-00 00-00 00-00 56-6F 74-65 5F-50 72-6F 70-6F 73-61 6C-5F 4E-61 79-00 00-00 00-00 00-11 00-9A 81-42 01-00 00-00 10-06 00-00 00-00 00-00 20-06 00-00 00-00 00-80 50-71 62-42 01-00 00-00 E0-71 62-42 01-00 00-00 E0-71 62-42 01-00 00-00 D0-72 62-42 01-00 00-00 08-74 62-42 01-00 00-00 08-74 62-42 01-00 00-00> -1: [ FAILED ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Vote_Proposal_Yay, where GetParam() = 104-byte object <00-00 00-00 00-00 00-00 56-6F 74-65 5F-50 72-6F 70-6F 73-61 6C-5F 59-61 79-00 00-00 00-00 00-11 00-9A 81-42 01-00 00-00 34-06 00-00 00-00 00-00 40-06 00-00 00-00 00-80 50-71 62-42 01-00 00-00 E0-71 62-42 01-00 00-00 E0-71 62-42 01-00 00-00 20-59 62-42 01-00 00-00 58-5A 62-42 01-00 00-00 58-5A 62-42 01-00 00-00> -1: [ FAILED ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Vote_Proposal_Nay_with_Delegations, where GetParam() = 104-byte object <00-00 00-00 00-00 00-00 60-FC 64-42 01-00 00-00 22-00 00-00 00-00 00-00 30-00 00-00 00-00 00-80 00-9A 81-42 01-00 00-00 6A-06 00-00 00-00 00-00 70-06 00-00 00-00 00-80 20-59 62-42 01-00 00-00 F8-59 62-42 01-00 00-00 F8-59 62-42 01-00 00-00 10-7A 62-42 01-00 00-00 90-7B 62-42 01-00 00-00 90-7B 62-42 01-00 00-00> -1: [ FAILED ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Vote_Proposal_yay_1, where GetParam() = 104-byte object <00-00 00-00 00-00 00-00 56-6F 74-65 5F-50 72-6F 70-6F 73-61 6C-5F 79-61 79-5F 31-00 00-00 00-13 00-9A 81-42 01-00 00-00 34-06 00-00 00-00 00-00 40-06 00-00 00-00 00-80 50-71 62-42 01-00 00-00 E0-71 62-42 01-00 00-00 E0-71 62-42 01-00 00-00 20-59 62-42 01-00 00-00 58-5A 62-42 01-00 00-00 58-5A 62-42 01-00 00-00> -1: [ FAILED ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Vote_Proposal_Nay_2, where GetParam() = 104-byte object <00-00 00-00 00-00 00-00 56-6F 74-65 5F-50 72-6F 70-6F 73-61 6C-5F 4E-61 79-5F 32-00 00-00 00-13 00-9A 81-42 01-00 00-00 6A-06 00-00 00-00 00-00 70-06 00-00 00-00 00-80 20-59 62-42 01-00 00-00 F8-59 62-42 01-00 00-00 F8-59 62-42 01-00 00-00 10-0C 63-42 01-00 00-00 90-0D 63-42 01-00 00-00 90-0D 63-42 01-00 00-00> -1: [ FAILED ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Normal/0_Vote_Proposal_Yay_2, where GetParam() = 104-byte object <00-00 00-00 00-00 00-00 56-6F 74-65 5F-50 72-6F 70-6F 73-61 6C-5F 59-61 79-5F 32-00 00-00 00-13 00-9A 81-42 01-00 00-00 34-06 00-00 00-00 00-00 40-06 00-00 00-00 00-80 50-71 62-42 01-00 00-00 E0-71 62-42 01-00 00-00 E0-71 62-42 01-00 00-00 20-59 62-42 01-00 00-00 58-5A 62-42 01-00 00-00 58-5A 62-42 01-00 00-00> -1: [ FAILED ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Vote_Proposal_Nay, where GetParam() = 104-byte object <00-00 00-00 00-00 00-00 56-6F 74-65 5F-50 72-6F 70-6F 73-61 6C-5F 4E-61 79-00 00-00 00-00 00-11 00-78 85-42 01-00 00-00 10-06 00-00 00-00 00-00 20-06 00-00 00-00 00-80 10-C1 66-42 01-00 00-00 A0-C1 66-42 01-00 00-00 A0-C1 66-42 01-00 00-00 E0-9A 66-42 01-00 00-00 18-9C 66-42 01-00 00-00 18-9C 66-42 01-00 00-00> -1: [ FAILED ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Vote_Proposal_Yay, where GetParam() = 104-byte object <00-00 00-00 00-00 00-00 56-6F 74-65 5F-50 72-6F 70-6F 73-61 6C-5F 59-61 79-00 00-00 00-00 00-11 00-78 85-42 01-00 00-00 34-06 00-00 00-00 00-00 40-06 00-00 00-00 00-80 10-C1 66-42 01-00 00-00 A0-C1 66-42 01-00 00-00 A0-C1 66-42 01-00 00-00 E0-9A 66-42 01-00 00-00 18-9C 66-42 01-00 00-00 18-9C 66-42 01-00 00-00> -1: [ FAILED ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Vote_Proposal_Nay_with_Delegations, where GetParam() = 104-byte object <00-00 00-00 00-00 00-00 D0-E7 66-42 01-00 00-00 22-00 00-00 00-00 00-00 30-00 00-00 00-00 00-80 00-78 85-42 01-00 00-00 6A-06 00-00 00-00 00-00 70-06 00-00 00-00 00-80 10-C1 66-42 01-00 00-00 E8-C1 66-42 01-00 00-00 E8-C1 66-42 01-00 00-00 E0-9A 66-42 01-00 00-00 60-9C 66-42 01-00 00-00 60-9C 66-42 01-00 00-00> -1: [ FAILED ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Vote_Proposal_yay_1, where GetParam() = 104-byte object <00-00 00-00 00-00 00-00 56-6F 74-65 5F-50 72-6F 70-6F 73-61 6C-5F 79-61 79-5F 31-00 00-00 00-13 00-78 85-42 01-00 00-00 34-06 00-00 00-00 00-00 40-06 00-00 00-00 00-80 90-18 61-42 01-00 00-00 20-19 61-42 01-00 00-00 20-19 61-42 01-00 00-00 E0-9A 66-42 01-00 00-00 18-9C 66-42 01-00 00-00 18-9C 66-42 01-00 00-00> -1: [ FAILED ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Vote_Proposal_Nay_2, where GetParam() = 104-byte object <00-00 00-00 00-00 00-00 56-6F 74-65 5F-50 72-6F 70-6F 73-61 6C-5F 4E-61 79-5F 32-00 00-00 00-13 00-78 85-42 01-00 00-00 6A-06 00-00 00-00 00-00 70-06 00-00 00-00 00-80 10-44 61-42 01-00 00-00 E8-44 61-42 01-00 00-00 E8-44 61-42 01-00 00-00 D0-1A 61-42 01-00 00-00 50-1C 61-42 01-00 00-00 50-1C 61-42 01-00 00-00> -1: [ FAILED ] JsonTestCasesCurrentTxVer/JsonTestsA.CheckUIOutput_CurrentTX_Expert/0_Vote_Proposal_Yay_2, where GetParam() = 104-byte object <00-00 00-00 00-00 00-00 56-6F 74-65 5F-50 72-6F 70-6F 73-61 6C-5F 59-61 79-5F 32-00 00-00 00-13 00-78 85-42 01-00 00-00 34-06 00-00 00-00 00-00 40-06 00-00 00-00 00-80 E0-EA 60-42 01-00 00-00 70-EB 60-42 01-00 00-00 70-EB 60-42 01-00 00-00 E0-9A 66-42 01-00 00-00 18-9C 66-42 01-00 00-00 18-9C 66-42 01-00 00-00> -1: -1: 12 FAILED TESTS -1/1 Test #1: unittests ........................***Failed 0.02 sec - -0% tests passed, 1 tests failed out of 1 - -Total Test time (real) = 0.03 sec - -The following tests FAILED: - 1 - unittests (Failed) diff --git a/deps/ledger-zxlib b/deps/ledger-zxlib index bae8872f..82e20147 160000 --- a/deps/ledger-zxlib +++ b/deps/ledger-zxlib @@ -1 +1 @@ -Subproject commit bae8872fb572e3fb79f34813800c7981d4d01050 +Subproject commit 82e20147eeacb09234cce1114fd42ba255ae1077 diff --git a/deps/nanos-secure-sdk b/deps/nanos-secure-sdk index 78691885..40a60bc8 160000 --- a/deps/nanos-secure-sdk +++ b/deps/nanos-secure-sdk @@ -1 +1 @@ -Subproject commit 786918851f5b2173283be9e2e37fa91809cac8b5 +Subproject commit 40a60bc83c6b1422e047c36beb4018891bc34b12 diff --git a/deps/nanosplus-secure-sdk b/deps/nanosplus-secure-sdk index 4296ca68..6a028440 160000 --- a/deps/nanosplus-secure-sdk +++ b/deps/nanosplus-secure-sdk @@ -1 +1 @@ -Subproject commit 4296ca68391fd6b19ba1a48547fa59a3c0d12257 +Subproject commit 6a0284400066b5d0575847e4546ecb0c01691350 diff --git a/deps/nanox-secure-sdk b/deps/nanox-secure-sdk index 6a479957..05465c19 160000 --- a/deps/nanox-secure-sdk +++ b/deps/nanox-secure-sdk @@ -1 +1 @@ -Subproject commit 6a47995721d94613dd4043691993a50d1f7319bb +Subproject commit 05465c19add6fc688afaebbef92e5f26649c484b diff --git a/js/src/common.ts b/js/src/common.ts index d08389f3..aa125ba3 100644 --- a/js/src/common.ts +++ b/js/src/common.ts @@ -39,12 +39,6 @@ export const ERROR_CODE = { NoError: 0x9000, } -export const enum SignatureType { - HeaderSignature = 0, - DataSignature = 1, - CodeSignature = 2, -} - export enum LedgerError { U2FUnknown = 1, U2FBadRequest = 2, diff --git a/js/src/config.ts b/js/src/config.ts index 485becb4..9f3bdad5 100644 --- a/js/src/config.ts +++ b/js/src/config.ts @@ -23,10 +23,8 @@ export const INS = { GET_IVK: 0x04, GET_OVK: 0x05, GET_NF: 0x06, - - GET_SIGNATURE: 0x0a, } export const SALT_LEN = 8 export const HASH_LEN = 32 -export const PK_LEN_25519 = 32 -export const ED25519_SIGNATURE_LEN = 64 +export const PK_LEN_PLUS_TAG = 33 +export const SIG_LEN_PLUS_TAG = 65 diff --git a/js/src/namadaApp.ts b/js/src/namadaApp.ts index c792bec3..9bbc0e72 100644 --- a/js/src/namadaApp.ts +++ b/js/src/namadaApp.ts @@ -14,7 +14,7 @@ * limitations under the License. ******************************************************************************* */ import Transport from '@ledgerhq/hw-transport' -import { ResponseAddress, ResponseAppInfo, ResponseBase, ResponseSign, ResponseVersion, Signature } from './types' +import { ResponseAddress, ResponseAppInfo, ResponseBase, ResponseSign, ResponseVersion } from './types' import { CHUNK_SIZE, @@ -24,11 +24,10 @@ import { PAYLOAD_TYPE, processErrorResponse, serializePath, - SignatureType, } from './common' import { CLA, INS } from './config' -import { processGetAddrResponse, processGetSignatureResponse } from './processResponses' +import { getSignatureResponse, processGetAddrResponse } from './processResponses' export { LedgerError } export * from './types' @@ -178,6 +177,14 @@ export class NamadaApp { errorMessage = `${errorMessage} : ${response.subarray(0, response.length - 2).toString('ascii')}` } + if (returnCode === LedgerError.NoErrors && response.length > 2) { + return { + signature: getSignatureResponse(response), + returnCode, + errorMessage, + }; + } + return { returnCode: returnCode, errorMessage: errorMessage, @@ -185,18 +192,12 @@ export class NamadaApp { }, processErrorResponse) } - async getSignature(signatureType: SignatureType) { - return this.transport - .send(CLA, INS.GET_SIGNATURE, P1_VALUES.ONLY_RETRIEVE, signatureType, Buffer.from([]), [LedgerError.NoErrors]) - .then(processGetSignatureResponse, processErrorResponse) - } - - async _sign(path: string, message: Buffer) { + async sign(path: string, message: Buffer): Promise { const serializedPath = serializePath(path) return this.prepareChunks(serializedPath, message).then(chunks => { return this.signSendChunk(1, chunks.length, chunks[0], INS.SIGN).then(async response => { - let result = { + let result: ResponseSign = { returnCode: response.returnCode, errorMessage: response.errorMessage, } @@ -212,28 +213,6 @@ export class NamadaApp { }, processErrorResponse) } - async sign(path: string, message: Buffer) { - const signCommand = await this._sign(path, message) - - const result: ResponseSign = { - returnCode: signCommand.returnCode, - errorMessage: signCommand.errorMessage, - headerSignature: new Signature(), - dataSignature: new Signature(), - codeSignature: new Signature(), - } - - if (signCommand.returnCode !== LedgerError.NoErrors) { - return result - } - - result.headerSignature = new Signature(await this.getSignature(SignatureType.HeaderSignature)) - result.dataSignature = new Signature(await this.getSignature(SignatureType.DataSignature)) - result.codeSignature = new Signature(await this.getSignature(SignatureType.CodeSignature)) - - return result - } - /* Not implemented yet async getShieldedAddressAndPubKey(path: number, div: Buffer): Promise { const buf = Buffer.alloc(4); diff --git a/js/src/processResponses.ts b/js/src/processResponses.ts index c2ef64f5..6d78f4d8 100644 --- a/js/src/processResponses.ts +++ b/js/src/processResponses.ts @@ -15,41 +15,43 @@ ******************************************************************************* */ import { errorCodeToString } from './common' -import { HASH_LEN, PK_LEN_25519, SALT_LEN } from './config' +import { PK_LEN_PLUS_TAG, SALT_LEN, SIG_LEN_PLUS_TAG } from './config' import { ISignature } from './types' -export function processGetSignatureResponse(response: Buffer): ISignature { +export function getSignatureResponse(response: Buffer): ISignature { console.log('Processing get signature response') - const salt = Buffer.from(response.subarray(0, SALT_LEN)) - const hash = Buffer.from(response.subarray(SALT_LEN, SALT_LEN + HASH_LEN)) - const pubkey = Buffer.from(response.subarray(SALT_LEN + HASH_LEN, SALT_LEN + HASH_LEN + PK_LEN_25519)) - const signature = Buffer.from(response.subarray(SALT_LEN + HASH_LEN + PK_LEN_25519, -2)) + // App sign response: [ pubkey(33) | raw_salt(8) | raw_signature(65) | wrapper_salt(8) | wrapper_signature(65) ] + let offset = 0; + const pubkey = Buffer.from(response.subarray(offset, offset + PK_LEN_PLUS_TAG)); + + offset += PK_LEN_PLUS_TAG; + const raw_salt = Buffer.from(response.subarray(offset, offset + SALT_LEN)); + offset += SALT_LEN; + const raw_signature = Buffer.from(response.subarray(offset, offset + SIG_LEN_PLUS_TAG)); + + offset += SIG_LEN_PLUS_TAG; + const wrapper_salt = Buffer.from(response.subarray(offset, offset + SALT_LEN)); + offset += SALT_LEN; + const wrapper_signature = Buffer.from(response.subarray(offset, offset + SIG_LEN_PLUS_TAG)); return { - salt, - hash, pubkey, - signature, + raw_salt, + raw_signature, + wrapper_salt, + wrapper_signature, } } export function processGetAddrResponse(response: Buffer) { console.log('Processing get address response') - let partialResponse = response - - const errorCodeData = partialResponse.subarray(-2) + const errorCodeData = response.subarray(-2) const returnCode = errorCodeData[0] * 256 + errorCodeData[1] - //get public key len (variable) - const publicKey = Buffer.from(partialResponse.slice(0, PK_LEN_25519)) - - //"advance" buffer - partialResponse = partialResponse.slice(PK_LEN_25519) - - // get the implicit address corresponding to the public key - const address = Buffer.from(partialResponse.slice(0, -2)) + const publicKey = Buffer.from(response.subarray(0, PK_LEN_PLUS_TAG)) + const address = Buffer.from(response.subarray(PK_LEN_PLUS_TAG, -2)) return { publicKey, diff --git a/js/src/types.ts b/js/src/types.ts index 6717750d..66c81835 100644 --- a/js/src/types.ts +++ b/js/src/types.ts @@ -56,38 +56,39 @@ export interface ResponseNullifier extends ResponseBase { } export interface ISignature { - salt: Buffer - hash: Buffer pubkey: Buffer - signature: Buffer + raw_salt: Buffer + raw_signature: Buffer + wrapper_salt: Buffer + wrapper_signature: Buffer } export class Signature implements ISignature { - salt: Buffer - hash: Buffer pubkey: Buffer - signature: Buffer - + raw_salt: Buffer + raw_signature: Buffer + wrapper_salt: Buffer + wrapper_signature: Buffer isFilled: boolean constructor(signature?: ISignature) { if (signature == null) { this.isFilled = false - this.salt = Buffer.from([]) - this.hash = Buffer.from([]) this.pubkey = Buffer.from([]) - this.signature = Buffer.from([]) + this.raw_salt = Buffer.from([]) + this.raw_signature = Buffer.from([]) + this.wrapper_salt = Buffer.from([]) + this.wrapper_signature = Buffer.from([]) } else { this.isFilled = true - this.salt = signature.salt - this.hash = signature.hash this.pubkey = signature.pubkey - this.signature = signature.signature + this.raw_salt = signature.raw_salt + this.raw_signature = signature.raw_signature + this.wrapper_salt = signature.wrapper_salt + this.wrapper_signature = signature.wrapper_signature } } } export interface ResponseSign extends ResponseBase { - headerSignature: Signature - dataSignature: Signature - codeSignature: Signature + signature?: Signature } diff --git a/tests/testvectors.json b/tests/testvectors.json index 4f312e16..4c8f0a58 100644 --- a/tests/testvectors.json +++ b/tests/testvectors.json @@ -1,31 +1,35 @@ [ { - "blob": "1e0000006532652d746573742e6563353631326230393430336233333238396463380023000000323032332d30362d31335431383a30343a32392e3034353635373838352b30303a3030b35e401c64e395bf63d729dcfb2b6c6f180e0fd7959f232d3c7a9b6ee19ffaf43a3cde6c93bbe91ba1cbf4c48583a7d0b6bcbd4edf665491079bf8e1a6bb3de60100e1f5050000000000280000003442383846423931334130373636453330413030423246423841413239343941373130453234453600d04d39252f8f76ee4ce7ff1ce846f45d9bb0aa4b84e10e7ee96382958f4c9d3a01000000000000000000000000000000000500000000f53beeb5880100009200000000280000004345463235443836434144434442393646313238454431364444464142353331443334373145324500280000003032413641313942313533413738303631463237373539393032383046354337353241464633354300280000003344323334443145333945313831443532443031383036354531343243413931433035324245334500c0f35e0100000000000002f53beeb58801000000225991ddf88d81b7a587e98fc45d4efe6df3b3bc62d9ba946a829b7a2d0025ed03f63beeb5880100003a3cde6c93bbe91ba1cbf4c48583a7d0b6bcbd4edf665491079bf8e1a6bb3de60037743f9803487346da353af25536ef143c74365c797d8dc5373392e4e275706410a64b0ea0c62f3e3a77653bb90e4f3c25fdacf564c14a52407470efe3929e0000d04d39252f8f76ee4ce7ff1ce846f45d9bb0aa4b84e10e7ee96382958f4c9d3a03f73beeb588010000b35e401c64e395bf63d729dcfb2b6c6f180e0fd7959f232d3c7a9b6ee19ffaf4009d916591238563bceed4014ee0a20b7ea0d16e4ea3da97768e44748f0dd7e10a47e741b0fcea1f414970437848d532914a7ffb72982382c158d9f9eaa38af50300d04d39252f8f76ee4ce7ff1ce846f45d9bb0aa4b84e10e7ee96382958f4c9d3a038c3ceeb58801000042017852d71ee84ec043d5f1d8e83ccf2b348ba011e75d9c0b41db560748cc6f00aaf51f89bed31127e836a6e9a5f0472fb0439d670d3ed49f9c79021d769ff06fe2820c26a0b452505a3cff3615995c69d72bfa9181ecb5ec50bb942c625c1a0500d04d39252f8f76ee4ce7ff1ce846f45d9bb0aa4b84e10e7ee96382958f4c9d3a", + "blob": "1e0000006532652d746573742e3935366638646232353162386231643331613539320023000000323032332d30372d32355431313a35393a30322e3333313633333539332b30303a303059111eccc931a8f485d7f3caf9ba47e57ec5be98c683bd04061014696c3f2646c7f08d67d77336c96ef793a0a55e66342770cad45236071bc858286b20345ea00100e1f50500000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e6007af50fc05fe1784a3d1665d168c9527f86940c4f14f72d048c40a2af12cf07c001000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000bbc0ea8c890100006300000000f34a4aa63fec052ca158bf0add63a0594610dae300fc6221811e2f240c89e66c017b4de5be993f0483004b88fb913a0766e30a00b2fb8aa2949a710e24e600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff06000002bbc0ea8c890100000055f9780f74dfbcfefe09fb667331893abd63eddfcf07f78e5f19711cb9f0a8aa", "index": 0, "name": "Transfer_0", "output": [ "0 | Type : Transfer", - "1 | Sender [1/3] : atest1v4ehgw36gdz5vv34gsurvs6pg3p5gs3e", - "1 | Sender [2/3] : xerrzv3cg4zrzdjyg3ryzs34xvc5gve5xuc52v", - "1 | Sender [3/3] : j9nrutay", - "2 | Destination [1/3] : atest1v4ehgw36xqeyzdjpxyu5yvf4xdqnwwps", - "2 | Destination [2/3] : xcc5vv3hxu6njwfsxgurq334gvmn2vjpgerrxd", - "2 | Destination [3/3] : 2rny0fga", - "3 | Amount : BTC 23.0" - ], - "output_expert": [ - "0 | Code hash [1/2] : 225991ddf88d81b7a587e98fc45d4efe6df3b3", - "0 | Code hash [2/2] : bc62d9ba946a829b7a2d0025ed", - "1 | Sender [1/3] : atest1v4ehgw36gdz5vv34gsurvs6pg3p5gs3e", - "1 | Sender [2/3] : xerrzv3cg4zrzdjyg3ryzs34xvc5gve5xuc52v", - "1 | Sender [3/3] : j9nrutay", - "2 | Destination [1/3] : atest1v4ehgw36xqeyzdjpxyu5yvf4xdqnwwps", - "2 | Destination [2/3] : xcc5vv3hxu6njwfsxgurq334gvmn2vjpgerrxd", - "2 | Destination [3/3] : 2rny0fga", - "3 | Amount : BTC 23.0", - "4 | Timestamp : 2023-06-13 18:04:29.045657885 UTC", - "5 | Pubkey [1/2] : 00d04d39252f8f76ee4ce7ff1ce846f45d9bb0", - "5 | Pubkey [2/2] : aa4b84e10e7ee96382958f4c9d3a", + "1 | Sender [1/3] : atest1v4ehgw36gcengsf5g9qnvv6xg4pnqdfj", + "1 | Sender [2/3] : gdqnzdfcgfrrqs2ygsmrxsfsx5ungd33xpzyz3", + "1 | Sender [3/3] : fnrer08w", + "2 | Destination [1/3] : atest1v4ehgw36gepnvv3jxyurzv29xfrrydps", + "2 | Destination [2/3] : gvurj3fkxepnqvfhgg6yg3f4gfznjwfngccrgw", + "2 | Destination [3/3] : pntvu60x", + "3 | Amount [1/3] : NAM 1157920892373161954235709850086879", + "3 | Amount [2/3] : 07853269984665640564039457584007913129", + "3 | Amount [3/3] : .639935" + ], + "output_expert": [ + "0 | Code hash [1/2] : 55f9780f74dfbcfefe09fb667331893abd63ed", + "0 | Code hash [2/2] : dfcf07f78e5f19711cb9f0a8aa", + "1 | Sender [1/3] : atest1v4ehgw36gcengsf5g9qnvv6xg4pnqdfj", + "1 | Sender [2/3] : gdqnzdfcgfrrqs2ygsmrxsfsx5ungd33xpzyz3", + "1 | Sender [3/3] : fnrer08w", + "2 | Destination [1/3] : atest1v4ehgw36gepnvv3jxyurzv29xfrrydps", + "2 | Destination [2/3] : gvurj3fkxepnqvfhgg6yg3f4gfznjwfngccrgw", + "2 | Destination [3/3] : pntvu60x", + "3 | Amount [1/3] : NAM 1157920892373161954235709850086879", + "3 | Amount [2/3] : 07853269984665640564039457584007913129", + "3 | Amount [3/3] : .639935", + "4 | Timestamp : 2023-07-25 11:59:02.331633593 UTC", + "5 | Pubkey [1/2] : 007af50fc05fe1784a3d1665d168c9527f8694", + "5 | Pubkey [2/2] : 0c4f14f72d048c40a2af12cf07c0", "6 | Epoch : 1", "7 | Gas limit : 0", "8 | Fees : NAM 100.0" @@ -33,32 +37,32 @@ "valid": true }, { - "blob": "1e0000006532652d746573742e3364333666316461353466336435643166323335330023000000323032332d30362d31395431313a30393a32382e3933303930383636362b30303a30304134e0191c07870ce9567aba0fc94e09a9c0c3bc6c08a95ce54b36e83bb8e9be17132ca58b96012015378cb2fc24921ed1edd64b1901d12a43c17632245e55840100e1f5050000000000280000003442383846423931334130373636453330413030423246423841413239343941373130453234453600a99a391a750acf6424a3b0a0aaa3f2c8f379f24cabaaeb2c23408f024e952de801000000000000000000000000000000000500000000e27158d3880100009200000000280000003432453843463142344130323231354145363232333841343737384642323736454639383231433800280000004537323831333033433033334642343045393333383630433433434543373633364544313335443000280000003344323334443145333945313831443532443031383036354531343243413931433035324245334500c0f35e0100000000000002e27158d38801000000225991ddf88d81b7a587e98fc45d4efe6df3b3bc62d9ba946a829b7a2d0025ed03e37158d38801000017132ca58b96012015378cb2fc24921ed1edd64b1901d12a43c17632245e55840073ba0eaf9832f7871fb8049c66846aa4759ce1adbf1a8233ecd34253f6cc328e1222c04890e338c207216ea73399fc867a16e23b7c91bc2ba48b44bdfea3b00a00a99a391a750acf6424a3b0a0aaa3f2c8f379f24cabaaeb2c23408f024e952de803e37158d3880100004134e0191c07870ce9567aba0fc94e09a9c0c3bc6c08a95ce54b36e83bb8e9be00cbb2842ddb384e070e474372f66fae35783e061d5d59c8f290da1699eb9797caab7a443ca89e8bb1ad7759878ba402ed041862bbb05daa963f0189cad151fb0c00a99a391a750acf6424a3b0a0aaa3f2c8f379f24cabaaeb2c23408f024e952de803727258d3880100009b5ed6f27c61754cbb347208267c4ccc3d393b370660b1c6fff8a3baba22c41c00afba03a22041f82f1dd413287cefbbb62946bf64fb125a7e54aa51dc1b85a94c8a522d31679359ebca83a4b2a8dc4cd37616623360a3d8ce301c98470392180500a99a391a750acf6424a3b0a0aaa3f2c8f379f24cabaaeb2c23408f024e952de8", + "blob": "1e0000006532652d746573742e3935366638646232353162386231643331613539320023000000323032332d30372d32355431313a35393a30362e3938373034313334332b30303a30304362dd9b39cb0ba721ee29748187ec983fac319d3f79e9f2d65ba1b0e06910d35c338539eeb4bf53a614f93b0747f6437ee1b47583010a6735f442191716eedb0100e1f50500000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e6007af50fc05fe1784a3d1665d168c9527f86940c4f14f72d048c40a2af12cf07c001000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000ebd2ea8c890100004b000000009bcb6700c1ebb4079a01d9bb6a486880e250c44900e9a435000000000000000000000000000000000000000000000000000000000100f34a4aa63fec052ca158bf0add63a0594610dae302ebd2ea8c8901000000f44f821502b1d8ef3bb11af645babe350394c39c6b8b1cef848bf60aa4aaaf8d", "index": 0, - "name": "Transfer_1", + "name": "Bond_0", "output": [ - "0 | Type : Transfer", - "1 | Sender [1/3] : atest1v4ehgw36xsey2wzrgcc5ydzpxqeryvf4", - "1 | Sender [2/3] : g9znvv3jxvuyzdphxuuyvs3jxumy233e8qerzs", - "1 | Sender [3/3] : ecdvt2tj", - "2 | Destination [1/3] : atest1v4ehgw36g5mnywp3xvcrxsesxve5vs35", - "2 | Destination [2/3] : xpznjven8qmrqse5xdp52sehxcenv32yxyen23", - "2 | Destination [3/3] : psmfq3rl", - "3 | Amount : BTC 23.0" + "0 | Type : Bond", + "1 | Source [1/3] : atest1v4ehgw36gcengsf5g9qnvv6xg4pnqdfj", + "1 | Source [2/3] : gdqnzdfcgfrrqs2ygsmrxsfsx5ungd33xpzyz3", + "1 | Source [3/3] : fnrer08w", + "2 | Validator [1/3] : atest1v4ehgw3689pyxs3kxucrqse3g4pyydps", + "2 | Validator [2/3] : xuu5zvp3gsu5ys3kgy6rsd3c8qcy2v34xppngd", + "2 | Validator [3/3] : pe4rvq2h", + "3 | Amount : NAM 900.0" ], "output_expert": [ - "0 | Code hash [1/2] : 225991ddf88d81b7a587e98fc45d4efe6df3b3", - "0 | Code hash [2/2] : bc62d9ba946a829b7a2d0025ed", - "1 | Sender [1/3] : atest1v4ehgw36xsey2wzrgcc5ydzpxqeryvf4", - "1 | Sender [2/3] : g9znvv3jxvuyzdphxuuyvs3jxumy233e8qerzs", - "1 | Sender [3/3] : ecdvt2tj", - "2 | Destination [1/3] : atest1v4ehgw36g5mnywp3xvcrxsesxve5vs35", - "2 | Destination [2/3] : xpznjven8qmrqse5xdp52sehxcenv32yxyen23", - "2 | Destination [3/3] : psmfq3rl", - "3 | Amount : BTC 23.0", - "4 | Timestamp : 2023-06-19 11:09:28.930908666 UTC", - "5 | Pubkey [1/2] : 00a99a391a750acf6424a3b0a0aaa3f2c8f379", - "5 | Pubkey [2/2] : f24cabaaeb2c23408f024e952de8", + "0 | Code hash [1/2] : f44f821502b1d8ef3bb11af645babe350394c3", + "0 | Code hash [2/2] : 9c6b8b1cef848bf60aa4aaaf8d", + "1 | Source [1/3] : atest1v4ehgw36gcengsf5g9qnvv6xg4pnqdfj", + "1 | Source [2/3] : gdqnzdfcgfrrqs2ygsmrxsfsx5ungd33xpzyz3", + "1 | Source [3/3] : fnrer08w", + "2 | Validator [1/3] : atest1v4ehgw3689pyxs3kxucrqse3g4pyydps", + "2 | Validator [2/3] : xuu5zvp3gsu5ys3kgy6rsd3c8qcy2v34xppngd", + "2 | Validator [3/3] : pe4rvq2h", + "3 | Amount : NAM 900.0", + "4 | Timestamp : 2023-07-25 11:59:06.987041343 UTC", + "5 | Pubkey [1/2] : 007af50fc05fe1784a3d1665d168c9527f8694", + "5 | Pubkey [2/2] : 0c4f14f72d048c40a2af12cf07c0", "6 | Epoch : 1", "7 | Gas limit : 0", "8 | Fees : NAM 100.0" @@ -66,131 +70,129 @@ "valid": true }, { - "blob": "1e0000006532652d746573742e6437323136343362616635323461356230613435350023000000323032332d30362d31395431323a35353a33382e3332323733363137372b30303a30303be971a951917f108de9490abf6523d3df8c41cc07233f2cef081abd40c6e95974e41647ae2e845ddc33ea6c16c06d6cee9a8a44bc1de6c2df9fe0e03f3312c90100e1f5050000000000280000003442383846423931334130373636453330413030423246423841413239343941373130453234453600ef8ffbbcf933342a6ba57bc159e222c7d127df1fe1ce8fa0a8dbf1f062ee6ed10100000000000000000000000000000000050000000052a2b9d3880100009200000000280000003432353745434543433933343733323342423333353238383742324338394630443341383844324100280000004236413337324337314633433833363630323541334431333732423945393644413530373932324600280000003344323334443145333945313831443532443031383036354531343243413931433035324245334500c0f35e010000000000000252a2b9d38801000000225991ddf88d81b7a587e98fc45d4efe6df3b3bc62d9ba946a829b7a2d0025ed0353a2b9d38801000074e41647ae2e845ddc33ea6c16c06d6cee9a8a44bc1de6c2df9fe0e03f3312c9006cbb07533c0134fca3ad064acee60584e58498de883ecba8d9e18bc810b7f965a1aae30815d4fc60dd0dd369351006366f7e29e807f6c39e4ba7c6a5dfe7130300ef8ffbbcf933342a6ba57bc159e222c7d127df1fe1ce8fa0a8dbf1f062ee6ed10353a2b9d3880100003be971a951917f108de9490abf6523d3df8c41cc07233f2cef081abd40c6e959006e267f5e75b3fc8f569643c2238c9f4f4e83cd557038c19b33777ed357af351241ec907f62c6a09a6dce5ea31f7a704e5ff0d1177b01132dc505825806728e0000ef8ffbbcf933342a6ba57bc159e222c7d127df1fe1ce8fa0a8dbf1f062ee6ed103daa2b9d38801000051088ae4706fd0fd1b94daad548d20c34c5a3c1737ec718cee7e4c339e86eb87008cb461064f7c61ea5592aafcd4a48a084d67fbc0e2a8a90c9387ff1a2e70a6970c70a775e2bc777b48c0828bb297376e65275b12df3832fb8dc166af1fc6fb0a00ef8ffbbcf933342a6ba57bc159e222c7d127df1fe1ce8fa0a8dbf1f062ee6ed1", + "blob": "1e0000006532652d746573742e3935366638646232353162386231643331613539320023000000323032332d30372d32355431313a35393a31322e3539313238323634352b30303a303072749d6e6a699934deb7a5c269db61384d23aae837072fa11b508591f20b5505a0634b7b8de34e2b3f8108e10bfbe2442d5465d2843e748d84013dd55d9944600100e1f50500000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e6007af50fc05fe1784a3d1665d168c9527f86940c4f14f72d048c40a2af12cf07c001000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000cfe8ea8c890100003500000000f34a4aa63fec052ca158bf0add63a0594610dae300c817a80400000000000000000000000000000000000000000000000000000002cfe8ea8c890100000000e41e2272cb17dab319ea0598854db738ee901d75893b61b8b754460f23df78", "index": 0, - "name": "Transfer_2", + "name": "Change_Commission_0", "output": [ - "0 | Type : Transfer", - "1 | Sender [1/3] : atest1v4ehgw36xser2d69gdz5xseexv6rwvej", - "1 | Sender [2/3] : xdpyyvenx5erswphggeyxwpegccygv6p8quygv", - "1 | Sender [3/3] : jp4gcn9a", - "2 | Destination [1/3] : atest1v4ehgw36ggmyzvehxfpnwv2xxdpnsvek", - "2 | Destination [2/3] : xccryd2pxdzrzvehxfprj3fexezyzdfsxuunyv", - "2 | Destination [3/3] : jxt2vu2r", - "3 | Amount : BTC 23.0" + "0 | Type : Change commission", + "1 | New rate : 0.02", + "2 | Validator [1/3] : atest1v4ehgw36gcengsf5g9qnvv6xg4pnqdfj", + "2 | Validator [2/3] : gdqnzdfcgfrrqs2ygsmrxsfsx5ungd33xpzyz3", + "2 | Validator [3/3] : fnrer08w" ], "output_expert": [ - "0 | Code hash [1/2] : 225991ddf88d81b7a587e98fc45d4efe6df3b3", - "0 | Code hash [2/2] : bc62d9ba946a829b7a2d0025ed", - "1 | Sender [1/3] : atest1v4ehgw36xser2d69gdz5xseexv6rwvej", - "1 | Sender [2/3] : xdpyyvenx5erswphggeyxwpegccygv6p8quygv", - "1 | Sender [3/3] : jp4gcn9a", - "2 | Destination [1/3] : atest1v4ehgw36ggmyzvehxfpnwv2xxdpnsvek", - "2 | Destination [2/3] : xccryd2pxdzrzvehxfprj3fexezyzdfsxuunyv", - "2 | Destination [3/3] : jxt2vu2r", - "3 | Amount : BTC 23.0", - "4 | Timestamp : 2023-06-19 12:55:38.322736177 UTC", - "5 | Pubkey [1/2] : 00ef8ffbbcf933342a6ba57bc159e222c7d127", - "5 | Pubkey [2/2] : df1fe1ce8fa0a8dbf1f062ee6ed1", - "6 | Epoch : 1", - "7 | Gas limit : 0", - "8 | Fees : NAM 100.0" + "0 | Code hash [1/2] : 00e41e2272cb17dab319ea0598854db738ee90", + "0 | Code hash [2/2] : 1d75893b61b8b754460f23df78", + "1 | New rate : 0.02", + "2 | Validator [1/3] : atest1v4ehgw36gcengsf5g9qnvv6xg4pnqdfj", + "2 | Validator [2/3] : gdqnzdfcgfrrqs2ygsmrxsfsx5ungd33xpzyz3", + "2 | Validator [3/3] : fnrer08w", + "3 | Timestamp : 2023-07-25 11:59:12.591282645 UTC", + "4 | Pubkey [1/2] : 007af50fc05fe1784a3d1665d168c9527f8694", + "4 | Pubkey [2/2] : 0c4f14f72d048c40a2af12cf07c0", + "5 | Epoch : 1", + "6 | Gas limit : 0", + "7 | Fees : NAM 100.0" ], "valid": true }, { - "blob": "1e0000006532652d746573742e3364333666316461353466336435643166323335330023000000323032332d30362d31395431313a30383a33352e3234363430353336392b30303a30307833b7acf0236397557cf31daa8e8e9496265ecc8a0ea84bbffbeb190659521a62f78a505deefb4388f58d30aef77b9402fb0f3921d2e64116daa21b4840e2780100e1f5050000000000280000003442383846423931334130373636453330413030423246423841413239343941373130453234453600a99a391a750acf6424a3b0a0aaa3f2c8f379f24cabaaeb2c23408f024e952de8010000000000000000000000000000000005000000002ea057d3880100006300000000280000003537444630333931454344453339323043393244413338453446443739464245314331354146323300e9a4350000000001002800000034324538434631423441303232313541453632323338413437373846423237364546393832314338022ea057d38801000000c5af313728e281c2578b4bd8cbc9cbbfb0209d0785734b462c44b9a631012900035ba057d38801000062f78a505deefb4388f58d30aef77b9402fb0f3921d2e64116daa21b4840e27800db1728cfa0981c8e039a5c5bb6a9b56323b9c775b3f6368ec7dfb2ad17d7cb74185872db34c16311f1acbade11fec0888dfc1fe080a80cb8145eaea5f96f5f0c00a99a391a750acf6424a3b0a0aaa3f2c8f379f24cabaaeb2c23408f024e952de8035ba057d3880100007833b7acf0236397557cf31daa8e8e9496265ecc8a0ea84bbffbeb190659521a00d330baff7d5324554efde74905bd171ed76d2724ec29263f19e591b4e35817e187d9073e0f07d7465c9a8dd34a5ca338dbf016f24dac262f7524f280f0bab00900a99a391a750acf6424a3b0a0aaa3f2c8f379f24cabaaeb2c23408f024e952de803e6a057d38801000026dcf699b9b82a134faca0fa62662d095bdab874f7762909e16b881e6330404b002e5785d31bb94383914f775c20d5065365aa90b27f2e22975c28483e122ed34c032ab594edb827efc7f916a1a763ec6a5417e3221cefbb4a0a1639aaacb4ad0500a99a391a750acf6424a3b0a0aaa3f2c8f379f24cabaaeb2c23408f024e952de8", + "blob": "1e0000006532652d746573742e3935366638646232353162386231643331613539320023000000323032332d30372d32355431313a35393a31362e3430333134313536362b30303a30308312962d34c6e10a2f918a152b1ed7ffd2beb18b8b0f2575a1891f69b080d5fc51dfce8c3dbd1a512d3139a2474805b69fa123cb661a0408130b0cc17f302b7f0100e1f50500000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e600ed82fbf457e5a51745bacff287bf32d53748fdccace30d7557627d04c158e76901000000000000000000000000000000000000000000000000000000000000000000000000000000000400000001e3f7ea8c89010000007e68fb834a7772c82a312c4e6e519d97282cce39507950c35fe89f1c347a4a2e01e4f7ea8c89010000000c81a357320d8d093ab99792a92af4c0fe7e9ac010199a5e85d41cc89c331e8f00f7f7ea8c89010000700000000093336b2039a50ff0243de3b107f7c4f16f05a4795a968dfa5f2bef23ae05863200d52d1dcea809648d4d0cbd0697ff0b7a983230b40001c682782daa71e225c6be8a7375a187a3cb27fb48fe3bfecfe0f1f79caa9cd7ce0c0000000000000018000000000000001e0000000000000002f7f7ea8c8901000000d0a4d681cdc8b83e04a64fbc592bcbe9d93f28164d2d5cb5ff9a4fbd43d206b8", "index": 0, - "name": "Bond_1", + "name": "Init_Proposal_0", "output": [ - "0 | Type : Bond", - "1 | Source [1/3] : atest1v4ehgw36xsey2wzrgcc5ydzpxqeryvf4", - "1 | Source [2/3] : g9znvv3jxvuyzdphxuuyvs3jxumy233e8qerzs", - "1 | Source [3/3] : ecdvt2tj", - "2 | Validator [1/3] : atest1v4ehgw36x5m5g33sxvunz32rg3znxwfj", - "2 | Validator [2/3] : xppnjvjygyens3f5gezrww2xgfznzse3x4q5vv", - "2 | Validator [3/3] : 3nss6z3p", - "3 | Amount : NAM 900.0" - ], - "output_expert": [ - "0 | Code hash [1/2] : c5af313728e281c2578b4bd8cbc9cbbfb0209d", - "0 | Code hash [2/2] : 0785734b462c44b9a631012900", - "1 | Source [1/3] : atest1v4ehgw36xsey2wzrgcc5ydzpxqeryvf4", - "1 | Source [2/3] : g9znvv3jxvuyzdphxuuyvs3jxumy233e8qerzs", - "1 | Source [3/3] : ecdvt2tj", - "2 | Validator [1/3] : atest1v4ehgw36x5m5g33sxvunz32rg3znxwfj", - "2 | Validator [2/3] : xppnjvjygyens3f5gezrww2xgfznzse3x4q5vv", - "2 | Validator [3/3] : 3nss6z3p", - "3 | Amount : NAM 900.0", - "4 | Timestamp : 2023-06-19 11:08:35.246405369 UTC", - "5 | Pubkey [1/2] : 00a99a391a750acf6424a3b0a0aaa3f2c8f379", - "5 | Pubkey [2/2] : f24cabaaeb2c23408f024e952de8", - "6 | Epoch : 1", - "7 | Gas limit : 0", - "8 | Fees : NAM 100.0" - ], - "valid": true - }, - { - "blob": "1e0000006532652d746573742e3364333666316461353466336435643166323335330023000000323032332d30362d31395431313a30383a35312e3731383737323836392b30303a3030427c0fe091e16002fe910ab2081df5b8c0f0c948e2686785c4bed3b63c414a71e57305e422ffe1d31e10f132a394231c29cd24d1aa1b280da1d7cacc265ee3380100e1f5050000000000280000003442383846423931334130373636453330413030423246423841413239343941373130453234453600d9458d9ae70b725813fd13be8c26febd094bb5a3f81654ddcd8416e45fc2b3730100000000000000000000000000000001010100000000000000a700000000000000050000000086e057d3880100006300000000280000003537444630333931454344453339323043393244413338453446443739464245314331354146323300e9a43500000000010028000000373733424542384334363331344239454146304143434438323030373131463130344342463536440286e057d38801000000c5af313728e281c2578b4bd8cbc9cbbfb0209d0785734b462c44b9a63101290003b6e057d388010000e57305e422ffe1d31e10f132a394231c29cd24d1aa1b280da1d7cacc265ee33800463dfc1800419cab39ceffddae05989d31439e961905cf6b64c1c029efa60e74b3be1637530f2a24eb18ee1ba94e9f7c40c78739cc22665eea42cfc6772e9a0800d9458d9ae70b725813fd13be8c26febd094bb5a3f81654ddcd8416e45fc2b37303b7e057d388010000427c0fe091e16002fe910ab2081df5b8c0f0c948e2686785c4bed3b63c414a7100fee055050ad9e5c1c99db533a566abb01e89d3a2815547d6d4538ca4ed2d482620d74252805bdc9e9e3d9a7d622612053309edb7bb1aff2178bc421ba2d18a0d00d9458d9ae70b725813fd13be8c26febd094bb5a3f81654ddcd8416e45fc2b3730322e257d3880100008c422f67db9874ccf4443920f1ed2d950d766cb9a042ebdf098a82ed3de69413005958bcb0a38c3388b28f4aafca84bc37bdc0bb956960c8d9b764503b06cd74716fb2d03f49919768f33426eef97989c6b29f0af24313a09494c735ca61e69a0800d9458d9ae70b725813fd13be8c26febd094bb5a3f81654ddcd8416e45fc2b373", - "index": 0, - "name": "Bond_2", + "0 | Type : Init proposal", + "1 | Proposal type [1/2] : 0c81a357320d8d093ab99792a92af4c0fe7e9a", + "1 | Proposal type [2/2] : c010199a5e85d41cc89c331e8f", + "2 | Author [1/3] : atest1v4ehgw36gs6ny3p3g3p52sfcxqunvdpc", + "2 | Author [2/3] : gs6ygvzrgfzrqd3exaryvvzzxaqnjwpnxgenqs", + "2 | Author [3/3] : 35vvk7ln", + "3 | Voting start epoch : 12", + "4 | Voting end epoch : 24", + "5 | Grace epoch : 30", + "6 | Content [1/2] : 7e68fb834a7772c82a312c4e6e519d97282cce", + "6 | Content [2/2] : 39507950c35fe89f1c347a4a2e" + ], + "output_expert": [ + "0 | Code hash [1/2] : d0a4d681cdc8b83e04a64fbc592bcbe9d93f28", + "0 | Code hash [2/2] : 164d2d5cb5ff9a4fbd43d206b8", + "1 | Proposal type [1/2] : 0c81a357320d8d093ab99792a92af4c0fe7e9a", + "1 | Proposal type [2/2] : c010199a5e85d41cc89c331e8f", + "2 | Author [1/3] : atest1v4ehgw36gs6ny3p3g3p52sfcxqunvdpc", + "2 | Author [2/3] : gs6ygvzrgfzrqd3exaryvvzzxaqnjwpnxgenqs", + "2 | Author [3/3] : 35vvk7ln", + "3 | Voting start epoch : 12", + "4 | Voting end epoch : 24", + "5 | Grace epoch : 30", + "6 | Content [1/2] : 7e68fb834a7772c82a312c4e6e519d97282cce", + "6 | Content [2/2] : 39507950c35fe89f1c347a4a2e", + "7 | Timestamp : 2023-07-25 11:59:16.403141566 UTC", + "8 | Pubkey [1/2] : 00ed82fbf457e5a51745bacff287bf32d53748", + "8 | Pubkey [2/2] : fdccace30d7557627d04c158e769", + "9 | Epoch : 1", + "10 | Gas limit : 0", + "11 | Fees : NAM 100.0" + ], + "valid": true + }, + { + "blob": "1e0000006532652d746573742e3935366638646232353162386231643331613539320023000000323032332d30372d32355431313a35393a32322e3134373437333938322b30303a30305d607561570987cdbaf7359ec8aac906d900261e16c00c80a9419e494286039b3c31eb1123743d6665cbd1142f593a2685dcd65d66efa9f24bfafae56a0fe5220100e1f50500000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e6007af50fc05fe1784a3d1665d168c9527f86940c4f14f72d048c40a2af12cf07c001000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000230eeb8c890100003700000000000000000000000100f34a4aa63fec052ca158bf0add63a0594610dae301000000009bcb6700c1ebb4079a01d9bb6a486880e250c44902230eeb8c8901000000bd140bc5daefff5bc3975ed6658860a2df919bd0fe936d66d88d2bdc7412e8b6", + "index": 0, + "name": "Vote_Proposal_0", "output": [ - "0 | Type : Bond", - "1 | Source [1/3] : atest1v4ehgw36xumnxsj9gguyxdpkxvcngs3e", - "1 | Source [2/3] : g4q5vvzpgdp5gwpjxqcrwvf3gccnqdzrgfrr2d", - "1 | Source [3/3] : jyuetzra", - "2 | Validator [1/3] : atest1v4ehgw36x5m5g33sxvunz32rg3znxwfj", - "2 | Validator [2/3] : xppnjvjygyens3f5gezrww2xgfznzse3x4q5vv", - "2 | Validator [3/3] : 3nss6z3p", - "3 | Amount : NAM 900.0" + "0 | Type : Vote Proposal", + "1 | ID : 0", + "2 | Vote : nay", + "3 | Voter [1/3] : atest1v4ehgw36gcengsf5g9qnvv6xg4pnqdfj", + "3 | Voter [2/3] : gdqnzdfcgfrrqs2ygsmrxsfsx5ungd33xpzyz3", + "3 | Voter [3/3] : fnrer08w", + "4 | Delegations [1/3] : atest1v4ehgw3689pyxs3kxucrqse3g4pyydps", + "4 | Delegations [2/3] : xuu5zvp3gsu5ys3kgy6rsd3c8qcy2v34xppngd", + "4 | Delegations [3/3] : pe4rvq2h" ], "output_expert": [ - "0 | Code hash [1/2] : c5af313728e281c2578b4bd8cbc9cbbfb0209d", - "0 | Code hash [2/2] : 0785734b462c44b9a631012900", - "1 | Source [1/3] : atest1v4ehgw36xumnxsj9gguyxdpkxvcngs3e", - "1 | Source [2/3] : g4q5vvzpgdp5gwpjxqcrwvf3gccnqdzrgfrr2d", - "1 | Source [3/3] : jyuetzra", - "2 | Validator [1/3] : atest1v4ehgw36x5m5g33sxvunz32rg3znxwfj", - "2 | Validator [2/3] : xppnjvjygyens3f5gezrww2xgfznzse3x4q5vv", - "2 | Validator [3/3] : 3nss6z3p", - "3 | Amount : NAM 900.0", - "4 | Timestamp : 2023-06-19 11:08:51.718772869 UTC", - "5 | Pubkey [1/2] : 00d9458d9ae70b725813fd13be8c26febd094b", - "5 | Pubkey [2/2] : b5a3f81654ddcd8416e45fc2b373", - "6 | Epoch : 1", - "7 | Gas limit : 0", - "8 | Fees : NAM 100.0" + "0 | Code hash [1/2] : bd140bc5daefff5bc3975ed6658860a2df919b", + "0 | Code hash [2/2] : d0fe936d66d88d2bdc7412e8b6", + "1 | ID : 0", + "2 | Vote : nay", + "3 | Voter [1/3] : atest1v4ehgw36gcengsf5g9qnvv6xg4pnqdfj", + "3 | Voter [2/3] : gdqnzdfcgfrrqs2ygsmrxsfsx5ungd33xpzyz3", + "3 | Voter [3/3] : fnrer08w", + "4 | Delegations [1/3] : atest1v4ehgw3689pyxs3kxucrqse3g4pyydps", + "4 | Delegations [2/3] : xuu5zvp3gsu5ys3kgy6rsd3c8qcy2v34xppngd", + "4 | Delegations [3/3] : pe4rvq2h", + "5 | Timestamp : 2023-07-25 11:59:22.147473982 UTC", + "6 | Pubkey [1/2] : 007af50fc05fe1784a3d1665d168c9527f8694", + "6 | Pubkey [2/2] : 0c4f14f72d048c40a2af12cf07c0", + "7 | Epoch : 1", + "8 | Gas limit : 0", + "9 | Fees : NAM 100.0" ], "valid": true }, { - "blob": "1e0000006532652d746573742e3364333666316461353466336435643166323335330023000000323032332d30362d31395431313a30383a35372e3638313935313735342b30303a3030e0ab8817648bf165de6ad30b859115b8537990d2dc08c176828492b12f0fae3713723ab64fbaf15b12518b39efa7cf2d42048b427e4d14f75f71f8be1d41fbee0100e1f5050000000000280000003442383846423931334130373636453330413030423246423841413239343941373130453234453600a99a391a750acf6424a3b0a0aaa3f2c8f379f24cabaaeb2c23408f024e952de801000000000000000000000000000000000500000000d1f757d3880100006300000000280000003537444630333931454344453339323043393244413338453446443739464245314331354146323300e9a435000000000100280000003432453843463142344130323231354145363232333841343737384642323736454639383231433802d2f757d38801000000c5af313728e281c2578b4bd8cbc9cbbfb0209d0785734b462c44b9a63101290003fff757d38801000013723ab64fbaf15b12518b39efa7cf2d42048b427e4d14f75f71f8be1d41fbee003542242b42c1e006e57186ea25bf807bdb4695e5052db08efe43241e890c5f109953d0100a83d2c5de7e9e8cae32b150f6670fda943d3dd843ed3dfd80bd830000a99a391a750acf6424a3b0a0aaa3f2c8f379f24cabaaeb2c23408f024e952de803fff757d388010000e0ab8817648bf165de6ad30b859115b8537990d2dc08c176828492b12f0fae3700bad117e08af45122ca9d27fef4ae40675db57c1dfaa94f03cbebb013ed7b36854cbcd98132bea85596956c79bf91c06dcb6271159e504eacc0a6d5b66e38ac0500a99a391a750acf6424a3b0a0aaa3f2c8f379f24cabaaeb2c23408f024e952de8038af857d3880100001fc9032666c4e046fa37059f69b7c5ecacc3e5392b09a77859c8600e0d04571200a999015fb8602ec6d3ba4be0a7af06dcd521d1754195d93d3cdbb6fdafe63091ab06df5bfd8c7c45da0ec1c2f3b3973a0ab2c2dde515fa60b7a7ca78a5ba370500a99a391a750acf6424a3b0a0aaa3f2c8f379f24cabaaeb2c23408f024e952de8", + "blob": "1e0000006532652d746573742e3935366638646232353162386231643331613539320023000000323032332d30372d32355431313a35393a32352e3735393733383935312b30303a3030a805dc58fa2cc0595e1ab3cd63bc93428251e2befed875092f86417cb9f7c6c5d377e012ad582f407d4290476022337d1cb9a2d37de90920a7f448d4f972a94e0100e1f50500000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e600ed82fbf457e5a51745bacff287bf32d53748fdccace30d7557627d04c158e7690100000000000000000000000000000000000000000000000000000000000000000000000000000001010000000000000000260100000000000002000000003f1ceb8c89010000230000000000000000000000000000d52d1dcea809648d4d0cbd0697ff0b7a983230b400000000023f1ceb8c8901000000bd140bc5daefff5bc3975ed6658860a2df919bd0fe936d66d88d2bdc7412e8b6", "index": 0, - "name": "Bond_3", + "name": "Vote_Proposal_1", "output": [ - "0 | Type : Bond", - "1 | Source [1/3] : atest1v4ehgw36xsey2wzrgcc5ydzpxqeryvf4", - "1 | Source [2/3] : g9znvv3jxvuyzdphxuuyvs3jxumy233e8qerzs", - "1 | Source [3/3] : ecdvt2tj", - "2 | Validator [1/3] : atest1v4ehgw36x5m5g33sxvunz32rg3znxwfj", - "2 | Validator [2/3] : xppnjvjygyens3f5gezrww2xgfznzse3x4q5vv", - "2 | Validator [3/3] : 3nss6z3p", - "3 | Amount : NAM 900.0" + "0 | Type : Vote Proposal", + "1 | ID : 0", + "2 | Vote : yay", + "3 | Voter [1/3] : atest1v4ehgw36gs6ny3p3g3p52sfcxqunvdpc", + "3 | Voter [2/3] : gs6ygvzrgfzrqd3exaryvvzzxaqnjwpnxgenqs", + "3 | Voter [3/3] : 35vvk7ln" ], "output_expert": [ - "0 | Code hash [1/2] : c5af313728e281c2578b4bd8cbc9cbbfb0209d", - "0 | Code hash [2/2] : 0785734b462c44b9a631012900", - "1 | Source [1/3] : atest1v4ehgw36xsey2wzrgcc5ydzpxqeryvf4", - "1 | Source [2/3] : g9znvv3jxvuyzdphxuuyvs3jxumy233e8qerzs", - "1 | Source [3/3] : ecdvt2tj", - "2 | Validator [1/3] : atest1v4ehgw36x5m5g33sxvunz32rg3znxwfj", - "2 | Validator [2/3] : xppnjvjygyens3f5gezrww2xgfznzse3x4q5vv", - "2 | Validator [3/3] : 3nss6z3p", - "3 | Amount : NAM 900.0", - "4 | Timestamp : 2023-06-19 11:08:57.681951754 UTC", - "5 | Pubkey [1/2] : 00a99a391a750acf6424a3b0a0aaa3f2c8f379", - "5 | Pubkey [2/2] : f24cabaaeb2c23408f024e952de8", + "0 | Code hash [1/2] : bd140bc5daefff5bc3975ed6658860a2df919b", + "0 | Code hash [2/2] : d0fe936d66d88d2bdc7412e8b6", + "1 | ID : 0", + "2 | Vote : yay", + "3 | Voter [1/3] : atest1v4ehgw36gs6ny3p3g3p52sfcxqunvdpc", + "3 | Voter [2/3] : gs6ygvzrgfzrqd3exaryvvzzxaqnjwpnxgenqs", + "3 | Voter [3/3] : 35vvk7ln", + "4 | Timestamp : 2023-07-25 11:59:25.759738951 UTC", + "5 | Pubkey [1/2] : 00ed82fbf457e5a51745bacff287bf32d53748", + "5 | Pubkey [2/2] : fdccace30d7557627d04c158e769", "6 | Epoch : 1", "7 | Gas limit : 0", "8 | Fees : NAM 100.0" @@ -198,32 +200,32 @@ "valid": true }, { - "blob": "1e0000006532652d746573742e3364333666316461353466336435643166323335330023000000323032332d30362d31395431313a30393a30372e3239393239323536362b30303a303013f32bb6029d5373e0f09dd55e1126a8452214ef378fdfe00d206494878419b58117bb08ac7a1423c47750c79e20a4b07d1762c56ac7626e2365608754ebd81c0100e1f5050000000000280000003442383846423931334130373636453330413030423246423841413239343941373130453234453600a99a391a750acf6424a3b0a0aaa3f2c8f379f24cabaaeb2c23408f024e952de801000000000000000000000000000000000500000000631d58d3880100006300000000280000003537444630333931454344453339323043393244413338453446443739464245314331354146323300e9a435000000000100280000003432453843463142344130323231354145363232333841343737384642323736454639383231433802631d58d38801000000c5af313728e281c2578b4bd8cbc9cbbfb0209d0785734b462c44b9a63101290003921d58d3880100008117bb08ac7a1423c47750c79e20a4b07d1762c56ac7626e2365608754ebd81c0061d898491e689add174a76841a113ce19bc7013924d255bbaca9ceacdbb1c808a8957136861c114e5d7d90112e2192c66c2393e2fd5600e9a3bd229e0323e90600a99a391a750acf6424a3b0a0aaa3f2c8f379f24cabaaeb2c23408f024e952de803931d58d38801000013f32bb6029d5373e0f09dd55e1126a8452214ef378fdfe00d206494878419b5002e783abf64bcedd63981c4021275db87dc5274124fbab23e649804305058fafaaa50ab18b84c1616644cd9df6365aaa97bb2d78ba717950c8dd1786e60a8550500a99a391a750acf6424a3b0a0aaa3f2c8f379f24cabaaeb2c23408f024e952de803221e58d38801000043a9196a948b31cdb9e23cfc940188d1d5b19bfa1edcf17e953f9b24e056756c006f758420fb9a694492d59924debee43aa96fcb81a481b04bf6c333f5ff4300164afd464314c54ff35c99b8a69cbdab68a9984b48b4dc451f378a3a545021af0a00a99a391a750acf6424a3b0a0aaa3f2c8f379f24cabaaeb2c23408f024e952de8", + "blob": "1e0000006532652d746573742e3935366638646232353162386231643331613539320023000000323032332d30372d32355431313a35393a32392e3635353337343034342b30303a303033fb24c442282966efed3fe3a347ba38a081e0db41b1acf27f7c39dfbb4640ddfcadf30f232a660394b42cb19ffac2e0a6ffc47f581f484ac5733497eea21b1e0100e1f50500000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e600ed82fbf457e5a51745bacff287bf32d53748fdccace30d7557627d04c158e76901000000000000000000000000000000000000000000000000000000000000000000000000000000010101000000000000006e000000000000000200000000772beb8c890100004b000000009bcb6700c1ebb4079a01d9bb6a486880e250c44900e9a435000000000000000000000000000000000000000000000000000000000100d52d1dcea809648d4d0cbd0697ff0b7a983230b402772beb8c8901000000f44f821502b1d8ef3bb11af645babe350394c39c6b8b1cef848bf60aa4aaaf8d", "index": 0, - "name": "Bond_4", + "name": "Bond_1", "output": [ "0 | Type : Bond", - "1 | Source [1/3] : atest1v4ehgw36xsey2wzrgcc5ydzpxqeryvf4", - "1 | Source [2/3] : g9znvv3jxvuyzdphxuuyvs3jxumy233e8qerzs", - "1 | Source [3/3] : ecdvt2tj", - "2 | Validator [1/3] : atest1v4ehgw36x5m5g33sxvunz32rg3znxwfj", - "2 | Validator [2/3] : xppnjvjygyens3f5gezrww2xgfznzse3x4q5vv", - "2 | Validator [3/3] : 3nss6z3p", + "1 | Source [1/3] : atest1v4ehgw36gs6ny3p3g3p52sfcxqunvdpc", + "1 | Source [2/3] : gs6ygvzrgfzrqd3exaryvvzzxaqnjwpnxgenqs", + "1 | Source [3/3] : 35vvk7ln", + "2 | Validator [1/3] : atest1v4ehgw3689pyxs3kxucrqse3g4pyydps", + "2 | Validator [2/3] : xuu5zvp3gsu5ys3kgy6rsd3c8qcy2v34xppngd", + "2 | Validator [3/3] : pe4rvq2h", "3 | Amount : NAM 900.0" ], "output_expert": [ - "0 | Code hash [1/2] : c5af313728e281c2578b4bd8cbc9cbbfb0209d", - "0 | Code hash [2/2] : 0785734b462c44b9a631012900", - "1 | Source [1/3] : atest1v4ehgw36xsey2wzrgcc5ydzpxqeryvf4", - "1 | Source [2/3] : g9znvv3jxvuyzdphxuuyvs3jxumy233e8qerzs", - "1 | Source [3/3] : ecdvt2tj", - "2 | Validator [1/3] : atest1v4ehgw36x5m5g33sxvunz32rg3znxwfj", - "2 | Validator [2/3] : xppnjvjygyens3f5gezrww2xgfznzse3x4q5vv", - "2 | Validator [3/3] : 3nss6z3p", + "0 | Code hash [1/2] : f44f821502b1d8ef3bb11af645babe350394c3", + "0 | Code hash [2/2] : 9c6b8b1cef848bf60aa4aaaf8d", + "1 | Source [1/3] : atest1v4ehgw36gs6ny3p3g3p52sfcxqunvdpc", + "1 | Source [2/3] : gs6ygvzrgfzrqd3exaryvvzzxaqnjwpnxgenqs", + "1 | Source [3/3] : 35vvk7ln", + "2 | Validator [1/3] : atest1v4ehgw3689pyxs3kxucrqse3g4pyydps", + "2 | Validator [2/3] : xuu5zvp3gsu5ys3kgy6rsd3c8qcy2v34xppngd", + "2 | Validator [3/3] : pe4rvq2h", "3 | Amount : NAM 900.0", - "4 | Timestamp : 2023-06-19 11:09:07.299292566 UTC", - "5 | Pubkey [1/2] : 00a99a391a750acf6424a3b0a0aaa3f2c8f379", - "5 | Pubkey [2/2] : f24cabaaeb2c23408f024e952de8", + "4 | Timestamp : 2023-07-25 11:59:29.655374044 UTC", + "5 | Pubkey [1/2] : 00ed82fbf457e5a51745bacff287bf32d53748", + "5 | Pubkey [2/2] : fdccace30d7557627d04c158e769", "6 | Epoch : 1", "7 | Gas limit : 0", "8 | Fees : NAM 100.0" @@ -231,26 +233,26 @@ "valid": true }, { - "blob": "1e0000006532652d746573742e3364333666316461353466336435643166323335330023000000323032332d30362d31395431313a30393a33322e3337373838323532362b30303a303033ce040f37e81f33f457323e4840955e2bdb264fde23778698d4df315e315eb3398aa92f3b93927e1e172229e113b7fbf0a97fc523dc6d0369f72708b54a43c00100e1f5050000000000280000003442383846423931334130373636453330413030423246423841413239343941373130453234453600a99a391a750acf6424a3b0a0aaa3f2c8f379f24cabaaeb2c23408f024e952de801000000000000000000000000000000000500000000597f58d3880100003600000000280000003432453843463142344130323231354145363232333841343737384642323736454639383231433840787d01000000000002597f58d38801000000c5af313728e281c2578b4bd8cbc9cbbfb0209d0785734b462c44b9a631012900035a7f58d388010000398aa92f3b93927e1e172229e113b7fbf0a97fc523dc6d0369f72708b54a43c0009836da513e374cfcfc880e664bad7aed7559869325de5e345526a8d3c1add3e130633d5433ed47002a5a272346233f68e572b884634c6ca3617f11546f2f410700a99a391a750acf6424a3b0a0aaa3f2c8f379f24cabaaeb2c23408f024e952de8035a7f58d38801000033ce040f37e81f33f457323e4840955e2bdb264fde23778698d4df315e315eb300477852683e0e341d441d4642a3eb6890f89c0ed3a1ef38334f8fae53bbf789a78549cbbb33c293866ed2acd6daa677b7fd5fd7e1291d1e0d1e74480ee7b2850400a99a391a750acf6424a3b0a0aaa3f2c8f379f24cabaaeb2c23408f024e952de803e27f58d3880100004a9014750bf5650a3d9d6f75650c504caa2745d6a5fc2bab0875d27ccc7639bd005b892a20e4db84052a8296a96c3b70b1738d37e290788af57238c3c230bb7daeb192303d59520f77e1c320e954db0cbe38ce194c459edfb0fc8f50ee80cd370900a99a391a750acf6424a3b0a0aaa3f2c8f379f24cabaaeb2c23408f024e952de8", + "blob": "1e0000006532652d746573742e3935366638646232353162386231643331613539320023000000323032332d30372d32355431313a35393a33332e3836333636373330392b30303a303040803822095af15d73d56caa915846826854059b67e5d12dc17f4cd0ebe91a5ce1cdceb61a32ad0e09e476d2205a7d6fb72ab24d6cbe71f5fd344167fbf21df20100e1f50500000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e600ed82fbf457e5a51745bacff287bf32d53748fdccace30d7557627d04c158e769010000000000000000000000000000000000000000000000000000000000000000000000000000000101020000000000000072000000000000000200000000e73beb8c890100003500000000d52d1dcea809648d4d0cbd0697ff0b7a983230b400743ba40b00000000000000000000000000000000000000000000000000000002e73beb8c890100000000e41e2272cb17dab319ea0598854db738ee901d75893b61b8b754460f23df78", "index": 0, - "name": "Bond_5", + "name": "Change_Commission_1", "output": [ - "0 | Type : Bond", - "1 | Validator [1/3] : atest1v4ehgw36xsey2wzrgcc5ydzpxqeryvf4", - "1 | Validator [2/3] : g9znvv3jxvuyzdphxuuyvs3jxumy233e8qerzs", - "1 | Validator [3/3] : ecdvt2tj", - "2 | Amount : NAM 25.0" + "0 | Type : Change commission", + "1 | New rate : 0.05", + "2 | Validator [1/3] : atest1v4ehgw36gs6ny3p3g3p52sfcxqunvdpc", + "2 | Validator [2/3] : gs6ygvzrgfzrqd3exaryvvzzxaqnjwpnxgenqs", + "2 | Validator [3/3] : 35vvk7ln" ], "output_expert": [ - "0 | Code hash [1/2] : c5af313728e281c2578b4bd8cbc9cbbfb0209d", - "0 | Code hash [2/2] : 0785734b462c44b9a631012900", - "1 | Validator [1/3] : atest1v4ehgw36xsey2wzrgcc5ydzpxqeryvf4", - "1 | Validator [2/3] : g9znvv3jxvuyzdphxuuyvs3jxumy233e8qerzs", - "1 | Validator [3/3] : ecdvt2tj", - "2 | Amount : NAM 25.0", - "3 | Timestamp : 2023-06-19 11:09:32.377882526 UTC", - "4 | Pubkey [1/2] : 00a99a391a750acf6424a3b0a0aaa3f2c8f379", - "4 | Pubkey [2/2] : f24cabaaeb2c23408f024e952de8", + "0 | Code hash [1/2] : 00e41e2272cb17dab319ea0598854db738ee90", + "0 | Code hash [2/2] : 1d75893b61b8b754460f23df78", + "1 | New rate : 0.05", + "2 | Validator [1/3] : atest1v4ehgw36gs6ny3p3g3p52sfcxqunvdpc", + "2 | Validator [2/3] : gs6ygvzrgfzrqd3exaryvvzzxaqnjwpnxgenqs", + "2 | Validator [3/3] : 35vvk7ln", + "3 | Timestamp : 2023-07-25 11:59:33.863667309 UTC", + "4 | Pubkey [1/2] : 00ed82fbf457e5a51745bacff287bf32d53748", + "4 | Pubkey [2/2] : fdccace30d7557627d04c158e769", "5 | Epoch : 1", "6 | Gas limit : 0", "7 | Fees : NAM 100.0" @@ -258,32 +260,32 @@ "valid": true }, { - "blob": "1e0000006532652d746573742e6437323136343362616635323461356230613435350023000000323032332d30362d31395431323a35343a32372e3734363035303532322b30303a3030819faecb9e44ad38c23d7d41c94c69f6b9f874595744a7d14b3298abb09c81f05880ff310fd4cc9ba0eea403091374445ef7a4859c65064a1ce3eb2887bb2e750100e1f5050000000000280000003442383846423931334130373636453330413030423246423841413239343941373130453234453600ef8ffbbcf933342a6ba57bc159e222c7d127df1fe1ce8fa0a8dbf1f062ee6ed101000000000000000000000000000000000500000000a28eb8d3880100006300000000280000003133303535453831333445313730314441373330303838374643383736434346454434363832374500e9a435000000000100280000003432353745434543433933343733323342423333353238383742324338394630443341383844324102a28eb8d38801000000c5af313728e281c2578b4bd8cbc9cbbfb0209d0785734b462c44b9a63101290003ce8eb8d3880100005880ff310fd4cc9ba0eea403091374445ef7a4859c65064a1ce3eb2887bb2e750075662de14def31589fadf1ae539d6929c991fe55cb25ee6d100df39ab61868ed05a5d15d880d65993660bf853b5d5911fdbcf493667636fae8e8d7a032dace0a00ef8ffbbcf933342a6ba57bc159e222c7d127df1fe1ce8fa0a8dbf1f062ee6ed103cf8eb8d388010000819faecb9e44ad38c23d7d41c94c69f6b9f874595744a7d14b3298abb09c81f000f803248fc53095725da3ba606ab23d722b6db47dba28ef733b23926a55deb807ee595e32a01555234ba89f2f9567530da17383076952717c3578680887dab70600ef8ffbbcf933342a6ba57bc159e222c7d127df1fe1ce8fa0a8dbf1f062ee6ed1035a8fb8d3880100003ffacd85967b416a4cce3449c3f6ac9c4ffb3fee48ceb80d55032e9aaafd37f1009dce8ea02af7b4c29e5655d3942357fb308c5cf8ba66884ff1a1ffc36d76e4bb727c9be3151a025bf1df535ccd6a1409c272eff1e764b605711e653db3b95c0900ef8ffbbcf933342a6ba57bc159e222c7d127df1fe1ce8fa0a8dbf1f062ee6ed1", + "blob": "1e0000006532652d746573742e3935366638646232353162386231643331613539320023000000323032332d30372d32355431313a35393a33392e3939313030383932352b30303a30308d78ed78fe76fc3129164ea37befe029ba427b4feb3326363e7e0978653d8230f03100d72b3d920a36fc4dc938591254c95c9a5558e2c97e8ba3c8ce369872be0100e1f50500000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e6007af50fc05fe1784a3d1665d168c9527f86940c4f14f72d048c40a2af12cf07c001000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000d753eb8c890100004b000000009bcb6700c1ebb4079a01d9bb6a486880e250c44900e9a435000000000000000000000000000000000000000000000000000000000100f34a4aa63fec052ca158bf0add63a0594610dae302d753eb8c8901000000f44f821502b1d8ef3bb11af645babe350394c39c6b8b1cef848bf60aa4aaaf8d", "index": 0, - "name": "Bond_6", + "name": "Bond_2", "output": [ "0 | Type : Bond", - "1 | Source [1/3] : atest1v4ehgw36xser2d69gdz5xseexv6rwvej", - "1 | Source [2/3] : xdpyyvenx5erswphggeyxwpegccygv6p8quygv", - "1 | Source [3/3] : jp4gcn9a", - "2 | Validator [1/3] : atest1v4ehgw36xyenqdf4g5urzve5g5cnwvp3", - "2 | Validator [2/3] : g3qnwvesxqursd6xgvurwdjrgdry23p5xcuryd", - "2 | Validator [3/3] : 69jx6t2q", + "1 | Source [1/3] : atest1v4ehgw36gcengsf5g9qnvv6xg4pnqdfj", + "1 | Source [2/3] : gdqnzdfcgfrrqs2ygsmrxsfsx5ungd33xpzyz3", + "1 | Source [3/3] : fnrer08w", + "2 | Validator [1/3] : atest1v4ehgw3689pyxs3kxucrqse3g4pyydps", + "2 | Validator [2/3] : xuu5zvp3gsu5ys3kgy6rsd3c8qcy2v34xppngd", + "2 | Validator [3/3] : pe4rvq2h", "3 | Amount : NAM 900.0" ], "output_expert": [ - "0 | Code hash [1/2] : c5af313728e281c2578b4bd8cbc9cbbfb0209d", - "0 | Code hash [2/2] : 0785734b462c44b9a631012900", - "1 | Source [1/3] : atest1v4ehgw36xser2d69gdz5xseexv6rwvej", - "1 | Source [2/3] : xdpyyvenx5erswphggeyxwpegccygv6p8quygv", - "1 | Source [3/3] : jp4gcn9a", - "2 | Validator [1/3] : atest1v4ehgw36xyenqdf4g5urzve5g5cnwvp3", - "2 | Validator [2/3] : g3qnwvesxqursd6xgvurwdjrgdry23p5xcuryd", - "2 | Validator [3/3] : 69jx6t2q", + "0 | Code hash [1/2] : f44f821502b1d8ef3bb11af645babe350394c3", + "0 | Code hash [2/2] : 9c6b8b1cef848bf60aa4aaaf8d", + "1 | Source [1/3] : atest1v4ehgw36gcengsf5g9qnvv6xg4pnqdfj", + "1 | Source [2/3] : gdqnzdfcgfrrqs2ygsmrxsfsx5ungd33xpzyz3", + "1 | Source [3/3] : fnrer08w", + "2 | Validator [1/3] : atest1v4ehgw3689pyxs3kxucrqse3g4pyydps", + "2 | Validator [2/3] : xuu5zvp3gsu5ys3kgy6rsd3c8qcy2v34xppngd", + "2 | Validator [3/3] : pe4rvq2h", "3 | Amount : NAM 900.0", - "4 | Timestamp : 2023-06-19 12:54:27.746050522 UTC", - "5 | Pubkey [1/2] : 00ef8ffbbcf933342a6ba57bc159e222c7d127", - "5 | Pubkey [2/2] : df1fe1ce8fa0a8dbf1f062ee6ed1", + "4 | Timestamp : 2023-07-25 11:59:39.991008925 UTC", + "5 | Pubkey [1/2] : 007af50fc05fe1784a3d1665d168c9527f8694", + "5 | Pubkey [2/2] : 0c4f14f72d048c40a2af12cf07c0", "6 | Epoch : 1", "7 | Gas limit : 0", "8 | Fees : NAM 100.0" @@ -291,98 +293,96 @@ "valid": true }, { - "blob": "1e0000006532652d746573742e6437323136343362616635323461356230613435350023000000323032332d30362d31395431323a35343a34392e3337343330313335362b30303a303023aa3611e765345090b944858a34f0bb77a2176461f33e2a75ce1881eb822e3af8d6e9728b911ee8ce9c228cdde93eea6637bf673f286a4ac74961ed71cbd8af0100e1f5050000000000280000003442383846423931334130373636453330413030423246423841413239343941373130453234453600bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0b4612d4d8cc517e92682205a747701000000000000000000000000000000010101000000000000007a0000000000000005000000001ee3b8d3880100006300000000280000003133303535453831333445313730314441373330303838374643383736434346454434363832374500e9a4350000000001002800000043364246443435463745443946344445383644334430414432343139384541343744453345464432021ee3b8d38801000000c5af313728e281c2578b4bd8cbc9cbbfb0209d0785734b462c44b9a631012900034ae3b8d388010000f8d6e9728b911ee8ce9c228cdde93eea6637bf673f286a4ac74961ed71cbd8af00271ac56b5c99d68b93a75ab4df92219c989c7b3b703e0319bcf520a4bd99098b8bc8bb14dba086e940237f4fe7d3d3fd637086c4e27a909de1b056c7520ecd0200bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0b4612d4d8cc517e92682205a7477034be3b8d38801000023aa3611e765345090b944858a34f0bb77a2176461f33e2a75ce1881eb822e3a001cfaaa6937f1ec49aef4c6f837691b6d4399ab9f19c7d6873d8135c5d64c509795d7ff46175377f43ebad69924fb02e93ce1519b1548da0800977fce22c5bc0200bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0b4612d4d8cc517e92682205a747703bde4b8d3880100009a2fbe31189091f53bd516f715960908da2ba41c853d28076dd7b74a7e41382f00df1a007a602c10ce931ba7c1d6324470057e2cb9da8e899a995b1d34700bd18ebe4b262b6df93107d15b85a7dd3858f6cacd17bb8c3832215f41dc776f30fd0900bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0b4612d4d8cc517e92682205a7477", + "blob": "1e0000006532652d746573742e3935366638646232353162386231643331613539320023000000323032332d30372d32355431313a35393a34332e3537313632303935322b30303a3030c1900f787f3fdf242f1b1125baff2ec5ad1bd4a18a7261e48514bcc91fad695cc761911d7e5865fa46707e12675e71aa1fe1e23fb6f2d024f97d6bb49d37a1740100e1f50500000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e6007af50fc05fe1784a3d1665d168c9527f86940c4f14f72d048c40a2af12cf07c001000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000d361eb8c890100003500000000f34a4aa63fec052ca158bf0add63a0594610dae3003c534c1000000000000000000000000000000000000000000000000000000002d361eb8c890100000000e41e2272cb17dab319ea0598854db738ee901d75893b61b8b754460f23df78", "index": 0, - "name": "Bond_7", + "name": "Change_Commission_2", "output": [ - "0 | Type : Bond", - "1 | Source [1/3] : atest1v4ehgw36gvmyy3jyxs65vd69gsu5vdzy", - "1 | Source [2/3] : g5urv3pngscyz3pjxscnjwz9gy6rw3z9xdz5v3", - "1 | Source [3/3] : pjksl96e", - "2 | Validator [1/3] : atest1v4ehgw36xyenqdf4g5urzve5g5cnwvp3", - "2 | Validator [2/3] : g3qnwvesxqursd6xgvurwdjrgdry23p5xcuryd", - "2 | Validator [3/3] : 69jx6t2q", - "3 | Amount : NAM 900.0" + "0 | Type : Change commission", + "1 | New rate : 0.07", + "2 | Validator [1/3] : atest1v4ehgw36gcengsf5g9qnvv6xg4pnqdfj", + "2 | Validator [2/3] : gdqnzdfcgfrrqs2ygsmrxsfsx5ungd33xpzyz3", + "2 | Validator [3/3] : fnrer08w" ], "output_expert": [ - "0 | Code hash [1/2] : c5af313728e281c2578b4bd8cbc9cbbfb0209d", - "0 | Code hash [2/2] : 0785734b462c44b9a631012900", - "1 | Source [1/3] : atest1v4ehgw36gvmyy3jyxs65vd69gsu5vdzy", - "1 | Source [2/3] : g5urv3pngscyz3pjxscnjwz9gy6rw3z9xdz5v3", - "1 | Source [3/3] : pjksl96e", - "2 | Validator [1/3] : atest1v4ehgw36xyenqdf4g5urzve5g5cnwvp3", - "2 | Validator [2/3] : g3qnwvesxqursd6xgvurwdjrgdry23p5xcuryd", - "2 | Validator [3/3] : 69jx6t2q", - "3 | Amount : NAM 900.0", - "4 | Timestamp : 2023-06-19 12:54:49.374301356 UTC", - "5 | Pubkey [1/2] : 00bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0", - "5 | Pubkey [2/2] : b4612d4d8cc517e92682205a7477", - "6 | Epoch : 1", - "7 | Gas limit : 0", - "8 | Fees : NAM 100.0" + "0 | Code hash [1/2] : 00e41e2272cb17dab319ea0598854db738ee90", + "0 | Code hash [2/2] : 1d75893b61b8b754460f23df78", + "1 | New rate : 0.07", + "2 | Validator [1/3] : atest1v4ehgw36gcengsf5g9qnvv6xg4pnqdfj", + "2 | Validator [2/3] : gdqnzdfcgfrrqs2ygsmrxsfsx5ungd33xpzyz3", + "2 | Validator [3/3] : fnrer08w", + "3 | Timestamp : 2023-07-25 11:59:43.571620952 UTC", + "4 | Pubkey [1/2] : 007af50fc05fe1784a3d1665d168c9527f8694", + "4 | Pubkey [2/2] : 0c4f14f72d048c40a2af12cf07c0", + "5 | Epoch : 1", + "6 | Gas limit : 0", + "7 | Fees : NAM 100.0" ], "valid": true }, { - "blob": "1e0000006532652d746573742e6437323136343362616635323461356230613435350023000000323032332d30362d31395431323a35343a35392e3330363237333338312b30303a30303148f44423bbd3d549776e022a3b7e5e2fa8ee21d8a5d0f4399f7f09c026a5865ec8dd2dc52fd75badf97c451efe19d1fe9503e715ef4f2d0a0cf9f5fbd9a3b10100e1f5050000000000280000003442383846423931334130373636453330413030423246423841413239343941373130453234453600ef8ffbbcf933342a6ba57bc159e222c7d127df1fe1ce8fa0a8dbf1f062ee6ed101000000000000000000000000000000000500000000ea09b9d3880100006300000000280000003133303535453831333445313730314441373330303838374643383736434346454434363832374500e9a435000000000100280000003432353745434543433933343733323342423333353238383742324338394630443341383844324102ea09b9d38801000000c5af313728e281c2578b4bd8cbc9cbbfb0209d0785734b462c44b9a63101290003160ab9d3880100005ec8dd2dc52fd75badf97c451efe19d1fe9503e715ef4f2d0a0cf9f5fbd9a3b100c0383c6d2f9e344620a84cbaad795f4d5e686a337ff60170c03cb5fe8d8cdc31f9376aeb28c814d76658c0a1206fd8730b6476e5ffaa895c790f87d7f0e3030100ef8ffbbcf933342a6ba57bc159e222c7d127df1fe1ce8fa0a8dbf1f062ee6ed103160ab9d3880100003148f44423bbd3d549776e022a3b7e5e2fa8ee21d8a5d0f4399f7f09c026a58600e5b7b7987502cecd86c2ebf51507e6439c913c052aed16912d68d857d1dc26afcdb041daa3dfe067e5b0f6e363cae5f3e290de1eb87e048e7f8793537f60c00700ef8ffbbcf933342a6ba57bc159e222c7d127df1fe1ce8fa0a8dbf1f062ee6ed1039a0ab9d388010000cc3d1125202a72b8a7e8039791c6dd98b64cda38fa52795e9cd96c304f3a965f0084fbdb97bb1cea31ffda30201c0bc55ebd1806f3cbf865ebdee08aaeb311c9f0c418048469dc21de9dcd97c0c81f78fc22c49aae78ba4f6785843cf39373910000ef8ffbbcf933342a6ba57bc159e222c7d127df1fe1ce8fa0a8dbf1f062ee6ed1", + "blob": "1e0000006532652d746573742e3935366638646232353162386231643331613539320023000000323032332d30372d32355431313a35393a34372e3330333035353533352b30303a3030c8e5942907ae95388ec25bc9ae16a1d14584ec73674cdb4def2678813ac98055c3ddc3a4a713aef7be7e8a8c3dbb55d89251e4222f6865f84a3f1ea2b3f792430100e1f50500000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e600ed82fbf457e5a51745bacff287bf32d53748fdccace30d7557627d04c158e7690100000000000000000000000000000000000000000000000000000000000000000000000000000001010300000000000000a90000000000000003000000019770eb8c89010000007e68fb834a7772c82a312c4e6e519d97282cce39507950c35fe89f1c347a4a2e009770eb8c890100004f00000000c0fd1bf858dba97eb9a0302efb149e91d023c562eae5fdbfa3f6551b013dd51600d52d1dcea809648d4d0cbd0697ff0b7a983230b4020c0000000000000018000000000000001e00000000000000029770eb8c8901000000d0a4d681cdc8b83e04a64fbc592bcbe9d93f28164d2d5cb5ff9a4fbd43d206b8", "index": 0, - "name": "Bond_8", + "name": "Init_Proposal_1", "output": [ - "0 | Type : Bond", - "1 | Source [1/3] : atest1v4ehgw36xser2d69gdz5xseexv6rwvej", - "1 | Source [2/3] : xdpyyvenx5erswphggeyxwpegccygv6p8quygv", - "1 | Source [3/3] : jp4gcn9a", - "2 | Validator [1/3] : atest1v4ehgw36xyenqdf4g5urzve5g5cnwvp3", - "2 | Validator [2/3] : g3qnwvesxqursd6xgvurwdjrgdry23p5xcuryd", - "2 | Validator [3/3] : 69jx6t2q", - "3 | Amount : NAM 900.0" - ], - "output_expert": [ - "0 | Code hash [1/2] : c5af313728e281c2578b4bd8cbc9cbbfb0209d", - "0 | Code hash [2/2] : 0785734b462c44b9a631012900", - "1 | Source [1/3] : atest1v4ehgw36xser2d69gdz5xseexv6rwvej", - "1 | Source [2/3] : xdpyyvenx5erswphggeyxwpegccygv6p8quygv", - "1 | Source [3/3] : jp4gcn9a", - "2 | Validator [1/3] : atest1v4ehgw36xyenqdf4g5urzve5g5cnwvp3", - "2 | Validator [2/3] : g3qnwvesxqursd6xgvurwdjrgdry23p5xcuryd", - "2 | Validator [3/3] : 69jx6t2q", - "3 | Amount : NAM 900.0", - "4 | Timestamp : 2023-06-19 12:54:59.306273381 UTC", - "5 | Pubkey [1/2] : 00ef8ffbbcf933342a6ba57bc159e222c7d127", - "5 | Pubkey [2/2] : df1fe1ce8fa0a8dbf1f062ee6ed1", - "6 | Epoch : 1", - "7 | Gas limit : 0", - "8 | Fees : NAM 100.0" - ], - "valid": true - }, - { - "blob": "1e0000006532652d746573742e6437323136343362616635323461356230613435350023000000323032332d30362d31395431323a35353a31312e3832393930333038392b30303a3030c6d54f654bed0c357b7683d9b665fff0fd2298f83ad4d17fe581f0ba576397679ecbd6a129a01798e0eba112f8be3a0dab94ba48c7a3c4c49b51fec38a2216690100e1f5050000000000280000003442383846423931334130373636453330413030423246423841413239343941373130453234453600ef8ffbbcf933342a6ba57bc159e222c7d127df1fe1ce8fa0a8dbf1f062ee6ed101000000000000000000000000000000000500000000d53ab9d3880100006300000000280000003133303535453831333445313730314441373330303838374643383736434346454434363832374500e9a435000000000100280000003432353745434543433933343733323342423333353238383742324338394630443341383844324102d53ab9d38801000000c5af313728e281c2578b4bd8cbc9cbbfb0209d0785734b462c44b9a63101290003063bb9d3880100009ecbd6a129a01798e0eba112f8be3a0dab94ba48c7a3c4c49b51fec38a22166900d738eb0afcd7f349b7494200d73c6317994d197af161b104e90e8efbc1011f1034d7ddfa32964c2d986b7be761ef6ff9bfda9e39f756c1612cbbd77e3aa0150c00ef8ffbbcf933342a6ba57bc159e222c7d127df1fe1ce8fa0a8dbf1f062ee6ed103073bb9d388010000c6d54f654bed0c357b7683d9b665fff0fd2298f83ad4d17fe581f0ba57639767000420e3b70075b52f288ecddbe27d735905718098b11b832b25362be4ee98381c80b277a3ff550e1fb1b8565d5e11dc27cd95bb7b6b4af9dbb74e80bb9a76810a00ef8ffbbcf933342a6ba57bc159e222c7d127df1fe1ce8fa0a8dbf1f062ee6ed103993bb9d3880100000e10f7c47d475cea741b90ac6c570d5bd1da08f8c1db77c7c2eef45cf239383b0042693e5e8e38d92348159f899730f4c76c70762aaa52ffff599aacaf3b9b0e3874340ce5f2cedd6e49e5598bf914ec1d899712abae4b61007ed660e74757eb0700ef8ffbbcf933342a6ba57bc159e222c7d127df1fe1ce8fa0a8dbf1f062ee6ed1", + "0 | Type : Init proposal", + "1 | Proposal type : ETH Bridge", + "2 | Author [1/3] : atest1v4ehgw36gs6ny3p3g3p52sfcxqunvdpc", + "2 | Author [2/3] : gs6ygvzrgfzrqd3exaryvvzzxaqnjwpnxgenqs", + "2 | Author [3/3] : 35vvk7ln", + "3 | Voting start epoch : 12", + "4 | Voting end epoch : 24", + "5 | Grace epoch : 30", + "6 | Content [1/2] : 7e68fb834a7772c82a312c4e6e519d97282cce", + "6 | Content [2/2] : 39507950c35fe89f1c347a4a2e" + ], + "output_expert": [ + "0 | Code hash [1/2] : d0a4d681cdc8b83e04a64fbc592bcbe9d93f28", + "0 | Code hash [2/2] : 164d2d5cb5ff9a4fbd43d206b8", + "1 | Proposal type : ETH Bridge", + "2 | Author [1/3] : atest1v4ehgw36gs6ny3p3g3p52sfcxqunvdpc", + "2 | Author [2/3] : gs6ygvzrgfzrqd3exaryvvzzxaqnjwpnxgenqs", + "2 | Author [3/3] : 35vvk7ln", + "3 | Voting start epoch : 12", + "4 | Voting end epoch : 24", + "5 | Grace epoch : 30", + "6 | Content [1/2] : 7e68fb834a7772c82a312c4e6e519d97282cce", + "6 | Content [2/2] : 39507950c35fe89f1c347a4a2e", + "7 | Timestamp : 2023-07-25 11:59:47.303055535 UTC", + "8 | Pubkey [1/2] : 00ed82fbf457e5a51745bacff287bf32d53748", + "8 | Pubkey [2/2] : fdccace30d7557627d04c158e769", + "9 | Epoch : 1", + "10 | Gas limit : 0", + "11 | Fees : NAM 100.0" + ], + "valid": true + }, + { + "blob": "1e0000006532652d746573742e3935366638646232353162386231643331613539320023000000323032332d30372d32355431313a35393a35322e3234333335333930322b30303a3030badc8980e4d65b17a112e434e374ac3818d2c923ae29eb55a9ecb610d56f9166d45a27bd2654bdeac4c204f8756925c6c16dedf0bd3816d8089bcc2c2e636fac0100e1f50500000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e6007af50fc05fe1784a3d1665d168c9527f86940c4f14f72d048c40a2af12cf07c001000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000b383eb8c890100004b000000009bcb6700c1ebb4079a01d9bb6a486880e250c44900e9a435000000000000000000000000000000000000000000000000000000000100f34a4aa63fec052ca158bf0add63a0594610dae302b383eb8c8901000000f44f821502b1d8ef3bb11af645babe350394c39c6b8b1cef848bf60aa4aaaf8d", "index": 0, - "name": "Bond_9", + "name": "Bond_3", "output": [ "0 | Type : Bond", - "1 | Source [1/3] : atest1v4ehgw36xser2d69gdz5xseexv6rwvej", - "1 | Source [2/3] : xdpyyvenx5erswphggeyxwpegccygv6p8quygv", - "1 | Source [3/3] : jp4gcn9a", - "2 | Validator [1/3] : atest1v4ehgw36xyenqdf4g5urzve5g5cnwvp3", - "2 | Validator [2/3] : g3qnwvesxqursd6xgvurwdjrgdry23p5xcuryd", - "2 | Validator [3/3] : 69jx6t2q", + "1 | Source [1/3] : atest1v4ehgw36gcengsf5g9qnvv6xg4pnqdfj", + "1 | Source [2/3] : gdqnzdfcgfrrqs2ygsmrxsfsx5ungd33xpzyz3", + "1 | Source [3/3] : fnrer08w", + "2 | Validator [1/3] : atest1v4ehgw3689pyxs3kxucrqse3g4pyydps", + "2 | Validator [2/3] : xuu5zvp3gsu5ys3kgy6rsd3c8qcy2v34xppngd", + "2 | Validator [3/3] : pe4rvq2h", "3 | Amount : NAM 900.0" ], "output_expert": [ - "0 | Code hash [1/2] : c5af313728e281c2578b4bd8cbc9cbbfb0209d", - "0 | Code hash [2/2] : 0785734b462c44b9a631012900", - "1 | Source [1/3] : atest1v4ehgw36xser2d69gdz5xseexv6rwvej", - "1 | Source [2/3] : xdpyyvenx5erswphggeyxwpegccygv6p8quygv", - "1 | Source [3/3] : jp4gcn9a", - "2 | Validator [1/3] : atest1v4ehgw36xyenqdf4g5urzve5g5cnwvp3", - "2 | Validator [2/3] : g3qnwvesxqursd6xgvurwdjrgdry23p5xcuryd", - "2 | Validator [3/3] : 69jx6t2q", + "0 | Code hash [1/2] : f44f821502b1d8ef3bb11af645babe350394c3", + "0 | Code hash [2/2] : 9c6b8b1cef848bf60aa4aaaf8d", + "1 | Source [1/3] : atest1v4ehgw36gcengsf5g9qnvv6xg4pnqdfj", + "1 | Source [2/3] : gdqnzdfcgfrrqs2ygsmrxsfsx5ungd33xpzyz3", + "1 | Source [3/3] : fnrer08w", + "2 | Validator [1/3] : atest1v4ehgw3689pyxs3kxucrqse3g4pyydps", + "2 | Validator [2/3] : xuu5zvp3gsu5ys3kgy6rsd3c8qcy2v34xppngd", + "2 | Validator [3/3] : pe4rvq2h", "3 | Amount : NAM 900.0", - "4 | Timestamp : 2023-06-19 12:55:11.829903089 UTC", - "5 | Pubkey [1/2] : 00ef8ffbbcf933342a6ba57bc159e222c7d127", - "5 | Pubkey [2/2] : df1fe1ce8fa0a8dbf1f062ee6ed1", + "4 | Timestamp : 2023-07-25 11:59:52.243353902 UTC", + "5 | Pubkey [1/2] : 007af50fc05fe1784a3d1665d168c9527f8694", + "5 | Pubkey [2/2] : 0c4f14f72d048c40a2af12cf07c0", "6 | Epoch : 1", "7 | Gas limit : 0", "8 | Fees : NAM 100.0" @@ -390,26 +390,26 @@ "valid": true }, { - "blob": "1e0000006532652d746573742e6437323136343362616635323461356230613435350023000000323032332d30362d31395431323a35353a34312e3933373934393130322b30303a3030a70191b8023c8e552f3816738a595967442cda54be5ba2cff0c1ae618d5fd67a998e4156263fa15f8a799ca990460eee6f6fde8865316745121d86af29e84e2e0100e1f5050000000000280000003442383846423931334130373636453330413030423246423841413239343941373130453234453600ef8ffbbcf933342a6ba57bc159e222c7d127df1fe1ce8fa0a8dbf1f062ee6ed10100000000000000000000000000000000050000000071b0b9d3880100003600000000280000003432353745434543433933343733323342423333353238383742324338394630443341383844324140787d0100000000000272b0b9d38801000000c5af313728e281c2578b4bd8cbc9cbbfb0209d0785734b462c44b9a6310129000372b0b9d388010000998e4156263fa15f8a799ca990460eee6f6fde8865316745121d86af29e84e2e0085e081040a6322f4c4a37dbeb5e61690fc9baa98ffbe6b0e618757fdeea4ea850aa79f2a5632cc95ae8371903d5fa5a2c62353ef0b23f4d0e176f305a6a99f0b00ef8ffbbcf933342a6ba57bc159e222c7d127df1fe1ce8fa0a8dbf1f062ee6ed10372b0b9d388010000a70191b8023c8e552f3816738a595967442cda54be5ba2cff0c1ae618d5fd67a00cc46cd179713464c8483b9715bb86efb01551326a279536297763a6cf040608dcaee4477d8153982844bd060cd5b2769c618ee4284e05f4225ce5819e67d210f00ef8ffbbcf933342a6ba57bc159e222c7d127df1fe1ce8fa0a8dbf1f062ee6ed10302b1b9d388010000cb17c4c062bfb378bd5fc9355c9446d487e43584c171d7c4cf07abbe2f9e9606006338a366cd01235c2971975c0c5f886678ca5586f5e71cf8a4994a282326161636208fca17cf093c33e108bb6720a49a7471e003d565202518e8bdc43730540100ef8ffbbcf933342a6ba57bc159e222c7d127df1fe1ce8fa0a8dbf1f062ee6ed1", + "blob": "1e0000006532652d746573742e3935366638646232353162386231643331613539320023000000323032332d30372d32355431313a35393a35362e3831393331333134312b30303a3030cf2e2e7cc57253945dc0a140caa322295d2f2d971482f91753434c79deb84a4d74eae9187e66972be3678b57c1ec152fbd4c835a6f7700d8c953f8c72320f7540100e1f50500000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e6007af50fc05fe1784a3d1665d168c9527f86940c4f14f72d048c40a2af12cf07c0010000000000000000000000000000000000000000000000000000000000000000000000000000000002000000009395eb8c890100003500000000f34a4aa63fec052ca158bf0add63a0594610dae300046bf414000000000000000000000000000000000000000000000000000000029395eb8c890100000000e41e2272cb17dab319ea0598854db738ee901d75893b61b8b754460f23df78", "index": 0, - "name": "Bond_10", + "name": "Change_Commission_3", "output": [ - "0 | Type : Bond", - "1 | Validator [1/3] : atest1v4ehgw36xser2d69gdz5xseexv6rwvej", - "1 | Validator [2/3] : xdpyyvenx5erswphggeyxwpegccygv6p8quygv", - "1 | Validator [3/3] : jp4gcn9a", - "2 | Amount : NAM 25.0" + "0 | Type : Change commission", + "1 | New rate : 0.09", + "2 | Validator [1/3] : atest1v4ehgw36gcengsf5g9qnvv6xg4pnqdfj", + "2 | Validator [2/3] : gdqnzdfcgfrrqs2ygsmrxsfsx5ungd33xpzyz3", + "2 | Validator [3/3] : fnrer08w" ], "output_expert": [ - "0 | Code hash [1/2] : c5af313728e281c2578b4bd8cbc9cbbfb0209d", - "0 | Code hash [2/2] : 0785734b462c44b9a631012900", - "1 | Validator [1/3] : atest1v4ehgw36xser2d69gdz5xseexv6rwvej", - "1 | Validator [2/3] : xdpyyvenx5erswphggeyxwpegccygv6p8quygv", - "1 | Validator [3/3] : jp4gcn9a", - "2 | Amount : NAM 25.0", - "3 | Timestamp : 2023-06-19 12:55:41.937949102 UTC", - "4 | Pubkey [1/2] : 00ef8ffbbcf933342a6ba57bc159e222c7d127", - "4 | Pubkey [2/2] : df1fe1ce8fa0a8dbf1f062ee6ed1", + "0 | Code hash [1/2] : 00e41e2272cb17dab319ea0598854db738ee90", + "0 | Code hash [2/2] : 1d75893b61b8b754460f23df78", + "1 | New rate : 0.09", + "2 | Validator [1/3] : atest1v4ehgw36gcengsf5g9qnvv6xg4pnqdfj", + "2 | Validator [2/3] : gdqnzdfcgfrrqs2ygsmrxsfsx5ungd33xpzyz3", + "2 | Validator [3/3] : fnrer08w", + "3 | Timestamp : 2023-07-25 11:59:56.819313141 UTC", + "4 | Pubkey [1/2] : 007af50fc05fe1784a3d1665d168c9527f8694", + "4 | Pubkey [2/2] : 0c4f14f72d048c40a2af12cf07c0", "5 | Epoch : 1", "6 | Gas limit : 0", "7 | Fees : NAM 100.0" @@ -417,96 +417,215 @@ "valid": true }, { - "blob": "1e0000006532652d746573742e6563353631326230393430336233333238396463380023000000323032332d30362d31335431383a30343a33372e3335373430303038322b30303a3030e7bc0efa7893db738bc540d80d1a5d2a8e9bdf63db5eb413ad33c17479687e9414d02a58e14f54e84f2502064bdd95e57bc1055b4d3f13f3172f574a289f23900100e1f50500000000002800000034423838464239313341303736364533304130304232464238414132393439413731304532344536008cd8ee423546ee43cf7dd4ee51638557682e045ec0303b8b8ce9e6714297e008010000000000000000000000000000000005000000006d5ceeb58801000021000000008cd8ee423546ee43cf7dd4ee51638557682e045ec0303b8b8ce9e6714297e008026d5ceeb58801000000ccd2d3cf7eb36af965e52e10b300523e796b7c5517278a0703c429d670fff479036d5ceeb58801000014d02a58e14f54e84f2502064bdd95e57bc1055b4d3f13f3172f574a289f23900008c589c69d7bb3af5a3301056fc4e20ef650bbdb2b15cd029dcebb39dce6e92c875726a3f55d1ea99912038dffec6ff10b6e1d81f049b366619e051b47a4590a008cd8ee423546ee43cf7dd4ee51638557682e045ec0303b8b8ce9e6714297e008036d5ceeb588010000e7bc0efa7893db738bc540d80d1a5d2a8e9bdf63db5eb413ad33c17479687e9400e8cec14f4f491dee6a97735fc898908820b0cd7065c883d31c48767cf2b59f3a45de53ad2b196d8b92c931de088c3ea1f8af367e6ab4c0545559d25d14e3ae09008cd8ee423546ee43cf7dd4ee51638557682e045ec0303b8b8ce9e6714297e00803fc5ceeb58801000006b4c84a819b9b1ea0e97ea03f70d27cb4afd4614fb743f626e3754722a99d64002040e25d812ee2056127998108130a60bec93272b31f3a9b32e0a780569e9d4ef6e560e9aaedec987491c430e5e0df0bba078fa5eb38850640aea471eb5f5b04008cd8ee423546ee43cf7dd4ee51638557682e045ec0303b8b8ce9e6714297e008", + "blob": "1e0000006532652d746573742e3935366638646232353162386231643331613539320023000000323032332d30372d32355431323a30303a30302e3630363938303037302b30303a303053259ce0e64a4caae6677a4abde8cf4dc3832eb80ad07003a7314b7c5151cb5c1a991c4af91aacfb6a31712df79abe69aac88aff381dbbd1317d860c665d440b0100e1f50500000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e600ed82fbf457e5a51745bacff287bf32d53748fdccace30d7557627d04c158e7690100000000000000000000000000000000000000000000000000000000000000000000000000000001010400000000000000340000000000000003000000018ba4eb8c89010000007e68fb834a7772c82a312c4e6e519d97282cce39507950c35fe89f1c347a4a2e008ba4eb8c890100004f00000000aaf0a23ffde974c16af5c82c80c95b4f2ce220b41e0e9e8c61a427ae5ef3f36600d52d1dcea809648d4d0cbd0697ff0b7a983230b4010c0000000000000018000000000000001e00000000000000028ba4eb8c8901000000d0a4d681cdc8b83e04a64fbc592bcbe9d93f28164d2d5cb5ff9a4fbd43d206b8", "index": 0, - "name": "Reveal_Pubkey_0", + "name": "Init_Proposal_2", "output": [ - "0 | Type : Reveal Pubkey", - "1 | Public key [1/2] : 008cd8ee423546ee43cf7dd4ee51638557682e", - "1 | Public key [2/2] : 045ec0303b8b8ce9e6714297e008" + "0 | Type : Init proposal", + "1 | Proposal type : PGF Council", + "2 | Author [1/3] : atest1v4ehgw36gs6ny3p3g3p52sfcxqunvdpc", + "2 | Author [2/3] : gs6ygvzrgfzrqd3exaryvvzzxaqnjwpnxgenqs", + "2 | Author [3/3] : 35vvk7ln", + "3 | Voting start epoch : 12", + "4 | Voting end epoch : 24", + "5 | Grace epoch : 30", + "6 | Content [1/2] : 7e68fb834a7772c82a312c4e6e519d97282cce", + "6 | Content [2/2] : 39507950c35fe89f1c347a4a2e" + ], + "output_expert": [ + "0 | Code hash [1/2] : d0a4d681cdc8b83e04a64fbc592bcbe9d93f28", + "0 | Code hash [2/2] : 164d2d5cb5ff9a4fbd43d206b8", + "1 | Proposal type : PGF Council", + "2 | Author [1/3] : atest1v4ehgw36gs6ny3p3g3p52sfcxqunvdpc", + "2 | Author [2/3] : gs6ygvzrgfzrqd3exaryvvzzxaqnjwpnxgenqs", + "2 | Author [3/3] : 35vvk7ln", + "3 | Voting start epoch : 12", + "4 | Voting end epoch : 24", + "5 | Grace epoch : 30", + "6 | Content [1/2] : 7e68fb834a7772c82a312c4e6e519d97282cce", + "6 | Content [2/2] : 39507950c35fe89f1c347a4a2e", + "7 | Timestamp : 2023-07-25 12:00:00.606980070 UTC", + "8 | Pubkey [1/2] : 00ed82fbf457e5a51745bacff287bf32d53748", + "8 | Pubkey [2/2] : fdccace30d7557627d04c158e769", + "9 | Epoch : 1", + "10 | Gas limit : 0", + "11 | Fees : NAM 100.0" + ], + "valid": true + }, + { + "blob": "1e0000006532652d746573742e3935366638646232353162386231643331613539320023000000323032332d30372d32355431323a30303a30342e3739393331343037312b30303a3030d8945bdf3fdb12f5d2efd7fd3917e1bafe9e92f71141b86f9000bc4e5ff0312f0d2588d28f363d12f7cd03ced4b37480b5d75ea0dcb3032041c20da0be7b613e0100e1f50500000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e600ed82fbf457e5a51745bacff287bf32d53748fdccace30d7557627d04c158e769010000000000000000000000000000000000000000000000000000000000000000000000000000000101050000000000000004000000000000000300000001efb4eb8c89010000007e68fb834a7772c82a312c4e6e519d97282cce39507950c35fe89f1c347a4a2e00efb4eb8c890100004f00000000e6ae1e4bca37dff1ecfac9ca80dc4110e5d14260619b047452b87c4abd635c1900d52d1dcea809648d4d0cbd0697ff0b7a983230b4010c0000000000000018000000000000001e0000000000000002efb4eb8c8901000000d0a4d681cdc8b83e04a64fbc592bcbe9d93f28164d2d5cb5ff9a4fbd43d206b8", + "index": 0, + "name": "Init_Proposal_3", + "output": [ + "0 | Type : Init proposal", + "1 | Proposal type : PGF Council", + "2 | Author [1/3] : atest1v4ehgw36gs6ny3p3g3p52sfcxqunvdpc", + "2 | Author [2/3] : gs6ygvzrgfzrqd3exaryvvzzxaqnjwpnxgenqs", + "2 | Author [3/3] : 35vvk7ln", + "3 | Voting start epoch : 12", + "4 | Voting end epoch : 24", + "5 | Grace epoch : 30", + "6 | Content [1/2] : 7e68fb834a7772c82a312c4e6e519d97282cce", + "6 | Content [2/2] : 39507950c35fe89f1c347a4a2e" + ], + "output_expert": [ + "0 | Code hash [1/2] : d0a4d681cdc8b83e04a64fbc592bcbe9d93f28", + "0 | Code hash [2/2] : 164d2d5cb5ff9a4fbd43d206b8", + "1 | Proposal type : PGF Council", + "2 | Author [1/3] : atest1v4ehgw36gs6ny3p3g3p52sfcxqunvdpc", + "2 | Author [2/3] : gs6ygvzrgfzrqd3exaryvvzzxaqnjwpnxgenqs", + "2 | Author [3/3] : 35vvk7ln", + "3 | Voting start epoch : 12", + "4 | Voting end epoch : 24", + "5 | Grace epoch : 30", + "6 | Content [1/2] : 7e68fb834a7772c82a312c4e6e519d97282cce", + "6 | Content [2/2] : 39507950c35fe89f1c347a4a2e", + "7 | Timestamp : 2023-07-25 12:00:04.799314071 UTC", + "8 | Pubkey [1/2] : 00ed82fbf457e5a51745bacff287bf32d53748", + "8 | Pubkey [2/2] : fdccace30d7557627d04c158e769", + "9 | Epoch : 1", + "10 | Gas limit : 0", + "11 | Fees : NAM 100.0" + ], + "valid": true + }, + { + "blob": "1e0000006532652d746573742e3935366638646232353162386231643331613539320023000000323032332d30372d32355431323a30303a30392e3338333632303436322b30303a3030de7a0a8f4ec4933eeb6f21d1e0f09fe40f7aa002ebee79cec6108e9748cecc70738ccb21023239d8fce09cfa242ec003376df15d11986e25fb602332e09cc1e50100e1f50500000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e6007af50fc05fe1784a3d1665d168c9527f86940c4f14f72d048c40a2af12cf07c001000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000a7c6eb8c8901000071000000020000000000000000010100000000d52d1dcea809648d4d0cbd0697ff0b7a983230b4840300000000000000000000000000000000000000000000000000000000000000f34a4aa63fec052ca158bf0add63a0594610dae301000000009bcb6700c1ebb4079a01d9bb6a486880e250c44902a7c6eb8c8901000000bd140bc5daefff5bc3975ed6658860a2df919bd0fe936d66d88d2bdc7412e8b6", + "index": 0, + "name": "Vote_Proposal_2", + "output": [ + "0 | Type : Vote Proposal", + "1 | ID : 2", + "2 | Vote [1/4] : yay with councils:\nCouncil: atest1v4eh", + "2 | Vote [2/4] : gw36gs6ny3p3g3p52sfcxqunvdpcgs6ygvzrgf", + "2 | Vote [3/4] : zrqd3exaryvvzzxaqnjwpnxgenqs35vvk7ln, ", + "2 | Vote [4/4] : spending cap: 0.0009", + "3 | Voter [1/3] : atest1v4ehgw36gcengsf5g9qnvv6xg4pnqdfj", + "3 | Voter [2/3] : gdqnzdfcgfrrqs2ygsmrxsfsx5ungd33xpzyz3", + "3 | Voter [3/3] : fnrer08w", + "4 | Delegations [1/3] : atest1v4ehgw3689pyxs3kxucrqse3g4pyydps", + "4 | Delegations [2/3] : xuu5zvp3gsu5ys3kgy6rsd3c8qcy2v34xppngd", + "4 | Delegations [3/3] : pe4rvq2h" ], "output_expert": [ - "0 | Code hash [1/2] : ccd2d3cf7eb36af965e52e10b300523e796b7c", - "0 | Code hash [2/2] : 5517278a0703c429d670fff479", - "1 | Public key [1/2] : 008cd8ee423546ee43cf7dd4ee51638557682e", - "1 | Public key [2/2] : 045ec0303b8b8ce9e6714297e008", - "2 | Timestamp : 2023-06-13 18:04:37.357400082 UTC", - "3 | Pubkey [1/2] : 008cd8ee423546ee43cf7dd4ee51638557682e", - "3 | Pubkey [2/2] : 045ec0303b8b8ce9e6714297e008", - "4 | Epoch : 1", - "5 | Gas limit : 0", - "6 | Fees : NAM 100.0" + "0 | Code hash [1/2] : bd140bc5daefff5bc3975ed6658860a2df919b", + "0 | Code hash [2/2] : d0fe936d66d88d2bdc7412e8b6", + "1 | ID : 2", + "2 | Vote [1/4] : yay with councils:\nCouncil: atest1v4eh", + "2 | Vote [2/4] : gw36gs6ny3p3g3p52sfcxqunvdpcgs6ygvzrgf", + "2 | Vote [3/4] : zrqd3exaryvvzzxaqnjwpnxgenqs35vvk7ln, ", + "2 | Vote [4/4] : spending cap: 0.0009", + "3 | Voter [1/3] : atest1v4ehgw36gcengsf5g9qnvv6xg4pnqdfj", + "3 | Voter [2/3] : gdqnzdfcgfrrqs2ygsmrxsfsx5ungd33xpzyz3", + "3 | Voter [3/3] : fnrer08w", + "4 | Delegations [1/3] : atest1v4ehgw3689pyxs3kxucrqse3g4pyydps", + "4 | Delegations [2/3] : xuu5zvp3gsu5ys3kgy6rsd3c8qcy2v34xppngd", + "4 | Delegations [3/3] : pe4rvq2h", + "5 | Timestamp : 2023-07-25 12:00:09.383620462 UTC", + "6 | Pubkey [1/2] : 007af50fc05fe1784a3d1665d168c9527f8694", + "6 | Pubkey [2/2] : 0c4f14f72d048c40a2af12cf07c0", + "7 | Epoch : 1", + "8 | Gas limit : 0", + "9 | Fees : NAM 100.0" ], "valid": true }, { - "blob": "1e0000006532652d746573742e3364333666316461353466336435643166323335330023000000323032332d30362d31395431313a30393a33352e3735363932373139342b30303a3030bf6d403d5688493a3fbfbc876bd6de1b9307de6eeef829dae472035c26416cb2f2888fcee5b81f98610272420d646c9d90da2bb0e654828b767dbfec7c18071f0100e1f5050000000000280000003442383846423931334130373636453330413030423246423841413239343941373130453234453600d9458d9ae70b725813fd13be8c26febd094bb5a3f81654ddcd8416e45fc2b3730100000000000000000000000000000001010500000000000000940000000000000005000000008c8c58d3880100002100000000d9458d9ae70b725813fd13be8c26febd094bb5a3f81654ddcd8416e45fc2b373028d8c58d38801000000ccd2d3cf7eb36af965e52e10b300523e796b7c5517278a0703c429d670fff479038d8c58d388010000f2888fcee5b81f98610272420d646c9d90da2bb0e654828b767dbfec7c18071f00d7b3533e08811bdf16e76695be19f5eb2b617f9a62003761bba51cfdd570ff9d849c906a8a0985da795ffd16012dfe6e10b3dba50508f70c2fef717f0331df0800d9458d9ae70b725813fd13be8c26febd094bb5a3f81654ddcd8416e45fc2b373038e8c58d388010000bf6d403d5688493a3fbfbc876bd6de1b9307de6eeef829dae472035c26416cb20020f40e956c7c052b7a116334d408a618e9b3e9aa832fffc0b0bed3613c039f5ddd21e88d7a14104d50636786287157a1d684ff28044620cb82578921c50ab20100d9458d9ae70b725813fd13be8c26febd094bb5a3f81654ddcd8416e45fc2b373030a8e58d388010000975b58dad33e12a93fd2536d3f8cf781b5cfb28bf4ff8dfb9b9b63aa9a5285210089a2933d17ff0fedd33761ca509e001055fde811197547eca75e47e0ade5b15ca162bfa6541c0fe169f5a7ebda6c844617315aa393e9c8edd16c06f1b288e50300d9458d9ae70b725813fd13be8c26febd094bb5a3f81654ddcd8416e45fc2b373", + "blob": "1e0000006532652d746573742e3935366638646232353162386231643331613539320023000000323032332d30372d32355431323a30303a31342e3034333332343938372b30303a30308cff99cebe4760c3720e117cb6c52506da15cfde8dd2df45813875c980eaa8b89bc92935c910412f9f93c317246ca5a21485a5cd8602fe745d3bcea991b4e8520100e1f50500000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e6007af50fc05fe1784a3d1665d168c9527f86940c4f14f72d048c40a2af12cf07c001000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000dbd8eb8c8901000071000000030000000000000000010100000000d52d1dcea809648d4d0cbd0697ff0b7a983230b4840300000000000000000000000000000000000000000000000000000000000000f34a4aa63fec052ca158bf0add63a0594610dae301000000009bcb6700c1ebb4079a01d9bb6a486880e250c44902dbd8eb8c8901000000bd140bc5daefff5bc3975ed6658860a2df919bd0fe936d66d88d2bdc7412e8b6", "index": 0, - "name": "Reveal_Pubkey_1", + "name": "Vote_Proposal_3", "output": [ - "0 | Type : Reveal Pubkey", - "1 | Public key [1/2] : 00d9458d9ae70b725813fd13be8c26febd094b", - "1 | Public key [2/2] : b5a3f81654ddcd8416e45fc2b373" + "0 | Type : Vote Proposal", + "1 | ID : 3", + "2 | Vote [1/4] : yay with councils:\nCouncil: atest1v4eh", + "2 | Vote [2/4] : gw36gs6ny3p3g3p52sfcxqunvdpcgs6ygvzrgf", + "2 | Vote [3/4] : zrqd3exaryvvzzxaqnjwpnxgenqs35vvk7ln, ", + "2 | Vote [4/4] : spending cap: 0.0009", + "3 | Voter [1/3] : atest1v4ehgw36gcengsf5g9qnvv6xg4pnqdfj", + "3 | Voter [2/3] : gdqnzdfcgfrrqs2ygsmrxsfsx5ungd33xpzyz3", + "3 | Voter [3/3] : fnrer08w", + "4 | Delegations [1/3] : atest1v4ehgw3689pyxs3kxucrqse3g4pyydps", + "4 | Delegations [2/3] : xuu5zvp3gsu5ys3kgy6rsd3c8qcy2v34xppngd", + "4 | Delegations [3/3] : pe4rvq2h" ], "output_expert": [ - "0 | Code hash [1/2] : ccd2d3cf7eb36af965e52e10b300523e796b7c", - "0 | Code hash [2/2] : 5517278a0703c429d670fff479", - "1 | Public key [1/2] : 00d9458d9ae70b725813fd13be8c26febd094b", - "1 | Public key [2/2] : b5a3f81654ddcd8416e45fc2b373", - "2 | Timestamp : 2023-06-19 11:09:35.756927194 UTC", - "3 | Pubkey [1/2] : 00d9458d9ae70b725813fd13be8c26febd094b", - "3 | Pubkey [2/2] : b5a3f81654ddcd8416e45fc2b373", - "4 | Epoch : 1", - "5 | Gas limit : 0", - "6 | Fees : NAM 100.0" + "0 | Code hash [1/2] : bd140bc5daefff5bc3975ed6658860a2df919b", + "0 | Code hash [2/2] : d0fe936d66d88d2bdc7412e8b6", + "1 | ID : 3", + "2 | Vote [1/4] : yay with councils:\nCouncil: atest1v4eh", + "2 | Vote [2/4] : gw36gs6ny3p3g3p52sfcxqunvdpcgs6ygvzrgf", + "2 | Vote [3/4] : zrqd3exaryvvzzxaqnjwpnxgenqs35vvk7ln, ", + "2 | Vote [4/4] : spending cap: 0.0009", + "3 | Voter [1/3] : atest1v4ehgw36gcengsf5g9qnvv6xg4pnqdfj", + "3 | Voter [2/3] : gdqnzdfcgfrrqs2ygsmrxsfsx5ungd33xpzyz3", + "3 | Voter [3/3] : fnrer08w", + "4 | Delegations [1/3] : atest1v4ehgw3689pyxs3kxucrqse3g4pyydps", + "4 | Delegations [2/3] : xuu5zvp3gsu5ys3kgy6rsd3c8qcy2v34xppngd", + "4 | Delegations [3/3] : pe4rvq2h", + "5 | Timestamp : 2023-07-25 12:00:14.043324987 UTC", + "6 | Pubkey [1/2] : 007af50fc05fe1784a3d1665d168c9527f8694", + "6 | Pubkey [2/2] : 0c4f14f72d048c40a2af12cf07c0", + "7 | Epoch : 1", + "8 | Gas limit : 0", + "9 | Fees : NAM 100.0" ], "valid": true }, { - "blob": "1e0000006532652d746573742e6437323136343362616635323461356230613435350023000000323032332d30362d31395431323a35353a35302e3030373339303335372b30303a303099d3cc3a790bb66776762ac2111356871962fad9fc2ea84f6ec58731318b7430cdf618583342fa52421523d539bb1e5bfae366bfacbd7a89ce3b29159cf2255d0100e1f5050000000000280000003442383846423931334130373636453330413030423246423841413239343941373130453234453600bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0b4612d4d8cc517e92682205a7477010000000000000000000000000000000101060000000000000096010000000000000500000000f7cfb9d3880100002100000000bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0b4612d4d8cc517e92682205a747702f7cfb9d38801000000ccd2d3cf7eb36af965e52e10b300523e796b7c5517278a0703c429d670fff47903f7cfb9d388010000cdf618583342fa52421523d539bb1e5bfae366bfacbd7a89ce3b29159cf2255d00b7aad8c3db21120c08f939b64b9092d09159069512b76f049c8dcf4febf52609fc497b6e690e9123b87e32e7cc715220be75f3ba3388474c18e5cc43eafc780000bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0b4612d4d8cc517e92682205a747703f7cfb9d38801000099d3cc3a790bb66776762ac2111356871962fad9fc2ea84f6ec58731318b743000939eaaa0a9bce6e7302d5fee7d3e695cdf7b99257b54a968a3fe3b64d43249da34c003d453f389b84485719450f45a90382b12c293cd4e9f994a69257e0fca0a00bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0b4612d4d8cc517e92682205a74770366d1b9d388010000bd9685b56dd00aad495459c263a985e5642eb0ef9efd62212417ef858eb5fa42000b566305ea5cd81cd3205078d71dbea7caa2811abf23cf2629768f85fecb8b73da8a5b238bb88459a5e71115abe5c7591e61af55bc1aae5489a4888e92e4170400bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0b4612d4d8cc517e92682205a7477", + "blob": "1e0000006532652d746573742e3935366638646232353162386231643331613539320023000000323032332d30372d32355431323a30303a31372e3833313130353731372b30303a303088e19c0596e2491ea5c46b96fbb5910c2959b94baaad845b672b70673ff9db9f1c307b2bf1c182d25dd1bc67e1724d48ad66f93f7d10fb70976114ce6aed8a5e0100e1f50500000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e6007af50fc05fe1784a3d1665d168c9527f86940c4f14f72d048c40a2af12cf07c001000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000a7e7eb8c890100006300000000f34a4aa63fec052ca158bf0add63a0594610dae300fc6221811e2f240c89e66c017b4de5be993f0483003d234d1e39e181d52d018065e142ca91c052be3e00003717890000000000000000000000000000000000000000000000000000000008000002a7e7eb8c890100000055f9780f74dfbcfefe09fb667331893abd63eddfcf07f78e5f19711cb9f0a8aa", "index": 0, - "name": "Reveal_Pubkey_2", + "name": "Transfer_1", "output": [ - "0 | Type : Reveal Pubkey", - "1 | Public key [1/2] : 00bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0", - "1 | Public key [2/2] : b4612d4d8cc517e92682205a7477" + "0 | Type : Transfer", + "1 | Sender [1/3] : atest1v4ehgw36gcengsf5g9qnvv6xg4pnqdfj", + "1 | Sender [2/3] : gdqnzdfcgfrrqs2ygsmrxsfsx5ungd33xpzyz3", + "1 | Sender [3/3] : fnrer08w", + "2 | Destination [1/3] : atest1v4ehgw36gepnvv3jxyurzv29xfrrydps", + "2 | Destination [2/3] : gvurj3fkxepnqvfhgg6yg3f4gfznjwfngccrgw", + "2 | Destination [3/3] : pntvu60x", + "3 | Amount : BTC 23.0" ], "output_expert": [ - "0 | Code hash [1/2] : ccd2d3cf7eb36af965e52e10b300523e796b7c", - "0 | Code hash [2/2] : 5517278a0703c429d670fff479", - "1 | Public key [1/2] : 00bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0", - "1 | Public key [2/2] : b4612d4d8cc517e92682205a7477", - "2 | Timestamp : 2023-06-19 12:55:50.007390357 UTC", - "3 | Pubkey [1/2] : 00bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0", - "3 | Pubkey [2/2] : b4612d4d8cc517e92682205a7477", - "4 | Epoch : 1", - "5 | Gas limit : 0", - "6 | Fees : NAM 100.0" + "0 | Code hash [1/2] : 55f9780f74dfbcfefe09fb667331893abd63ed", + "0 | Code hash [2/2] : dfcf07f78e5f19711cb9f0a8aa", + "1 | Sender [1/3] : atest1v4ehgw36gcengsf5g9qnvv6xg4pnqdfj", + "1 | Sender [2/3] : gdqnzdfcgfrrqs2ygsmrxsfsx5ungd33xpzyz3", + "1 | Sender [3/3] : fnrer08w", + "2 | Destination [1/3] : atest1v4ehgw36gepnvv3jxyurzv29xfrrydps", + "2 | Destination [2/3] : gvurj3fkxepnqvfhgg6yg3f4gfznjwfngccrgw", + "2 | Destination [3/3] : pntvu60x", + "3 | Amount : BTC 23.0", + "4 | Timestamp : 2023-07-25 12:00:17.831105717 UTC", + "5 | Pubkey [1/2] : 007af50fc05fe1784a3d1665d168c9527f8694", + "5 | Pubkey [2/2] : 0c4f14f72d048c40a2af12cf07c0", + "6 | Epoch : 1", + "7 | Gas limit : 0", + "8 | Fees : NAM 100.0" ], "valid": true }, { - "blob": "1e0000006532652d746573742e6563353631326230393430336233333238396463380023000000323032332d30362d31335431383a30343a34312e3135333432393834312b30303a303037a298541026d4048efc435753aa271114097014a65a9c1694be25dde51bcb62b5840c61a64271712ed99d95e6ae5bc6e119903db99eb288b4e906e21686ad4a0100e1f5050000000000280000003442383846423931334130373636453330413030423246423841413239343941373130453234453600d04d39252f8f76ee4ce7ff1ce846f45d9bb0aa4b84e10e7ee96382958f4c9d3a01000000000000000000000000000000000600000001416beeb58801000000a464a5b93a5827e2c0eea0edb37b16c829676fe7879fcc36e872c4a40badf10d00416beeb5880100004d0000000028000000434546323544383643414443444239364631323845443136444446414235333144333437314532452040867121e0e6302f82b61a8fc709b55c13d123d89e83a7af92d9b415fa2ff502416beeb588010000008d00c0f6b71511fd48da76679f3f9a5b41103b93161a71b0c97b212906a71dbb03416beeb588010000b5840c61a64271712ed99d95e6ae5bc6e119903db99eb288b4e906e21686ad4a00081d2d4ccd7aacd8f3ccb2e91d7bb440014143c324d5840aca54cb42af9e9f4fc52bae467010234e1fa166d9ee2e94ecb8f0eb03ef1afcfd5671339151abe00700d04d39252f8f76ee4ce7ff1ce846f45d9bb0aa4b84e10e7ee96382958f4c9d3a03416beeb58801000037a298541026d4048efc435753aa271114097014a65a9c1694be25dde51bcb6200fc99083fc34adb776a1b0295603e563c54783b5dc1b0c1966c8cdb427718fef3165dde571a5aa0b4d50313dcfcfd54c1028ac31b925e4217ccf51841f3d32e0700d04d39252f8f76ee4ce7ff1ce846f45d9bb0aa4b84e10e7ee96382958f4c9d3a03c76beeb588010000185ff87a1220f0a6dabda86828ad9ef8539ff691f928e13dbe72ec09af31ad5500a702d9b2c403adc4b2ec95854259ad7087002d65039ea17dcfc17a123db58c61e8461320bd5f5c116be5588d865a6c6f7cdefc0353e69e7630881fa25836bb0e00d04d39252f8f76ee4ce7ff1ce846f45d9bb0aa4b84e10e7ee96382958f4c9d3a", + "blob": "1e0000006532652d746573742e3935366638646232353162386231643331613539320023000000323032332d30372d32355431323a30303a32312e3338333533333831352b30303a3030db8a27db475d2021a7b4d9c41d9caeec43e1b522db913be504c0545d3ba8e7abd56ee28d9687382a0eb22c5db74a2548aeef050698a677a749e3744d1d2ebd720100e1f50500000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e6007af50fc05fe1784a3d1665d168c9527f86940c4f14f72d048c40a2af12cf07c00100000000000000000000000000000000000000000000000000000000000000000000000000000000020000000087f5eb8c890100003600000000f34a4aa63fec052ca158bf0add63a0594610dae340787d0100000000000000000000000000000000000000000000000000000000000287f5eb8c8901000000f44f821502b1d8ef3bb11af645babe350394c39c6b8b1cef848bf60aa4aaaf8d", "index": 0, - "name": "UpdateVP_0", + "name": "Bond_4", "output": [ - "0 | Type : Update VP", - "1 | Address [1/3] : atest1v4ehgw36gdz5vv34gsurvs6pg3p5gs3e", - "1 | Address [2/3] : xerrzv3cg4zrzdjyg3ryzs34xvc5gve5xuc52v", - "1 | Address [3/3] : j9nrutay", - "2 | VP type : User" + "0 | Type : Bond", + "1 | Validator [1/3] : atest1v4ehgw36gcengsf5g9qnvv6xg4pnqdfj", + "1 | Validator [2/3] : gdqnzdfcgfrrqs2ygsmrxsfsx5ungd33xpzyz3", + "1 | Validator [3/3] : fnrer08w", + "2 | Amount : NAM 25.0" ], "output_expert": [ - "0 | Code hash [1/2] : 8d00c0f6b71511fd48da76679f3f9a5b41103b", - "0 | Code hash [2/2] : 93161a71b0c97b212906a71dbb", - "1 | Address [1/3] : atest1v4ehgw36gdz5vv34gsurvs6pg3p5gs3e", - "1 | Address [2/3] : xerrzv3cg4zrzdjyg3ryzs34xvc5gve5xuc52v", - "1 | Address [3/3] : j9nrutay", - "2 | VP type [1/2] : a464a5b93a5827e2c0eea0edb37b16c829676f", - "2 | VP type [2/2] : e7879fcc36e872c4a40badf10d", - "3 | Timestamp : 2023-06-13 18:04:41.153429841 UTC", - "4 | Pubkey [1/2] : 00d04d39252f8f76ee4ce7ff1ce846f45d9bb0", - "4 | Pubkey [2/2] : aa4b84e10e7ee96382958f4c9d3a", + "0 | Code hash [1/2] : f44f821502b1d8ef3bb11af645babe350394c3", + "0 | Code hash [2/2] : 9c6b8b1cef848bf60aa4aaaf8d", + "1 | Validator [1/3] : atest1v4ehgw36gcengsf5g9qnvv6xg4pnqdfj", + "1 | Validator [2/3] : gdqnzdfcgfrrqs2ygsmrxsfsx5ungd33xpzyz3", + "1 | Validator [3/3] : fnrer08w", + "2 | Amount : NAM 25.0", + "3 | Timestamp : 2023-07-25 12:00:21.383533815 UTC", + "4 | Pubkey [1/2] : 007af50fc05fe1784a3d1665d168c9527f8694", + "4 | Pubkey [2/2] : 0c4f14f72d048c40a2af12cf07c0", "5 | Epoch : 1", "6 | Gas limit : 0", "7 | Fees : NAM 100.0" @@ -514,27 +633,26 @@ "valid": true }, { - "blob": "1e0000006532652d746573742e3364333666316461353466336435643166323335330023000000323032332d30362d31395431313a30393a33392e3436393835383635352b30303a3030071bf617f7a149127f6bc1dfae1d1e8d61840ee6d14f09cf29ea60e186b59b31104c352193a949a3c0eab25056bc9e798121d9d9837379f9e679eb9a0d26517c0100e1f5050000000000280000003442383846423931334130373636453330413030423246423841413239343941373130453234453600a99a391a750acf6424a3b0a0aaa3f2c8f379f24cabaaeb2c23408f024e952de8010000000000000000000000000000000006000000010d9b58d38801000000a464a5b93a5827e2c0eea0edb37b16c829676fe7879fcc36e872c4a40badf10d000d9b58d3880100004d00000000280000003432453843463142344130323231354145363232333841343737384642323736454639383231433842a6d9d80d72d00f7ad6f296961b9dd2a796ef5b4d44ca9eaa0c482cb9b0a57a020d9b58d388010000008d00c0f6b71511fd48da76679f3f9a5b41103b93161a71b0c97b212906a71dbb030e9b58d388010000104c352193a949a3c0eab25056bc9e798121d9d9837379f9e679eb9a0d26517c0034cf6f95c3181700b4301d3ed4fae57b6df4ce121ffd11c703a0082a64501f785e8c02562d1e6d83c4b1f6608884119c4466d9ac8f5e54d06b5393df326d170900a99a391a750acf6424a3b0a0aaa3f2c8f379f24cabaaeb2c23408f024e952de8030f9b58d388010000071bf617f7a149127f6bc1dfae1d1e8d61840ee6d14f09cf29ea60e186b59b31001bcc26e136c872f33adb18324da7f9f44f20a5d10a655416c8f04a1e558004fd16a2f80974430d7ab84faf30657a571f4e08d9cf9e7b8eddf9b5d7931d31c90700a99a391a750acf6424a3b0a0aaa3f2c8f379f24cabaaeb2c23408f024e952de803929b58d38801000052b4c718a37860349a3bc8d7b74cb7c86bb33d878b568fb4f9449d3b5f0af25600dde3e0e5eccd565920c63a187f3d8395ee101a26636cd6f427664c77f90cc749a1ae16b99c27d5c06c45fe78f324458fe51bce79439d9c6aceb40ade5782ee0a00a99a391a750acf6424a3b0a0aaa3f2c8f379f24cabaaeb2c23408f024e952de8", + "blob": "1e0000006532652d746573742e3935366638646232353162386231643331613539320023000000323032332d30372d32355431323a30303a32342e3937353337373437382b30303a3030d7be7fdd44047fa65ecdb562895894bb5095cd568514bdbbde7f011750088ab0194986460d96b8469c5d22bf5d7bb56794b305053e58819b31560e92fd9133ab0100e1f50500000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e6007af50fc05fe1784a3d1665d168c9527f86940c4f14f72d048c40a2af12cf07c0010000000000000000000000000000000000000000000000000000000000000000000000000000000002000000008f03ec8c890100003500000000f34a4aa63fec052ca158bf0add63a0594610dae300cc829c19000000000000000000000000000000000000000000000000000000028f03ec8c890100000000e41e2272cb17dab319ea0598854db738ee901d75893b61b8b754460f23df78", "index": 0, - "name": "UpdateVP_1", + "name": "Change_Commission_4", "output": [ - "0 | Type : Update VP", - "1 | Address [1/3] : atest1v4ehgw36xsey2wzrgcc5ydzpxqeryvf4", - "1 | Address [2/3] : g9znvv3jxvuyzdphxuuyvs3jxumy233e8qerzs", - "1 | Address [3/3] : ecdvt2tj", - "2 | VP type : User" + "0 | Type : Change commission", + "1 | New rate : 0.11", + "2 | Validator [1/3] : atest1v4ehgw36gcengsf5g9qnvv6xg4pnqdfj", + "2 | Validator [2/3] : gdqnzdfcgfrrqs2ygsmrxsfsx5ungd33xpzyz3", + "2 | Validator [3/3] : fnrer08w" ], "output_expert": [ - "0 | Code hash [1/2] : 8d00c0f6b71511fd48da76679f3f9a5b41103b", - "0 | Code hash [2/2] : 93161a71b0c97b212906a71dbb", - "1 | Address [1/3] : atest1v4ehgw36xsey2wzrgcc5ydzpxqeryvf4", - "1 | Address [2/3] : g9znvv3jxvuyzdphxuuyvs3jxumy233e8qerzs", - "1 | Address [3/3] : ecdvt2tj", - "2 | VP type [1/2] : a464a5b93a5827e2c0eea0edb37b16c829676f", - "2 | VP type [2/2] : e7879fcc36e872c4a40badf10d", - "3 | Timestamp : 2023-06-19 11:09:39.469858655 UTC", - "4 | Pubkey [1/2] : 00a99a391a750acf6424a3b0a0aaa3f2c8f379", - "4 | Pubkey [2/2] : f24cabaaeb2c23408f024e952de8", + "0 | Code hash [1/2] : 00e41e2272cb17dab319ea0598854db738ee90", + "0 | Code hash [2/2] : 1d75893b61b8b754460f23df78", + "1 | New rate : 0.11", + "2 | Validator [1/3] : atest1v4ehgw36gcengsf5g9qnvv6xg4pnqdfj", + "2 | Validator [2/3] : gdqnzdfcgfrrqs2ygsmrxsfsx5ungd33xpzyz3", + "2 | Validator [3/3] : fnrer08w", + "3 | Timestamp : 2023-07-25 12:00:24.975377478 UTC", + "4 | Pubkey [1/2] : 007af50fc05fe1784a3d1665d168c9527f8694", + "4 | Pubkey [2/2] : 0c4f14f72d048c40a2af12cf07c0", "5 | Epoch : 1", "6 | Gas limit : 0", "7 | Fees : NAM 100.0" @@ -542,53 +660,50 @@ "valid": true }, { - "blob": "1e0000006532652d746573742e6437323136343362616635323461356230613435350023000000323032332d30362d31395431323a35353a35342e3738393933363934382b30303a3030b946fe8f0b09f8045f42ce2bcc03b1905ecc28d71cc08734b9eb1049c53286aab35ed759d2e7486c2b343c87612821427e98647432b0f78c81b99bc167ca03930100e1f5050000000000280000003442383846423931334130373636453330413030423246423841413239343941373130453234453600ef8ffbbcf933342a6ba57bc159e222c7d127df1fe1ce8fa0a8dbf1f062ee6ed101000000000000000000000000000000000600000001a5e2b9d38801000000a464a5b93a5827e2c0eea0edb37b16c829676fe7879fcc36e872c4a40badf10d00a6e2b9d3880100004d0000000028000000343235374543454343393334373332334242333335323838374232433839463044334138384432418b6911cd18a25a787b607c08746493147049c6e75ce7c17018f85365d918a81f02a6e2b9d388010000008d00c0f6b71511fd48da76679f3f9a5b41103b93161a71b0c97b212906a71dbb03a6e2b9d388010000b35ed759d2e7486c2b343c87612821427e98647432b0f78c81b99bc167ca03930005fb3498389bee5ccd4275bf9dea40a61de177c9a5ca778349661a609becfd5ebd99717e07616e28202877512c6c2ccdb88caf67896dcc6e9504bbd84773b20700ef8ffbbcf933342a6ba57bc159e222c7d127df1fe1ce8fa0a8dbf1f062ee6ed103a6e2b9d388010000b946fe8f0b09f8045f42ce2bcc03b1905ecc28d71cc08734b9eb1049c53286aa005522e34ec33bf9f11ca7629b6c09840c546430d4cb03a471a7eaac25706091511f00862c53f1adde168209af57e136ce917271b243e5de5f0afd5acafd6f120000ef8ffbbcf933342a6ba57bc159e222c7d127df1fe1ce8fa0a8dbf1f062ee6ed10332e3b9d388010000dde7405a4abee9ae13b98d0cfe943b757642e5f5ea41e3007f4ec61d2bc4010b00faa492165070557aa20ba6430864657559204e6e4b87e04e6eef23177502c7aec15b85e64de8c65a105af8fdac4e82444f47b68f1b6e0edd62b6a429febe9d0e00ef8ffbbcf933342a6ba57bc159e222c7d127df1fe1ce8fa0a8dbf1f062ee6ed1", + "blob": "1e0000006532652d746573742e3935366638646232353162386231643331613539320023000000323032332d30372d32355431323a30303a32382e3430353433353137382b30303a3030671fc8d48b078deecfb4aa5a19b4e23511e3616c82de17f9f3f582b76551d171aa9fbcb19773b168b4e2ee8f4d4a479f755f54e0e0d6a395807bfae586fcc8ac0100e1f50500000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e600ed82fbf457e5a51745bacff287bf32d53748fdccace30d7557627d04c158e769010000000000000000000000000000000000000000000000000000000000000000000000000000000101060000000000000078030000000000000200000000f510ec8c890100002100000000ed82fbf457e5a51745bacff287bf32d53748fdccace30d7557627d04c158e76902f510ec8c890100000055ffd11771034c91738bf8dd55ca2ffa1299be50fdb08ceed071d950469ddfee", "index": 0, - "name": "Update_VP_2", + "name": "Reveal_Pubkey_0", "output": [ - "0 | Type : Update VP", - "1 | Address [1/3] : atest1v4ehgw36xser2d69gdz5xseexv6rwvej", - "1 | Address [2/3] : xdpyyvenx5erswphggeyxwpegccygv6p8quygv", - "1 | Address [3/3] : jp4gcn9a", - "2 | VP type : User" + "0 | Type : Reveal Pubkey", + "1 | Public key [1/2] : 00ed82fbf457e5a51745bacff287bf32d53748", + "1 | Public key [2/2] : fdccace30d7557627d04c158e769" ], "output_expert": [ - "0 | Code hash [1/2] : 8d00c0f6b71511fd48da76679f3f9a5b41103b", - "0 | Code hash [2/2] : 93161a71b0c97b212906a71dbb", - "1 | Address [1/3] : atest1v4ehgw36xser2d69gdz5xseexv6rwvej", - "1 | Address [2/3] : xdpyyvenx5erswphggeyxwpegccygv6p8quygv", - "1 | Address [3/3] : jp4gcn9a", - "2 | VP type [1/2] : a464a5b93a5827e2c0eea0edb37b16c829676f", - "2 | VP type [2/2] : e7879fcc36e872c4a40badf10d", - "3 | Timestamp : 2023-06-19 12:55:54.789936948 UTC", - "4 | Pubkey [1/2] : 00ef8ffbbcf933342a6ba57bc159e222c7d127", - "4 | Pubkey [2/2] : df1fe1ce8fa0a8dbf1f062ee6ed1", - "5 | Epoch : 1", - "6 | Gas limit : 0", - "7 | Fees : NAM 100.0" + "0 | Code hash [1/2] : 55ffd11771034c91738bf8dd55ca2ffa1299be", + "0 | Code hash [2/2] : 50fdb08ceed071d950469ddfee", + "1 | Public key [1/2] : 00ed82fbf457e5a51745bacff287bf32d53748", + "1 | Public key [2/2] : fdccace30d7557627d04c158e769", + "2 | Timestamp : 2023-07-25 12:00:28.405435178 UTC", + "3 | Pubkey [1/2] : 00ed82fbf457e5a51745bacff287bf32d53748", + "3 | Pubkey [2/2] : fdccace30d7557627d04c158e769", + "4 | Epoch : 1", + "5 | Gas limit : 0", + "6 | Fees : NAM 100.0" ], "valid": true }, { - "blob": "1e0000006532652d746573742e6563353631326230393430336233333238396463380023000000323032332d30362d31335431383a30343a35392e3330343235313834392b30303a3030bf91cf574ff8e27f5c9202918962e656abb8251b4db0ddb19cc11cb500c3ac1efccca6032e17ba7fb90316b3f9486bd8295714f0f9317614be052ee6b8c1f9ce0100e1f50500000000002800000034423838464239313341303736364533304130304232464238414132393439413731304532344536008cd8ee423546ee43cf7dd4ee51638557682e045ec0303b8b8ce9e6714297e00801000000000000000000000000000000010101000000000000004f00000000000000060000000128b2eeb58801000000a464a5b93a5827e2c0eea0edb37b16c829676fe7879fcc36e872c4a40badf10d0028b2eeb58801000041000000008cd8ee423546ee43cf7dd4ee51638557682e045ec0303b8b8ce9e6714297e0086d935720c030e5ea67b373dfb3f81c1afdd560560bc18603e3f215935ea76e060228b2eeb58801000000fbd9e66ce66fc8ae9257878a60c6affe5046f3fcb4148f394a6efa5789d8ef720328b2eeb588010000fccca6032e17ba7fb90316b3f9486bd8295714f0f9317614be052ee6b8c1f9ce00606fa6355d2cd28f3974b7aa9f9442551141ccc8b8f2d0a335984f7ac0ee58e1bd071f21ca51db492dd2627a51dce63e9c35b692c1cb50e63ee1d369ced96004008cd8ee423546ee43cf7dd4ee51638557682e045ec0303b8b8ce9e6714297e0080328b2eeb588010000bf91cf574ff8e27f5c9202918962e656abb8251b4db0ddb19cc11cb500c3ac1e001021400a4d03cab2e9f002f65bbad56b37e44e7af3d4fc5c566a4133bd1e6714ace6833d62cda47f615be52c69c7f9230373ce8a0d25452bd220ae610044940e008cd8ee423546ee43cf7dd4ee51638557682e045ec0303b8b8ce9e6714297e00803acb3eeb588010000858a75e9ad00197b911642eef914d91fd262e28b12b7d2db4d09928b00c78a4f006c40c11b80f93207eb921162bae496401d62045753e9686fb33f5d788c4d10ae2216f8d7c2e365d524fc90004944742cca934f5e3c0209d14131137f261bfe06008cd8ee423546ee43cf7dd4ee51638557682e045ec0303b8b8ce9e6714297e008", + "blob": "1e0000006532652d746573742e3935366638646232353162386231643331613539320023000000323032332d30372d32355431323a30303a33322e3433313038343732302b30303a30301366bd1179f8fd584dc1ce5439b02473b924ce36600c4d8170c30fb3a13527c4d244ccd591c681fe23d4588ce7a4236b44b261d5da22de3ee0aa4135b0d1f1c20100e1f50500000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e6007af50fc05fe1784a3d1665d168c9527f86940c4f14f72d048c40a2af12cf07c001000000000000000000000000000000000000000000000000000000000000000000000000000000000300000001af20ec8c89010000002451515c3a6fa063eb25d90ef15268dfbdd37133521c34fb58b68b1c4b61918000af20ec8c890100003500000000f34a4aa63fec052ca158bf0add63a0594610dae331ce9afd993f645d851412905134e176818757c8f010478146a21e95d632ebf902af20ec8c8901000000087de3038482e3cc0fd53c2bf5dd988b6a55a5507c271403a48b9456162b7cc7", "index": 0, - "name": "Init_Account_0", + "name": "Update_VP_0", "output": [ - "0 | Type : Init Account", - "1 | Public key [1/2] : 008cd8ee423546ee43cf7dd4ee51638557682e", - "1 | Public key [2/2] : 045ec0303b8b8ce9e6714297e008", + "0 | Type : Update VP", + "1 | Address [1/3] : atest1v4ehgw36gcengsf5g9qnvv6xg4pnqdfj", + "1 | Address [2/3] : gdqnzdfcgfrrqs2ygsmrxsfsx5ungd33xpzyz3", + "1 | Address [3/3] : fnrer08w", "2 | VP type : User" ], "output_expert": [ - "0 | Code hash [1/2] : fbd9e66ce66fc8ae9257878a60c6affe5046f3", - "0 | Code hash [2/2] : fcb4148f394a6efa5789d8ef72", - "1 | Public key [1/2] : 008cd8ee423546ee43cf7dd4ee51638557682e", - "1 | Public key [2/2] : 045ec0303b8b8ce9e6714297e008", - "2 | VP type [1/2] : a464a5b93a5827e2c0eea0edb37b16c829676f", - "2 | VP type [2/2] : e7879fcc36e872c4a40badf10d", - "3 | Timestamp : 2023-06-13 18:04:59.304251849 UTC", - "4 | Pubkey [1/2] : 008cd8ee423546ee43cf7dd4ee51638557682e", - "4 | Pubkey [2/2] : 045ec0303b8b8ce9e6714297e008", + "0 | Code hash [1/2] : 087de3038482e3cc0fd53c2bf5dd988b6a55a5", + "0 | Code hash [2/2] : 507c271403a48b9456162b7cc7", + "1 | Address [1/3] : atest1v4ehgw36gcengsf5g9qnvv6xg4pnqdfj", + "1 | Address [2/3] : gdqnzdfcgfrrqs2ygsmrxsfsx5ungd33xpzyz3", + "1 | Address [3/3] : fnrer08w", + "2 | VP type [1/2] : 2451515c3a6fa063eb25d90ef15268dfbdd371", + "2 | VP type [2/2] : 33521c34fb58b68b1c4b619180", + "3 | Timestamp : 2023-07-25 12:00:32.431084720 UTC", + "4 | Pubkey [1/2] : 007af50fc05fe1784a3d1665d168c9527f8694", + "4 | Pubkey [2/2] : 0c4f14f72d048c40a2af12cf07c0", "5 | Epoch : 1", "6 | Gas limit : 0", "7 | Fees : NAM 100.0" @@ -596,101 +711,101 @@ "valid": true }, { - "blob": "1e0000006532652d746573742e3364333666316461353466336435643166323335330023000000323032332d30362d31395431313a30393a35362e3635333937363339362b30303a30306a0ce1c57010b0a955d2d1a621f4b5e25794c6d3844e25c29d0587d4962fc5bf2af1e67aa70baf9507f919f9c5bdca7ef1ffe6df4a6a6f7b3870360ebf6fb08f0100e1f5050000000000280000003442383846423931334130373636453330413030423246423841413239343941373130453234453600d9458d9ae70b725813fd13be8c26febd094bb5a3f81654ddcd8416e45fc2b37301000000000000000000000000000000010107000000000000000a0000000000000006000000012dde58d38801000000a464a5b93a5827e2c0eea0edb37b16c829676fe7879fcc36e872c4a40badf10d002ede58d3880100004100000000d9458d9ae70b725813fd13be8c26febd094bb5a3f81654ddcd8416e45fc2b3739ec20704f7d9e33c4118e85e5aa8bd94dd32242b304537ba116ec94a907051ce022ede58d38801000000fbd9e66ce66fc8ae9257878a60c6affe5046f3fcb4148f394a6efa5789d8ef72032ede58d3880100002af1e67aa70baf9507f919f9c5bdca7ef1ffe6df4a6a6f7b3870360ebf6fb08f005f3267a65710b0bcdbf615908084ab72870e961b4eb244a2d7383bd16ed87f14b86b90c4c1f55b43e73d96e28e21c2244a7b862cba4c0a981ae1882864699d0400d9458d9ae70b725813fd13be8c26febd094bb5a3f81654ddcd8416e45fc2b373032fde58d3880100006a0ce1c57010b0a955d2d1a621f4b5e25794c6d3844e25c29d0587d4962fc5bf00b4c7fe286d57d0654b413ba170e14a35898f811bf97718c1718435d17b896dcdedc5b5f04acca1db28ad96aded3d56e892726edc41f1e7f22d91129a0768970200d9458d9ae70b725813fd13be8c26febd094bb5a3f81654ddcd8416e45fc2b3730393df58d388010000e724aedf9e09308e5b7db35ec5f026b96e224a304a4858b49c66efcb7669e609007046031315a52fc9a325a1b5dc43cebe6a5e24c67c413389081987308ffaca39a2396bec0c8ed411c9134d61b13ef678331e23fd5b763f4d6e949c130151ff0c00d9458d9ae70b725813fd13be8c26febd094bb5a3f81654ddcd8416e45fc2b373", + "blob": "1e0000006532652d746573742e3935366638646232353162386231643331613539320023000000323032332d30372d32355431323a30303a33352e3930373438393932302b30303a3030dcb97e630df8fae6e8814911c56eb716e3f7c1d125c69d1f3b0e4c51e430552625a16a3494e8e092ca3224a4ed90c6fd1a40526123a7273a0c916fe14fe708dd0100e1f50500000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e6007af50fc05fe1784a3d1665d168c9527f86940c4f14f72d048c40a2af12cf07c001000000000000000000000000000000000000000000000000000000000000000000000000000000000300000001432eec8c89010000002451515c3a6fa063eb25d90ef15268dfbdd37133521c34fb58b68b1c4b61918000432eec8c890100002701000000428ca0cd7a7a720cde875fdcabbe4b3db926bd478886b6c1484f0b0a646a4c1a000cb719560f7bd0a9f4c3e73a728f2210b7fa197b6743909b3cf8a0fdd55de27200232acf422de5afaaaee412232f631382c693ed1364715a765d3eea0bc4bc313e60000000508ed7b67c401472034aeb8d659be3ba441080f24cc1b065edf4a790889e8691cfb08da85a7947421afc531a5f266e147ffca0fb47e2fc33a8c843ea678e797f16a4a236829120453d544b42baafc7f6db59e4166b6f7694b9c81619a9ba0f0d00743ba40b00000000000000000000000000000000000000000000000000000000e40b5402000000000000000000000000000000000000000000000000000000a4d23dca56aaa28344bc77cf0637ac5eab3674ee3a81773cb70df9f18496416d02432eec8c8901000000e54eb11bed86e57e6888a70ef4d2705034b42fcc7dd4c1314a49f59dc004e497", "index": 0, - "name": "Init_Account_1", + "name": "Init_Validator_0", "output": [ - "0 | Type : Init Account", - "1 | Public key [1/2] : 00d9458d9ae70b725813fd13be8c26febd094b", - "1 | Public key [2/2] : b5a3f81654ddcd8416e45fc2b373", - "2 | VP type : User" + "0 | Type : Init Validator", + "1 | Account key [1/2] : 00428ca0cd7a7a720cde875fdcabbe4b3db926", + "1 | Account key [2/2] : bd478886b6c1484f0b0a646a4c1a", + "2 | Consensus key [1/2] : 000cb719560f7bd0a9f4c3e73a728f2210b7fa", + "2 | Consensus key [2/2] : 197b6743909b3cf8a0fdd55de272", + "3 | Protocol key [1/2] : 00232acf422de5afaaaee412232f631382c693", + "3 | Protocol key [2/2] : ed1364715a765d3eea0bc4bc313e", + "4 | DKG key [1/6] : 60000000508ed7b67c401472034aeb8d659be3", + "4 | DKG key [2/6] : ba441080f24cc1b065edf4a790889e8691cfb0", + "4 | DKG key [3/6] : 8da85a7947421afc531a5f266e147ffca0fb47", + "4 | DKG key [4/6] : e2fc33a8c843ea678e797f16a4a23682912045", + "4 | DKG key [5/6] : 3d544b42baafc7f6db59e4166b6f7694b9c816", + "4 | DKG key [6/6] : 19a9ba0f0d", + "5 | Commission rate : 0.05", + "6 | Maximum commission rate change : 0.01", + "7 | Validator VP type : User" ], "output_expert": [ - "0 | Code hash [1/2] : fbd9e66ce66fc8ae9257878a60c6affe5046f3", - "0 | Code hash [2/2] : fcb4148f394a6efa5789d8ef72", - "1 | Public key [1/2] : 00d9458d9ae70b725813fd13be8c26febd094b", - "1 | Public key [2/2] : b5a3f81654ddcd8416e45fc2b373", - "2 | VP type [1/2] : a464a5b93a5827e2c0eea0edb37b16c829676f", - "2 | VP type [2/2] : e7879fcc36e872c4a40badf10d", - "3 | Timestamp : 2023-06-19 11:09:56.653976396 UTC", - "4 | Pubkey [1/2] : 00d9458d9ae70b725813fd13be8c26febd094b", - "4 | Pubkey [2/2] : b5a3f81654ddcd8416e45fc2b373", - "5 | Epoch : 1", - "6 | Gas limit : 0", - "7 | Fees : NAM 100.0" + "0 | Code hash [1/2] : e54eb11bed86e57e6888a70ef4d2705034b42f", + "0 | Code hash [2/2] : cc7dd4c1314a49f59dc004e497", + "1 | Account key [1/2] : 00428ca0cd7a7a720cde875fdcabbe4b3db926", + "1 | Account key [2/2] : bd478886b6c1484f0b0a646a4c1a", + "2 | Consensus key [1/2] : 000cb719560f7bd0a9f4c3e73a728f2210b7fa", + "2 | Consensus key [2/2] : 197b6743909b3cf8a0fdd55de272", + "3 | Protocol key [1/2] : 00232acf422de5afaaaee412232f631382c693", + "3 | Protocol key [2/2] : ed1364715a765d3eea0bc4bc313e", + "4 | DKG key [1/6] : 60000000508ed7b67c401472034aeb8d659be3", + "4 | DKG key [2/6] : ba441080f24cc1b065edf4a790889e8691cfb0", + "4 | DKG key [3/6] : 8da85a7947421afc531a5f266e147ffca0fb47", + "4 | DKG key [4/6] : e2fc33a8c843ea678e797f16a4a23682912045", + "4 | DKG key [5/6] : 3d544b42baafc7f6db59e4166b6f7694b9c816", + "4 | DKG key [6/6] : 19a9ba0f0d", + "5 | Commission rate : 0.05", + "6 | Maximum commission rate change : 0.01", + "7 | Validator VP type [1/2] : 2451515c3a6fa063eb25d90ef15268dfbdd371", + "7 | Validator VP type [2/2] : 33521c34fb58b68b1c4b619180", + "8 | Timestamp : 2023-07-25 12:00:35.907489920 UTC", + "9 | Pubkey [1/2] : 007af50fc05fe1784a3d1665d168c9527f8694", + "9 | Pubkey [2/2] : 0c4f14f72d048c40a2af12cf07c0", + "10 | Epoch : 1", + "11 | Gas limit : 0", + "12 | Fees : NAM 100.0" ], "valid": true }, { - "blob": "1e0000006532652d746573742e6437323136343362616635323461356230613435350023000000323032332d30362d31395431323a35363a30392e3530393935393630392b30303a3030886715ddfedb6185ae3b6f419dc6b56ff1196470c3ef3c779dc850d09209dea2800e33791eb2c8e94d2056c1d83bc991a2238479858a470213a4ec373d54392c0100e1f5050000000000280000003442383846423931334130373636453330413030423246423841413239343941373130453234453600bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0b4612d4d8cc517e92682205a7477020000000000000000000000000000000101080000000000000051000000000000000600000001251cbad38801000000a464a5b93a5827e2c0eea0edb37b16c829676fe7879fcc36e872c4a40badf10d00261cbad3880100004100000000bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0b4612d4d8cc517e92682205a7477523e22bbc865ec7b36c214114f5c40c2bfcb12255d323cce7aeff245ba734aad02261cbad38801000000fbd9e66ce66fc8ae9257878a60c6affe5046f3fcb4148f394a6efa5789d8ef7203261cbad388010000800e33791eb2c8e94d2056c1d83bc991a2238479858a470213a4ec373d54392c00dccbeb507051654e4ef0b31913c21392da28293e67d0870809e2d5f95ea1b90ac7bf0eb0d8f44856af110b90b2b4d4ff65e8003e2e5d50e8703796ef6efc5f0500bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0b4612d4d8cc517e92682205a747703271cbad388010000886715ddfedb6185ae3b6f419dc6b56ff1196470c3ef3c779dc850d09209dea200db1eebdd99565f6d656623a78969e5ff7c994ad466e76bba7c005f9ce1e78fbfdc416ab96843c2495d9a0ffed400b5ab6a64be74d7afdb16ba94e6354a77320a00bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0b4612d4d8cc517e92682205a747703a51dbad3880100001eaa42237da28485c8f82ae506fe9d2c8c1f42b5430e99bb91dbbccdbb2adca1002e863fa2b2474d5ecac92724acb688975d17b8aac82b100056dde9dd3e09f89affb800bb7d6831187b9d3451b7cb57483718503c2cb7d2e765b3c1ca01bfb30800bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0b4612d4d8cc517e92682205a7477", + "blob": "1e0000006532652d746573742e3935366638646232353162386231643331613539320023000000323032332d30372d32355431323a30303a33392e3432323836363938392b30303a3030f416c182ae9c409361b02a31e3486070d3a49b21a5dc12b0a369bab0632ed5335f2bddf7cc2a341ced88baec710d8412da003ae604e71f35f1c39e9fa6c816350100e1f50500000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e600402c55885d3564e43aa39a8df24ce55a94d38b3959df92f94a18387d489be9d101000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000fe3bec8c890100003600000000fc6221811e2f240c89e66c017b4de5be993f0483404b4c00000000000000000000000000000000000000000000000000000000000002fe3bec8c89010000004878bf9780634d8ee4c89432d712e5a7197373590cea658fe29c5ef15c501fe5", "index": 0, - "name": "Init_Account_2", + "name": "Unbond_0", "output": [ - "0 | Type : Init Account", - "1 | Public key [1/2] : 00bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0", - "1 | Public key [2/2] : b4612d4d8cc517e92682205a7477", - "2 | VP type : User" + "0 | Type : Unbond", + "1 | Validator [1/3] : atest1v4ehgw36gepnvv3jxyurzv29xfrrydps", + "1 | Validator [2/3] : gvurj3fkxepnqvfhgg6yg3f4gfznjwfngccrgw", + "1 | Validator [3/3] : pntvu60x", + "2 | Amount : NAM 5.0" ], "output_expert": [ - "0 | Code hash [1/2] : fbd9e66ce66fc8ae9257878a60c6affe5046f3", - "0 | Code hash [2/2] : fcb4148f394a6efa5789d8ef72", - "1 | Public key [1/2] : 00bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0", - "1 | Public key [2/2] : b4612d4d8cc517e92682205a7477", - "2 | VP type [1/2] : a464a5b93a5827e2c0eea0edb37b16c829676f", - "2 | VP type [2/2] : e7879fcc36e872c4a40badf10d", - "3 | Timestamp : 2023-06-19 12:56:09.509959609 UTC", - "4 | Pubkey [1/2] : 00bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0", - "4 | Pubkey [2/2] : b4612d4d8cc517e92682205a7477", - "5 | Epoch : 2", + "0 | Code hash [1/2] : 4878bf9780634d8ee4c89432d712e5a7197373", + "0 | Code hash [2/2] : 590cea658fe29c5ef15c501fe5", + "1 | Validator [1/3] : atest1v4ehgw36gepnvv3jxyurzv29xfrrydps", + "1 | Validator [2/3] : gvurj3fkxepnqvfhgg6yg3f4gfznjwfngccrgw", + "1 | Validator [3/3] : pntvu60x", + "2 | Amount : NAM 5.0", + "3 | Timestamp : 2023-07-25 12:00:39.422866989 UTC", + "4 | Pubkey [1/2] : 00402c55885d3564e43aa39a8df24ce55a94d3", + "4 | Pubkey [2/2] : 8b3959df92f94a18387d489be9d1", + "5 | Epoch : 1", "6 | Gas limit : 0", "7 | Fees : NAM 100.0" ], "valid": true }, { - "blob": "1e0000006532652d746573742e6563353631326230393430336233333238396463380023000000323032332d30362d31335431383a30343a35352e3539363732313735312b30303a3030b8613933a75d859cb970ee87537ee9130bd29dc5ca7790d148bef6007a553f158e269c9646e0cb8cb924010ac06421211bdf3ede0fb5a6df0f6cced9ee8e9af50100e1f50500000000002800000034423838464239313341303736364533304130304232464238414132393439413731304532344536008cd8ee423546ee43cf7dd4ee51638557682e045ec0303b8b8ce9e6714297e00801000000000000000000000000000000010100000000000000009c000000000000000500000000aca3eeb5880100002e0000000028000000453537423244433134464630363632323937433433343134434439334634394134363431443636370002aca3eeb58801000000f7a3acf046f3c216eaf4c6827a3f91433dac5805d82f2d6ad7bdf1574d50414003ada3eeb5880100008e269c9646e0cb8cb924010ac06421211bdf3ede0fb5a6df0f6cced9ee8e9af500f356fd179903d4a4dc02617cc1b94bdc54ec316f27066518d75c8be3bff671e976346f4e4142f8eac8b3e5fc3420ea6e9832bfcf3349f26bf783f24a6c378709008cd8ee423546ee43cf7dd4ee51638557682e045ec0303b8b8ce9e6714297e00803aea3eeb588010000b8613933a75d859cb970ee87537ee9130bd29dc5ca7790d148bef6007a553f1500634633c1e83bd574b9a28d81ec28ff6866332a40e8821325bae14beeac99ad6bb7c191961afc3e6920a49e1292f2b7bb1cbce08b71fb5aa45acecdc14c87b003008cd8ee423546ee43cf7dd4ee51638557682e045ec0303b8b8ce9e6714297e0080300a5eeb588010000be0816bf37919ddc24a79b1f30b7c2a40bf673b5748c22b7afd7c083250236f8006c08d58ef973f51b6be531b5d92f84362bce79d7d6849e4d45974944faffa39b8a642777670bff2846474ec7650cc24843c2d0051daab84db184b156019db50f008cd8ee423546ee43cf7dd4ee51638557682e045ec0303b8b8ce9e6714297e008", + "blob": "1e0000006532652d746573742e3935366638646232353162386231643331613539320023000000323032332d30372d32355431323a30303a34332e3231353434373938332b30303a3030d5ded90700143350a9b752f127eaf3cbf373dfec89a418783e0cf0531f3e499dbcbf818f3dbb12e653cbe048ec7b6ca8fa5229ae21e7818967ab8a711249398c0100e1f50500000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e600ed82fbf457e5a51745bacff287bf32d53748fdccace30d7557627d04c158e7690100000000000000000000000000000000000000000000000000000000000000000000000000000001010700000000000000a8000000000000000200000000cf4aec8c890100001600000000d52d1dcea809648d4d0cbd0697ff0b7a983230b40002cf4aec8c89010000009d366fb38354c74e9ddbdd7420e46f2201f3474468b84947ba62631631fa8db1", "index": 0, "name": "Withdraw_0", "output": [ "0 | Type : Withdraw", - "1 | Validator [1/3] : atest1v4ehgw36g56nws3jg3pnzdzxgccrvd3j", - "1 | Validator [2/3] : xgunwse5xv6rzdzrgsunx33589qngd35x9zrvd", - "1 | Validator [3/3] : 3heqphwc" - ], - "output_expert": [ - "0 | Code hash [1/2] : f7a3acf046f3c216eaf4c6827a3f91433dac58", - "0 | Code hash [2/2] : 05d82f2d6ad7bdf1574d504140", - "1 | Validator [1/3] : atest1v4ehgw36g56nws3jg3pnzdzxgccrvd3j", - "1 | Validator [2/3] : xgunwse5xv6rzdzrgsunx33589qngd35x9zrvd", - "1 | Validator [3/3] : 3heqphwc", - "2 | Timestamp : 2023-06-13 18:04:55.596721751 UTC", - "3 | Pubkey [1/2] : 008cd8ee423546ee43cf7dd4ee51638557682e", - "3 | Pubkey [2/2] : 045ec0303b8b8ce9e6714297e008", - "4 | Epoch : 1", - "5 | Gas limit : 0", - "6 | Fees : NAM 100.0" - ], - "valid": true - }, - { - "blob": "1e0000006532652d746573742e3364333666316461353466336435643166323335330023000000323032332d30362d31395431313a30393a35322e3837333938333334342b30303a30301959a32bdc314fc351e8d531851d30fd4ac555db17332bc9ba1121d990a14de83186ac61940453615349a3441981a052e2589fdc4d1f5680b87a3b8fab32e5140100e1f5050000000000280000003442383846423931334130373636453330413030423246423841413239343941373130453234453600d9458d9ae70b725813fd13be8c26febd094bb5a3f81654ddcd8416e45fc2b3730100000000000000000000000000000001010600000000000000ed01000000000000050000000069cf58d3880100002e00000000280000003737334245423843343633313442394541463041434344383230303731314631303443424635364400026acf58d38801000000f7a3acf046f3c216eaf4c6827a3f91433dac5805d82f2d6ad7bdf1574d504140036acf58d3880100003186ac61940453615349a3441981a052e2589fdc4d1f5680b87a3b8fab32e5140061cf0351954d9fafba8b2d199f3baf2ded8cbc6f3a48c33866e64549a59d9c0a0de21117210e184d1c8054c3ee4034c98dc55f1ee021e44feb0887c1416a5a0c00d9458d9ae70b725813fd13be8c26febd094bb5a3f81654ddcd8416e45fc2b373036bcf58d3880100001959a32bdc314fc351e8d531851d30fd4ac555db17332bc9ba1121d990a14de800f1749083a08a0b5477d0de8aa2e4c441ebb445c565fd25ac3a5b55350a91d43798edc86a96ee3a5fbbe324f76f79274f0dea189c05e2c775b3c9c18e4e0cb40600d9458d9ae70b725813fd13be8c26febd094bb5a3f81654ddcd8416e45fc2b37303ebd058d388010000588a6af24219bfe86cf9d3096dd821ee845b0d009fdad18a8f48f58cf68a8ba0003a8ffcb079bd116fe0c4ac03538dfb454986d902f8cba8aef0a7ec818ac8496e4d2a82fe83529380552117bd7e3ebea2d12d834c4b3ceba8b6dc62165af5890400d9458d9ae70b725813fd13be8c26febd094bb5a3f81654ddcd8416e45fc2b373", - "index": 0, - "name": "Withdraw_1", - "output": [ - "0 | Type : Withdraw", - "1 | Validator [1/3] : atest1v4ehgw36xumnxsj9gguyxdpkxvcngs3e", - "1 | Validator [2/3] : g4q5vvzpgdp5gwpjxqcrwvf3gccnqdzrgfrr2d", - "1 | Validator [3/3] : jyuetzra" - ], - "output_expert": [ - "0 | Code hash [1/2] : f7a3acf046f3c216eaf4c6827a3f91433dac58", - "0 | Code hash [2/2] : 05d82f2d6ad7bdf1574d504140", - "1 | Validator [1/3] : atest1v4ehgw36xumnxsj9gguyxdpkxvcngs3e", - "1 | Validator [2/3] : g4q5vvzpgdp5gwpjxqcrwvf3gccnqdzrgfrr2d", - "1 | Validator [3/3] : jyuetzra", - "2 | Timestamp : 2023-06-19 11:09:52.873983344 UTC", - "3 | Pubkey [1/2] : 00d9458d9ae70b725813fd13be8c26febd094b", - "3 | Pubkey [2/2] : b5a3f81654ddcd8416e45fc2b373", + "1 | Validator [1/3] : atest1v4ehgw36gs6ny3p3g3p52sfcxqunvdpc", + "1 | Validator [2/3] : gs6ygvzrgfzrqd3exaryvvzzxaqnjwpnxgenqs", + "1 | Validator [3/3] : 35vvk7ln" + ], + "output_expert": [ + "0 | Code hash [1/2] : 9d366fb38354c74e9ddbdd7420e46f2201f347", + "0 | Code hash [2/2] : 4468b84947ba62631631fa8db1", + "1 | Validator [1/3] : atest1v4ehgw36gs6ny3p3g3p52sfcxqunvdpc", + "1 | Validator [2/3] : gs6ygvzrgfzrqd3exaryvvzzxaqnjwpnxgenqs", + "1 | Validator [3/3] : 35vvk7ln", + "2 | Timestamp : 2023-07-25 12:00:43.215447983 UTC", + "3 | Pubkey [1/2] : 00ed82fbf457e5a51745bacff287bf32d53748", + "3 | Pubkey [2/2] : fdccace30d7557627d04c158e769", "4 | Epoch : 1", "5 | Gas limit : 0", "6 | Fees : NAM 100.0" @@ -698,78 +813,25 @@ "valid": true }, { - "blob": "1e0000006532652d746573742e6437323136343362616635323461356230613435350023000000323032332d30362d31395431323a35363a30352e3734363239383434392b30303a30307ba4e3c1d047be65ef1ea5e8292b35a652f9c5d7a9b6f34d710b4f303801c4de733e354e530e3ff3247e71f461e61c1e6da9ffa89f2550806c60cf11550ea8fb0100e1f5050000000000280000003442383846423931334130373636453330413030423246423841413239343941373130453234453600bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0b4612d4d8cc517e92682205a7477020000000000000000000000000000000101070000000000000075010000000000000500000000720dbad3880100002e0000000028000000433642464434354637454439463444453836443344304144323431393845413437444533454644320002720dbad38801000000f7a3acf046f3c216eaf4c6827a3f91433dac5805d82f2d6ad7bdf1574d50414003730dbad388010000733e354e530e3ff3247e71f461e61c1e6da9ffa89f2550806c60cf11550ea8fb009cffc6fdf5174202869417c3f5f67374596ab89338fab1524da06732615c9baf84775cb315a494d43919aa805174d8adf552da90ba0ac88426d6e5f94fc4d60e00bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0b4612d4d8cc517e92682205a747703730dbad3880100007ba4e3c1d047be65ef1ea5e8292b35a652f9c5d7a9b6f34d710b4f303801c4de00a7beea99c9ccd8fbdca9b057b1eebd03216422504a4fb97b01ac36ce1f65bda601566bd29f707eea77cd4195d2c9ae38c7575f60c607107bb6568c28cde03a0100bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0b4612d4d8cc517e92682205a747703f20ebad388010000c118c8a0cf8ab6189f6bfb59bab7b7be165cd563ab46af125974c5f4ed198c5600e433fcf40b55e1d42083a1b8938cee7076ce9dc3b2849b036198e0d1bfe512c1146dc0d1a5bc167d11475a38dc1feac4a380005a9029c4e53db72b8079df4b0f00bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0b4612d4d8cc517e92682205a7477", - "index": 0, - "name": "Withdraw_2", - "output": [ - "0 | Type : Withdraw", - "1 | Validator [1/3] : atest1v4ehgw36gvmyy3jyxs65vd69gsu5vdzy", - "1 | Validator [2/3] : g5urv3pngscyz3pjxscnjwz9gy6rw3z9xdz5v3", - "1 | Validator [3/3] : pjksl96e" - ], - "output_expert": [ - "0 | Code hash [1/2] : f7a3acf046f3c216eaf4c6827a3f91433dac58", - "0 | Code hash [2/2] : 05d82f2d6ad7bdf1574d504140", - "1 | Validator [1/3] : atest1v4ehgw36gvmyy3jyxs65vd69gsu5vdzy", - "1 | Validator [2/3] : g5urv3pngscyz3pjxscnjwz9gy6rw3z9xdz5v3", - "1 | Validator [3/3] : pjksl96e", - "2 | Timestamp : 2023-06-19 12:56:05.746298449 UTC", - "3 | Pubkey [1/2] : 00bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0", - "3 | Pubkey [2/2] : b4612d4d8cc517e92682205a7477", - "4 | Epoch : 2", - "5 | Gas limit : 0", - "6 | Fees : NAM 100.0" - ], - "valid": true - }, - { - "blob": "1e0000006532652d746573742e6563353631326230393430336233333238396463380023000000323032332d30362d31335431383a30343a35302e3631313637393833302b30303a3030a724f27d4cb45619de0a6bd935ad22215ca462d7b4deeed7894091d77c5dffbfc2a4d30b471cb6b4aa8a0848e18bb5303742b9ead8e971a9aea02828c99671050100e1f505000000000028000000344238384642393133413037363645333041303042324642384141323934394137313045323445360030b40d3dd095dfeee4c4f57a03c100858df1000dd615f647e13c7d2c8482f55f010000000000000000000000000000000005000000003390eeb58801000036000000002800000030324136413139423135334137383036314632373735393930323830463543373532414646333543404b4c000000000000023390eeb588010000007c1851534a76b7b33516eb4897548bc54573e1c4792db1e695967a19a8c64848033490eeb588010000c2a4d30b471cb6b4aa8a0848e18bb5303742b9ead8e971a9aea02828c9967105000967e75b97243f141d0d8d5146243cc3268f0961c1ed73516180b95e70ce1734e138f9a7168aef390f1171b5d853b20ad039c273a347d0e35b29a5fb6aea66090030b40d3dd095dfeee4c4f57a03c100858df1000dd615f647e13c7d2c8482f55f033490eeb588010000a724f27d4cb45619de0a6bd935ad22215ca462d7b4deeed7894091d77c5dffbf0073acdc054b0a63aed5e6e30b782777790cb10eac0096b8b1696320023a91dc373ed61c1c2905df0e51878908a1ef3bb9b1abd02d0f15f99d899093136f8c3f0a0030b40d3dd095dfeee4c4f57a03c100858df1000dd615f647e13c7d2c8482f55f03bd90eeb588010000714d8410e4422c2835739153224f227a7e2de7d866b08b15792055e25c43bef300508441acb66b56c59cded8910329f68928b60deb0c94c0fa06d531d05e51d60f0d998017e8835f62b24ca991ead345d57bc0e2c410339d8590c816e3ccbadf070030b40d3dd095dfeee4c4f57a03c100858df1000dd615f647e13c7d2c8482f55f", - "index": 0, - "name": "Unbond_0", - "output": [ - "0 | Type : Unbond", - "1 | Validator [1/3] : atest1v4ehgw36xqeyzdjpxyu5yvf4xdqnwwps", - "1 | Validator [2/3] : xcc5vv3hxu6njwfsxgurq334gvmn2vjpgerrxd", - "1 | Validator [3/3] : 2rny0fga", - "2 | Amount : NAM 5.0" - ], - "output_expert": [ - "0 | Code hash [1/2] : 7c1851534a76b7b33516eb4897548bc54573e1", - "0 | Code hash [2/2] : c4792db1e695967a19a8c64848", - "1 | Validator [1/3] : atest1v4ehgw36xqeyzdjpxyu5yvf4xdqnwwps", - "1 | Validator [2/3] : xcc5vv3hxu6njwfsxgurq334gvmn2vjpgerrxd", - "1 | Validator [3/3] : 2rny0fga", - "2 | Amount : NAM 5.0", - "3 | Timestamp : 2023-06-13 18:04:50.611679830 UTC", - "4 | Pubkey [1/2] : 0030b40d3dd095dfeee4c4f57a03c100858df1", - "4 | Pubkey [2/2] : 000dd615f647e13c7d2c8482f55f", - "5 | Epoch : 1", - "6 | Gas limit : 0", - "7 | Fees : NAM 100.0" - ], - "valid": true - }, - { - "blob": "1e0000006532652d746573742e3364333666316461353466336435643166323335330023000000323032332d30362d31395431313a30393a34382e3238363236393336362b30303a3030b8df8315e04c9b2f3bd62e661ca73f064a3607bb9f5a43c3fd045a4ae3b60765b96066be59ff76b49d1fbbb66fcacf8060f19fe6d8dc305ff6d6faf5b95145550100e1f5050000000000280000003442383846423931334130373636453330413030423246423841413239343941373130453234453600d92250d7017975b5e2a1dafca8aa230fb131232878a227c4713a149b3fab16f2010000000000000000000000000000000005000000007ebd58d38801000036000000002800000045373238313330334330333346423430453933333836304334334345433736333645443133354430404b4c000000000000027ebd58d388010000007c1851534a76b7b33516eb4897548bc54573e1c4792db1e695967a19a8c64848037ebd58d388010000b96066be59ff76b49d1fbbb66fcacf8060f19fe6d8dc305ff6d6faf5b9514555004aee1d791f04f7e07d1e4a0a5dce90bd7b59654d5bbb87fcabaa0f6693a49527f0db371687135d84307e1d4835a7b7de19addef0f03658ba9c7b22ec291e160c00d92250d7017975b5e2a1dafca8aa230fb131232878a227c4713a149b3fab16f2037ebd58d388010000b8df8315e04c9b2f3bd62e661ca73f064a3607bb9f5a43c3fd045a4ae3b60765001a798f2b56876c7e87b691eee635c91ed1adf66e815b675a847806186f920c52ce9c704512674091b684e2067381c62fcdde85d8ad5ae291f8d876608e91460a00d92250d7017975b5e2a1dafca8aa230fb131232878a227c4713a149b3fab16f20306be58d38801000009808e55e08bd9f34694705fb379924476113f6a25e20ca130672c124a036cfa0013957653c4affaf6c59afd700b8ab647452c0d0fd34eafa98f4561754ed9ef5ab5f3a1899ce7a38342358c938bc449e4d772c4480f0a59dd6361590a52dc550a00d92250d7017975b5e2a1dafca8aa230fb131232878a227c4713a149b3fab16f2", + "blob": "1e0000006532652d746573742e3935366638646232353162386231643331613539320023000000323032332d30372d32355431323a30303a34372e3938373233383836352b30303a303029da8e5233390226d79f7e0c9a44286d4b778e0bb712ecbe936d9a26e763fb73be66a33fb8e7ab4d5196a96daa2682d0e4f753266edfcae844d2708a997fec590100e1f50500000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e600ed82fbf457e5a51745bacff287bf32d53748fdccace30d7557627d04c158e769010000000000000000000000000000000000000000000000000000000000000000000000000000000101080000000000000060000000000000000300000001735dec8c89010000002451515c3a6fa063eb25d90ef15268dfbdd37133521c34fb58b68b1c4b61918000735dec8c890100004100000000ed82fbf457e5a51745bacff287bf32d53748fdccace30d7557627d04c158e769a689b301f02e22efa32887467febca6afbf6ccdfd2e0370a3a85b90aab08d9d302735dec8c890100000039c4f8d4e9b14aac4491d115fa5d4382be490ac9b5bf6d191f8aa66fa4e12bf6", "index": 0, - "name": "Unbond_1", + "name": "Init_Account_0", "output": [ - "0 | Type : Unbond", - "1 | Validator [1/3] : atest1v4ehgw36g5mnywp3xvcrxsesxve5vs35", - "1 | Validator [2/3] : xpznjven8qmrqse5xdp52sehxcenv32yxyen23", - "1 | Validator [3/3] : psmfq3rl", - "2 | Amount : NAM 5.0" + "0 | Type : Init Account", + "1 | Public key [1/2] : 00ed82fbf457e5a51745bacff287bf32d53748", + "1 | Public key [2/2] : fdccace30d7557627d04c158e769", + "2 | VP type : User" ], "output_expert": [ - "0 | Code hash [1/2] : 7c1851534a76b7b33516eb4897548bc54573e1", - "0 | Code hash [2/2] : c4792db1e695967a19a8c64848", - "1 | Validator [1/3] : atest1v4ehgw36g5mnywp3xvcrxsesxve5vs35", - "1 | Validator [2/3] : xpznjven8qmrqse5xdp52sehxcenv32yxyen23", - "1 | Validator [3/3] : psmfq3rl", - "2 | Amount : NAM 5.0", - "3 | Timestamp : 2023-06-19 11:09:48.286269366 UTC", - "4 | Pubkey [1/2] : 00d92250d7017975b5e2a1dafca8aa230fb131", - "4 | Pubkey [2/2] : 232878a227c4713a149b3fab16f2", + "0 | Code hash [1/2] : 39c4f8d4e9b14aac4491d115fa5d4382be490a", + "0 | Code hash [2/2] : c9b5bf6d191f8aa66fa4e12bf6", + "1 | Public key [1/2] : 00ed82fbf457e5a51745bacff287bf32d53748", + "1 | Public key [2/2] : fdccace30d7557627d04c158e769", + "2 | VP type [1/2] : 2451515c3a6fa063eb25d90ef15268dfbdd371", + "2 | VP type [2/2] : 33521c34fb58b68b1c4b619180", + "3 | Timestamp : 2023-07-25 12:00:47.987238865 UTC", + "4 | Pubkey [1/2] : 00ed82fbf457e5a51745bacff287bf32d53748", + "4 | Pubkey [2/2] : fdccace30d7557627d04c158e769", "5 | Epoch : 1", "6 | Gas limit : 0", "7 | Fees : NAM 100.0" @@ -777,891 +839,22 @@ "valid": true }, { - "blob": "1e0000006532652d746573742e6437323136343362616635323461356230613435350023000000323032332d30362d31395431323a35363a30322e3130323133353537362b30303a3030a35ae381dd1260fe6a2cd00330d7186933559b1e371f90aff333b50be3b4f3127bb19b0c9d610faf3d0f64cf5f363f690ba88193397126a8f94ac915520d30230100e1f5050000000000280000003442383846423931334130373636453330413030423246423841413239343941373130453234453600660a067bd53d3af5b8e1b63adacecb2bcacecf3668c85dec22bdb0934deaeda20100000000000000000000000000000000050000000036ffb9d38801000036000000002800000042364133373243373146334338333636303235413344313337324239453936444135303739323246404b4c0000000000000236ffb9d388010000007c1851534a76b7b33516eb4897548bc54573e1c4792db1e695967a19a8c648480336ffb9d3880100007bb19b0c9d610faf3d0f64cf5f363f690ba88193397126a8f94ac915520d302300f059b1c97a57f565a74a6aa1d9cdd6481d700d56aef183e68bb1f28ff35b3d4b97ee0477f8d6687d47122c069c6b40bb9815f0fd06dec35b519540f692d41a0d00660a067bd53d3af5b8e1b63adacecb2bcacecf3668c85dec22bdb0934deaeda20336ffb9d388010000a35ae381dd1260fe6a2cd00330d7186933559b1e371f90aff333b50be3b4f312004564ebb3332a8c85a045db9dd0944a4012b0aafe106dedff6f1c100216136e008586002c06bebffc0c29379225fd610cddc4d357270d1ca7d33cbb7c9987d00a00660a067bd53d3af5b8e1b63adacecb2bcacecf3668c85dec22bdb0934deaeda203baffb9d388010000baef8d67119aaf7e556ec79f69e7e2b7efc31a7cf65f6e56875e37a8ad5e86e60031de45c819c7ad0df7f77e48eecc41af8a5ce0173850e5ed2c68b6d438b09dbefeb10e36d83a9b9a12640e463ffe0e747e82798438e4d46ae37f546138ea200200660a067bd53d3af5b8e1b63adacecb2bcacecf3668c85dec22bdb0934deaeda2", + "blob": "1e0000006532652d746573742e3935366638646232353162386231643331613539320023000000323032332d30372d32355431323a30303a35312e3735343339363437332b30303a3030d0f08b981f54237262a2468651d819b7ebd89aa63452f2aa42defe0e6cf5315c837c18636fe99f84aba9984358e429d880e6d36508273e1ac5e1989c0bdd3fe30100e1f50500000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e600ed82fbf457e5a51745bacff287bf32d53748fdccace30d7557627d04c158e7690100000000000000000000000000000000000000000000000000000000000000000000000000000001010900000000000000040000000000000002000000002a6cec8c89010000960c000023204e616d6164610a0a5b215b4c6963656e73653a2047504c2076335d2868747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d47504c76332d626c75652e737667295d282e2f4c4943454e5345290a0a2323204f766572766965770a0a5b4e616d6164615d28687474703a2f2f6e616d6164612e6e65742920697320612050726f6f662d6f662d5374616b65204c3120666f7220696e746572636861696e2061737365742d61676e6f7374696320707269766163792e204e616d61646120757365732054656e6465726d696e74204246540a636f6e73656e73757320616e6420656e61626c6573206d756c74692d617373657420736869656c646564207472616e736665727320666f7220616e79206e61746976650a6f72206e6f6e2d6e61746976652061737365742e204e616d6164612066656174757265732066756c6c204942432070726f746f636f6c20737570706f72742c0a61206e61746976656c7920696e746567726174656420457468657265756d206272696467652c2061206d6f6465726e2070726f6f662d6f662d7374616b650a73797374656d2077697468206175746f6d617469632072657761726420636f6d706f756e64696e6720616e6420637562696320736c617368696e672c20616e6420610a7374616b652d776569676874656420676f7665726e616e6365207369676e616c6c696e67206d656368616e69736d2e205573657273206f6620736869656c6465640a7472616e73666572732061726520726577617264656420666f7220746865697220636f6e747269627574696f6e7320746f2074686520707269766163792073657420696e0a74686520666f726d206f66206e61746976652070726f746f636f6c20746f6b656e732e2041206d756c74692d617373657420736869656c646564207472616e736665720a77616c6c65742069732070726f766964656420696e206f7264657220746f20666163696c6974617465207361666520616e64207072697661746520757365720a696e746572616374696f6e2077697468207468652070726f746f636f6c2e0a0a2a20426c6f67706f73743a205b496e74726f647563696e67204e616d6164613a20496e746572636861696e2041737365742d61676e6f7374696320507269766163795d2868747470733a2f2f626c6f672e6e616d6164612e6e65742f696e74726f647563696e672d6e616d6164612d696e746572636861696e2d61737365742d61676e6f737469632d707269766163792f290a0a232320f09f939320446f63730a0a2a2064657620646f63733a206275696c742066726f6d205b646576206d64426f6f6b5d282e2f646f63756d656e746174696f6e2f6465762f290a0a2323205761726e696e670a0a3e2048657265206c617920647261676f6e733a207468697320636f646562617365206973207374696c6c206578706572696d656e74616c2c2074727920617420796f7572206f776e207269736b210a0a232320f09f92be20496e7374616c6c696e670a0a546865726520697320612073696e676c6520636f6d6d616e6420746f206275696c6420616e6420696e7374616c6c204e616d6164612065786563757461626c65732066726f6d20736f757263652028746865206e6f64652c2074686520636c69656e7420616e64207468652077616c6c6574292e205468697320636f6d6d616e642077696c6c20616c736f207665726966792074686174206120636f6d70617469626c652076657273696f6e206f66205b54656e6465726d696e745d2823646570656e64656e636965732920697320617661696c61626c6520616e64206966206e6f742c20617474656d707420746f20696e7374616c6c2069742e204e6f746520746861742063757272656e746c79206174206c6561737420313647422052414d206973206e656564656420746f206275696c642066726f6d20736f757263652e0a0a6060607368656c6c0a6d616b6520696e7374616c6c0a6060600a0a416674657220696e7374616c6c6174696f6e2c20746865206d61696e20606e616d616461602065786563757461626c652077696c6c20626520617661696c61626c65206f6e20706174682e0a0a546f2066696e6420686f7720746f207573652069742c20636865636b206f757420746865205b557365722047756964652073656374696f6e206f662074686520646f63735d2868747470733a2f2f646f63732e6e616d6164612e6e65742f757365722d67756964652f696e6465782e68746d6c292e0a0a466f72206d6f72652064657461696c656420696e737472756374696f6e7320616e64206d6f726520696e7374616c6c206f7074696f6e732c2073656520746865205b496e7374616c6c0a73656374696f6e5d2868747470733a2f2f646f63732e6e616d6164612e6e65742f757365722d67756964652f696e7374616c6c2f696e6465782e68746d6c29206f662074686520557365720a47756964652e0a0a232320e29a99efb88f20446576656c6f706d656e740a0a6060607368656c6c0a23204275696c64207468652070726f76696465642076616c69646974792070726564696361746520616e64207472616e73616374696f6e207761736d206d6f64756c65730a6d616b65206275696c642d7761736d2d736372697074732d646f636b65720a0a2320446576656c6f706d656e742028646562756729206275696c64204e616d6164612c20776869636820696e636c7564657320612076616c696461746f7220616e6420736f6d652064656661756c74200a23206163636f756e74732c2077686f7365206b65797320616e64206164647265737365732061726520617661696c61626c6520696e207468652077616c6c65740a4e414d4144415f4445563d74727565206d616b650a6060600a0a232323204265666f7265207375626d697474696e6720612050522c20706c73206d616b65207375726520746f2072756e2074686520666f6c6c6f77696e670a0a6060607368656c6c0a2320466f726d61742074686520636f64650a6d616b6520666d740a0a23204c696e742074686520636f64650a6d616b6520636c697070790a6060600a0a232320f09fa7be204c6f6767696e670a0a546f206368616e676520746865206c6f67206c6576656c2c2073657420604e414d4144415f4c4f476020656e7669726f6e6d656e74207661726961626c6520746f206f6e65206f663a0a0a2a20606572726f72600a2a20607761726e600a2a2060696e666f600a2a20606465627567600a2a20607472616365600a0a5468652064656661756c742069732073657420746f2060696e666f6020666f7220616c6c20746865206d6f64756c65732c2065787065637420666f722054656e6465726d696e7420414243492c207768696368206861732061206c6f74206f662060646562756760206c6f6767696e672e0a0a466f72206d6f72652066696e652d677261696e6564206c6f6767696e67206c6576656c732073657474696e67732c20706c6561736520726566657220746f20746865205b74726163696e67207375627363726962657220646f63735d2868747470733a2f2f646f63732e72732f74726163696e672d737562736372696265722f302e322e31382f74726163696e675f737562736372696265722f7374727563742e456e7646696c7465722e68746d6c23646972656374697665732920666f72206d6f726520696e666f726d6174696f6e2e0a0a546f20737769746368206f6e206c6f6767696e6720696e2074657374732074686174207573652060235b746573745d60206d6163726f2066726f6d2060746573745f6c6f673a3a74657374602c207573652060525553545f4c4f4760207769746820652e672e2060525553545f4c4f473d696e666f20636172676f2074657374202d2d202d2d6e6f63617074757265602e0a0a232320486f7720746f20636f6e747269627574650a0a506c656173652073656520746865205b636f6e747269627574696e6720706167655d282e2f434f4e545249425554494e472e6d64292e0a0a23232320446570656e64656e636965730a0a546865206c65646765722063757272656e746c792072657175697265732074686174207468652048656c69617820666f726b206f662074656e6465726d696e745b76302e312e342d61626369706c75735d20697320696e7374616c6c656420616e6420617661696c61626c65206f6e20706174682e20546869732063616e206265206163686965766564207468726f75676820666f6c6c6f77696e67205b746865736520696e737472756374696f6e735d2868747470733a2f2f646f63732e6e616d6164612e6e65742f757365722d67756964652f696e7374616c6c2f696e7374616c6c696e672d74656e6465726d696e742e68746d6c290a022a6cec8c890100000005bfa4e2b23c8c59667e421944bef88c36dff5c015ed3a2952e4daf0fe5cb018", "index": 0, - "name": "Unbond_2", + "name": "Custom_0", "output": [ - "0 | Type : Unbond", - "1 | Validator [1/3] : atest1v4ehgw36ggmyzvehxfpnwv2xxdpnsvek", - "1 | Validator [2/3] : xccryd2pxdzrzvehxfprj3fexezyzdfsxuunyv", - "1 | Validator [3/3] : jxt2vu2r", - "2 | Amount : NAM 5.0" + "0 | Type : Custom" ], "output_expert": [ - "0 | Code hash [1/2] : 7c1851534a76b7b33516eb4897548bc54573e1", - "0 | Code hash [2/2] : c4792db1e695967a19a8c64848", - "1 | Validator [1/3] : atest1v4ehgw36ggmyzvehxfpnwv2xxdpnsvek", - "1 | Validator [2/3] : xccryd2pxdzrzvehxfprj3fexezyzdfsxuunyv", - "1 | Validator [3/3] : jxt2vu2r", - "2 | Amount : NAM 5.0", - "3 | Timestamp : 2023-06-19 12:56:02.102135576 UTC", - "4 | Pubkey [1/2] : 00660a067bd53d3af5b8e1b63adacecb2bcace", - "4 | Pubkey [2/2] : cf3668c85dec22bdb0934deaeda2", - "5 | Epoch : 1", - "6 | Gas limit : 0", - "7 | Fees : NAM 100.0" - ], - "valid": true - }, - { - "blob": "1e0000006532652d746573742e6563353631326230393430336233333238396463380023000000323032332d30362d31335431383a30343a34352e3838373735373738322b30303a3030be5874cef09185af2481f799cfd6e5f5025d81de9e6d65a8e54f568343e83916ca06d6bfcd00aa7dfc6cc3ad04fdfc7cb9653e1d26ca797b25071dc3968934a50100e1f5050000000000280000003442383846423931334130373636453330413030423246423841413239343941373130453234453600d04d39252f8f76ee4ce7ff1ce846f45d9bb0aa4b84e10e7ee96382958f4c9d3a01000000000000000000000000000000000600000001bf7deeb58801000000a464a5b93a5827e2c0eea0edb37b16c829676fe7879fcc36e872c4a40badf10d00bf7deeb58801000007010000009b71ace52f0e7884f21db208a55354fdbb6b85c965e629e2bc6ac5c5fc609a2a0019920adf7b836381b48bdc7d0dae29cff3a944304b55a54cc59adf879b67c5fc00c560e9a8c963d1dc32bff13ff2f1475868699a884add8ad31fa5d906f209c8886000000005b8e49ca7c6bf63ca8adcfd4e365bd5e1c683b53bc293ee410e7d3f47677250cfd82dc167df6d249203445e5a28930937c985a6ba06c3d9198185a2ee1cdb6979ea5570c3546126d536e485295e1409507bf581c988d09032578b590f8695890000020000000000050000000000000000000200000000000100000000000000c270915099ad9cc9867bce6899aad97bb191f43d19b6bd0d05e3c5878eb0bc7b02bf7deeb588010000004703716233738ee20e161d5b8f1ae856f7096f5142e28bbd79e5ede9b86f9c5603c07deeb588010000ca06d6bfcd00aa7dfc6cc3ad04fdfc7cb9653e1d26ca797b25071dc3968934a50068af885a2a7c2c0b6d60d16af55e3e093a85bb2aa83876a14d0412563be875ba5a3a17c1b0a494a1465ada0c59df47325515fd1965cfd499a88e97e1b774050600d04d39252f8f76ee4ce7ff1ce846f45d9bb0aa4b84e10e7ee96382958f4c9d3a03c17deeb588010000be5874cef09185af2481f799cfd6e5f5025d81de9e6d65a8e54f568343e8391600a2d1237a06816647084889c872722ceec17063bee6da39884135cca16b949cab92bfaa622c8719f04ce6f6b142beea1d881d534e159fffadd94093e3e7fd280500d04d39252f8f76ee4ce7ff1ce846f45d9bb0aa4b84e10e7ee96382958f4c9d3a03507eeeb588010000f2b17eaa883e8fbeb5e57f42b1d70fc1b537f6bbeb7bb538aa991fd599e73aae00f9dfc0a6c5318bead9fe7e2c2062e21f15d75df50abe456f91a3e7fed3c04d1d393b707c536371d42cc71d0b5a62d9b287de4f25a325468cc8d47d50e4592c0100d04d39252f8f76ee4ce7ff1ce846f45d9bb0aa4b84e10e7ee96382958f4c9d3a", - "index": 0, - "name": "Init_Validator_0", - "output": [ - "0 | Type : Init Validator", - "1 | Account key [1/2] : 009b71ace52f0e7884f21db208a55354fdbb6b", - "1 | Account key [2/2] : 85c965e629e2bc6ac5c5fc609a2a", - "2 | Consensus key [1/2] : 0019920adf7b836381b48bdc7d0dae29cff3a9", - "2 | Consensus key [2/2] : 44304b55a54cc59adf879b67c5fc", - "3 | Protocol key [1/2] : 00c560e9a8c963d1dc32bff13ff2f147586869", - "3 | Protocol key [2/2] : 9a884add8ad31fa5d906f209c888", - "4 | DKG key [1/6] : 6000000005b8e49ca7c6bf63ca8adcfd4e365b", - "4 | DKG key [2/6] : d5e1c683b53bc293ee410e7d3f47677250cfd8", - "4 | DKG key [3/6] : 2dc167df6d249203445e5a28930937c985a6ba", - "4 | DKG key [4/6] : 06c3d9198185a2ee1cdb6979ea5570c3546126", - "4 | DKG key [5/6] : d536e485295e1409507bf581c988d09032578b", - "4 | DKG key [6/6] : 590f869589", - "5 | Commission rate : 0.05", - "6 | Maximum commission rate change : 0.01", - "7 | Validator VP type : User" - ], - "output_expert": [ - "0 | Code hash [1/2] : 4703716233738ee20e161d5b8f1ae856f7096f", - "0 | Code hash [2/2] : 5142e28bbd79e5ede9b86f9c56", - "1 | Account key [1/2] : 009b71ace52f0e7884f21db208a55354fdbb6b", - "1 | Account key [2/2] : 85c965e629e2bc6ac5c5fc609a2a", - "2 | Consensus key [1/2] : 0019920adf7b836381b48bdc7d0dae29cff3a9", - "2 | Consensus key [2/2] : 44304b55a54cc59adf879b67c5fc", - "3 | Protocol key [1/2] : 00c560e9a8c963d1dc32bff13ff2f147586869", - "3 | Protocol key [2/2] : 9a884add8ad31fa5d906f209c888", - "4 | DKG key [1/6] : 6000000005b8e49ca7c6bf63ca8adcfd4e365b", - "4 | DKG key [2/6] : d5e1c683b53bc293ee410e7d3f47677250cfd8", - "4 | DKG key [3/6] : 2dc167df6d249203445e5a28930937c985a6ba", - "4 | DKG key [4/6] : 06c3d9198185a2ee1cdb6979ea5570c3546126", - "4 | DKG key [5/6] : d536e485295e1409507bf581c988d09032578b", - "4 | DKG key [6/6] : 590f869589", - "5 | Commission rate : 0.05", - "6 | Maximum commission rate change : 0.01", - "7 | Validator VP type [1/2] : a464a5b93a5827e2c0eea0edb37b16c829676f", - "7 | Validator VP type [2/2] : e7879fcc36e872c4a40badf10d", - "8 | Timestamp : 2023-06-13 18:04:45.887757782 UTC", - "9 | Pubkey [1/2] : 00d04d39252f8f76ee4ce7ff1ce846f45d9bb0", - "9 | Pubkey [2/2] : aa4b84e10e7ee96382958f4c9d3a", - "10 | Epoch : 1", - "11 | Gas limit : 0", - "12 | Fees : NAM 100.0" - ], - "valid": true - }, - { - "blob": "1e0000006532652d746573742e3364333666316461353466336435643166323335330023000000323032332d30362d31395431313a30393a34332e3930323036343038372b30303a3030610b4067b0663b433a7e3e81dc2b005285861d34fc44fac2307a8042e231d2767626301500729f783bc8cc89557f668faf1d5306e8b215734bc705fe8ea38ff60100e1f5050000000000280000003442383846423931334130373636453330413030423246423841413239343941373130453234453600a99a391a750acf6424a3b0a0aaa3f2c8f379f24cabaaeb2c23408f024e952de8010000000000000000000000000000000006000000015eac58d38801000000a464a5b93a5827e2c0eea0edb37b16c829676fe7879fcc36e872c4a40badf10d005eac58d38801000007010000001ea4e07a73edff32c5c4180412a007aa407895f84fd20203f6867c7eba12b533005b1096c50642388c69a740fd31e1537971adb27e07876bef6d57ef1585a6ada00048bfd36ab9fbbdd6db60bc363d5196ec91f7ae47bc688d6c3f5d012ff82f60b060000000be9ef2789e87afc5dd50566484b4dd6fc64beda8a33001a7cca96c71de94f11cc16fa02a1ae31af5f247e4761a7819191dcb07567e488607758459724bba2e54f66801b6221e6a8b30107ca1e54a84cdb871b81b1bae6f4ff2753d4184c800080000020000000000050000000000000000000200000000000100000000000000628d3f2cb520a7892b610ce61518c4038d2bf0190d058fb53c643275a4b925e4025eac58d388010000004703716233738ee20e161d5b8f1ae856f7096f5142e28bbd79e5ede9b86f9c56035fac58d3880100007626301500729f783bc8cc89557f668faf1d5306e8b215734bc705fe8ea38ff6009d6c842cd1c1d72deea8b1159232354f5ea23879619e6425ce29eb6fa63e31a86a6996c1fbe15ff01fc99171879b826cbb136492057122eea373331c48bc4d0e00a99a391a750acf6424a3b0a0aaa3f2c8f379f24cabaaeb2c23408f024e952de8035fac58d388010000610b4067b0663b433a7e3e81dc2b005285861d34fc44fac2307a8042e231d276009606592860183aa8f6ba21ef4949c89ea6027fb647397a902f09b3792f66ee531986f01b5aa132de6202e4f079a3f6f679ad313d78880753f0a9614a0b8d730900a99a391a750acf6424a3b0a0aaa3f2c8f379f24cabaaeb2c23408f024e952de803e6ac58d388010000d76e88cd9843309a3d4856965b99033e647f231f16a86a4d0e7a9f122587820f0004de8c4359736a577309eacc1e9df9dca5470ef2e99a286b299f27f768068d96bc2ae7b29738a1f46fe9cccd821d1e240c3778f5a66f23021be3b744483a950f00a99a391a750acf6424a3b0a0aaa3f2c8f379f24cabaaeb2c23408f024e952de8", - "index": 0, - "name": "Init_Validator_1", - "output": [ - "0 | Type : Init Validator", - "1 | Account key [1/2] : 001ea4e07a73edff32c5c4180412a007aa4078", - "1 | Account key [2/2] : 95f84fd20203f6867c7eba12b533", - "2 | Consensus key [1/2] : 005b1096c50642388c69a740fd31e1537971ad", - "2 | Consensus key [2/2] : b27e07876bef6d57ef1585a6ada0", - "3 | Protocol key [1/2] : 0048bfd36ab9fbbdd6db60bc363d5196ec91f7", - "3 | Protocol key [2/2] : ae47bc688d6c3f5d012ff82f60b0", - "4 | DKG key [1/6] : 60000000be9ef2789e87afc5dd50566484b4dd", - "4 | DKG key [2/6] : 6fc64beda8a33001a7cca96c71de94f11cc16f", - "4 | DKG key [3/6] : a02a1ae31af5f247e4761a7819191dcb07567e", - "4 | DKG key [4/6] : 488607758459724bba2e54f66801b6221e6a8b", - "4 | DKG key [5/6] : 30107ca1e54a84cdb871b81b1bae6f4ff2753d", - "4 | DKG key [6/6] : 4184c80008", - "5 | Commission rate : 0.05", - "6 | Maximum commission rate change : 0.01", - "7 | Validator VP type : User" - ], - "output_expert": [ - "0 | Code hash [1/2] : 4703716233738ee20e161d5b8f1ae856f7096f", - "0 | Code hash [2/2] : 5142e28bbd79e5ede9b86f9c56", - "1 | Account key [1/2] : 001ea4e07a73edff32c5c4180412a007aa4078", - "1 | Account key [2/2] : 95f84fd20203f6867c7eba12b533", - "2 | Consensus key [1/2] : 005b1096c50642388c69a740fd31e1537971ad", - "2 | Consensus key [2/2] : b27e07876bef6d57ef1585a6ada0", - "3 | Protocol key [1/2] : 0048bfd36ab9fbbdd6db60bc363d5196ec91f7", - "3 | Protocol key [2/2] : ae47bc688d6c3f5d012ff82f60b0", - "4 | DKG key [1/6] : 60000000be9ef2789e87afc5dd50566484b4dd", - "4 | DKG key [2/6] : 6fc64beda8a33001a7cca96c71de94f11cc16f", - "4 | DKG key [3/6] : a02a1ae31af5f247e4761a7819191dcb07567e", - "4 | DKG key [4/6] : 488607758459724bba2e54f66801b6221e6a8b", - "4 | DKG key [5/6] : 30107ca1e54a84cdb871b81b1bae6f4ff2753d", - "4 | DKG key [6/6] : 4184c80008", - "5 | Commission rate : 0.05", - "6 | Maximum commission rate change : 0.01", - "7 | Validator VP type [1/2] : a464a5b93a5827e2c0eea0edb37b16c829676f", - "7 | Validator VP type [2/2] : e7879fcc36e872c4a40badf10d", - "8 | Timestamp : 2023-06-19 11:09:43.902064087 UTC", - "9 | Pubkey [1/2] : 00a99a391a750acf6424a3b0a0aaa3f2c8f379", - "9 | Pubkey [2/2] : f24cabaaeb2c23408f024e952de8", - "10 | Epoch : 1", - "11 | Gas limit : 0", - "12 | Fees : NAM 100.0" - ], - "valid": true - }, - { - "blob": "1e0000006532652d746573742e6437323136343362616635323461356230613435350023000000323032332d30362d31395431323a35353a35382e3430363236363033352b30303a3030cd3375b4d0b3ff655788eee863f31ad2993b486dae0e406e931dd126a4c7777eb159fa0b694f99b97cddd0c3acd8f15522366bdfeb17ec55f0978d1d55de1a3f0100e1f5050000000000280000003442383846423931334130373636453330413030423246423841413239343941373130453234453600ef8ffbbcf933342a6ba57bc159e222c7d127df1fe1ce8fa0a8dbf1f062ee6ed101000000000000000000000000000000000600000001c6f0b9d38801000000a464a5b93a5827e2c0eea0edb37b16c829676fe7879fcc36e872c4a40badf10d00c6f0b9d3880100000701000000192c084fc9cd3432b08b5745bcdc5f5eb6f303158aebd0b37c4d1b968e6f86b3007f58fff171179823d58a6abd4a1b7218a14fe2cb5a13096435204e695f74f02e00faad2ea24a47bda7c85514d6b9ee03f6110b94bc41438c6049d35bd52396d8a06000000057680d3693d9f2cfddd5776af31b785383c395aa3035216d9fec466f7b3060add8d7cb59a692e4b020fa2861fb6857142cc25467ea04985018b37c80a67a9873dca721e92c0c754d5e4769cf3bce0adbe3d0269a4a50df5d3b20743bd38fc88a000002000000000005000000000000000000020000000000010000000000000090ee7dd613291f67ed3826424774d0152f0935fb3daf2d568c89cab88c23677602c6f0b9d388010000004703716233738ee20e161d5b8f1ae856f7096f5142e28bbd79e5ede9b86f9c5603c6f0b9d388010000b159fa0b694f99b97cddd0c3acd8f15522366bdfeb17ec55f0978d1d55de1a3f000a12fe69dec318aa93fea892716e034fe27b934de5fdfb2573308bc1c42ddc6b7e80450fca6b1ce5890244f941eb7403cc5dbcc10de30ed72115421bf40d160c00ef8ffbbcf933342a6ba57bc159e222c7d127df1fe1ce8fa0a8dbf1f062ee6ed103c7f0b9d388010000cd3375b4d0b3ff655788eee863f31ad2993b486dae0e406e931dd126a4c7777e00f1c9866b2b45f130a01924be3ca9c80bd78b67a63fc495443ddb61212f59f453137ff5412f30f9202bb04eb9bcb0d982255f91cbf57fd62e4a96060b41f6460500ef8ffbbcf933342a6ba57bc159e222c7d127df1fe1ce8fa0a8dbf1f062ee6ed10350f1b9d388010000f2af1eb4e1fb902fef4552a8d3d41f6ea2398202b4df0bbc46d575fbd00e210a00dc09a7a4134e28c6bfc26b8c1fad2e8d97730763c04311e7e03c1e1951046a177534b3ef2f364e3f37a28fae92d54b67d664339836e3b2af663d66bbc0b5350000ef8ffbbcf933342a6ba57bc159e222c7d127df1fe1ce8fa0a8dbf1f062ee6ed1", - "index": 0, - "name": "Init_Validator_2", - "output": [ - "0 | Type : Init Validator", - "1 | Account key [1/2] : 00192c084fc9cd3432b08b5745bcdc5f5eb6f3", - "1 | Account key [2/2] : 03158aebd0b37c4d1b968e6f86b3", - "2 | Consensus key [1/2] : 007f58fff171179823d58a6abd4a1b7218a14f", - "2 | Consensus key [2/2] : e2cb5a13096435204e695f74f02e", - "3 | Protocol key [1/2] : 00faad2ea24a47bda7c85514d6b9ee03f6110b", - "3 | Protocol key [2/2] : 94bc41438c6049d35bd52396d8a0", - "4 | DKG key [1/6] : 6000000057680d3693d9f2cfddd5776af31b78", - "4 | DKG key [2/6] : 5383c395aa3035216d9fec466f7b3060add8d7", - "4 | DKG key [3/6] : cb59a692e4b020fa2861fb6857142cc25467ea", - "4 | DKG key [4/6] : 04985018b37c80a67a9873dca721e92c0c754d", - "4 | DKG key [5/6] : 5e4769cf3bce0adbe3d0269a4a50df5d3b2074", - "4 | DKG key [6/6] : 3bd38fc88a", - "5 | Commission rate : 0.05", - "6 | Maximum commission rate change : 0.01", - "7 | Validator VP type : User" - ], - "output_expert": [ - "0 | Code hash [1/2] : 4703716233738ee20e161d5b8f1ae856f7096f", - "0 | Code hash [2/2] : 5142e28bbd79e5ede9b86f9c56", - "1 | Account key [1/2] : 00192c084fc9cd3432b08b5745bcdc5f5eb6f3", - "1 | Account key [2/2] : 03158aebd0b37c4d1b968e6f86b3", - "2 | Consensus key [1/2] : 007f58fff171179823d58a6abd4a1b7218a14f", - "2 | Consensus key [2/2] : e2cb5a13096435204e695f74f02e", - "3 | Protocol key [1/2] : 00faad2ea24a47bda7c85514d6b9ee03f6110b", - "3 | Protocol key [2/2] : 94bc41438c6049d35bd52396d8a0", - "4 | DKG key [1/6] : 6000000057680d3693d9f2cfddd5776af31b78", - "4 | DKG key [2/6] : 5383c395aa3035216d9fec466f7b3060add8d7", - "4 | DKG key [3/6] : cb59a692e4b020fa2861fb6857142cc25467ea", - "4 | DKG key [4/6] : 04985018b37c80a67a9873dca721e92c0c754d", - "4 | DKG key [5/6] : 5e4769cf3bce0adbe3d0269a4a50df5d3b2074", - "4 | DKG key [6/6] : 3bd38fc88a", - "5 | Commission rate : 0.05", - "6 | Maximum commission rate change : 0.01", - "7 | Validator VP type [1/2] : a464a5b93a5827e2c0eea0edb37b16c829676f", - "7 | Validator VP type [2/2] : e7879fcc36e872c4a40badf10d", - "8 | Timestamp : 2023-06-19 12:55:58.406266035 UTC", - "9 | Pubkey [1/2] : 00ef8ffbbcf933342a6ba57bc159e222c7d127", - "9 | Pubkey [2/2] : df1fe1ce8fa0a8dbf1f062ee6ed1", - "10 | Epoch : 1", - "11 | Gas limit : 0", - "12 | Fees : NAM 100.0" - ], - "valid": true - }, - { - "blob": "1e0000006532652d746573742e3364333666316461353466336435643166323335330023000000323032332d30362d31395431313a30383a33392e3736363030393139362b30303a303043744583b2fd0c7c5f246657bcc741d0e6892ab23131c2a060d23e91cb8d45a515725695de032a2a48257fe7e90b0a02207b3df15084d7c240d6cca2513dc0d00100e1f5050000000000280000003442383846423931334130373636453330413030423246423841413239343941373130453234453600d9458d9ae70b725813fd13be8c26febd094bb5a3f81654ddcd8416e45fc2b3730100000000000000000000000000000000070000000101b257d388010000007e68fb834a7772c82a312c4e6e519d97282cce39507950c35fe89f1c347a4a2e0102b257d3880100000031541273eef707a1bfc2c7976803d31f6b9fd88d4507712f4b450196f7437085000db257d3880100008800000000f8073848db6037887e84e03602dac5ade844fa48e984c072931c7cdf7cdf0c9700280000003737334245423843343633313442394541463041434344383230303731314631303443424635364400016771373ef61363c41884b2fe6306ce46a3ae4e46fb1f03fd6bc05503562cbee50c0000000000000018000000000000001e00000000000000020db257d38801000000659faad0bf46b689cea06b4d31040ca230db1b0096e8640e40ad57434c9d4b16033ab257d38801000015725695de032a2a48257fe7e90b0a02207b3df15084d7c240d6cca2513dc0d000fab979c5be2e0f90d919536626330b3911d9428cc2149c3255e9e2b9fb023e02d96c1e961631c495de9242a99bf8598c80a847cf7acf62301d94a1e3cdc1180f00d9458d9ae70b725813fd13be8c26febd094bb5a3f81654ddcd8416e45fc2b373033bb257d38801000043744583b2fd0c7c5f246657bcc741d0e6892ab23131c2a060d23e91cb8d45a5004b2cc8464e8880351583994ed85b570a2ab2e3750c465d2c484b2f4a37fc348b12a4eb3bf1f5329d273de8681c4c0edce1f50153b86c221e88296cb0044fd00500d9458d9ae70b725813fd13be8c26febd094bb5a3f81654ddcd8416e45fc2b37303beb257d3880100009c9c37809226894cac793fa652c6727e14a202bb6fef7b5ba44a9d62a3089a000023835f909b80df90c45118bd3958a61132c84597c7cb913f64367c68e80ab2126a836f450301a41c54730b608b8e677799176d66c9b672bdfcac5c10a2d3f90900d9458d9ae70b725813fd13be8c26febd094bb5a3f81654ddcd8416e45fc2b373", - "index": 0, - "name": "Init_Proposal_0", - "output": [ - "0 | Type : Init proposal", - "1 | Author [1/3] : atest1v4ehgw36xumnxsj9gguyxdpkxvcngs3e", - "1 | Author [2/3] : g4q5vvzpgdp5gwpjxqcrwvf3gccnqdzrgfrr2d", - "1 | Author [3/3] : jyuetzra", - "2 | Voting start epoch : 12", - "3 | Voting end epoch : 24", - "4 | Grace epoch : 30", - "5 | Content [1/2] : f8073848db6037887e84e03602dac5ade844fa", - "5 | Content [2/2] : 48e984c072931c7cdf7cdf0c97" - ], - "output_expert": [ - "0 | Code hash [1/2] : 659faad0bf46b689cea06b4d31040ca230db1b", - "0 | Code hash [2/2] : 0096e8640e40ad57434c9d4b16", - "1 | Author [1/3] : atest1v4ehgw36xumnxsj9gguyxdpkxvcngs3e", - "1 | Author [2/3] : g4q5vvzpgdp5gwpjxqcrwvf3gccnqdzrgfrr2d", - "1 | Author [3/3] : jyuetzra", - "2 | Voting start epoch : 12", - "3 | Voting end epoch : 24", - "4 | Grace epoch : 30", - "5 | Content [1/2] : f8073848db6037887e84e03602dac5ade844fa", - "5 | Content [2/2] : 48e984c072931c7cdf7cdf0c97", - "6 | Timestamp : 2023-06-19 11:08:39.766009196 UTC", - "7 | Pubkey [1/2] : 00d9458d9ae70b725813fd13be8c26febd094b", - "7 | Pubkey [2/2] : b5a3f81654ddcd8416e45fc2b373", - "8 | Epoch : 1", - "9 | Gas limit : 0", - "10 | Fees : NAM 100.0" - ], - "valid": true - }, - { - "blob": "1e0000006532652d746573742e6437323136343362616635323461356230613435350023000000323032332d30362d31395431323a35343a33352e3530363036383535342b30303a303035c29f2562a4c77d8e4ee8c8a9a335c5636630dca35af1a06d7bc4fb37325cb93238327b8ac302bcd36c6c2fee3c9736431c87c55c01ea6eaeffb9e6a1629b090100e1f5050000000000280000003442383846423931334130373636453330413030423246423841413239343941373130453234453600bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0b4612d4d8cc517e92682205a7477010000000000000000000000000000000007000000011eadb8d388010000007e68fb834a7772c82a312c4e6e519d97282cce39507950c35fe89f1c347a4a2e011eadb8d3880100000031541273eef707a1bfc2c7976803d31f6b9fd88d4507712f4b450196f74370850039adb8d388010000880000000008b9d5dcf5dd094d46d6a401fc62e61893f691622c08207028a8e7b89a279e5b0028000000433642464434354637454439463444453836443344304144323431393845413437444533454644320001f8195c7a3aba163b2d0ed2c04915a20d0dcfc31cffd5f05296f0ac036c3a6fcb0c0000000000000018000000000000001e000000000000000239adb8d38801000000659faad0bf46b689cea06b4d31040ca230db1b0096e8640e40ad57434c9d4b160366adb8d3880100003238327b8ac302bcd36c6c2fee3c9736431c87c55c01ea6eaeffb9e6a1629b09002c9606011cbe47361e513f992bb9ecb212406e728a579ad2eb66a2d80676ef9ee13418571b282f47a46f3e6fbb7e5f53c73eb99252d099a4944cc350bacab00800bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0b4612d4d8cc517e92682205a74770367adb8d38801000035c29f2562a4c77d8e4ee8c8a9a335c5636630dca35af1a06d7bc4fb37325cb90020ee458400a482f03f1f8c0577ee56075f33a02c52feac60c70b8b4e31ff4125e7f9d0bb963413f978b555ba52d32bf945b42edbb4dfb044fd62b584e8a8b40000bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0b4612d4d8cc517e92682205a747703eeadb8d3880100003ececfec177e27e9089334d286379862317180f2625e17c40856db9c18972f5400668b68e6419495a1b9c129b26337794b9d573324ee5757ad5762594a40348a9b31f7ffce812a2a2e4ea7a4be0af42b2f5b1444a656dd239afc8c222ba1d8da0c00bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0b4612d4d8cc517e92682205a7477", - "index": 0, - "name": "Init_Proposal_1", - "output": [ - "0 | Type : Init proposal", - "1 | Author [1/3] : atest1v4ehgw36gvmyy3jyxs65vd69gsu5vdzy", - "1 | Author [2/3] : g5urv3pngscyz3pjxscnjwz9gy6rw3z9xdz5v3", - "1 | Author [3/3] : pjksl96e", - "2 | Voting start epoch : 12", - "3 | Voting end epoch : 24", - "4 | Grace epoch : 30", - "5 | Content [1/2] : 08b9d5dcf5dd094d46d6a401fc62e61893f691", - "5 | Content [2/2] : 622c08207028a8e7b89a279e5b" - ], - "output_expert": [ - "0 | Code hash [1/2] : 659faad0bf46b689cea06b4d31040ca230db1b", - "0 | Code hash [2/2] : 0096e8640e40ad57434c9d4b16", - "1 | Author [1/3] : atest1v4ehgw36gvmyy3jyxs65vd69gsu5vdzy", - "1 | Author [2/3] : g5urv3pngscyz3pjxscnjwz9gy6rw3z9xdz5v3", - "1 | Author [3/3] : pjksl96e", - "2 | Voting start epoch : 12", - "3 | Voting end epoch : 24", - "4 | Grace epoch : 30", - "5 | Content [1/2] : 08b9d5dcf5dd094d46d6a401fc62e61893f691", - "5 | Content [2/2] : 622c08207028a8e7b89a279e5b", - "6 | Timestamp : 2023-06-19 12:54:35.506068554 UTC", - "7 | Pubkey [1/2] : 00bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0", - "7 | Pubkey [2/2] : b4612d4d8cc517e92682205a7477", - "8 | Epoch : 1", - "9 | Gas limit : 0", - "10 | Fees : NAM 100.0" - ], - "valid": true - }, - { - "blob": "1e0000006532652d746573742e6437323136343362616635323461356230613435350023000000323032332d30362d31395431323a35353a30362e3739383436393239382b30303a30307cb16e5a1424b82bd0d5871fad25ffc7b1702839056cf83250b31f49e023a9d0195287afbb1283512fa5a40ede96f2c5362f8001ff6054a156b50760a205d7930100e1f5050000000000280000003442383846423931334130373636453330413030423246423841413239343941373130453234453600bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0b4612d4d8cc517e92682205a74770100000000000000000000000000000001010300000000000000940000000000000006000000015e27b9d388010000007e68fb834a7772c82a312c4e6e519d97282cce39507950c35fe89f1c347a4a2e005e27b9d3880100006700000000f34c7c8ef99934a54da19a1698118fbd35170613249ee369a5969a30d1d6dbb0002800000043364246443435463745443946344445383644334430414432343139384541343744453345464432020c0000000000000018000000000000001e00000000000000025e27b9d38801000000659faad0bf46b689cea06b4d31040ca230db1b0096e8640e40ad57434c9d4b16038f27b9d388010000195287afbb1283512fa5a40ede96f2c5362f8001ff6054a156b50760a205d793009ad5be31e1aaba5624628f9f73f0f30e22f7a91060890ec5238b8bd8b72be1f03c68c3b1703886f82d11fd9925e782c52a0bca212718996c159fdd6ce72e260d00bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0b4612d4d8cc517e92682205a7477038f27b9d3880100007cb16e5a1424b82bd0d5871fad25ffc7b1702839056cf83250b31f49e023a9d0000c2b2c38b7ec50676db0853831648fe2898e244aa7b3f883a6e8d0c27a55493d61742fcc53ec8417b850d63632988e90943c6137e02fa6a59f8c29910763d80c00bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0b4612d4d8cc517e92682205a7477030529b9d388010000c597889622f78d53fdc3f0c9ca6f8ddffac2a43146784b3c09ab4f1a36ea7973007ef2465bdcd88704cc8bb49ceecf8ece76015565ca4181bfd003264728dc37e15b489923dbbdee20d57ae4bf0f77126957e2234cdb6959b12aadb6b38f2baf0200bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0b4612d4d8cc517e92682205a7477", - "index": 0, - "name": "Init_Proposal_2", - "output": [ - "0 | Type : Init proposal", - "1 | Author [1/3] : atest1v4ehgw36gvmyy3jyxs65vd69gsu5vdzy", - "1 | Author [2/3] : g5urv3pngscyz3pjxscnjwz9gy6rw3z9xdz5v3", - "1 | Author [3/3] : pjksl96e", - "2 | Voting start epoch : 12", - "3 | Voting end epoch : 24", - "4 | Grace epoch : 30", - "5 | Content [1/2] : f34c7c8ef99934a54da19a1698118fbd351706", - "5 | Content [2/2] : 13249ee369a5969a30d1d6dbb0" - ], - "output_expert": [ - "0 | Code hash [1/2] : 659faad0bf46b689cea06b4d31040ca230db1b", - "0 | Code hash [2/2] : 0096e8640e40ad57434c9d4b16", - "1 | Author [1/3] : atest1v4ehgw36gvmyy3jyxs65vd69gsu5vdzy", - "1 | Author [2/3] : g5urv3pngscyz3pjxscnjwz9gy6rw3z9xdz5v3", - "1 | Author [3/3] : pjksl96e", - "2 | Voting start epoch : 12", - "3 | Voting end epoch : 24", - "4 | Grace epoch : 30", - "5 | Content [1/2] : f34c7c8ef99934a54da19a1698118fbd351706", - "5 | Content [2/2] : 13249ee369a5969a30d1d6dbb0", - "6 | Timestamp : 2023-06-19 12:55:06.798469298 UTC", - "7 | Pubkey [1/2] : 00bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0", - "7 | Pubkey [2/2] : b4612d4d8cc517e92682205a7477", - "8 | Epoch : 1", - "9 | Gas limit : 0", - "10 | Fees : NAM 100.0" - ], - "valid": true - }, - { - "blob": "1e0000006532652d746573742e6437323136343362616635323461356230613435350023000000323032332d30362d31395431323a35353a31392e3230323635353032372b30303a3030f8deabc6fc59bb50ce9fb9d9662651778353b7d69653f87a5618bc3c194372b30b094d2a0c5a6423044c91a8b069bae16400d2bfc30f7af499656df9020c7e0e0100e1f5050000000000280000003442383846423931334130373636453330413030423246423841413239343941373130453234453600bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0b4612d4d8cc517e92682205a7477010000000000000000000000000000000101040000000000000016010000000000000600000001cd57b9d388010000007e68fb834a7772c82a312c4e6e519d97282cce39507950c35fe89f1c347a4a2e00ce57b9d388010000670000000099076284e6bf18b016166cecec783f0af9caf82580137304f316d131ee9d33a7002800000043364246443435463745443946344445383644334430414432343139384541343744453345464432010c0000000000000018000000000000001e0000000000000002ce57b9d38801000000659faad0bf46b689cea06b4d31040ca230db1b0096e8640e40ad57434c9d4b1603fa57b9d3880100000b094d2a0c5a6423044c91a8b069bae16400d2bfc30f7af499656df9020c7e0e003a4177bbc66aa545333c7397da13bbdf8fcdb624b0c328114747d2f7057d2890854c92f05e4601dc3b5fc6d3fc490c1eb6cd37e42decdb20993c69455d18400900bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0b4612d4d8cc517e92682205a747703fa57b9d388010000f8deabc6fc59bb50ce9fb9d9662651778353b7d69653f87a5618bc3c194372b300fe3847916b5e1a9e85f9a0616085ac771c0f42cec53eb8c0c0dba2bcd30508ca7d367137cc20df2a105262041a6819416f16550d56cea84f83b766103482950300bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0b4612d4d8cc517e92682205a7477036059b9d3880100001d3a8bdf924633b2787e3e56a9ffb0829a8733f8ef6ca8419b96407f3c6c9e1e0056793b917067bfe3ffd940f0d9d44465c74b986d4e89e3026bba228e6d6c1d426195946e417f972d7e54dc7864608b4381b7a27865dcfa1b6f6ca6e8ba54d60700bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0b4612d4d8cc517e92682205a7477", - "index": 0, - "name": "Init_Proposal_3", - "output": [ - "0 | Type : Init proposal", - "1 | Author [1/3] : atest1v4ehgw36gvmyy3jyxs65vd69gsu5vdzy", - "1 | Author [2/3] : g5urv3pngscyz3pjxscnjwz9gy6rw3z9xdz5v3", - "1 | Author [3/3] : pjksl96e", - "2 | Voting start epoch : 12", - "3 | Voting end epoch : 24", - "4 | Grace epoch : 30", - "5 | Content [1/2] : 99076284e6bf18b016166cecec783f0af9caf8", - "5 | Content [2/2] : 2580137304f316d131ee9d33a7" - ], - "output_expert": [ - "0 | Code hash [1/2] : 659faad0bf46b689cea06b4d31040ca230db1b", - "0 | Code hash [2/2] : 0096e8640e40ad57434c9d4b16", - "1 | Author [1/3] : atest1v4ehgw36gvmyy3jyxs65vd69gsu5vdzy", - "1 | Author [2/3] : g5urv3pngscyz3pjxscnjwz9gy6rw3z9xdz5v3", - "1 | Author [3/3] : pjksl96e", - "2 | Voting start epoch : 12", - "3 | Voting end epoch : 24", - "4 | Grace epoch : 30", - "5 | Content [1/2] : 99076284e6bf18b016166cecec783f0af9caf8", - "5 | Content [2/2] : 2580137304f316d131ee9d33a7", - "6 | Timestamp : 2023-06-19 12:55:19.202655027 UTC", - "7 | Pubkey [1/2] : 00bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0", - "7 | Pubkey [2/2] : b4612d4d8cc517e92682205a7477", - "8 | Epoch : 1", - "9 | Gas limit : 0", - "10 | Fees : NAM 100.0" - ], - "valid": true - }, - { - "blob": "1e0000006532652d746573742e6437323136343362616635323461356230613435350023000000323032332d30362d31395431323a35353a32332e3238323238313630312b30303a3030fffe87ab684566d98216bedf7e6190a803c129b6645cb299cddce11e5830bfe36078cddfc73e64e1e5ebfca93a035cb7b4cedcca2c80778e94dbe0f269fdd6430100e1f5050000000000280000003442383846423931334130373636453330413030423246423841413239343941373130453234453600bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0b4612d4d8cc517e92682205a74770100000000000000000000000000000001010500000000000000ae010000000000000600000001bd67b9d388010000007e68fb834a7772c82a312c4e6e519d97282cce39507950c35fe89f1c347a4a2e00be67b9d38801000067000000004d07ce9751a42ab7038b59f3da52844b8b52e96e449b8322286b7c06f323e263002800000043364246443435463745443946344445383644334430414432343139384541343744453345464432010c0000000000000018000000000000001e0000000000000002be67b9d38801000000659faad0bf46b689cea06b4d31040ca230db1b0096e8640e40ad57434c9d4b1603ee67b9d3880100006078cddfc73e64e1e5ebfca93a035cb7b4cedcca2c80778e94dbe0f269fdd64300f6605f144b1f50af0dbf8643ca766b3983841217916d1c5e67234d869189493243ed9c7e1021ecfe3ba16b51b007260eb3bff46ae3719f11b3c136f14c7c0b0600bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0b4612d4d8cc517e92682205a747703ee67b9d388010000fffe87ab684566d98216bedf7e6190a803c129b6645cb299cddce11e5830bfe3005e724608669b9997d2925fb9ccff814a022b02dfff3478580cdaa745943297e90816784feec33cc538df3ab3978ea5ea17246aa46c95c0a91d9143a85fc4d30a00bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0b4612d4d8cc517e92682205a7477036669b9d3880100007ec7135ffe4e34b9679aa0b9a5ecaa9fdee3d5eee2cd8d4077e961ef981ee5c60099479976ae8ef7b58c0688cd91da167ab27a8bcf1080500935609f68afcfcd57515ac61ff6170b4d8b97b4d591562e9afc28885671d6fdcd4761c986766d7f0700bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0b4612d4d8cc517e92682205a7477", - "index": 0, - "name": "Init_Proposal_4", - "output": [ - "0 | Type : Init proposal", - "1 | Author [1/3] : atest1v4ehgw36gvmyy3jyxs65vd69gsu5vdzy", - "1 | Author [2/3] : g5urv3pngscyz3pjxscnjwz9gy6rw3z9xdz5v3", - "1 | Author [3/3] : pjksl96e", - "2 | Voting start epoch : 12", - "3 | Voting end epoch : 24", - "4 | Grace epoch : 30", - "5 | Content [1/2] : 4d07ce9751a42ab7038b59f3da52844b8b52e9", - "5 | Content [2/2] : 6e449b8322286b7c06f323e263" - ], - "output_expert": [ - "0 | Code hash [1/2] : 659faad0bf46b689cea06b4d31040ca230db1b", - "0 | Code hash [2/2] : 0096e8640e40ad57434c9d4b16", - "1 | Author [1/3] : atest1v4ehgw36gvmyy3jyxs65vd69gsu5vdzy", - "1 | Author [2/3] : g5urv3pngscyz3pjxscnjwz9gy6rw3z9xdz5v3", - "1 | Author [3/3] : pjksl96e", - "2 | Voting start epoch : 12", - "3 | Voting end epoch : 24", - "4 | Grace epoch : 30", - "5 | Content [1/2] : 4d07ce9751a42ab7038b59f3da52844b8b52e9", - "5 | Content [2/2] : 6e449b8322286b7c06f323e263", - "6 | Timestamp : 2023-06-19 12:55:23.282281601 UTC", - "7 | Pubkey [1/2] : 00bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0", - "7 | Pubkey [2/2] : b4612d4d8cc517e92682205a7477", - "8 | Epoch : 1", - "9 | Gas limit : 0", - "10 | Fees : NAM 100.0" - ], - "valid": true - }, - { - "blob": "1e0000006532652d746573742e3962393137306363326132653638666435313533300023000000323032332d30362d31365431333a31303a33372e3232383537313938302b30303a3030edc9c28c4888fe3f79a29160d501ac14b3e950ff5325834b1d05454a687e604641bef1742d5861abe6422c85a1f3b4d89b838a122a1df8f4e1b44c3c13dd6ece0100e1f5050000000000280000003442383846423931334130373636453330413030423246423841413239343941373130453234453600d52a4b6c502bc42a2ad3e67ba860491500ad438071746c57bc060847ddf653bd1a000000000000000000000000000000000500000000ac4554c4880100003a0000000000000000000000010028000000364533334230423030343536463635364631334341413042353135334232314245353130433436350000000002ac4554c48801000000269ed92fd7e68af006b95f1f4b9a911c0cf51a2d6056b3c0619e10e8fd0ee27203dc4554c48801000041bef1742d5861abe6422c85a1f3b4d89b838a122a1df8f4e1b44c3c13dd6ece00f4565a325778c782e5ccf1bceff7f5ebda07a04616a6b9ac2740950fd66cd496d4a8777187b29ea1041eeaa0c2f0ed2abd7744a98771b2701ce3e05d41f0560000d52a4b6c502bc42a2ad3e67ba860491500ad438071746c57bc060847ddf653bd03dc4554c488010000edc9c28c4888fe3f79a29160d501ac14b3e950ff5325834b1d05454a687e6046006daacf884b19a1dfa2c351b0c2efa220ac9465588cb79ff6316b88407ad793504518060f4c20047b7c4b95c53c8d5fb81f9efa1b206abe954b54293a4779260f00d52a4b6c502bc42a2ad3e67ba860491500ad438071746c57bc060847ddf653bd03704654c48801000019ffb4bcb2c18c79775144a03dc287afd593df48272023246726858712ae69b100ef02739114b52a2be6b17da945367637c1a5a907f1a77f5076171927ab9b035ad56cea5b8f0e52e0d4fdd2e50ec3e8e13025c1a5507ae7bb033b42bcb1dfcd0e00d52a4b6c502bc42a2ad3e67ba860491500ad438071746c57bc060847ddf653bd", - "index": 0, - "name": "Vote_Proposal_Nay", - "output": [ - "0 | Type : Vote Proposal", - "1 | ID : 0", - "2 | Vote : nay", - "3 | Voter [1/3] : atest1v4ehgw36xeznxv6zxpprqvp5x5myvd34", - "3 | Voter [2/3] : xerrzv6rg9qnqs34xy6nxs3jx9py2df3xppngd", - "3 | Voter [3/3] : 345p5atp" - ], - "output_expert": [ - "0 | Code hash [1/2] : 269ed92fd7e68af006b95f1f4b9a911c0cf51a", - "0 | Code hash [2/2] : 2d6056b3c0619e10e8fd0ee272", - "1 | ID : 0", - "2 | Vote : nay", - "3 | Voter [1/3] : atest1v4ehgw36xeznxv6zxpprqvp5x5myvd34", - "3 | Voter [2/3] : xerrzv6rg9qnqs34xy6nxs3jx9py2df3xppngd", - "3 | Voter [3/3] : 345p5atp", - "4 | Timestamp : 2023-06-16 13:10:37.228571980 UTC", - "5 | Pubkey [1/2] : 00d52a4b6c502bc42a2ad3e67ba860491500ad", - "5 | Pubkey [2/2] : 438071746c57bc060847ddf653bd", - "6 | Epoch : 26", - "7 | Gas limit : 0", - "8 | Fees : NAM 100.0" - ], - "valid": true - }, - { - "blob": "1e0000006532652d746573742e3962393137306363326132653638666435313533300023000000323032332d30362d31365431333a31303a34312e3032303136303934362b30303a3030ad41f8f8c895f75e0aac6cc9187a294a8066cdac5f6fe93f2d31fccf2a674429117330dfdb0fd60f7915697b7c08f9ab34b0b60773991698734ae6d2ba8d786b0100e1f50500000000002800000034423838464239313341303736364533304130304232464238414132393439413731304532344536006b4bdfc5ae6f3460323b355fb87d8caaef554b8bb8dcb7c9bba59e9e4d67b83e1a00000000000000000000000000000001010400000000000000ac0000000000000005000000007c5454c4880100003b0000000000000000000000000000280000003341343639354535393337463138464441383842433835343544434630413443353430343435334300000000027c5454c48801000000269ed92fd7e68af006b95f1f4b9a911c0cf51a2d6056b3c0619e10e8fd0ee27203a85454c488010000117330dfdb0fd60f7915697b7c08f9ab34b0b60773991698734ae6d2ba8d786b0060f4679564616f7f5ddeb9d5834a4580a239ace04f25a4527fcc52dcfe8fb088faa5dc45d74433bd438ac6666f0603f5dd88078221bffdac6da45fee38b93a06006b4bdfc5ae6f3460323b355fb87d8caaef554b8bb8dcb7c9bba59e9e4d67b83e03a85454c488010000ad41f8f8c895f75e0aac6cc9187a294a8066cdac5f6fe93f2d31fccf2a6744290086881b106c094b8d98e28fb3c1346a66acb2c5827abeeb7e3e29afcb4b92f9e26ae6fe60b0d91c58fe8b0b89e920c6a1ad0094fcc1d907f2dd50d9768640310a006b4bdfc5ae6f3460323b355fb87d8caaef554b8bb8dcb7c9bba59e9e4d67b83e031e5654c488010000cea3f4c7b96657cff8ffbbe683140056e63c6a40f77473b9900a38d7f6d91b0100049eb28ef3bd6181cdb59096de61400e3794ab0d3bd12734a53fb421bfc8b72b23fb733c529f38e381e2e550bf3d8d8a643f000f7f51f34db17b6113dd17d606006b4bdfc5ae6f3460323b355fb87d8caaef554b8bb8dcb7c9bba59e9e4d67b83e", - "index": 0, - "name": "Vote_Proposal_Yay", - "output": [ - "0 | Type : Vote Proposal", - "1 | ID : 0", - "2 | Vote : yay", - "3 | Voter [1/3] : atest1v4ehgw36xdqngd3ex4zn2wfnxarrzwzx", - "3 | Voter [2/3] : g3qnswzzgvur2dp4g3p5vvzpx3pn2dpsxs6r2v", - "3 | Voter [3/3] : 6ruyw9dk" - ], - "output_expert": [ - "0 | Code hash [1/2] : 269ed92fd7e68af006b95f1f4b9a911c0cf51a", - "0 | Code hash [2/2] : 2d6056b3c0619e10e8fd0ee272", - "1 | ID : 0", - "2 | Vote : yay", - "3 | Voter [1/3] : atest1v4ehgw36xdqngd3ex4zn2wfnxarrzwzx", - "3 | Voter [2/3] : g3qnswzzgvur2dp4g3p5vvzpx3pn2dpsxs6r2v", - "3 | Voter [3/3] : 6ruyw9dk", - "4 | Timestamp : 2023-06-16 13:10:41.020160946 UTC", - "5 | Pubkey [1/2] : 006b4bdfc5ae6f3460323b355fb87d8caaef55", - "5 | Pubkey [2/2] : 4b8bb8dcb7c9bba59e9e4d67b83e", - "6 | Epoch : 26", - "7 | Gas limit : 0", - "8 | Fees : NAM 100.0" - ], - "valid": true - }, - { - "blob": "1e0000006532652d746573742e3364333666316461353466336435643166323335330023000000323032332d30362d31395431313a30383a34342e3230363131333239392b30303a3030715f8decde1ba9cbd2971cbaa71ab0f13b4a0693e6ba19964f6f30558854f85d34f05e3b060b061d8db76b40e86233e2cb0d8fe6e32b151d13e27b05185a4b990100e1f5050000000000280000003442383846423931334130373636453330413030423246423841413239343941373130453234453600a99a391a750acf6424a3b0a0aaa3f2c8f379f24cabaaeb2c23408f024e952de8010000000000000000000000000000000005000000002ec357d3880100006700000000000000000000000100280000003432453843463142344130323231354145363232333841343737384642323736454639383231433801000000002800000035374446303339314543444533393230433932444133384534464437394642453143313541463233022ec357d38801000000269ed92fd7e68af006b95f1f4b9a911c0cf51a2d6056b3c0619e10e8fd0ee272035ec357d38801000034f05e3b060b061d8db76b40e86233e2cb0d8fe6e32b151d13e27b05185a4b9900380b6a6d78f7e7440a8dace4da6c22a620e52078eee770e04e0850d502295aa7974aa84b8e40773b87721c320f1360227fe6a6ad921d41b3e40ed1147df94f0100a99a391a750acf6424a3b0a0aaa3f2c8f379f24cabaaeb2c23408f024e952de8035fc357d388010000715f8decde1ba9cbd2971cbaa71ab0f13b4a0693e6ba19964f6f30558854f85d00442f59d0fb6d19c35154f8678fcbcba7f5afe3390a5c9805a2ec97b26d64096dd41ae4a23be315bc720cf051315d636b512590e274942625147830beb7c7ff0a00a99a391a750acf6424a3b0a0aaa3f2c8f379f24cabaaeb2c23408f024e952de803eec357d3880100003a6b2ad232519e4e9d441b9e5e2b727bd8c13a291f3866731bba4f7a960edca800b806f6073e1ac984400f6cbd6a69e5877c6dc6e5f2742192233a10de503f08c4ece155608e81d6704c488b55dcb3fc4f645786b4cffdc2ea9489550406d6940900a99a391a750acf6424a3b0a0aaa3f2c8f379f24cabaaeb2c23408f024e952de8", - "index": 0, - "name": "Vote_Proposal_Nay_with_Delegations", - "output": [ - "0 | Type : Vote Proposal", - "1 | ID : 0", - "2 | Vote : nay", - "3 | Voter [1/3] : atest1v4ehgw36xsey2wzrgcc5ydzpxqeryvf4", - "3 | Voter [2/3] : g9znvv3jxvuyzdphxuuyvs3jxumy233e8qerzs", - "3 | Voter [3/3] : ecdvt2tj", - "4 | Delegations [1/3] : atest1v4ehgw36x5m5g33sxvunz32rg3znxwfj", - "4 | Delegations [2/3] : xppnjvjygyens3f5gezrww2xgfznzse3x4q5vv", - "4 | Delegations [3/3] : 3nss6z3p" - ], - "output_expert": [ - "0 | Code hash [1/2] : 269ed92fd7e68af006b95f1f4b9a911c0cf51a", - "0 | Code hash [2/2] : 2d6056b3c0619e10e8fd0ee272", - "1 | ID : 0", - "2 | Vote : nay", - "3 | Voter [1/3] : atest1v4ehgw36xsey2wzrgcc5ydzpxqeryvf4", - "3 | Voter [2/3] : g9znvv3jxvuyzdphxuuyvs3jxumy233e8qerzs", - "3 | Voter [3/3] : ecdvt2tj", - "4 | Delegations [1/3] : atest1v4ehgw36x5m5g33sxvunz32rg3znxwfj", - "4 | Delegations [2/3] : xppnjvjygyens3f5gezrww2xgfznzse3x4q5vv", - "4 | Delegations [3/3] : 3nss6z3p", - "5 | Timestamp : 2023-06-19 11:08:44.206113299 UTC", - "6 | Pubkey [1/2] : 00a99a391a750acf6424a3b0a0aaa3f2c8f379", - "6 | Pubkey [2/2] : f24cabaaeb2c23408f024e952de8", - "7 | Epoch : 1", - "8 | Gas limit : 0", - "9 | Fees : NAM 100.0" - ], - "valid": true - }, - { - "blob": "1e0000006532652d746573742e3364333666316461353466336435643166323335330023000000323032332d30362d31395431313a30383a34372e3937373933313933372b30303a30305dd8f3c72b9c5c05445f6b49a25302184a027064110bdb963490dbe2f88ecc4440cb776e48e4baa79b2e5b4d409c44ed76b873d0afd4b8caff871980d87f13ee0100e1f5050000000000280000003442383846423931334130373636453330413030423246423841413239343941373130453234453600d9458d9ae70b725813fd13be8c26febd094bb5a3f81654ddcd8416e45fc2b3730100000000000000000000000000000001010000000000000000f0010000000000000500000000e9d157d3880100003b000000000000000000000000000028000000373733424542384334363331344239454146304143434438323030373131463130344342463536440000000002ead157d38801000000269ed92fd7e68af006b95f1f4b9a911c0cf51a2d6056b3c0619e10e8fd0ee272031bd257d38801000040cb776e48e4baa79b2e5b4d409c44ed76b873d0afd4b8caff871980d87f13ee0013b39d3594b996d2617862b08d143993350865c39331f40f33d1a196498b878d52dd8f1f07b26ea185678cf73c753e29787c75c6f0ad6017bca1c5d88954b50a00d9458d9ae70b725813fd13be8c26febd094bb5a3f81654ddcd8416e45fc2b373031bd257d3880100005dd8f3c72b9c5c05445f6b49a25302184a027064110bdb963490dbe2f88ecc44001087e604b4a2c92966f4b6d48e3d9a36008064309d37110a704d9dc33746f69ee483edcdd74bbf7b80d257389ec5b7b4cabbee447c49541731712dd128a7f50600d9458d9ae70b725813fd13be8c26febd094bb5a3f81654ddcd8416e45fc2b3730379d357d3880100000d91ce8b9193335f8b6cc17d3b6d112a7feec4ec1bd11f34f24567684a92d94200f4dffee631b6177d8399e4d3c18315d6f6b599414e48ad88a4e9bd4b4c24105040b68832a1df74cb3a370b99928997da44e73ace648ddebd7a8b08a7a3e67e0e00d9458d9ae70b725813fd13be8c26febd094bb5a3f81654ddcd8416e45fc2b373", - "index": 0, - "name": "Vote_Proposal_yay_1", - "output": [ - "0 | Type : Vote Proposal", - "1 | ID : 0", - "2 | Vote : yay", - "3 | Voter [1/3] : atest1v4ehgw36xumnxsj9gguyxdpkxvcngs3e", - "3 | Voter [2/3] : g4q5vvzpgdp5gwpjxqcrwvf3gccnqdzrgfrr2d", - "3 | Voter [3/3] : jyuetzra" - ], - "output_expert": [ - "0 | Code hash [1/2] : 269ed92fd7e68af006b95f1f4b9a911c0cf51a", - "0 | Code hash [2/2] : 2d6056b3c0619e10e8fd0ee272", - "1 | ID : 0", - "2 | Vote : yay", - "3 | Voter [1/3] : atest1v4ehgw36xumnxsj9gguyxdpkxvcngs3e", - "3 | Voter [2/3] : g4q5vvzpgdp5gwpjxqcrwvf3gccnqdzrgfrr2d", - "3 | Voter [3/3] : jyuetzra", - "4 | Timestamp : 2023-06-19 11:08:47.977931937 UTC", - "5 | Pubkey [1/2] : 00d9458d9ae70b725813fd13be8c26febd094b", - "5 | Pubkey [2/2] : b5a3f81654ddcd8416e45fc2b373", - "6 | Epoch : 1", - "7 | Gas limit : 0", - "8 | Fees : NAM 100.0" - ], - "valid": true - }, - { - "blob": "1e0000006532652d746573742e3364333666316461353466336435643166323335330023000000323032332d30362d31395431313a30393a32302e3434333537323737342b30303a30306b79488c50e8846ebe5c908912fbfbcda2201709df1c2abf9089a9e56b0080655deb0e19ee4fc146c430f920ab00f6130c57c3dfbc642ff080a5c3882727295a0100e1f5050000000000280000003442383846423931334130373636453330413030423246423841413239343941373130453234453600a99a391a750acf6424a3b0a0aaa3f2c8f379f24cabaaeb2c23408f024e952de801000000000000000000000000000000000500000000bb5058d388010000a1000000020000000000000000010100000000280000003737334245423843343633313442394541463041434344383230303731314631303443424635364484030000000000000028000000343245384346314234413032323135414536323233384134373738464232373645463938323143380100000000280000003537444630333931454344453339323043393244413338453446443739464245314331354146323302bb5058d38801000000269ed92fd7e68af006b95f1f4b9a911c0cf51a2d6056b3c0619e10e8fd0ee27203ee5058d3880100005deb0e19ee4fc146c430f920ab00f6130c57c3dfbc642ff080a5c3882727295a00d6637d6ef9f1097bbf2d994218aacab8839f623f67da7252cc049a89665b35bea7ba8164cf446f60b3512b9e54b14172276b873fc81e495b9ff63adfefd9b70600a99a391a750acf6424a3b0a0aaa3f2c8f379f24cabaaeb2c23408f024e952de803ef5058d3880100006b79488c50e8846ebe5c908912fbfbcda2201709df1c2abf9089a9e56b0080650077e1ee5cedf2244154e6f00dc9094a5a781fc2d70fdfbaceeba22abbff8cc679ca330ef4f72159ae492b7af74aba28973446d209f8d1e66fbe2dcf7f5ae06f0f00a99a391a750acf6424a3b0a0aaa3f2c8f379f24cabaaeb2c23408f024e952de8037e5158d388010000c074f99de08450f603929eae13fbffea3318e54973d5ff624b755f718847b0c100f41714eb11091a823baa617b2f9ea79432a40599e6a2b5152e8dee588e469ab218a7332a19009f42826629b4afb5da8eb8d9044eb510cfab99da986ff1c54a0e00a99a391a750acf6424a3b0a0aaa3f2c8f379f24cabaaeb2c23408f024e952de8", - "index": 0, - "name": "Vote_Proposal_yay_with_councils_1", - "output": [ - "0 | Type : Vote Proposal", - "1 | ID : 2", - "2 | Vote [1/4] : yay with councils:\nCouncil: atest1v4eh", - "2 | Vote [2/4] : gw36xumnxsj9gguyxdpkxvcngs3eg4q5vvzpgd", - "2 | Vote [3/4] : p5gwpjxqcrwvf3gccnqdzrgfrr2djyuetzra, ", - "2 | Vote [4/4] : spending cap: 0.0009", - "3 | Voter [1/3] : atest1v4ehgw36xsey2wzrgcc5ydzpxqeryvf4", - "3 | Voter [2/3] : g9znvv3jxvuyzdphxuuyvs3jxumy233e8qerzs", - "3 | Voter [3/3] : ecdvt2tj", - "4 | Delegations [1/3] : atest1v4ehgw36x5m5g33sxvunz32rg3znxwfj", - "4 | Delegations [2/3] : xppnjvjygyens3f5gezrww2xgfznzse3x4q5vv", - "4 | Delegations [3/3] : 3nss6z3p" - ], - "output_expert": [ - "0 | Code hash [1/2] : 269ed92fd7e68af006b95f1f4b9a911c0cf51a", - "0 | Code hash [2/2] : 2d6056b3c0619e10e8fd0ee272", - "1 | ID : 2", - "2 | Vote [1/4] : yay with councils:\nCouncil: atest1v4eh", - "2 | Vote [2/4] : gw36xumnxsj9gguyxdpkxvcngs3eg4q5vvzpgd", - "2 | Vote [3/4] : p5gwpjxqcrwvf3gccnqdzrgfrr2djyuetzra, ", - "2 | Vote [4/4] : spending cap: 0.0009", - "3 | Voter [1/3] : atest1v4ehgw36xsey2wzrgcc5ydzpxqeryvf4", - "3 | Voter [2/3] : g9znvv3jxvuyzdphxuuyvs3jxumy233e8qerzs", - "3 | Voter [3/3] : ecdvt2tj", - "4 | Delegations [1/3] : atest1v4ehgw36x5m5g33sxvunz32rg3znxwfj", - "4 | Delegations [2/3] : xppnjvjygyens3f5gezrww2xgfznzse3x4q5vv", - "4 | Delegations [3/3] : 3nss6z3p", - "5 | Timestamp : 2023-06-19 11:09:20.443572774 UTC", - "6 | Pubkey [1/2] : 00a99a391a750acf6424a3b0a0aaa3f2c8f379", - "6 | Pubkey [2/2] : f24cabaaeb2c23408f024e952de8", - "7 | Epoch : 1", - "8 | Gas limit : 0", - "9 | Fees : NAM 100.0" - ], - "valid": true - }, - { - "blob": "1e0000006532652d746573742e3364333666316461353466336435643166323335330023000000323032332d30362d31395431313a30393a32352e3131303030343031392b30303a30306acbac199c38fb7965f3dc094518fe2787f8b8acb6d6588a7338034018d9fde44758c1123952d0fc2d7c6774ed39ea0d8efbdcee4cbb257052bb26fb9d1415520100e1f5050000000000280000003442383846423931334130373636453330413030423246423841413239343941373130453234453600a99a391a750acf6424a3b0a0aaa3f2c8f379f24cabaaeb2c23408f024e952de801000000000000000000000000000000000500000000f66258d388010000a1000000030000000000000000010100000000280000003737334245423843343633313442394541463041434344383230303731314631303443424635364484030000000000000028000000343245384346314234413032323135414536323233384134373738464232373645463938323143380100000000280000003537444630333931454344453339323043393244413338453446443739464245314331354146323302f66258d38801000000269ed92fd7e68af006b95f1f4b9a911c0cf51a2d6056b3c0619e10e8fd0ee27203226358d3880100004758c1123952d0fc2d7c6774ed39ea0d8efbdcee4cbb257052bb26fb9d14155200f3e3abf90ec08dbfc9c01d784cd1e40953efedcf7a0db03ae370bb6f089049a03aa8777688710fda0e8b2be758a0f1e0b844b7a65dd22029b41545d52c6c080900a99a391a750acf6424a3b0a0aaa3f2c8f379f24cabaaeb2c23408f024e952de803236358d3880100006acbac199c38fb7965f3dc094518fe2787f8b8acb6d6588a7338034018d9fde400ed6ce3c5c0a9b52b74eb95546800ce9b122e5e171565bbd57bbda4893902d5657e7e17f6b863a4e66e392e27007a642f0af9c3112d7dbf1c2d105de27895ff0300a99a391a750acf6424a3b0a0aaa3f2c8f379f24cabaaeb2c23408f024e952de803ae6358d3880100007dc78672e3e3852b697a3132e496221e27fe71b912e56f380dc856bc9418528f005cda5915f900fe452502ade1d7b9fb4d7f5b0d1d3a68001526ec8ce4a88c95f86d4d3b071bd75c6c4f3913093c840575aa0cec53e8b1d6e7f0817dd012d21f0100a99a391a750acf6424a3b0a0aaa3f2c8f379f24cabaaeb2c23408f024e952de8", - "index": 0, - "name": "Vote_Proposal_yay_with_councils_2", - "output": [ - "0 | Type : Vote Proposal", - "1 | ID : 3", - "2 | Vote [1/4] : yay with councils:\nCouncil: atest1v4eh", - "2 | Vote [2/4] : gw36xumnxsj9gguyxdpkxvcngs3eg4q5vvzpgd", - "2 | Vote [3/4] : p5gwpjxqcrwvf3gccnqdzrgfrr2djyuetzra, ", - "2 | Vote [4/4] : spending cap: 0.0009", - "3 | Voter [1/3] : atest1v4ehgw36xsey2wzrgcc5ydzpxqeryvf4", - "3 | Voter [2/3] : g9znvv3jxvuyzdphxuuyvs3jxumy233e8qerzs", - "3 | Voter [3/3] : ecdvt2tj", - "4 | Delegations [1/3] : atest1v4ehgw36x5m5g33sxvunz32rg3znxwfj", - "4 | Delegations [2/3] : xppnjvjygyens3f5gezrww2xgfznzse3x4q5vv", - "4 | Delegations [3/3] : 3nss6z3p" - ], - "output_expert": [ - "0 | Code hash [1/2] : 269ed92fd7e68af006b95f1f4b9a911c0cf51a", - "0 | Code hash [2/2] : 2d6056b3c0619e10e8fd0ee272", - "1 | ID : 3", - "2 | Vote [1/4] : yay with councils:\nCouncil: atest1v4eh", - "2 | Vote [2/4] : gw36xumnxsj9gguyxdpkxvcngs3eg4q5vvzpgd", - "2 | Vote [3/4] : p5gwpjxqcrwvf3gccnqdzrgfrr2djyuetzra, ", - "2 | Vote [4/4] : spending cap: 0.0009", - "3 | Voter [1/3] : atest1v4ehgw36xsey2wzrgcc5ydzpxqeryvf4", - "3 | Voter [2/3] : g9znvv3jxvuyzdphxuuyvs3jxumy233e8qerzs", - "3 | Voter [3/3] : ecdvt2tj", - "4 | Delegations [1/3] : atest1v4ehgw36x5m5g33sxvunz32rg3znxwfj", - "4 | Delegations [2/3] : xppnjvjygyens3f5gezrww2xgfznzse3x4q5vv", - "4 | Delegations [3/3] : 3nss6z3p", - "5 | Timestamp : 2023-06-19 11:09:25.110004019 UTC", - "6 | Pubkey [1/2] : 00a99a391a750acf6424a3b0a0aaa3f2c8f379", - "6 | Pubkey [2/2] : f24cabaaeb2c23408f024e952de8", - "7 | Epoch : 1", - "8 | Gas limit : 0", - "9 | Fees : NAM 100.0" - ], - "valid": true - }, - { - "blob": "1e0000006532652d746573742e6437323136343362616635323461356230613435350023000000323032332d30362d31395431323a35343a34302e3833383030333637372b30303a303035353068af54faf9209f76359cc2ab2ed44a917d753fa89460d3c0b39588c064197b264fa82ffbb716374b0bad5998dbec54201f5e82b4b80a5f1fa7fa41ead50100e1f5050000000000280000003442383846423931334130373636453330413030423246423841413239343941373130453234453600ef8ffbbcf933342a6ba57bc159e222c7d127df1fe1ce8fa0a8dbf1f062ee6ed101000000000000000000000000000000000500000000c6c1b8d388010000670000000000000000000000010028000000343235374543454343393334373332334242333335323838374232433839463044334138384432410100000000280000003133303535453831333445313730314441373330303838374643383736434346454434363832374502c6c1b8d38801000000269ed92fd7e68af006b95f1f4b9a911c0cf51a2d6056b3c0619e10e8fd0ee27203f2c1b8d388010000197b264fa82ffbb716374b0bad5998dbec54201f5e82b4b80a5f1fa7fa41ead500d13ed7d994965690038fba6a1ad1772cb4745629313b9c566dbccedcc4223e7bcd008c8281fd101e700347fe45b14a79fed8de42e9a026d110b03d983f87980b00ef8ffbbcf933342a6ba57bc159e222c7d127df1fe1ce8fa0a8dbf1f062ee6ed103f3c1b8d38801000035353068af54faf9209f76359cc2ab2ed44a917d753fa89460d3c0b39588c06400ba2b6440cd2f08f86f293525bf552a22bc26c2ded73745de7b361de1c698c2e682d2ff0dea8fb5c9edded61bd4b9eb87a7a6825255fb68a6197a48c261a6be0800ef8ffbbcf933342a6ba57bc159e222c7d127df1fe1ce8fa0a8dbf1f062ee6ed1037ac2b8d388010000af5a54b55230272b0fe3932644dd9d767192e199dacbc23d3ca526471474b02f005cc02bd6f2f070c87a0d676b24879132499c33e6d07e061b483220c07c0a7fd56128894eae086c86fe2fd94dc96a6193e0d843ddf73cdb8720d328566d136e0a00ef8ffbbcf933342a6ba57bc159e222c7d127df1fe1ce8fa0a8dbf1f062ee6ed1", - "index": 0, - "name": "Vote_Proposal_Nay_2", - "output": [ - "0 | Type : Vote Proposal", - "1 | ID : 0", - "2 | Vote : nay", - "3 | Voter [1/3] : atest1v4ehgw36xser2d69gdz5xseexv6rwvej", - "3 | Voter [2/3] : xdpyyvenx5erswphggeyxwpegccygv6p8quygv", - "3 | Voter [3/3] : jp4gcn9a", - "4 | Delegations [1/3] : atest1v4ehgw36xyenqdf4g5urzve5g5cnwvp3", - "4 | Delegations [2/3] : g3qnwvesxqursd6xgvurwdjrgdry23p5xcuryd", - "4 | Delegations [3/3] : 69jx6t2q" - ], - "output_expert": [ - "0 | Code hash [1/2] : 269ed92fd7e68af006b95f1f4b9a911c0cf51a", - "0 | Code hash [2/2] : 2d6056b3c0619e10e8fd0ee272", - "1 | ID : 0", - "2 | Vote : nay", - "3 | Voter [1/3] : atest1v4ehgw36xser2d69gdz5xseexv6rwvej", - "3 | Voter [2/3] : xdpyyvenx5erswphggeyxwpegccygv6p8quygv", - "3 | Voter [3/3] : jp4gcn9a", - "4 | Delegations [1/3] : atest1v4ehgw36xyenqdf4g5urzve5g5cnwvp3", - "4 | Delegations [2/3] : g3qnwvesxqursd6xgvurwdjrgdry23p5xcuryd", - "4 | Delegations [3/3] : 69jx6t2q", - "5 | Timestamp : 2023-06-19 12:54:40.838003677 UTC", - "6 | Pubkey [1/2] : 00ef8ffbbcf933342a6ba57bc159e222c7d127", - "6 | Pubkey [2/2] : df1fe1ce8fa0a8dbf1f062ee6ed1", - "7 | Epoch : 1", - "8 | Gas limit : 0", - "9 | Fees : NAM 100.0" - ], - "valid": true - }, - { - "blob": "1e0000006532652d746573742e6437323136343362616635323461356230613435350023000000323032332d30362d31395431323a35343a34342e3532353935373239382b30303a30309e31e25ceaa52fbeb550f04f07d0021bf8e98c69a04b18a516fda24ef1b0491335b31d3c8e18e2825378aa39b38072a12b89f8c24e5ff4a1b1a6182e0b4b14010100e1f5050000000000280000003442383846423931334130373636453330413030423246423841413239343941373130453234453600bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0b4612d4d8cc517e92682205a74770100000000000000000000000000000001010000000000000000260000000000000005000000002dd0b8d3880100003b0000000000000000000000000000280000004336424644343546374544394634444538364433443041443234313938454134374445334546443200000000022ed0b8d38801000000269ed92fd7e68af006b95f1f4b9a911c0cf51a2d6056b3c0619e10e8fd0ee272035ed0b8d38801000035b31d3c8e18e2825378aa39b38072a12b89f8c24e5ff4a1b1a6182e0b4b1401006fbb43f3fffc46fdfc38ba3ba097718960635df2394a95b5263f9ee86b5ed09524b75103292e093e8a4d4d830583c5eafe8eb42e8b7662e9d3d55d486692810400bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0b4612d4d8cc517e92682205a7477035fd0b8d3880100009e31e25ceaa52fbeb550f04f07d0021bf8e98c69a04b18a516fda24ef1b04913006192cfc71d9234318a6f1d45b5267418abd0a4f348df8bee42b18d3ae8ac5b695df2e3b46753c0a3c892c7e48777b7b082edce54b0430b2d78b045d07bed580e00bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0b4612d4d8cc517e92682205a7477039fd1b8d3880100003f73335d0c8fc11be1cdb70c511915cd890dfee55a258f4eb04a9843ed10481b0028f15448246072587b9ae1b5b1d93b660548cb0e60da0e3e788bc63cde6da981ef66f490b461793d871ed05406e9b6586c9173c757606a577315abb1e643140a00bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0b4612d4d8cc517e92682205a7477", - "index": 0, - "name": "Vote_Proposal_Yay_2", - "output": [ - "0 | Type : Vote Proposal", - "1 | ID : 0", - "2 | Vote : yay", - "3 | Voter [1/3] : atest1v4ehgw36gvmyy3jyxs65vd69gsu5vdzy", - "3 | Voter [2/3] : g5urv3pngscyz3pjxscnjwz9gy6rw3z9xdz5v3", - "3 | Voter [3/3] : pjksl96e" - ], - "output_expert": [ - "0 | Code hash [1/2] : 269ed92fd7e68af006b95f1f4b9a911c0cf51a", - "0 | Code hash [2/2] : 2d6056b3c0619e10e8fd0ee272", - "1 | ID : 0", - "2 | Vote : yay", - "3 | Voter [1/3] : atest1v4ehgw36gvmyy3jyxs65vd69gsu5vdzy", - "3 | Voter [2/3] : g5urv3pngscyz3pjxscnjwz9gy6rw3z9xdz5v3", - "3 | Voter [3/3] : pjksl96e", - "4 | Timestamp : 2023-06-19 12:54:44.525957298 UTC", - "5 | Pubkey [1/2] : 00bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0", - "5 | Pubkey [2/2] : b4612d4d8cc517e92682205a7477", - "6 | Epoch : 1", - "7 | Gas limit : 0", - "8 | Fees : NAM 100.0" - ], - "valid": true - }, - { - "blob": "1e0000006532652d746573742e6437323136343362616635323461356230613435350023000000323032332d30362d31395431323a35353a32382e3739383433343738322b30303a3030104e917261319f927ce49cc4753a5aa332196d010b7764ad1935cd027bf072d8d57acc7875ab3926f78836b772b1ab17b8744383de9a8c3f1852263ff1a8c7ac0100e1f5050000000000280000003442383846423931334130373636453330413030423246423841413239343941373130453234453600ef8ffbbcf933342a6ba57bc159e222c7d127df1fe1ce8fa0a8dbf1f062ee6ed1010000000000000000000000000000000005000000001e7db9d388010000a10000000200000000000000000101000000002800000043364246443435463745443946344445383644334430414432343139384541343744453345464432840300000000000000280000003432353745434543433933343733323342423333353238383742324338394630443341383844324101000000002800000031333035354538313334453137303144413733303038383746433837364343464544343638323745021e7db9d38801000000269ed92fd7e68af006b95f1f4b9a911c0cf51a2d6056b3c0619e10e8fd0ee272034e7db9d388010000d57acc7875ab3926f78836b772b1ab17b8744383de9a8c3f1852263ff1a8c7ac00de276f6a76c55204b193a023abda80ba845bc5ea1ee432a054de292ac54b81265a6e0ab5a20ba5a80dac114a15ce898b203f8043a6dff5092800faeb2bd3ed0f00ef8ffbbcf933342a6ba57bc159e222c7d127df1fe1ce8fa0a8dbf1f062ee6ed1034f7db9d388010000104e917261319f927ce49cc4753a5aa332196d010b7764ad1935cd027bf072d800c14312b7c2f403096a23c9244d0e9789477d385dca8af75476227d7487da714c618f4cf469b9d93c84a2aa8d21f4e1468caf3017f12a096dd67b5f14a0e2fe0200ef8ffbbcf933342a6ba57bc159e222c7d127df1fe1ce8fa0a8dbf1f062ee6ed103de7db9d388010000876472492d9d39ffccaa20de2d8377b16e3129f78dcf03df029af85ebd48004d0081f519f17032ebd2d3c840184716ca5b05da4e28f99a29bef159348415f93364bd58ab1f997a0485fd80a1331440ed39f8eee9034585b4f6ec0a70ac7c5c470000ef8ffbbcf933342a6ba57bc159e222c7d127df1fe1ce8fa0a8dbf1f062ee6ed1", - "index": 0, - "name": "Vote_Proposal_Yay_3", - "output": [ - "0 | Type : Vote Proposal", - "1 | ID : 2", - "2 | Vote [1/4] : yay with councils:\nCouncil: atest1v4eh", - "2 | Vote [2/4] : gw36gvmyy3jyxs65vd69gsu5vdzyg5urv3pngs", - "2 | Vote [3/4] : cyz3pjxscnjwz9gy6rw3z9xdz5v3pjksl96e, ", - "2 | Vote [4/4] : spending cap: 0.0009", - "3 | Voter [1/3] : atest1v4ehgw36xser2d69gdz5xseexv6rwvej", - "3 | Voter [2/3] : xdpyyvenx5erswphggeyxwpegccygv6p8quygv", - "3 | Voter [3/3] : jp4gcn9a", - "4 | Delegations [1/3] : atest1v4ehgw36xyenqdf4g5urzve5g5cnwvp3", - "4 | Delegations [2/3] : g3qnwvesxqursd6xgvurwdjrgdry23p5xcuryd", - "4 | Delegations [3/3] : 69jx6t2q" - ], - "output_expert": [ - "0 | Code hash [1/2] : 269ed92fd7e68af006b95f1f4b9a911c0cf51a", - "0 | Code hash [2/2] : 2d6056b3c0619e10e8fd0ee272", - "1 | ID : 2", - "2 | Vote [1/4] : yay with councils:\nCouncil: atest1v4eh", - "2 | Vote [2/4] : gw36gvmyy3jyxs65vd69gsu5vdzyg5urv3pngs", - "2 | Vote [3/4] : cyz3pjxscnjwz9gy6rw3z9xdz5v3pjksl96e, ", - "2 | Vote [4/4] : spending cap: 0.0009", - "3 | Voter [1/3] : atest1v4ehgw36xser2d69gdz5xseexv6rwvej", - "3 | Voter [2/3] : xdpyyvenx5erswphggeyxwpegccygv6p8quygv", - "3 | Voter [3/3] : jp4gcn9a", - "4 | Delegations [1/3] : atest1v4ehgw36xyenqdf4g5urzve5g5cnwvp3", - "4 | Delegations [2/3] : g3qnwvesxqursd6xgvurwdjrgdry23p5xcuryd", - "4 | Delegations [3/3] : 69jx6t2q", - "5 | Timestamp : 2023-06-19 12:55:28.798434782 UTC", - "6 | Pubkey [1/2] : 00ef8ffbbcf933342a6ba57bc159e222c7d127", - "6 | Pubkey [2/2] : df1fe1ce8fa0a8dbf1f062ee6ed1", - "7 | Epoch : 1", - "8 | Gas limit : 0", - "9 | Fees : NAM 100.0" - ], - "valid": true - }, - { - "blob": "1e0000006532652d746573742e6437323136343362616635323461356230613435350023000000323032332d30362d31395431323a35353a33332e3535383033383239342b30303a3030d2974681bb6e59916c27053695f4dacd55c267a7e38900339198e008e57c8a2faecaa5c6dc78bbe38825754f3f8ece7038b67167ca115ff999bd6016805b49c80100e1f5050000000000280000003442383846423931334130373636453330413030423246423841413239343941373130453234453600ef8ffbbcf933342a6ba57bc159e222c7d127df1fe1ce8fa0a8dbf1f062ee6ed101000000000000000000000000000000000500000000b68fb9d388010000a1000000030000000000000000010100000000280000004336424644343546374544394634444538364433443041443234313938454134374445334546443284030000000000000028000000343235374543454343393334373332334242333335323838374232433839463044334138384432410100000000280000003133303535453831333445313730314441373330303838374643383736434346454434363832374502b68fb9d38801000000269ed92fd7e68af006b95f1f4b9a911c0cf51a2d6056b3c0619e10e8fd0ee27203e78fb9d388010000aecaa5c6dc78bbe38825754f3f8ece7038b67167ca115ff999bd6016805b49c80099dc6768284db7e8bc4897e9fd2fdda464dad64d608b94635b38a1678cd8e4365ef3eb5c28f4c384c5a3453c5c58332a30a43259c700a0c4bd0c0d0d14e2cc0800ef8ffbbcf933342a6ba57bc159e222c7d127df1fe1ce8fa0a8dbf1f062ee6ed103e78fb9d388010000d2974681bb6e59916c27053695f4dacd55c267a7e38900339198e008e57c8a2f00e0ca684007479c9bf33af3108679eb03851d64c52dc6aa1a6b66fe592f516398343acdbe5edf81565cf02b260ecd5ddc7ddbb702191c4fcb40d3b10df750680a00ef8ffbbcf933342a6ba57bc159e222c7d127df1fe1ce8fa0a8dbf1f062ee6ed1037290b9d388010000dea0db4bc85a7b433068e841d504ced316b71ee972e81ddb38c82010fb8a130100d0daaa660d72b5aba267761b6bec91c64c350e371acff8cf99f63b68306228c68a957510c0e9aabcd7ff250cb2b6d46c4b9841166a309f93147b75205201150900ef8ffbbcf933342a6ba57bc159e222c7d127df1fe1ce8fa0a8dbf1f062ee6ed1", - "index": 0, - "name": "Vote_Proposal_Yay_4", - "output": [ - "0 | Type : Vote Proposal", - "1 | ID : 3", - "2 | Vote [1/4] : yay with councils:\nCouncil: atest1v4eh", - "2 | Vote [2/4] : gw36gvmyy3jyxs65vd69gsu5vdzyg5urv3pngs", - "2 | Vote [3/4] : cyz3pjxscnjwz9gy6rw3z9xdz5v3pjksl96e, ", - "2 | Vote [4/4] : spending cap: 0.0009", - "3 | Voter [1/3] : atest1v4ehgw36xser2d69gdz5xseexv6rwvej", - "3 | Voter [2/3] : xdpyyvenx5erswphggeyxwpegccygv6p8quygv", - "3 | Voter [3/3] : jp4gcn9a", - "4 | Delegations [1/3] : atest1v4ehgw36xyenqdf4g5urzve5g5cnwvp3", - "4 | Delegations [2/3] : g3qnwvesxqursd6xgvurwdjrgdry23p5xcuryd", - "4 | Delegations [3/3] : 69jx6t2q" - ], - "output_expert": [ - "0 | Code hash [1/2] : 269ed92fd7e68af006b95f1f4b9a911c0cf51a", - "0 | Code hash [2/2] : 2d6056b3c0619e10e8fd0ee272", - "1 | ID : 3", - "2 | Vote [1/4] : yay with councils:\nCouncil: atest1v4eh", - "2 | Vote [2/4] : gw36gvmyy3jyxs65vd69gsu5vdzyg5urv3pngs", - "2 | Vote [3/4] : cyz3pjxscnjwz9gy6rw3z9xdz5v3pjksl96e, ", - "2 | Vote [4/4] : spending cap: 0.0009", - "3 | Voter [1/3] : atest1v4ehgw36xser2d69gdz5xseexv6rwvej", - "3 | Voter [2/3] : xdpyyvenx5erswphggeyxwpegccygv6p8quygv", - "3 | Voter [3/3] : jp4gcn9a", - "4 | Delegations [1/3] : atest1v4ehgw36xyenqdf4g5urzve5g5cnwvp3", - "4 | Delegations [2/3] : g3qnwvesxqursd6xgvurwdjrgdry23p5xcuryd", - "4 | Delegations [3/3] : 69jx6t2q", - "5 | Timestamp : 2023-06-19 12:55:33.558038294 UTC", - "6 | Pubkey [1/2] : 00ef8ffbbcf933342a6ba57bc159e222c7d127", - "6 | Pubkey [2/2] : df1fe1ce8fa0a8dbf1f062ee6ed1", - "7 | Epoch : 1", - "8 | Gas limit : 0", - "9 | Fees : NAM 100.0" - ], - "valid": true - }, - { - "blob": "1e0000006532652d746573742e6563353631326230393430336233333238396463380023000000323032332d30362d31335431383a30353a30342e3339323632353237302b30303a303080678da04b1d02346210e58cea89cfdfbade29a4c4d6ff86a7692e9596685fa7f1a782f0dd5b31874ec38dc661974e407884a761cce1420c9a278901ac9a12c40100e1f50500000000002800000034423838464239313341303736364533304130304232464238414132393439413731304532344536008cd8ee423546ee43cf7dd4ee51638557682e045ec0303b8b8ce9e6714297e00801000000000000000000000000000000010102000000000000007401000000000000050000000008c6eeb588010000960c000023204e616d6164610a0a5b215b4c6963656e73653a2047504c2076335d2868747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d47504c76332d626c75652e737667295d282e2f4c4943454e5345290a0a2323204f766572766965770a0a5b4e616d6164615d28687474703a2f2f6e616d6164612e6e65742920697320612050726f6f662d6f662d5374616b65204c3120666f7220696e746572636861696e2061737365742d61676e6f7374696320707269766163792e204e616d61646120757365732054656e6465726d696e74204246540a636f6e73656e73757320616e6420656e61626c6573206d756c74692d617373657420736869656c646564207472616e736665727320666f7220616e79206e61746976650a6f72206e6f6e2d6e61746976652061737365742e204e616d6164612066656174757265732066756c6c204942432070726f746f636f6c20737570706f72742c0a61206e61746976656c7920696e746567726174656420457468657265756d206272696467652c2061206d6f6465726e2070726f6f662d6f662d7374616b650a73797374656d2077697468206175746f6d617469632072657761726420636f6d706f756e64696e6720616e6420637562696320736c617368696e672c20616e6420610a7374616b652d776569676874656420676f7665726e616e6365207369676e616c6c696e67206d656368616e69736d2e205573657273206f6620736869656c6465640a7472616e73666572732061726520726577617264656420666f7220746865697220636f6e747269627574696f6e7320746f2074686520707269766163792073657420696e0a74686520666f726d206f66206e61746976652070726f746f636f6c20746f6b656e732e2041206d756c74692d617373657420736869656c646564207472616e736665720a77616c6c65742069732070726f766964656420696e206f7264657220746f20666163696c6974617465207361666520616e64207072697661746520757365720a696e746572616374696f6e2077697468207468652070726f746f636f6c2e0a0a2a20426c6f67706f73743a205b496e74726f647563696e67204e616d6164613a20496e746572636861696e2041737365742d61676e6f7374696320507269766163795d2868747470733a2f2f626c6f672e6e616d6164612e6e65742f696e74726f647563696e672d6e616d6164612d696e746572636861696e2d61737365742d61676e6f737469632d707269766163792f290a0a232320f09f939320446f63730a0a2a2064657620646f63733a206275696c742066726f6d205b646576206d64426f6f6b5d282e2f646f63756d656e746174696f6e2f6465762f290a0a2323205761726e696e670a0a3e2048657265206c617920647261676f6e733a207468697320636f646562617365206973207374696c6c206578706572696d656e74616c2c2074727920617420796f7572206f776e207269736b210a0a232320f09f92be20496e7374616c6c696e670a0a546865726520697320612073696e676c6520636f6d6d616e6420746f206275696c6420616e6420696e7374616c6c204e616d6164612065786563757461626c65732066726f6d20736f757263652028746865206e6f64652c2074686520636c69656e7420616e64207468652077616c6c6574292e205468697320636f6d6d616e642077696c6c20616c736f207665726966792074686174206120636f6d70617469626c652076657273696f6e206f66205b54656e6465726d696e745d2823646570656e64656e636965732920697320617661696c61626c6520616e64206966206e6f742c20617474656d707420746f20696e7374616c6c2069742e204e6f746520746861742063757272656e746c79206174206c6561737420313647422052414d206973206e656564656420746f206275696c642066726f6d20736f757263652e0a0a6060607368656c6c0a6d616b6520696e7374616c6c0a6060600a0a416674657220696e7374616c6c6174696f6e2c20746865206d61696e20606e616d616461602065786563757461626c652077696c6c20626520617661696c61626c65206f6e20706174682e0a0a546f2066696e6420686f7720746f207573652069742c20636865636b206f757420746865205b557365722047756964652073656374696f6e206f662074686520646f63735d2868747470733a2f2f646f63732e6e616d6164612e6e65742f757365722d67756964652f696e6465782e68746d6c292e0a0a466f72206d6f72652064657461696c656420696e737472756374696f6e7320616e64206d6f726520696e7374616c6c206f7074696f6e732c2073656520746865205b496e7374616c6c0a73656374696f6e5d2868747470733a2f2f646f63732e6e616d6164612e6e65742f757365722d67756964652f696e7374616c6c2f696e6465782e68746d6c29206f662074686520557365720a47756964652e0a0a232320e29a99efb88f20446576656c6f706d656e740a0a6060607368656c6c0a23204275696c64207468652070726f76696465642076616c69646974792070726564696361746520616e64207472616e73616374696f6e207761736d206d6f64756c65730a6d616b65206275696c642d7761736d2d736372697074732d646f636b65720a0a2320446576656c6f706d656e742028646562756729206275696c64204e616d6164612c20776869636820696e636c7564657320612076616c696461746f7220616e6420736f6d652064656661756c74200a23206163636f756e74732c2077686f7365206b65797320616e64206164647265737365732061726520617661696c61626c6520696e207468652077616c6c65740a4e414d4144415f4445563d74727565206d616b650a6060600a0a232323204265666f7265207375626d697474696e6720612050522c20706c73206d616b65207375726520746f2072756e2074686520666f6c6c6f77696e670a0a6060607368656c6c0a2320466f726d61742074686520636f64650a6d616b6520666d740a0a23204c696e742074686520636f64650a6d616b6520636c697070790a6060600a0a232320f09fa7be204c6f6767696e670a0a546f206368616e676520746865206c6f67206c6576656c2c2073657420604e414d4144415f4c4f476020656e7669726f6e6d656e74207661726961626c6520746f206f6e65206f663a0a0a2a20606572726f72600a2a20607761726e600a2a2060696e666f600a2a20606465627567600a2a20607472616365600a0a5468652064656661756c742069732073657420746f2060696e666f6020666f7220616c6c20746865206d6f64756c65732c2065787065637420666f722054656e6465726d696e7420414243492c207768696368206861732061206c6f74206f662060646562756760206c6f6767696e672e0a0a466f72206d6f72652066696e652d677261696e6564206c6f6767696e67206c6576656c732073657474696e67732c20706c6561736520726566657220746f20746865205b74726163696e67207375627363726962657220646f63735d2868747470733a2f2f646f63732e72732f74726163696e672d737562736372696265722f302e322e31382f74726163696e675f737562736372696265722f7374727563742e456e7646696c7465722e68746d6c23646972656374697665732920666f72206d6f726520696e666f726d6174696f6e2e0a0a546f20737769746368206f6e206c6f6767696e6720696e2074657374732074686174207573652060235b746573745d60206d6163726f2066726f6d2060746573745f6c6f673a3a74657374602c207573652060525553545f4c4f4760207769746820652e672e2060525553545f4c4f473d696e666f20636172676f2074657374202d2d202d2d6e6f63617074757265602e0a0a232320486f7720746f20636f6e747269627574650a0a506c656173652073656520746865205b636f6e747269627574696e6720706167655d282e2f434f4e545249425554494e472e6d64292e0a0a23232320446570656e64656e636965730a0a546865206c65646765722063757272656e746c792072657175697265732074686174207468652048656c69617820666f726b206f662074656e6465726d696e745b76302e312e342d61626369706c75735d20697320696e7374616c6c656420616e6420617661696c61626c65206f6e20706174682e20546869732063616e206265206163686965766564207468726f75676820666f6c6c6f77696e67205b746865736520696e737472756374696f6e735d2868747470733a2f2f646f63732e6e616d6164612e6e65742f757365722d67756964652f696e7374616c6c2f696e7374616c6c696e672d74656e6465726d696e742e68746d6c290a0208c6eeb588010000001c3e0c791aa8a43300e08a5e5408df66e67eed26721f3f4897b017eddfc8cc780314c6eeb588010000f1a782f0dd5b31874ec38dc661974e407884a761cce1420c9a278901ac9a12c40064d77892eb50df783795dc025304659b925144d5185300de15bb584479ade0dbc102ade1f1d03dc7f827a57f562dc661804dac87cd83f77f3602f0bb08cde500008cd8ee423546ee43cf7dd4ee51638557682e045ec0303b8b8ce9e6714297e0080314c6eeb58801000080678da04b1d02346210e58cea89cfdfbade29a4c4d6ff86a7692e9596685fa700854e3b5b4ee1f040edfa941ce69ddc42bbe5bfdd70c7de3d173e8a4e84ba593b0ec7671c55b41e9b34090acbd84e847c079189e6acbd087c32f5776ce9249c03008cd8ee423546ee43cf7dd4ee51638557682e045ec0303b8b8ce9e6714297e008037bc7eeb588010000df65f1be10efcbf34f30fa3611bcab4b59738831d69dcb85eb93c42480fac10000f12d2270ac2628b75889a2bff45230728fdbb92216723148595b7843b97dcec925f492d22e1ebbad3c6f825e4cb9845e823e069e869165835e609f9d9a189303008cd8ee423546ee43cf7dd4ee51638557682e045ec0303b8b8ce9e6714297e008", - "index": 0, - "name": "Custom_0", - "output": [], - "output_expert": [ - "0 | Code hash [1/2] : 1c3e0c791aa8a43300e08a5e5408df66e67eed", - "0 | Code hash [2/2] : 26721f3f4897b017eddfc8cc78", - "1 | Timestamp : 2023-06-13 18:05:04.392625270 UTC", - "2 | Pubkey [1/2] : 008cd8ee423546ee43cf7dd4ee51638557682e", - "2 | Pubkey [2/2] : 045ec0303b8b8ce9e6714297e008", + "0 | Code hash [1/2] : 05bfa4e2b23c8c59667e421944bef88c36dff5", + "0 | Code hash [2/2] : c015ed3a2952e4daf0fe5cb018", + "1 | Timestamp : 2023-07-25 12:00:51.754396473 UTC", + "2 | Pubkey [1/2] : 00ed82fbf457e5a51745bacff287bf32d53748", + "2 | Pubkey [2/2] : fdccace30d7557627d04c158e769", "3 | Epoch : 1", "4 | Gas limit : 0", "5 | Fees : NAM 100.0" ], "valid": true - }, - { - "blob": "1e0000006532652d746573742e3364333666316461353466336435643166323335330023000000323032332d30362d31395431313a31303a30302e3234363734333132362b30303a30305b52f7666fc504e1e85b45d93e945eeed77886c97504beb70e14bfce81a73d4c5532085208abf588024fdce5c53edfdaea78123d63851ca74e6b5d3a0c94f27a0100e1f5050000000000280000003442383846423931334130373636453330413030423246423841413239343941373130453234453600d9458d9ae70b725813fd13be8c26febd094bb5a3f81654ddcd8416e45fc2b3730100000000000000000000000000000001010800000000000000b000000000000000050000000036ec58d388010000960c000023204e616d6164610a0a5b215b4c6963656e73653a2047504c2076335d2868747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d47504c76332d626c75652e737667295d282e2f4c4943454e5345290a0a2323204f766572766965770a0a5b4e616d6164615d28687474703a2f2f6e616d6164612e6e65742920697320612050726f6f662d6f662d5374616b65204c3120666f7220696e746572636861696e2061737365742d61676e6f7374696320707269766163792e204e616d61646120757365732054656e6465726d696e74204246540a636f6e73656e73757320616e6420656e61626c6573206d756c74692d617373657420736869656c646564207472616e736665727320666f7220616e79206e61746976650a6f72206e6f6e2d6e61746976652061737365742e204e616d6164612066656174757265732066756c6c204942432070726f746f636f6c20737570706f72742c0a61206e61746976656c7920696e746567726174656420457468657265756d206272696467652c2061206d6f6465726e2070726f6f662d6f662d7374616b650a73797374656d2077697468206175746f6d617469632072657761726420636f6d706f756e64696e6720616e6420637562696320736c617368696e672c20616e6420610a7374616b652d776569676874656420676f7665726e616e6365207369676e616c6c696e67206d656368616e69736d2e205573657273206f6620736869656c6465640a7472616e73666572732061726520726577617264656420666f7220746865697220636f6e747269627574696f6e7320746f2074686520707269766163792073657420696e0a74686520666f726d206f66206e61746976652070726f746f636f6c20746f6b656e732e2041206d756c74692d617373657420736869656c646564207472616e736665720a77616c6c65742069732070726f766964656420696e206f7264657220746f20666163696c6974617465207361666520616e64207072697661746520757365720a696e746572616374696f6e2077697468207468652070726f746f636f6c2e0a0a2a20426c6f67706f73743a205b496e74726f647563696e67204e616d6164613a20496e746572636861696e2041737365742d61676e6f7374696320507269766163795d2868747470733a2f2f626c6f672e6e616d6164612e6e65742f696e74726f647563696e672d6e616d6164612d696e746572636861696e2d61737365742d61676e6f737469632d707269766163792f290a0a232320f09f939320446f63730a0a2a2064657620646f63733a206275696c742066726f6d205b646576206d64426f6f6b5d282e2f646f63756d656e746174696f6e2f6465762f290a0a2323205761726e696e670a0a3e2048657265206c617920647261676f6e733a207468697320636f646562617365206973207374696c6c206578706572696d656e74616c2c2074727920617420796f7572206f776e207269736b210a0a232320f09f92be20496e7374616c6c696e670a0a546865726520697320612073696e676c6520636f6d6d616e6420746f206275696c6420616e6420696e7374616c6c204e616d6164612065786563757461626c65732066726f6d20736f757263652028746865206e6f64652c2074686520636c69656e7420616e64207468652077616c6c6574292e205468697320636f6d6d616e642077696c6c20616c736f207665726966792074686174206120636f6d70617469626c652076657273696f6e206f66205b54656e6465726d696e745d2823646570656e64656e636965732920697320617661696c61626c6520616e64206966206e6f742c20617474656d707420746f20696e7374616c6c2069742e204e6f746520746861742063757272656e746c79206174206c6561737420313647422052414d206973206e656564656420746f206275696c642066726f6d20736f757263652e0a0a6060607368656c6c0a6d616b6520696e7374616c6c0a6060600a0a416674657220696e7374616c6c6174696f6e2c20746865206d61696e20606e616d616461602065786563757461626c652077696c6c20626520617661696c61626c65206f6e20706174682e0a0a546f2066696e6420686f7720746f207573652069742c20636865636b206f757420746865205b557365722047756964652073656374696f6e206f662074686520646f63735d2868747470733a2f2f646f63732e6e616d6164612e6e65742f757365722d67756964652f696e6465782e68746d6c292e0a0a466f72206d6f72652064657461696c656420696e737472756374696f6e7320616e64206d6f726520696e7374616c6c206f7074696f6e732c2073656520746865205b496e7374616c6c0a73656374696f6e5d2868747470733a2f2f646f63732e6e616d6164612e6e65742f757365722d67756964652f696e7374616c6c2f696e6465782e68746d6c29206f662074686520557365720a47756964652e0a0a232320e29a99efb88f20446576656c6f706d656e740a0a6060607368656c6c0a23204275696c64207468652070726f76696465642076616c69646974792070726564696361746520616e64207472616e73616374696f6e207761736d206d6f64756c65730a6d616b65206275696c642d7761736d2d736372697074732d646f636b65720a0a2320446576656c6f706d656e742028646562756729206275696c64204e616d6164612c20776869636820696e636c7564657320612076616c696461746f7220616e6420736f6d652064656661756c74200a23206163636f756e74732c2077686f7365206b65797320616e64206164647265737365732061726520617661696c61626c6520696e207468652077616c6c65740a4e414d4144415f4445563d74727565206d616b650a6060600a0a232323204265666f7265207375626d697474696e6720612050522c20706c73206d616b65207375726520746f2072756e2074686520666f6c6c6f77696e670a0a6060607368656c6c0a2320466f726d61742074686520636f64650a6d616b6520666d740a0a23204c696e742074686520636f64650a6d616b6520636c697070790a6060600a0a232320f09fa7be204c6f6767696e670a0a546f206368616e676520746865206c6f67206c6576656c2c2073657420604e414d4144415f4c4f476020656e7669726f6e6d656e74207661726961626c6520746f206f6e65206f663a0a0a2a20606572726f72600a2a20607761726e600a2a2060696e666f600a2a20606465627567600a2a20607472616365600a0a5468652064656661756c742069732073657420746f2060696e666f6020666f7220616c6c20746865206d6f64756c65732c2065787065637420666f722054656e6465726d696e7420414243492c207768696368206861732061206c6f74206f662060646562756760206c6f6767696e672e0a0a466f72206d6f72652066696e652d677261696e6564206c6f6767696e67206c6576656c732073657474696e67732c20706c6561736520726566657220746f20746865205b74726163696e67207375627363726962657220646f63735d2868747470733a2f2f646f63732e72732f74726163696e672d737562736372696265722f302e322e31382f74726163696e675f737562736372696265722f7374727563742e456e7646696c7465722e68746d6c23646972656374697665732920666f72206d6f726520696e666f726d6174696f6e2e0a0a546f20737769746368206f6e206c6f6767696e6720696e2074657374732074686174207573652060235b746573745d60206d6163726f2066726f6d2060746573745f6c6f673a3a74657374602c207573652060525553545f4c4f4760207769746820652e672e2060525553545f4c4f473d696e666f20636172676f2074657374202d2d202d2d6e6f63617074757265602e0a0a232320486f7720746f20636f6e747269627574650a0a506c656173652073656520746865205b636f6e747269627574696e6720706167655d282e2f434f4e545249425554494e472e6d64292e0a0a23232320446570656e64656e636965730a0a546865206c65646765722063757272656e746c792072657175697265732074686174207468652048656c69617820666f726b206f662074656e6465726d696e745b76302e312e342d61626369706c75735d20697320696e7374616c6c656420616e6420617661696c61626c65206f6e20706174682e20546869732063616e206265206163686965766564207468726f75676820666f6c6c6f77696e67205b746865736520696e737472756374696f6e735d2868747470733a2f2f646f63732e6e616d6164612e6e65742f757365722d67756964652f696e7374616c6c2f696e7374616c6c696e672d74656e6465726d696e742e68746d6c290a0236ec58d388010000001c3e0c791aa8a43300e08a5e5408df66e67eed26721f3f4897b017eddfc8cc780340ec58d3880100005532085208abf588024fdce5c53edfdaea78123d63851ca74e6b5d3a0c94f27a00056ee7d763b53873f6455cb057f9cdc9588289897eb13a427d005133006fb94448e7299cf03399d79a26ccc2766073cbecc4120f12bd217d23eb377ca5df490800d9458d9ae70b725813fd13be8c26febd094bb5a3f81654ddcd8416e45fc2b3730340ec58d3880100005b52f7666fc504e1e85b45d93e945eeed77886c97504beb70e14bfce81a73d4c00c5763c005f7a81a5f998ca06f44dc4cb3f0c52e548424cb8c64c94b5b451d4be793dedede41a38a678d002d9c1ebddc9e57103ac4c067d691bbb94ec4df7320700d9458d9ae70b725813fd13be8c26febd094bb5a3f81654ddcd8416e45fc2b3730386ed58d3880100008c50fa3aa812e74a0c1a2d6e3190043802912bfe75734ff7aba3712577f293f700454c6f2d61cff19d64f09b627a91b281389f15746b3be50b1e8923313a44cefc8a503cd58d6bfe5706ec178b3251ccedf7a203b79277094dd77f4c4e41bcd90700d9458d9ae70b725813fd13be8c26febd094bb5a3f81654ddcd8416e45fc2b373", - "index": 0, - "name": "Custom_1", - "output": [], - "output_expert": [ - "0 | Code hash [1/2] : 1c3e0c791aa8a43300e08a5e5408df66e67eed", - "0 | Code hash [2/2] : 26721f3f4897b017eddfc8cc78", - "1 | Timestamp : 2023-06-19 11:10:00.246743126 UTC", - "2 | Pubkey [1/2] : 00d9458d9ae70b725813fd13be8c26febd094b", - "2 | Pubkey [2/2] : b5a3f81654ddcd8416e45fc2b373", - "3 | Epoch : 1", - "4 | Gas limit : 0", - "5 | Fees : NAM 100.0" - ], - "valid": true - }, - { - "blob": "1e0000006532652d746573742e6437323136343362616635323461356230613435350023000000323032332d30362d31395431323a35363a31332e3134363234363536392b30303a30307968fd3fedef276702c84f3c6bc1ad6ed93da88856adc868efe7b5cbf89d3db9166cf1dd91e882d10146e915fab173e93b72716d528ae691d6eaaae77aebb2d60100e1f5050000000000280000003442383846423931334130373636453330413030423246423841413239343941373130453234453600bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0b4612d4d8cc517e92682205a74770200000000000000000000000000000001010900000000000000780200000000000005000000005a2abad388010000960c000023204e616d6164610a0a5b215b4c6963656e73653a2047504c2076335d2868747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d47504c76332d626c75652e737667295d282e2f4c4943454e5345290a0a2323204f766572766965770a0a5b4e616d6164615d28687474703a2f2f6e616d6164612e6e65742920697320612050726f6f662d6f662d5374616b65204c3120666f7220696e746572636861696e2061737365742d61676e6f7374696320707269766163792e204e616d61646120757365732054656e6465726d696e74204246540a636f6e73656e73757320616e6420656e61626c6573206d756c74692d617373657420736869656c646564207472616e736665727320666f7220616e79206e61746976650a6f72206e6f6e2d6e61746976652061737365742e204e616d6164612066656174757265732066756c6c204942432070726f746f636f6c20737570706f72742c0a61206e61746976656c7920696e746567726174656420457468657265756d206272696467652c2061206d6f6465726e2070726f6f662d6f662d7374616b650a73797374656d2077697468206175746f6d617469632072657761726420636f6d706f756e64696e6720616e6420637562696320736c617368696e672c20616e6420610a7374616b652d776569676874656420676f7665726e616e6365207369676e616c6c696e67206d656368616e69736d2e205573657273206f6620736869656c6465640a7472616e73666572732061726520726577617264656420666f7220746865697220636f6e747269627574696f6e7320746f2074686520707269766163792073657420696e0a74686520666f726d206f66206e61746976652070726f746f636f6c20746f6b656e732e2041206d756c74692d617373657420736869656c646564207472616e736665720a77616c6c65742069732070726f766964656420696e206f7264657220746f20666163696c6974617465207361666520616e64207072697661746520757365720a696e746572616374696f6e2077697468207468652070726f746f636f6c2e0a0a2a20426c6f67706f73743a205b496e74726f647563696e67204e616d6164613a20496e746572636861696e2041737365742d61676e6f7374696320507269766163795d2868747470733a2f2f626c6f672e6e616d6164612e6e65742f696e74726f647563696e672d6e616d6164612d696e746572636861696e2d61737365742d61676e6f737469632d707269766163792f290a0a232320f09f939320446f63730a0a2a2064657620646f63733a206275696c742066726f6d205b646576206d64426f6f6b5d282e2f646f63756d656e746174696f6e2f6465762f290a0a2323205761726e696e670a0a3e2048657265206c617920647261676f6e733a207468697320636f646562617365206973207374696c6c206578706572696d656e74616c2c2074727920617420796f7572206f776e207269736b210a0a232320f09f92be20496e7374616c6c696e670a0a546865726520697320612073696e676c6520636f6d6d616e6420746f206275696c6420616e6420696e7374616c6c204e616d6164612065786563757461626c65732066726f6d20736f757263652028746865206e6f64652c2074686520636c69656e7420616e64207468652077616c6c6574292e205468697320636f6d6d616e642077696c6c20616c736f207665726966792074686174206120636f6d70617469626c652076657273696f6e206f66205b54656e6465726d696e745d2823646570656e64656e636965732920697320617661696c61626c6520616e64206966206e6f742c20617474656d707420746f20696e7374616c6c2069742e204e6f746520746861742063757272656e746c79206174206c6561737420313647422052414d206973206e656564656420746f206275696c642066726f6d20736f757263652e0a0a6060607368656c6c0a6d616b6520696e7374616c6c0a6060600a0a416674657220696e7374616c6c6174696f6e2c20746865206d61696e20606e616d616461602065786563757461626c652077696c6c20626520617661696c61626c65206f6e20706174682e0a0a546f2066696e6420686f7720746f207573652069742c20636865636b206f757420746865205b557365722047756964652073656374696f6e206f662074686520646f63735d2868747470733a2f2f646f63732e6e616d6164612e6e65742f757365722d67756964652f696e6465782e68746d6c292e0a0a466f72206d6f72652064657461696c656420696e737472756374696f6e7320616e64206d6f726520696e7374616c6c206f7074696f6e732c2073656520746865205b496e7374616c6c0a73656374696f6e5d2868747470733a2f2f646f63732e6e616d6164612e6e65742f757365722d67756964652f696e7374616c6c2f696e6465782e68746d6c29206f662074686520557365720a47756964652e0a0a232320e29a99efb88f20446576656c6f706d656e740a0a6060607368656c6c0a23204275696c64207468652070726f76696465642076616c69646974792070726564696361746520616e64207472616e73616374696f6e207761736d206d6f64756c65730a6d616b65206275696c642d7761736d2d736372697074732d646f636b65720a0a2320446576656c6f706d656e742028646562756729206275696c64204e616d6164612c20776869636820696e636c7564657320612076616c696461746f7220616e6420736f6d652064656661756c74200a23206163636f756e74732c2077686f7365206b65797320616e64206164647265737365732061726520617661696c61626c6520696e207468652077616c6c65740a4e414d4144415f4445563d74727565206d616b650a6060600a0a232323204265666f7265207375626d697474696e6720612050522c20706c73206d616b65207375726520746f2072756e2074686520666f6c6c6f77696e670a0a6060607368656c6c0a2320466f726d61742074686520636f64650a6d616b6520666d740a0a23204c696e742074686520636f64650a6d616b6520636c697070790a6060600a0a232320f09fa7be204c6f6767696e670a0a546f206368616e676520746865206c6f67206c6576656c2c2073657420604e414d4144415f4c4f476020656e7669726f6e6d656e74207661726961626c6520746f206f6e65206f663a0a0a2a20606572726f72600a2a20607761726e600a2a2060696e666f600a2a20606465627567600a2a20607472616365600a0a5468652064656661756c742069732073657420746f2060696e666f6020666f7220616c6c20746865206d6f64756c65732c2065787065637420666f722054656e6465726d696e7420414243492c207768696368206861732061206c6f74206f662060646562756760206c6f6767696e672e0a0a466f72206d6f72652066696e652d677261696e6564206c6f6767696e67206c6576656c732073657474696e67732c20706c6561736520726566657220746f20746865205b74726163696e67207375627363726962657220646f63735d2868747470733a2f2f646f63732e72732f74726163696e672d737562736372696265722f302e322e31382f74726163696e675f737562736372696265722f7374727563742e456e7646696c7465722e68746d6c23646972656374697665732920666f72206d6f726520696e666f726d6174696f6e2e0a0a546f20737769746368206f6e206c6f6767696e6720696e2074657374732074686174207573652060235b746573745d60206d6163726f2066726f6d2060746573745f6c6f673a3a74657374602c207573652060525553545f4c4f4760207769746820652e672e2060525553545f4c4f473d696e666f20636172676f2074657374202d2d202d2d6e6f63617074757265602e0a0a232320486f7720746f20636f6e747269627574650a0a506c656173652073656520746865205b636f6e747269627574696e6720706167655d282e2f434f4e545249425554494e472e6d64292e0a0a23232320446570656e64656e636965730a0a546865206c65646765722063757272656e746c792072657175697265732074686174207468652048656c69617820666f726b206f662074656e6465726d696e745b76302e312e342d61626369706c75735d20697320696e7374616c6c656420616e6420617661696c61626c65206f6e20706174682e20546869732063616e206265206163686965766564207468726f75676820666f6c6c6f77696e67205b746865736520696e737472756374696f6e735d2868747470733a2f2f646f63732e6e616d6164612e6e65742f757365722d67756964652f696e7374616c6c2f696e7374616c6c696e672d74656e6465726d696e742e68746d6c290a025a2abad388010000001c3e0c791aa8a43300e08a5e5408df66e67eed26721f3f4897b017eddfc8cc7803632abad388010000166cf1dd91e882d10146e915fab173e93b72716d528ae691d6eaaae77aebb2d60093e0ad3ed308a310ef84cf4b338641afbbe7154fa04c52a5e13d85e99651f60ff291c192cf427ca4f922e7de85cd1e30ee5607dcedd3cd27070e8b7fc718ce0e00bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0b4612d4d8cc517e92682205a747703642abad3880100007968fd3fedef276702c84f3c6bc1ad6ed93da88856adc868efe7b5cbf89d3db9003c70842df1ed168f4d9544cab4c443aca4468746cd6188de9de6bc1077919c87a100f9d62a355f5d8c81b1b1fd26e6d36b64b9c94389e53bf14aa09a8907c70500bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0b4612d4d8cc517e92682205a747703b92bbad3880100009c9ad1b96cbe915cd7b99fe0cd808ac19d0cfd451e56b7fb3761ffee1f3144c800e0c24483705cddebef9b082faed62c11fe75671521e1caf6a4ab76ac9852f7bd06e823602ce63763b90fbf84d9645b57ffeb67ae5f67738a05dc0848454eee0f00bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0b4612d4d8cc517e92682205a7477", - "index": 0, - "name": "Custom_2", - "output": [], - "output_expert": [ - "0 | Code hash [1/2] : 1c3e0c791aa8a43300e08a5e5408df66e67eed", - "0 | Code hash [2/2] : 26721f3f4897b017eddfc8cc78", - "1 | Timestamp : 2023-06-19 12:56:13.146246569 UTC", - "2 | Pubkey [1/2] : 00bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0", - "2 | Pubkey [2/2] : b4612d4d8cc517e92682205a7477", - "3 | Epoch : 2", - "4 | Gas limit : 0", - "5 | Fees : NAM 100.0" - ], - "valid": true - }, - { - "blob": "1e0000006532652d746573742e6437323136343362616635323461356230613435350023000000323032332d30362d31395431323a35343a33312e3539383339383132382b30303a3030ed7fdfb380175c53932134c4262ad17f8d2783dc2312317631d2efe43e49a2223db865951704c6204d350b90cbe278cc9ecf4f43426638c39fb91032f917fe580100e1f5050000000000280000003442383846423931334130373636453330413030423246423841413239343941373130453234453600ef8ffbbcf933342a6ba57bc159e222c7d127df1fe1ce8fa0a8dbf1f062ee6ed101000000000000000000000000000000000500000000ae9db8d3880100003d0000000028000000343235374543454343393334373332334242333335323838374232433839463044334138384432410000020000000000020000000000000002ae9db8d3880100000063318782478028c3a4695104ff4aab6208f0fc0752828d4ab486276c69cfd46c03de9db8d3880100003db865951704c6204d350b90cbe278cc9ecf4f43426638c39fb91032f917fe580012d1171cd2b98a7c9fba732c576c578ea9c6a2cc25d71b1ba3c0c655b9fba05fda4a78d89d80243e52940a12c8124fdcadb402d125f70101af631c8b31f1d30600ef8ffbbcf933342a6ba57bc159e222c7d127df1fe1ce8fa0a8dbf1f062ee6ed103df9db8d388010000ed7fdfb380175c53932134c4262ad17f8d2783dc2312317631d2efe43e49a222007deb7ea00484f8b23a0f1818c08100cecbe30a07e4c870fba514a19350ff92353e65a5bd54d60290b046483bcaf00c1a092be13ce1861cd3b6d0436b5860fa0700ef8ffbbcf933342a6ba57bc159e222c7d127df1fe1ce8fa0a8dbf1f062ee6ed103729eb8d388010000fd5f43990d055313eb48db4e5f629d387f8ee5efd20f93abe9e3160b4411f50d00361020932128a749f066df66d2aa9f61065fbc35c0e251fe483f1fab1582b9509a927ebb83cb8d5d2f5e2cf0ec0a18b497861039b84c5dc422b926283003640b00ef8ffbbcf933342a6ba57bc159e222c7d127df1fe1ce8fa0a8dbf1f062ee6ed1", - "index": 0, - "name": "Change_Commission_0", - "output": [ - "0 | Type : Change commission", - "1 | New rate : 0.02", - "2 | Validator [1/3] : atest1v4ehgw36xser2d69gdz5xseexv6rwvej", - "2 | Validator [2/3] : xdpyyvenx5erswphggeyxwpegccygv6p8quygv", - "2 | Validator [3/3] : jp4gcn9a" - ], - "output_expert": [ - "0 | Code hash [1/2] : 63318782478028c3a4695104ff4aab6208f0fc", - "0 | Code hash [2/2] : 0752828d4ab486276c69cfd46c", - "1 | New rate : 0.02", - "2 | Validator [1/3] : atest1v4ehgw36xser2d69gdz5xseexv6rwvej", - "2 | Validator [2/3] : xdpyyvenx5erswphggeyxwpegccygv6p8quygv", - "2 | Validator [3/3] : jp4gcn9a", - "3 | Timestamp : 2023-06-19 12:54:31.598398128 UTC", - "4 | Pubkey [1/2] : 00ef8ffbbcf933342a6ba57bc159e222c7d127", - "4 | Pubkey [2/2] : df1fe1ce8fa0a8dbf1f062ee6ed1", - "5 | Epoch : 1", - "6 | Gas limit : 0", - "7 | Fees : NAM 100.0" - ], - "valid": true - }, - { - "blob": "1e0000006532652d746573742e6437323136343362616635323461356230613435350023000000323032332d30362d31395431323a35343a35332e3135383032373331392b30303a3030418c95a79544858dbef56a39c4cd39cd5d5c0ff87428d667b25663960f55ee4b556c5b9dbd82a7bdc2a50c6328cb3ad872c2c7e5ef4cadb269a91b6243a052370100e1f5050000000000280000003442383846423931334130373636453330413030423246423841413239343941373130453234453600bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0b4612d4d8cc517e92682205a7477010000000000000000000000000000000101020000000000000072000000000000000500000000e6f1b8d3880100003d0000000028000000433642464434354637454439463444453836443344304144323431393845413437444533454644320000020000000000050000000000000002e6f1b8d3880100000063318782478028c3a4695104ff4aab6208f0fc0752828d4ab486276c69cfd46c0316f2b8d388010000556c5b9dbd82a7bdc2a50c6328cb3ad872c2c7e5ef4cadb269a91b6243a05237006e210c8e98393f2e8723b228ff77f3d8ad2fbc3197ee32dbcdda6fb188124dbf8eae013f20819ca89e48a7d10c4ea4fc2c529438b3e1cd4d1de3d01acba91c0300bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0b4612d4d8cc517e92682205a74770317f2b8d388010000418c95a79544858dbef56a39c4cd39cd5d5c0ff87428d667b25663960f55ee4b003b8e884c7485a78398c6f8e977967f0a9cc476a79aacfc3e8da561e75dba8f7664ab3be9582710db2ed42e401b5fb846b7efb8694cf9feabcd6a0015e557300e00bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0b4612d4d8cc517e92682205a74770391f3b8d38801000056fada78ee91eb64db2f02bb14d85162e3e9b5a6b9e287e77e1052048e9390e7000673995969ad364fef39190899d3444c44364676722a804bf937f4ef243af76c3b43a67849969049f14f4c775ef307d891e0b253a01a37d5318e1b6d8c98aa0c00bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0b4612d4d8cc517e92682205a7477", - "index": 0, - "name": "Change_Commission_1", - "output": [ - "0 | Type : Change commission", - "1 | New rate : 0.05", - "2 | Validator [1/3] : atest1v4ehgw36gvmyy3jyxs65vd69gsu5vdzy", - "2 | Validator [2/3] : g5urv3pngscyz3pjxscnjwz9gy6rw3z9xdz5v3", - "2 | Validator [3/3] : pjksl96e" - ], - "output_expert": [ - "0 | Code hash [1/2] : 63318782478028c3a4695104ff4aab6208f0fc", - "0 | Code hash [2/2] : 0752828d4ab486276c69cfd46c", - "1 | New rate : 0.05", - "2 | Validator [1/3] : atest1v4ehgw36gvmyy3jyxs65vd69gsu5vdzy", - "2 | Validator [2/3] : g5urv3pngscyz3pjxscnjwz9gy6rw3z9xdz5v3", - "2 | Validator [3/3] : pjksl96e", - "3 | Timestamp : 2023-06-19 12:54:53.158027319 UTC", - "4 | Pubkey [1/2] : 00bd3b6fb9aa9fb068a59a7e2c5c3210cb24b0", - "4 | Pubkey [2/2] : b4612d4d8cc517e92682205a7477", - "5 | Epoch : 1", - "6 | Gas limit : 0", - "7 | Fees : NAM 100.0" - ], - "valid": true - }, - { - "blob": "1e0000006532652d746573742e6437323136343362616635323461356230613435350023000000323032332d30362d31395431323a35353a30322e3938363436393336332b30303a30309de0d22e6b493d6fad48dce58ab495df00f68db2705cb1060eed809195601ba4f821094ddef0da97e58ced89a68bf695d4451d29063d84ae419280822f92d3bf0100e1f5050000000000280000003442383846423931334130373636453330413030423246423841413239343941373130453234453600ef8ffbbcf933342a6ba57bc159e222c7d127df1fe1ce8fa0a8dbf1f062ee6ed1010000000000000000000000000000000005000000004a18b9d3880100003d00000000280000003432353745434543433933343733323342423333353238383742324338394630443341383844324100000200000000000700000000000000024a18b9d3880100000063318782478028c3a4695104ff4aab6208f0fc0752828d4ab486276c69cfd46c037618b9d388010000f821094ddef0da97e58ced89a68bf695d4451d29063d84ae419280822f92d3bf00b739b81af540412472c3130c64a1527473d8b3001746260ee91a315f5fd1f45c6916b57424cfc62b629ca11998aa85c2b738c40f2066ce739e4de2113b30a20100ef8ffbbcf933342a6ba57bc159e222c7d127df1fe1ce8fa0a8dbf1f062ee6ed1037718b9d3880100009de0d22e6b493d6fad48dce58ab495df00f68db2705cb1060eed809195601ba400a1dbcc4e96f340274db7424d826407c310808275db324773c0f5c285bc842f28061106dfda550c6f52657069577a5b4e5bc8716eb8b677cd5ad89e7b2486380c00ef8ffbbcf933342a6ba57bc159e222c7d127df1fe1ce8fa0a8dbf1f062ee6ed1030619b9d38801000024adeadbc36cc8c9ce31ede7068ebaa8d8f9f3636cc2505adcbe64afce8032ba000abbc4b20bb31d53472df27e4aad011d37af3aba5ca7c0707452ffea3302906b6af88e1fe94fa078219de02eb7df0a9a8ca8a5152f8813ac29c94059c67fc60d00ef8ffbbcf933342a6ba57bc159e222c7d127df1fe1ce8fa0a8dbf1f062ee6ed1", - "index": 0, - "name": "Change_Commission_2", - "output": [ - "0 | Type : Change commission", - "1 | New rate : 0.07", - "2 | Validator [1/3] : atest1v4ehgw36xser2d69gdz5xseexv6rwvej", - "2 | Validator [2/3] : xdpyyvenx5erswphggeyxwpegccygv6p8quygv", - "2 | Validator [3/3] : jp4gcn9a" - ], - "output_expert": [ - "0 | Code hash [1/2] : 63318782478028c3a4695104ff4aab6208f0fc", - "0 | Code hash [2/2] : 0752828d4ab486276c69cfd46c", - "1 | New rate : 0.07", - "2 | Validator [1/3] : atest1v4ehgw36xser2d69gdz5xseexv6rwvej", - "2 | Validator [2/3] : xdpyyvenx5erswphggeyxwpegccygv6p8quygv", - "2 | Validator [3/3] : jp4gcn9a", - "3 | Timestamp : 2023-06-19 12:55:02.986469363 UTC", - "4 | Pubkey [1/2] : 00ef8ffbbcf933342a6ba57bc159e222c7d127", - "4 | Pubkey [2/2] : df1fe1ce8fa0a8dbf1f062ee6ed1", - "5 | Epoch : 1", - "6 | Gas limit : 0", - "7 | Fees : NAM 100.0" - ], - "valid": true - }, - { - "blob": "1e0000006532652d746573742e6437323136343362616635323461356230613435350023000000323032332d30362d31395431323a35353a31352e3436363237303035382b30303a30301198b72074c652f2109cb7a7aa3056aa4d3e1a5cb2474964ad1341ecbfa632a20320deac606589824d7a6747dfce978baa29e540de6d5d4fdad9e575002173290100e1f5050000000000280000003442383846423931334130373636453330413030423246423841413239343941373130453234453600ef8ffbbcf933342a6ba57bc159e222c7d127df1fe1ce8fa0a8dbf1f062ee6ed1010000000000000000000000000000000005000000000a49b9d3880100003d00000000280000003432353745434543433933343733323342423333353238383742324338394630443341383844324100000200000000000900000000000000020a49b9d3880100000063318782478028c3a4695104ff4aab6208f0fc0752828d4ab486276c69cfd46c033649b9d3880100000320deac606589824d7a6747dfce978baa29e540de6d5d4fdad9e575002173290006d3802aa54f9f4d4121004add542d33c71777a4f898738f21cd5d68614c1a502418d9754f14b54236991bfc32f7e83732cf4671b3e23c1aeb3cba23a724410300ef8ffbbcf933342a6ba57bc159e222c7d127df1fe1ce8fa0a8dbf1f062ee6ed1033749b9d3880100001198b72074c652f2109cb7a7aa3056aa4d3e1a5cb2474964ad1341ecbfa632a200dd27c00aac28b958e0b3657921a09120e4b583f9a7413d4bbd91bf9e81c3a260500f3055280411773528df9fa345a3311918679a5ed699bcc6d73cdd24e0600a00ef8ffbbcf933342a6ba57bc159e222c7d127df1fe1ce8fa0a8dbf1f062ee6ed103be49b9d388010000353f3b0f8733319987b7f1ffd7d7daf8e47bea3c7135c85838065a4a2d2c4c5b001ae182acbdebd81460bb55cbc47b22e978e361487908236f456ecba5e4d79f9eaf32db7476708f62b61e4382396efe30a79f38ba8ee5dd36d6d3248de0d6320500ef8ffbbcf933342a6ba57bc159e222c7d127df1fe1ce8fa0a8dbf1f062ee6ed1", - "index": 0, - "name": "Change_Commission_3", - "output": [ - "0 | Type : Change commission", - "1 | New rate : 0.09", - "2 | Validator [1/3] : atest1v4ehgw36xser2d69gdz5xseexv6rwvej", - "2 | Validator [2/3] : xdpyyvenx5erswphggeyxwpegccygv6p8quygv", - "2 | Validator [3/3] : jp4gcn9a" - ], - "output_expert": [ - "0 | Code hash [1/2] : 63318782478028c3a4695104ff4aab6208f0fc", - "0 | Code hash [2/2] : 0752828d4ab486276c69cfd46c", - "1 | New rate : 0.09", - "2 | Validator [1/3] : atest1v4ehgw36xser2d69gdz5xseexv6rwvej", - "2 | Validator [2/3] : xdpyyvenx5erswphggeyxwpegccygv6p8quygv", - "2 | Validator [3/3] : jp4gcn9a", - "3 | Timestamp : 2023-06-19 12:55:15.466270058 UTC", - "4 | Pubkey [1/2] : 00ef8ffbbcf933342a6ba57bc159e222c7d127", - "4 | Pubkey [2/2] : df1fe1ce8fa0a8dbf1f062ee6ed1", - "5 | Epoch : 1", - "6 | Gas limit : 0", - "7 | Fees : NAM 100.0" - ], - "valid": true - }, - { - "blob": "1e0000006532652d746573742e6437323136343362616635323461356230613435350023000000323032332d30362d31395431323a35353a34352e3531303536313530352b30303a3030c92cf9edf46a5e4847703b8be8e3e5f00d30232be7392d983e55ffd671be4d2f870d63335e384034597a025fbd423fd5daa537fcd0e34be0ab7af60838c500360100e1f5050000000000280000003442383846423931334130373636453330413030423246423841413239343941373130453234453600ef8ffbbcf933342a6ba57bc159e222c7d127df1fe1ce8fa0a8dbf1f062ee6ed10100000000000000000000000000000000050000000066beb9d3880100003d00000000280000003432353745434543433933343733323342423333353238383742324338394630443341383844324100000200000000000b000000000000000266beb9d3880100000063318782478028c3a4695104ff4aab6208f0fc0752828d4ab486276c69cfd46c0396beb9d388010000870d63335e384034597a025fbd423fd5daa537fcd0e34be0ab7af60838c5003600f9db72c1fef019aee40c7f43e901be55935b2295268aa4342f95a1fc4fd716b922d9cf45982d4d2fcdec2b82d7852cc7d2b7192fbbdbde99ca1cef85eaa0ff0e00ef8ffbbcf933342a6ba57bc159e222c7d127df1fe1ce8fa0a8dbf1f062ee6ed10397beb9d388010000c92cf9edf46a5e4847703b8be8e3e5f00d30232be7392d983e55ffd671be4d2f0019324496cf7f2a3e2f5cc7b02d2481d5f50074a4fab36e4d6a48f5e1cd310c17b5e08200a294344f655f794eeba8dc886e426caa76841db3f66924cd65814c0200ef8ffbbcf933342a6ba57bc159e222c7d127df1fe1ce8fa0a8dbf1f062ee6ed10322bfb9d38801000002e495b96b4990257b07465e7134f3c6148a63d7287109eddb6bd856a2d889b600d53b3cf19e9047bc750c2e2bf0ead9201ff1d7ed7fce4b119eac0052d304ad3502aac0a0ca2f1ec284e433a71c2e3bdf5eb0642f0b1e85774d28eaa47f022e0c00ef8ffbbcf933342a6ba57bc159e222c7d127df1fe1ce8fa0a8dbf1f062ee6ed1", - "index": 0, - "name": "Change_Commission_4", - "output": [ - "0 | Type : Change commission", - "1 | New rate : 0.11", - "2 | Validator [1/3] : atest1v4ehgw36xser2d69gdz5xseexv6rwvej", - "2 | Validator [2/3] : xdpyyvenx5erswphggeyxwpegccygv6p8quygv", - "2 | Validator [3/3] : jp4gcn9a" - ], - "output_expert": [ - "0 | Code hash [1/2] : 63318782478028c3a4695104ff4aab6208f0fc", - "0 | Code hash [2/2] : 0752828d4ab486276c69cfd46c", - "1 | New rate : 0.11", - "2 | Validator [1/3] : atest1v4ehgw36xser2d69gdz5xseexv6rwvej", - "2 | Validator [2/3] : xdpyyvenx5erswphggeyxwpegccygv6p8quygv", - "2 | Validator [3/3] : jp4gcn9a", - "3 | Timestamp : 2023-06-19 12:55:45.510561505 UTC", - "4 | Pubkey [1/2] : 00ef8ffbbcf933342a6ba57bc159e222c7d127", - "4 | Pubkey [2/2] : df1fe1ce8fa0a8dbf1f062ee6ed1", - "5 | Epoch : 1", - "6 | Gas limit : 0", - "7 | Fees : NAM 100.0" - ], - "valid": true } ] diff --git a/tests_zemu/package.json b/tests_zemu/package.json index d99672b5..c2dd9220 100644 --- a/tests_zemu/package.json +++ b/tests_zemu/package.json @@ -15,32 +15,32 @@ ], "scripts": { "clean": "ts-node tests/pullImageKillOld.ts", - "test": "yarn clean && jest" + "test": "yarn clean && jest --maxConcurrency 2" }, "dependencies": { "@zondax/ledger-namada": "../js", - "@zondax/zemu": "^0.42.1" + "@zondax/zemu": "^0.44.0" }, "devDependencies": { - "@types/jest": "^29.5.1", + "@types/jest": "^29.5.3", "@types/ledgerhq__hw-transport": "^4.21.4", - "@typescript-eslint/eslint-plugin": "^5.59.2", - "@typescript-eslint/parser": "^5.59.2", + "@typescript-eslint/eslint-plugin": "^6.2.1", + "@typescript-eslint/parser": "^6.2.1", "blakejs": "^1.1.1", "crypto-js": "4.1.1", "ed25519-supercop": "^2.0.1", - "eslint": "^8.40.0", - "eslint-config-prettier": "^8.8.0", - "eslint-plugin-import": "^2.27.5", - "eslint-plugin-jest": "^27.2.1", - "eslint-plugin-prettier": "^4.0.0", - "jest": "29.5.0", + "eslint": "^8.46.0", + "eslint-config-prettier": "^8.9.0", + "eslint-plugin-import": "^2.28.0", + "eslint-plugin-jest": "^27.2.3", + "eslint-plugin-prettier": "^5.0.0", + "jest": "29.6.2", "js-sha256": "0.9.0", "jssha": "^3.2.0", "leb128": "^0.0.5", - "prettier": "^2.8.8", - "ts-jest": "^29.1.0", + "prettier": "^3.0.0", + "ts-jest": "^29.1.1", "ts-node": "^10.9.1", - "typescript": "^5.0.4" + "typescript": "^5.1.6" } } diff --git a/tests_zemu/snapshots/s-mainmenu/00000.png b/tests_zemu/snapshots/s-mainmenu/00000.png index 4d7d17a5..9eeb1e0e 100644 Binary files a/tests_zemu/snapshots/s-mainmenu/00000.png 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 index 463fd214..df62b572 100644 Binary files a/tests_zemu/snapshots/s-mainmenu/00001.png 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 index c13848f9..56202419 100644 Binary files a/tests_zemu/snapshots/s-mainmenu/00002.png 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 index 463fd214..df62b572 100644 Binary files a/tests_zemu/snapshots/s-mainmenu/00003.png 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 index e2f1da58..8d329a81 100644 Binary files a/tests_zemu/snapshots/s-mainmenu/00004.png and b/tests_zemu/snapshots/s-mainmenu/00004.png differ diff --git a/tests_zemu/snapshots/s-mainmenu/00005.png b/tests_zemu/snapshots/s-mainmenu/00005.png index ddfbf84c..da26a1d9 100644 Binary files a/tests_zemu/snapshots/s-mainmenu/00005.png and b/tests_zemu/snapshots/s-mainmenu/00005.png differ diff --git a/tests_zemu/snapshots/s-mainmenu/00006.png b/tests_zemu/snapshots/s-mainmenu/00006.png index 197e6f21..32273c6c 100644 Binary files a/tests_zemu/snapshots/s-mainmenu/00006.png and b/tests_zemu/snapshots/s-mainmenu/00006.png differ diff --git a/tests_zemu/snapshots/s-mainmenu/00008.png b/tests_zemu/snapshots/s-mainmenu/00008.png index 197e6f21..32273c6c 100644 Binary files a/tests_zemu/snapshots/s-mainmenu/00008.png and b/tests_zemu/snapshots/s-mainmenu/00008.png differ diff --git a/tests_zemu/snapshots/s-mainmenu/00009.png b/tests_zemu/snapshots/s-mainmenu/00009.png index ddfbf84c..da26a1d9 100644 Binary files a/tests_zemu/snapshots/s-mainmenu/00009.png and b/tests_zemu/snapshots/s-mainmenu/00009.png differ diff --git a/tests_zemu/snapshots/s-mainmenu/00010.png b/tests_zemu/snapshots/s-mainmenu/00010.png index e2f1da58..8d329a81 100644 Binary files a/tests_zemu/snapshots/s-mainmenu/00010.png and b/tests_zemu/snapshots/s-mainmenu/00010.png differ diff --git a/tests_zemu/snapshots/s-mainmenu/00011.png b/tests_zemu/snapshots/s-mainmenu/00011.png index 463fd214..df62b572 100644 Binary files a/tests_zemu/snapshots/s-mainmenu/00011.png and b/tests_zemu/snapshots/s-mainmenu/00011.png differ diff --git a/tests_zemu/snapshots/s-mainmenu/00012.png b/tests_zemu/snapshots/s-mainmenu/00012.png index 4d7d17a5..9eeb1e0e 100644 Binary files a/tests_zemu/snapshots/s-mainmenu/00012.png and b/tests_zemu/snapshots/s-mainmenu/00012.png differ diff --git a/tests_zemu/snapshots/s-show_address/00004.png b/tests_zemu/snapshots/s-show_address/00004.png index 4d7d17a5..9eeb1e0e 100644 Binary files a/tests_zemu/snapshots/s-show_address/00004.png and b/tests_zemu/snapshots/s-show_address/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 index 4d7d17a5..9eeb1e0e 100644 Binary files a/tests_zemu/snapshots/s-show_address_reject/00005.png and b/tests_zemu/snapshots/s-show_address_reject/00005.png differ diff --git a/tests_zemu/snapshots/s-sign-bond/00000.png b/tests_zemu/snapshots/s-sign-bond/00000.png new file mode 100644 index 00000000..f08ef737 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-bond/00000.png differ diff --git a/tests_zemu/snapshots/s-sign-bond/00001.png b/tests_zemu/snapshots/s-sign-bond/00001.png new file mode 100644 index 00000000..790375ae Binary files /dev/null and b/tests_zemu/snapshots/s-sign-bond/00001.png differ diff --git a/tests_zemu/snapshots/s-sign-bond/00002.png b/tests_zemu/snapshots/s-sign-bond/00002.png new file mode 100644 index 00000000..7e20a28b Binary files /dev/null and b/tests_zemu/snapshots/s-sign-bond/00002.png differ diff --git a/tests_zemu/snapshots/s-sign-bond/00003.png b/tests_zemu/snapshots/s-sign-bond/00003.png new file mode 100644 index 00000000..847216e3 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-bond/00003.png differ diff --git a/tests_zemu/snapshots/s-sign-bond/00004.png b/tests_zemu/snapshots/s-sign-bond/00004.png new file mode 100644 index 00000000..b805bba3 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-bond/00004.png differ diff --git a/tests_zemu/snapshots/s-sign-bond/00005.png b/tests_zemu/snapshots/s-sign-bond/00005.png new file mode 100644 index 00000000..c7952d6c Binary files /dev/null and b/tests_zemu/snapshots/s-sign-bond/00005.png differ diff --git a/tests_zemu/snapshots/s-sign-bond/00006.png b/tests_zemu/snapshots/s-sign-bond/00006.png new file mode 100644 index 00000000..4cc8077d Binary files /dev/null and b/tests_zemu/snapshots/s-sign-bond/00006.png differ diff --git a/tests_zemu/snapshots/s-sign-bond/00007.png b/tests_zemu/snapshots/s-sign-bond/00007.png new file mode 100644 index 00000000..3e7186a8 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-bond/00007.png differ diff --git a/tests_zemu/snapshots/s-sign-bond/00008.png b/tests_zemu/snapshots/s-sign-bond/00008.png new file mode 100644 index 00000000..006c26ab Binary files /dev/null and b/tests_zemu/snapshots/s-sign-bond/00008.png differ diff --git a/tests_zemu/snapshots/s-sign-bond/00009.png b/tests_zemu/snapshots/s-sign-bond/00009.png new file mode 100644 index 00000000..9eeb1e0e Binary files /dev/null and b/tests_zemu/snapshots/s-sign-bond/00009.png differ diff --git a/tests_zemu/snapshots/s-sign-init_account/00000.png b/tests_zemu/snapshots/s-sign-init_account/00000.png new file mode 100644 index 00000000..ee8fb654 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-init_account/00000.png differ diff --git a/tests_zemu/snapshots/s-sign-init_account/00001.png b/tests_zemu/snapshots/s-sign-init_account/00001.png new file mode 100644 index 00000000..ba5172d6 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-init_account/00001.png differ diff --git a/tests_zemu/snapshots/s-sign-init_account/00002.png b/tests_zemu/snapshots/s-sign-init_account/00002.png new file mode 100644 index 00000000..4a4a8cae Binary files /dev/null and b/tests_zemu/snapshots/s-sign-init_account/00002.png differ diff --git a/tests_zemu/snapshots/s-sign-init_account/00003.png b/tests_zemu/snapshots/s-sign-init_account/00003.png new file mode 100644 index 00000000..2e2bae00 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-init_account/00003.png differ diff --git a/tests_zemu/snapshots/s-sign-init_account/00004.png b/tests_zemu/snapshots/s-sign-init_account/00004.png new file mode 100644 index 00000000..006c26ab Binary files /dev/null and b/tests_zemu/snapshots/s-sign-init_account/00004.png differ diff --git a/tests_zemu/snapshots/s-sign-init_account/00005.png b/tests_zemu/snapshots/s-sign-init_account/00005.png new file mode 100644 index 00000000..9eeb1e0e Binary files /dev/null and b/tests_zemu/snapshots/s-sign-init_account/00005.png differ diff --git a/tests_zemu/snapshots/s-sign-init_proposal/00000.png b/tests_zemu/snapshots/s-sign-init_proposal/00000.png new file mode 100644 index 00000000..c0616a9b Binary files /dev/null and b/tests_zemu/snapshots/s-sign-init_proposal/00000.png differ diff --git a/tests_zemu/snapshots/s-sign-init_proposal/00001.png b/tests_zemu/snapshots/s-sign-init_proposal/00001.png new file mode 100644 index 00000000..2f9b9868 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-init_proposal/00001.png differ diff --git a/tests_zemu/snapshots/s-sign-init_proposal/00002.png b/tests_zemu/snapshots/s-sign-init_proposal/00002.png new file mode 100644 index 00000000..72f022c4 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-init_proposal/00002.png differ diff --git a/tests_zemu/snapshots/s-sign-init_proposal/00003.png b/tests_zemu/snapshots/s-sign-init_proposal/00003.png new file mode 100644 index 00000000..47478c6c Binary files /dev/null and b/tests_zemu/snapshots/s-sign-init_proposal/00003.png differ diff --git a/tests_zemu/snapshots/s-sign-init_proposal/00004.png b/tests_zemu/snapshots/s-sign-init_proposal/00004.png new file mode 100644 index 00000000..e5ac71d3 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-init_proposal/00004.png differ diff --git a/tests_zemu/snapshots/s-sign-init_proposal/00005.png b/tests_zemu/snapshots/s-sign-init_proposal/00005.png new file mode 100644 index 00000000..15e8e4dc Binary files /dev/null and b/tests_zemu/snapshots/s-sign-init_proposal/00005.png differ diff --git a/tests_zemu/snapshots/s-sign-init_proposal/00006.png b/tests_zemu/snapshots/s-sign-init_proposal/00006.png new file mode 100644 index 00000000..5b906340 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-init_proposal/00006.png differ diff --git a/tests_zemu/snapshots/s-sign-init_proposal/00007.png b/tests_zemu/snapshots/s-sign-init_proposal/00007.png new file mode 100644 index 00000000..5041ce50 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-init_proposal/00007.png differ diff --git a/tests_zemu/snapshots/s-sign-init_proposal/00008.png b/tests_zemu/snapshots/s-sign-init_proposal/00008.png new file mode 100644 index 00000000..ec751266 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-init_proposal/00008.png differ diff --git a/tests_zemu/snapshots/s-sign-init_proposal/00009.png b/tests_zemu/snapshots/s-sign-init_proposal/00009.png new file mode 100644 index 00000000..290eabd5 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-init_proposal/00009.png differ diff --git a/tests_zemu/snapshots/s-sign-init_proposal/00010.png b/tests_zemu/snapshots/s-sign-init_proposal/00010.png new file mode 100644 index 00000000..bed0544b Binary files /dev/null and b/tests_zemu/snapshots/s-sign-init_proposal/00010.png differ diff --git a/tests_zemu/snapshots/s-sign-init_proposal/00011.png b/tests_zemu/snapshots/s-sign-init_proposal/00011.png new file mode 100644 index 00000000..006c26ab Binary files /dev/null and b/tests_zemu/snapshots/s-sign-init_proposal/00011.png differ diff --git a/tests_zemu/snapshots/s-sign-init_proposal/00012.png b/tests_zemu/snapshots/s-sign-init_proposal/00012.png new file mode 100644 index 00000000..9eeb1e0e Binary files /dev/null and b/tests_zemu/snapshots/s-sign-init_proposal/00012.png differ diff --git a/tests_zemu/snapshots/s-sign-init_validator/00000.png b/tests_zemu/snapshots/s-sign-init_validator/00000.png new file mode 100644 index 00000000..ab641537 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-init_validator/00000.png differ diff --git a/tests_zemu/snapshots/s-sign-init_validator/00001.png b/tests_zemu/snapshots/s-sign-init_validator/00001.png new file mode 100644 index 00000000..1954e058 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-init_validator/00001.png differ diff --git a/tests_zemu/snapshots/s-sign-init_validator/00002.png b/tests_zemu/snapshots/s-sign-init_validator/00002.png new file mode 100644 index 00000000..13f89426 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-init_validator/00002.png differ diff --git a/tests_zemu/snapshots/s-sign-init_validator/00003.png b/tests_zemu/snapshots/s-sign-init_validator/00003.png new file mode 100644 index 00000000..92e4fa41 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-init_validator/00003.png differ diff --git a/tests_zemu/snapshots/s-sign-init_validator/00004.png b/tests_zemu/snapshots/s-sign-init_validator/00004.png new file mode 100644 index 00000000..10c974d6 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-init_validator/00004.png differ diff --git a/tests_zemu/snapshots/s-sign-init_validator/00005.png b/tests_zemu/snapshots/s-sign-init_validator/00005.png new file mode 100644 index 00000000..1f6a2f97 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-init_validator/00005.png differ diff --git a/tests_zemu/snapshots/s-sign-init_validator/00006.png b/tests_zemu/snapshots/s-sign-init_validator/00006.png new file mode 100644 index 00000000..e5ae5652 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-init_validator/00006.png differ diff --git a/tests_zemu/snapshots/s-sign-init_validator/00007.png b/tests_zemu/snapshots/s-sign-init_validator/00007.png new file mode 100644 index 00000000..d1344500 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-init_validator/00007.png differ diff --git a/tests_zemu/snapshots/s-sign-init_validator/00008.png b/tests_zemu/snapshots/s-sign-init_validator/00008.png new file mode 100644 index 00000000..de055fff Binary files /dev/null and b/tests_zemu/snapshots/s-sign-init_validator/00008.png differ diff --git a/tests_zemu/snapshots/s-sign-init_validator/00009.png b/tests_zemu/snapshots/s-sign-init_validator/00009.png new file mode 100644 index 00000000..e6e68734 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-init_validator/00009.png differ diff --git a/tests_zemu/snapshots/s-sign-init_validator/00010.png b/tests_zemu/snapshots/s-sign-init_validator/00010.png new file mode 100644 index 00000000..a176d59d Binary files /dev/null and b/tests_zemu/snapshots/s-sign-init_validator/00010.png differ diff --git a/tests_zemu/snapshots/s-sign-init_validator/00011.png b/tests_zemu/snapshots/s-sign-init_validator/00011.png new file mode 100644 index 00000000..bd26c325 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-init_validator/00011.png differ diff --git a/tests_zemu/snapshots/s-sign-init_validator/00012.png b/tests_zemu/snapshots/s-sign-init_validator/00012.png new file mode 100644 index 00000000..e52e1212 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-init_validator/00012.png differ diff --git a/tests_zemu/snapshots/s-sign-init_validator/00013.png b/tests_zemu/snapshots/s-sign-init_validator/00013.png new file mode 100644 index 00000000..2bfccdb0 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-init_validator/00013.png differ diff --git a/tests_zemu/snapshots/s-sign-init_validator/00014.png b/tests_zemu/snapshots/s-sign-init_validator/00014.png new file mode 100644 index 00000000..2c49c978 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-init_validator/00014.png differ diff --git a/tests_zemu/snapshots/s-sign-init_validator/00015.png b/tests_zemu/snapshots/s-sign-init_validator/00015.png new file mode 100644 index 00000000..a3a4c055 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-init_validator/00015.png differ diff --git a/tests_zemu/snapshots/s-sign-init_validator/00016.png b/tests_zemu/snapshots/s-sign-init_validator/00016.png new file mode 100644 index 00000000..006c26ab Binary files /dev/null and b/tests_zemu/snapshots/s-sign-init_validator/00016.png differ diff --git a/tests_zemu/snapshots/s-sign-init_validator/00017.png b/tests_zemu/snapshots/s-sign-init_validator/00017.png new file mode 100644 index 00000000..9eeb1e0e Binary files /dev/null and b/tests_zemu/snapshots/s-sign-init_validator/00017.png differ diff --git a/tests_zemu/snapshots/s-sign-update_vp/00000.png b/tests_zemu/snapshots/s-sign-update_vp/00000.png new file mode 100644 index 00000000..abfd4d26 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-update_vp/00000.png differ diff --git a/tests_zemu/snapshots/s-sign-update_vp/00001.png b/tests_zemu/snapshots/s-sign-update_vp/00001.png new file mode 100644 index 00000000..a87f5f7c Binary files /dev/null and b/tests_zemu/snapshots/s-sign-update_vp/00001.png differ diff --git a/tests_zemu/snapshots/s-sign-update_vp/00002.png b/tests_zemu/snapshots/s-sign-update_vp/00002.png new file mode 100644 index 00000000..2e497359 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-update_vp/00002.png differ diff --git a/tests_zemu/snapshots/s-sign-update_vp/00003.png b/tests_zemu/snapshots/s-sign-update_vp/00003.png new file mode 100644 index 00000000..40bda034 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-update_vp/00003.png differ diff --git a/tests_zemu/snapshots/s-sign-update_vp/00004.png b/tests_zemu/snapshots/s-sign-update_vp/00004.png new file mode 100644 index 00000000..2e2bae00 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-update_vp/00004.png differ diff --git a/tests_zemu/snapshots/s-sign-update_vp/00005.png b/tests_zemu/snapshots/s-sign-update_vp/00005.png new file mode 100644 index 00000000..006c26ab Binary files /dev/null and b/tests_zemu/snapshots/s-sign-update_vp/00005.png differ diff --git a/tests_zemu/snapshots/s-sign-update_vp/00006.png b/tests_zemu/snapshots/s-sign-update_vp/00006.png new file mode 100644 index 00000000..9eeb1e0e Binary files /dev/null and b/tests_zemu/snapshots/s-sign-update_vp/00006.png differ diff --git a/tests_zemu/snapshots/sp-mainmenu/00000.png b/tests_zemu/snapshots/sp-mainmenu/00000.png index 957a52df..8d9abd01 100644 Binary files a/tests_zemu/snapshots/sp-mainmenu/00000.png and b/tests_zemu/snapshots/sp-mainmenu/00000.png differ diff --git a/tests_zemu/snapshots/sp-mainmenu/00004.png b/tests_zemu/snapshots/sp-mainmenu/00004.png index b6b3e4a4..a0d95e5e 100644 Binary files a/tests_zemu/snapshots/sp-mainmenu/00004.png and b/tests_zemu/snapshots/sp-mainmenu/00004.png differ diff --git a/tests_zemu/snapshots/sp-mainmenu/00010.png b/tests_zemu/snapshots/sp-mainmenu/00010.png index b6b3e4a4..a0d95e5e 100644 Binary files a/tests_zemu/snapshots/sp-mainmenu/00010.png and b/tests_zemu/snapshots/sp-mainmenu/00010.png differ diff --git a/tests_zemu/snapshots/sp-mainmenu/00012.png b/tests_zemu/snapshots/sp-mainmenu/00012.png index 957a52df..8d9abd01 100644 Binary files a/tests_zemu/snapshots/sp-mainmenu/00012.png and b/tests_zemu/snapshots/sp-mainmenu/00012.png differ diff --git a/tests_zemu/snapshots/sp-show_address/00000.png b/tests_zemu/snapshots/sp-show_address/00000.png index 6aa1eb9e..7e718698 100644 Binary files a/tests_zemu/snapshots/sp-show_address/00000.png and b/tests_zemu/snapshots/sp-show_address/00000.png differ diff --git a/tests_zemu/snapshots/sp-show_address/00004.png b/tests_zemu/snapshots/sp-show_address/00004.png index 957a52df..8d9abd01 100644 Binary files a/tests_zemu/snapshots/sp-show_address/00004.png and b/tests_zemu/snapshots/sp-show_address/00004.png differ diff --git a/tests_zemu/snapshots/sp-show_address_reject/00000.png b/tests_zemu/snapshots/sp-show_address_reject/00000.png index 6aa1eb9e..7e718698 100644 Binary files a/tests_zemu/snapshots/sp-show_address_reject/00000.png and b/tests_zemu/snapshots/sp-show_address_reject/00000.png differ diff --git a/tests_zemu/snapshots/sp-show_address_reject/00005.png b/tests_zemu/snapshots/sp-show_address_reject/00005.png index 957a52df..8d9abd01 100644 Binary files a/tests_zemu/snapshots/sp-show_address_reject/00005.png and b/tests_zemu/snapshots/sp-show_address_reject/00005.png differ diff --git a/tests_zemu/snapshots/sp-sign-bond/00000.png b/tests_zemu/snapshots/sp-sign-bond/00000.png new file mode 100644 index 00000000..7e718698 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-bond/00000.png differ diff --git a/tests_zemu/snapshots/sp-sign-bond/00001.png b/tests_zemu/snapshots/sp-sign-bond/00001.png new file mode 100644 index 00000000..586b5190 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-bond/00001.png differ diff --git a/tests_zemu/snapshots/sp-sign-bond/00002.png b/tests_zemu/snapshots/sp-sign-bond/00002.png new file mode 100644 index 00000000..13abd374 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-bond/00002.png differ diff --git a/tests_zemu/snapshots/sp-sign-bond/00003.png b/tests_zemu/snapshots/sp-sign-bond/00003.png new file mode 100644 index 00000000..d286a3df Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-bond/00003.png differ diff --git a/tests_zemu/snapshots/sp-sign-bond/00004.png b/tests_zemu/snapshots/sp-sign-bond/00004.png new file mode 100644 index 00000000..e99bfa60 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-bond/00004.png differ diff --git a/tests_zemu/snapshots/sp-sign-bond/00005.png b/tests_zemu/snapshots/sp-sign-bond/00005.png new file mode 100644 index 00000000..1a8cd03e Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-bond/00005.png differ diff --git a/tests_zemu/snapshots/sp-sign-bond/00006.png b/tests_zemu/snapshots/sp-sign-bond/00006.png new file mode 100644 index 00000000..7ca9438e Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-bond/00006.png differ diff --git a/tests_zemu/snapshots/sp-sign-bond/00007.png b/tests_zemu/snapshots/sp-sign-bond/00007.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-bond/00007.png differ diff --git a/tests_zemu/snapshots/sp-sign-bond/00008.png b/tests_zemu/snapshots/sp-sign-bond/00008.png new file mode 100644 index 00000000..8d9abd01 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-bond/00008.png differ diff --git a/tests_zemu/snapshots/sp-sign-init_account/00000.png b/tests_zemu/snapshots/sp-sign-init_account/00000.png new file mode 100644 index 00000000..7e718698 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-init_account/00000.png differ diff --git a/tests_zemu/snapshots/sp-sign-init_account/00001.png b/tests_zemu/snapshots/sp-sign-init_account/00001.png new file mode 100644 index 00000000..1a591f66 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-init_account/00001.png differ diff --git a/tests_zemu/snapshots/sp-sign-init_account/00002.png b/tests_zemu/snapshots/sp-sign-init_account/00002.png new file mode 100644 index 00000000..4e65b98d Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-init_account/00002.png differ diff --git a/tests_zemu/snapshots/sp-sign-init_account/00003.png b/tests_zemu/snapshots/sp-sign-init_account/00003.png new file mode 100644 index 00000000..a1ba8110 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-init_account/00003.png differ diff --git a/tests_zemu/snapshots/sp-sign-init_account/00004.png b/tests_zemu/snapshots/sp-sign-init_account/00004.png new file mode 100644 index 00000000..a1fa625f Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-init_account/00004.png differ diff --git a/tests_zemu/snapshots/sp-sign-init_account/00005.png b/tests_zemu/snapshots/sp-sign-init_account/00005.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-init_account/00005.png differ diff --git a/tests_zemu/snapshots/sp-sign-init_account/00006.png b/tests_zemu/snapshots/sp-sign-init_account/00006.png new file mode 100644 index 00000000..8d9abd01 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-init_account/00006.png differ diff --git a/tests_zemu/snapshots/sp-sign-init_proposal/00000.png b/tests_zemu/snapshots/sp-sign-init_proposal/00000.png new file mode 100644 index 00000000..7e718698 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-init_proposal/00000.png differ diff --git a/tests_zemu/snapshots/sp-sign-init_proposal/00001.png b/tests_zemu/snapshots/sp-sign-init_proposal/00001.png new file mode 100644 index 00000000..b1c401f9 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-init_proposal/00001.png differ diff --git a/tests_zemu/snapshots/sp-sign-init_proposal/00002.png b/tests_zemu/snapshots/sp-sign-init_proposal/00002.png new file mode 100644 index 00000000..99792ed1 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-init_proposal/00002.png differ diff --git a/tests_zemu/snapshots/sp-sign-init_proposal/00003.png b/tests_zemu/snapshots/sp-sign-init_proposal/00003.png new file mode 100644 index 00000000..e76b7694 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-init_proposal/00003.png differ diff --git a/tests_zemu/snapshots/sp-sign-init_proposal/00004.png b/tests_zemu/snapshots/sp-sign-init_proposal/00004.png new file mode 100644 index 00000000..814d2f4e Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-init_proposal/00004.png differ diff --git a/tests_zemu/snapshots/sp-sign-init_proposal/00005.png b/tests_zemu/snapshots/sp-sign-init_proposal/00005.png new file mode 100644 index 00000000..f0bab2c4 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-init_proposal/00005.png differ diff --git a/tests_zemu/snapshots/sp-sign-init_proposal/00006.png b/tests_zemu/snapshots/sp-sign-init_proposal/00006.png new file mode 100644 index 00000000..8232f852 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-init_proposal/00006.png differ diff --git a/tests_zemu/snapshots/sp-sign-init_proposal/00007.png b/tests_zemu/snapshots/sp-sign-init_proposal/00007.png new file mode 100644 index 00000000..741f83e6 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-init_proposal/00007.png differ diff --git a/tests_zemu/snapshots/sp-sign-init_proposal/00008.png b/tests_zemu/snapshots/sp-sign-init_proposal/00008.png new file mode 100644 index 00000000..66130302 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-init_proposal/00008.png differ diff --git a/tests_zemu/snapshots/sp-sign-init_proposal/00009.png b/tests_zemu/snapshots/sp-sign-init_proposal/00009.png new file mode 100644 index 00000000..9b944824 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-init_proposal/00009.png differ diff --git a/tests_zemu/snapshots/sp-sign-init_proposal/00010.png b/tests_zemu/snapshots/sp-sign-init_proposal/00010.png new file mode 100644 index 00000000..42de340f Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-init_proposal/00010.png differ diff --git a/tests_zemu/snapshots/sp-sign-init_proposal/00011.png b/tests_zemu/snapshots/sp-sign-init_proposal/00011.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-init_proposal/00011.png differ diff --git a/tests_zemu/snapshots/sp-sign-init_proposal/00012.png b/tests_zemu/snapshots/sp-sign-init_proposal/00012.png new file mode 100644 index 00000000..8d9abd01 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-init_proposal/00012.png differ diff --git a/tests_zemu/snapshots/sp-sign-init_validator/00000.png b/tests_zemu/snapshots/sp-sign-init_validator/00000.png new file mode 100644 index 00000000..7e718698 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-init_validator/00000.png differ diff --git a/tests_zemu/snapshots/sp-sign-init_validator/00001.png b/tests_zemu/snapshots/sp-sign-init_validator/00001.png new file mode 100644 index 00000000..d556b266 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-init_validator/00001.png differ diff --git a/tests_zemu/snapshots/sp-sign-init_validator/00002.png b/tests_zemu/snapshots/sp-sign-init_validator/00002.png new file mode 100644 index 00000000..87e6b51c Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-init_validator/00002.png differ diff --git a/tests_zemu/snapshots/sp-sign-init_validator/00003.png b/tests_zemu/snapshots/sp-sign-init_validator/00003.png new file mode 100644 index 00000000..dc4c7cdd Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-init_validator/00003.png differ diff --git a/tests_zemu/snapshots/sp-sign-init_validator/00004.png b/tests_zemu/snapshots/sp-sign-init_validator/00004.png new file mode 100644 index 00000000..83326b39 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-init_validator/00004.png differ diff --git a/tests_zemu/snapshots/sp-sign-init_validator/00005.png b/tests_zemu/snapshots/sp-sign-init_validator/00005.png new file mode 100644 index 00000000..28196da3 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-init_validator/00005.png differ diff --git a/tests_zemu/snapshots/sp-sign-init_validator/00006.png b/tests_zemu/snapshots/sp-sign-init_validator/00006.png new file mode 100644 index 00000000..c7e97bc7 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-init_validator/00006.png differ diff --git a/tests_zemu/snapshots/sp-sign-init_validator/00007.png b/tests_zemu/snapshots/sp-sign-init_validator/00007.png new file mode 100644 index 00000000..82fd321b Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-init_validator/00007.png differ diff --git a/tests_zemu/snapshots/sp-sign-init_validator/00008.png b/tests_zemu/snapshots/sp-sign-init_validator/00008.png new file mode 100644 index 00000000..3b669a6d Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-init_validator/00008.png differ diff --git a/tests_zemu/snapshots/sp-sign-init_validator/00009.png b/tests_zemu/snapshots/sp-sign-init_validator/00009.png new file mode 100644 index 00000000..c1f1b36c Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-init_validator/00009.png differ diff --git a/tests_zemu/snapshots/sp-sign-init_validator/00010.png b/tests_zemu/snapshots/sp-sign-init_validator/00010.png new file mode 100644 index 00000000..ded8319a Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-init_validator/00010.png differ diff --git a/tests_zemu/snapshots/sp-sign-init_validator/00011.png b/tests_zemu/snapshots/sp-sign-init_validator/00011.png new file mode 100644 index 00000000..94f9380d Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-init_validator/00011.png differ diff --git a/tests_zemu/snapshots/sp-sign-init_validator/00012.png b/tests_zemu/snapshots/sp-sign-init_validator/00012.png new file mode 100644 index 00000000..8b7fd56b Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-init_validator/00012.png differ diff --git a/tests_zemu/snapshots/sp-sign-init_validator/00013.png b/tests_zemu/snapshots/sp-sign-init_validator/00013.png new file mode 100644 index 00000000..9eb73546 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-init_validator/00013.png differ diff --git a/tests_zemu/snapshots/sp-sign-init_validator/00014.png b/tests_zemu/snapshots/sp-sign-init_validator/00014.png new file mode 100644 index 00000000..f79b80c7 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-init_validator/00014.png differ diff --git a/tests_zemu/snapshots/sp-sign-init_validator/00015.png b/tests_zemu/snapshots/sp-sign-init_validator/00015.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-init_validator/00015.png differ diff --git a/tests_zemu/snapshots/sp-sign-init_validator/00016.png b/tests_zemu/snapshots/sp-sign-init_validator/00016.png new file mode 100644 index 00000000..8d9abd01 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-init_validator/00016.png differ diff --git a/tests_zemu/snapshots/sp-sign-update_vp/00000.png b/tests_zemu/snapshots/sp-sign-update_vp/00000.png new file mode 100644 index 00000000..7e718698 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-update_vp/00000.png differ diff --git a/tests_zemu/snapshots/sp-sign-update_vp/00001.png b/tests_zemu/snapshots/sp-sign-update_vp/00001.png new file mode 100644 index 00000000..329324ab Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-update_vp/00001.png differ diff --git a/tests_zemu/snapshots/sp-sign-update_vp/00002.png b/tests_zemu/snapshots/sp-sign-update_vp/00002.png new file mode 100644 index 00000000..9e8761a0 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-update_vp/00002.png differ diff --git a/tests_zemu/snapshots/sp-sign-update_vp/00003.png b/tests_zemu/snapshots/sp-sign-update_vp/00003.png new file mode 100644 index 00000000..f071eba9 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-update_vp/00003.png differ diff --git a/tests_zemu/snapshots/sp-sign-update_vp/00004.png b/tests_zemu/snapshots/sp-sign-update_vp/00004.png new file mode 100644 index 00000000..a1fa625f Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-update_vp/00004.png differ diff --git a/tests_zemu/snapshots/sp-sign-update_vp/00005.png b/tests_zemu/snapshots/sp-sign-update_vp/00005.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-update_vp/00005.png differ diff --git a/tests_zemu/snapshots/sp-sign-update_vp/00006.png b/tests_zemu/snapshots/sp-sign-update_vp/00006.png new file mode 100644 index 00000000..8d9abd01 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-update_vp/00006.png differ diff --git a/tests_zemu/snapshots/x-mainmenu/00000.png b/tests_zemu/snapshots/x-mainmenu/00000.png index 957a52df..8d9abd01 100644 Binary files a/tests_zemu/snapshots/x-mainmenu/00000.png 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 index e10e0049..8472e5d9 100644 Binary files a/tests_zemu/snapshots/x-mainmenu/00001.png 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 index 7e236da6..f7921677 100644 Binary files a/tests_zemu/snapshots/x-mainmenu/00002.png 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 index e10e0049..8472e5d9 100644 Binary files a/tests_zemu/snapshots/x-mainmenu/00003.png 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 index b6b3e4a4..a0d95e5e 100644 Binary files a/tests_zemu/snapshots/x-mainmenu/00004.png and b/tests_zemu/snapshots/x-mainmenu/00004.png differ diff --git a/tests_zemu/snapshots/x-mainmenu/00010.png b/tests_zemu/snapshots/x-mainmenu/00010.png index b6b3e4a4..a0d95e5e 100644 Binary files a/tests_zemu/snapshots/x-mainmenu/00010.png and b/tests_zemu/snapshots/x-mainmenu/00010.png differ diff --git a/tests_zemu/snapshots/x-mainmenu/00011.png b/tests_zemu/snapshots/x-mainmenu/00011.png index e10e0049..8472e5d9 100644 Binary files a/tests_zemu/snapshots/x-mainmenu/00011.png and b/tests_zemu/snapshots/x-mainmenu/00011.png differ diff --git a/tests_zemu/snapshots/x-mainmenu/00012.png b/tests_zemu/snapshots/x-mainmenu/00012.png index 957a52df..8d9abd01 100644 Binary files a/tests_zemu/snapshots/x-mainmenu/00012.png and b/tests_zemu/snapshots/x-mainmenu/00012.png differ diff --git a/tests_zemu/snapshots/x-show_address/00000.png b/tests_zemu/snapshots/x-show_address/00000.png index 6aa1eb9e..7e718698 100644 Binary files a/tests_zemu/snapshots/x-show_address/00000.png 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 index d251c232..8861b1a0 100644 Binary files a/tests_zemu/snapshots/x-show_address/00001.png 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 index efb80a74..66e31790 100644 Binary files a/tests_zemu/snapshots/x-show_address/00002.png and b/tests_zemu/snapshots/x-show_address/00002.png differ diff --git a/tests_zemu/snapshots/x-show_address/00004.png b/tests_zemu/snapshots/x-show_address/00004.png index 957a52df..8d9abd01 100644 Binary files a/tests_zemu/snapshots/x-show_address/00004.png and b/tests_zemu/snapshots/x-show_address/00004.png differ diff --git a/tests_zemu/snapshots/x-show_address_reject/00000.png b/tests_zemu/snapshots/x-show_address_reject/00000.png index 6aa1eb9e..7e718698 100644 Binary files a/tests_zemu/snapshots/x-show_address_reject/00000.png 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 index d251c232..8861b1a0 100644 Binary files a/tests_zemu/snapshots/x-show_address_reject/00001.png 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 index efb80a74..66e31790 100644 Binary files a/tests_zemu/snapshots/x-show_address_reject/00002.png and b/tests_zemu/snapshots/x-show_address_reject/00002.png differ diff --git a/tests_zemu/snapshots/x-show_address_reject/00004.png b/tests_zemu/snapshots/x-show_address_reject/00004.png index d9b5efc5..de8a2912 100644 Binary files a/tests_zemu/snapshots/x-show_address_reject/00004.png 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 index 957a52df..8d9abd01 100644 Binary files a/tests_zemu/snapshots/x-show_address_reject/00005.png and b/tests_zemu/snapshots/x-show_address_reject/00005.png differ diff --git a/tests_zemu/snapshots/x-sign-bond/00000.png b/tests_zemu/snapshots/x-sign-bond/00000.png new file mode 100644 index 00000000..7e718698 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-bond/00000.png differ diff --git a/tests_zemu/snapshots/x-sign-bond/00001.png b/tests_zemu/snapshots/x-sign-bond/00001.png new file mode 100644 index 00000000..586b5190 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-bond/00001.png differ diff --git a/tests_zemu/snapshots/x-sign-bond/00002.png b/tests_zemu/snapshots/x-sign-bond/00002.png new file mode 100644 index 00000000..0bbb7225 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-bond/00002.png differ diff --git a/tests_zemu/snapshots/x-sign-bond/00003.png b/tests_zemu/snapshots/x-sign-bond/00003.png new file mode 100644 index 00000000..b93e26f1 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-bond/00003.png differ diff --git a/tests_zemu/snapshots/x-sign-bond/00004.png b/tests_zemu/snapshots/x-sign-bond/00004.png new file mode 100644 index 00000000..e99ef5dc Binary files /dev/null and b/tests_zemu/snapshots/x-sign-bond/00004.png differ diff --git a/tests_zemu/snapshots/x-sign-bond/00005.png b/tests_zemu/snapshots/x-sign-bond/00005.png new file mode 100644 index 00000000..db5b62dc Binary files /dev/null and b/tests_zemu/snapshots/x-sign-bond/00005.png differ diff --git a/tests_zemu/snapshots/x-sign-bond/00006.png b/tests_zemu/snapshots/x-sign-bond/00006.png new file mode 100644 index 00000000..7ca9438e Binary files /dev/null and b/tests_zemu/snapshots/x-sign-bond/00006.png differ diff --git a/tests_zemu/snapshots/x-sign-bond/00007.png b/tests_zemu/snapshots/x-sign-bond/00007.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-bond/00007.png differ diff --git a/tests_zemu/snapshots/x-sign-bond/00008.png b/tests_zemu/snapshots/x-sign-bond/00008.png new file mode 100644 index 00000000..8d9abd01 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-bond/00008.png differ diff --git a/tests_zemu/snapshots/x-sign-init_account/00000.png b/tests_zemu/snapshots/x-sign-init_account/00000.png new file mode 100644 index 00000000..7e718698 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-init_account/00000.png differ diff --git a/tests_zemu/snapshots/x-sign-init_account/00001.png b/tests_zemu/snapshots/x-sign-init_account/00001.png new file mode 100644 index 00000000..f89f0afd Binary files /dev/null and b/tests_zemu/snapshots/x-sign-init_account/00001.png differ diff --git a/tests_zemu/snapshots/x-sign-init_account/00002.png b/tests_zemu/snapshots/x-sign-init_account/00002.png new file mode 100644 index 00000000..b5ec1177 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-init_account/00002.png differ diff --git a/tests_zemu/snapshots/x-sign-init_account/00003.png b/tests_zemu/snapshots/x-sign-init_account/00003.png new file mode 100644 index 00000000..ceedd41e Binary files /dev/null and b/tests_zemu/snapshots/x-sign-init_account/00003.png differ diff --git a/tests_zemu/snapshots/x-sign-init_account/00004.png b/tests_zemu/snapshots/x-sign-init_account/00004.png new file mode 100644 index 00000000..a1fa625f Binary files /dev/null and b/tests_zemu/snapshots/x-sign-init_account/00004.png differ diff --git a/tests_zemu/snapshots/x-sign-init_account/00005.png b/tests_zemu/snapshots/x-sign-init_account/00005.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-init_account/00005.png differ diff --git a/tests_zemu/snapshots/x-sign-init_account/00006.png b/tests_zemu/snapshots/x-sign-init_account/00006.png new file mode 100644 index 00000000..8d9abd01 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-init_account/00006.png differ diff --git a/tests_zemu/snapshots/x-sign-init_proposal/00000.png b/tests_zemu/snapshots/x-sign-init_proposal/00000.png new file mode 100644 index 00000000..7e718698 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-init_proposal/00000.png differ diff --git a/tests_zemu/snapshots/x-sign-init_proposal/00001.png b/tests_zemu/snapshots/x-sign-init_proposal/00001.png new file mode 100644 index 00000000..e353cb0a Binary files /dev/null and b/tests_zemu/snapshots/x-sign-init_proposal/00001.png differ diff --git a/tests_zemu/snapshots/x-sign-init_proposal/00002.png b/tests_zemu/snapshots/x-sign-init_proposal/00002.png new file mode 100644 index 00000000..99792ed1 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-init_proposal/00002.png differ diff --git a/tests_zemu/snapshots/x-sign-init_proposal/00003.png b/tests_zemu/snapshots/x-sign-init_proposal/00003.png new file mode 100644 index 00000000..e76b7694 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-init_proposal/00003.png differ diff --git a/tests_zemu/snapshots/x-sign-init_proposal/00004.png b/tests_zemu/snapshots/x-sign-init_proposal/00004.png new file mode 100644 index 00000000..c4bd5dd8 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-init_proposal/00004.png differ diff --git a/tests_zemu/snapshots/x-sign-init_proposal/00005.png b/tests_zemu/snapshots/x-sign-init_proposal/00005.png new file mode 100644 index 00000000..f0bab2c4 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-init_proposal/00005.png differ diff --git a/tests_zemu/snapshots/x-sign-init_proposal/00006.png b/tests_zemu/snapshots/x-sign-init_proposal/00006.png new file mode 100644 index 00000000..117ae825 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-init_proposal/00006.png differ diff --git a/tests_zemu/snapshots/x-sign-init_proposal/00007.png b/tests_zemu/snapshots/x-sign-init_proposal/00007.png new file mode 100644 index 00000000..1b8a4349 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-init_proposal/00007.png differ diff --git a/tests_zemu/snapshots/x-sign-init_proposal/00008.png b/tests_zemu/snapshots/x-sign-init_proposal/00008.png new file mode 100644 index 00000000..66130302 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-init_proposal/00008.png differ diff --git a/tests_zemu/snapshots/x-sign-init_proposal/00009.png b/tests_zemu/snapshots/x-sign-init_proposal/00009.png new file mode 100644 index 00000000..be5f0c33 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-init_proposal/00009.png differ diff --git a/tests_zemu/snapshots/x-sign-init_proposal/00010.png b/tests_zemu/snapshots/x-sign-init_proposal/00010.png new file mode 100644 index 00000000..6fed7c4e Binary files /dev/null and b/tests_zemu/snapshots/x-sign-init_proposal/00010.png differ diff --git a/tests_zemu/snapshots/x-sign-init_proposal/00011.png b/tests_zemu/snapshots/x-sign-init_proposal/00011.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-init_proposal/00011.png differ diff --git a/tests_zemu/snapshots/x-sign-init_proposal/00012.png b/tests_zemu/snapshots/x-sign-init_proposal/00012.png new file mode 100644 index 00000000..8d9abd01 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-init_proposal/00012.png differ diff --git a/tests_zemu/snapshots/x-sign-init_validator/00000.png b/tests_zemu/snapshots/x-sign-init_validator/00000.png new file mode 100644 index 00000000..7e718698 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-init_validator/00000.png differ diff --git a/tests_zemu/snapshots/x-sign-init_validator/00001.png b/tests_zemu/snapshots/x-sign-init_validator/00001.png new file mode 100644 index 00000000..bf1301d9 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-init_validator/00001.png differ diff --git a/tests_zemu/snapshots/x-sign-init_validator/00002.png b/tests_zemu/snapshots/x-sign-init_validator/00002.png new file mode 100644 index 00000000..a2bbac54 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-init_validator/00002.png differ diff --git a/tests_zemu/snapshots/x-sign-init_validator/00003.png b/tests_zemu/snapshots/x-sign-init_validator/00003.png new file mode 100644 index 00000000..28beca84 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-init_validator/00003.png differ diff --git a/tests_zemu/snapshots/x-sign-init_validator/00004.png b/tests_zemu/snapshots/x-sign-init_validator/00004.png new file mode 100644 index 00000000..a855f07d Binary files /dev/null and b/tests_zemu/snapshots/x-sign-init_validator/00004.png differ diff --git a/tests_zemu/snapshots/x-sign-init_validator/00005.png b/tests_zemu/snapshots/x-sign-init_validator/00005.png new file mode 100644 index 00000000..cb199231 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-init_validator/00005.png differ diff --git a/tests_zemu/snapshots/x-sign-init_validator/00006.png b/tests_zemu/snapshots/x-sign-init_validator/00006.png new file mode 100644 index 00000000..c7e97bc7 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-init_validator/00006.png differ diff --git a/tests_zemu/snapshots/x-sign-init_validator/00007.png b/tests_zemu/snapshots/x-sign-init_validator/00007.png new file mode 100644 index 00000000..82fd321b Binary files /dev/null and b/tests_zemu/snapshots/x-sign-init_validator/00007.png differ diff --git a/tests_zemu/snapshots/x-sign-init_validator/00008.png b/tests_zemu/snapshots/x-sign-init_validator/00008.png new file mode 100644 index 00000000..3b669a6d Binary files /dev/null and b/tests_zemu/snapshots/x-sign-init_validator/00008.png differ diff --git a/tests_zemu/snapshots/x-sign-init_validator/00009.png b/tests_zemu/snapshots/x-sign-init_validator/00009.png new file mode 100644 index 00000000..c1f1b36c Binary files /dev/null and b/tests_zemu/snapshots/x-sign-init_validator/00009.png differ diff --git a/tests_zemu/snapshots/x-sign-init_validator/00010.png b/tests_zemu/snapshots/x-sign-init_validator/00010.png new file mode 100644 index 00000000..ded8319a Binary files /dev/null and b/tests_zemu/snapshots/x-sign-init_validator/00010.png differ diff --git a/tests_zemu/snapshots/x-sign-init_validator/00011.png b/tests_zemu/snapshots/x-sign-init_validator/00011.png new file mode 100644 index 00000000..94f9380d Binary files /dev/null and b/tests_zemu/snapshots/x-sign-init_validator/00011.png differ diff --git a/tests_zemu/snapshots/x-sign-init_validator/00012.png b/tests_zemu/snapshots/x-sign-init_validator/00012.png new file mode 100644 index 00000000..8b7fd56b Binary files /dev/null and b/tests_zemu/snapshots/x-sign-init_validator/00012.png differ diff --git a/tests_zemu/snapshots/x-sign-init_validator/00013.png b/tests_zemu/snapshots/x-sign-init_validator/00013.png new file mode 100644 index 00000000..9eb73546 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-init_validator/00013.png differ diff --git a/tests_zemu/snapshots/x-sign-init_validator/00014.png b/tests_zemu/snapshots/x-sign-init_validator/00014.png new file mode 100644 index 00000000..f79b80c7 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-init_validator/00014.png differ diff --git a/tests_zemu/snapshots/x-sign-init_validator/00015.png b/tests_zemu/snapshots/x-sign-init_validator/00015.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-init_validator/00015.png differ diff --git a/tests_zemu/snapshots/x-sign-init_validator/00016.png b/tests_zemu/snapshots/x-sign-init_validator/00016.png new file mode 100644 index 00000000..8d9abd01 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-init_validator/00016.png differ diff --git a/tests_zemu/snapshots/x-sign-update_vp/00000.png b/tests_zemu/snapshots/x-sign-update_vp/00000.png new file mode 100644 index 00000000..7e718698 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-update_vp/00000.png differ diff --git a/tests_zemu/snapshots/x-sign-update_vp/00001.png b/tests_zemu/snapshots/x-sign-update_vp/00001.png new file mode 100644 index 00000000..329324ab Binary files /dev/null and b/tests_zemu/snapshots/x-sign-update_vp/00001.png differ diff --git a/tests_zemu/snapshots/x-sign-update_vp/00002.png b/tests_zemu/snapshots/x-sign-update_vp/00002.png new file mode 100644 index 00000000..a1272d5a Binary files /dev/null and b/tests_zemu/snapshots/x-sign-update_vp/00002.png differ diff --git a/tests_zemu/snapshots/x-sign-update_vp/00003.png b/tests_zemu/snapshots/x-sign-update_vp/00003.png new file mode 100644 index 00000000..5c506af4 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-update_vp/00003.png differ diff --git a/tests_zemu/snapshots/x-sign-update_vp/00004.png b/tests_zemu/snapshots/x-sign-update_vp/00004.png new file mode 100644 index 00000000..a1fa625f Binary files /dev/null and b/tests_zemu/snapshots/x-sign-update_vp/00004.png differ diff --git a/tests_zemu/snapshots/x-sign-update_vp/00005.png b/tests_zemu/snapshots/x-sign-update_vp/00005.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-update_vp/00005.png differ diff --git a/tests_zemu/snapshots/x-sign-update_vp/00006.png b/tests_zemu/snapshots/x-sign-update_vp/00006.png new file mode 100644 index 00000000..8d9abd01 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-update_vp/00006.png differ diff --git a/tests_zemu/tests/standard.test.ts b/tests_zemu/tests/standard.test.ts index c672b960..8e24d9b3 100644 --- a/tests_zemu/tests/standard.test.ts +++ b/tests_zemu/tests/standard.test.ts @@ -18,9 +18,9 @@ import Zemu from '@zondax/zemu' import { NamadaApp } from '@zondax/ledger-namada' import { models, hdpath, defaultOptions } from './common' -jest.setTimeout(60000) +jest.setTimeout(90000) -const expected_pubkey = 'f2f44a2f95ed3b2024e3b73a803084e1df8caaecd5f39f5f62ebc99d66fd6edf' +const expected_pubkey = '00f2f44a2f95ed3b2024e3b73a803084e1df8caaecd5f39f5f62ebc99d66fd6edf' const expected_address = "atest1d9khqw36gvu5zwpjxppnvvfngverjdf4xaznxdzpxquyzvpsgv6rgvpcxqcyy32ygcmy2wpcysxzwu" describe('Standard', function () { diff --git a/tests_zemu/tests/transactions.test.ts b/tests_zemu/tests/transactions.test.ts index 9e9365c1..e52d5a20 100644 --- a/tests_zemu/tests/transactions.test.ts +++ b/tests_zemu/tests/transactions.test.ts @@ -15,7 +15,7 @@ ******************************************************************************* */ import Zemu from '@zondax/zemu' -import { NamadaApp } from '@zondax/ledger-namada' +import { NamadaApp, Signature } from '@zondax/ledger-namada' import { models, hdpath, defaultOptions } from './common' const sha256 = require('js-sha256') @@ -24,17 +24,83 @@ const leb = require('leb128') // @ts-ignore import ed25519 from 'ed25519-supercop' + +function hashSignatureSec(pubkey: Buffer, salt: Buffer, hashes: Buffer[], signature: Buffer | null, prefix: Uint8Array | null) { + let hash = sha256.create(); + if (prefix != null) { + hash.update(prefix); + } + hash.update(salt); + hash.update(new Uint8Array([hashes.length, 0, 0, 0])); + for (let i = 0; i < (hashes.length); i ++) { + // Hashes must be ordered + hash.update(Buffer.from(hashes[i])); + } + hash.update(pubkey); + if(signature != null) { + hash.update(new Uint8Array([0x01])); + hash.update(signature); + } else { + hash.update(new Uint8Array([0x00])); + } + return Buffer.from(hash.array()); +} + const TEST_DATA = [ { - name: 'transfer', - blob: Buffer.from('1e0000006532652d746573742e6437323136343362616635323461356230613435350023000000323032332d30362d31395431323a35353a33382e3332323733363137372b30303a30303be971a951917f108de9490abf6523d3df8c41cc07233f2cef081abd40c6e95974e41647ae2e845ddc33ea6c16c06d6cee9a8a44bc1de6c2df9fe0e03f3312c90100e1f5050000000000280000003442383846423931334130373636453330413030423246423841413239343941373130453234453600ef8ffbbcf933342a6ba57bc159e222c7d127df1fe1ce8fa0a8dbf1f062ee6ed10100000000000000000000000000000000050000000052a2b9d3880100009200000000280000003432353745434543433933343733323342423333353238383742324338394630443341383844324100280000004236413337324337314633433833363630323541334431333732423945393644413530373932324600280000003344323334443145333945313831443532443031383036354531343243413931433035324245334500c0f35e010000000000000252a2b9d38801000000225991ddf88d81b7a587e98fc45d4efe6df3b3bc62d9ba946a829b7a2d0025ed0353a2b9d38801000074e41647ae2e845ddc33ea6c16c06d6cee9a8a44bc1de6c2df9fe0e03f3312c9006cbb07533c0134fca3ad064acee60584e58498de883ecba8d9e18bc810b7f965a1aae30815d4fc60dd0dd369351006366f7e29e807f6c39e4ba7c6a5dfe7130300ef8ffbbcf933342a6ba57bc159e222c7d127df1fe1ce8fa0a8dbf1f062ee6ed10353a2b9d3880100003be971a951917f108de9490abf6523d3df8c41cc07233f2cef081abd40c6e959006e267f5e75b3fc8f569643c2238c9f4f4e83cd557038c19b33777ed357af351241ec907f62c6a09a6dce5ea31f7a704e5ff0d1177b01132dc505825806728e0000ef8ffbbcf933342a6ba57bc159e222c7d127df1fe1ce8fa0a8dbf1f062ee6ed103daa2b9d38801000051088ae4706fd0fd1b94daad548d20c34c5a3c1737ec718cee7e4c339e86eb87008cb461064f7c61ea5592aafcd4a48a084d67fbc0e2a8a90c9387ff1a2e70a6970c70a775e2bc777b48c0828bb297376e65275b12df3832fb8dc166af1fc6fb0a00ef8ffbbcf933342a6ba57bc159e222c7d127df1fe1ce8fa0a8dbf1f062ee6ed1', 'hex'), - headerHash: Buffer.from('8af7112e4d62d9216fabd2b5da65f692ef5f7a22fb671a543a5fa31edae4011e', 'hex'), - dataHash: Buffer.from('74e41647ae2e845ddc33ea6c16c06d6cee9a8a44bc1de6c2df9fe0e03f3312c9', 'hex'), - codeHash: Buffer.from('3be971a951917f108de9490abf6523d3df8c41cc07233f2cef081abd40c6e959', 'hex'), + name: 'bond', + blob: Buffer.from('1e0000006532652d746573742e6161386333633535623134626665393237626236380023000000323032332d30372d31345430363a34333a30382e3233363639313239372b30303a30302084db3e29d0b37134355bfaf2c6ba2416ea9781206e62f289bee1090b739d0a6d62bdae7cf3538118476cfc54bbb217134e6241f202fec7b70f8fa30a045a7d0100e1f50500000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e600d02e8499653b2e032de872b87ff31b1997ccf141280b762f95eb9884a047ab6c010000000000000000000000000000000000000000000000000000000000000000000000000000000002000000004c952353890100004b000000008150ac44e37aa6813a91a39cc2ae23e37cf8ae6600e9a435000000000000000000000000000000000000000000000000000000000100e1cc098a43e19c889b18781b3f50d9425bbba64f024c9523538901000000f44f821502b1d8ef3bb11af645babe350394c39c6b8b1cef848bf60aa4aaaf8d', 'hex'), + // Ordered sections hashes (code, data, extraData) + sectionHashes: [ + Buffer.from('2084db3e29d0b37134355bfaf2c6ba2416ea9781206e62f289bee1090b739d0a', 'hex'), + Buffer.from('6d62bdae7cf3538118476cfc54bbb217134e6241f202fec7b70f8fa30a045a7d', 'hex'), + ], + headerHash: Buffer.from('77f154b96b7180b54617ebb5a336df77fe43becca67b357ff11879836667124b', 'hex'), + }, + { + name: 'init_account', + blob: Buffer.from('1e0000006532652d746573742e6162356634653963613731623732316437383830350023000000323032332d30372d31345431303a34393a34382e3536343330333436362b30303a30303dce2504370b8c68e4145eb7d3b7fa82779dfc13fd3e51b41a8267fe6f0faf1e74f7846ab5a0a81258a3659591db36532c51a1bb50bdd78ea0961639b9729c5e0100e1f50500000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e60034ea3e9f341e241a4836e6a903553c04bd3274f9cafda91a47a263adefe998bc02000000000000000000000000000000000000000000000000000000000000000000000000000000010108000000000000003c010000000000000300000001146b055489010000002451515c3a6fa063eb25d90ef15268dfbdd37133521c34fb58b68b1c4b61918000146b055489010000410000000034ea3e9f341e241a4836e6a903553c04bd3274f9cafda91a47a263adefe998bc1c12c326aba059d7f328a2b067c9267c30b7d5ece73d117bb9708ceaafb73dcc02146b0554890100000039c4f8d4e9b14aac4491d115fa5d4382be490ac9b5bf6d191f8aa66fa4e12bf6', 'hex'), + sectionHashes: [ + Buffer.from('3dce2504370b8c68e4145eb7d3b7fa82779dfc13fd3e51b41a8267fe6f0faf1e', 'hex'), + Buffer.from('74f7846ab5a0a81258a3659591db36532c51a1bb50bdd78ea0961639b9729c5e', 'hex'), + Buffer.from('1c12c326aba059d7f328a2b067c9267c30b7d5ece73d117bb9708ceaafb73dcc', 'hex'), + ], + headerHash: Buffer.from('9ae2e2b357029119a343ddbc1411a8d17238eb6cee4d78a8e5ef9377b568fb92', 'hex'), + }, + { + name: 'init_proposal', + blob: Buffer.from('1e0000006532652d746573742e3532373439376562383436323765626161323136300023000000323032332d30372d31375431303a32313a35312e3833313032373534382b30303a30306a8eb3d84b2740af823ed1a7958585ea60ba2ef94490e6a4572d2b97a50da451623c31e0e73a7d2910e37feabacacea39ba6cf588996f642aa294d772b19a7300100e1f50500000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e600e81ad37eb0fd99f80955d99aeafbef1964d2598207d094703708ba2e93d76b760100000000000000000000000000000000000000000000000000000000000000000000000000000000040000000184e95e6389010000007e68fb834a7772c82a312c4e6e519d97282cce39507950c35fe89f1c347a4a2e0184e95e6389010000000c81a357320d8d093ab99792a92af4c0fe7e9ac010199a5e85d41cc89c331e8f009be95e638901000070000000007d5f7b1d00e9a557fbe7d80113fdb0ae9ce0f8b76886738081b1c21372b70e6600b298f6fea31c74f0ccb6aad7d67b881e7c98fa940001955c283a32d1b70d6d6a251b10060eca456c156e9c376f3708f6961a7da3ad6d0c0000000000000018000000000000001e00000000000000029be95e638901000000d0a4d681cdc8b83e04a64fbc592bcbe9d93f28164d2d5cb5ff9a4fbd43d206b8', 'hex'), + sectionHashes: [ + Buffer.from('6a8eb3d84b2740af823ed1a7958585ea60ba2ef94490e6a4572d2b97a50da451', 'hex'), + Buffer.from('623c31e0e73a7d2910e37feabacacea39ba6cf588996f642aa294d772b19a730', 'hex'), + Buffer.from('7d5f7b1d00e9a557fbe7d80113fdb0ae9ce0f8b76886738081b1c21372b70e66', 'hex'), + Buffer.from('955c283a32d1b70d6d6a251b10060eca456c156e9c376f3708f6961a7da3ad6d', 'hex'), + ], + headerHash: Buffer.from('50999a33a75fd042f088cb7eb8d9e0a16cbaa429c6f19ab47a6a760f6e9a6bb0', 'hex'), + }, + { + name: 'init_validator', + blob: Buffer.from('1e0000006532652d746573742e3532373439376562383436323765626161323136300023000000323032332d30372d31375431303a32333a30372e3538313931353932362b30303a3030145e646087e95106c9df43aa377ae656a3e516ec20d87bdfa8afe51a857a845a52e9300343ff739df098ae4b4d5a852c0aad4c43bb29f157bb2a8e48f76743ac0100e1f50500000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e6007930887c08f82ce6d2af627346a6af7fbbd823b22ebe13087e89ccff9d5607d9010000000000000000000000000000000000000000000000000000000000000000000000000000000003000000013d11606389010000002451515c3a6fa063eb25d90ef15268dfbdd37133521c34fb58b68b1c4b619180003e1160638901000027010000005c147798f1b4c4aaa8e93660d26f8a423359b359ac34012337ab49ec909fe23500436ae38a978f5085d795c9bc42cd14c47e4cfbd4eb3f8032f1e58a5f92903bb600e3600ab2d095a2ecaba80635869e6a3f04a8fd34a118a72bcad4ccb606d981a360000000490404842d4af404356b141de81539329b6a3051e3bd3002752539ef6555d58e5f137268034cc0795ab58f052843510ba789396a42148564e55da4a726b5796ee82e5bc276478de0d4d7f0e5140b63aaf95b5217203e043bb191e05409daf60400743ba40b00000000000000000000000000000000000000000000000000000000e40b540200000000000000000000000000000000000000000000000000000074809b5b1bf1e8172423405702ff19d6fed93f4fab33fd852dcf3428ae683e7b023e1160638901000000e54eb11bed86e57e6888a70ef4d2705034b42fcc7dd4c1314a49f59dc004e497', 'hex'), + sectionHashes: [ + Buffer.from('145e646087e95106c9df43aa377ae656a3e516ec20d87bdfa8afe51a857a845a', 'hex'), + Buffer.from('52e9300343ff739df098ae4b4d5a852c0aad4c43bb29f157bb2a8e48f76743ac', 'hex'), + Buffer.from('74809b5b1bf1e8172423405702ff19d6fed93f4fab33fd852dcf3428ae683e7b', 'hex'), + ], + headerHash: Buffer.from('990e551f88a4ab9eb5b09f7ec9e0dfef5f7ec3ced9d2430e6be9b16806720827', 'hex'), + }, + { + name: 'update_vp', + blob: Buffer.from('1e0000006532652d746573742e3733653533353766356565333838373363336239660023000000323032332d30372d31375430393a31343a34342e3534393432383436352b30303a30309fd85611c72fa41189ea37d8ee6cdec80bd75fcca2993619572426cbf7b134f2c829e5fa0c7eb341bd2dd3a8f9bc4ae5bd184f87f88002390919fbee0c7c1cdf0100e1f50500000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e60023e801289fcc5c551380b8d216f34d3b67d2a0d3e7a83b7f76fbf20b1bbef50501000000000000000000000000000000000000000000000000000000000000000000000000000000000300000001c575216389010000002451515c3a6fa063eb25d90ef15268dfbdd37133521c34fb58b68b1c4b61918000c5752163890100003500000000f564057b25c14f8f3ec4adc45153be688cd31a4b835a7f04d1df264515ac237d813a9cc1d7065a0e8e901395c4494f75bb771fa302c57521638901000000087de3038482e3cc0fd53c2bf5dd988b6a55a5507c271403a48b9456162b7cc7', 'hex'), + sectionHashes: [ + Buffer.from('9fd85611c72fa41189ea37d8ee6cdec80bd75fcca2993619572426cbf7b134f2', 'hex'), + Buffer.from('c829e5fa0c7eb341bd2dd3a8f9bc4ae5bd184f87f88002390919fbee0c7c1cdf', 'hex'), + Buffer.from('835a7f04d1df264515ac237d813a9cc1d7065a0e8e901395c4494f75bb771fa3', 'hex'), + ], + headerHash: Buffer.from('092330b2e76bde0859970edabd74d307370a578ff70e2cfc0b6a45abe35c2669', 'hex'), }, ] -jest.setTimeout(60000) +jest.setTimeout(120000) describe.each(models)('Transactions', function (m) { test.concurrent.each(TEST_DATA)('Sign transaction', async function (data) { @@ -55,22 +121,23 @@ describe.each(models)('Transactions', function (m) { expect(resp.returnCode).toEqual(0x9000) expect(resp.errorMessage).toEqual('No errors') - expect(resp).toHaveProperty('headerSignature') - expect(resp).toHaveProperty('dataSignature') - expect(resp).toHaveProperty('codeSignature') - - // Verify that hashes and pubkeys match - expect(resp.headerSignature.hash).toEqual(data.headerHash); - expect(resp.dataSignature.hash).toEqual(data.dataHash); - expect(resp.codeSignature.hash).toEqual(data.codeHash); - expect(resp.headerSignature.pubkey).toEqual(resp_addr.publicKey); - - // Verify signatures - const headerSig = ed25519.verify( resp.headerSignature.signature, data.headerHash, resp_addr.publicKey); - const dataSig = ed25519.verify( resp.dataSignature.signature, data.dataHash, resp_addr.publicKey); - const codeSig = ed25519.verify( resp.codeSignature.signature, data.codeHash, resp_addr.publicKey); - expect(headerSig && dataSig && codeSig).toEqual(true) + expect(resp).toHaveProperty('signature') + + const signature = resp.signature ?? new Signature() + expect(signature.pubkey).toEqual(resp_addr.publicKey); + + // Verify raw signature + const unsignedRawSigHash = hashSignatureSec(signature.pubkey, signature.raw_salt, data.sectionHashes, null, null) + const rawSig = ed25519.verify(signature.raw_signature.subarray(1), unsignedRawSigHash, signature.pubkey.subarray(1)) + + // Verify wrapper signature + const prefix = new Uint8Array([0x03]); + const rawHash: Buffer = hashSignatureSec(signature.pubkey, signature.raw_salt, data.sectionHashes, signature.raw_signature, prefix); + const tmpHashes: Buffer[] = data.sectionHashes.concat([rawHash, data.headerHash]); + const unsignedWrapperSigHash = hashSignatureSec(signature.pubkey, signature.wrapper_salt, tmpHashes, null, null); + const wrapperSig = ed25519.verify(signature.wrapper_signature.subarray(1), unsignedWrapperSigHash, resp_addr.publicKey.subarray(1)); + expect(wrapperSig && rawSig).toEqual(true) } finally { await sim.close() }