diff --git a/app/Makefile b/app/Makefile index 1465aa1d..218fe8b7 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 := 2850 +NANOS_STACK_SIZE := 2640 include $(CURDIR)/../deps/ledger-zxlib/makefiles/Makefile.devices $(info TARGET_NAME = [$(TARGET_NAME)]) diff --git a/app/src/common/actions.h b/app/src/common/actions.h index fc4240a4..92468a7f 100644 --- a/app/src/common/actions.h +++ b/app/src/common/actions.h @@ -65,7 +65,7 @@ __Z_INLINE void app_sign() { set_code(G_io_apdu_buffer, 0, APDU_CODE_SIGN_VERIFY_ERROR); io_exchange(CHANNEL_APDU | IO_RETURN_AFTER_TX, 2); } else { - const uint16_t responseLen = PK_LEN_25519_PLUS_TAG + 2 * SALT_LEN + 2 * SIG_LEN_25519_PLUS_TAG; + const uint16_t responseLen = PK_LEN_25519_PLUS_TAG + 2 * SALT_LEN + 2 * SIG_LEN_25519_PLUS_TAG + 2 + 10; 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 53b17a17..0a2f84bb 100644 --- a/app/src/crypto.c +++ b/app/src/crypto.c @@ -28,7 +28,7 @@ #define SIGN_PREFIX_SIZE 11u #define SIGN_PREHASH_SIZE (SIGN_PREFIX_SIZE + CX_SHA256_SIZE) -#define MAX_SIGNATURE_HASHES 6 +#define MAX_SIGNATURE_HASHES 10 static zxerr_t crypto_extractPublicKey_ed25519(uint8_t *pubKey, uint16_t pubKeyLen) { if (pubKey == NULL || pubKeyLen < PK_LEN_25519) { @@ -154,7 +154,21 @@ zxerr_t crypto_fillAddress(signing_key_type_e addressKind, uint8_t *buffer, uint } -static zxerr_t crypto_hashHeader(const header_t *header, uint8_t *output, uint32_t outputLen) { +static zxerr_t crypto_hashFeeHeader(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_sha256_t sha256 = {0}; + cx_sha256_init(&sha256); + const uint8_t discriminant = 0x07; + cx_sha256_update(&sha256, &discriminant, sizeof(discriminant)); + cx_sha256_update(&sha256, header->ext_bytes.ptr, header->ext_bytes.len); + cx_sha256_final(&sha256, output); + return zxerr_ok; +} + + +static zxerr_t crypto_hashRawHeader(const header_t *header, uint8_t *output, uint32_t outputLen) { if (header == NULL || output == NULL || outputLen < CX_SHA256_SIZE) { return zxerr_invalid_crypto_settings; } @@ -163,10 +177,13 @@ static zxerr_t crypto_hashHeader(const header_t *header, uint8_t *output, uint32 const uint8_t discriminant = 0x07; cx_sha256_update(&sha256, &discriminant, sizeof(discriminant)); cx_sha256_update(&sha256, header->bytes.ptr, header->bytes.len); + const uint8_t header_discriminant = 0x00; + cx_sha256_update(&sha256, &header_discriminant, sizeof(header_discriminant)); cx_sha256_final(&sha256, output); return zxerr_ok; } + 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; @@ -177,14 +194,20 @@ zxerr_t crypto_hashSigSection(const signature_section_t *signature_section, cons 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_update(&sha256, (uint8_t*) &signature_section->signerDiscriminant, 1); + switch (signature_section->signerDiscriminant) { + case PubKeys: + cx_sha256_update(&sha256, (uint8_t*) &signature_section->pubKeysLen, 4); + cx_sha256_update(&sha256, signature_section->pubKeys.ptr, PK_LEN_25519_PLUS_TAG * signature_section->pubKeysLen); + break; + case Address: + cx_sha256_update(&sha256, (uint8_t*) &signature_section->address.ptr, signature_section->address.len); + break; } + cx_sha256_update(&sha256, (const uint8_t*) &signature_section->signaturesLen, 4); + cx_sha256_update(&sha256, signature_section->indexedSignatures.ptr, (1+SIG_LEN_25519_PLUS_TAG) * signature_section->signaturesLen); cx_sha256_final(&sha256, output); return zxerr_ok; } @@ -198,24 +221,29 @@ static zxerr_t crypto_addTxnHashes(const parser_tx_t *txObj, concatenated_hashes switch (txObj->typeTx) { case InitAccount: MEMCPY(hashes->hashes.ptr + hashes->hashesLen * HASH_LEN, txObj->initAccount.vp_type_sechash.ptr, HASH_LEN); + hashes->indices.ptr[hashes->hashesLen] = txObj->initAccount.vp_type_secidx; hashes->hashesLen++; break; case InitValidator: MEMCPY(hashes->hashes.ptr + hashes->hashesLen * HASH_LEN, txObj->initValidator.vp_type_sechash.ptr, HASH_LEN); + hashes->indices.ptr[hashes->hashesLen] = txObj->initValidator.vp_type_secidx; hashes->hashesLen++; break; case UpdateVP: MEMCPY(hashes->hashes.ptr + hashes->hashesLen * HASH_LEN, txObj->updateVp.vp_type_sechash.ptr, HASH_LEN); + hashes->indices.ptr[hashes->hashesLen] = txObj->updateVp.vp_type_secidx; hashes->hashesLen++; break; case InitProposal: MEMCPY(hashes->hashes.ptr + hashes->hashesLen * HASH_LEN, txObj->initProposal.content_sechash.ptr, HASH_LEN); + hashes->indices.ptr[hashes->hashesLen] = txObj->initProposal.content_secidx; 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->indices.ptr[hashes->hashesLen] = txObj->initProposal.proposal_code_secidx; hashes->hashesLen++; } break; @@ -230,7 +258,7 @@ static zxerr_t crypto_addTxnHashes(const parser_tx_t *txObj, concatenated_hashes 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; + const uint16_t minimumBufferSize = PK_LEN_25519_PLUS_TAG + 2 * SALT_LEN + 2 * SIG_LEN_25519_PLUS_TAG + 2 + 10; if (txObj ==NULL || output == NULL || outputLen < minimumBufferSize) { return zxerr_unknown; } @@ -240,20 +268,20 @@ zxerr_t crypto_sign(const parser_tx_t *txObj, uint8_t *output, uint16_t outputLe // Hashes: code, data, (initAcc | initVali | updateVP = 1 / initProp = 2), raw_signature, header ---> MaxHashes = 6 uint8_t hashes_buffer[MAX_SIGNATURE_HASHES * HASH_LEN] = {0}; + uint8_t indices_buffer[MAX_SIGNATURE_HASHES] = {0}; concatenated_hashes_t section_hashes = { .hashes.ptr = hashes_buffer, .hashes.len = sizeof(hashes_buffer), + .indices.ptr = indices_buffer, + .indices.len = sizeof(indices_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; + uint8_t *rawHeaderHash = section_hashes.hashes.ptr; + section_hashes.indices.ptr[0] = 255; + // Concatenate the raw header hash + CHECK_ZXERR(crypto_hashRawHeader(&txObj->transaction.header, rawHeaderHash, HASH_LEN)) + section_hashes.hashesLen = 1; CHECK_ZXERR(crypto_addTxnHashes(txObj, §ion_hashes)) @@ -265,9 +293,11 @@ zxerr_t crypto_sign(const parser_tx_t *txObj, uint8_t *output, uint16_t outputLe signature_section_t signature_section = { .salt = salt, .hashes = section_hashes, - .pubKey = pubkey, - .has_signature = false, - .signature = {NULL, 0}, + .signerDiscriminant = PubKeys, + .pubKeysLen = 0, + .pubKeys = pubkey, + .signaturesLen = 0, + .indexedSignatures = {NULL, 0}, }; // Hash the unsigned signature section @@ -275,29 +305,75 @@ zxerr_t crypto_sign(const parser_tx_t *txObj, uint8_t *output, uint16_t outputLe CHECK_ZXERR(crypto_hashSigSection(&signature_section, NULL, 0, raw_signature_hash, HASH_LEN)) // Sign over the hash of the unsigned signature section + uint8_t indexed_signatures_buffer[1+SIG_LEN_25519_PLUS_TAG] = {0}; + CHECK_ZXERR(crypto_sign_ed25519(indexed_signatures_buffer + 2, ED25519_SIGNATURE_SIZE, raw_signature_hash, HASH_LEN)) uint8_t *raw = salt_buffer + SALT_LEN; - CHECK_ZXERR(crypto_sign_ed25519(raw + 1, ED25519_SIGNATURE_SIZE, raw_signature_hash, HASH_LEN)) - + MEMCPY(raw, indexed_signatures_buffer+1, SIG_LEN_25519_PLUS_TAG); + uint8_t raw_indices_len = section_hashes.hashesLen; + uint8_t raw_indices_buffer[MAX_SIGNATURE_HASHES] = {0}; + MEMCPY(raw_indices_buffer, section_hashes.indices.ptr, section_hashes.hashesLen); + // ---------------------------------------------------------------------- // 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; + signature_section.signaturesLen = 1; + signature_section.indexedSignatures.ptr = indexed_signatures_buffer; + signature_section.indexedSignatures.len = 1+SIG_LEN_25519_PLUS_TAG; + signature_section.pubKeysLen = 1; // 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.indices.ptr[section_hashes.hashesLen] = txObj->transaction.sections.sectionLen+1+0 /*signature_raw*/; 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++; + uint8_t *header_hash = section_hashes.hashes.ptr; + CHECK_ZXERR(crypto_hashFeeHeader(&txObj->transaction.header, header_hash, HASH_LEN)) + section_hashes.indices.ptr[0] = 0; + + // Hash the code and data sections + const section_t *data = &txObj->transaction.sections.data; + const section_t *code = &txObj->transaction.sections.code; + uint8_t *codeHash = section_hashes.hashes.ptr + (section_hashes.hashesLen * HASH_LEN); + uint8_t *dataHash = codeHash + HASH_LEN; + section_hashes.indices.ptr[section_hashes.hashesLen] = code->idx; + section_hashes.indices.ptr[section_hashes.hashesLen+1] = data->idx; + // 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; + signature_section.hashes.hashesLen += 2; + + // Hash the eligible signature sections + for (unsigned int i = 0; i < txObj->transaction.sections.signaturesLen; i++) { + const signature_section_t *prev_sig = &txObj->transaction.sections.signatures[i]; + unsigned int j; + // Ensure that we recognize each hash that was signed over + for (j = 0; j < prev_sig->hashes.hashesLen; j++) { + unsigned int k; + // Check if we know the hash that was signed over + for (k = 0; k < signature_section.hashes.hashesLen; k++) { + if (!memcmp(prev_sig->hashes.hashes.ptr, signature_section.hashes.hashes.ptr, HASH_LEN)) { + break; + } + } + // If loop counter makes it to end, then this hash was not recognized + if (k == signature_section.hashes.hashesLen) break; + } + // If loop counter doesn't make it to end, then a hash was not recognized + if (j != prev_sig->hashes.hashesLen) continue; + // We sign over a signature if it signs over hashes that we recognize + uint8_t *prev_sig_hash = section_hashes.hashes.ptr + (section_hashes.hashesLen * HASH_LEN); + CHECK_ZXERR(crypto_hashSigSection(prev_sig, &sig_sec_prefix, 1, prev_sig_hash, HASH_LEN)) + section_hashes.indices.ptr[section_hashes.hashesLen] = prev_sig->idx; + section_hashes.hashesLen++; + signature_section.hashes.hashesLen++; + } - signature_section.has_signature = false; + signature_section.signaturesLen = 0; + signature_section.pubKeysLen = 0; // 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))) @@ -306,5 +382,11 @@ zxerr_t crypto_sign(const parser_tx_t *txObj, uint8_t *output, uint16_t outputLe 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))) + uint8_t *indices = wrapper + SIG_LEN_25519_PLUS_TAG; + indices[0] = raw_indices_len; + MEMCPY(indices + 1, raw_indices_buffer, raw_indices_len); + indices += 1 + raw_indices_len; + indices[0] = section_hashes.hashesLen; + MEMCPY(indices + 1, section_hashes.indices.ptr, section_hashes.hashesLen); return zxerr_ok; } diff --git a/app/src/parser_impl.c b/app/src/parser_impl.c index a87ff733..3b4d4ed7 100644 --- a/app/src/parser_impl.c +++ b/app/src/parser_impl.c @@ -54,19 +54,27 @@ parser_error_t getNumItems(const parser_context_t *ctx, uint8_t *numItems) { break; case InitAccount: - *numItems = (app_mode_expert() ? INIT_ACCOUNT_EXPERT_PARAMS : INIT_ACCOUNT_NORMAL_PARAMS); + { + const uint32_t pubkeys_num = ctx->tx_obj->initAccount.number_of_pubkeys; + const uint8_t expert_params_num = (uint8_t)(INIT_ACCOUNT_EXPERT_PARAMS + pubkeys_num); + const uint8_t normal_params_num = (uint8_t)(INIT_ACCOUNT_NORMAL_PARAMS + pubkeys_num); + *numItems = (app_mode_expert() ? expert_params_num : normal_params_num); break; + } + case InitProposal: *numItems = (app_mode_expert() ? INIT_PROPOSAL_EXPERT_PARAMS : INIT_PROPOSAL_NORMAL_PARAMS) + ctx->tx_obj->initProposal.has_id; break; + case VoteProposal: { - const uint8_t has_delegators = (ctx->tx_obj->voteProposal.number_of_delegations == 0)? 0 : 1; - const uint8_t num_councils = (ctx->tx_obj->voteProposal.number_of_councils > 0) ? (ctx->tx_obj->voteProposal.number_of_councils - 1) : 0; - //uint8_t has_yay_vote_details = ((ctx->tx_obj->voteProposal.vote_type_is_council) || (ctx->tx_obj->voteProposal.vote_type_is_eth_bridge)) ? 1 : 0; - *numItems = (app_mode_expert() ? VOTE_PROPOSAL_EXPERT_PARAMS : VOTE_PROPOSAL_NORMAL_PARAMS) + has_delegators + num_councils; + const uint32_t delegations_num = ctx->tx_obj->voteProposal.number_of_delegations; + const uint8_t normal_params_num = (uint8_t)(VOTE_PROPOSAL_NORMAL_PARAMS + delegations_num); + const uint8_t expert_params_num = (uint8_t)(VOTE_PROPOSAL_EXPERT_PARAMS + delegations_num); + *numItems = (app_mode_expert() ? expert_params_num : normal_params_num); break; } + case RevealPubkey: *numItems = (app_mode_expert() ? REVEAL_PUBKEY_EXPERT_PARAMS : REVEAL_PUBKEY_NORMAL_PARAMS); break; @@ -80,11 +88,32 @@ parser_error_t getNumItems(const parser_context_t *ctx, uint8_t *numItems) { break; case InitValidator: - *numItems = (app_mode_expert() ? INIT_VALIDATOR_EXPERT_PARAMS : INIT_VALIDATOR_NORMAL_PARAMS); + { + const uint32_t account_keys_num = ctx->tx_obj->initValidator.number_of_account_keys; + const uint8_t normal_params_num = (uint8_t)(INIT_VALIDATOR_NORMAL_PARAMS + account_keys_num); + const uint8_t expert_params_num = (uint8_t)(INIT_VALIDATOR_EXPERT_PARAMS + account_keys_num); + *numItems = (app_mode_expert() ? expert_params_num : normal_params_num); break; + } case UpdateVP: - *numItems = (app_mode_expert() ? UPDATE_VP_EXPERT_PARAMS : UPDATE_VP_NORMAL_PARAMS); + { + const uint32_t pubkeys_num = ctx->tx_obj->updateVp.number_of_pubkeys; + const uint8_t has_threshold = ctx->tx_obj->updateVp.has_threshold; + const uint8_t normal_params_num = + (uint8_t)(UPDATE_VP_NORMAL_PARAMS + pubkeys_num + has_threshold); + const uint8_t expert_params_num = + (uint8_t)(UPDATE_VP_EXPERT_PARAMS + pubkeys_num + has_threshold); + *numItems = (app_mode_expert() ? expert_params_num : normal_params_num); + break; + } + + case UnjailValidator: + *numItems = (app_mode_expert() ? UNJAIL_VALIDATOR_EXPERT_PARAMS : UNJAIL_VALIDATOR_NORMAL_PARAMS); + break; + + case IBC: + *numItems = (app_mode_expert() ? IBC_EXPERT_PARAMS : IBC_NORMAL_PARAMS); break; default: diff --git a/app/src/parser_impl_common.c b/app/src/parser_impl_common.c index 2560d1f4..293a48ab 100644 --- a/app/src/parser_impl_common.c +++ b/app/src/parser_impl_common.c @@ -19,6 +19,14 @@ #define SIGN_MASK 0x80000000 #define SCALE_SHIFT 16 +parser_error_t peekByte(const parser_context_t *ctx, uint8_t *byte) { + if (byte == NULL || ctx->offset >= ctx->bufferLen) { + return parser_unexpected_error; + } + *byte = *(ctx->buffer + ctx->offset); + return parser_ok; +} + parser_error_t readByte(parser_context_t *ctx, uint8_t *byte) { if (byte == NULL || ctx->offset >= ctx->bufferLen) { return parser_unexpected_error; @@ -113,7 +121,6 @@ parser_error_t readDecimal(parser_context_t *ctx, serialized_decimal *value) { return parser_ok; } - parser_error_t readBytes(parser_context_t *ctx, const uint8_t **output, uint16_t outputLen) { if (ctx->offset + outputLen > ctx->bufferLen) { return parser_unexpected_buffer_end; @@ -124,6 +131,26 @@ parser_error_t readBytes(parser_context_t *ctx, const uint8_t **output, uint16_t return parser_ok; } +parser_error_t readBytesBuf(parser_context_t *ctx, bytes_t *buf, uint16_t num_bytes) { + if (ctx->offset + num_bytes > ctx->bufferLen) { + return parser_unexpected_buffer_end; + } + + buf->ptr = ctx->buffer + ctx->offset; + buf->len = num_bytes; + ctx->offset += num_bytes; + return parser_ok; +} + +parser_error_t appendBytesBuf(parser_context_t *ctx, bytes_t *buf, uint16_t num_bytes) { + if (ctx->offset + num_bytes > ctx->bufferLen) { + return parser_unexpected_buffer_end; + } + buf->len += num_bytes; + ctx->offset += num_bytes; + return parser_ok; +} + parser_error_t readFieldSize(parser_context_t *ctx, uint32_t *size) { uint8_t consumed = 0; uint64_t tmpSize = 0; diff --git a/app/src/parser_impl_common.h b/app/src/parser_impl_common.h index 80764153..2d6b72f5 100644 --- a/app/src/parser_impl_common.h +++ b/app/src/parser_impl_common.h @@ -24,6 +24,9 @@ extern "C" { #endif +#define ADDRESS_LEN_BYTES 21 +#define PUBKEY_BYTES_LEN 33 + #define BOND_NORMAL_PARAMS 3 #define BOND_EXPERT_PARAMS 8 @@ -36,11 +39,11 @@ extern "C" { #define INIT_PROPOSAL_NORMAL_PARAMS 7 #define INIT_PROPOSAL_EXPERT_PARAMS 12 -#define VOTE_PROPOSAL_NORMAL_PARAMS 4 -#define VOTE_PROPOSAL_EXPERT_PARAMS 9 +#define VOTE_PROPOSAL_NORMAL_PARAMS 4 +#define VOTE_PROPOSAL_EXPERT_PARAMS 9 -#define INIT_VALIDATOR_NORMAL_PARAMS 8 -#define INIT_VALIDATOR_EXPERT_PARAMS 13 +#define INIT_VALIDATOR_NORMAL_PARAMS 10 +#define INIT_VALIDATOR_EXPERT_PARAMS 15 #define REVEAL_PUBKEY_NORMAL_PARAMS 2 #define REVEAL_PUBKEY_EXPERT_PARAMS 7 @@ -57,6 +60,15 @@ extern "C" { #define COMMISSION_CHANGE_NORMAL_PARAMS 3 #define COMMISSION_CHANGE_EXPERT_PARAMS 8 +#define IBC_NORMAL_PARAMS 8 +#define IBC_EXPERT_PARAMS 13 + +#define UNJAIL_VALIDATOR_NORMAL_PARAMS 2 +#define UNJAIL_VALIDATOR_EXPERT_PARAMS 7 + +#define INIT_BUF(__BUF) { (*__BUF).len = 0; } + +parser_error_t peekByte(const parser_context_t *ctx, uint8_t *byte); parser_error_t readByte(parser_context_t *ctx, uint8_t *byte); parser_error_t readBytes(parser_context_t *ctx, const uint8_t **output, uint16_t outputLen); parser_error_t readUint16(parser_context_t *ctx, uint16_t *value); @@ -67,6 +79,9 @@ 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); +parser_error_t readBytesBuf(parser_context_t *ctx, bytes_t *buf, uint16_t num_bytes); +parser_error_t appendBytesBuf(parser_context_t *ctx, bytes_t *buf, uint16_t num_bytes); + parser_error_t readToken(const bytes_t *token, const char **symbol); parser_error_t readAddress(bytes_t pubkeyHash, char *address, uint16_t addressLen); parser_error_t readVote(bytes_t *vote, yay_vote_type_e type, char *strVote, uint16_t strVoteLen); @@ -75,7 +90,9 @@ parser_error_t readHeader(parser_context_t *ctx, parser_tx_t *v); parser_error_t readSections(parser_context_t *ctx, parser_tx_t *v); parser_error_t validateTransactionParams(parser_tx_t *txObj); +#if 0 parser_error_t readCouncils(parser_context_t *ctx, uint32_t numberOfCouncils, council_t *council); +#endif #ifdef __cplusplus } diff --git a/app/src/parser_impl_txn.c b/app/src/parser_impl_txn.c index 1f69992e..2f6e2e9d 100644 --- a/app/src/parser_impl_txn.c +++ b/app/src/parser_impl_txn.c @@ -32,44 +32,50 @@ #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}, + {{0xbe, 0xc1, 0xef, 0xd3, 0x7d, 0x88, 0x87, 0x6b, 0xe4, 0x17, 0x6d, 0x1a, 0xfc, 0x0b, 0x6f, 0xa7, 0x84, 0x90, 0x1e, 0xfe, 0x18, 0xcf, 0x9e, 0xc3, 0x02, 0x93, 0x31, 0x3b, 0xe8, 0x55, 0xd8, 0x14}, Bond}, - {{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}, + {{0x47, 0x30, 0xc6, 0xc3, 0x02, 0xf0, 0xa5, 0x72, 0xc0, 0x9d, 0x2b, 0x67, 0x1a, 0xe4, 0xc4, 0x0d, 0xee, 0xe8, 0xcf, 0x46, 0xfc, 0x16, 0x8c, 0x8e, 0xba, 0x57, 0xfa, 0xde, 0xf8, 0x8b, 0x73, 0xde}, 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}, + {{0xf0, 0x06, 0x11, 0x57, 0x37, 0x74, 0x54, 0xc3, 0x14, 0xad, 0x7c, 0x9e, 0x38, 0x55, 0x22, 0x1d, 0x49, 0xda, 0x74, 0x25, 0xff, 0xef, 0x6d, 0xb6, 0xb7, 0xd2, 0x8f, 0x52, 0x42, 0x42, 0x32, 0x81}, 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}, + {{0x6f, 0x63, 0xdc, 0x0e, 0xe5, 0x34, 0xb7, 0x4c, 0xec, 0x72, 0x8b, 0x9f, 0x76, 0xda, 0xe3, 0x83, 0x38, 0x8f, 0x73, 0x06, 0xdf, 0x66, 0xb8, 0x27, 0xfa, 0x94, 0x0e, 0x21, 0x0a, 0x7c, 0x11, 0xca}, 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}, + {{0x92, 0xed, 0x2a, 0x56, 0x80, 0x21, 0xd8, 0xc0, 0x15, 0xe2, 0x75, 0xcc, 0x39, 0x93, 0x67, 0x50, 0xe1, 0x0b, 0x51, 0xa2, 0xee, 0x95, 0x0f, 0x21, 0x3f, 0xb2, 0x1a, 0x76, 0xcc, 0xc7, 0x21, 0x47}, 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}, + {{0xb3, 0xb4, 0x81, 0x66, 0x97, 0x6e, 0x02, 0x59, 0xdb, 0x4e, 0xab, 0x1e, 0x72, 0xac, 0xe4, 0xc9, 0x23, 0x68, 0xb3, 0x4f, 0xd5, 0xa0, 0x6f, 0x7c, 0xcd, 0x41, 0xb4, 0xae, 0x4c, 0x88, 0xca, 0x1d}, 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}, + {{0x15, 0x2e, 0xfe, 0xbe, 0x39, 0x54, 0xac, 0x8f, 0x2d, 0x57, 0x60, 0xec, 0x18, 0xfa, 0xe1, 0x19, 0x7c, 0x9e, 0x02, 0xa1, 0x61, 0x49, 0x13, 0x75, 0x51, 0x6c, 0xfc, 0x40, 0xcb, 0xa0, 0xa1, 0xe8}, 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}, + {{0x11, 0x1a, 0x5b, 0x61, 0xd8, 0x39, 0xf5, 0xb9, 0x74, 0xf7, 0x74, 0x76, 0x2e, 0x74, 0xc9, 0x8d, 0xb8, 0xfc, 0x38, 0x9d, 0x27, 0x95, 0xcb, 0xd6, 0x1a, 0x2c, 0x44, 0xe5, 0xab, 0x46, 0xc5, 0xa1}, 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}, + {{0xc3, 0xe2, 0x5b, 0x73, 0xb9, 0x4a, 0x22, 0x6c, 0x3e, 0x9a, 0x59, 0x90, 0xfb, 0x91, 0x86, 0x4c, 0x15, 0x15, 0xcf, 0x2b, 0xcb, 0x8e, 0x28, 0xe4, 0xb3, 0xe4, 0x03, 0xc4, 0x1a, 0x37, 0x09, 0x32}, 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}, + {{0x64, 0x93, 0x53, 0xad, 0x4c, 0x9b, 0x5a, 0xce, 0xfe, 0x52, 0xb5, 0xe6, 0x7e, 0xad, 0xa7, 0x8b, 0x6f, 0x83, 0xe2, 0x06, 0xed, 0x71, 0xdc, 0x93, 0x5d, 0xde, 0xc7, 0x04, 0x67, 0xc3, 0x06, 0x3b}, 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}, + {{0x6c, 0xf3, 0x29, 0x12, 0x02, 0x04, 0xbf, 0x10, 0xb2, 0x17, 0xb8, 0x11, 0x3f, 0x93, 0x01, 0x1f, 0xc2, 0xea, 0x27, 0xa0, 0x9c, 0x02, 0x46, 0xa8, 0x66, 0x71, 0x0f, 0xa9, 0xf8, 0xb6, 0x8f, 0x79}, CommissionChange}, + + {{0x0a, 0x76, 0x24, 0xe9, 0x88, 0x4b, 0x68, 0x1e, 0x0a, 0xf8, 0x70, 0x89, 0x61, 0xb4, 0xe0, 0xc9, 0x8a, 0x02, 0x5e, 0xf5, 0x71, 0x67, 0x6c, 0xfb, 0xb4, 0x08, 0xb7, 0x7a, 0x31, 0x95, 0xcd, 0x15}, + UnjailValidator}, + + {{0x58, 0xbd, 0x56, 0x8d, 0xfa, 0x94, 0x97, 0x3c, 0x79, 0x8b, 0x38, 0x68, 0x32, 0x61, 0x97, 0xfa, 0x5d, 0x86, 0x87, 0xa6, 0xf6, 0xae, 0xe7, 0x7c, 0x39, 0x5e, 0xaa, 0xa1, 0xd0, 0x1e, 0x2c, 0x19}, + IBC}, }; static const uint32_t allowed_txn_len = sizeof(allowed_txn) / sizeof(allowed_txn[0]); // Update VP types static const vp_types_t vp_user = { - {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}, + {0x3b, 0x9e, 0x4d, 0x77, 0x7c, 0x94, 0x20, 0xbb, 0xbf, 0x73, 0x0e, 0x15, 0x49, 0x25, 0x2f, 0x1a, 0x09, 0x1b, 0xc0, 0x15, 0x35, 0xeb, 0x1f, 0x37, 0xe7, 0xa7, 0xe3, 0xd1, 0xba, 0xce, 0x75, 0x76}, "User" }; static const char *unknown_vp = "Unknown VP hash"; @@ -187,13 +193,27 @@ static parser_error_t readInitValidatorTxn(bytes_t *data, const section_t *extra } parser_context_t ctx = {.buffer = data->ptr, .bufferLen = data->len, .offset = 0, .tx_obj = NULL}; - 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.number_of_account_keys = 0; + CHECK_ERROR(readUint32(&ctx, &v->initValidator.number_of_account_keys)) + v->initValidator.account_keys.len = 0; + if (v->initValidator.number_of_account_keys > 0) { + const uint16_t account_keys_bytes_len = PUBKEY_BYTES_LEN * v->initValidator.number_of_account_keys; + v->initValidator.account_keys.len = account_keys_bytes_len; + CHECK_ERROR(readBytes(&ctx, &v->initValidator.account_keys.ptr, account_keys_bytes_len)) + } + + CHECK_ERROR(readByte(&ctx, &v->initValidator.threshold)) - v->initValidator.consensus_key.len = PK_LEN_25519_PLUS_TAG; + v->initValidator.consensus_key.len = PUBKEY_BYTES_LEN; CHECK_ERROR(readBytes(&ctx, &v->initValidator.consensus_key.ptr, v->initValidator.consensus_key.len)) - v->initValidator.protocol_key.len = PK_LEN_25519_PLUS_TAG; + v->initValidator.eth_cold_key.len = PUBKEY_BYTES_LEN; + CHECK_ERROR(readBytes(&ctx, &v->initValidator.eth_cold_key.ptr, v->initValidator.eth_cold_key.len)) + + v->initValidator.eth_hot_key.len = PUBKEY_BYTES_LEN; + CHECK_ERROR(readBytes(&ctx, &v->initValidator.eth_hot_key.ptr, v->initValidator.eth_hot_key.len)) + + v->initValidator.protocol_key.len = PUBKEY_BYTES_LEN; 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? @@ -252,14 +272,24 @@ static parser_error_t readInitAccountTxn(const bytes_t *data,const section_t *ex return parser_unexpected_value; } parser_context_t ctx = {.buffer = data->ptr, .bufferLen = data->len, .offset = 0, .tx_obj = NULL}; - // Pubkey - v->initAccount.pubkey.len = PK_LEN_25519_PLUS_TAG; - CHECK_ERROR(readBytes(&ctx, &v->initAccount.pubkey.ptr, v->initAccount.pubkey.len)) + + // Pubkeys + v->initAccount.number_of_pubkeys = 0; + CHECK_ERROR(readUint32(&ctx, &v->initAccount.number_of_pubkeys)) + v->initAccount.pubkeys.len = 0; + if (v->initAccount.number_of_pubkeys > 0) { + const uint32_t pubkeys_len = PUBKEY_BYTES_LEN * v->initAccount.number_of_pubkeys; + v->initAccount.pubkeys.len = pubkeys_len; + CHECK_ERROR(readBytes(&ctx, &v->initAccount.pubkeys.ptr, pubkeys_len)) + } // VP code hash v->initAccount.vp_type_sechash.len = HASH_LEN; CHECK_ERROR(readBytes(&ctx, &v->initAccount.vp_type_sechash.ptr, v->initAccount.vp_type_sechash.len)) + // Threshold + CHECK_ERROR(readByte(&ctx, &v->initAccount.threshold)) + bool found_vp_code = false; // Load the linked to data from the extra data sections for (uint32_t i = 0; i < extraDataLen; i++) { @@ -295,6 +325,28 @@ static parser_error_t readInitAccountTxn(const bytes_t *data,const section_t *ex } else if (ctx.offset != ctx.bufferLen) { return parser_unexpected_characters; } + return parser_ok; +} + +static parser_error_t readPGFPaymentAction(parser_context_t *ctx, bytes_t *buf, const bool first) { + uint8_t tag = 0; + CHECK_ERROR(peekByte(ctx, &tag)) + uint32_t action_len = 1 + ADDRESS_LEN_BYTES + 32; + switch (tag) { + case 0: // continuous payment + action_len += 1; + break; + case 1: // retro payment + // do nothing + break; + default: + return parser_unexpected_value; + } + if (first) { + CHECK_ERROR(readBytesBuf(ctx, buf, action_len)) + } else { + CHECK_ERROR(appendBytesBuf(ctx, buf, action_len)) + } return parser_ok; } @@ -307,31 +359,55 @@ static parser_error_t readInitProposalTxn(const bytes_t *data, const section_t * // Check if the proposal has an ID CHECK_ERROR(readByte(&ctx, &v->initProposal.has_id)) - if (v->initProposal.has_id){ - CHECK_ERROR(readUint32(&ctx, &v->initProposal.proposal_id.len)); - CHECK_ERROR(readBytes(&ctx, &v->initProposal.proposal_id.ptr, v->initProposal.proposal_id.len)) + if (v->initProposal.has_id) { + CHECK_ERROR(readUint64(&ctx, &v->initProposal.proposal_id)); } // 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)) - + CHECK_ERROR(readBytesBuf(&ctx, &v->initProposal.content_sechash, HASH_LEN)) + // Author, should be of length ADDRESS_LEN_BYTES - v->initProposal.author.len = ADDRESS_LEN_BYTES; - CHECK_ERROR(readBytes(&ctx, &v->initProposal.author.ptr, v->initProposal.author.len)) + CHECK_ERROR(readBytesBuf(&ctx, &v->initProposal.author, ADDRESS_LEN_BYTES)) // Proposal type - v->initProposal.has_proposal_code = 0; 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 (v->initProposal.proposal_type == 0) { - CHECK_ERROR(readByte(&ctx, &v->initProposal.has_proposal_code)) - if (v->initProposal.has_proposal_code){ - v->initProposal.proposal_code_sechash.len = HASH_LEN; - CHECK_ERROR(readBytes(&ctx, &v->initProposal.proposal_code_sechash.ptr, v->initProposal.proposal_code_sechash.len)) + + v->initProposal.has_proposal_code = false; + INIT_BUF(&v->initProposal.proposal_code_sechash) + v->initProposal.pgf_steward_actions_num = 0; + INIT_BUF(&v->initProposal.pgf_steward_actions) + v->initProposal.pgf_payment_actions_num = 0; + INIT_BUF(&v->initProposal.pgf_payment_actions) + + switch (v->initProposal.proposal_type) { + case 0: { // default proposal + // Proposal type 0 is Default(Option), where Hash is the proposal code. + CHECK_ERROR(readByte(&ctx, &v->initProposal.has_proposal_code)) + if (v->initProposal.has_proposal_code) { + CHECK_ERROR(readBytesBuf(&ctx, &v->initProposal.proposal_code_sechash, HASH_LEN)) + } + break; + } + case 1: { // PGF steward proposal + CHECK_ERROR(readUint32(&ctx, &v->initProposal.pgf_steward_actions_num)) + if (v->initProposal.pgf_steward_actions_num > 0) { + const uint32_t actions_len = (1 + ADDRESS_LEN_BYTES) * v->initProposal.pgf_steward_actions_num; + CHECK_ERROR(readBytesBuf(&ctx, &v->initProposal.pgf_steward_actions, actions_len)) + } + break; + } + case 2: { // PGF payment proposal + CHECK_ERROR(readUint32(&ctx, &v->initProposal.pgf_payment_actions_num)) + if (v->initProposal.pgf_payment_actions_num > 0) { + CHECK_ERROR(readPGFPaymentAction(&ctx, &v->initProposal.pgf_payment_actions, true)) + for (uint32_t i = 1; i < v->initProposal.pgf_payment_actions_num; ++i) { + CHECK_ERROR(readPGFPaymentAction(&ctx, &v->initProposal.pgf_payment_actions, false)) + } + } + break; } + default: + return parser_unexpected_value; } // Voting start epoch @@ -388,6 +464,7 @@ static parser_error_t readInitProposalTxn(const bytes_t *data, const section_t * return parser_ok; } +#if 0 parser_error_t readCouncils(parser_context_t *ctx, uint32_t numberOfCouncils, council_t *council) { if (ctx == NULL) return parser_unexpected_error; @@ -408,6 +485,7 @@ parser_error_t readCouncils(parser_context_t *ctx, uint32_t numberOfCouncils, co return parser_ok; } +#endif static parser_error_t readVoteProposalTxn(const bytes_t *data, parser_tx_t *v) { parser_context_t ctx = {.buffer = data->ptr, .bufferLen = data->len, .offset = 0, .tx_obj = NULL}; @@ -422,38 +500,9 @@ static parser_error_t readVoteProposalTxn(const bytes_t *data, parser_tx_t *v) { CHECK_ERROR(readByte(&ctx, (uint8_t*) &v->voteProposal.vote_type)) switch (v->voteProposal.vote_type) { case Default: + case PGFSteward: + case PGFPayment: break; - - // PGFCouncil(HashSet) - 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(uint256_t)); - CHECK_ERROR(readCouncils(&ctx, v->voteProposal.number_of_councils, NULL)) - break; - } - - // ETHBridge(Signature) - case EthBridge: { - uint8_t signature_type = 0; - CHECK_ERROR(readByte(&ctx, &signature_type)) - if(signature_type == 0){ - // Ed25519 the signature consists of r (32 bytes), s (32 bytes) - v->voteProposal.eth_bridge_signature.len = SIG_ED25519_LEN; - CHECK_ERROR(readBytes(&ctx, - &v->voteProposal.eth_bridge_signature.ptr, - v->voteProposal.eth_bridge_signature.len)) - } - else if (signature_type == 1){ - // Secp256k1 the signature consists of r [u32; 8], s [u32; 8] - // and the RecoveryId (1 byte) - v->voteProposal.eth_bridge_signature.len = SIG_SECP256K1_LEN; - CHECK_ERROR(readBytes(&ctx, - &v->voteProposal.eth_bridge_signature.ptr, - v->voteProposal.eth_bridge_signature.len)) - } else return parser_unexpected_value; - break; - } default: return parser_unexpected_value; } @@ -462,19 +511,17 @@ static parser_error_t readVoteProposalTxn(const bytes_t *data, parser_tx_t *v) { } // Voter, should be of length ADDRESS_LEN_BYTES - v->voteProposal.voter.len = ADDRESS_LEN_BYTES; - CHECK_ERROR(readBytes(&ctx, &v->voteProposal.voter.ptr, v->voteProposal.voter.len)) + CHECK_ERROR(readBytesBuf(&ctx, &v->voteProposal.voter, ADDRESS_LEN_BYTES)) - // Delegators - v->voteProposal.number_of_delegations = 0; + // Delegations CHECK_ERROR(readUint32(&ctx, &v->voteProposal.number_of_delegations)) - v->voteProposal.delegations.len = 0; - if (v->voteProposal.number_of_delegations > 0 ){ - v->voteProposal.delegations.len = ADDRESS_LEN_BYTES*v->voteProposal.number_of_delegations; - CHECK_ERROR(readBytes(&ctx, &v->voteProposal.delegations.ptr, v->voteProposal.delegations.len)) + INIT_BUF(&v->voteProposal.delegations); + if (v->voteProposal.number_of_delegations > 0) { + const uint32_t delegations_len = ADDRESS_LEN_BYTES * v->voteProposal.number_of_delegations; + CHECK_ERROR(readBytesBuf(&ctx, &v->voteProposal.delegations, delegations_len)) } - if ((ctx.offset != ctx.bufferLen)) { + if (ctx.offset != ctx.bufferLen) { return parser_unexpected_characters; } return parser_ok; @@ -484,10 +531,10 @@ static parser_error_t readRevealPubkeyTxn(const bytes_t *data, parser_tx_t *v) { parser_context_t ctx = {.buffer = data->ptr, .bufferLen = data->len, .offset = 0, .tx_obj = NULL}; // Pubkey - if (ctx.bufferLen != 33) { + if (ctx.bufferLen != PUBKEY_BYTES_LEN) { return parser_unexpected_value; } - v->revealPubkey.pubkey.len = 33; + v->revealPubkey.pubkey.len = PUBKEY_BYTES_LEN; CHECK_ERROR(readBytes(&ctx, &v->revealPubkey.pubkey.ptr, v->revealPubkey.pubkey.len)) if (ctx.offset != ctx.bufferLen) { @@ -496,6 +543,22 @@ static parser_error_t readRevealPubkeyTxn(const bytes_t *data, parser_tx_t *v) { return parser_ok; } +static parser_error_t readUnjailValidatorTxn(const bytes_t *data, parser_tx_t *v) { + parser_context_t ctx = {.buffer = data->ptr, .bufferLen = data->len, .offset = 0, .tx_obj = NULL}; + + // Address + if (ctx.bufferLen != ADDRESS_LEN_BYTES) { + return parser_unexpected_value; + } + v->revealPubkey.pubkey.len = ADDRESS_LEN_BYTES; + CHECK_ERROR(readBytes(&ctx, &v->unjailValidator.validator.ptr, v->unjailValidator.validator.len)) + + if (ctx.offset != ctx.bufferLen) { + return parser_unexpected_characters; + } + return parser_ok; +} + static parser_error_t readWithdrawTxn(bytes_t *buffer, parser_tx_t *v) { parser_context_t ctx = {.buffer = buffer->ptr, .bufferLen = buffer->len, .offset = 0, .tx_obj = NULL}; @@ -546,10 +609,31 @@ static parser_error_t readUpdateVPTxn(const bytes_t *data, const section_t *extr v->updateVp.address.len = ADDRESS_LEN_BYTES; CHECK_ERROR(readBytes(&ctx, &v->updateVp.address.ptr, v->updateVp.address.len)) - // VP code hash + // VP code hash (optional) + CHECK_ERROR(readByte(&ctx, &v->updateVp.has_vp_code)); + if (0 == v->updateVp.has_vp_code) { + return parser_unexpected_value; + } + v->updateVp.vp_type_sechash.len = HASH_LEN; CHECK_ERROR(readBytes(&ctx, &v->updateVp.vp_type_sechash.ptr, v->updateVp.vp_type_sechash.len)) + // Pubkeys + v->updateVp.number_of_pubkeys = 0; + CHECK_ERROR(readUint32(&ctx, &v->updateVp.number_of_pubkeys)) + v->updateVp.pubkeys.len = 0; + if (v->updateVp.number_of_pubkeys > 0) { + const uint32_t pubkeys_len = PUBKEY_BYTES_LEN * v->updateVp.number_of_pubkeys; + v->updateVp.pubkeys.len = pubkeys_len; + CHECK_ERROR(readBytes(&ctx, &v->updateVp.pubkeys.ptr, pubkeys_len)) + } + + // Threshold (optional) + CHECK_ERROR(readByte(&ctx, &v->updateVp.has_threshold)) + if (v->updateVp.has_threshold != 0){ + CHECK_ERROR(readByte(&ctx, &v->updateVp.threshold)) + } + bool found_vp_code = false; // Load the linked to data from the extra data sections for (uint32_t i = 0; i < extraDataLen; i++) { @@ -606,13 +690,6 @@ static parser_error_t readTransferTxn(const bytes_t *data, parser_tx_t *v) { // Get symbol from token CHECK_ERROR(readToken(&v->transfer.token, &v->transfer.symbol)) - // Subprefix, check if it is there - CHECK_ERROR(readByte(&ctx, &v->transfer.has_sub_prefix)) - if (v->transfer.has_sub_prefix){ - CHECK_ERROR(readUint32(&ctx, &v->transfer.sub_prefix.len)) - CHECK_ERROR(readBytes(&ctx, &v->transfer.sub_prefix.ptr, v->transfer.sub_prefix.len)) - } - // Amount CHECK_ERROR(readUint256(&ctx, &v->transfer.amount)) @@ -667,12 +744,93 @@ static parser_error_t readBondUnbondTxn(const bytes_t *data, parser_tx_t *v) { return parser_ok; } +__Z_INLINE parser_error_t readTimestamp(parser_context_t *ctx, timestamp_t *timestamp) { + // uint64_t timestampSize = 0; + uint8_t consumed = 0; + uint64_t tmp = 0; + + CHECK_ERROR(checkTag(ctx, 0x38)) + const uint64_t timestampSize = ctx->bufferLen - ctx->offset; + decodeLEB128(ctx->buffer + ctx->offset, timestampSize, &consumed, &tmp); + ctx->offset += consumed; + + const uint32_t e9 = 1000000000; + timestamp->millis = tmp / e9; + timestamp->nanos = (uint32_t)(tmp - timestamp->millis*e9); + + return parser_ok; +} + +static parser_error_t readIBCTxn(const bytes_t *data, parser_tx_t *v) { + parser_context_t ctx = {.buffer = data->ptr, .bufferLen = data->len, .offset = 0, .tx_obj = NULL}; + + // Read tag + CHECK_ERROR(checkTag(&ctx, 0x0A)) + // Skip URL: /ibc.applications.transfer.v1.MsgTransfer + uint8_t tmp = 0; + CHECK_ERROR(readByte(&ctx, &tmp)) + ctx.offset += tmp; + + CHECK_ERROR(checkTag(&ctx, 0x12)) + // Missing bytes + CHECK_ERROR(readByte(&ctx, &tmp)) + CHECK_ERROR(readByte(&ctx, &tmp)) + + // Read port id + CHECK_ERROR(checkTag(&ctx, 0x0A)) + CHECK_ERROR(readByte(&ctx, &tmp)) + v->ibc.port_id.len = tmp; + CHECK_ERROR(readBytes(&ctx, &v->ibc.port_id.ptr, v->ibc.port_id.len)) + + // Read channel id + CHECK_ERROR(checkTag(&ctx, 0x12)) + CHECK_ERROR(readByte(&ctx, &tmp)) + v->ibc.channel_id.len = tmp; + CHECK_ERROR(readBytes(&ctx, &v->ibc.channel_id.ptr, v->ibc.channel_id.len)) + + // Read token address + CHECK_ERROR(checkTag(&ctx, 0x1A)) + CHECK_ERROR(readByte(&ctx, &tmp)) + CHECK_ERROR(checkTag(&ctx, 0x0A)) + CHECK_ERROR(readByte(&ctx, &tmp)) + v->ibc.token_address.len = tmp; + CHECK_ERROR(readBytes(&ctx, &v->ibc.token_address.ptr, v->ibc.token_address.len)) + + // Read token amount + CHECK_ERROR(checkTag(&ctx, 0x12)) + CHECK_ERROR(readByte(&ctx, &tmp)) + v->ibc.token_amount.len = tmp; + CHECK_ERROR(readBytes(&ctx, &v->ibc.token_amount.ptr, v->ibc.token_amount.len)) + + // Read sender + CHECK_ERROR(checkTag(&ctx, 0x22)) + CHECK_ERROR(readByte(&ctx, &tmp)) + v->ibc.sender_address.len = tmp; + CHECK_ERROR(readBytes(&ctx, &v->ibc.sender_address.ptr, v->ibc.sender_address.len)) + + // Read receiver + CHECK_ERROR(checkTag(&ctx, 0x2A)) + CHECK_ERROR(readByte(&ctx, &tmp)) + v->ibc.receiver.len = tmp; + CHECK_ERROR(readBytes(&ctx, &v->ibc.receiver.ptr, v->ibc.receiver.len)) + + // Read timeout height + CHECK_ERROR(checkTag(&ctx, 0x32)) + CHECK_ERROR(readByte(&ctx, &v->ibc.timeout_height)) + + // Read timeout timestamp + CHECK_ERROR(readTimestamp(&ctx, &v->ibc.timeout_timestamp)) + + return parser_ok; +} + // WrapperTx header 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; + v->transaction.header.ext_bytes.ptr = ctx->buffer + ctx->offset; const uint16_t tmpOffset = ctx->offset; // Read length of chain_id @@ -702,6 +860,8 @@ parser_error_t readHeader(parser_context_t *ctx, parser_tx_t *v) { 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.len = ctx->offset - tmpOffset; + CHECK_ERROR(checkTag(ctx, 0x01)) // Fee.amount CHECK_ERROR(readUint256(ctx, &v->transaction.header.fees.amount)) @@ -712,12 +872,19 @@ parser_error_t readHeader(parser_context_t *ctx, parser_tx_t *v) { // Get symbol from token CHECK_ERROR(readToken(&v->transaction.header.fees.address, &v->transaction.header.fees.symbol)) // Pubkey - v->transaction.header.pubkey.len = PK_LEN_25519_PLUS_TAG; // Check tag (first byte: 0x00 | 0x01) + v->transaction.header.pubkey.len = PUBKEY_BYTES_LEN; // Check 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(readUint256(ctx, &v->transaction.header.gasLimit)) + CHECK_ERROR(readUint64(ctx, &v->transaction.header.gasLimit)) + // Unshielded section hash + uint8_t has_unshield_section_hash = 0; + CHECK_ERROR(readByte(ctx, &has_unshield_section_hash)) + if (has_unshield_section_hash){ + v->transaction.header.unshieldSectionHash.len = HASH_LEN; + CHECK_ERROR(readBytes(ctx, &v->transaction.header.unshieldSectionHash.ptr, v->transaction.header.unshieldSectionHash.len)) + } // Check if a PoW solution is present (should only exist in mainnet) uint8_t num_pow_solution = 0; @@ -730,7 +897,7 @@ parser_error_t readHeader(parser_context_t *ctx, parser_tx_t *v) { ctx->offset += num_pow_solution * 17; } - v->transaction.header.bytes.len = ctx->offset - tmpOffset; + v->transaction.header.ext_bytes.len = ctx->offset - tmpOffset; return parser_ok; } @@ -764,6 +931,38 @@ static parser_error_t readExtraDataSection(parser_context_t *ctx, section_t *ext return parser_ok; } +static parser_error_t readSignatureSection(parser_context_t *ctx, signature_section_t *signature) { + if (ctx == NULL || signature == NULL) { + return parser_unexpected_error; + } + + uint8_t sectionDiscriminant; + CHECK_ERROR(readByte(ctx, §ionDiscriminant)) + if (sectionDiscriminant != DISCRIMINANT_SIGNATURE) { + return parser_unexpected_value; + } + CHECK_ERROR(readUint32(ctx, &signature->hashes.hashesLen)) + signature->hashes.hashes.len = HASH_LEN*signature->hashes.hashesLen; + CHECK_ERROR(readBytes(ctx, (const uint8_t **) &signature->hashes.hashes.ptr, signature->hashes.hashes.len)) + CHECK_ERROR(readByte(ctx, (uint8_t *) &signature->signerDiscriminant)) + switch (signature->signerDiscriminant) { + case PubKeys: + CHECK_ERROR(readUint32(ctx, &signature->pubKeysLen)) + signature->pubKeys.len = PK_LEN_25519_PLUS_TAG*signature->pubKeysLen; + CHECK_ERROR(readBytes(ctx, &signature->pubKeys.ptr, signature->pubKeys.len)) + break; + case Address: + signature->address.len = ADDRESS_LEN_BYTES; + CHECK_ERROR(readBytes(ctx, &signature->address.ptr, signature->address.len)) + break; + } + CHECK_ERROR(readUint32(ctx, &signature->signaturesLen)) + signature->indexedSignatures.len = signature->signaturesLen * (1+SIG_LEN_25519_PLUS_TAG); + CHECK_ERROR(readBytes(ctx, &signature->indexedSignatures.ptr, signature->indexedSignatures.len)) + + return parser_ok; +} + static parser_error_t readDataSection(parser_context_t *ctx, section_t *data) { if (ctx == NULL || data == NULL) { return parser_unexpected_error; @@ -843,11 +1042,12 @@ 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) { + if (v->transaction.sections.sectionLen > 10) { return parser_invalid_output_buffer; } v->transaction.sections.extraDataLen = 0; + v->transaction.sections.signaturesLen = 0; for (uint32_t i = 0; i < v->transaction.sections.sectionLen; i++) { const uint8_t discriminant = *(ctx->buffer + ctx->offset); @@ -871,8 +1071,15 @@ parser_error_t readSections(parser_context_t *ctx, parser_tx_t *v) { v->transaction.sections.code.idx = i+1; break; } - case DISCRIMINANT_SIGNATURE: + case DISCRIMINANT_SIGNATURE: { + if (v->transaction.sections.signaturesLen >= MAX_SIGNATURE_SECS) { + return parser_unexpected_field; + } + signature_section_t *signature = &v->transaction.sections.signatures[v->transaction.sections.signaturesLen++]; + CHECK_ERROR(readSignatureSection(ctx, signature)) + signature->idx = i+1; break; + } #if(0) case DISCRIMINANT_CIPHERTEXT: CHECK_ERROR(readCiphertext(ctx, &v->transaction.sections.ciphertext)) @@ -922,6 +1129,9 @@ parser_error_t validateTransactionParams(parser_tx_t *txObj) { case RevealPubkey: CHECK_ERROR(readRevealPubkeyTxn(&txObj->transaction.sections.data.bytes, txObj)) break; + case UnjailValidator: + CHECK_ERROR(readUnjailValidatorTxn(&txObj->transaction.sections.data.bytes, txObj)) + break; case Withdraw: CHECK_ERROR(readWithdrawTxn(&txObj->transaction.sections.data.bytes, txObj)) break; @@ -934,6 +1144,9 @@ parser_error_t validateTransactionParams(parser_tx_t *txObj) { case UpdateVP: CHECK_ERROR(readUpdateVPTxn(&txObj->transaction.sections.data.bytes, txObj->transaction.sections.extraData, txObj->transaction.sections.extraDataLen, txObj)) break; + case IBC: + CHECK_ERROR(readIBCTxn(&txObj->transaction.sections.data.bytes, txObj)) + break; default: return parser_unexpected_method; } diff --git a/app/src/parser_print_common.c b/app/src/parser_print_common.c index 59a897bb..57c0e472 100644 --- a/app/src/parser_print_common.c +++ b/app/src/parser_print_common.c @@ -83,6 +83,18 @@ parser_error_t uint256_to_str(char *output, uint16_t outputLen, const uint256_t return parser_ok; } +parser_error_t printPubkey(const bytes_t pubkey, + char *outVal, uint16_t outValLen, + uint8_t pageIdx, uint8_t *pageCount) { + char hexString[PUBKEY_BYTES_LEN * 2 + 1] = {0}; + if (array_to_hexstr((char *)hexString, sizeof(hexString), pubkey.ptr, PUBKEY_BYTES_LEN) == 0) + { + return parser_invalid_output_buffer; + } + pageString(outVal, outValLen, (const char *)&hexString, pageIdx, pageCount); + return parser_ok; +} + parser_error_t printAddress( bytes_t pubkeyHash, char *outVal, uint16_t outValLen, uint8_t pageIdx, uint8_t *pageCount) { @@ -150,13 +162,14 @@ static parser_error_t printTimestamp(const bytes_t timestamp, // Received "2023-04-19T14:19:38.114481351+00:00" // Expected "2023-04-19 14:19:38.114481351 UTC" - if (timestamp.len != 35) { - return parser_unexpected_value; + if (timestamp.len > 35 || timestamp.len < 25) { + return parser_unexpected_value; } + uint32_t offset = timestamp.len - 6; char date[50] = {0}; memcpy(date, timestamp.ptr, timestamp.len - 6); - snprintf(date + 29, sizeof(date) - 29, " UTC"); + snprintf(date + offset, sizeof(date) - offset, " UTC"); if (date[10] == 'T') date[10] = ' '; pageString(outVal, outValLen, date, pageIdx, pageCount); @@ -180,6 +193,25 @@ parser_error_t printAmount( const uint256_t *amount, uint8_t amountDenom, const return parser_ok; } +parser_error_t printAmount64( uint64_t amount, uint8_t amountDenom, const char* symbol, + char *outVal, uint16_t outValLen, + uint8_t pageIdx, uint8_t *pageCount) { + + char strAmount[33] = {0}; + if (uint64_to_str(strAmount, sizeof(strAmount), amount) != NULL) { + return parser_unexpected_error; + } + if (intstr_to_fpstr_inplace(strAmount, sizeof(strAmount), amountDenom) == 0) { + return parser_unexpected_error; + } + + z_str3join(strAmount, sizeof(strAmount), symbol, ""); + number_inplace_trimming(strAmount, 1); + pageString(outVal, outValLen, strAmount, pageIdx, pageCount); + + return parser_ok; +} + parser_error_t printVPTypeHash(bytes_t *codeHash, char *outVal, uint16_t outValLen, uint8_t pageIdx, uint8_t *pageCount) { @@ -280,13 +312,12 @@ parser_error_t printExpert( const parser_context_t *ctx, break; case 3: { snprintf(outKey, outKeyLen, "Gas limit"); - 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); + CHECK_ERROR(printAmount64(ctx->tx_obj->transaction.header.gasLimit, COIN_AMOUNT_DECIMAL_PLACES, "", + outVal, outValLen, pageIdx, pageCount)) break; } case 4: { - snprintf(outKey, outKeyLen, "Fees"); + snprintf(outKey, outKeyLen, "Fees/gas unit"); 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)) diff --git a/app/src/parser_print_common.h b/app/src/parser_print_common.h index 1e0e3e70..4a034b34 100644 --- a/app/src/parser_print_common.h +++ b/app/src/parser_print_common.h @@ -41,6 +41,10 @@ parser_error_t printCodeHash(bytes_t *codeHash, char *outVal, uint16_t outValLen, uint8_t pageIdx, uint8_t *pageCount); +parser_error_t printPubkey(bytes_t pubkey, + char *outVal, uint16_t outValLen, + uint8_t pageIdx, uint8_t *pageCount); + parser_error_t printAddress(bytes_t pubkeyHash, char *outVal, uint16_t outValLen, uint8_t pageIdx, uint8_t *pageCount); diff --git a/app/src/parser_print_txn.c b/app/src/parser_print_txn.c index 0c6c3015..fb213726 100644 --- a/app/src/parser_print_txn.c +++ b/app/src/parser_print_txn.c @@ -19,6 +19,7 @@ #include #include #include "coin.h" +#include "timeutils.h" static parser_error_t printBondTxn( const parser_context_t *ctx, uint8_t displayIdx, @@ -26,7 +27,7 @@ static parser_error_t printBondTxn( const parser_context_t *ctx, char *outVal, uint16_t outValLen, uint8_t pageIdx, uint8_t *pageCount) { - // Bump itemIdx if source is not present + // Bump displayIdx if source is not present if (ctx->tx_obj->bond.has_source == 0 && displayIdx >= 1) { displayIdx++; } @@ -54,12 +55,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"); 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; } @@ -140,9 +141,19 @@ static parser_error_t printInitAccountTxn( const parser_context_t *ctx, char *outKey, uint16_t outKeyLen, char *outVal, uint16_t outValLen, uint8_t pageIdx, uint8_t *pageCount) { - - char hexString[67] = {0}; - switch (displayIdx) { + const tx_init_account_t *initAccount = &ctx->tx_obj->initAccount; + + // Since every account key entry will be considered as a different field, we adjust the display index. + const uint32_t pubkeys_num = initAccount->number_of_pubkeys; + const uint8_t pubkeys_first_field_idx = 1; + const uint8_t adjustedDisplayIdx = \ + (displayIdx < pubkeys_first_field_idx) \ + ? displayIdx + : ((displayIdx < pubkeys_first_field_idx + pubkeys_num) \ + ? pubkeys_first_field_idx + : displayIdx - pubkeys_num + 1); + + switch (adjustedDisplayIdx) { case 0: snprintf(outKey, outKeyLen, "Type"); snprintf(outVal, outValLen, "Init Account"); @@ -152,12 +163,32 @@ static parser_error_t printInitAccountTxn( const parser_context_t *ctx, } break; case 1: + { + if (pubkeys_num == 0) { + // this should never happen by definition of adjustedDisplayIdx + return parser_unexpected_error; + } snprintf(outKey, outKeyLen, "Public key"); - const bytes_t *pubkey = &ctx->tx_obj->initAccount.pubkey; - array_to_hexstr((char*) hexString, sizeof(hexString), pubkey->ptr, pubkey->len); - pageString(outVal, outValLen, (const char*) &hexString, pageIdx, pageCount); - break; + const uint8_t key_index = displayIdx - pubkeys_first_field_idx; + const bytes_t key = { + .ptr = initAccount->pubkeys.ptr + PUBKEY_BYTES_LEN * key_index, + .len = PUBKEY_BYTES_LEN + }; + CHECK_ERROR(printPubkey(key, outVal, outValLen, pageIdx, pageCount)) + break; + } case 2: + { + snprintf(outKey, outKeyLen, "Threshold"); + // Threshold value is less than 3 characters (uint8) + char strThreshold[3] = {0}; + if (uint64_to_str(strThreshold, sizeof(strThreshold), initAccount->threshold) != NULL) { + return parser_unexpected_error; + } + pageString(outVal, outValLen, strThreshold, pageIdx, pageCount); + break; + } + case 3: snprintf(outKey, outKeyLen, "VP type"); pageString(outVal, outValLen,ctx->tx_obj->initAccount.vp_type_text, pageIdx, pageCount); if (app_mode_expert()) { @@ -169,7 +200,7 @@ static parser_error_t printInitAccountTxn( const parser_context_t *ctx, if (!app_mode_expert()) { return parser_display_idx_out_of_range; } - displayIdx -= 3; + displayIdx -= 3 + pubkeys_num; return printExpert(ctx, displayIdx, outKey, outKeyLen, outVal, outValLen, pageIdx, pageCount); } @@ -182,8 +213,8 @@ static parser_error_t printInitProposalTxn( const parser_context_t *ctx, char *outVal, uint16_t outValLen, uint8_t pageIdx, uint8_t *pageCount) { - // Bump itemIdx if ID is not present - if (ctx->tx_obj->initProposal.has_id == 0 && displayIdx >= 2) { + // Bump displayIdx if ID is not present + if (ctx->tx_obj->initProposal.has_id == 0 && displayIdx >= 1) { displayIdx++; } @@ -199,6 +230,19 @@ static parser_error_t printInitProposalTxn( const parser_context_t *ctx, } break; case 1: + if (ctx->tx_obj->initProposal.has_id == 0) { + return parser_unexpected_value; + } + snprintf(outKey, outKeyLen, "ID"); + // Less than 20 characters as proposal_id is an Option + char idString[20] = {0}; + if (uint64_to_str(idString, sizeof(idString), ctx->tx_obj->initProposal.proposal_id) != NULL) + { + return parser_unexpected_error; + } + pageString(outVal, outValLen, idString, pageIdx, pageCount); + break; + case 2: 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"); @@ -206,23 +250,13 @@ static parser_error_t printInitProposalTxn( const parser_context_t *ctx, 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"); + snprintf(outVal, outValLen, "PGF Steward"); } else if (ctx->tx_obj->initProposal.proposal_type == 2) { - snprintf(outVal, outValLen, "ETH Bridge"); + snprintf(outVal, outValLen, "PGF Payment"); } else { return parser_unexpected_error; } break; - case 2: - if (ctx->tx_obj->initProposal.has_id == 0) { - return parser_unexpected_value; - } - snprintf(outKey, outKeyLen, "ID"); - // Less than 20 characters as proposal_id is an Option - char id[20] = {0}; - memcpy(id, ctx->tx_obj->initProposal.proposal_id.ptr, ctx->tx_obj->initProposal.proposal_id.len); - pageString(outVal, outValLen, id, pageIdx, pageCount); - break; case 3: snprintf(outKey, outKeyLen, "Author"); CHECK_ERROR(printAddress(ctx->tx_obj->initProposal.author, outVal, outValLen, pageIdx, pageCount)) @@ -266,30 +300,23 @@ static parser_error_t printInitProposalTxn( const parser_context_t *ctx, return parser_ok; } - -static parser_error_t printVoteProposalTxn( const parser_context_t *ctx, - uint8_t displayIdx, - char *outKey, uint16_t outKeyLen, - char *outVal, uint16_t outValLen, - uint8_t pageIdx, uint8_t *pageCount) { - // Bump itemIdx if ID is not present - if (ctx->tx_obj->voteProposal.number_of_delegations == 0 && displayIdx >= 4) { - displayIdx++; - } - - tx_vote_proposal_t *voteProposal = &ctx->tx_obj->voteProposal; - - // Every council entry will be considered as a different field. - // We need to adjust the index to simplify the printing logic - // If number_of_councils > 0 && displayIdx points to council --> set idx = 2 - // If number_of_councils > 0 && displayIdx points beyond councils --> adjust idx - // If number_of_councils == 0 || displayIdx < 2 --> use displayIdx - const uint8_t tmpDisplayIdx = ((voteProposal->number_of_councils) && (displayIdx > 2)) ? ((displayIdx > 2 && displayIdx < 2 + voteProposal->number_of_councils) ? 2 - : displayIdx - (voteProposal->number_of_councils - 1)) - : displayIdx; - - *pageCount = 1; - switch (tmpDisplayIdx) { +static parser_error_t printVoteProposalTxn(const parser_context_t *ctx, + uint8_t displayIdx, + char *outKey, uint16_t outKeyLen, + char *outVal, uint16_t outValLen, + uint8_t pageIdx, uint8_t *pageCount) { + const tx_vote_proposal_t *voteProposal = &ctx->tx_obj->voteProposal; + + const uint32_t delegations_num = voteProposal->number_of_delegations; + const uint8_t delegations_first_field_idx = 4; + const uint8_t adjustedDisplayIdx = \ + (displayIdx < delegations_first_field_idx) \ + ? displayIdx + : ((displayIdx < delegations_first_field_idx + delegations_num) \ + ? delegations_first_field_idx + : displayIdx - delegations_num + 1); + + switch (adjustedDisplayIdx) { case 0: snprintf(outKey, outKeyLen, "Type"); snprintf(outVal, outValLen, "Vote Proposal"); @@ -314,25 +341,15 @@ static parser_error_t printVoteProposalTxn( const parser_context_t *ctx, case Default: snprintf(outVal, outValLen, "yay"); break; - - case Council: { - // Using displayIdx display different councils - council_t council; - const uint8_t councilIdx = (displayIdx - 2 + 1); - parser_context_t tmpCtx = {.buffer = voteProposal->councils.ptr, .bufferLen = voteProposal->councils.len, .offset = 0}; - CHECK_ERROR(readCouncils(&tmpCtx, councilIdx, &council)) - CHECK_ERROR(printCouncilVote(&council, outVal, outValLen, pageIdx, pageCount)) + case PGFSteward: + snprintf(outVal, outValLen, "yay for PGF steward"); break; - } - - case EthBridge: - snprintf(outVal, outValLen, "yay with Eth bridge"); + case PGFPayment: + snprintf(outVal, outValLen, "yay for PGF payment"); break; - default: return parser_unexpected_value; } - } else { snprintf(outVal, outValLen, "nay"); } @@ -341,34 +358,36 @@ static parser_error_t printVoteProposalTxn( const parser_context_t *ctx, snprintf(outKey, outKeyLen, "Voter"); CHECK_ERROR(printAddress(voteProposal->voter, outVal, outValLen, pageIdx, pageCount)) break; - case 4: + case 4: { if (voteProposal->number_of_delegations == 0) { - return parser_unexpected_value; - } - snprintf(outKey, outKeyLen, "Delegations"); - for (uint32_t i = 0; i < voteProposal->number_of_delegations; ++i) { - CHECK_ERROR(printAddress(voteProposal->delegations, outVal, outValLen, pageIdx, pageCount)) + // this should never happen by definition of adjustedDisplayIdx + return parser_unexpected_error; } + snprintf(outKey, outKeyLen, "Delegation"); + const uint8_t address_index = displayIdx - delegations_first_field_idx; + const bytes_t address = { + .ptr = voteProposal->delegations.ptr + ADDRESS_LEN_BYTES * address_index, + .len = ADDRESS_LEN_BYTES + }; + CHECK_ERROR(printAddress(address, outVal, outValLen, pageIdx, pageCount)) break; + } default: if (!app_mode_expert()) { return parser_display_idx_out_of_range; } - displayIdx -= 5; + displayIdx -= 4 + delegations_num; return printExpert(ctx, displayIdx, outKey, outKeyLen, outVal, outValLen, pageIdx, pageCount); } return parser_ok; } - -static parser_error_t printRevealPubkeyTxn( const parser_context_t *ctx, +static parser_error_t printRevealPubkeyTxn(const parser_context_t *ctx, uint8_t displayIdx, char *outKey, uint16_t outKeyLen, char *outVal, uint16_t outValLen, uint8_t pageIdx, uint8_t *pageCount) { - - char hexString[67] = {0}; switch (displayIdx) { case 0: snprintf(outKey, outKeyLen, "Type"); @@ -380,9 +399,36 @@ static parser_error_t printRevealPubkeyTxn( const parser_context_t *ctx, break; case 1: snprintf(outKey, outKeyLen, "Public key"); - const bytes_t *pubkey = &ctx->tx_obj->revealPubkey.pubkey; - array_to_hexstr((char*) hexString, sizeof(hexString), pubkey->ptr, pubkey->len); - pageString(outVal, outValLen, (const char*) &hexString, pageIdx, pageCount); + CHECK_ERROR(printPubkey(ctx->tx_obj->revealPubkey.pubkey, outVal, outValLen, pageIdx, pageCount)) + break; + default: + if (!app_mode_expert()) { + return parser_display_idx_out_of_range; + } + displayIdx -= 2; + return printExpert(ctx, displayIdx, outKey, outKeyLen, outVal, outValLen, pageIdx, pageCount); + } + + return parser_ok; +} + +static parser_error_t printUnjailValidatorTxn(const parser_context_t *ctx, + uint8_t displayIdx, + char *outKey, uint16_t outKeyLen, + char *outVal, uint16_t outValLen, + uint8_t pageIdx, uint8_t *pageCount) { + switch (displayIdx) { + case 0: + snprintf(outKey, outKeyLen, "Type"); + snprintf(outVal, outValLen, "Unjail Validator"); + if (app_mode_expert()) { + CHECK_ERROR(printCodeHash(&ctx->tx_obj->transaction.sections.code.bytes, outKey, outKeyLen, + outVal, outValLen, pageIdx, pageCount)) + } + break; + case 1: + snprintf(outKey, outKeyLen, "Validator"); + CHECK_ERROR(printAddress(ctx->tx_obj->unjailValidator.validator, outVal, outValLen, pageIdx, pageCount)) break; default: if (!app_mode_expert()) { @@ -399,8 +445,25 @@ static parser_error_t printUpdateVPTxn(const parser_context_t *ctx, uint8_t displayIdx, char *outKey, uint16_t outKeyLen, char *outVal, uint16_t outValLen, - uint8_t pageIdx, uint8_t *pageCount){ - switch (displayIdx) { + uint8_t pageIdx, uint8_t *pageCount) { + const tx_update_vp_t *updateVp = &ctx->tx_obj->updateVp; + + const uint32_t pubkeys_num = updateVp->number_of_pubkeys; + // Since every account key entry will be considered as a different field, we adjust the display index. + const uint8_t pubkeys_first_field_idx = 2; + uint8_t adjustedDisplayIdx = \ + (displayIdx < pubkeys_first_field_idx) \ + ? displayIdx + : ((displayIdx < pubkeys_first_field_idx + pubkeys_num) \ + ? pubkeys_first_field_idx + : displayIdx - pubkeys_num + 1); + + // Bump adjustedDisplayIdx if threshold is not present + if (adjustedDisplayIdx >= 3 && !updateVp->has_threshold) { + adjustedDisplayIdx++; + } + + switch (adjustedDisplayIdx) { case 0: snprintf(outKey, outKeyLen, "Type"); snprintf(outVal, outValLen, "Update VP"); @@ -414,6 +477,34 @@ static parser_error_t printUpdateVPTxn(const parser_context_t *ctx, CHECK_ERROR(printAddress(ctx->tx_obj->updateVp.address, outVal, outValLen, pageIdx, pageCount)) break; case 2: + { + if (pubkeys_num == 0) { + // this should never happen by definition of adjustedDisplayIdx + return parser_unexpected_error; + } + snprintf(outKey, outKeyLen, "Public key"); + const uint8_t key_index = displayIdx - pubkeys_first_field_idx; + const bytes_t key = { + .ptr = updateVp->pubkeys.ptr + PUBKEY_BYTES_LEN * key_index, + .len = PUBKEY_BYTES_LEN + }; + CHECK_ERROR(printPubkey(key, outVal, outValLen, pageIdx, pageCount)) + break; + } + case 3: + { + if (updateVp->has_threshold) { + snprintf(outKey, outKeyLen, "Threshold"); + // Threshold value is less than 3 characters (uint8) + char strThreshold[3] = {0}; + if (uint64_to_str(strThreshold, sizeof(strThreshold), updateVp->threshold) != NULL) { + return parser_unexpected_error; + } + pageString(outVal, outValLen, strThreshold, pageIdx, pageCount); + } + break; + } + case 4: snprintf(outKey, outKeyLen, "VP type"); pageString(outVal, outValLen,ctx->tx_obj->updateVp.vp_type_text, pageIdx, pageCount); if (app_mode_expert()) { @@ -425,7 +516,7 @@ static parser_error_t printUpdateVPTxn(const parser_context_t *ctx, if (!app_mode_expert()) { return parser_display_idx_out_of_range; } - displayIdx -= 3; + displayIdx -= 4 + pubkeys_num - (updateVp->has_threshold ? 0 : 1); return printExpert(ctx, displayIdx, outKey, outKeyLen, outVal, outValLen, pageIdx, pageCount); } @@ -439,7 +530,20 @@ static parser_error_t printInitValidatorTxn( const parser_context_t *ctx, uint8_t pageIdx, uint8_t *pageCount) { char hexString[205] = {0}; - switch (displayIdx) { + const tx_init_validator_t *initValidator = &ctx->tx_obj->initValidator; + + const uint32_t account_keys_num = initValidator->number_of_account_keys; + + // Since every account key entry will be considered as a different field, we adjust the display index. + const uint8_t account_keys_first_field_idx = 1; + const uint8_t adjustedDisplayIdx = \ + (displayIdx < account_keys_first_field_idx) \ + ? displayIdx + : ((displayIdx < account_keys_first_field_idx + account_keys_num) \ + ? account_keys_first_field_idx + : displayIdx - account_keys_num + 1); + + switch (adjustedDisplayIdx) { case 0: snprintf(outKey, outKeyLen, "Type"); snprintf(outVal, outValLen, "Init Validator"); @@ -449,38 +553,70 @@ static parser_error_t printInitValidatorTxn( const parser_context_t *ctx, } break; case 1: + { + if (account_keys_num == 0) { + // this should never happen by definition of adjustedDisplayIdx + return parser_unexpected_error; + } snprintf(outKey, outKeyLen, "Account key"); - const bytes_t *accountKey = &ctx->tx_obj->initValidator.account_key; - array_to_hexstr((char*) hexString, sizeof(hexString), accountKey->ptr, accountKey->len); - pageString(outVal, outValLen, (const char*) &hexString, pageIdx, pageCount); - break; + const uint8_t key_index = displayIdx - account_keys_first_field_idx; + const bytes_t key = { + .ptr = initValidator->account_keys.ptr + PUBKEY_BYTES_LEN * key_index, + .len = PUBKEY_BYTES_LEN + }; + CHECK_ERROR(printPubkey(key, outVal, outValLen, pageIdx, pageCount)) + break; + } case 2: + { + snprintf(outKey, outKeyLen, "Threshold"); + // Threshold value is less than 3 characters (uint8) + char strThreshold[3] = {0}; + if (uint64_to_str(strThreshold, sizeof(strThreshold), initValidator->threshold) != NULL) { + return parser_unexpected_error; + } + pageString(outVal, outValLen, strThreshold, pageIdx, pageCount); + break; + } + case 3: snprintf(outKey, outKeyLen, "Consensus key"); const bytes_t *consensusKey = &ctx->tx_obj->initValidator.consensus_key; array_to_hexstr((char*) hexString, sizeof(hexString), consensusKey->ptr, consensusKey->len); pageString(outVal, outValLen, (const char*) &hexString, pageIdx, pageCount); break; - case 3: + case 4: + snprintf(outKey, outKeyLen, "Ethereum cold key"); + const bytes_t *ethColdKey = &ctx->tx_obj->initValidator.eth_cold_key; + array_to_hexstr((char*) hexString, sizeof(hexString), ethColdKey->ptr, ethColdKey->len); + pageString(outVal, outValLen, (const char*) &hexString, pageIdx, pageCount); + break; + case 5: + snprintf(outKey, outKeyLen, "Ethereum hot key"); + const bytes_t *ethHotKey = &ctx->tx_obj->initValidator.eth_hot_key; + array_to_hexstr((char*) hexString, sizeof(hexString), ethHotKey->ptr, ethHotKey->len); + pageString(outVal, outValLen, (const char*) &hexString, pageIdx, pageCount); + break; + case 6: snprintf(outKey, outKeyLen, "Protocol key"); const bytes_t *protocolKey = &ctx->tx_obj->initValidator.protocol_key; array_to_hexstr((char*) hexString, sizeof(hexString), protocolKey->ptr, protocolKey->len); pageString(outVal, outValLen, (const char*) &hexString, pageIdx, pageCount); break; - case 4: + case 7: snprintf(outKey, outKeyLen, "DKG key"); const bytes_t *dkgKey = &ctx->tx_obj->initValidator.dkg_key; array_to_hexstr((char*) hexString, sizeof(hexString), dkgKey->ptr, dkgKey->len); pageString(outVal, outValLen, (const char*) &hexString, pageIdx, pageCount); break; - case 5: + case 8: snprintf(outKey, outKeyLen, "Commission rate"); CHECK_ERROR(printAmount(&ctx->tx_obj->initValidator.commission_rate, POS_DECIMAL_PRECISION, "", outVal, outValLen, pageIdx, pageCount)) break; - case 6: + case 9: snprintf(outKey, outKeyLen, "Maximum commission rate change"); CHECK_ERROR(printAmount(&ctx->tx_obj->initValidator.max_commission_rate_change, POS_DECIMAL_PRECISION, "", outVal, outValLen, pageIdx, pageCount)) break; - case 7: + case 10: snprintf(outKey, outKeyLen, "Validator VP type"); pageString(outVal, outValLen,ctx->tx_obj->initValidator.vp_type_text, pageIdx, pageCount); if (app_mode_expert()) { @@ -492,7 +628,7 @@ static parser_error_t printInitValidatorTxn( const parser_context_t *ctx, if (!app_mode_expert()) { return parser_display_idx_out_of_range; } - displayIdx -= 8; + displayIdx -= 10 + account_keys_num; return printExpert(ctx, displayIdx, outKey, outKeyLen, outVal, outValLen, pageIdx, pageCount); } @@ -576,6 +712,83 @@ static parser_error_t printCommissionChangeTxn( const parser_context_t *ctx, return parser_ok; } +static parser_error_t printIBCTxn( const parser_context_t *ctx, + uint8_t displayIdx, + char *outKey, uint16_t outKeyLen, + char *outVal, uint16_t outValLen, + uint8_t pageIdx, uint8_t *pageCount) { + + const tx_ibc_t *ibc = &ctx->tx_obj->ibc; + char buffer[100] = {0}; + + switch (displayIdx) { + case 0: + snprintf(outKey, outKeyLen, "Type"); + snprintf(outVal, outValLen, "IBC"); + if (app_mode_expert()) { + CHECK_ERROR(printCodeHash(&ctx->tx_obj->transaction.sections.code.bytes, outKey, outKeyLen, + outVal, outValLen, pageIdx, pageCount)) + } + break; + case 1: + snprintf(outKey, outKeyLen, "Source port"); + pageStringExt(outVal, outValLen, (const char*)ibc->port_id.ptr, ibc->port_id.len, pageIdx, pageCount); + break; + case 2: + snprintf(outKey, outKeyLen, "Source channel"); + pageStringExt(outVal, outValLen, (const char*)ibc->channel_id.ptr, ibc->channel_id.len, pageIdx, pageCount); + break; + case 3: + if( ibc->token_address.len + ibc->token_amount.len > sizeof(buffer)) { + return parser_unexpected_buffer_end; + } + snprintf(outKey, outKeyLen, "Token"); + snprintf(buffer, sizeof(buffer), "%.*s %.*s", ibc->token_amount.len, ibc->token_amount.ptr, ibc->token_address.len, ibc->token_address.ptr); + pageStringExt(outVal, outValLen, buffer, sizeof(buffer), pageIdx, pageCount); + break; + + case 4: + snprintf(outKey, outKeyLen, "Sender"); + pageStringExt(outVal, outValLen, (const char*)ibc->sender_address.ptr, ibc->sender_address.len, pageIdx, pageCount); + break; + + case 5: + snprintf(outKey, outKeyLen, "Receiver"); + pageStringExt(outVal, outValLen, (const char*)ibc->receiver.ptr, ibc->receiver.len, pageIdx, pageCount); + break; + + case 6: + snprintf(outKey, outKeyLen, "Timeout height"); + if (ibc->timeout_height != 0) { + return parser_unexpected_value; + } + snprintf(outVal, outValLen, "no timeout"); + break; + + case 7: { + snprintf(outKey, outKeyLen, "Timeout timestamp"); + timedata_t date; + if (extractTime(ibc->timeout_timestamp.millis, &date) != zxerr_ok) { + return parser_unexpected_error; + } + snprintf(outVal, outValLen, "%04d-%02d-%02dT%02d:%02d:%02d.%09dZ", + date.tm_year, date.tm_mon, date.tm_day, date.tm_hour, date.tm_min, date.tm_sec, ibc->timeout_timestamp.nanos); + // printTime(outVal, outValLen, ibc->timeout_timestamp.millis); + break; + } + + + default: + if (!app_mode_expert()) { + return parser_display_idx_out_of_range; + } + displayIdx -= 8; + return printExpert(ctx, displayIdx, outKey, outKeyLen, outVal, outValLen, pageIdx, pageCount); + } + + return parser_ok; +} + parser_error_t printTxnFields(const parser_context_t *ctx, uint8_t displayIdx, char *outKey, uint16_t outKeyLen, @@ -594,7 +807,7 @@ parser_error_t printTxnFields(const parser_context_t *ctx, return printTransferTxn(ctx, displayIdx, outKey, outKeyLen, outVal, outValLen, pageIdx, pageCount); case InitAccount: - return printInitAccountTxn(ctx, displayIdx, outKey, outKeyLen, outVal, outValLen, pageIdx, pageCount); + return printInitAccountTxn(ctx, displayIdx, outKey, outKeyLen, outVal, outValLen, pageIdx, pageCount); case InitProposal: return printInitProposalTxn(ctx, displayIdx, outKey, outKeyLen, outVal, outValLen, pageIdx, pageCount); @@ -606,17 +819,23 @@ parser_error_t printTxnFields(const parser_context_t *ctx, return printRevealPubkeyTxn(ctx, displayIdx, outKey, outKeyLen, outVal, outValLen, pageIdx, pageCount); case Withdraw: - return printWithdrawTxn(ctx, displayIdx, outKey, outKeyLen, outVal, outValLen, pageIdx, pageCount); + return printWithdrawTxn(ctx, displayIdx, outKey, outKeyLen, outVal, outValLen, pageIdx, pageCount); case CommissionChange: return printCommissionChangeTxn(ctx, displayIdx, outKey, outKeyLen, outVal, outValLen, pageIdx, pageCount); case InitValidator: - return printInitValidatorTxn(ctx, displayIdx, outKey, outKeyLen, outVal, outValLen, pageIdx, pageCount); + return printInitValidatorTxn(ctx, displayIdx, outKey, outKeyLen, outVal, outValLen, pageIdx, pageCount); case UpdateVP: return printUpdateVPTxn(ctx, displayIdx, outKey, outKeyLen, outVal, outValLen, pageIdx, pageCount); + case UnjailValidator: + return printUnjailValidatorTxn(ctx, displayIdx, outKey, outKeyLen, outVal, outValLen, pageIdx, pageCount); + + case IBC: + return printIBCTxn(ctx, displayIdx, outKey, outKeyLen, outVal, outValLen, pageIdx, pageCount); + default: break; } diff --git a/app/src/parser_txdef.h b/app/src/parser_txdef.h index bfdf2f2d..bf13b8d5 100644 --- a/app/src/parser_txdef.h +++ b/app/src/parser_txdef.h @@ -26,6 +26,7 @@ extern "C" { #include "coin.h" #define MAX_EXTRA_DATA_SECS 3 +#define MAX_SIGNATURE_SECS 3 typedef struct { uint8_t address[ADDRESS_LEN_TESTNET]; @@ -45,15 +46,26 @@ typedef struct { typedef struct { uint32_t hashesLen; mut_bytes_t hashes; + mut_bytes_t indices; } concatenated_hashes_t; + +typedef enum { + Address = 0, + PubKeys = 1 +} signer_e; // ----------------------------------------------------------------- typedef struct { bytes_t salt; + uint8_t idx; concatenated_hashes_t hashes; - bytes_t pubKey; - bool has_signature; - bytes_t signature; + signer_e signerDiscriminant; + bytes_t address; + uint32_t pubKeysLen; + bytes_t pubKeys; + uint32_t signaturesLen; + bytes_t indexedSignatures; } signature_section_t; + #if(0) typedef struct { bytes_t cv; // 160 bytes: Extended Point, i.e. 5 elements in Fq, each of which are represented by 32 bytes @@ -118,11 +130,13 @@ typedef struct { #endif typedef struct { + bytes_t ext_bytes; bytes_t bytes; fees_t fees; bytes_t pubkey; uint64_t epoch; - uint256_t gasLimit; + uint64_t gasLimit; + bytes_t unshieldSectionHash; bytes_t dataHash; bytes_t codeHash; } header_t; @@ -137,9 +151,11 @@ typedef struct { typedef struct { uint32_t sectionLen; uint32_t extraDataLen; + uint32_t signaturesLen; section_t code; section_t data; section_t extraData[MAX_EXTRA_DATA_SECS]; + signature_section_t signatures[MAX_SIGNATURE_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; @@ -164,10 +180,12 @@ typedef struct{ tx_init_proposal_t initProposal; tx_vote_proposal_t voteProposal; tx_reveal_pubkey_t revealPubkey; + tx_unjail_validator_t unjailValidator; tx_withdraw_t withdraw; tx_commission_change_t commissionChange; tx_init_validator_t initValidator; tx_update_vp_t updateVp; + tx_ibc_t ibc; }; transaction_t transaction; diff --git a/app/src/parser_types.h b/app/src/parser_types.h index 4ee5560c..5858d490 100644 --- a/app/src/parser_types.h +++ b/app/src/parser_types.h @@ -42,6 +42,8 @@ typedef enum { Custom, Withdraw, CommissionChange, + UnjailValidator, + IBC, } transaction_type_e; typedef enum { @@ -51,8 +53,8 @@ typedef enum { typedef enum { Default = 0, - Council = 1, - EthBridge = 2, + PGFSteward = 1, + PGFPayment = 2, } yay_vote_type_e; // Structure to match the Rust serialized Decimal format @@ -73,7 +75,7 @@ typedef struct { typedef struct { uint8_t has_id; - bytes_t proposal_id; + uint64_t proposal_id; bytes_t content_hash; bytes_t content_sechash; bytes_t author; @@ -84,14 +86,23 @@ typedef struct { bytes_t proposal_code_sechash; bytes_t proposal_code_hash; uint8_t proposal_type; + uint32_t pgf_steward_actions_num; + bytes_t pgf_steward_actions; + uint32_t pgf_payment_actions_num; + bytes_t pgf_payment_actions; uint8_t content_secidx; uint8_t proposal_code_secidx; } tx_init_proposal_t; typedef struct { - uint64_t b[4]; + uint64_t b[4]; } uint256_t; +typedef struct { + uint64_t millis; + uint32_t nanos; +} timestamp_t; + typedef struct { bytes_t council_address; uint256_t amount; @@ -101,18 +112,17 @@ typedef struct { uint64_t proposal_id; proposal_vote_e proposal_vote; yay_vote_type_e vote_type; - uint32_t number_of_councils; - bytes_t councils; - bytes_t eth_bridge_signature; - // proposal author address + // proposal voter address bytes_t voter; - // Delegator addresses + // delegation addresses uint32_t number_of_delegations; bytes_t delegations; } tx_vote_proposal_t; typedef struct { - bytes_t pubkey; + uint32_t number_of_pubkeys; + bytes_t pubkeys; + uint8_t threshold; bytes_t vp_type_sechash; bytes_t vp_type_hash; uint8_t vp_type_secidx; @@ -138,14 +148,22 @@ typedef struct { bytes_t source; } tx_withdraw_t; +typedef struct { + bytes_t validator; +} tx_unjail_validator_t; + typedef struct { bytes_t validator; uint256_t new_rate; } tx_commission_change_t; typedef struct { - bytes_t account_key; + uint32_t number_of_account_keys; + bytes_t account_keys; + uint8_t threshold; bytes_t consensus_key; + bytes_t eth_cold_key; + bytes_t eth_hot_key; bytes_t protocol_key; bytes_t dkg_key; uint256_t commission_rate; @@ -158,6 +176,11 @@ typedef struct { typedef struct { bytes_t address; + uint32_t number_of_pubkeys; + bytes_t pubkeys; + uint8_t has_threshold; + uint8_t threshold; + uint8_t has_vp_code; bytes_t vp_type_sechash; bytes_t vp_type_hash; uint8_t vp_type_secidx; @@ -169,8 +192,6 @@ typedef struct { bytes_t target_address; // Transferred token address bytes_t token; - uint8_t has_sub_prefix; - bytes_t sub_prefix; uint256_t amount; uint8_t amount_denom; const char* symbol; @@ -180,6 +201,17 @@ typedef struct { bytes_t shielded_hash; } tx_transfer_t; +typedef struct { + bytes_t port_id; + bytes_t channel_id; + bytes_t token_address; + bytes_t token_amount; + bytes_t sender_address; + bytes_t receiver; + uint8_t timeout_height; + timestamp_t timeout_timestamp; +} tx_ibc_t; + typedef struct { bytes_t address; uint256_t amount; diff --git a/js/src/processResponses.ts b/js/src/processResponses.ts index 6d78f4d8..b65e455a 100644 --- a/js/src/processResponses.ts +++ b/js/src/processResponses.ts @@ -21,7 +21,8 @@ import { ISignature } from './types' export function getSignatureResponse(response: Buffer): ISignature { console.log('Processing get signature response') - // App sign response: [ pubkey(33) | raw_salt(8) | raw_signature(65) | wrapper_salt(8) | wrapper_signature(65) ] + // App sign response: [ pubkey(33) | raw_salt(8) | raw_signature(65) | wrapper_salt(8) | wrapper_signature(65) | + // raw_indices_len(1) | wrapper_indices_len(1) | indices(wrapper_indices_len) ] let offset = 0; const pubkey = Buffer.from(response.subarray(offset, offset + PK_LEN_PLUS_TAG)); @@ -35,12 +36,25 @@ export function getSignatureResponse(response: Buffer): ISignature { offset += SALT_LEN; const wrapper_signature = Buffer.from(response.subarray(offset, offset + SIG_LEN_PLUS_TAG)); + offset += SIG_LEN_PLUS_TAG; + const raw_indices_len = response[offset]; + offset += 1; + const raw_indices = Buffer.from(response.subarray(offset, offset + raw_indices_len)) + offset += raw_indices_len; + + const wrapper_indices_len = response[offset]; + offset += 1; + const wrapper_indices = Buffer.from(response.subarray(offset, offset + wrapper_indices_len)) + offset += wrapper_indices_len; + return { pubkey, raw_salt, raw_signature, wrapper_salt, wrapper_signature, + raw_indices, + wrapper_indices, } } diff --git a/js/src/types.ts b/js/src/types.ts index 66c81835..e1ccb351 100644 --- a/js/src/types.ts +++ b/js/src/types.ts @@ -61,6 +61,8 @@ export interface ISignature { raw_signature: Buffer wrapper_salt: Buffer wrapper_signature: Buffer + raw_indices: Buffer + wrapper_indices: Buffer } export class Signature implements ISignature { pubkey: Buffer @@ -68,6 +70,8 @@ export class Signature implements ISignature { raw_signature: Buffer wrapper_salt: Buffer wrapper_signature: Buffer + raw_indices: Buffer + wrapper_indices: Buffer isFilled: boolean constructor(signature?: ISignature) { @@ -78,6 +82,8 @@ export class Signature implements ISignature { this.raw_signature = Buffer.from([]) this.wrapper_salt = Buffer.from([]) this.wrapper_signature = Buffer.from([]) + this.raw_indices = Buffer.from([]) + this.wrapper_indices = Buffer.from([]) } else { this.isFilled = true this.pubkey = signature.pubkey @@ -85,6 +91,8 @@ export class Signature implements ISignature { this.raw_signature = signature.raw_signature this.wrapper_salt = signature.wrapper_salt this.wrapper_signature = signature.wrapper_signature + this.raw_indices = signature.raw_indices + this.wrapper_indices = signature.wrapper_indices } } } diff --git a/tests/testvectors.json b/tests/testvectors.json index 4c8f0a58..50ed7a78 100644 --- a/tests/testvectors.json +++ b/tests/testvectors.json @@ -1,860 +1,68 @@ [ - { - "blob": "1e0000006532652d746573742e3935366638646232353162386231643331613539320023000000323032332d30372d32355431313a35393a30322e3333313633333539332b30303a303059111eccc931a8f485d7f3caf9ba47e57ec5be98c683bd04061014696c3f2646c7f08d67d77336c96ef793a0a55e66342770cad45236071bc858286b20345ea00100e1f50500000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e6007af50fc05fe1784a3d1665d168c9527f86940c4f14f72d048c40a2af12cf07c001000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000bbc0ea8c890100006300000000f34a4aa63fec052ca158bf0add63a0594610dae300fc6221811e2f240c89e66c017b4de5be993f0483004b88fb913a0766e30a00b2fb8aa2949a710e24e600ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff06000002bbc0ea8c890100000055f9780f74dfbcfefe09fb667331893abd63eddfcf07f78e5f19711cb9f0a8aa", - "index": 0, - "name": "Transfer_0", - "output": [ - "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 [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" - ], - "valid": true - }, - { - "blob": "1e0000006532652d746573742e3935366638646232353162386231643331613539320023000000323032332d30372d32355431313a35393a30362e3938373034313334332b30303a30304362dd9b39cb0ba721ee29748187ec983fac319d3f79e9f2d65ba1b0e06910d35c338539eeb4bf53a614f93b0747f6437ee1b47583010a6735f442191716eedb0100e1f50500000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e6007af50fc05fe1784a3d1665d168c9527f86940c4f14f72d048c40a2af12cf07c001000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000ebd2ea8c890100004b000000009bcb6700c1ebb4079a01d9bb6a486880e250c44900e9a435000000000000000000000000000000000000000000000000000000000100f34a4aa63fec052ca158bf0add63a0594610dae302ebd2ea8c8901000000f44f821502b1d8ef3bb11af645babe350394c39c6b8b1cef848bf60aa4aaaf8d", - "index": 0, - "name": "Bond_0", - "output": [ - "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] : 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" - ], - "valid": true - }, - { - "blob": "1e0000006532652d746573742e3935366638646232353162386231643331613539320023000000323032332d30372d32355431313a35393a31322e3539313238323634352b30303a303072749d6e6a699934deb7a5c269db61384d23aae837072fa11b508591f20b5505a0634b7b8de34e2b3f8108e10bfbe2442d5465d2843e748d84013dd55d9944600100e1f50500000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e6007af50fc05fe1784a3d1665d168c9527f86940c4f14f72d048c40a2af12cf07c001000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000cfe8ea8c890100003500000000f34a4aa63fec052ca158bf0add63a0594610dae300c817a80400000000000000000000000000000000000000000000000000000002cfe8ea8c890100000000e41e2272cb17dab319ea0598854db738ee901d75893b61b8b754460f23df78", - "index": 0, - "name": "Change_Commission_0", - "output": [ - "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] : 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": "1e0000006532652d746573742e3935366638646232353162386231643331613539320023000000323032332d30372d32355431313a35393a31362e3430333134313536362b30303a30308312962d34c6e10a2f918a152b1ed7ffd2beb18b8b0f2575a1891f69b080d5fc51dfce8c3dbd1a512d3139a2474805b69fa123cb661a0408130b0cc17f302b7f0100e1f50500000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e600ed82fbf457e5a51745bacff287bf32d53748fdccace30d7557627d04c158e76901000000000000000000000000000000000000000000000000000000000000000000000000000000000400000001e3f7ea8c89010000007e68fb834a7772c82a312c4e6e519d97282cce39507950c35fe89f1c347a4a2e01e4f7ea8c89010000000c81a357320d8d093ab99792a92af4c0fe7e9ac010199a5e85d41cc89c331e8f00f7f7ea8c89010000700000000093336b2039a50ff0243de3b107f7c4f16f05a4795a968dfa5f2bef23ae05863200d52d1dcea809648d4d0cbd0697ff0b7a983230b40001c682782daa71e225c6be8a7375a187a3cb27fb48fe3bfecfe0f1f79caa9cd7ce0c0000000000000018000000000000001e0000000000000002f7f7ea8c8901000000d0a4d681cdc8b83e04a64fbc592bcbe9d93f28164d2d5cb5ff9a4fbd43d206b8", - "index": 0, - "name": "Init_Proposal_0", - "output": [ - "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 : 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] : 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": "1e0000006532652d746573742e3935366638646232353162386231643331613539320023000000323032332d30372d32355431313a35393a32352e3735393733383935312b30303a3030a805dc58fa2cc0595e1ab3cd63bc93428251e2befed875092f86417cb9f7c6c5d377e012ad582f407d4290476022337d1cb9a2d37de90920a7f448d4f972a94e0100e1f50500000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e600ed82fbf457e5a51745bacff287bf32d53748fdccace30d7557627d04c158e7690100000000000000000000000000000000000000000000000000000000000000000000000000000001010000000000000000260100000000000002000000003f1ceb8c89010000230000000000000000000000000000d52d1dcea809648d4d0cbd0697ff0b7a983230b400000000023f1ceb8c8901000000bd140bc5daefff5bc3975ed6658860a2df919bd0fe936d66d88d2bdc7412e8b6", - "index": 0, - "name": "Vote_Proposal_1", - "output": [ - "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] : 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" - ], - "valid": true - }, - { - "blob": "1e0000006532652d746573742e3935366638646232353162386231643331613539320023000000323032332d30372d32355431313a35393a32392e3635353337343034342b30303a303033fb24c442282966efed3fe3a347ba38a081e0db41b1acf27f7c39dfbb4640ddfcadf30f232a660394b42cb19ffac2e0a6ffc47f581f484ac5733497eea21b1e0100e1f50500000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e600ed82fbf457e5a51745bacff287bf32d53748fdccace30d7557627d04c158e76901000000000000000000000000000000000000000000000000000000000000000000000000000000010101000000000000006e000000000000000200000000772beb8c890100004b000000009bcb6700c1ebb4079a01d9bb6a486880e250c44900e9a435000000000000000000000000000000000000000000000000000000000100d52d1dcea809648d4d0cbd0697ff0b7a983230b402772beb8c8901000000f44f821502b1d8ef3bb11af645babe350394c39c6b8b1cef848bf60aa4aaaf8d", - "index": 0, - "name": "Bond_1", - "output": [ - "0 | Type : Bond", - "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] : 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-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" - ], - "valid": true - }, - { - "blob": "1e0000006532652d746573742e3935366638646232353162386231643331613539320023000000323032332d30372d32355431313a35393a33332e3836333636373330392b30303a303040803822095af15d73d56caa915846826854059b67e5d12dc17f4cd0ebe91a5ce1cdceb61a32ad0e09e476d2205a7d6fb72ab24d6cbe71f5fd344167fbf21df20100e1f50500000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e600ed82fbf457e5a51745bacff287bf32d53748fdccace30d7557627d04c158e769010000000000000000000000000000000000000000000000000000000000000000000000000000000101020000000000000072000000000000000200000000e73beb8c890100003500000000d52d1dcea809648d4d0cbd0697ff0b7a983230b400743ba40b00000000000000000000000000000000000000000000000000000002e73beb8c890100000000e41e2272cb17dab319ea0598854db738ee901d75893b61b8b754460f23df78", - "index": 0, - "name": "Change_Commission_1", - "output": [ - "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] : 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" - ], - "valid": true - }, - { - "blob": "1e0000006532652d746573742e3935366638646232353162386231643331613539320023000000323032332d30372d32355431313a35393a33392e3939313030383932352b30303a30308d78ed78fe76fc3129164ea37befe029ba427b4feb3326363e7e0978653d8230f03100d72b3d920a36fc4dc938591254c95c9a5558e2c97e8ba3c8ce369872be0100e1f50500000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e6007af50fc05fe1784a3d1665d168c9527f86940c4f14f72d048c40a2af12cf07c001000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000d753eb8c890100004b000000009bcb6700c1ebb4079a01d9bb6a486880e250c44900e9a435000000000000000000000000000000000000000000000000000000000100f34a4aa63fec052ca158bf0add63a0594610dae302d753eb8c8901000000f44f821502b1d8ef3bb11af645babe350394c39c6b8b1cef848bf60aa4aaaf8d", - "index": 0, - "name": "Bond_2", - "output": [ - "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] : 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: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" - ], - "valid": true - }, - { - "blob": "1e0000006532652d746573742e3935366638646232353162386231643331613539320023000000323032332d30372d32355431313a35393a34332e3537313632303935322b30303a3030c1900f787f3fdf242f1b1125baff2ec5ad1bd4a18a7261e48514bcc91fad695cc761911d7e5865fa46707e12675e71aa1fe1e23fb6f2d024f97d6bb49d37a1740100e1f50500000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e6007af50fc05fe1784a3d1665d168c9527f86940c4f14f72d048c40a2af12cf07c001000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000d361eb8c890100003500000000f34a4aa63fec052ca158bf0add63a0594610dae3003c534c1000000000000000000000000000000000000000000000000000000002d361eb8c890100000000e41e2272cb17dab319ea0598854db738ee901d75893b61b8b754460f23df78", - "index": 0, - "name": "Change_Commission_2", - "output": [ - "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] : 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": "1e0000006532652d746573742e3935366638646232353162386231643331613539320023000000323032332d30372d32355431313a35393a34372e3330333035353533352b30303a3030c8e5942907ae95388ec25bc9ae16a1d14584ec73674cdb4def2678813ac98055c3ddc3a4a713aef7be7e8a8c3dbb55d89251e4222f6865f84a3f1ea2b3f792430100e1f50500000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e600ed82fbf457e5a51745bacff287bf32d53748fdccace30d7557627d04c158e7690100000000000000000000000000000000000000000000000000000000000000000000000000000001010300000000000000a90000000000000003000000019770eb8c89010000007e68fb834a7772c82a312c4e6e519d97282cce39507950c35fe89f1c347a4a2e009770eb8c890100004f00000000c0fd1bf858dba97eb9a0302efb149e91d023c562eae5fdbfa3f6551b013dd51600d52d1dcea809648d4d0cbd0697ff0b7a983230b4020c0000000000000018000000000000001e00000000000000029770eb8c8901000000d0a4d681cdc8b83e04a64fbc592bcbe9d93f28164d2d5cb5ff9a4fbd43d206b8", - "index": 0, - "name": "Init_Proposal_1", - "output": [ - "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_3", - "output": [ - "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] : 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: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" - ], - "valid": true - }, - { - "blob": "1e0000006532652d746573742e3935366638646232353162386231643331613539320023000000323032332d30372d32355431313a35393a35362e3831393331333134312b30303a3030cf2e2e7cc57253945dc0a140caa322295d2f2d971482f91753434c79deb84a4d74eae9187e66972be3678b57c1ec152fbd4c835a6f7700d8c953f8c72320f7540100e1f50500000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e6007af50fc05fe1784a3d1665d168c9527f86940c4f14f72d048c40a2af12cf07c0010000000000000000000000000000000000000000000000000000000000000000000000000000000002000000009395eb8c890100003500000000f34a4aa63fec052ca158bf0add63a0594610dae300046bf414000000000000000000000000000000000000000000000000000000029395eb8c890100000000e41e2272cb17dab319ea0598854db738ee901d75893b61b8b754460f23df78", - "index": 0, - "name": "Change_Commission_3", - "output": [ - "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] : 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" - ], - "valid": true - }, - { - "blob": "1e0000006532652d746573742e3935366638646232353162386231643331613539320023000000323032332d30372d32355431323a30303a30302e3630363938303037302b30303a303053259ce0e64a4caae6677a4abde8cf4dc3832eb80ad07003a7314b7c5151cb5c1a991c4af91aacfb6a31712df79abe69aac88aff381dbbd1317d860c665d440b0100e1f50500000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e600ed82fbf457e5a51745bacff287bf32d53748fdccace30d7557627d04c158e7690100000000000000000000000000000000000000000000000000000000000000000000000000000001010400000000000000340000000000000003000000018ba4eb8c89010000007e68fb834a7772c82a312c4e6e519d97282cce39507950c35fe89f1c347a4a2e008ba4eb8c890100004f00000000aaf0a23ffde974c16af5c82c80c95b4f2ce220b41e0e9e8c61a427ae5ef3f36600d52d1dcea809648d4d0cbd0697ff0b7a983230b4010c0000000000000018000000000000001e00000000000000028ba4eb8c8901000000d0a4d681cdc8b83e04a64fbc592bcbe9d93f28164d2d5cb5ff9a4fbd43d206b8", - "index": 0, - "name": "Init_Proposal_2", - "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: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] : 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": "1e0000006532652d746573742e3935366638646232353162386231643331613539320023000000323032332d30372d32355431323a30303a31342e3034333332343938372b30303a30308cff99cebe4760c3720e117cb6c52506da15cfde8dd2df45813875c980eaa8b89bc92935c910412f9f93c317246ca5a21485a5cd8602fe745d3bcea991b4e8520100e1f50500000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e6007af50fc05fe1784a3d1665d168c9527f86940c4f14f72d048c40a2af12cf07c001000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000dbd8eb8c8901000071000000030000000000000000010100000000d52d1dcea809648d4d0cbd0697ff0b7a983230b4840300000000000000000000000000000000000000000000000000000000000000f34a4aa63fec052ca158bf0add63a0594610dae301000000009bcb6700c1ebb4079a01d9bb6a486880e250c44902dbd8eb8c8901000000bd140bc5daefff5bc3975ed6658860a2df919bd0fe936d66d88d2bdc7412e8b6", - "index": 0, - "name": "Vote_Proposal_3", - "output": [ - "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] : 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": "1e0000006532652d746573742e3935366638646232353162386231643331613539320023000000323032332d30372d32355431323a30303a31372e3833313130353731372b30303a303088e19c0596e2491ea5c46b96fbb5910c2959b94baaad845b672b70673ff9db9f1c307b2bf1c182d25dd1bc67e1724d48ad66f93f7d10fb70976114ce6aed8a5e0100e1f50500000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e6007af50fc05fe1784a3d1665d168c9527f86940c4f14f72d048c40a2af12cf07c001000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000a7e7eb8c890100006300000000f34a4aa63fec052ca158bf0add63a0594610dae300fc6221811e2f240c89e66c017b4de5be993f0483003d234d1e39e181d52d018065e142ca91c052be3e00003717890000000000000000000000000000000000000000000000000000000008000002a7e7eb8c890100000055f9780f74dfbcfefe09fb667331893abd63eddfcf07f78e5f19711cb9f0a8aa", - "index": 0, - "name": "Transfer_1", - "output": [ - "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] : 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": "1e0000006532652d746573742e3935366638646232353162386231643331613539320023000000323032332d30372d32355431323a30303a32312e3338333533333831352b30303a3030db8a27db475d2021a7b4d9c41d9caeec43e1b522db913be504c0545d3ba8e7abd56ee28d9687382a0eb22c5db74a2548aeef050698a677a749e3744d1d2ebd720100e1f50500000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e6007af50fc05fe1784a3d1665d168c9527f86940c4f14f72d048c40a2af12cf07c00100000000000000000000000000000000000000000000000000000000000000000000000000000000020000000087f5eb8c890100003600000000f34a4aa63fec052ca158bf0add63a0594610dae340787d0100000000000000000000000000000000000000000000000000000000000287f5eb8c8901000000f44f821502b1d8ef3bb11af645babe350394c39c6b8b1cef848bf60aa4aaaf8d", - "index": 0, - "name": "Bond_4", - "output": [ - "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] : 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" - ], - "valid": true - }, - { - "blob": "1e0000006532652d746573742e3935366638646232353162386231643331613539320023000000323032332d30372d32355431323a30303a32342e3937353337373437382b30303a3030d7be7fdd44047fa65ecdb562895894bb5095cd568514bdbbde7f011750088ab0194986460d96b8469c5d22bf5d7bb56794b305053e58819b31560e92fd9133ab0100e1f50500000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e6007af50fc05fe1784a3d1665d168c9527f86940c4f14f72d048c40a2af12cf07c0010000000000000000000000000000000000000000000000000000000000000000000000000000000002000000008f03ec8c890100003500000000f34a4aa63fec052ca158bf0add63a0594610dae300cc829c19000000000000000000000000000000000000000000000000000000028f03ec8c890100000000e41e2272cb17dab319ea0598854db738ee901d75893b61b8b754460f23df78", - "index": 0, - "name": "Change_Commission_4", - "output": [ - "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] : 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" - ], - "valid": true - }, - { - "blob": "1e0000006532652d746573742e3935366638646232353162386231643331613539320023000000323032332d30372d32355431323a30303a32382e3430353433353137382b30303a3030671fc8d48b078deecfb4aa5a19b4e23511e3616c82de17f9f3f582b76551d171aa9fbcb19773b168b4e2ee8f4d4a479f755f54e0e0d6a395807bfae586fcc8ac0100e1f50500000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e600ed82fbf457e5a51745bacff287bf32d53748fdccace30d7557627d04c158e769010000000000000000000000000000000000000000000000000000000000000000000000000000000101060000000000000078030000000000000200000000f510ec8c890100002100000000ed82fbf457e5a51745bacff287bf32d53748fdccace30d7557627d04c158e76902f510ec8c890100000055ffd11771034c91738bf8dd55ca2ffa1299be50fdb08ceed071d950469ddfee", - "index": 0, - "name": "Reveal_Pubkey_0", - "output": [ - "0 | Type : Reveal Pubkey", - "1 | Public key [1/2] : 00ed82fbf457e5a51745bacff287bf32d53748", - "1 | Public key [2/2] : fdccace30d7557627d04c158e769" - ], - "output_expert": [ - "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": "1e0000006532652d746573742e3935366638646232353162386231643331613539320023000000323032332d30372d32355431323a30303a33322e3433313038343732302b30303a30301366bd1179f8fd584dc1ce5439b02473b924ce36600c4d8170c30fb3a13527c4d244ccd591c681fe23d4588ce7a4236b44b261d5da22de3ee0aa4135b0d1f1c20100e1f50500000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e6007af50fc05fe1784a3d1665d168c9527f86940c4f14f72d048c40a2af12cf07c001000000000000000000000000000000000000000000000000000000000000000000000000000000000300000001af20ec8c89010000002451515c3a6fa063eb25d90ef15268dfbdd37133521c34fb58b68b1c4b61918000af20ec8c890100003500000000f34a4aa63fec052ca158bf0add63a0594610dae331ce9afd993f645d851412905134e176818757c8f010478146a21e95d632ebf902af20ec8c8901000000087de3038482e3cc0fd53c2bf5dd988b6a55a5507c271403a48b9456162b7cc7", - "index": 0, - "name": "Update_VP_0", - "output": [ - "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] : 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" - ], - "valid": true - }, - { - "blob": "1e0000006532652d746573742e3935366638646232353162386231643331613539320023000000323032332d30372d32355431323a30303a33352e3930373438393932302b30303a3030dcb97e630df8fae6e8814911c56eb716e3f7c1d125c69d1f3b0e4c51e430552625a16a3494e8e092ca3224a4ed90c6fd1a40526123a7273a0c916fe14fe708dd0100e1f50500000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e6007af50fc05fe1784a3d1665d168c9527f86940c4f14f72d048c40a2af12cf07c001000000000000000000000000000000000000000000000000000000000000000000000000000000000300000001432eec8c89010000002451515c3a6fa063eb25d90ef15268dfbdd37133521c34fb58b68b1c4b61918000432eec8c890100002701000000428ca0cd7a7a720cde875fdcabbe4b3db926bd478886b6c1484f0b0a646a4c1a000cb719560f7bd0a9f4c3e73a728f2210b7fa197b6743909b3cf8a0fdd55de27200232acf422de5afaaaee412232f631382c693ed1364715a765d3eea0bc4bc313e60000000508ed7b67c401472034aeb8d659be3ba441080f24cc1b065edf4a790889e8691cfb08da85a7947421afc531a5f266e147ffca0fb47e2fc33a8c843ea678e797f16a4a236829120453d544b42baafc7f6db59e4166b6f7694b9c81619a9ba0f0d00743ba40b00000000000000000000000000000000000000000000000000000000e40b5402000000000000000000000000000000000000000000000000000000a4d23dca56aaa28344bc77cf0637ac5eab3674ee3a81773cb70df9f18496416d02432eec8c8901000000e54eb11bed86e57e6888a70ef4d2705034b42fcc7dd4c1314a49f59dc004e497", - "index": 0, - "name": "Init_Validator_0", - "output": [ - "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] : 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": "1e0000006532652d746573742e3935366638646232353162386231643331613539320023000000323032332d30372d32355431323a30303a33392e3432323836363938392b30303a3030f416c182ae9c409361b02a31e3486070d3a49b21a5dc12b0a369bab0632ed5335f2bddf7cc2a341ced88baec710d8412da003ae604e71f35f1c39e9fa6c816350100e1f50500000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e600402c55885d3564e43aa39a8df24ce55a94d38b3959df92f94a18387d489be9d101000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000fe3bec8c890100003600000000fc6221811e2f240c89e66c017b4de5be993f0483404b4c00000000000000000000000000000000000000000000000000000000000002fe3bec8c89010000004878bf9780634d8ee4c89432d712e5a7197373590cea658fe29c5ef15c501fe5", - "index": 0, - "name": "Unbond_0", - "output": [ - "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] : 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": "1e0000006532652d746573742e3935366638646232353162386231643331613539320023000000323032332d30372d32355431323a30303a34332e3231353434373938332b30303a3030d5ded90700143350a9b752f127eaf3cbf373dfec89a418783e0cf0531f3e499dbcbf818f3dbb12e653cbe048ec7b6ca8fa5229ae21e7818967ab8a711249398c0100e1f50500000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e600ed82fbf457e5a51745bacff287bf32d53748fdccace30d7557627d04c158e7690100000000000000000000000000000000000000000000000000000000000000000000000000000001010700000000000000a8000000000000000200000000cf4aec8c890100001600000000d52d1dcea809648d4d0cbd0697ff0b7a983230b40002cf4aec8c89010000009d366fb38354c74e9ddbdd7420e46f2201f3474468b84947ba62631631fa8db1", - "index": 0, - "name": "Withdraw_0", - "output": [ - "0 | Type : Withdraw", - "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" - ], - "valid": true - }, - { - "blob": "1e0000006532652d746573742e3935366638646232353162386231643331613539320023000000323032332d30372d32355431323a30303a34372e3938373233383836352b30303a303029da8e5233390226d79f7e0c9a44286d4b778e0bb712ecbe936d9a26e763fb73be66a33fb8e7ab4d5196a96daa2682d0e4f753266edfcae844d2708a997fec590100e1f50500000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e600ed82fbf457e5a51745bacff287bf32d53748fdccace30d7557627d04c158e769010000000000000000000000000000000000000000000000000000000000000000000000000000000101080000000000000060000000000000000300000001735dec8c89010000002451515c3a6fa063eb25d90ef15268dfbdd37133521c34fb58b68b1c4b61918000735dec8c890100004100000000ed82fbf457e5a51745bacff287bf32d53748fdccace30d7557627d04c158e769a689b301f02e22efa32887467febca6afbf6ccdfd2e0370a3a85b90aab08d9d302735dec8c890100000039c4f8d4e9b14aac4491d115fa5d4382be490ac9b5bf6d191f8aa66fa4e12bf6", - "index": 0, - "name": "Init_Account_0", - "output": [ - "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] : 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" - ], - "valid": true - }, - { - "blob": "1e0000006532652d746573742e3935366638646232353162386231643331613539320023000000323032332d30372d32355431323a30303a35312e3735343339363437332b30303a3030d0f08b981f54237262a2468651d819b7ebd89aa63452f2aa42defe0e6cf5315c837c18636fe99f84aba9984358e429d880e6d36508273e1ac5e1989c0bdd3fe30100e1f50500000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e600ed82fbf457e5a51745bacff287bf32d53748fdccace30d7557627d04c158e7690100000000000000000000000000000000000000000000000000000000000000000000000000000001010900000000000000040000000000000002000000002a6cec8c89010000960c000023204e616d6164610a0a5b215b4c6963656e73653a2047504c2076335d2868747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d47504c76332d626c75652e737667295d282e2f4c4943454e5345290a0a2323204f766572766965770a0a5b4e616d6164615d28687474703a2f2f6e616d6164612e6e65742920697320612050726f6f662d6f662d5374616b65204c3120666f7220696e746572636861696e2061737365742d61676e6f7374696320707269766163792e204e616d61646120757365732054656e6465726d696e74204246540a636f6e73656e73757320616e6420656e61626c6573206d756c74692d617373657420736869656c646564207472616e736665727320666f7220616e79206e61746976650a6f72206e6f6e2d6e61746976652061737365742e204e616d6164612066656174757265732066756c6c204942432070726f746f636f6c20737570706f72742c0a61206e61746976656c7920696e746567726174656420457468657265756d206272696467652c2061206d6f6465726e2070726f6f662d6f662d7374616b650a73797374656d2077697468206175746f6d617469632072657761726420636f6d706f756e64696e6720616e6420637562696320736c617368696e672c20616e6420610a7374616b652d776569676874656420676f7665726e616e6365207369676e616c6c696e67206d656368616e69736d2e205573657273206f6620736869656c6465640a7472616e73666572732061726520726577617264656420666f7220746865697220636f6e747269627574696f6e7320746f2074686520707269766163792073657420696e0a74686520666f726d206f66206e61746976652070726f746f636f6c20746f6b656e732e2041206d756c74692d617373657420736869656c646564207472616e736665720a77616c6c65742069732070726f766964656420696e206f7264657220746f20666163696c6974617465207361666520616e64207072697661746520757365720a696e746572616374696f6e2077697468207468652070726f746f636f6c2e0a0a2a20426c6f67706f73743a205b496e74726f647563696e67204e616d6164613a20496e746572636861696e2041737365742d61676e6f7374696320507269766163795d2868747470733a2f2f626c6f672e6e616d6164612e6e65742f696e74726f647563696e672d6e616d6164612d696e746572636861696e2d61737365742d61676e6f737469632d707269766163792f290a0a232320f09f939320446f63730a0a2a2064657620646f63733a206275696c742066726f6d205b646576206d64426f6f6b5d282e2f646f63756d656e746174696f6e2f6465762f290a0a2323205761726e696e670a0a3e2048657265206c617920647261676f6e733a207468697320636f646562617365206973207374696c6c206578706572696d656e74616c2c2074727920617420796f7572206f776e207269736b210a0a232320f09f92be20496e7374616c6c696e670a0a546865726520697320612073696e676c6520636f6d6d616e6420746f206275696c6420616e6420696e7374616c6c204e616d6164612065786563757461626c65732066726f6d20736f757263652028746865206e6f64652c2074686520636c69656e7420616e64207468652077616c6c6574292e205468697320636f6d6d616e642077696c6c20616c736f207665726966792074686174206120636f6d70617469626c652076657273696f6e206f66205b54656e6465726d696e745d2823646570656e64656e636965732920697320617661696c61626c6520616e64206966206e6f742c20617474656d707420746f20696e7374616c6c2069742e204e6f746520746861742063757272656e746c79206174206c6561737420313647422052414d206973206e656564656420746f206275696c642066726f6d20736f757263652e0a0a6060607368656c6c0a6d616b6520696e7374616c6c0a6060600a0a416674657220696e7374616c6c6174696f6e2c20746865206d61696e20606e616d616461602065786563757461626c652077696c6c20626520617661696c61626c65206f6e20706174682e0a0a546f2066696e6420686f7720746f207573652069742c20636865636b206f757420746865205b557365722047756964652073656374696f6e206f662074686520646f63735d2868747470733a2f2f646f63732e6e616d6164612e6e65742f757365722d67756964652f696e6465782e68746d6c292e0a0a466f72206d6f72652064657461696c656420696e737472756374696f6e7320616e64206d6f726520696e7374616c6c206f7074696f6e732c2073656520746865205b496e7374616c6c0a73656374696f6e5d2868747470733a2f2f646f63732e6e616d6164612e6e65742f757365722d67756964652f696e7374616c6c2f696e6465782e68746d6c29206f662074686520557365720a47756964652e0a0a232320e29a99efb88f20446576656c6f706d656e740a0a6060607368656c6c0a23204275696c64207468652070726f76696465642076616c69646974792070726564696361746520616e64207472616e73616374696f6e207761736d206d6f64756c65730a6d616b65206275696c642d7761736d2d736372697074732d646f636b65720a0a2320446576656c6f706d656e742028646562756729206275696c64204e616d6164612c20776869636820696e636c7564657320612076616c696461746f7220616e6420736f6d652064656661756c74200a23206163636f756e74732c2077686f7365206b65797320616e64206164647265737365732061726520617661696c61626c6520696e207468652077616c6c65740a4e414d4144415f4445563d74727565206d616b650a6060600a0a232323204265666f7265207375626d697474696e6720612050522c20706c73206d616b65207375726520746f2072756e2074686520666f6c6c6f77696e670a0a6060607368656c6c0a2320466f726d61742074686520636f64650a6d616b6520666d740a0a23204c696e742074686520636f64650a6d616b6520636c697070790a6060600a0a232320f09fa7be204c6f6767696e670a0a546f206368616e676520746865206c6f67206c6576656c2c2073657420604e414d4144415f4c4f476020656e7669726f6e6d656e74207661726961626c6520746f206f6e65206f663a0a0a2a20606572726f72600a2a20607761726e600a2a2060696e666f600a2a20606465627567600a2a20607472616365600a0a5468652064656661756c742069732073657420746f2060696e666f6020666f7220616c6c20746865206d6f64756c65732c2065787065637420666f722054656e6465726d696e7420414243492c207768696368206861732061206c6f74206f662060646562756760206c6f6767696e672e0a0a466f72206d6f72652066696e652d677261696e6564206c6f6767696e67206c6576656c732073657474696e67732c20706c6561736520726566657220746f20746865205b74726163696e67207375627363726962657220646f63735d2868747470733a2f2f646f63732e72732f74726163696e672d737562736372696265722f302e322e31382f74726163696e675f737562736372696265722f7374727563742e456e7646696c7465722e68746d6c23646972656374697665732920666f72206d6f726520696e666f726d6174696f6e2e0a0a546f20737769746368206f6e206c6f6767696e6720696e2074657374732074686174207573652060235b746573745d60206d6163726f2066726f6d2060746573745f6c6f673a3a74657374602c207573652060525553545f4c4f4760207769746820652e672e2060525553545f4c4f473d696e666f20636172676f2074657374202d2d202d2d6e6f63617074757265602e0a0a232320486f7720746f20636f6e747269627574650a0a506c656173652073656520746865205b636f6e747269627574696e6720706167655d282e2f434f4e545249425554494e472e6d64292e0a0a23232320446570656e64656e636965730a0a546865206c65646765722063757272656e746c792072657175697265732074686174207468652048656c69617820666f726b206f662074656e6465726d696e745b76302e312e342d61626369706c75735d20697320696e7374616c6c656420616e6420617661696c61626c65206f6e20706174682e20546869732063616e206265206163686965766564207468726f75676820666f6c6c6f77696e67205b746865736520696e737472756374696f6e735d2868747470733a2f2f646f63732e6e616d6164612e6e65742f757365722d67756964652f696e7374616c6c2f696e7374616c6c696e672d74656e6465726d696e742e68746d6c290a022a6cec8c890100000005bfa4e2b23c8c59667e421944bef88c36dff5c015ed3a2952e4daf0fe5cb018", - "index": 0, - "name": "Custom_0", - "output": [ - "0 | Type : Custom" - ], - "output_expert": [ - "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":"1e0000006532652d746573742e3034666165323161626338663330613866653336640023000000323032332d31302d32345431323a31363a30332e3531373433363135372b30303a3030ddc8e7f3a1463df54faae663873d8f46ca67d90a50eb6cace2cf44b707cba76addd167e7c54f7cb24c7c8231df0487b49d8fbfd5dfc51065406b50d2bbd8bf3e010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e600995c47158272b094640f33e1be2e8ef48715ecce0e1307d4c7a71045e35d6a430000000000000000204e00000000000000000200000002e9099d618b01000000bec1efd37d88876be4176d1afc0b6fa784901efe18cf9ec30293313be855d81400e9099d618b0100004b00000000c3b0c3ac7ae423be6dfb63ef2c73ec5b2d30841800e9a435000000000000000000000000000000000000000000000000000000000100b9e8b32a0b14aa741134a95e0468588dd217645e","index":0,"name":"Bond_0","output":["0 | Type : Bond","1 | Source [1/3] : atest1v4ehgw36ggu52wzzxveyzvzzxy6yzsfh","1 | Source [2/3] : xscnzve5gyun23fsxsmrsdfc8pzygv33xumrgd","1 | Source [3/3] : 29lc2dtj","2 | Validator [1/3] : atest1v4ehgw36gve5yvzrxdq5xd6pg56ryv6z","2 | Validator [2/3] : g5myg3jzxce5233jgvmnx32rx4pry3pnxqurgv","2 | Validator [3/3] : fch8fl7d","3 | Amount : NAM 900.0"],"output_expert":["0 | Code hash [1/2] : bec1efd37d88876be4176d1afc0b6fa784901e","0 | Code hash [2/2] : fe18cf9ec30293313be855d814","1 | Source [1/3] : atest1v4ehgw36ggu52wzzxveyzvzzxy6yzsfh","1 | Source [2/3] : xscnzve5gyun23fsxsmrsdfc8pzygv33xumrgd","1 | Source [3/3] : 29lc2dtj","2 | Validator [1/3] : atest1v4ehgw36gve5yvzrxdq5xd6pg56ryv6z","2 | Validator [2/3] : g5myg3jzxce5233jgvmnx32rx4pry3pnxqurgv","2 | Validator [3/3] : fch8fl7d","3 | Amount : NAM 900.0","4 | Timestamp : 2023-10-24 12:16:03.517436157 UTC","5 | Pubkey [1/2] : 00995c47158272b094640f33e1be2e8ef48715","5 | Pubkey [2/2] : ecce0e1307d4c7a71045e35d6a43","6 | Epoch : 0","7 | Gas limit : 0.02","8 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e3034666165323161626338663330613866653336640023000000323032332d31302d32345431323a31363a30372e3532373730373838352b30303a3030915472a63a42e25ff7e5c10b0ff93faa5c152f7a90368e8107c114a5ceb6f092dd800abb3a3dee0fe1ebe0ca0ab4d65fdd5866c7354d4e8172ca28ad06077f6d010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e600995c47158272b094640f33e1be2e8ef48715ecce0e1307d4c7a71045e35d6a430100000000000000204e0000000000000000020000000292199d618b010000000a7624e9884b681e0af8708961b4e0c98a025ef571676cfbb408b77a3195cd150092199d618b0100001500000000b9e8b32a0b14aa741134a95e0468588dd217645e","index":0,"name":"Unjail_Validator_0","output":["0 | Type : Unjail Validator","1 | Validator [1/3] : atest1v4ehgw36ggu52wzzxveyzvzzxy6yzsfh","1 | Validator [2/3] : xscnzve5gyun23fsxsmrsdfc8pzygv33xumrgd","1 | Validator [3/3] : 29lc2dtj"],"output_expert":["0 | Code hash [1/2] : 0a7624e9884b681e0af8708961b4e0c98a025e","0 | Code hash [2/2] : f571676cfbb408b77a3195cd15","1 | Validator [1/3] : atest1v4ehgw36ggu52wzzxveyzvzzxy6yzsfh","1 | Validator [2/3] : xscnzve5gyun23fsxsmrsdfc8pzygv33xumrgd","1 | Validator [3/3] : 29lc2dtj","2 | Timestamp : 2023-10-24 12:16:07.527707885 UTC","3 | Pubkey [1/2] : 00995c47158272b094640f33e1be2e8ef48715","3 | Pubkey [2/2] : ecce0e1307d4c7a71045e35d6a43","4 | Epoch : 1","5 | Gas limit : 0.02","6 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e3034666165323161626338663330613866653336640023000000323032332d31302d32345431323a31363a31322e3233303839373738332b30303a3030eb06ea17b1a0f05fa266942b463929e98ec970e014e2a68b4a274346e119dacf8fc837eeac69e87e6e70e68565e31c2aba97712f7d93dc01f201f4db3a4c1bbf010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e600995c47158272b094640f33e1be2e8ef48715ecce0e1307d4c7a71045e35d6a430100000000000000204e00000000000000000200000002f22b9d618b010000006cf329120204bf10b217b8113f93011fc2ea27a09c0246a866710fa9f8b68f7900f22b9d618b0100003500000000b9e8b32a0b14aa741134a95e0468588dd217645e00c817a804000000000000000000000000000000000000000000000000000000","index":0,"name":"Change_Commission_0","output":["0 | Type : Change commission","1 | New rate : 0.02","2 | Validator [1/3] : atest1v4ehgw36ggu52wzzxveyzvzzxy6yzsfh","2 | Validator [2/3] : xscnzve5gyun23fsxsmrsdfc8pzygv33xumrgd","2 | Validator [3/3] : 29lc2dtj"],"output_expert":["0 | Code hash [1/2] : 6cf329120204bf10b217b8113f93011fc2ea27","0 | Code hash [2/2] : a09c0246a866710fa9f8b68f79","1 | New rate : 0.02","2 | Validator [1/3] : atest1v4ehgw36ggu52wzzxveyzvzzxy6yzsfh","2 | Validator [2/3] : xscnzve5gyun23fsxsmrsdfc8pzygv33xumrgd","2 | Validator [3/3] : 29lc2dtj","3 | Timestamp : 2023-10-24 12:16:12.230897783 UTC","4 | Pubkey [1/2] : 00995c47158272b094640f33e1be2e8ef48715","4 | Pubkey [2/2] : ecce0e1307d4c7a71045e35d6a43","5 | Epoch : 1","6 | Gas limit : 0.02","7 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e3034666165323161626338663330613866653336640023000000323032332d31302d32345431323a31363a31362e3838373836313636392b30303a30305334a0f79138155de60964289de5dfd270801f6e9ccdde6a4bb94acd135accddb9bca09b4330bd132cc0aacdd63a22c1dfe138c2a22f687ac04d26c6c02f304e010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e60077ba64a6385ce0635625d4137596d969c67d02afcc7766dbb5339efd1296f6e30100000000000000204e00000000000000000300000001223e9d618b010000007e68fb834a7772c82a312c4e6e519d97282cce39507950c35fe89f1c347a4a2e02223e9d618b010000006f63dc0ee534b74cec728b9f76dae383388f7306df66b827fa940e210a7c11ca00223e9d618b01000050000000005929d03fc6860675bc6eef1dc525fb1e723977913649dfc151717181e179e78b0075bca173cf45b6945d0ee4a9985e55aaa7aea6bb00000c0000000000000018000000000000001e00000000000000","index":0,"name":"Init_Proposal_0","output":["0 | Type : Init proposal","1 | Proposal type : Default","2 | Author [1/3] : atest1v4ehgw36xu65ys6pxymnxs6xxs65yd3e","2 | Author [2/3] : xs65gvz9g56yzwfe8q652df4g9q5zd6pg4qnvs","2 | Author [3/3] : jz9f7eje","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] : 6f63dc0ee534b74cec728b9f76dae383388f73","0 | Code hash [2/2] : 06df66b827fa940e210a7c11ca","1 | Proposal type : Default","2 | Author [1/3] : atest1v4ehgw36xu65ys6pxymnxs6xxs65yd3e","2 | Author [2/3] : xs65gvz9g56yzwfe8q652df4g9q5zd6pg4qnvs","2 | Author [3/3] : jz9f7eje","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-10-24 12:16:16.887861669 UTC","8 | Pubkey [1/2] : 0077ba64a6385ce0635625d4137596d969c67d","8 | Pubkey [2/2] : 02afcc7766dbb5339efd1296f6e3","9 | Epoch : 1","10 | Gas limit : 0.02","11 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e3034666165323161626338663330613866653336640023000000323032332d31302d32345431323a31363a32302e3633353230303237332b30303a30300055805d692db09e0543ab4559d03867af8666e388a1236c2987c542341f2a70b35c02db7d217a355f8f1024de219cf3d9cf0dba1201daf788a2a079d5622606010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e60077ba64a6385ce0635625d4137596d969c67d02afcc7766dbb5339efd1296f6e30100000000000000204e00000000000000000400000001c94c9d618b010000007e68fb834a7772c82a312c4e6e519d97282cce39507950c35fe89f1c347a4a2e01c94c9d618b010000009ebd95ba9479625043b113445c949d78116a77e86011eec60abbfb41b89f880302de4c9d618b010000006f63dc0ee534b74cec728b9f76dae383388f7306df66b827fa940e210a7c11ca00de4c9d618b0100007000000000649fec9556db0c4a16c5d8bf6b5ab91ae6a66f84e2bf1e8245b0eedbbcbf607c0075bca173cf45b6945d0ee4a9985e55aaa7aea6bb000149510642ab1a0b799b3f9afbba9f648a9d0b8c303277c4168cee973b66e082640c0000000000000018000000000000001e00000000000000","index":0,"name":"Init_Proposal_1","output":["0 | Type : Init proposal","1 | Proposal type [1/2] : 9ebd95ba9479625043b113445c949d78116a77","1 | Proposal type [2/2] : e86011eec60abbfb41b89f8803","2 | Author [1/3] : atest1v4ehgw36xu65ys6pxymnxs6xxs65yd3e","2 | Author [2/3] : xs65gvz9g56yzwfe8q652df4g9q5zd6pg4qnvs","2 | Author [3/3] : jz9f7eje","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] : 6f63dc0ee534b74cec728b9f76dae383388f73","0 | Code hash [2/2] : 06df66b827fa940e210a7c11ca","1 | Proposal type [1/2] : 9ebd95ba9479625043b113445c949d78116a77","1 | Proposal type [2/2] : e86011eec60abbfb41b89f8803","2 | Author [1/3] : atest1v4ehgw36xu65ys6pxymnxs6xxs65yd3e","2 | Author [2/3] : xs65gvz9g56yzwfe8q652df4g9q5zd6pg4qnvs","2 | Author [3/3] : jz9f7eje","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-10-24 12:16:20.635200273 UTC","8 | Pubkey [1/2] : 0077ba64a6385ce0635625d4137596d969c67d","8 | Pubkey [2/2] : 02afcc7766dbb5339efd1296f6e3","9 | Epoch : 1","10 | Gas limit : 0.02","11 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e3034666165323161626338663330613866653336640023000000323032332d31302d32345431323a31363a32352e3632303936313534312b30303a3030076b81c63175d489db976d2551965d212e3aee5d3541cf5944c3745e8a861b3b882f7cf126160a166e56d248b6cf757cdd20de23b58c0a21da7a4c536f8abe2a010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e600626bf22b8bfa3ebdcd39649d3b905f994ae08ebe782c978d13b0bedcc9afc7640100000000000000204e0000000000000000020000000244609d618b0100000092ed2a568021d8c015e275cc39936750e10b51a2ee950f213fb21a76ccc721470044609d618b010000380000000000000000000000000000c3b0c3ac7ae423be6dfb63ef2c73ec5b2d3084180100000000c3b0c3ac7ae423be6dfb63ef2c73ec5b2d308418","index":0,"name":"Vote_Proposal_0","output":["0 | Type : Vote Proposal","1 | ID : 0","2 | Vote : yay","3 | Voter [1/3] : atest1v4ehgw36gve5yvzrxdq5xd6pg56ryv6z","3 | Voter [2/3] : g5myg3jzxce5233jgvmnx32rx4pry3pnxqurgv","3 | Voter [3/3] : fch8fl7d","4 | Delegation [1/3] : atest1v4ehgw36gve5yvzrxdq5xd6pg56ryv6z","4 | Delegation [2/3] : g5myg3jzxce5233jgvmnx32rx4pry3pnxqurgv","4 | Delegation [3/3] : fch8fl7d"],"output_expert":["0 | Code hash [1/2] : 92ed2a568021d8c015e275cc39936750e10b51","0 | Code hash [2/2] : a2ee950f213fb21a76ccc72147","1 | ID : 0","2 | Vote : yay","3 | Voter [1/3] : atest1v4ehgw36gve5yvzrxdq5xd6pg56ryv6z","3 | Voter [2/3] : g5myg3jzxce5233jgvmnx32rx4pry3pnxqurgv","3 | Voter [3/3] : fch8fl7d","4 | Delegation [1/3] : atest1v4ehgw36gve5yvzrxdq5xd6pg56ryv6z","4 | Delegation [2/3] : g5myg3jzxce5233jgvmnx32rx4pry3pnxqurgv","4 | Delegation [3/3] : fch8fl7d","5 | Timestamp : 2023-10-24 12:16:25.620961541 UTC","6 | Pubkey [1/2] : 00626bf22b8bfa3ebdcd39649d3b905f994ae0","6 | Pubkey [2/2] : 8ebe782c978d13b0bedcc9afc764","7 | Epoch : 1","8 | Gas limit : 0.02","9 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e3034666165323161626338663330613866653336640023000000323032332d31302d32345431323a31363a32392e3338373830313936342b30303a30307142df20ef05a559e93d1c8c1620f9a540e8e91278ab44b47b5bcfbc4d707ba64a8c6041debbab71a9d81d9c36175f28b8da178c2375b50e150ce790090dd124010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e600995c47158272b094640f33e1be2e8ef48715ecce0e1307d4c7a71045e35d6a430100000000000000204e00000000000000000200000002fb6e9d618b0100000092ed2a568021d8c015e275cc39936750e10b51a2ee950f213fb21a76ccc7214700fb6e9d618b0100003700000000000000000000000100b9e8b32a0b14aa741134a95e0468588dd217645e0100000000c3b0c3ac7ae423be6dfb63ef2c73ec5b2d308418","index":0,"name":"Vote_Proposal_1","output":["0 | Type : Vote Proposal","1 | ID : 0","2 | Vote : nay","3 | Voter [1/3] : atest1v4ehgw36ggu52wzzxveyzvzzxy6yzsfh","3 | Voter [2/3] : xscnzve5gyun23fsxsmrsdfc8pzygv33xumrgd","3 | Voter [3/3] : 29lc2dtj","4 | Delegation [1/3] : atest1v4ehgw36gve5yvzrxdq5xd6pg56ryv6z","4 | Delegation [2/3] : g5myg3jzxce5233jgvmnx32rx4pry3pnxqurgv","4 | Delegation [3/3] : fch8fl7d"],"output_expert":["0 | Code hash [1/2] : 92ed2a568021d8c015e275cc39936750e10b51","0 | Code hash [2/2] : a2ee950f213fb21a76ccc72147","1 | ID : 0","2 | Vote : nay","3 | Voter [1/3] : atest1v4ehgw36ggu52wzzxveyzvzzxy6yzsfh","3 | Voter [2/3] : xscnzve5gyun23fsxsmrsdfc8pzygv33xumrgd","3 | Voter [3/3] : 29lc2dtj","4 | Delegation [1/3] : atest1v4ehgw36gve5yvzrxdq5xd6pg56ryv6z","4 | Delegation [2/3] : g5myg3jzxce5233jgvmnx32rx4pry3pnxqurgv","4 | Delegation [3/3] : fch8fl7d","5 | Timestamp : 2023-10-24 12:16:29.387801964 UTC","6 | Pubkey [1/2] : 00995c47158272b094640f33e1be2e8ef48715","6 | Pubkey [2/2] : ecce0e1307d4c7a71045e35d6a43","7 | Epoch : 1","8 | Gas limit : 0.02","9 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e3034666165323161626338663330613866653336640023000000323032332d31302d32345431323a31363a33332e3133343237303536322b30303a3030861bc7542b7702e6261f316c4e3025f90b3b67bbf2a38c4d313dac179dbfb87f01b145f9e90a7c2c37dde77664a607000f651ef89d50aeb8e87591c2de96a3cf010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e60077ba64a6385ce0635625d4137596d969c67d02afcc7766dbb5339efd1296f6e30100000000000000204e00000000000000000200000002997d9d618b0100000092ed2a568021d8c015e275cc39936750e10b51a2ee950f213fb21a76ccc7214700997d9d618b01000023000000000000000000000000000075bca173cf45b6945d0ee4a9985e55aaa7aea6bb00000000","index":0,"name":"Vote_Proposal_2","output":["0 | Type : Vote Proposal","1 | ID : 0","2 | Vote : yay","3 | Voter [1/3] : atest1v4ehgw36xu65ys6pxymnxs6xxs65yd3e","3 | Voter [2/3] : xs65gvz9g56yzwfe8q652df4g9q5zd6pg4qnvs","3 | Voter [3/3] : jz9f7eje"],"output_expert":["0 | Code hash [1/2] : 92ed2a568021d8c015e275cc39936750e10b51","0 | Code hash [2/2] : a2ee950f213fb21a76ccc72147","1 | ID : 0","2 | Vote : yay","3 | Voter [1/3] : atest1v4ehgw36xu65ys6pxymnxs6xxs65yd3e","3 | Voter [2/3] : xs65gvz9g56yzwfe8q652df4g9q5zd6pg4qnvs","3 | Voter [3/3] : jz9f7eje","4 | Timestamp : 2023-10-24 12:16:33.134270562 UTC","5 | Pubkey [1/2] : 0077ba64a6385ce0635625d4137596d969c67d","5 | Pubkey [2/2] : 02afcc7766dbb5339efd1296f6e3","6 | Epoch : 1","7 | Gas limit : 0.02","8 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e3034666165323161626338663330613866653336640023000000323032332d31302d32345431323a31363a33362e3830343231363036312b30303a30307f0b53bea1639d252811ee953ffbba74e54fc82013125e638c66dc667d3f19c54c4ace3a0bc7bcdac17567aa4c11b81ed3a8623a207637e3db1d410a88669163010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e60077ba64a6385ce0635625d4137596d969c67d02afcc7766dbb5339efd1296f6e30100000000000000204e00000000000000000200000002ef8b9d618b01000000bec1efd37d88876be4176d1afc0b6fa784901efe18cf9ec30293313be855d81400ef8b9d618b0100004b00000000c3b0c3ac7ae423be6dfb63ef2c73ec5b2d30841800e9a43500000000000000000000000000000000000000000000000000000000010075bca173cf45b6945d0ee4a9985e55aaa7aea6bb","index":0,"name":"Bond_1","output":["0 | Type : Bond","1 | Source [1/3] : atest1v4ehgw36xu65ys6pxymnxs6xxs65yd3e","1 | Source [2/3] : xs65gvz9g56yzwfe8q652df4g9q5zd6pg4qnvs","1 | Source [3/3] : jz9f7eje","2 | Validator [1/3] : atest1v4ehgw36gve5yvzrxdq5xd6pg56ryv6z","2 | Validator [2/3] : g5myg3jzxce5233jgvmnx32rx4pry3pnxqurgv","2 | Validator [3/3] : fch8fl7d","3 | Amount : NAM 900.0"],"output_expert":["0 | Code hash [1/2] : bec1efd37d88876be4176d1afc0b6fa784901e","0 | Code hash [2/2] : fe18cf9ec30293313be855d814","1 | Source [1/3] : atest1v4ehgw36xu65ys6pxymnxs6xxs65yd3e","1 | Source [2/3] : xs65gvz9g56yzwfe8q652df4g9q5zd6pg4qnvs","1 | Source [3/3] : jz9f7eje","2 | Validator [1/3] : atest1v4ehgw36gve5yvzrxdq5xd6pg56ryv6z","2 | Validator [2/3] : g5myg3jzxce5233jgvmnx32rx4pry3pnxqurgv","2 | Validator [3/3] : fch8fl7d","3 | Amount : NAM 900.0","4 | Timestamp : 2023-10-24 12:16:36.804216061 UTC","5 | Pubkey [1/2] : 0077ba64a6385ce0635625d4137596d969c67d","5 | Pubkey [2/2] : 02afcc7766dbb5339efd1296f6e3","6 | Epoch : 1","7 | Gas limit : 0.02","8 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e3034666165323161626338663330613866653336640023000000323032332d31302d32345431323a31363a34302e3530373432323930332b30303a3030a3268a64a09a05db4930b2aefc43767eb62612f5a73dd2db736e679682238d26c488402b5a640c5cbe11343f2fb1a872b8bb6be92c69d9a396cc49a50a1751e0010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e60077ba64a6385ce0635625d4137596d969c67d02afcc7766dbb5339efd1296f6e30100000000000000204e000000000000000002000000026a9a9d618b010000006cf329120204bf10b217b8113f93011fc2ea27a09c0246a866710fa9f8b68f79006a9a9d618b010000350000000075bca173cf45b6945d0ee4a9985e55aaa7aea6bb00743ba40b000000000000000000000000000000000000000000000000000000","index":0,"name":"Change_Commission_1","output":["0 | Type : Change commission","1 | New rate : 0.05","2 | Validator [1/3] : atest1v4ehgw36xu65ys6pxymnxs6xxs65yd3e","2 | Validator [2/3] : xs65gvz9g56yzwfe8q652df4g9q5zd6pg4qnvs","2 | Validator [3/3] : jz9f7eje"],"output_expert":["0 | Code hash [1/2] : 6cf329120204bf10b217b8113f93011fc2ea27","0 | Code hash [2/2] : a09c0246a866710fa9f8b68f79","1 | New rate : 0.05","2 | Validator [1/3] : atest1v4ehgw36xu65ys6pxymnxs6xxs65yd3e","2 | Validator [2/3] : xs65gvz9g56yzwfe8q652df4g9q5zd6pg4qnvs","2 | Validator [3/3] : jz9f7eje","3 | Timestamp : 2023-10-24 12:16:40.507422903 UTC","4 | Pubkey [1/2] : 0077ba64a6385ce0635625d4137596d969c67d","4 | Pubkey [2/2] : 02afcc7766dbb5339efd1296f6e3","5 | Epoch : 1","6 | Gas limit : 0.02","7 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e3034666165323161626338663330613866653336640023000000323032332d31302d32345431323a31363a34352e3335303935383637362b30303a303051aed47fcc2cbf082ec0fdc0116540aaf36f54ee5d329a81857f7f27295d042e3ce18b552c889409f01429e3586e6ef562a9e28c93ea77156f49c128d430832f010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e600995c47158272b094640f33e1be2e8ef48715ecce0e1307d4c7a71045e35d6a430100000000000000204e0000000000000000020000000252ad9d618b01000000bec1efd37d88876be4176d1afc0b6fa784901efe18cf9ec30293313be855d8140052ad9d618b0100004b00000000c3b0c3ac7ae423be6dfb63ef2c73ec5b2d30841800e9a435000000000000000000000000000000000000000000000000000000000100b9e8b32a0b14aa741134a95e0468588dd217645e","index":0,"name":"Bond_2","output":["0 | Type : Bond","1 | Source [1/3] : atest1v4ehgw36ggu52wzzxveyzvzzxy6yzsfh","1 | Source [2/3] : xscnzve5gyun23fsxsmrsdfc8pzygv33xumrgd","1 | Source [3/3] : 29lc2dtj","2 | Validator [1/3] : atest1v4ehgw36gve5yvzrxdq5xd6pg56ryv6z","2 | Validator [2/3] : g5myg3jzxce5233jgvmnx32rx4pry3pnxqurgv","2 | Validator [3/3] : fch8fl7d","3 | Amount : NAM 900.0"],"output_expert":["0 | Code hash [1/2] : bec1efd37d88876be4176d1afc0b6fa784901e","0 | Code hash [2/2] : fe18cf9ec30293313be855d814","1 | Source [1/3] : atest1v4ehgw36ggu52wzzxveyzvzzxy6yzsfh","1 | Source [2/3] : xscnzve5gyun23fsxsmrsdfc8pzygv33xumrgd","1 | Source [3/3] : 29lc2dtj","2 | Validator [1/3] : atest1v4ehgw36gve5yvzrxdq5xd6pg56ryv6z","2 | Validator [2/3] : g5myg3jzxce5233jgvmnx32rx4pry3pnxqurgv","2 | Validator [3/3] : fch8fl7d","3 | Amount : NAM 900.0","4 | Timestamp : 2023-10-24 12:16:45.350958676 UTC","5 | Pubkey [1/2] : 00995c47158272b094640f33e1be2e8ef48715","5 | Pubkey [2/2] : ecce0e1307d4c7a71045e35d6a43","6 | Epoch : 1","7 | Gas limit : 0.02","8 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e3034666165323161626338663330613866653336640023000000323032332d31302d32345431323a31363a34392e3032373337353436332b30303a30304d9d0bfc9f4fcb55f3636030e0c9e7cca57dd67d640cc88272ccc1d07b9f71f7cb0489f5abbd55347f4eab4a9894213e9ec24bf4a562cf0a7296d338bb8a6d31010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e600995c47158272b094640f33e1be2e8ef48715ecce0e1307d4c7a71045e35d6a430100000000000000204e00000000000000000200000002aebb9d618b010000006cf329120204bf10b217b8113f93011fc2ea27a09c0246a866710fa9f8b68f7900aebb9d618b0100003500000000b9e8b32a0b14aa741134a95e0468588dd217645e00046bf414000000000000000000000000000000000000000000000000000000","index":0,"name":"Change_Commission_2","output":["0 | Type : Change commission","1 | New rate : 0.09","2 | Validator [1/3] : atest1v4ehgw36ggu52wzzxveyzvzzxy6yzsfh","2 | Validator [2/3] : xscnzve5gyun23fsxsmrsdfc8pzygv33xumrgd","2 | Validator [3/3] : 29lc2dtj"],"output_expert":["0 | Code hash [1/2] : 6cf329120204bf10b217b8113f93011fc2ea27","0 | Code hash [2/2] : a09c0246a866710fa9f8b68f79","1 | New rate : 0.09","2 | Validator [1/3] : atest1v4ehgw36ggu52wzzxveyzvzzxy6yzsfh","2 | Validator [2/3] : xscnzve5gyun23fsxsmrsdfc8pzygv33xumrgd","2 | Validator [3/3] : 29lc2dtj","3 | Timestamp : 2023-10-24 12:16:49.027375463 UTC","4 | Pubkey [1/2] : 00995c47158272b094640f33e1be2e8ef48715","4 | Pubkey [2/2] : ecce0e1307d4c7a71045e35d6a43","5 | Epoch : 1","6 | Gas limit : 0.02","7 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e3034666165323161626338663330613866653336640023000000323032332d31302d32345431323a31363a35322e3732303737343936342b30303a303073c9885d92f155d2aed96d3b81375e95ac2d2d96dbf3803878e9c279109629d706cafd8007df2d2252e82227133c7e6cc7b93268411fcc886b8a18a2abd8a2e5010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e60077ba64a6385ce0635625d4137596d969c67d02afcc7766dbb5339efd1296f6e30100000000000000204e000000000000000003000000011cca9d618b010000007e68fb834a7772c82a312c4e6e519d97282cce39507950c35fe89f1c347a4a2e021cca9d618b010000006f63dc0ee534b74cec728b9f76dae383388f7306df66b827fa940e210a7c11ca001cca9d618b0100006900000000080a868d4a2cb9ca9538c1662d2798eaa19abfec73329130c5a42aafd46892350075bca173cf45b6945d0ee4a9985e55aaa7aea6bb0101000000000075bca173cf45b6945d0ee4a9985e55aaa7aea6bb0c0000000000000018000000000000001e00000000000000","index":0,"name":"Init_Proposal_2","output":["0 | Type : Init proposal","1 | Proposal type : PGF Steward","2 | Author [1/3] : atest1v4ehgw36xu65ys6pxymnxs6xxs65yd3e","2 | Author [2/3] : xs65gvz9g56yzwfe8q652df4g9q5zd6pg4qnvs","2 | Author [3/3] : jz9f7eje","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] : 6f63dc0ee534b74cec728b9f76dae383388f73","0 | Code hash [2/2] : 06df66b827fa940e210a7c11ca","1 | Proposal type : PGF Steward","2 | Author [1/3] : atest1v4ehgw36xu65ys6pxymnxs6xxs65yd3e","2 | Author [2/3] : xs65gvz9g56yzwfe8q652df4g9q5zd6pg4qnvs","2 | Author [3/3] : jz9f7eje","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-10-24 12:16:52.720774964 UTC","8 | Pubkey [1/2] : 0077ba64a6385ce0635625d4137596d969c67d","8 | Pubkey [2/2] : 02afcc7766dbb5339efd1296f6e3","9 | Epoch : 1","10 | Gas limit : 0.02","11 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e3034666165323161626338663330613866653336640023000000323032332d31302d32345431323a31363a35362e3434343733323636392b30303a3030523caef5a35ebb81fd3481fefc29fbdf286e02878bb35829ba479a733b78f79f765ee2ab115dfc22cfc5549d3a65c75c0587b3da83b71a8a69c8ecebf163df26010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e60077ba64a6385ce0635625d4137596d969c67d02afcc7766dbb5339efd1296f6e30100000000000000204e00000000000000000300000001aed89d618b010000007e68fb834a7772c82a312c4e6e519d97282cce39507950c35fe89f1c347a4a2e02aed89d618b010000006f63dc0ee534b74cec728b9f76dae383388f7306df66b827fa940e210a7c11ca00aed89d618b010000690000000076f2c34d2583dbbd0ab301e42fa6267e9dc3cf8dbb2f3b73d8e3986bd9eadcf10075bca173cf45b6945d0ee4a9985e55aaa7aea6bb0101000000000075bca173cf45b6945d0ee4a9985e55aaa7aea6bb0c0000000000000018000000000000001e00000000000000","index":0,"name":"Init_Proposal_3","output":["0 | Type : Init proposal","1 | Proposal type : PGF Steward","2 | Author [1/3] : atest1v4ehgw36xu65ys6pxymnxs6xxs65yd3e","2 | Author [2/3] : xs65gvz9g56yzwfe8q652df4g9q5zd6pg4qnvs","2 | Author [3/3] : jz9f7eje","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] : 6f63dc0ee534b74cec728b9f76dae383388f73","0 | Code hash [2/2] : 06df66b827fa940e210a7c11ca","1 | Proposal type : PGF Steward","2 | Author [1/3] : atest1v4ehgw36xu65ys6pxymnxs6xxs65yd3e","2 | Author [2/3] : xs65gvz9g56yzwfe8q652df4g9q5zd6pg4qnvs","2 | Author [3/3] : jz9f7eje","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-10-24 12:16:56.444732669 UTC","8 | Pubkey [1/2] : 0077ba64a6385ce0635625d4137596d969c67d","8 | Pubkey [2/2] : 02afcc7766dbb5339efd1296f6e3","9 | Epoch : 1","10 | Gas limit : 0.02","11 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e3034666165323161626338663330613866653336640023000000323032332d31302d32345431323a31373a30302e3231343339373531392b30303a303075c5fd2bcd3cc3c4e25657f4c8c2617e32f9ecb14c5e3cd7ffdf9206feea20fafaf160acd8c63a995cd9a74f46032ebbffec21388f3cbf164749e457ae46353c010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e600626bf22b8bfa3ebdcd39649d3b905f994ae08ebe782c978d13b0bedcc9afc7640100000000000000204e0000000000000000020000000261e79d618b0100000092ed2a568021d8c015e275cc39936750e10b51a2ee950f213fb21a76ccc721470061e79d618b010000380000000100000000000000000100c3b0c3ac7ae423be6dfb63ef2c73ec5b2d3084180100000000c3b0c3ac7ae423be6dfb63ef2c73ec5b2d308418","index":0,"name":"Vote_Proposal_3","output":["0 | Type : Vote Proposal","1 | ID : 1","2 | Vote : yay for PGF steward","3 | Voter [1/3] : atest1v4ehgw36gve5yvzrxdq5xd6pg56ryv6z","3 | Voter [2/3] : g5myg3jzxce5233jgvmnx32rx4pry3pnxqurgv","3 | Voter [3/3] : fch8fl7d","4 | Delegation [1/3] : atest1v4ehgw36gve5yvzrxdq5xd6pg56ryv6z","4 | Delegation [2/3] : g5myg3jzxce5233jgvmnx32rx4pry3pnxqurgv","4 | Delegation [3/3] : fch8fl7d"],"output_expert":["0 | Code hash [1/2] : 92ed2a568021d8c015e275cc39936750e10b51","0 | Code hash [2/2] : a2ee950f213fb21a76ccc72147","1 | ID : 1","2 | Vote : yay for PGF steward","3 | Voter [1/3] : atest1v4ehgw36gve5yvzrxdq5xd6pg56ryv6z","3 | Voter [2/3] : g5myg3jzxce5233jgvmnx32rx4pry3pnxqurgv","3 | Voter [3/3] : fch8fl7d","4 | Delegation [1/3] : atest1v4ehgw36gve5yvzrxdq5xd6pg56ryv6z","4 | Delegation [2/3] : g5myg3jzxce5233jgvmnx32rx4pry3pnxqurgv","4 | Delegation [3/3] : fch8fl7d","5 | Timestamp : 2023-10-24 12:17:00.214397519 UTC","6 | Pubkey [1/2] : 00626bf22b8bfa3ebdcd39649d3b905f994ae0","6 | Pubkey [2/2] : 8ebe782c978d13b0bedcc9afc764","7 | Epoch : 1","8 | Gas limit : 0.02","9 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e3034666165323161626338663330613866653336640023000000323032332d31302d32345431323a31373a30332e3933343237313738352b30303a3030574bb8e8d9ce4601daebfd4d314f1178e17fa4f71c64f59fd418cf135a8c9117aad06a4770bac2bcdac31407dca2ad5de272a2aa0a23576354e7aca8708e3e48010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e600995c47158272b094640f33e1be2e8ef48715ecce0e1307d4c7a71045e35d6a430100000000000000204e00000000000000000200000002ecf59d618b0100000092ed2a568021d8c015e275cc39936750e10b51a2ee950f213fb21a76ccc7214700ecf59d618b010000380000000100000000000000000100b9e8b32a0b14aa741134a95e0468588dd217645e0100000000c3b0c3ac7ae423be6dfb63ef2c73ec5b2d308418","index":0,"name":"Vote_Proposal_4","output":["0 | Type : Vote Proposal","1 | ID : 1","2 | Vote : yay for PGF steward","3 | Voter [1/3] : atest1v4ehgw36ggu52wzzxveyzvzzxy6yzsfh","3 | Voter [2/3] : xscnzve5gyun23fsxsmrsdfc8pzygv33xumrgd","3 | Voter [3/3] : 29lc2dtj","4 | Delegation [1/3] : atest1v4ehgw36gve5yvzrxdq5xd6pg56ryv6z","4 | Delegation [2/3] : g5myg3jzxce5233jgvmnx32rx4pry3pnxqurgv","4 | Delegation [3/3] : fch8fl7d"],"output_expert":["0 | Code hash [1/2] : 92ed2a568021d8c015e275cc39936750e10b51","0 | Code hash [2/2] : a2ee950f213fb21a76ccc72147","1 | ID : 1","2 | Vote : yay for PGF steward","3 | Voter [1/3] : atest1v4ehgw36ggu52wzzxveyzvzzxy6yzsfh","3 | Voter [2/3] : xscnzve5gyun23fsxsmrsdfc8pzygv33xumrgd","3 | Voter [3/3] : 29lc2dtj","4 | Delegation [1/3] : atest1v4ehgw36gve5yvzrxdq5xd6pg56ryv6z","4 | Delegation [2/3] : g5myg3jzxce5233jgvmnx32rx4pry3pnxqurgv","4 | Delegation [3/3] : fch8fl7d","5 | Timestamp : 2023-10-24 12:17:03.934271785 UTC","6 | Pubkey [1/2] : 00995c47158272b094640f33e1be2e8ef48715","6 | Pubkey [2/2] : ecce0e1307d4c7a71045e35d6a43","7 | Epoch : 1","8 | Gas limit : 0.02","9 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e3034666165323161626338663330613866653336640023000000323032332d31302d32345431323a31373a30372e3634343039383638362b30303a30303c68bb51143afa7e0593b4d44cc8ec8cb2f58a816ed21338dd3e0cd2fa1059706c73a0bfe5be683807fa1ad2a099d5e3fe3ec8918552d73eceab7013b7adc890010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e600995c47158272b094640f33e1be2e8ef48715ecce0e1307d4c7a71045e35d6a430100000000000000204e0000000000000000020000000267049e618b0100000092ed2a568021d8c015e275cc39936750e10b51a2ee950f213fb21a76ccc721470067049e618b010000380000000200000000000000000100b9e8b32a0b14aa741134a95e0468588dd217645e0100000000c3b0c3ac7ae423be6dfb63ef2c73ec5b2d308418","index":0,"name":"Vote_Proposal_5","output":["0 | Type : Vote Proposal","1 | ID : 2","2 | Vote : yay for PGF steward","3 | Voter [1/3] : atest1v4ehgw36ggu52wzzxveyzvzzxy6yzsfh","3 | Voter [2/3] : xscnzve5gyun23fsxsmrsdfc8pzygv33xumrgd","3 | Voter [3/3] : 29lc2dtj","4 | Delegation [1/3] : atest1v4ehgw36gve5yvzrxdq5xd6pg56ryv6z","4 | Delegation [2/3] : g5myg3jzxce5233jgvmnx32rx4pry3pnxqurgv","4 | Delegation [3/3] : fch8fl7d"],"output_expert":["0 | Code hash [1/2] : 92ed2a568021d8c015e275cc39936750e10b51","0 | Code hash [2/2] : a2ee950f213fb21a76ccc72147","1 | ID : 2","2 | Vote : yay for PGF steward","3 | Voter [1/3] : atest1v4ehgw36ggu52wzzxveyzvzzxy6yzsfh","3 | Voter [2/3] : xscnzve5gyun23fsxsmrsdfc8pzygv33xumrgd","3 | Voter [3/3] : 29lc2dtj","4 | Delegation [1/3] : atest1v4ehgw36gve5yvzrxdq5xd6pg56ryv6z","4 | Delegation [2/3] : g5myg3jzxce5233jgvmnx32rx4pry3pnxqurgv","4 | Delegation [3/3] : fch8fl7d","5 | Timestamp : 2023-10-24 12:17:07.644098686 UTC","6 | Pubkey [1/2] : 00995c47158272b094640f33e1be2e8ef48715","6 | Pubkey [2/2] : ecce0e1307d4c7a71045e35d6a43","7 | Epoch : 1","8 | Gas limit : 0.02","9 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e3034666165323161626338663330613866653336640023000000323032332d31302d32345431323a31373a31312e3330373331313236362b30303a3030767cee0637a13846a716dc4abb7fddd483e16a4378a8527f7cc856bfe6d177340b66025ade01e5061c11157770ffc808fb6778bbe79a0f1d54e59dc3a5beb94c010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e600995c47158272b094640f33e1be2e8ef48715ecce0e1307d4c7a71045e35d6a430100000000000000204e00000000000000000200000002b6129e618b01000000111a5b61d839f5b974f774762e74c98db8fc389d2795cbd61a2c44e5ab46c5a100b6129e618b0100006200000000b9e8b32a0b14aa741134a95e0468588dd217645e00bc433af6bb09b32cac665745e2350689b85aa980003d234d1e39e181d52d018065e142ca91c052be3e0037178900000000000000000000000000000000000000000000000000000000080000","index":0,"name":"Transfer_0","output":["0 | Type : Transfer","1 | Sender [1/3] : atest1v4ehgw36ggu52wzzxveyzvzzxy6yzsfh","1 | Sender [2/3] : xscnzve5gyun23fsxsmrsdfc8pzygv33xumrgd","1 | Sender [3/3] : 29lc2dtj","2 | Destination [1/3] : atest1v4ehgw36gfpngveng9rrvsjzxqu5yvej","2 | Destination [2/3] : gdq5xd3kx5mngd29xgen2vpk8qu5ywp4g9qnjw","2 | Destination [3/3] : pswce4r0","3 | Amount : BTC 23.0"],"output_expert":["0 | Code hash [1/2] : 111a5b61d839f5b974f774762e74c98db8fc38","0 | Code hash [2/2] : 9d2795cbd61a2c44e5ab46c5a1","1 | Sender [1/3] : atest1v4ehgw36ggu52wzzxveyzvzzxy6yzsfh","1 | Sender [2/3] : xscnzve5gyun23fsxsmrsdfc8pzygv33xumrgd","1 | Sender [3/3] : 29lc2dtj","2 | Destination [1/3] : atest1v4ehgw36gfpngveng9rrvsjzxqu5yvej","2 | Destination [2/3] : gdq5xd3kx5mngd29xgen2vpk8qu5ywp4g9qnjw","2 | Destination [3/3] : pswce4r0","3 | Amount : BTC 23.0","4 | Timestamp : 2023-10-24 12:17:11.307311266 UTC","5 | Pubkey [1/2] : 00995c47158272b094640f33e1be2e8ef48715","5 | Pubkey [2/2] : ecce0e1307d4c7a71045e35d6a43","6 | Epoch : 1","7 | Gas limit : 0.02","8 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e3034666165323161626338663330613866653336640023000000323032332d31302d32345431323a31373a31352e3032303835303933302b30303a3030dff60afe988d74402db5222684d36ea0f5109862ec2ac78fd39be53e65d647418a724909a2fab8514664c1e531fa97b73387c32ac53e8bbb236132502d1a847b010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e600995c47158272b094640f33e1be2e8ef48715ecce0e1307d4c7a71045e35d6a430100000000000000204e0000000000000000020000000237219e618b01000000bec1efd37d88876be4176d1afc0b6fa784901efe18cf9ec30293313be855d8140038219e618b0100003600000000b9e8b32a0b14aa741134a95e0468588dd217645e40787d010000000000000000000000000000000000000000000000000000000000","index":0,"name":"Bond_3","output":["0 | Type : Bond","1 | Validator [1/3] : atest1v4ehgw36ggu52wzzxveyzvzzxy6yzsfh","1 | Validator [2/3] : xscnzve5gyun23fsxsmrsdfc8pzygv33xumrgd","1 | Validator [3/3] : 29lc2dtj","2 | Amount : NAM 25.0"],"output_expert":["0 | Code hash [1/2] : bec1efd37d88876be4176d1afc0b6fa784901e","0 | Code hash [2/2] : fe18cf9ec30293313be855d814","1 | Validator [1/3] : atest1v4ehgw36ggu52wzzxveyzvzzxy6yzsfh","1 | Validator [2/3] : xscnzve5gyun23fsxsmrsdfc8pzygv33xumrgd","1 | Validator [3/3] : 29lc2dtj","2 | Amount : NAM 25.0","3 | Timestamp : 2023-10-24 12:17:15.020850930 UTC","4 | Pubkey [1/2] : 00995c47158272b094640f33e1be2e8ef48715","4 | Pubkey [2/2] : ecce0e1307d4c7a71045e35d6a43","5 | Epoch : 1","6 | Gas limit : 0.02","7 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e3034666165323161626338663330613866653336640023000000323032332d31302d32345431323a31373a31382e3734343031343939322b30303a3030077e2b979b66935864d6cb82d0fffc0cef370b417f7385db8b96157ccb24e2cf179b12d43c0ca9db1daafe912c264b0b113a5ca1a6c29c92257676f6dbc6c0cd010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e600995c47158272b094640f33e1be2e8ef48715ecce0e1307d4c7a71045e35d6a430100000000000000204e00000000000000000200000002c62f9e618b010000006cf329120204bf10b217b8113f93011fc2ea27a09c0246a866710fa9f8b68f7900c62f9e618b0100003500000000b9e8b32a0b14aa741134a95e0468588dd217645e00cc829c19000000000000000000000000000000000000000000000000000000","index":0,"name":"Change_Commission_3","output":["0 | Type : Change commission","1 | New rate : 0.11","2 | Validator [1/3] : atest1v4ehgw36ggu52wzzxveyzvzzxy6yzsfh","2 | Validator [2/3] : xscnzve5gyun23fsxsmrsdfc8pzygv33xumrgd","2 | Validator [3/3] : 29lc2dtj"],"output_expert":["0 | Code hash [1/2] : 6cf329120204bf10b217b8113f93011fc2ea27","0 | Code hash [2/2] : a09c0246a866710fa9f8b68f79","1 | New rate : 0.11","2 | Validator [1/3] : atest1v4ehgw36ggu52wzzxveyzvzzxy6yzsfh","2 | Validator [2/3] : xscnzve5gyun23fsxsmrsdfc8pzygv33xumrgd","2 | Validator [3/3] : 29lc2dtj","3 | Timestamp : 2023-10-24 12:17:18.744014992 UTC","4 | Pubkey [1/2] : 00995c47158272b094640f33e1be2e8ef48715","4 | Pubkey [2/2] : ecce0e1307d4c7a71045e35d6a43","5 | Epoch : 1","6 | Gas limit : 0.02","7 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e3034666165323161626338663330613866653336640023000000323032332d31302d32345431323a31373a32322e3236393234353933362b30303a30309687350fb418b57d2d2c31c79364444c8a421137ba52a02e65c35a63a291f0b9275173033eee1aae2c5b53f0873f10cdca0c8fd4bece263454a758b6faf51551010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e60077ba64a6385ce0635625d4137596d969c67d02afcc7766dbb5339efd1296f6e30100000000000000204e000000000000000002000000025f3d9e618b01000000152efebe3954ac8f2d5760ec18fae1197c9e02a161491375516cfc40cba0a1e8005f3d9e618b010000210000000077ba64a6385ce0635625d4137596d969c67d02afcc7766dbb5339efd1296f6e3","index":0,"name":"Reveal_Pubkey_0","output":["0 | Type : Reveal Pubkey","1 | Public key [1/2] : 0077ba64a6385ce0635625d4137596d969c67d","1 | Public key [2/2] : 02afcc7766dbb5339efd1296f6e3"],"output_expert":["0 | Code hash [1/2] : 152efebe3954ac8f2d5760ec18fae1197c9e02","0 | Code hash [2/2] : a161491375516cfc40cba0a1e8","1 | Public key [1/2] : 0077ba64a6385ce0635625d4137596d969c67d","1 | Public key [2/2] : 02afcc7766dbb5339efd1296f6e3","2 | Timestamp : 2023-10-24 12:17:22.269245936 UTC","3 | Pubkey [1/2] : 0077ba64a6385ce0635625d4137596d969c67d","3 | Pubkey [2/2] : 02afcc7766dbb5339efd1296f6e3","4 | Epoch : 1","5 | Gas limit : 0.02","6 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e3034666165323161626338663330613866653336640023000000323032332d31302d32345431323a31373a32352e3833383135313936372b30303a303070b5e945f66af7c2ded580ce153616710e6e79bf7d30c69d0915e8c18d3f2bf37b5e32353abaa027c09297bf112b0722bd297c75dca19ccf9e958d8372be0440010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e600995c47158272b094640f33e1be2e8ef48715ecce0e1307d4c7a71045e35d6a430100000000000000204e000000000000000003000000017f4b9e618b010000003b9e4d777c9420bbbf730e1549252f1a091bc01535eb1f37e7a7e3d1bace7576027f4b9e618b01000000c3e25b73b94a226c3e9a5990fb91864c1515cf2bcb8e28e4b3e403c41a37093200804b9e618b0100003b00000000b9e8b32a0b14aa741134a95e0468588dd217645e01e666a12812cd9f8a2bd38973db21836fa6eeab3a915223f3e3ae3441a87369230000000000","index":0,"name":"Update_VP_0","output":["0 | Type : Update VP","1 | Address [1/3] : atest1v4ehgw36ggu52wzzxveyzvzzxy6yzsfh","1 | Address [2/3] : xscnzve5gyun23fsxsmrsdfc8pzygv33xumrgd","1 | Address [3/3] : 29lc2dtj","2 | VP type : User"],"output_expert":["0 | Code hash [1/2] : c3e25b73b94a226c3e9a5990fb91864c1515cf","0 | Code hash [2/2] : 2bcb8e28e4b3e403c41a370932","1 | Address [1/3] : atest1v4ehgw36ggu52wzzxveyzvzzxy6yzsfh","1 | Address [2/3] : xscnzve5gyun23fsxsmrsdfc8pzygv33xumrgd","1 | Address [3/3] : 29lc2dtj","2 | VP type [1/2] : 3b9e4d777c9420bbbf730e1549252f1a091bc0","2 | VP type [2/2] : 1535eb1f37e7a7e3d1bace7576","3 | Timestamp : 2023-10-24 12:17:25.838151967 UTC","4 | Pubkey [1/2] : 00995c47158272b094640f33e1be2e8ef48715","4 | Pubkey [2/2] : ecce0e1307d4c7a71045e35d6a43","5 | Epoch : 1","6 | Gas limit : 0.02","7 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e3034666165323161626338663330613866653336640023000000323032332d31302d32345431323a31373a32392e3439373737383531382b30303a30309e165765ca4f703e08ef1e529e3b2a06e741caeac7ad007d481d225f3f2c0f8a0b12e73d98b5b4572913a19d8f7733ee7aa7abdbf50300b6ce8b6e3ba70f3152010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e600995c47158272b094640f33e1be2e8ef48715ecce0e1307d4c7a71045e35d6a430100000000000000204e00000000000000000300000001c4599e618b010000003b9e4d777c9420bbbf730e1549252f1a091bc01535eb1f37e7a7e3d1bace757602c4599e618b01000000c3e25b73b94a226c3e9a5990fb91864c1515cf2bcb8e28e4b3e403c41a37093200c4599e618b0100007d00000000b9e8b32a0b14aa741134a95e0468588dd217645e0115f9f47463b230e7497d7b16f298aaab0c22cb45ae11d3b445451bead1832cd8020000000077ba64a6385ce0635625d4137596d969c67d02afcc7766dbb5339efd1296f6e300995c47158272b094640f33e1be2e8ef48715ecce0e1307d4c7a71045e35d6a4300","index":0,"name":"Update_VP_1","output":["0 | Type : Update VP","1 | Address [1/3] : atest1v4ehgw36ggu52wzzxveyzvzzxy6yzsfh","1 | Address [2/3] : xscnzve5gyun23fsxsmrsdfc8pzygv33xumrgd","1 | Address [3/3] : 29lc2dtj","2 | Public key [1/2] : 0077ba64a6385ce0635625d4137596d969c67d","2 | Public key [2/2] : 02afcc7766dbb5339efd1296f6e3","3 | Public key [1/2] : 00995c47158272b094640f33e1be2e8ef48715","3 | Public key [2/2] : ecce0e1307d4c7a71045e35d6a43","4 | VP type : User"],"output_expert":["0 | Code hash [1/2] : c3e25b73b94a226c3e9a5990fb91864c1515cf","0 | Code hash [2/2] : 2bcb8e28e4b3e403c41a370932","1 | Address [1/3] : atest1v4ehgw36ggu52wzzxveyzvzzxy6yzsfh","1 | Address [2/3] : xscnzve5gyun23fsxsmrsdfc8pzygv33xumrgd","1 | Address [3/3] : 29lc2dtj","2 | Public key [1/2] : 0077ba64a6385ce0635625d4137596d969c67d","2 | Public key [2/2] : 02afcc7766dbb5339efd1296f6e3","3 | Public key [1/2] : 00995c47158272b094640f33e1be2e8ef48715","3 | Public key [2/2] : ecce0e1307d4c7a71045e35d6a43","4 | VP type [1/2] : 3b9e4d777c9420bbbf730e1549252f1a091bc0","4 | VP type [2/2] : 1535eb1f37e7a7e3d1bace7576","5 | Timestamp : 2023-10-24 12:17:29.497778518 UTC","6 | Pubkey [1/2] : 00995c47158272b094640f33e1be2e8ef48715","6 | Pubkey [2/2] : ecce0e1307d4c7a71045e35d6a43","7 | Epoch : 1","8 | Gas limit : 0.02","9 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e3034666165323161626338663330613866653336640023000000323032332d31302d32345431323a31373a33332e3130343230313334312b30303a30301981d4baee12256cd18261eb1e0a1c268cc574e5b6cb7f672c2ab3dc843e69acc3e101691ceb78d91aeb17cd8bc034a3241716be659f5824bf0e1963d584ac58010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e60077ba64a6385ce0635625d4137596d969c67d02afcc7766dbb5339efd1296f6e30100000000000000204e00000000000000000300000001db679e618b010000003b9e4d777c9420bbbf730e1549252f1a091bc01535eb1f37e7a7e3d1bace757602db679e618b01000000c3e25b73b94a226c3e9a5990fb91864c1515cf2bcb8e28e4b3e403c41a37093200db679e618b0100009f00000000b9e8b32a0b14aa741134a95e0468588dd217645e01e96b14e5c9a7dc089263a082d8c1617d9b5b6231f436143c84f03de69cb20421030000000077ba64a6385ce0635625d4137596d969c67d02afcc7766dbb5339efd1296f6e300995c47158272b094640f33e1be2e8ef48715ecce0e1307d4c7a71045e35d6a4300540f5ae8ba2be37c88366a84cd664fab7fc66208f1bac6a2d5ad9f0012ed021d0102","index":0,"name":"Update_VP_2","output":["0 | Type : Update VP","1 | Address [1/3] : atest1v4ehgw36ggu52wzzxveyzvzzxy6yzsfh","1 | Address [2/3] : xscnzve5gyun23fsxsmrsdfc8pzygv33xumrgd","1 | Address [3/3] : 29lc2dtj","2 | Public key [1/2] : 0077ba64a6385ce0635625d4137596d969c67d","2 | Public key [2/2] : 02afcc7766dbb5339efd1296f6e3","3 | Public key [1/2] : 00995c47158272b094640f33e1be2e8ef48715","3 | Public key [2/2] : ecce0e1307d4c7a71045e35d6a43","4 | Public key [1/2] : 00540f5ae8ba2be37c88366a84cd664fab7fc6","4 | Public key [2/2] : 6208f1bac6a2d5ad9f0012ed021d","5 | Threshold : 2","6 | VP type : User"],"output_expert":["0 | Code hash [1/2] : c3e25b73b94a226c3e9a5990fb91864c1515cf","0 | Code hash [2/2] : 2bcb8e28e4b3e403c41a370932","1 | Address [1/3] : atest1v4ehgw36ggu52wzzxveyzvzzxy6yzsfh","1 | Address [2/3] : xscnzve5gyun23fsxsmrsdfc8pzygv33xumrgd","1 | Address [3/3] : 29lc2dtj","2 | Public key [1/2] : 0077ba64a6385ce0635625d4137596d969c67d","2 | Public key [2/2] : 02afcc7766dbb5339efd1296f6e3","3 | Public key [1/2] : 00995c47158272b094640f33e1be2e8ef48715","3 | Public key [2/2] : ecce0e1307d4c7a71045e35d6a43","4 | Public key [1/2] : 00540f5ae8ba2be37c88366a84cd664fab7fc6","4 | Public key [2/2] : 6208f1bac6a2d5ad9f0012ed021d","5 | Threshold : 2","6 | VP type [1/2] : 3b9e4d777c9420bbbf730e1549252f1a091bc0","6 | VP type [2/2] : 1535eb1f37e7a7e3d1bace7576","7 | Timestamp : 2023-10-24 12:17:33.104201341 UTC","8 | Pubkey [1/2] : 0077ba64a6385ce0635625d4137596d969c67d","8 | Pubkey [2/2] : 02afcc7766dbb5339efd1296f6e3","9 | Epoch : 1","10 | Gas limit : 0.02","11 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e3034666165323161626338663330613866653336640023000000323032332d31302d32345431323a31373a33362e3637333934383336332b30303a3030d856401c57c3756bd9b7a8596b30bdbbdcd84ea1369082709085945a75593266bf1978c1d2c865cbd998c85270a41e91bf38370cdce5645c58b3936b29896733010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e600995c47158272b094640f33e1be2e8ef48715ecce0e1307d4c7a71045e35d6a430100000000000000204e00000000000000000300000001a1759e618b010000003b9e4d777c9420bbbf730e1549252f1a091bc01535eb1f37e7a7e3d1bace757602a2759e618b01000000b3b48166976e0259db4eab1e72ace4c92368b34fd5a06f7ccd41b4ae4c88ca1d00a2759e618b0100006e0100000100000000995c47158272b094640f33e1be2e8ef48715ecce0e1307d4c7a71045e35d6a430100f773c1694fd69220bf1a6b71a6ae2af2e6944d0f43246c917a5e8c81b2afde2003bcd7fe0aaa2e25be62fa534195793f5b51d978e04d80e6cbf5381a23b2fedd6f0326db2fb8ef5fef81161189633a4a733a11780b9c010ce9eed3878d02234f986a003828f31d0f9a627e1fb95a39f85055e06118b646a4a37d95c0c2b930dc411d80600000003fdf4787a943f55e530fe56d7004f8597c02b6ad5e468552fc1a9d6b670d0070cf8c4c3dd7e1353972a2c3b5249cb01192d884219de86e801744431eff2f32ffc0380e6eb09360046bc3bd0be237f22716d372b9792462d2b530872a35df0c8200743ba40b00000000000000000000000000000000000000000000000000000000e40b5402000000000000000000000000000000000000000000000000000000b94b385c5bb780bccb7ed816a59209963ba92aeb37ff17bd17bac5439aa28bdf","index":0,"name":"Init_Validator_0","output":["0 | Type : Init Validator","1 | Account key [1/2] : 00995c47158272b094640f33e1be2e8ef48715","1 | Account key [2/2] : ecce0e1307d4c7a71045e35d6a43","2 | Threshold : 1","3 | Consensus key [1/2] : 00f773c1694fd69220bf1a6b71a6ae2af2e694","3 | Consensus key [2/2] : 4d0f43246c917a5e8c81b2afde20","4 | Ethereum cold key [1/2] : 03bcd7fe0aaa2e25be62fa534195793f5b51d9","4 | Ethereum cold key [2/2] : 78e04d80e6cbf5381a23b2fedd6f","5 | Ethereum hot key [1/2] : 0326db2fb8ef5fef81161189633a4a733a1178","5 | Ethereum hot key [2/2] : 0b9c010ce9eed3878d02234f986a","6 | Protocol key [1/2] : 003828f31d0f9a627e1fb95a39f85055e06118","6 | Protocol key [2/2] : b646a4a37d95c0c2b930dc411d80","7 | DKG key [1/6] : 600000003fdf4787a943f55e530fe56d7004f8","7 | DKG key [2/6] : 597c02b6ad5e468552fc1a9d6b670d0070cf8c","7 | DKG key [3/6] : 4c3dd7e1353972a2c3b5249cb01192d884219d","7 | DKG key [4/6] : e86e801744431eff2f32ffc0380e6eb0936004","7 | DKG key [5/6] : 6bc3bd0be237f22716d372b9792462d2b53087","7 | DKG key [6/6] : 2a35df0c82","8 | Commission rate : 0.05","9 | Maximum commission rate change : 0.01","10 | Validator VP type : User"],"output_expert":["0 | Code hash [1/2] : b3b48166976e0259db4eab1e72ace4c92368b3","0 | Code hash [2/2] : 4fd5a06f7ccd41b4ae4c88ca1d","1 | Account key [1/2] : 00995c47158272b094640f33e1be2e8ef48715","1 | Account key [2/2] : ecce0e1307d4c7a71045e35d6a43","2 | Threshold : 1","3 | Consensus key [1/2] : 00f773c1694fd69220bf1a6b71a6ae2af2e694","3 | Consensus key [2/2] : 4d0f43246c917a5e8c81b2afde20","4 | Ethereum cold key [1/2] : 03bcd7fe0aaa2e25be62fa534195793f5b51d9","4 | Ethereum cold key [2/2] : 78e04d80e6cbf5381a23b2fedd6f","5 | Ethereum hot key [1/2] : 0326db2fb8ef5fef81161189633a4a733a1178","5 | Ethereum hot key [2/2] : 0b9c010ce9eed3878d02234f986a","6 | Protocol key [1/2] : 003828f31d0f9a627e1fb95a39f85055e06118","6 | Protocol key [2/2] : b646a4a37d95c0c2b930dc411d80","7 | DKG key [1/6] : 600000003fdf4787a943f55e530fe56d7004f8","7 | DKG key [2/6] : 597c02b6ad5e468552fc1a9d6b670d0070cf8c","7 | DKG key [3/6] : 4c3dd7e1353972a2c3b5249cb01192d884219d","7 | DKG key [4/6] : e86e801744431eff2f32ffc0380e6eb0936004","7 | DKG key [5/6] : 6bc3bd0be237f22716d372b9792462d2b53087","7 | DKG key [6/6] : 2a35df0c82","8 | Commission rate : 0.05","9 | Maximum commission rate change : 0.01","10 | Validator VP type [1/2] : 3b9e4d777c9420bbbf730e1549252f1a091bc0","10 | Validator VP type [2/2] : 1535eb1f37e7a7e3d1bace7576","11 | Timestamp : 2023-10-24 12:17:36.673948363 UTC","12 | Pubkey [1/2] : 00995c47158272b094640f33e1be2e8ef48715","12 | Pubkey [2/2] : ecce0e1307d4c7a71045e35d6a43","13 | Epoch : 1","14 | Gas limit : 0.02","15 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e3034666165323161626338663330613866653336640023000000323032332d31302d32345431323a31373a34302e3236373438393337342b30303a3030c5b56b768fb749d01a47b73c31f1bf9b541bbcca74c40ed9d0cc2afd806781ecd9f639bd8cb6b61d5d91bf8cf59e71020fb56f08d549cfdd4e08555aecc2479d010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e60077ba64a6385ce0635625d4137596d969c67d02afcc7766dbb5339efd1296f6e30100000000000000204e00000000000000000300000001ab839e618b010000003b9e4d777c9420bbbf730e1549252f1a091bc01535eb1f37e7a7e3d1bace757602ab839e618b01000000b3b48166976e0259db4eab1e72ace4c92368b34fd5a06f7ccd41b4ae4c88ca1d00ab839e618b0100008f010000020000000077ba64a6385ce0635625d4137596d969c67d02afcc7766dbb5339efd1296f6e300995c47158272b094640f33e1be2e8ef48715ecce0e1307d4c7a71045e35d6a43020073ab5ddff616218d855c067cad88f61b9b1c516981e02ad9114e8465be6c6a5403cd653a120e9fc4bc967b128bc6f4a1700463f741cf454d179970d22647a5e35d02d48b9515fad01ffbb74e9dc99e4f75e95a33494bb360f9d3abe18edae737ac3c00a75811b50999dc5c5b506f288521439fb757936ffbe0b1f4633db43151cba39760000000f547e84cfaa1e63402b6e7cf82aa5f3832b0c067e6c015d781a83b7b894aff3bf8fa06129f15dab844afa9059126ee0aa6b82ddaf47f1160886bcc8f74b8244921cee190f532b522e710ab493e9e61f5d1308450ad90fa3a7f48ab4f73525f1600743ba40b00000000000000000000000000000000000000000000000000000000e40b54020000000000000000000000000000000000000000000000000000002d4fbd06db45e4bf64f0fcc3b562cba5b5e6ea8c0c2eef6ea6c059790edcdfa5","index":0,"name":"Init_Validator_1","output":["0 | Type : Init Validator","1 | Account key [1/2] : 0077ba64a6385ce0635625d4137596d969c67d","1 | Account key [2/2] : 02afcc7766dbb5339efd1296f6e3","2 | Account key [1/2] : 00995c47158272b094640f33e1be2e8ef48715","2 | Account key [2/2] : ecce0e1307d4c7a71045e35d6a43","3 | Threshold : 2","4 | Consensus key [1/2] : 0073ab5ddff616218d855c067cad88f61b9b1c","4 | Consensus key [2/2] : 516981e02ad9114e8465be6c6a54","5 | Ethereum cold key [1/2] : 03cd653a120e9fc4bc967b128bc6f4a1700463","5 | Ethereum cold key [2/2] : f741cf454d179970d22647a5e35d","6 | Ethereum hot key [1/2] : 02d48b9515fad01ffbb74e9dc99e4f75e95a33","6 | Ethereum hot key [2/2] : 494bb360f9d3abe18edae737ac3c","7 | Protocol key [1/2] : 00a75811b50999dc5c5b506f288521439fb757","7 | Protocol key [2/2] : 936ffbe0b1f4633db43151cba397","8 | DKG key [1/6] : 60000000f547e84cfaa1e63402b6e7cf82aa5f","8 | DKG key [2/6] : 3832b0c067e6c015d781a83b7b894aff3bf8fa","8 | DKG key [3/6] : 06129f15dab844afa9059126ee0aa6b82ddaf4","8 | DKG key [4/6] : 7f1160886bcc8f74b8244921cee190f532b522","8 | DKG key [5/6] : e710ab493e9e61f5d1308450ad90fa3a7f48ab","8 | DKG key [6/6] : 4f73525f16","9 | Commission rate : 0.05","10 | Maximum commission rate change : 0.01","11 | Validator VP type : User"],"output_expert":["0 | Code hash [1/2] : b3b48166976e0259db4eab1e72ace4c92368b3","0 | Code hash [2/2] : 4fd5a06f7ccd41b4ae4c88ca1d","1 | Account key [1/2] : 0077ba64a6385ce0635625d4137596d969c67d","1 | Account key [2/2] : 02afcc7766dbb5339efd1296f6e3","2 | Account key [1/2] : 00995c47158272b094640f33e1be2e8ef48715","2 | Account key [2/2] : ecce0e1307d4c7a71045e35d6a43","3 | Threshold : 2","4 | Consensus key [1/2] : 0073ab5ddff616218d855c067cad88f61b9b1c","4 | Consensus key [2/2] : 516981e02ad9114e8465be6c6a54","5 | Ethereum cold key [1/2] : 03cd653a120e9fc4bc967b128bc6f4a1700463","5 | Ethereum cold key [2/2] : f741cf454d179970d22647a5e35d","6 | Ethereum hot key [1/2] : 02d48b9515fad01ffbb74e9dc99e4f75e95a33","6 | Ethereum hot key [2/2] : 494bb360f9d3abe18edae737ac3c","7 | Protocol key [1/2] : 00a75811b50999dc5c5b506f288521439fb757","7 | Protocol key [2/2] : 936ffbe0b1f4633db43151cba397","8 | DKG key [1/6] : 60000000f547e84cfaa1e63402b6e7cf82aa5f","8 | DKG key [2/6] : 3832b0c067e6c015d781a83b7b894aff3bf8fa","8 | DKG key [3/6] : 06129f15dab844afa9059126ee0aa6b82ddaf4","8 | DKG key [4/6] : 7f1160886bcc8f74b8244921cee190f532b522","8 | DKG key [5/6] : e710ab493e9e61f5d1308450ad90fa3a7f48ab","8 | DKG key [6/6] : 4f73525f16","9 | Commission rate : 0.05","10 | Maximum commission rate change : 0.01","11 | Validator VP type [1/2] : 3b9e4d777c9420bbbf730e1549252f1a091bc0","11 | Validator VP type [2/2] : 1535eb1f37e7a7e3d1bace7576","12 | Timestamp : 2023-10-24 12:17:40.267489374 UTC","13 | Pubkey [1/2] : 0077ba64a6385ce0635625d4137596d969c67d","13 | Pubkey [2/2] : 02afcc7766dbb5339efd1296f6e3","14 | Epoch : 1","15 | Gas limit : 0.02","16 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e3061336633393461623436373862613966626133620023000000323032332d31302d32345431343a31363a34332e3535333532393532332b30303a3030c5022f474883c97f7d5d464832874bfb6b6dedec8f84b795960356151c187ec8974630b6030cf2f3a053d3235251af948edcfde250e4d004ca4f4a86507db7ed010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e6007e7fbf392d2b6e53635431fe1d5b513e995ca5dc5907b8872f8d5635d65d35c80100000000000000204e000000000000000002000000024f830b628b010000004730c6c302f0a572c09d2b671ae4c40deee8cf46fc168c8eba57fadef88b73de004f830b628b0100003600000000301a74b714e88f73f5ab74210a33dc240ac1c07d404b4c000000000000000000000000000000000000000000000000000000000000","index":0,"name":"Unbond_0","output":["0 | Type : Unbond","1 | Validator [1/3] : atest1v4ehgw36xvcrzsfhx3prwvf5g5urs33h","1 | Validator [2/3] : xdrr2s2zxu6ryvfsgyenx3zrxg6rqs2rx9pnqd","1 | Validator [3/3] : 6y78wjfg","2 | Amount : NAM 5.0"],"output_expert":["0 | Code hash [1/2] : 4730c6c302f0a572c09d2b671ae4c40deee8cf","0 | Code hash [2/2] : 46fc168c8eba57fadef88b73de","1 | Validator [1/3] : atest1v4ehgw36xvcrzsfhx3prwvf5g5urs33h","1 | Validator [2/3] : xdrr2s2zxu6ryvfsgyenx3zrxg6rqs2rx9pnqd","1 | Validator [3/3] : 6y78wjfg","2 | Amount : NAM 5.0","3 | Timestamp : 2023-10-24 14:16:43.553529523 UTC","4 | Pubkey [1/2] : 007e7fbf392d2b6e53635431fe1d5b513e995c","4 | Pubkey [2/2] : a5dc5907b8872f8d5635d65d35c8","5 | Epoch : 1","6 | Gas limit : 0.02","7 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e3034666165323161626338663330613866653336640023000000323032332d31302d32345431323a31373a34342e3736303730373031302b30303a3030e0fab26fe2da0ffeb108c3566afbadaef587e8464cbd7374a6dc72d0ce41457c9e1e6f1cd8939a35de8d3412cab0b7d1f09f79b7fd2d65a2d7ed56b73e11e776010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e60077ba64a6385ce0635625d4137596d969c67d02afcc7766dbb5339efd1296f6e30100000000000000204e0000000000000000020000000267959e618b01000000649353ad4c9b5acefe52b5e67eada78b6f83e206ed71dc935ddec70467c3063b0067959e618b010000160000000075bca173cf45b6945d0ee4a9985e55aaa7aea6bb00","index":0,"name":"Withdraw_0","output":["0 | Type : Withdraw","1 | Validator [1/3] : atest1v4ehgw36xu65ys6pxymnxs6xxs65yd3e","1 | Validator [2/3] : xs65gvz9g56yzwfe8q652df4g9q5zd6pg4qnvs","1 | Validator [3/3] : jz9f7eje"],"output_expert":["0 | Code hash [1/2] : 649353ad4c9b5acefe52b5e67eada78b6f83e2","0 | Code hash [2/2] : 06ed71dc935ddec70467c3063b","1 | Validator [1/3] : atest1v4ehgw36xu65ys6pxymnxs6xxs65yd3e","1 | Validator [2/3] : xs65gvz9g56yzwfe8q652df4g9q5zd6pg4qnvs","1 | Validator [3/3] : jz9f7eje","2 | Timestamp : 2023-10-24 12:17:44.760707010 UTC","3 | Pubkey [1/2] : 0077ba64a6385ce0635625d4137596d969c67d","3 | Pubkey [2/2] : 02afcc7766dbb5339efd1296f6e3","4 | Epoch : 1","5 | Gas limit : 0.02","6 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e3034666165323161626338663330613866653336640023000000323032332d31302d32345431323a31373a34382e3234383538343131322b30303a30306c6e75999a324bd173b8223b184cce6ca77340e85c0bb022265c59f91b3c668083a55ca63ce2852be2ccc59f96c54848458bd816dc651d3df69c35a5322cf748010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e60077ba64a6385ce0635625d4137596d969c67d02afcc7766dbb5339efd1296f6e30100000000000000204e0000000000000000030000000102a39e618b010000003b9e4d777c9420bbbf730e1549252f1a091bc01535eb1f37e7a7e3d1bace75760202a39e618b01000000f0061157377454c314ad7c9e3855221d49da7425ffef6db6b7d28f52424232810002a39e618b01000046000000010000000077ba64a6385ce0635625d4137596d969c67d02afcc7766dbb5339efd1296f6e3ee7216f059d2a506354e93aff15d52abe7275c112b64e6115e7f114239b87e8101","index":0,"name":"Init_Account_0","output":["0 | Type : Init Account","1 | Public key [1/2] : 0077ba64a6385ce0635625d4137596d969c67d","1 | Public key [2/2] : 02afcc7766dbb5339efd1296f6e3","2 | Threshold : 1","3 | VP type : User"],"output_expert":["0 | Code hash [1/2] : f0061157377454c314ad7c9e3855221d49da74","0 | Code hash [2/2] : 25ffef6db6b7d28f5242423281","1 | Public key [1/2] : 0077ba64a6385ce0635625d4137596d969c67d","1 | Public key [2/2] : 02afcc7766dbb5339efd1296f6e3","2 | Threshold : 1","3 | VP type [1/2] : 3b9e4d777c9420bbbf730e1549252f1a091bc0","3 | VP type [2/2] : 1535eb1f37e7a7e3d1bace7576","4 | Timestamp : 2023-10-24 12:17:48.248584112 UTC","5 | Pubkey [1/2] : 0077ba64a6385ce0635625d4137596d969c67d","5 | Pubkey [2/2] : 02afcc7766dbb5339efd1296f6e3","6 | Epoch : 1","7 | Gas limit : 0.02","8 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e3034666165323161626338663330613866653336640023000000323032332d31302d32345431323a31373a35312e3733393036393133332b30303a3030894e033eadcd04f16cf6e5cd20f0f3250763e205f006d8cccecaf6d9f4e6126ed84283067da6fffa74bf6d01031cf572c2d201981ce40f1faa8e846312cc3d71010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e60077ba64a6385ce0635625d4137596d969c67d02afcc7766dbb5339efd1296f6e30100000000000000204e00000000000000000300000001a7b09e618b010000003b9e4d777c9420bbbf730e1549252f1a091bc01535eb1f37e7a7e3d1bace757602a7b09e618b01000000f0061157377454c314ad7c9e3855221d49da7425ffef6db6b7d28f524242328100a7b09e618b01000088000000030000000077ba64a6385ce0635625d4137596d969c67d02afcc7766dbb5339efd1296f6e300995c47158272b094640f33e1be2e8ef48715ecce0e1307d4c7a71045e35d6a4300540f5ae8ba2be37c88366a84cd664fab7fc66208f1bac6a2d5ad9f0012ed021df5481b5fa45b912c6c3f8d740d1e3ce87a6757894fbc1455eb42ea3d1156c74b02","index":0,"name":"Init_Account_1","output":["0 | Type : Init Account","1 | Public key [1/2] : 0077ba64a6385ce0635625d4137596d969c67d","1 | Public key [2/2] : 02afcc7766dbb5339efd1296f6e3","2 | Public key [1/2] : 00995c47158272b094640f33e1be2e8ef48715","2 | Public key [2/2] : ecce0e1307d4c7a71045e35d6a43","3 | Public key [1/2] : 00540f5ae8ba2be37c88366a84cd664fab7fc6","3 | Public key [2/2] : 6208f1bac6a2d5ad9f0012ed021d","4 | Threshold : 2","5 | VP type : User"],"output_expert":["0 | Code hash [1/2] : f0061157377454c314ad7c9e3855221d49da74","0 | Code hash [2/2] : 25ffef6db6b7d28f5242423281","1 | Public key [1/2] : 0077ba64a6385ce0635625d4137596d969c67d","1 | Public key [2/2] : 02afcc7766dbb5339efd1296f6e3","2 | Public key [1/2] : 00995c47158272b094640f33e1be2e8ef48715","2 | Public key [2/2] : ecce0e1307d4c7a71045e35d6a43","3 | Public key [1/2] : 00540f5ae8ba2be37c88366a84cd664fab7fc6","3 | Public key [2/2] : 6208f1bac6a2d5ad9f0012ed021d","4 | Threshold : 2","5 | VP type [1/2] : 3b9e4d777c9420bbbf730e1549252f1a091bc0","5 | VP type [2/2] : 1535eb1f37e7a7e3d1bace7576","6 | Timestamp : 2023-10-24 12:17:51.739069133 UTC","7 | Pubkey [1/2] : 0077ba64a6385ce0635625d4137596d969c67d","7 | Pubkey [2/2] : 02afcc7766dbb5339efd1296f6e3","8 | Epoch : 1","9 | Gas limit : 0.02","10 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e3034666165323161626338663330613866653336640023000000323032332d31302d32345431323a31373a35362e3433313138383639342b30303a30300a0f228f44f557909e5db96329098b22432a5304f9dccd17d1d9f1eb850bbc29523b76e3a352ac8c87896950a7eed13269b10ceeefe1d95844bebbaa9a2c9b0f010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e600995c47158272b094640f33e1be2e8ef48715ecce0e1307d4c7a71045e35d6a430100000000000000204e00000000000000000200000002cfc29e618b0100000058bd568dfa94973c798b3868326197fa5d8687a6f6aee77c395eaaa1d01e2c1900cfc29e618b0100000d0100000a292f6962632e6170706c69636174696f6e732e7472616e736665722e76312e4d73675472616e7366657212df010a087472616e73666572120b6368616e6e656c2d3134311a5a0a54617465737431763465686777333678647a727976653567736335327665656735636e737632797835657967767033387163727664323978793672797336703879633578767034786670793276363934776777637012023234225461746573743176346568677733366767753532777a7a787665797a767a7a787936797a7366687873636e7a7665356779756e3233667378736d727364666338707a796776333378756d72676432396c633264746a2a08636872697374656c32003883bb9286efb2c3c817","index":0,"name":"IBC_0","output":["0 | Type : IBC","1 | Source port : transfer","2 | Source channel : channel-141","3 | Token [1/3] : 24 atest1v4ehgw36xdzryve5gsc52veeg5cns","3 | Token [2/3] : v2yx5eygvp38qcrvd29xy6rys6p8yc5xvp4xfp","3 | Token [3/3] : y2v694wgwcp","4 | Sender [1/3] : atest1v4ehgw36ggu52wzzxveyzvzzxy6yzsfh","4 | Sender [2/3] : xscnzve5gyun23fsxsmrsdfc8pzygv33xumrgd","4 | Sender [3/3] : 29lc2dtj","5 | Receiver : christel","6 | Timeout height : no timeout","7 | Timeout timestamp : 2023-10-24T13:17:56.431060355Z"],"output_expert":["0 | Code hash [1/2] : 58bd568dfa94973c798b3868326197fa5d8687","0 | Code hash [2/2] : a6f6aee77c395eaaa1d01e2c19","1 | Source port : transfer","2 | Source channel : channel-141","3 | Token [1/3] : 24 atest1v4ehgw36xdzryve5gsc52veeg5cns","3 | Token [2/3] : v2yx5eygvp38qcrvd29xy6rys6p8yc5xvp4xfp","3 | Token [3/3] : y2v694wgwcp","4 | Sender [1/3] : atest1v4ehgw36ggu52wzzxveyzvzzxy6yzsfh","4 | Sender [2/3] : xscnzve5gyun23fsxsmrsdfc8pzygv33xumrgd","4 | Sender [3/3] : 29lc2dtj","5 | Receiver : christel","6 | Timeout height : no timeout","7 | Timeout timestamp : 2023-10-24T13:17:56.431060355Z","8 | Timestamp : 2023-10-24 12:17:56.431188694 UTC","9 | Pubkey [1/2] : 00995c47158272b094640f33e1be2e8ef48715","9 | Pubkey [2/2] : ecce0e1307d4c7a71045e35d6a43","10 | Epoch : 1","11 | Gas limit : 0.02","12 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e3034666165323161626338663330613866653336640023000000323032332d31302d32345431323a31383a30302e3131313233393238312b30303a3030d75892c0cc5fe09521ef7277085e4b316f4deadf6402fd6df0f0993e0529b5e2fe0683e9a31f1ffc542628ba368189c24504084d7d05181680cb6657c0fa0af8010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e60077ba64a6385ce0635625d4137596d969c67d02afcc7766dbb5339efd1296f6e30100000000000000204e000000000000000002000000022fd19e618b0100000058bd568dfa94973c798b3868326197fa5d8687a6f6aee77c395eaaa1d01e2c19002fd19e618b0100000d0100000a292f6962632e6170706c69636174696f6e732e7472616e736665722e76312e4d73675472616e7366657212df010a087472616e7366657212096368616e6e656c2d301a5e0a5461746573743176346568677733367833707273777a786767756e7a76367078716d6e76646a39787663797a76707367676579767333636739716e797766353839716e77766673673565726733666b6c3039726735120631303030303022546174657374317634656867773336787536357973367078796d6e7873367878733635796433657873363567767a39673536797a7766653871363532646634673971357a6436706734716e76736a7a396637656a652a06626572746861320038e3bdf7e0fcb2c3c817","index":0,"name":"IBC_1","output":["0 | Type : IBC","1 | Source port : transfer","2 | Source channel : channel-0","3 | Token [1/3] : 100000 atest1v4ehgw36x3prswzxggunzv6px","3 | Token [2/3] : qmnvdj9xvcyzvpsggeyvs3cg9qnywf589qnwvf","3 | Token [3/3] : sg5erg3fkl09rg5","4 | Sender [1/3] : atest1v4ehgw36xu65ys6pxymnxs6xxs65yd3e","4 | Sender [2/3] : xs65gvz9g56yzwfe8q652df4g9q5zd6pg4qnvs","4 | Sender [3/3] : jz9f7eje","5 | Receiver : bertha","6 | Timeout height : no timeout","7 | Timeout timestamp : 2023-10-24T13:18:00.111120099Z"],"output_expert":["0 | Code hash [1/2] : 58bd568dfa94973c798b3868326197fa5d8687","0 | Code hash [2/2] : a6f6aee77c395eaaa1d01e2c19","1 | Source port : transfer","2 | Source channel : channel-0","3 | Token [1/3] : 100000 atest1v4ehgw36x3prswzxggunzv6px","3 | Token [2/3] : qmnvdj9xvcyzvpsggeyvs3cg9qnywf589qnwvf","3 | Token [3/3] : sg5erg3fkl09rg5","4 | Sender [1/3] : atest1v4ehgw36xu65ys6pxymnxs6xxs65yd3e","4 | Sender [2/3] : xs65gvz9g56yzwfe8q652df4g9q5zd6pg4qnvs","4 | Sender [3/3] : jz9f7eje","5 | Receiver : bertha","6 | Timeout height : no timeout","7 | Timeout timestamp : 2023-10-24T13:18:00.111120099Z","8 | Timestamp : 2023-10-24 12:18:00.111239281 UTC","9 | Pubkey [1/2] : 0077ba64a6385ce0635625d4137596d969c67d","9 | Pubkey [2/2] : 02afcc7766dbb5339efd1296f6e3","10 | Epoch : 1","11 | Gas limit : 0.02","12 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e3034666165323161626338663330613866653336640023000000323032332d31302d32345431323a31383a30332e3737343532383234362b30303a3030b332f72b1844595cf1247cc10419b33a54c0b39437d0bed278fdb5183a1b3712590b9fdac895f50b59a872ac7a8bf3ce2285776a892cae05c2187ad393a2419b010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e60077ba64a6385ce0635625d4137596d969c67d02afcc7766dbb5339efd1296f6e30100000000000000204e000000000000000002000000027edf9e618b0100000058bd568dfa94973c798b3868326197fa5d8687a6f6aee77c395eaaa1d01e2c19007edf9e618b0100000d0100000a292f6962632e6170706c69636174696f6e732e7472616e736665722e76312e4d73675472616e7366657212df010a087472616e7366657212096368616e6e656c2d301a5e0a5461746573743176346568677733367833707273777a786767756e7a76367078716d6e76646a39787663797a76707367676579767333636739716e797766353839716e77766673673565726733666b6c3039726735120631303030303022546174657374317634656867773336787536357973367078796d6e7873367878733635796433657873363567767a39673536797a7766653871363532646634673971357a6436706734716e76736a7a396637656a652a06626572746861320038e8f48ffeb9cac2c817","index":0,"name":"IBC_2","output":["0 | Type : IBC","1 | Source port : transfer","2 | Source channel : channel-0","3 | Token [1/3] : 100000 atest1v4ehgw36x3prswzxggunzv6px","3 | Token [2/3] : qmnvdj9xvcyzvpsggeyvs3cg9qnywf589qnwvf","3 | Token [3/3] : sg5erg3fkl09rg5","4 | Sender [1/3] : atest1v4ehgw36xu65ys6pxymnxs6xxs65yd3e","4 | Sender [2/3] : xs65gvz9g56yzwfe8q652df4g9q5zd6pg4qnvs","4 | Sender [3/3] : jz9f7eje","5 | Receiver : bertha","6 | Timeout height : no timeout","7 | Timeout timestamp : 2023-10-24T12:18:08.774371944Z"],"output_expert":["0 | Code hash [1/2] : 58bd568dfa94973c798b3868326197fa5d8687","0 | Code hash [2/2] : a6f6aee77c395eaaa1d01e2c19","1 | Source port : transfer","2 | Source channel : channel-0","3 | Token [1/3] : 100000 atest1v4ehgw36x3prswzxggunzv6px","3 | Token [2/3] : qmnvdj9xvcyzvpsggeyvs3cg9qnywf589qnwvf","3 | Token [3/3] : sg5erg3fkl09rg5","4 | Sender [1/3] : atest1v4ehgw36xu65ys6pxymnxs6xxs65yd3e","4 | Sender [2/3] : xs65gvz9g56yzwfe8q652df4g9q5zd6pg4qnvs","4 | Sender [3/3] : jz9f7eje","5 | Receiver : bertha","6 | Timeout height : no timeout","7 | Timeout timestamp : 2023-10-24T12:18:08.774371944Z","8 | Timestamp : 2023-10-24 12:18:03.774528246 UTC","9 | Pubkey [1/2] : 0077ba64a6385ce0635625d4137596d969c67d","9 | Pubkey [2/2] : 02afcc7766dbb5339efd1296f6e3","10 | Epoch : 1","11 | Gas limit : 0.02","12 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e6161366232333634363639616465333464653363340023000000323032332d31302d32345431333a32383a35352e3639363636303836302b30303a30305a8306d779448691bb59898356518f52d2b8a742894a946118fe4319e38389eb0756eef3cddd8ef3e7a74cc3f9255915e28ff7bc5cd6383101283587d8380a04010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e6000d6b506bc1043b2756502505f464693937b097eee21ee4a1ce33d18e8e5028e70000000000000000204e00000000000000000400000002bcc0df618b01000000bec1efd37d88876be4176d1afc0b6fa784901efe18cf9ec30293313be855d81400bcc0df618b0100004b000000005d5e34133e34d08b4ac0f9fd7943adf18f60bfcd00e9a43500000000000000000000000000000000000000000000000000000000010048afc9027d6cb7cb90b205684e7754996652920803010000001828421c3a965c63a9e031601bde38a722213c5bd9667cf7ac60098fd4d76dce000048afc9027d6cb7cb90b205684e77549966529208010000000000048fd3e19c2d4d4dcd5911cc2cd0624e3a3542b4691c17dee6360b9d46b31d86c9f6eb020bc307aa53d1c9e67e3d919e8352ee5bf43d8f40412abbcd09112f060304000000d6d9d67f13bcfc65f0022b2e612789cb717d43de230965191472982673740bc25a8306d779448691bb59898356518f52d2b8a742894a946118fe4319e38389eb0756eef3cddd8ef3e7a74cc3f9255915e28ff7bc5cd6383101283587d8380a04436d9c7e4ce1cb00351a876be1b6098d28f3340bd37217bb7c858c77a27a09560101000000000d6b506bc1043b2756502505f464693937b097eee21ee4a1ce33d18e8e5028e70100000000001770e80715d4e4e38b542c703aff07d2c16c1048e82c77b677ddbe4130625f9a5296fff86e5c4fa9d46113a3d5caff851edbebba65ff9c826bb2d5fc8e33b40d","index":0,"name":"Bond_4","output":["0 | Type : Bond","1 | Source [1/3] : atest1v4ehgw36xsuyz3jr8ycryd6yxep5yd6r","1 | Source [2/3] : ggunqs3jxq6nvwp5g5mnwdf58yunvd34xgunyv","1 | Source [3/3] : pc4c2dv7","2 | Validator [1/3] : atest1v4ehgw36x4zr23fnxscnxv69xv6ygvpc","2 | Validator [2/3] : gg6yzsesgcu5v3ph8y6rxs2ygccns33kxppyvs","2 | Validator [3/3] : 6y348p2r","3 | Amount : NAM 900.0"],"output_expert":["0 | Code hash [1/2] : bec1efd37d88876be4176d1afc0b6fa784901e","0 | Code hash [2/2] : fe18cf9ec30293313be855d814","1 | Source [1/3] : atest1v4ehgw36xsuyz3jr8ycryd6yxep5yd6r","1 | Source [2/3] : ggunqs3jxq6nvwp5g5mnwdf58yunvd34xgunyv","1 | Source [3/3] : pc4c2dv7","2 | Validator [1/3] : atest1v4ehgw36x4zr23fnxscnxv69xv6ygvpc","2 | Validator [2/3] : gg6yzsesgcu5v3ph8y6rxs2ygccns33kxppyvs","2 | Validator [3/3] : 6y348p2r","3 | Amount : NAM 900.0","4 | Timestamp : 2023-10-24 13:28:55.696660860 UTC","5 | Pubkey [1/2] : 000d6b506bc1043b2756502505f464693937b0","5 | Pubkey [2/2] : 97eee21ee4a1ce33d18e8e5028e7","6 | Epoch : 0","7 | Gas limit : 0.02","8 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e6161366232333634363639616465333464653363340023000000323032332d31302d32345431333a32393a30302e3330303333313838322b30303a3030d0eee470a12330ebed14e697d189d95afd0dcea004ca6ee0fe62d783f71b3a76f611629a1b6b2b2e71a73357068f42ffe1b04800ae72d1179032afdc87858a71010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e6000d6b506bc1043b2756502505f464693937b097eee21ee4a1ce33d18e8e5028e70100000000000000204e00000000000000000400000002b7d2df618b010000000a7624e9884b681e0af8708961b4e0c98a025ef571676cfbb408b77a3195cd1500b7d2df618b010000150000000048afc9027d6cb7cb90b205684e775499665292080301000000b88adb06da12a2f0f79c11f32a8acdba575bc9d36bdf95e3e6f886da4b4657e3000048afc9027d6cb7cb90b205684e775499665292080100000000008a0fafa120f6f732b67af6f8865843bf3ffb405aec3d5d02b98bb4241a11c68c680c28e0611286dfa98027177098e0079c25fa67eebfa4a9bd910bc4a8f953040304000000cc9aa4542260b6655d50b8af499e740b70ef5636f2c4b9da06d3398cb7fb2abad0eee470a12330ebed14e697d189d95afd0dcea004ca6ee0fe62d783f71b3a76f611629a1b6b2b2e71a73357068f42ffe1b04800ae72d1179032afdc87858a7126c8bb219e711be0a6551f550f26d7dc2192e122d3dd5f9a00fb2ec392afd3800101000000000d6b506bc1043b2756502505f464693937b097eee21ee4a1ce33d18e8e5028e701000000000086e2be1ea1c1ab46e1da1c1e9ebfbfa7edaa04c96dac8a623ee19e7ccc7a4329cc6a65fdbf0c269eaaa0117f2bdaded4fd8372a2502d3e6b48d88b97e5295609","index":0,"name":"Unjail_Validator_1","output":["0 | Type : Unjail Validator","1 | Validator [1/3] : atest1v4ehgw36xsuyz3jr8ycryd6yxep5yd6r","1 | Validator [2/3] : ggunqs3jxq6nvwp5g5mnwdf58yunvd34xgunyv","1 | Validator [3/3] : pc4c2dv7"],"output_expert":["0 | Code hash [1/2] : 0a7624e9884b681e0af8708961b4e0c98a025e","0 | Code hash [2/2] : f571676cfbb408b77a3195cd15","1 | Validator [1/3] : atest1v4ehgw36xsuyz3jr8ycryd6yxep5yd6r","1 | Validator [2/3] : ggunqs3jxq6nvwp5g5mnwdf58yunvd34xgunyv","1 | Validator [3/3] : pc4c2dv7","2 | Timestamp : 2023-10-24 13:29:00.300331882 UTC","3 | Pubkey [1/2] : 000d6b506bc1043b2756502505f464693937b0","3 | Pubkey [2/2] : 97eee21ee4a1ce33d18e8e5028e7","4 | Epoch : 1","5 | Gas limit : 0.02","6 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e6161366232333634363639616465333464653363340023000000323032332d31302d32345431333a32393a30342e3132373239353135332b30303a3030521878eec179282d4d000817125ee48396ed352d17d2dd46d5fee7a8ef5ac7422b0c9cea35fb8c57eb48714a098d10a8f5cbb60029002bc947190bb4193b0dc9010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e6000d6b506bc1043b2756502505f464693937b097eee21ee4a1ce33d18e8e5028e70100000000000000204e00000000000000000400000002aae1df618b010000006cf329120204bf10b217b8113f93011fc2ea27a09c0246a866710fa9f8b68f7900aae1df618b010000350000000048afc9027d6cb7cb90b205684e7754996652920800c817a8040000000000000000000000000000000000000000000000000000000301000000dc7dfa22085e76269b274584e0493b2b16ed3aebab7a15ce783bacd47a09c0f4000048afc9027d6cb7cb90b205684e77549966529208010000000000f0384c200efd82972a2daf925098c67b97bb9eac11ba9f9247e0e22326301930af9ee25622c2787b0600a545436e549f589e97b627c2fda339f9d85f0e2d230703040000003259b0c706fa47999462ddf10e9b0620cf6bdbd32843cc1eb2b349a0d302813a521878eec179282d4d000817125ee48396ed352d17d2dd46d5fee7a8ef5ac7422b0c9cea35fb8c57eb48714a098d10a8f5cbb60029002bc947190bb4193b0dc97fccd4f3213cb6d47834e02e6534601bec50a912ac5101d4764137f7027dce060101000000000d6b506bc1043b2756502505f464693937b097eee21ee4a1ce33d18e8e5028e701000000000053a6e9220a67cd82992962127c8da671e9d52bdb20628cf97ab26fed1b5aa41c95ef13c52ae4e62fb75b07d714e5ca962ccb1e23d4eb9e5ffa286ae99ece2c09","index":0,"name":"Change_Commission_4","output":["0 | Type : Change commission","1 | New rate : 0.02","2 | Validator [1/3] : atest1v4ehgw36xsuyz3jr8ycryd6yxep5yd6r","2 | Validator [2/3] : ggunqs3jxq6nvwp5g5mnwdf58yunvd34xgunyv","2 | Validator [3/3] : pc4c2dv7"],"output_expert":["0 | Code hash [1/2] : 6cf329120204bf10b217b8113f93011fc2ea27","0 | Code hash [2/2] : a09c0246a866710fa9f8b68f79","1 | New rate : 0.02","2 | Validator [1/3] : atest1v4ehgw36xsuyz3jr8ycryd6yxep5yd6r","2 | Validator [2/3] : ggunqs3jxq6nvwp5g5mnwdf58yunvd34xgunyv","2 | Validator [3/3] : pc4c2dv7","3 | Timestamp : 2023-10-24 13:29:04.127295153 UTC","4 | Pubkey [1/2] : 000d6b506bc1043b2756502505f464693937b0","4 | Pubkey [2/2] : 97eee21ee4a1ce33d18e8e5028e7","5 | Epoch : 1","6 | Gas limit : 0.02","7 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e6161366232333634363639616465333464653363340023000000323032332d31302d32345431333a32393a30382e3833313236383438352b30303a3030166a4c8868a89022d33efc3dcd15f8cbe38be19a6d6c9faa51b23893d7512a877c213482b44c6cd70f332dce1bc98f6296d93277ebfea9ba374821cc4fe4442b010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e6004962370b5b3112ab4bfbde70c39811b980b0c494b9fa2ed4023dcce35485916d0100000000000000204e000000000000000005000000010df4df618b010000007e68fb834a7772c82a312c4e6e519d97282cce39507950c35fe89f1c347a4a2e020df4df618b010000006f63dc0ee534b74cec728b9f76dae383388f7306df66b827fa940e210a7c11ca000df4df618b0100005000000000835d73663634f9f05bffa024b6dd877544a37ff6f99c1f9a0c047ffe895bf03a0082f54298d9b67046314ba9ae07dbb0f627664d7500000c0000000000000018000000000000001e0000000000000003010000005c6ebe6f94f34b183a126bb542e7a1e02f7298b7475879aa2af4b981affa4ba0000082f54298d9b67046314ba9ae07dbb0f627664d75010000000000b33fb5f8bec67c4121e0778b76baf2e6a1263604958f0c7bbe136bd040f81fee2954ac6c4d9a4ec7aaa5a1bd5a3b5c76aa06de76cdfb7e41df65222494b38e010305000000656e81bb4cabaedeb4e96a4ec6bba1d200ae4a99183cf9397e6d3b721c1bfcb4835d73663634f9f05bffa024b6dd877544a37ff6f99c1f9a0c047ffe895bf03a166a4c8868a89022d33efc3dcd15f8cbe38be19a6d6c9faa51b23893d7512a877c213482b44c6cd70f332dce1bc98f6296d93277ebfea9ba374821cc4fe4442b9b4e7a70cdb72cdf6d7ab3bc6bd79f4cb8b59e1136d2e6a2d540bcbca2575f130101000000004962370b5b3112ab4bfbde70c39811b980b0c494b9fa2ed4023dcce35485916d0100000000009e232f0a834324436817275be82702c8d2d03ee30a42282a7351dbf0711e85f12c93b7b66acf9d08c188b6ad4e350c390d3c973bdab60849878c77933105a608","index":0,"name":"Init_Proposal_4","output":["0 | Type : Init proposal","1 | Proposal type : Default","2 | Author [1/3] : atest1v4ehgw368qeyvdf5xguns3peggmrwvp5","2 | Author [2/3] : xcenzdzzgyu5z3fsxazyys3sgcmrydekxc6ygd","2 | Author [3/3] : e4gz2an6","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] : 6f63dc0ee534b74cec728b9f76dae383388f73","0 | Code hash [2/2] : 06df66b827fa940e210a7c11ca","1 | Proposal type : Default","2 | Author [1/3] : atest1v4ehgw368qeyvdf5xguns3peggmrwvp5","2 | Author [2/3] : xcenzdzzgyu5z3fsxazyys3sgcmrydekxc6ygd","2 | Author [3/3] : e4gz2an6","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-10-24 13:29:08.831268485 UTC","8 | Pubkey [1/2] : 004962370b5b3112ab4bfbde70c39811b980b0","8 | Pubkey [2/2] : c494b9fa2ed4023dcce35485916d","9 | Epoch : 1","10 | Gas limit : 0.02","11 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e6161366232333634363639616465333464653363340023000000323032332d31302d32345431333a32393a31322e3537313935363834332b30303a30302495afae22ec5bf129d74245ec279ec8ae32ae42d18a366435176d5f7c90603e2a45db3365a890dfada2796173dddc5e353605d88f4033fa21dcc2b9410f39ec010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e6004962370b5b3112ab4bfbde70c39811b980b0c494b9fa2ed4023dcce35485916d0100000000000000204e00000000000000000600000001ac02e0618b010000007e68fb834a7772c82a312c4e6e519d97282cce39507950c35fe89f1c347a4a2e01ac02e0618b010000009ebd95ba9479625043b113445c949d78116a77e86011eec60abbfb41b89f880302c202e0618b010000006f63dc0ee534b74cec728b9f76dae383388f7306df66b827fa940e210a7c11ca00c202e0618b01000070000000004f741373fe9bdd7ec328f836293fd8720e073217f8d2dd905bdf8503833cbb200082f54298d9b67046314ba9ae07dbb0f627664d75000195222a8e5bc15c1d0fd1445625650d12a59f84a3a750dbf001b36558550881290c0000000000000018000000000000001e0000000000000003010000005341e881c22f2d2b2316f72f6b2b6c69661e349a0d2ed22ed539136b732aa7d2000082f54298d9b67046314ba9ae07dbb0f627664d750100000000006c58868054305fd96389b7c788a334c54eda1d427e6496b318ce1578ae2dcd87c1f31b75c75e3757d87acd72c21352248eb4987b5454b1ebc917135c368474020306000000b6a346a5e8a89f150c88de9eda14ed46c0495fd4995c95c70a943b912f3fe7154f741373fe9bdd7ec328f836293fd8720e073217f8d2dd905bdf8503833cbb2095222a8e5bc15c1d0fd1445625650d12a59f84a3a750dbf001b36558550881292495afae22ec5bf129d74245ec279ec8ae32ae42d18a366435176d5f7c90603e2a45db3365a890dfada2796173dddc5e353605d88f4033fa21dcc2b9410f39ec3637cc0d00f42605ae426d5fb1da4e29d68eae3e658704e261718fc3ef2f3d100101000000004962370b5b3112ab4bfbde70c39811b980b0c494b9fa2ed4023dcce35485916d010000000000eafe8641dba20d1396ba24a5878a23aa8a4cf5c5b281dc3b1da7e2b6757dd82ffdafe65349ec38765154f060eb197d436a101b9745d76c1468a64989c9873a01","index":0,"name":"Init_Proposal_5","output":["0 | Type : Init proposal","1 | Proposal type [1/2] : 9ebd95ba9479625043b113445c949d78116a77","1 | Proposal type [2/2] : e86011eec60abbfb41b89f8803","2 | Author [1/3] : atest1v4ehgw368qeyvdf5xguns3peggmrwvp5","2 | Author [2/3] : xcenzdzzgyu5z3fsxazyys3sgcmrydekxc6ygd","2 | Author [3/3] : e4gz2an6","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] : 6f63dc0ee534b74cec728b9f76dae383388f73","0 | Code hash [2/2] : 06df66b827fa940e210a7c11ca","1 | Proposal type [1/2] : 9ebd95ba9479625043b113445c949d78116a77","1 | Proposal type [2/2] : e86011eec60abbfb41b89f8803","2 | Author [1/3] : atest1v4ehgw368qeyvdf5xguns3peggmrwvp5","2 | Author [2/3] : xcenzdzzgyu5z3fsxazyys3sgcmrydekxc6ygd","2 | Author [3/3] : e4gz2an6","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-10-24 13:29:12.571956843 UTC","8 | Pubkey [1/2] : 004962370b5b3112ab4bfbde70c39811b980b0","8 | Pubkey [2/2] : c494b9fa2ed4023dcce35485916d","9 | Epoch : 1","10 | Gas limit : 0.02","11 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e6161366232333634363639616465333464653363340023000000323032332d31302d32345431333a32393a31372e3437303332353734382b30303a30307198cd4ddb397683cb11e784882c4f21fe3236a3ead7e054e0c12dff8992c5d14498907d93b193464b68980733b62d7489dfbeab9108bceb76a33603d92583fa010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e6002ec6ed8190311c0d4a878b569329b118092be14e91d970f31aeb0d82d7b10f500100000000000000204e00000000000000000400000002c915e0618b0100000092ed2a568021d8c015e275cc39936750e10b51a2ee950f213fb21a76ccc7214700c915e0618b0100003800000000000000000000000000005d5e34133e34d08b4ac0f9fd7943adf18f60bfcd01000000005d5e34133e34d08b4ac0f9fd7943adf18f60bfcd03010000007bc135a784a384c757a200c7dc5cada52c69480021f7067e5e4ec68d56a3abb800005d5e34133e34d08b4ac0f9fd7943adf18f60bfcd01000000000019ad35da68a244f41ceb4d792bd5257d7daca467bb98dcca7520a417882bd5729f3d704d4f6411a586e2c77f7760f68b83fb59c65759f2867a5293f85377520a0304000000d2aa584a41e75729071470e5c7788376cf64dfe89c613c458b21d313ccf205ae7198cd4ddb397683cb11e784882c4f21fe3236a3ead7e054e0c12dff8992c5d14498907d93b193464b68980733b62d7489dfbeab9108bceb76a33603d92583fa13f19f9116b6a9f1d5a09ca9abc414f3373eab8ae14d510edee42f7c5dc77e780101000000002ec6ed8190311c0d4a878b569329b118092be14e91d970f31aeb0d82d7b10f50010000000000d9123d245cdb1f49f26109e6c38abe8144e5cc53a049e47aacf662d33d1237ec56cd47f4a55e8be41f48f267dd0fa6263079a6a5709158012f3e9d4444b60505","index":0,"name":"Vote_Proposal_6","output":["0 | Type : Vote Proposal","1 | ID : 0","2 | Vote : yay","3 | Voter [1/3] : atest1v4ehgw36x4zr23fnxscnxv69xv6ygvpc","3 | Voter [2/3] : gg6yzsesgcu5v3ph8y6rxs2ygccns33kxppyvs","3 | Voter [3/3] : 6y348p2r","4 | Delegation [1/3] : atest1v4ehgw36x4zr23fnxscnxv69xv6ygvpc","4 | Delegation [2/3] : gg6yzsesgcu5v3ph8y6rxs2ygccns33kxppyvs","4 | Delegation [3/3] : 6y348p2r"],"output_expert":["0 | Code hash [1/2] : 92ed2a568021d8c015e275cc39936750e10b51","0 | Code hash [2/2] : a2ee950f213fb21a76ccc72147","1 | ID : 0","2 | Vote : yay","3 | Voter [1/3] : atest1v4ehgw36x4zr23fnxscnxv69xv6ygvpc","3 | Voter [2/3] : gg6yzsesgcu5v3ph8y6rxs2ygccns33kxppyvs","3 | Voter [3/3] : 6y348p2r","4 | Delegation [1/3] : atest1v4ehgw36x4zr23fnxscnxv69xv6ygvpc","4 | Delegation [2/3] : gg6yzsesgcu5v3ph8y6rxs2ygccns33kxppyvs","4 | Delegation [3/3] : 6y348p2r","5 | Timestamp : 2023-10-24 13:29:17.470325748 UTC","6 | Pubkey [1/2] : 002ec6ed8190311c0d4a878b569329b118092b","6 | Pubkey [2/2] : e14e91d970f31aeb0d82d7b10f50","7 | Epoch : 1","8 | Gas limit : 0.02","9 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e6161366232333634363639616465333464653363340023000000323032332d31302d32345431333a32393a32312e3138363734373233332b30303a3030323ba6026d3d1c16bfa20021fbdbaa5ac64bcce1119faabbfc63b4a416478216d4aa40a043889964357e9ffc22b3004bbe712e92dd842df0afd25db1470f34d9010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e6000d6b506bc1043b2756502505f464693937b097eee21ee4a1ce33d18e8e5028e70100000000000000204e000000000000000004000000024d24e0618b0100000092ed2a568021d8c015e275cc39936750e10b51a2ee950f213fb21a76ccc72147004e24e0618b010000370000000000000000000000010048afc9027d6cb7cb90b205684e7754996652920801000000005d5e34133e34d08b4ac0f9fd7943adf18f60bfcd030100000091e91930a79a382e81b9e86f78da24edff012d1fb8cb129656b50933278611fc000048afc9027d6cb7cb90b205684e77549966529208010000000000c5bc916110139b0fecaacb3937770d6adf4f3b75ce4338e4cba402f619e2033294155edd4b1f9e8968deb652b914c6041602ac2241fb541478c66f904c3ebc0a03040000008d3fec793d8d65e2f95311aa9da9a8ee3e11b3ccfe481c2c408b9a92aad2a873323ba6026d3d1c16bfa20021fbdbaa5ac64bcce1119faabbfc63b4a416478216d4aa40a043889964357e9ffc22b3004bbe712e92dd842df0afd25db1470f34d9a2e48c2b8fa5a21718be8ec1743e9d6d6e4b4e65aab71c90177c6ceffe59f0790101000000000d6b506bc1043b2756502505f464693937b097eee21ee4a1ce33d18e8e5028e70100000000003b4c103ccbfc250059bf8f0560745accd8c7828763c6776a282c6ec02a802071f71a296c8468074a236d5e9a8104927a7e9d92e5e4d5e9c6e41a53f6b0d15a0f","index":0,"name":"Vote_Proposal_7","output":["0 | Type : Vote Proposal","1 | ID : 0","2 | Vote : nay","3 | Voter [1/3] : atest1v4ehgw36xsuyz3jr8ycryd6yxep5yd6r","3 | Voter [2/3] : ggunqs3jxq6nvwp5g5mnwdf58yunvd34xgunyv","3 | Voter [3/3] : pc4c2dv7","4 | Delegation [1/3] : atest1v4ehgw36x4zr23fnxscnxv69xv6ygvpc","4 | Delegation [2/3] : gg6yzsesgcu5v3ph8y6rxs2ygccns33kxppyvs","4 | Delegation [3/3] : 6y348p2r"],"output_expert":["0 | Code hash [1/2] : 92ed2a568021d8c015e275cc39936750e10b51","0 | Code hash [2/2] : a2ee950f213fb21a76ccc72147","1 | ID : 0","2 | Vote : nay","3 | Voter [1/3] : atest1v4ehgw36xsuyz3jr8ycryd6yxep5yd6r","3 | Voter [2/3] : ggunqs3jxq6nvwp5g5mnwdf58yunvd34xgunyv","3 | Voter [3/3] : pc4c2dv7","4 | Delegation [1/3] : atest1v4ehgw36x4zr23fnxscnxv69xv6ygvpc","4 | Delegation [2/3] : gg6yzsesgcu5v3ph8y6rxs2ygccns33kxppyvs","4 | Delegation [3/3] : 6y348p2r","5 | Timestamp : 2023-10-24 13:29:21.186747233 UTC","6 | Pubkey [1/2] : 000d6b506bc1043b2756502505f464693937b0","6 | Pubkey [2/2] : 97eee21ee4a1ce33d18e8e5028e7","7 | Epoch : 1","8 | Gas limit : 0.02","9 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e6161366232333634363639616465333464653363340023000000323032332d31302d32345431333a32393a32342e3938333335383835352b30303a3030a4204199748154238d82ca6d31cf85ce5841311e775dc69eb0e9e156282df1f10064f883068d1957b51b1c1d6ee1df9223b69e9da5b4e4c9ed56189dbcd3aa49010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e6004962370b5b3112ab4bfbde70c39811b980b0c494b9fa2ed4023dcce35485916d0100000000000000204e000000000000000004000000022233e0618b0100000092ed2a568021d8c015e275cc39936750e10b51a2ee950f213fb21a76ccc72147002233e0618b01000023000000000000000000000000000082f54298d9b67046314ba9ae07dbb0f627664d75000000000301000000077e2c5954f80c6c47dd705635c94eb65fbec4e1dfafc999b1a1937b1fba9a63000082f54298d9b67046314ba9ae07dbb0f627664d750100000000002f3f7742a27c31904875ed7db8dcaff2620c8e10f654ca63cb70df6757cdf30579a7d982ceb472a32afa200639922b566149c40db27905d8f510272c7887ac0703040000009aff521ae0dc6fb19e3bbd2e805f2416e2a1a82b27208023e23dbff8c7a27076a4204199748154238d82ca6d31cf85ce5841311e775dc69eb0e9e156282df1f10064f883068d1957b51b1c1d6ee1df9223b69e9da5b4e4c9ed56189dbcd3aa49d1a2cbb3fd6c75249f3aa2e136f477309809386cc6d2bb18479b27ad804899d60101000000004962370b5b3112ab4bfbde70c39811b980b0c494b9fa2ed4023dcce35485916d0100000000001e252f39d3d45be780458debf87f5f207aae1c9e2ee019e90d52038730a5fc96b8b8fd246788a0083a8828aaa0e38418fe7bc5c7df449f579880ee2c2ef06d07","index":0,"name":"Vote_Proposal_8","output":["0 | Type : Vote Proposal","1 | ID : 0","2 | Vote : yay","3 | Voter [1/3] : atest1v4ehgw368qeyvdf5xguns3peggmrwvp5","3 | Voter [2/3] : xcenzdzzgyu5z3fsxazyys3sgcmrydekxc6ygd","3 | Voter [3/3] : e4gz2an6"],"output_expert":["0 | Code hash [1/2] : 92ed2a568021d8c015e275cc39936750e10b51","0 | Code hash [2/2] : a2ee950f213fb21a76ccc72147","1 | ID : 0","2 | Vote : yay","3 | Voter [1/3] : atest1v4ehgw368qeyvdf5xguns3peggmrwvp5","3 | Voter [2/3] : xcenzdzzgyu5z3fsxazyys3sgcmrydekxc6ygd","3 | Voter [3/3] : e4gz2an6","4 | Timestamp : 2023-10-24 13:29:24.983358855 UTC","5 | Pubkey [1/2] : 004962370b5b3112ab4bfbde70c39811b980b0","5 | Pubkey [2/2] : c494b9fa2ed4023dcce35485916d","6 | Epoch : 1","7 | Gas limit : 0.02","8 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e6161366232333634363639616465333464653363340023000000323032332d31302d32345431333a32393a32382e3637333635383132352b30303a30303b503f2b9799589fb46f6d341082892a9d5a119dae6f9b91fef2995d82844048bb71c7649f347e8f607412d4285af563adc4055deac72c936a5b6fd597f9fe4d010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e6004962370b5b3112ab4bfbde70c39811b980b0c494b9fa2ed4023dcce35485916d0100000000000000204e000000000000000004000000029041e0618b01000000bec1efd37d88876be4176d1afc0b6fa784901efe18cf9ec30293313be855d814009041e0618b0100004b000000005d5e34133e34d08b4ac0f9fd7943adf18f60bfcd00e9a43500000000000000000000000000000000000000000000000000000000010082f54298d9b67046314ba9ae07dbb0f627664d7503010000002d017a75f44e0d34b15375925effe33d2a67e7b879509ba37ebdf413a2808241000082f54298d9b67046314ba9ae07dbb0f627664d75010000000000646a6fb6b0f255f0218baa3549689ded89d0a77b3075a179dfbb496ab3bb20f6bc593e6261f0d6fc8341407e313d5be732f0c2680581eff966595a86a2edae040304000000ca72c0c76cb0dcae65fb938b14d2bf2e118be99ad266e24753a26143a3afeda83b503f2b9799589fb46f6d341082892a9d5a119dae6f9b91fef2995d82844048bb71c7649f347e8f607412d4285af563adc4055deac72c936a5b6fd597f9fe4d093835179bcd29ae2e3e9a60d17061176cb5754b93faf0bfc4ad66fbec5f2bc90101000000004962370b5b3112ab4bfbde70c39811b980b0c494b9fa2ed4023dcce35485916d010000000000a4b280eb90d383c8b5fe60229ac227d2816cd088d13c7d7a189d569c7a282d6771ddf9a5afde8c8e29467c393d91341df66fac931033f6e1ae0fa049e6263501","index":0,"name":"Bond_5","output":["0 | Type : Bond","1 | Source [1/3] : atest1v4ehgw368qeyvdf5xguns3peggmrwvp5","1 | Source [2/3] : xcenzdzzgyu5z3fsxazyys3sgcmrydekxc6ygd","1 | Source [3/3] : e4gz2an6","2 | Validator [1/3] : atest1v4ehgw36x4zr23fnxscnxv69xv6ygvpc","2 | Validator [2/3] : gg6yzsesgcu5v3ph8y6rxs2ygccns33kxppyvs","2 | Validator [3/3] : 6y348p2r","3 | Amount : NAM 900.0"],"output_expert":["0 | Code hash [1/2] : bec1efd37d88876be4176d1afc0b6fa784901e","0 | Code hash [2/2] : fe18cf9ec30293313be855d814","1 | Source [1/3] : atest1v4ehgw368qeyvdf5xguns3peggmrwvp5","1 | Source [2/3] : xcenzdzzgyu5z3fsxazyys3sgcmrydekxc6ygd","1 | Source [3/3] : e4gz2an6","2 | Validator [1/3] : atest1v4ehgw36x4zr23fnxscnxv69xv6ygvpc","2 | Validator [2/3] : gg6yzsesgcu5v3ph8y6rxs2ygccns33kxppyvs","2 | Validator [3/3] : 6y348p2r","3 | Amount : NAM 900.0","4 | Timestamp : 2023-10-24 13:29:28.673658125 UTC","5 | Pubkey [1/2] : 004962370b5b3112ab4bfbde70c39811b980b0","5 | Pubkey [2/2] : c494b9fa2ed4023dcce35485916d","6 | Epoch : 1","7 | Gas limit : 0.02","8 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e6161366232333634363639616465333464653363340023000000323032332d31302d32345431333a32393a33322e3336333931383836342b30303a3030b4659f33e20cb62d96cf8beff24b3708db2305c3f70d6f031108ff0bd1705a5cb7feae3e2e33a14015e56c1b52dcf863c2e874800802459b1a52b5c1b70d917c010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e6004962370b5b3112ab4bfbde70c39811b980b0c494b9fa2ed4023dcce35485916d0100000000000000204e00000000000000000400000002fa4fe0618b010000006cf329120204bf10b217b8113f93011fc2ea27a09c0246a866710fa9f8b68f7900fa4fe0618b010000350000000082f54298d9b67046314ba9ae07dbb0f627664d7500743ba40b00000000000000000000000000000000000000000000000000000003010000002607060f2f2afee0c1619f71ac5d0a68c9f577780ab97c049548d00ab32f0c74000082f54298d9b67046314ba9ae07dbb0f627664d750100000000008dca2f8546632321a7ac605d66fb90902364bc56ddf182323defd5f4552f94a33f3e2ee2a90ead60257a5edaad614b34c6f1ed57a6a0c074e42d61e05355050603040000000ddd0371e846992b5faa4aea4d13f70ad3ee99264b73503438f567212ef20c21b4659f33e20cb62d96cf8beff24b3708db2305c3f70d6f031108ff0bd1705a5cb7feae3e2e33a14015e56c1b52dcf863c2e874800802459b1a52b5c1b70d917cd25f3810ca3ced7b5472073ef57f9eee6f1a11e4656e0b36683c87f725d62bb30101000000004962370b5b3112ab4bfbde70c39811b980b0c494b9fa2ed4023dcce35485916d010000000000afacb128ffe27aa0099a9d7dd27a4167bb0efd5e0bf9d489be6a01a7dcfd7475685bc63c7787c1d62604fd3f8beb63c9405f2810ad1667db15cfa63913171408","index":0,"name":"Change_Commission_5","output":["0 | Type : Change commission","1 | New rate : 0.05","2 | Validator [1/3] : atest1v4ehgw368qeyvdf5xguns3peggmrwvp5","2 | Validator [2/3] : xcenzdzzgyu5z3fsxazyys3sgcmrydekxc6ygd","2 | Validator [3/3] : e4gz2an6"],"output_expert":["0 | Code hash [1/2] : 6cf329120204bf10b217b8113f93011fc2ea27","0 | Code hash [2/2] : a09c0246a866710fa9f8b68f79","1 | New rate : 0.05","2 | Validator [1/3] : atest1v4ehgw368qeyvdf5xguns3peggmrwvp5","2 | Validator [2/3] : xcenzdzzgyu5z3fsxazyys3sgcmrydekxc6ygd","2 | Validator [3/3] : e4gz2an6","3 | Timestamp : 2023-10-24 13:29:32.363918864 UTC","4 | Pubkey [1/2] : 004962370b5b3112ab4bfbde70c39811b980b0","4 | Pubkey [2/2] : c494b9fa2ed4023dcce35485916d","5 | Epoch : 1","6 | Gas limit : 0.02","7 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e6161366232333634363639616465333464653363340023000000323032332d31302d32345431333a32393a33372e3233343132333938322b30303a30308c47b4d043cd9b3e49a7e7fb71d2818d0e58b4602c7275d8229ef88c19373634143719fb1dd7d79ead4d0d3ae34b4b4e1b908230d5e5a6ba34dcbc34d7e63d8b010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e6000d6b506bc1043b2756502505f464693937b097eee21ee4a1ce33d18e8e5028e70100000000000000204e000000000000000004000000020063e0618b01000000bec1efd37d88876be4176d1afc0b6fa784901efe18cf9ec30293313be855d814000063e0618b0100004b000000005d5e34133e34d08b4ac0f9fd7943adf18f60bfcd00e9a43500000000000000000000000000000000000000000000000000000000010048afc9027d6cb7cb90b205684e7754996652920803010000002c5aa5844d5cccbb22aa8f6aef82e603c650cb5c59b6178152eff0b4a604db88000048afc9027d6cb7cb90b205684e77549966529208010000000000af7b054fd2c29ae3994c925f14c4bf759e09a2211eda42821aeb4dcab102c9f37ee16e415a477dacbdf2efb6f426143077648213eb8ebbdf36c640983dac5c08030400000056234e61f21858ea454c760769b39a45641345fd7ba74ac58bd7ae170dd778868c47b4d043cd9b3e49a7e7fb71d2818d0e58b4602c7275d8229ef88c19373634143719fb1dd7d79ead4d0d3ae34b4b4e1b908230d5e5a6ba34dcbc34d7e63d8b23acf594097b16a82633e435fe5e17b2e8ed0e436b134954c815a8ff15fa09500101000000000d6b506bc1043b2756502505f464693937b097eee21ee4a1ce33d18e8e5028e7010000000000a6f40f27c95dd03548cc435a79a016c7ae86ab9dc33423929a38892f81d07908f10692cb7d7bdeec735c68b75f9099ccec4d69e96e474bde7357a7b28392060f","index":0,"name":"Bond_6","output":["0 | Type : Bond","1 | Source [1/3] : atest1v4ehgw36xsuyz3jr8ycryd6yxep5yd6r","1 | Source [2/3] : ggunqs3jxq6nvwp5g5mnwdf58yunvd34xgunyv","1 | Source [3/3] : pc4c2dv7","2 | Validator [1/3] : atest1v4ehgw36x4zr23fnxscnxv69xv6ygvpc","2 | Validator [2/3] : gg6yzsesgcu5v3ph8y6rxs2ygccns33kxppyvs","2 | Validator [3/3] : 6y348p2r","3 | Amount : NAM 900.0"],"output_expert":["0 | Code hash [1/2] : bec1efd37d88876be4176d1afc0b6fa784901e","0 | Code hash [2/2] : fe18cf9ec30293313be855d814","1 | Source [1/3] : atest1v4ehgw36xsuyz3jr8ycryd6yxep5yd6r","1 | Source [2/3] : ggunqs3jxq6nvwp5g5mnwdf58yunvd34xgunyv","1 | Source [3/3] : pc4c2dv7","2 | Validator [1/3] : atest1v4ehgw36x4zr23fnxscnxv69xv6ygvpc","2 | Validator [2/3] : gg6yzsesgcu5v3ph8y6rxs2ygccns33kxppyvs","2 | Validator [3/3] : 6y348p2r","3 | Amount : NAM 900.0","4 | Timestamp : 2023-10-24 13:29:37.234123982 UTC","5 | Pubkey [1/2] : 000d6b506bc1043b2756502505f464693937b0","5 | Pubkey [2/2] : 97eee21ee4a1ce33d18e8e5028e7","6 | Epoch : 1","7 | Gas limit : 0.02","8 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e6161366232333634363639616465333464653363340023000000323032332d31302d32345431333a32393a34312e3130363932383334372b30303a3030467a8335bd24ac495bb8eed42e198a0cf6d519604e4c26c02f0517329d45a82c7f756390850f23db33e29f17ecb6fbb4db398a7e3be3dfb77685d9a36742734a010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e6000d6b506bc1043b2756502505f464693937b097eee21ee4a1ce33d18e8e5028e70100000000000000204e000000000000000004000000021e72e0618b010000006cf329120204bf10b217b8113f93011fc2ea27a09c0246a866710fa9f8b68f79001e72e0618b010000350000000048afc9027d6cb7cb90b205684e7754996652920800046bf41400000000000000000000000000000000000000000000000000000003010000001d367ea04201a9549db767d55bca5d245fca6fb90e365f860189334eb7c0eb04000048afc9027d6cb7cb90b205684e77549966529208010000000000c43b76affce19ad893f180616c0fc24894c8bd7ed76e1898f8ea9909946b3190351af90d662c020903e67ed12365801343563fd5669e1231765cd3ac01b58a050304000000ab8fc3c2cd21dacfc3334623728562c26136b4768fd77638868b647b4abc35e0467a8335bd24ac495bb8eed42e198a0cf6d519604e4c26c02f0517329d45a82c7f756390850f23db33e29f17ecb6fbb4db398a7e3be3dfb77685d9a36742734ac605af7976373848f9def5fe99fdedb16cd175a5fe2ef3a3885e3cd209deb5b40101000000000d6b506bc1043b2756502505f464693937b097eee21ee4a1ce33d18e8e5028e7010000000000348605ba263f49cce34b5bad253482ec51c2448593c498164f0565233d6a19b1ddd02f668533603f8adc1b3a330321eda22d15c43d0a8ec3e5d565e690edab00","index":0,"name":"Change_Commission_6","output":["0 | Type : Change commission","1 | New rate : 0.09","2 | Validator [1/3] : atest1v4ehgw36xsuyz3jr8ycryd6yxep5yd6r","2 | Validator [2/3] : ggunqs3jxq6nvwp5g5mnwdf58yunvd34xgunyv","2 | Validator [3/3] : pc4c2dv7"],"output_expert":["0 | Code hash [1/2] : 6cf329120204bf10b217b8113f93011fc2ea27","0 | Code hash [2/2] : a09c0246a866710fa9f8b68f79","1 | New rate : 0.09","2 | Validator [1/3] : atest1v4ehgw36xsuyz3jr8ycryd6yxep5yd6r","2 | Validator [2/3] : ggunqs3jxq6nvwp5g5mnwdf58yunvd34xgunyv","2 | Validator [3/3] : pc4c2dv7","3 | Timestamp : 2023-10-24 13:29:41.106928347 UTC","4 | Pubkey [1/2] : 000d6b506bc1043b2756502505f464693937b0","4 | Pubkey [2/2] : 97eee21ee4a1ce33d18e8e5028e7","5 | Epoch : 1","6 | Gas limit : 0.02","7 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e6161366232333634363639616465333464653363340023000000323032332d31302d32345431333a32393a34342e3939373333333035382b30303a3030ea6256bd6209b9e2be2a02274316ab4ba06c444059ce9ee3b25aa4bf8d97922d5127797061cac65c3f8a8467f7a875c8db087a8911fd6a14b6cb30a5e59ec3f3010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e6004962370b5b3112ab4bfbde70c39811b980b0c494b9fa2ed4023dcce35485916d0100000000000000204e000000000000000005000000015081e0618b010000007e68fb834a7772c82a312c4e6e519d97282cce39507950c35fe89f1c347a4a2e025081e0618b010000006f63dc0ee534b74cec728b9f76dae383388f7306df66b827fa940e210a7c11ca005081e0618b0100006900000000ba72e254299b69335f7bf57fa365ec7e223af620a996b31a3125b8de6fb275170082f54298d9b67046314ba9ae07dbb0f627664d750101000000000082f54298d9b67046314ba9ae07dbb0f627664d750c0000000000000018000000000000001e0000000000000003010000003a8118f6543223e26418dea6e23ccfa97bcbfceb5b7fcb66b3e49feb51c95f9e000082f54298d9b67046314ba9ae07dbb0f627664d75010000000000b50cbcf2661e77a1079fe4e9b18334862222caca6dc70a9991ac10cbcf9c596d93ee56b9b408d24164235d09c17274791e9dbef530f8b3e38d56da9451d4c5010305000000c29d3fc37b8fd5cd50487c1056c8232b405e4eeb30f52794a32a7e592fdb0973ba72e254299b69335f7bf57fa365ec7e223af620a996b31a3125b8de6fb27517ea6256bd6209b9e2be2a02274316ab4ba06c444059ce9ee3b25aa4bf8d97922d5127797061cac65c3f8a8467f7a875c8db087a8911fd6a14b6cb30a5e59ec3f38c9b1fea21a6b408c0e9dca019d6fe0d7339c4850d6174e27d4b88950ef9f3df0101000000004962370b5b3112ab4bfbde70c39811b980b0c494b9fa2ed4023dcce35485916d010000000000c5385f6064ee97071f9fd4f1d465b8a4ab274fd0357f5d509ca30db3b3f3f8fe2bc4b3c6e11d84ffa2ad810267b10478bac070bfeeb66cae4f3eb74bfe92820a","index":0,"name":"Init_Proposal_6","output":["0 | Type : Init proposal","1 | Proposal type : PGF Steward","2 | Author [1/3] : atest1v4ehgw368qeyvdf5xguns3peggmrwvp5","2 | Author [2/3] : xcenzdzzgyu5z3fsxazyys3sgcmrydekxc6ygd","2 | Author [3/3] : e4gz2an6","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] : 6f63dc0ee534b74cec728b9f76dae383388f73","0 | Code hash [2/2] : 06df66b827fa940e210a7c11ca","1 | Proposal type : PGF Steward","2 | Author [1/3] : atest1v4ehgw368qeyvdf5xguns3peggmrwvp5","2 | Author [2/3] : xcenzdzzgyu5z3fsxazyys3sgcmrydekxc6ygd","2 | Author [3/3] : e4gz2an6","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-10-24 13:29:44.997333058 UTC","8 | Pubkey [1/2] : 004962370b5b3112ab4bfbde70c39811b980b0","8 | Pubkey [2/2] : c494b9fa2ed4023dcce35485916d","9 | Epoch : 1","10 | Gas limit : 0.02","11 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e6161366232333634363639616465333464653363340023000000323032332d31302d32345431333a32393a34382e3833333930373237302b30303a303051da07abf0e9718718229668bbafded08d9d57a7486679a926cec67cc886edb5406693b2a19304c734e41dc216d147fcc0e13a7ef6b028f5e796ec0ef8fc234d010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e6004962370b5b3112ab4bfbde70c39811b980b0c494b9fa2ed4023dcce35485916d0100000000000000204e000000000000000005000000014d90e0618b010000007e68fb834a7772c82a312c4e6e519d97282cce39507950c35fe89f1c347a4a2e024d90e0618b010000006f63dc0ee534b74cec728b9f76dae383388f7306df66b827fa940e210a7c11ca004d90e0618b0100006900000000d4ea4cc064222633a41e67771eb8dbb214c60a46d08c12cc087f036c692722a90082f54298d9b67046314ba9ae07dbb0f627664d750101000000000082f54298d9b67046314ba9ae07dbb0f627664d750c0000000000000018000000000000001e000000000000000301000000d909f3a74a4ab0cc30ee24c42af2909c3e5c3175a07a77205788ad5d9c81aeb0000082f54298d9b67046314ba9ae07dbb0f627664d75010000000000979643ce81da7ae3cabd0efd76ce0f4bb6fc175d91800da502c42140160185705d3ac518a8474523ac371cea8043ec284c20106c8659c9850c19c2adffc3710f0305000000afbd5db68c10566d82595a0a9630d2fe4972ef4f40287359cbf24b3375cdfa1ed4ea4cc064222633a41e67771eb8dbb214c60a46d08c12cc087f036c692722a951da07abf0e9718718229668bbafded08d9d57a7486679a926cec67cc886edb5406693b2a19304c734e41dc216d147fcc0e13a7ef6b028f5e796ec0ef8fc234d646f0032e95cee999d7dd3b98c980ec5c499129db6f54ea6594e575e0884ff850101000000004962370b5b3112ab4bfbde70c39811b980b0c494b9fa2ed4023dcce35485916d01000000000091bb2fc34e31c9a7d6b00b9d1844ed51962231e231367829f3672c8fbae2d88fdbfad4e86244c01560c1be26a83f155397f249bf1f14025742ccc740e6a9e40f","index":0,"name":"Init_Proposal_7","output":["0 | Type : Init proposal","1 | Proposal type : PGF Steward","2 | Author [1/3] : atest1v4ehgw368qeyvdf5xguns3peggmrwvp5","2 | Author [2/3] : xcenzdzzgyu5z3fsxazyys3sgcmrydekxc6ygd","2 | Author [3/3] : e4gz2an6","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] : 6f63dc0ee534b74cec728b9f76dae383388f73","0 | Code hash [2/2] : 06df66b827fa940e210a7c11ca","1 | Proposal type : PGF Steward","2 | Author [1/3] : atest1v4ehgw368qeyvdf5xguns3peggmrwvp5","2 | Author [2/3] : xcenzdzzgyu5z3fsxazyys3sgcmrydekxc6ygd","2 | Author [3/3] : e4gz2an6","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-10-24 13:29:48.833907270 UTC","8 | Pubkey [1/2] : 004962370b5b3112ab4bfbde70c39811b980b0","8 | Pubkey [2/2] : c494b9fa2ed4023dcce35485916d","9 | Epoch : 1","10 | Gas limit : 0.02","11 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e6161366232333634363639616465333464653363340023000000323032332d31302d32345431333a32393a35322e3733343234313730382b30303a3030560407b7f504ed59a7c4fca88de1b251a826bb597d8b5e94797d941bc3b6b94857d7b4c65a5895758b4d056709343b504ec8ddb8ef7e8815a4402a9f6e595c54010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e6002ec6ed8190311c0d4a878b569329b118092be14e91d970f31aeb0d82d7b10f500100000000000000204e000000000000000004000000028f9fe0618b0100000092ed2a568021d8c015e275cc39936750e10b51a2ee950f213fb21a76ccc7214700909fe0618b0100003800000001000000000000000001005d5e34133e34d08b4ac0f9fd7943adf18f60bfcd01000000005d5e34133e34d08b4ac0f9fd7943adf18f60bfcd03010000006c5fc71b17aee1f1625db7ffa573ae69300b563af5a9d851341dfb2c0080a78700005d5e34133e34d08b4ac0f9fd7943adf18f60bfcd010000000000d0f540cde9850bdd60ab3fabb6dfee5461ad40c3d745f61c9350d096ea48558298403f8aa0b52cd5381158b79ef986dfc2545e7bd15b9bc11364967fd57f880e03040000008721f8d0db9ed69d1dbb7a365d5310be2d06053f67360b059e8609dd08864301560407b7f504ed59a7c4fca88de1b251a826bb597d8b5e94797d941bc3b6b94857d7b4c65a5895758b4d056709343b504ec8ddb8ef7e8815a4402a9f6e595c54b9224dabb7a551354fcd443b29148afe57569c5634a7f2eefed80669fc5ca8d00101000000002ec6ed8190311c0d4a878b569329b118092be14e91d970f31aeb0d82d7b10f5001000000000057278f94f73f1ce7114e5ccf2263706a977118b24213ff4d79d51499182b300b2b4201f703f254c8be614eaefca304df491c540e9e1862ba807b2d81de902602","index":0,"name":"Vote_Proposal_9","output":["0 | Type : Vote Proposal","1 | ID : 1","2 | Vote : yay for PGF steward","3 | Voter [1/3] : atest1v4ehgw36x4zr23fnxscnxv69xv6ygvpc","3 | Voter [2/3] : gg6yzsesgcu5v3ph8y6rxs2ygccns33kxppyvs","3 | Voter [3/3] : 6y348p2r","4 | Delegation [1/3] : atest1v4ehgw36x4zr23fnxscnxv69xv6ygvpc","4 | Delegation [2/3] : gg6yzsesgcu5v3ph8y6rxs2ygccns33kxppyvs","4 | Delegation [3/3] : 6y348p2r"],"output_expert":["0 | Code hash [1/2] : 92ed2a568021d8c015e275cc39936750e10b51","0 | Code hash [2/2] : a2ee950f213fb21a76ccc72147","1 | ID : 1","2 | Vote : yay for PGF steward","3 | Voter [1/3] : atest1v4ehgw36x4zr23fnxscnxv69xv6ygvpc","3 | Voter [2/3] : gg6yzsesgcu5v3ph8y6rxs2ygccns33kxppyvs","3 | Voter [3/3] : 6y348p2r","4 | Delegation [1/3] : atest1v4ehgw36x4zr23fnxscnxv69xv6ygvpc","4 | Delegation [2/3] : gg6yzsesgcu5v3ph8y6rxs2ygccns33kxppyvs","4 | Delegation [3/3] : 6y348p2r","5 | Timestamp : 2023-10-24 13:29:52.734241708 UTC","6 | Pubkey [1/2] : 002ec6ed8190311c0d4a878b569329b118092b","6 | Pubkey [2/2] : e14e91d970f31aeb0d82d7b10f50","7 | Epoch : 1","8 | Gas limit : 0.02","9 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e6161366232333634363639616465333464653363340023000000323032332d31302d32345431333a32393a35362e3630333433303534342b30303a3030de65f2eefe299810842bd9d34e4f1adcc2723c4ad8d7c5763302c8d9d2701c6f99cd5ff8e8bbbdbb4533378ed5565b7ad29ddbda1c2e8b2591037834f5c182cf010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e6000d6b506bc1043b2756502505f464693937b097eee21ee4a1ce33d18e8e5028e70100000000000000204e00000000000000000400000002a7aee0618b0100000092ed2a568021d8c015e275cc39936750e10b51a2ee950f213fb21a76ccc7214700a7aee0618b01000038000000010000000000000000010048afc9027d6cb7cb90b205684e7754996652920801000000005d5e34133e34d08b4ac0f9fd7943adf18f60bfcd0301000000749296cbb82b1c5e07d37c7e2a900b304392bbbc3beaad9b1c1234654a7e1e1f000048afc9027d6cb7cb90b205684e775499665292080100000000008e0085364eacd012c39a491e504b87c87b1d08757ca83803961d60d95914f74c0e0d7a3b684394797790b9704ce983cd5447041a1e05663bd89cba76607a880f0304000000eea2a4aafa5067712bb832c1500c2da9f1341e54842804ecde23f62718995b70de65f2eefe299810842bd9d34e4f1adcc2723c4ad8d7c5763302c8d9d2701c6f99cd5ff8e8bbbdbb4533378ed5565b7ad29ddbda1c2e8b2591037834f5c182cffb46d3ff7765e33a22d297185d020eddc2bfecbb0d9b5b7b204fc334b14ff5940101000000000d6b506bc1043b2756502505f464693937b097eee21ee4a1ce33d18e8e5028e7010000000000ebf1e661f7a1ffa9458dc2609c33d30f6eb59b6b8aee762c587d5e6f5d50a3c11d6bf16fdc49d2fc4c0a43c43b1b1d5b3e8aad5f2089ea1088a6744cfa37050b","index":0,"name":"Vote_Proposal_10","output":["0 | Type : Vote Proposal","1 | ID : 1","2 | Vote : yay for PGF steward","3 | Voter [1/3] : atest1v4ehgw36xsuyz3jr8ycryd6yxep5yd6r","3 | Voter [2/3] : ggunqs3jxq6nvwp5g5mnwdf58yunvd34xgunyv","3 | Voter [3/3] : pc4c2dv7","4 | Delegation [1/3] : atest1v4ehgw36x4zr23fnxscnxv69xv6ygvpc","4 | Delegation [2/3] : gg6yzsesgcu5v3ph8y6rxs2ygccns33kxppyvs","4 | Delegation [3/3] : 6y348p2r"],"output_expert":["0 | Code hash [1/2] : 92ed2a568021d8c015e275cc39936750e10b51","0 | Code hash [2/2] : a2ee950f213fb21a76ccc72147","1 | ID : 1","2 | Vote : yay for PGF steward","3 | Voter [1/3] : atest1v4ehgw36xsuyz3jr8ycryd6yxep5yd6r","3 | Voter [2/3] : ggunqs3jxq6nvwp5g5mnwdf58yunvd34xgunyv","3 | Voter [3/3] : pc4c2dv7","4 | Delegation [1/3] : atest1v4ehgw36x4zr23fnxscnxv69xv6ygvpc","4 | Delegation [2/3] : gg6yzsesgcu5v3ph8y6rxs2ygccns33kxppyvs","4 | Delegation [3/3] : 6y348p2r","5 | Timestamp : 2023-10-24 13:29:56.603430544 UTC","6 | Pubkey [1/2] : 000d6b506bc1043b2756502505f464693937b0","6 | Pubkey [2/2] : 97eee21ee4a1ce33d18e8e5028e7","7 | Epoch : 1","8 | Gas limit : 0.02","9 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e6161366232333634363639616465333464653363340023000000323032332d31302d32345431333a33303a30312e3334303439373230332b30303a3030dd83257dd544f0671c022230b0ea0f58d52060a1265a5c0cc2c3c44e0358f469483590b5b0b660d75469dfa9bd42a3d8c8c1912cb931d65b3e85b4acb919a90e010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e6000d6b506bc1043b2756502505f464693937b097eee21ee4a1ce33d18e8e5028e70100000000000000204e000000000000000004000000022ac1e0618b0100000092ed2a568021d8c015e275cc39936750e10b51a2ee950f213fb21a76ccc72147002ac1e0618b01000038000000020000000000000000010048afc9027d6cb7cb90b205684e7754996652920801000000005d5e34133e34d08b4ac0f9fd7943adf18f60bfcd0301000000a0b5157340d4b92b1c5906d26e6ba68c454160bafdba1232c9d546b5ae135220000048afc9027d6cb7cb90b205684e77549966529208010000000000b9d0ec08ee8dcc32b18032c27a12afae4bce1e7b326c5d9f40bac7d94c756317867ff7d12c771d8ab53db063a0234df3d4da72ff31532ee44139b9c2378414090304000000f50ed6d4d1a3530391b78a1abf992f9e4b8c7b5b5665c944609e9cc438119488dd83257dd544f0671c022230b0ea0f58d52060a1265a5c0cc2c3c44e0358f469483590b5b0b660d75469dfa9bd42a3d8c8c1912cb931d65b3e85b4acb919a90e91fb3044c18d1bef5acb4d1b208d2cb529d1217820ddd69f62204a26965c1f3c0101000000000d6b506bc1043b2756502505f464693937b097eee21ee4a1ce33d18e8e5028e7010000000000b655f6e19971af71fcb665d1648b2c2a0870f58fc3538f04d7ba2f610124a0a58cb01bfd37e4a2c6838d04c6e464c18a753224051ca615cf16b5faae86308c0c","index":0,"name":"Vote_Proposal_11","output":["0 | Type : Vote Proposal","1 | ID : 2","2 | Vote : yay for PGF steward","3 | Voter [1/3] : atest1v4ehgw36xsuyz3jr8ycryd6yxep5yd6r","3 | Voter [2/3] : ggunqs3jxq6nvwp5g5mnwdf58yunvd34xgunyv","3 | Voter [3/3] : pc4c2dv7","4 | Delegation [1/3] : atest1v4ehgw36x4zr23fnxscnxv69xv6ygvpc","4 | Delegation [2/3] : gg6yzsesgcu5v3ph8y6rxs2ygccns33kxppyvs","4 | Delegation [3/3] : 6y348p2r"],"output_expert":["0 | Code hash [1/2] : 92ed2a568021d8c015e275cc39936750e10b51","0 | Code hash [2/2] : a2ee950f213fb21a76ccc72147","1 | ID : 2","2 | Vote : yay for PGF steward","3 | Voter [1/3] : atest1v4ehgw36xsuyz3jr8ycryd6yxep5yd6r","3 | Voter [2/3] : ggunqs3jxq6nvwp5g5mnwdf58yunvd34xgunyv","3 | Voter [3/3] : pc4c2dv7","4 | Delegation [1/3] : atest1v4ehgw36x4zr23fnxscnxv69xv6ygvpc","4 | Delegation [2/3] : gg6yzsesgcu5v3ph8y6rxs2ygccns33kxppyvs","4 | Delegation [3/3] : 6y348p2r","5 | Timestamp : 2023-10-24 13:30:01.340497203 UTC","6 | Pubkey [1/2] : 000d6b506bc1043b2756502505f464693937b0","6 | Pubkey [2/2] : 97eee21ee4a1ce33d18e8e5028e7","7 | Epoch : 1","8 | Gas limit : 0.02","9 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e6161366232333634363639616465333464653363340023000000323032332d31302d32345431333a33303a30352e3130333432343830342b30303a30301dd9484f30af208c5cf6ea2001a7299c8545d60db7bc55a76b9fff0169bd5a5c4ba267499b4e82e5010b939d2188e3a975a083574a8166ed92b0eb1ceb5f1360010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e6000d6b506bc1043b2756502505f464693937b097eee21ee4a1ce33d18e8e5028e70100000000000000204e00000000000000000400000002decfe0618b01000000111a5b61d839f5b974f774762e74c98db8fc389d2795cbd61a2c44e5ab46c5a100decfe0618b010000620000000048afc9027d6cb7cb90b205684e775499665292080080814d0189d6bd5c419da060991823096de70f3f003d234d1e39e181d52d018065e142ca91c052be3e003717890000000000000000000000000000000000000000000000000000000008000003010000002b928b9c00e0b96081479affc0ccb21103db6450750d6b950ba7d2e8c12a27d7000048afc9027d6cb7cb90b205684e77549966529208010000000000e458a6796fdd9e20af3dfc144c3308aaa690a1ea1c6d0c806119157e413322015a028d57cfc07cdd049e3fecbba0c257fa07a9f6a1378b6085434c6f9a95b200030400000043ed1eaf0facc67d95ea8691fe4999f1d867f82c989973525a5e21c51089566d1dd9484f30af208c5cf6ea2001a7299c8545d60db7bc55a76b9fff0169bd5a5c4ba267499b4e82e5010b939d2188e3a975a083574a8166ed92b0eb1ceb5f13602a3536fd12ed3dbc8e5bbec9963cf549e1608d2f580f6eda445ccf4542bfae060101000000000d6b506bc1043b2756502505f464693937b097eee21ee4a1ce33d18e8e5028e70100000000003721c7f3b70b52390b14ed92b103c59a2aeedcd3b264f8aa40957b818653dea3c525c21fe2c46e429e028ee130b1ea42c1731ee165cdf29f1c86e19970e7d609","index":0,"name":"Transfer_1","output":["0 | Type : Transfer","1 | Sender [1/3] : atest1v4ehgw36xsuyz3jr8ycryd6yxep5yd6r","1 | Sender [2/3] : ggunqs3jxq6nvwp5g5mnwdf58yunvd34xgunyv","1 | Sender [3/3] : pc4c2dv7","2 | Destination [1/3] : atest1v4ehgw368qcrsvf5gscrzwpegsmyy3p4","2 | Destination [2/3] : gv6rzw2ygycrvvpe8ycnsv3nxqunv3z9xucyvv","2 | Destination [3/3] : 6x7syxx0","3 | Amount : BTC 23.0"],"output_expert":["0 | Code hash [1/2] : 111a5b61d839f5b974f774762e74c98db8fc38","0 | Code hash [2/2] : 9d2795cbd61a2c44e5ab46c5a1","1 | Sender [1/3] : atest1v4ehgw36xsuyz3jr8ycryd6yxep5yd6r","1 | Sender [2/3] : ggunqs3jxq6nvwp5g5mnwdf58yunvd34xgunyv","1 | Sender [3/3] : pc4c2dv7","2 | Destination [1/3] : atest1v4ehgw368qcrsvf5gscrzwpegsmyy3p4","2 | Destination [2/3] : gv6rzw2ygycrvvpe8ycnsv3nxqunv3z9xucyvv","2 | Destination [3/3] : 6x7syxx0","3 | Amount : BTC 23.0","4 | Timestamp : 2023-10-24 13:30:05.103424804 UTC","5 | Pubkey [1/2] : 000d6b506bc1043b2756502505f464693937b0","5 | Pubkey [2/2] : 97eee21ee4a1ce33d18e8e5028e7","6 | Epoch : 1","7 | Gas limit : 0.02","8 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e6161366232333634363639616465333464653363340023000000323032332d31302d32345431333a33303a30392e3735303339363536382b30303a3030eaf08407bbc94ed28ddc9e81fe11853fa629b75d99ab2bd1dfdbd18de64c23068fcb77d352943f9f44d4d8a1ba98da26c4af8f1264878111873cd6ffd5f5270d010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e6000d6b506bc1043b2756502505f464693937b097eee21ee4a1ce33d18e8e5028e70100000000000000204e0000000000000000040000000201e2e0618b01000000bec1efd37d88876be4176d1afc0b6fa784901efe18cf9ec30293313be855d8140001e2e0618b010000360000000048afc9027d6cb7cb90b205684e7754996652920840787d010000000000000000000000000000000000000000000000000000000000030100000019f449ee13e90c1828075aeb31ebe9cdb390a606dc37d2537f8b61c0a31378ee000048afc9027d6cb7cb90b205684e775499665292080100000000000840245b3a0ffc9ff89efedef27b0f30f8967166a0887ca9c64c2ebe479a4777847b73f37affe48da9cf6ce0214cdb9c0b9d5602e95305ed86a2b973201f330503040000000e2068ad62f12538c256a09ba346ab428f47c351dfe2b2a89c4d558a7d5963baeaf08407bbc94ed28ddc9e81fe11853fa629b75d99ab2bd1dfdbd18de64c23068fcb77d352943f9f44d4d8a1ba98da26c4af8f1264878111873cd6ffd5f5270d923194bb95b7aaea5927fd42d121984910445092abd0553bb0c7c1bd03ebfdb80101000000000d6b506bc1043b2756502505f464693937b097eee21ee4a1ce33d18e8e5028e70100000000007af7c71f2e673ccd4d834f4f3c9aa06fc45819b373f7bcc082d86c5a197e621d5f534f7179e433614df27a9aacb787a53c773571b238e4917cae454457f76d0a","index":0,"name":"Bond_7","output":["0 | Type : Bond","1 | Validator [1/3] : atest1v4ehgw36xsuyz3jr8ycryd6yxep5yd6r","1 | Validator [2/3] : ggunqs3jxq6nvwp5g5mnwdf58yunvd34xgunyv","1 | Validator [3/3] : pc4c2dv7","2 | Amount : NAM 25.0"],"output_expert":["0 | Code hash [1/2] : bec1efd37d88876be4176d1afc0b6fa784901e","0 | Code hash [2/2] : fe18cf9ec30293313be855d814","1 | Validator [1/3] : atest1v4ehgw36xsuyz3jr8ycryd6yxep5yd6r","1 | Validator [2/3] : ggunqs3jxq6nvwp5g5mnwdf58yunvd34xgunyv","1 | Validator [3/3] : pc4c2dv7","2 | Amount : NAM 25.0","3 | Timestamp : 2023-10-24 13:30:09.750396568 UTC","4 | Pubkey [1/2] : 000d6b506bc1043b2756502505f464693937b0","4 | Pubkey [2/2] : 97eee21ee4a1ce33d18e8e5028e7","5 | Epoch : 1","6 | Gas limit : 0.02","7 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e6161366232333634363639616465333464653363340023000000323032332d31302d32345431333a33303a31332e3436303138363437332b30303a3030a1046286f8947db8eba4196ee6c49a145100a391db1a19a2cc167233d830457980d0b84c63eaffe120ab6ce114b4b2d31f9b78241558aad2017efa3bed4f0a18010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e6000d6b506bc1043b2756502505f464693937b097eee21ee4a1ce33d18e8e5028e70100000000000000204e000000000000000004000000027ff0e0618b010000006cf329120204bf10b217b8113f93011fc2ea27a09c0246a866710fa9f8b68f79007ff0e0618b010000350000000048afc9027d6cb7cb90b205684e7754996652920800cc829c1900000000000000000000000000000000000000000000000000000003010000003c8799a25ad02afaa8a83f735676973e691883665dd72afbcaadd3b25069455c000048afc9027d6cb7cb90b205684e77549966529208010000000000cf29a5b2d3542ba9c84825627a5b134294b85f4f842b24ea7778d2ad46d08617cdaea2e462e3b2a90a62489df2f4ba0673ed10101f99b8813972a57668a38f080304000000ac4cfa1aed92d6d21c8cf441f0a4b91fdc6ff4bab92399077f3be953ac88f83ba1046286f8947db8eba4196ee6c49a145100a391db1a19a2cc167233d830457980d0b84c63eaffe120ab6ce114b4b2d31f9b78241558aad2017efa3bed4f0a1879d4875c35ed9030041cc3aeefc913fa9fd6731fc0a5bb5c9a1cec3b16acd3a40101000000000d6b506bc1043b2756502505f464693937b097eee21ee4a1ce33d18e8e5028e7010000000000cffc334325ef513b44014d65f628944a1a142b03004dad423e231057af0ec75d7e03cfac8e148216576acba1ea126ae4ca702f7b68fe68500bb251276450c80c","index":0,"name":"Change_Commission_7","output":["0 | Type : Change commission","1 | New rate : 0.11","2 | Validator [1/3] : atest1v4ehgw36xsuyz3jr8ycryd6yxep5yd6r","2 | Validator [2/3] : ggunqs3jxq6nvwp5g5mnwdf58yunvd34xgunyv","2 | Validator [3/3] : pc4c2dv7"],"output_expert":["0 | Code hash [1/2] : 6cf329120204bf10b217b8113f93011fc2ea27","0 | Code hash [2/2] : a09c0246a866710fa9f8b68f79","1 | New rate : 0.11","2 | Validator [1/3] : atest1v4ehgw36xsuyz3jr8ycryd6yxep5yd6r","2 | Validator [2/3] : ggunqs3jxq6nvwp5g5mnwdf58yunvd34xgunyv","2 | Validator [3/3] : pc4c2dv7","3 | Timestamp : 2023-10-24 13:30:13.460186473 UTC","4 | Pubkey [1/2] : 000d6b506bc1043b2756502505f464693937b0","4 | Pubkey [2/2] : 97eee21ee4a1ce33d18e8e5028e7","5 | Epoch : 1","6 | Gas limit : 0.02","7 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e6161366232333634363639616465333464653363340023000000323032332d31302d32345431333a33303a31372e3034323333303635342b30303a30304a242bd24a2e333dc2a6479c73a2b40ff060dcd8858d38a8f4ab93c01a348a5a7eca949c16b2dadeb484ae63f871c94db2f6f5410ac1bec53ac8b9c606dd8e51010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e6004962370b5b3112ab4bfbde70c39811b980b0c494b9fa2ed4023dcce35485916d0100000000000000204e0000000000000000030000000254fee0618b01000000152efebe3954ac8f2d5760ec18fae1197c9e02a161491375516cfc40cba0a1e80054fee0618b01000021000000004962370b5b3112ab4bfbde70c39811b980b0c494b9fa2ed4023dcce35485916d0303000000e866a64ff54c6cb14250351098a107044591ebaf81f2339823779a1bbff1a3a54a242bd24a2e333dc2a6479c73a2b40ff060dcd8858d38a8f4ab93c01a348a5a7eca949c16b2dadeb484ae63f871c94db2f6f5410ac1bec53ac8b9c606dd8e510101000000004962370b5b3112ab4bfbde70c39811b980b0c494b9fa2ed4023dcce35485916d010000000000122f05e6955769e94c10ecdb334820c72258aa12e7fe65539001b9090ce6f4bd936b07f59f5f444e0b6f263b7db1b21d87d46d0e73eec22c1bb9afe84a4eab0e","index":0,"name":"Reveal_Pubkey_1","output":["0 | Type : Reveal Pubkey","1 | Public key [1/2] : 004962370b5b3112ab4bfbde70c39811b980b0","1 | Public key [2/2] : c494b9fa2ed4023dcce35485916d"],"output_expert":["0 | Code hash [1/2] : 152efebe3954ac8f2d5760ec18fae1197c9e02","0 | Code hash [2/2] : a161491375516cfc40cba0a1e8","1 | Public key [1/2] : 004962370b5b3112ab4bfbde70c39811b980b0","1 | Public key [2/2] : c494b9fa2ed4023dcce35485916d","2 | Timestamp : 2023-10-24 13:30:17.042330654 UTC","3 | Pubkey [1/2] : 004962370b5b3112ab4bfbde70c39811b980b0","3 | Pubkey [2/2] : c494b9fa2ed4023dcce35485916d","4 | Epoch : 1","5 | Gas limit : 0.02","6 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e6161366232333634363639616465333464653363340023000000323032332d31302d32345431333a33303a32302e3833303037303235342b30303a3030babde28bf1adb296f88822c8c8e4667576412c97d6cae8eaf21856af9d11e3015251f23d814ee92bc2beec6354c774ab993a170fccd9befdcc856dba1ce1d17a010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e6000d6b506bc1043b2756502505f464693937b097eee21ee4a1ce33d18e8e5028e70100000000000000204e000000000000000005000000014c0de1618b010000003b9e4d777c9420bbbf730e1549252f1a091bc01535eb1f37e7a7e3d1bace7576024c0de1618b01000000c3e25b73b94a226c3e9a5990fb91864c1515cf2bcb8e28e4b3e403c41a370932004c0de1618b0100003b0000000048afc9027d6cb7cb90b205684e7754996652920801d54d3d77da7620f37f4baa0b517c31006206f3bd29dfd8464879d1e769d508f1000000000003010000001076762ec60002b2eb3f2e281e0fc9b6e9eba55b61990b657287f46bc4da0019000048afc9027d6cb7cb90b205684e77549966529208010000000000f34c855d3ba7107dc94adfecf8175886655997ea4e80aaeea7850ed13d84eda8e063583abd62f65a10c0f464c29e2de7613fac76f47d7717ab4ce28818d04901030500000057ffc164c4db831cb0bc405854e4162b40417e8ec786f06ed9a406dfc69dc5eed54d3d77da7620f37f4baa0b517c31006206f3bd29dfd8464879d1e769d508f1babde28bf1adb296f88822c8c8e4667576412c97d6cae8eaf21856af9d11e3015251f23d814ee92bc2beec6354c774ab993a170fccd9befdcc856dba1ce1d17ad2bf7d190e0885dc5d5b0328c0ff5f8482956e2cdf9b3ec828c395f7dfbf08650101000000000d6b506bc1043b2756502505f464693937b097eee21ee4a1ce33d18e8e5028e7010000000000a9915ce72a13092240f614e05d09ad55fa0f28126d298c168609edde100ea634aacc5d67d381a47bbc5505c76bdd638f57db4bf9a5f019e6e287df1e69f48a08","index":0,"name":"Update_VP_3","output":["0 | Type : Update VP","1 | Address [1/3] : atest1v4ehgw36xsuyz3jr8ycryd6yxep5yd6r","1 | Address [2/3] : ggunqs3jxq6nvwp5g5mnwdf58yunvd34xgunyv","1 | Address [3/3] : pc4c2dv7","2 | VP type : User"],"output_expert":["0 | Code hash [1/2] : c3e25b73b94a226c3e9a5990fb91864c1515cf","0 | Code hash [2/2] : 2bcb8e28e4b3e403c41a370932","1 | Address [1/3] : atest1v4ehgw36xsuyz3jr8ycryd6yxep5yd6r","1 | Address [2/3] : ggunqs3jxq6nvwp5g5mnwdf58yunvd34xgunyv","1 | Address [3/3] : pc4c2dv7","2 | VP type [1/2] : 3b9e4d777c9420bbbf730e1549252f1a091bc0","2 | VP type [2/2] : 1535eb1f37e7a7e3d1bace7576","3 | Timestamp : 2023-10-24 13:30:20.830070254 UTC","4 | Pubkey [1/2] : 000d6b506bc1043b2756502505f464693937b0","4 | Pubkey [2/2] : 97eee21ee4a1ce33d18e8e5028e7","5 | Epoch : 1","6 | Gas limit : 0.02","7 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e6161366232333634363639616465333464653363340023000000323032332d31302d32345431333a33303a32342e3436333739373134382b30303a303016e4939ec7e9a7c53d6ec98d50dd80366dc33097ed380db3e93d8fb3b52c40963979f010163d0ce96c6738bcc626a62849c357cdf044e2c59d105961313e6fac010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e6000d6b506bc1043b2756502505f464693937b097eee21ee4a1ce33d18e8e5028e70100000000000000204e000000000000000005000000017a1be1618b010000003b9e4d777c9420bbbf730e1549252f1a091bc01535eb1f37e7a7e3d1bace7576027b1be1618b01000000c3e25b73b94a226c3e9a5990fb91864c1515cf2bcb8e28e4b3e403c41a370932007b1be1618b0100007d0000000048afc9027d6cb7cb90b205684e775499665292080198ddce45c249069fee4405ee738cf32dccbbc0d01b88ae5aee6cec8ff667d8bc02000000004962370b5b3112ab4bfbde70c39811b980b0c494b9fa2ed4023dcce35485916d000d6b506bc1043b2756502505f464693937b097eee21ee4a1ce33d18e8e5028e70003010000006f29a2a5698c834cfcc4098665f511cd44009052b24e3a9fc1dfeec7b6bb9eb2000048afc9027d6cb7cb90b205684e77549966529208010000000000ccf5fbe48f9481eff5af92fc8081c7899704df1c04d7d5234b2107446077f5a435640aa3b08287ac576b30ef22b45f412ebcb33b4840ebbf224b0adbb41356050305000000025d52804e904e6daabf9b222fec62dab1bfb7135d7b5dff9135ec801fb0101998ddce45c249069fee4405ee738cf32dccbbc0d01b88ae5aee6cec8ff667d8bc16e4939ec7e9a7c53d6ec98d50dd80366dc33097ed380db3e93d8fb3b52c40963979f010163d0ce96c6738bcc626a62849c357cdf044e2c59d105961313e6face7513a0fc5bc4329202a682ac11280e2a1e83c9bc06982f9bd5da5486b6af4640101000000000d6b506bc1043b2756502505f464693937b097eee21ee4a1ce33d18e8e5028e70100000000008c1504c47fc166e947c685686db7e0d6e9e18f637bb845e97b98c178a78e0cb03170736f2c81ff7519d50049b4762453bf30b9dc1b6ad6e80298ee281344b000","index":0,"name":"Update_VP_4","output":["0 | Type : Update VP","1 | Address [1/3] : atest1v4ehgw36xsuyz3jr8ycryd6yxep5yd6r","1 | Address [2/3] : ggunqs3jxq6nvwp5g5mnwdf58yunvd34xgunyv","1 | Address [3/3] : pc4c2dv7","2 | Public key [1/2] : 004962370b5b3112ab4bfbde70c39811b980b0","2 | Public key [2/2] : c494b9fa2ed4023dcce35485916d","3 | Public key [1/2] : 000d6b506bc1043b2756502505f464693937b0","3 | Public key [2/2] : 97eee21ee4a1ce33d18e8e5028e7","4 | VP type : User"],"output_expert":["0 | Code hash [1/2] : c3e25b73b94a226c3e9a5990fb91864c1515cf","0 | Code hash [2/2] : 2bcb8e28e4b3e403c41a370932","1 | Address [1/3] : atest1v4ehgw36xsuyz3jr8ycryd6yxep5yd6r","1 | Address [2/3] : ggunqs3jxq6nvwp5g5mnwdf58yunvd34xgunyv","1 | Address [3/3] : pc4c2dv7","2 | Public key [1/2] : 004962370b5b3112ab4bfbde70c39811b980b0","2 | Public key [2/2] : c494b9fa2ed4023dcce35485916d","3 | Public key [1/2] : 000d6b506bc1043b2756502505f464693937b0","3 | Public key [2/2] : 97eee21ee4a1ce33d18e8e5028e7","4 | VP type [1/2] : 3b9e4d777c9420bbbf730e1549252f1a091bc0","4 | VP type [2/2] : 1535eb1f37e7a7e3d1bace7576","5 | Timestamp : 2023-10-24 13:30:24.463797148 UTC","6 | Pubkey [1/2] : 000d6b506bc1043b2756502505f464693937b0","6 | Pubkey [2/2] : 97eee21ee4a1ce33d18e8e5028e7","7 | Epoch : 1","8 | Gas limit : 0.02","9 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e6161366232333634363639616465333464653363340023000000323032332d31302d32345431333a33303a32392e3131333837303335312b30303a3030dfcd67f376945c423bfb5ca3684142f07112c48b5ce538c9646a9ea80b04375cb6c7934f5997ddc90ce9344c595a3e66c452835def41a4cc0eb90d6d18c4b0b8010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e6004962370b5b3112ab4bfbde70c39811b980b0c494b9fa2ed4023dcce35485916d0100000000000000204e00000000000000000500000001a52de1618b010000003b9e4d777c9420bbbf730e1549252f1a091bc01535eb1f37e7a7e3d1bace757602a52de1618b01000000c3e25b73b94a226c3e9a5990fb91864c1515cf2bcb8e28e4b3e403c41a37093200a52de1618b0100009f0000000048afc9027d6cb7cb90b205684e77549966529208016c8a8e0aa3a7725b4e3f622e3e1b0f53e419a5cf62ce52acacc750fc77083c3803000000004962370b5b3112ab4bfbde70c39811b980b0c494b9fa2ed4023dcce35485916d000d6b506bc1043b2756502505f464693937b097eee21ee4a1ce33d18e8e5028e7009dc4b583162dc87318525e388c3899d41fe94001da1dc913ecfee8b543d0ca530102030100000034629e1942ed7363d6fd882ba1b047caac5e1ab6009eb728b8af33c2feb7f0e9000048afc9027d6cb7cb90b205684e7754996652920801000000000058fae6ec6521d291e90dbd7063743425b379647338e306952cebe56f1806ed8791413a540cf4926b938ac75d70a824d753d93c8d9105d2497cce5b0318a34f0f0305000000e58011c1e7c143ee686f71368be654803d2dfd8406aa39ec377ec54f03218ac96c8a8e0aa3a7725b4e3f622e3e1b0f53e419a5cf62ce52acacc750fc77083c38dfcd67f376945c423bfb5ca3684142f07112c48b5ce538c9646a9ea80b04375cb6c7934f5997ddc90ce9344c595a3e66c452835def41a4cc0eb90d6d18c4b0b8459b5685dbd893422e50e5c4e87575180ef95db9f36a696f16182347302d7f000101000000004962370b5b3112ab4bfbde70c39811b980b0c494b9fa2ed4023dcce35485916d010000000000e7661a8cafb5fda7755a81520b8a58e34a5c732a94c2d419f3942a9f5e4e3dbfdbdaddd6dd5f631a54253a22a57e5c53db5d1912f39a475da827c0de8879350e","index":0,"name":"Update_VP_5","output":["0 | Type : Update VP","1 | Address [1/3] : atest1v4ehgw36xsuyz3jr8ycryd6yxep5yd6r","1 | Address [2/3] : ggunqs3jxq6nvwp5g5mnwdf58yunvd34xgunyv","1 | Address [3/3] : pc4c2dv7","2 | Public key [1/2] : 004962370b5b3112ab4bfbde70c39811b980b0","2 | Public key [2/2] : c494b9fa2ed4023dcce35485916d","3 | Public key [1/2] : 000d6b506bc1043b2756502505f464693937b0","3 | Public key [2/2] : 97eee21ee4a1ce33d18e8e5028e7","4 | Public key [1/2] : 009dc4b583162dc87318525e388c3899d41fe9","4 | Public key [2/2] : 4001da1dc913ecfee8b543d0ca53","5 | Threshold : 2","6 | VP type : User"],"output_expert":["0 | Code hash [1/2] : c3e25b73b94a226c3e9a5990fb91864c1515cf","0 | Code hash [2/2] : 2bcb8e28e4b3e403c41a370932","1 | Address [1/3] : atest1v4ehgw36xsuyz3jr8ycryd6yxep5yd6r","1 | Address [2/3] : ggunqs3jxq6nvwp5g5mnwdf58yunvd34xgunyv","1 | Address [3/3] : pc4c2dv7","2 | Public key [1/2] : 004962370b5b3112ab4bfbde70c39811b980b0","2 | Public key [2/2] : c494b9fa2ed4023dcce35485916d","3 | Public key [1/2] : 000d6b506bc1043b2756502505f464693937b0","3 | Public key [2/2] : 97eee21ee4a1ce33d18e8e5028e7","4 | Public key [1/2] : 009dc4b583162dc87318525e388c3899d41fe9","4 | Public key [2/2] : 4001da1dc913ecfee8b543d0ca53","5 | Threshold : 2","6 | VP type [1/2] : 3b9e4d777c9420bbbf730e1549252f1a091bc0","6 | VP type [2/2] : 1535eb1f37e7a7e3d1bace7576","7 | Timestamp : 2023-10-24 13:30:29.113870351 UTC","8 | Pubkey [1/2] : 004962370b5b3112ab4bfbde70c39811b980b0","8 | Pubkey [2/2] : c494b9fa2ed4023dcce35485916d","9 | Epoch : 1","10 | Gas limit : 0.02","11 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e6161366232333634363639616465333464653363340023000000323032332d31302d32345431333a33303a33322e3731373136363137372b30303a303003d1bb71e3be23617f497caeb97b03bae6889ac0df4134adacff02a4d5ad1fc727e377cdc1d4e39d2827dd559c0d56aff44386c864bc828461475cbfbf26ba26010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e6000d6b506bc1043b2756502505f464693937b097eee21ee4a1ce33d18e8e5028e70100000000000000204e000000000000000004000000018d3be1618b010000003b9e4d777c9420bbbf730e1549252f1a091bc01535eb1f37e7a7e3d1bace7576028d3be1618b01000000b3b48166976e0259db4eab1e72ace4c92368b34fd5a06f7ccd41b4ae4c88ca1d008d3be1618b0100006e01000001000000000d6b506bc1043b2756502505f464693937b097eee21ee4a1ce33d18e8e5028e70100aeeb50f36e8de7fd6e4cd6e822955291a0276dd3a54b55d05eacd6c7d621fbcb020ee7a788410e14a3f0bfada4d1570c6a43ba390b4f01018d379bf147b5f1d78703f6db967cde648c6aa5c029810ffd3094d48558deddfd75132120da3df2dffdf30098a9dfeec515270dabdf9a22d343ffd9fe65058a6529bfb47a8a52434d2adede600000005554100f28f065fc821b1a340e3ffaeea8497de045b74b5d1b2c18ac5366209badf32d33761cfaa5a3aab2071de96703f36a5be807eec4f68b267efc8cdf102201ca2b5924fbf572dfb90481c51a5c9ab879dd93675e4f57a5dc5338343cb30900743ba40b00000000000000000000000000000000000000000000000000000000e40b5402000000000000000000000000000000000000000000000000000000325d7bf5671faca45ef585cccc7e6a41dc7c1646e7ccc6e981c544ffdf7f7f97030400000027c4a67957e2236136825bcd4af17c837d812a65db8b51c6ed5b12d116b8bc40325d7bf5671faca45ef585cccc7e6a41dc7c1646e7ccc6e981c544ffdf7f7f9703d1bb71e3be23617f497caeb97b03bae6889ac0df4134adacff02a4d5ad1fc727e377cdc1d4e39d2827dd559c0d56aff44386c864bc828461475cbfbf26ba260101000000000d6b506bc1043b2756502505f464693937b097eee21ee4a1ce33d18e8e5028e7010000000000fe8c66fcec977170d1502fdfaec19cd665298f612b5ec1ba3fb0db37cfec1792d29c29a3e043aff055efe21f0a9fa58cfafb99c6f08b742eb5a9ea4a14139b0e","index":0,"name":"Init_Validator_2","output":["0 | Type : Init Validator","1 | Account key [1/2] : 000d6b506bc1043b2756502505f464693937b0","1 | Account key [2/2] : 97eee21ee4a1ce33d18e8e5028e7","2 | Threshold : 1","3 | Consensus key [1/2] : 00aeeb50f36e8de7fd6e4cd6e822955291a027","3 | Consensus key [2/2] : 6dd3a54b55d05eacd6c7d621fbcb","4 | Ethereum cold key [1/2] : 020ee7a788410e14a3f0bfada4d1570c6a43ba","4 | Ethereum cold key [2/2] : 390b4f01018d379bf147b5f1d787","5 | Ethereum hot key [1/2] : 03f6db967cde648c6aa5c029810ffd3094d485","5 | Ethereum hot key [2/2] : 58deddfd75132120da3df2dffdf3","6 | Protocol key [1/2] : 0098a9dfeec515270dabdf9a22d343ffd9fe65","6 | Protocol key [2/2] : 058a6529bfb47a8a52434d2adede","7 | DKG key [1/6] : 600000005554100f28f065fc821b1a340e3ffa","7 | DKG key [2/6] : eea8497de045b74b5d1b2c18ac5366209badf3","7 | DKG key [3/6] : 2d33761cfaa5a3aab2071de96703f36a5be807","7 | DKG key [4/6] : eec4f68b267efc8cdf102201ca2b5924fbf572","7 | DKG key [5/6] : dfb90481c51a5c9ab879dd93675e4f57a5dc53","7 | DKG key [6/6] : 38343cb309","8 | Commission rate : 0.05","9 | Maximum commission rate change : 0.01","10 | Validator VP type : User"],"output_expert":["0 | Code hash [1/2] : b3b48166976e0259db4eab1e72ace4c92368b3","0 | Code hash [2/2] : 4fd5a06f7ccd41b4ae4c88ca1d","1 | Account key [1/2] : 000d6b506bc1043b2756502505f464693937b0","1 | Account key [2/2] : 97eee21ee4a1ce33d18e8e5028e7","2 | Threshold : 1","3 | Consensus key [1/2] : 00aeeb50f36e8de7fd6e4cd6e822955291a027","3 | Consensus key [2/2] : 6dd3a54b55d05eacd6c7d621fbcb","4 | Ethereum cold key [1/2] : 020ee7a788410e14a3f0bfada4d1570c6a43ba","4 | Ethereum cold key [2/2] : 390b4f01018d379bf147b5f1d787","5 | Ethereum hot key [1/2] : 03f6db967cde648c6aa5c029810ffd3094d485","5 | Ethereum hot key [2/2] : 58deddfd75132120da3df2dffdf3","6 | Protocol key [1/2] : 0098a9dfeec515270dabdf9a22d343ffd9fe65","6 | Protocol key [2/2] : 058a6529bfb47a8a52434d2adede","7 | DKG key [1/6] : 600000005554100f28f065fc821b1a340e3ffa","7 | DKG key [2/6] : eea8497de045b74b5d1b2c18ac5366209badf3","7 | DKG key [3/6] : 2d33761cfaa5a3aab2071de96703f36a5be807","7 | DKG key [4/6] : eec4f68b267efc8cdf102201ca2b5924fbf572","7 | DKG key [5/6] : dfb90481c51a5c9ab879dd93675e4f57a5dc53","7 | DKG key [6/6] : 38343cb309","8 | Commission rate : 0.05","9 | Maximum commission rate change : 0.01","10 | Validator VP type [1/2] : 3b9e4d777c9420bbbf730e1549252f1a091bc0","10 | Validator VP type [2/2] : 1535eb1f37e7a7e3d1bace7576","11 | Timestamp : 2023-10-24 13:30:32.717166177 UTC","12 | Pubkey [1/2] : 000d6b506bc1043b2756502505f464693937b0","12 | Pubkey [2/2] : 97eee21ee4a1ce33d18e8e5028e7","13 | Epoch : 1","14 | Gas limit : 0.02","15 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e6161366232333634363639616465333464653363340023000000323032332d31302d32345431333a33303a33362e3238373130313035362b30303a3030ef643697f9804189d4884d2e30f4ec57a7f2c3a64fc683fafb8569932923a858665ddac465674b4c675319591fc77fd4af108ec47bc6034a197fcf9b84012d67010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e6004962370b5b3112ab4bfbde70c39811b980b0c494b9fa2ed4023dcce35485916d0100000000000000204e000000000000000004000000017f49e1618b010000003b9e4d777c9420bbbf730e1549252f1a091bc01535eb1f37e7a7e3d1bace7576027f49e1618b01000000b3b48166976e0259db4eab1e72ace4c92368b34fd5a06f7ccd41b4ae4c88ca1d007f49e1618b0100008f01000002000000004962370b5b3112ab4bfbde70c39811b980b0c494b9fa2ed4023dcce35485916d000d6b506bc1043b2756502505f464693937b097eee21ee4a1ce33d18e8e5028e7020092b9884f0116b2883f330f4346a7be5f81c9e2cd76718fb483fce14b998d9bf802260da08b42213c7e0c66f2f209adf011693b4c33d458a8af4c8d0cbd91aca085022fbbc808568145cc971b05449bbc01a97d732071cae12e5f9b50b4b94cfc750f005d45751fa40e6e53d29fc7dea8089ebb1db8df30ccfae6acdbc392fa71ee5067600000000e838af1f7afee7d4372548ea623f895c7ccd0be9d70760f10805c924958794e6fd0bf696b5065752e34c2840abbf511c74998f2ba94773c389882da1c68c88613672a1c63c2e346242628b9ea8e006baf694c6b5d5e9abe730b97635889048e00743ba40b00000000000000000000000000000000000000000000000000000000e40b540200000000000000000000000000000000000000000000000000000012e0bcbf8df0fa8445cfaff0981b9d6f3c6ebb9c997f2ae873b2b5f9f1ab2954030400000054a930d10afd6b6e3bdbb9185f7012c1c6597303a267ba8f6d9ea5684ba2c3b112e0bcbf8df0fa8445cfaff0981b9d6f3c6ebb9c997f2ae873b2b5f9f1ab2954ef643697f9804189d4884d2e30f4ec57a7f2c3a64fc683fafb8569932923a858665ddac465674b4c675319591fc77fd4af108ec47bc6034a197fcf9b84012d670101000000004962370b5b3112ab4bfbde70c39811b980b0c494b9fa2ed4023dcce35485916d0100000000009dc1711f2e810f1021c1f172dc26fdd2c1f092c3a62bdcafc49e1e9957b44a5e878304dbf9db261c8f428e6f5fddea8f59d95454ccbd3901ccbfabddce6a3908","index":0,"name":"Init_Validator_3","output":["0 | Type : Init Validator","1 | Account key [1/2] : 004962370b5b3112ab4bfbde70c39811b980b0","1 | Account key [2/2] : c494b9fa2ed4023dcce35485916d","2 | Account key [1/2] : 000d6b506bc1043b2756502505f464693937b0","2 | Account key [2/2] : 97eee21ee4a1ce33d18e8e5028e7","3 | Threshold : 2","4 | Consensus key [1/2] : 0092b9884f0116b2883f330f4346a7be5f81c9","4 | Consensus key [2/2] : e2cd76718fb483fce14b998d9bf8","5 | Ethereum cold key [1/2] : 02260da08b42213c7e0c66f2f209adf011693b","5 | Ethereum cold key [2/2] : 4c33d458a8af4c8d0cbd91aca085","6 | Ethereum hot key [1/2] : 022fbbc808568145cc971b05449bbc01a97d73","6 | Ethereum hot key [2/2] : 2071cae12e5f9b50b4b94cfc750f","7 | Protocol key [1/2] : 005d45751fa40e6e53d29fc7dea8089ebb1db8","7 | Protocol key [2/2] : df30ccfae6acdbc392fa71ee5067","8 | DKG key [1/6] : 600000000e838af1f7afee7d4372548ea623f8","8 | DKG key [2/6] : 95c7ccd0be9d70760f10805c924958794e6fd0","8 | DKG key [3/6] : bf696b5065752e34c2840abbf511c74998f2ba","8 | DKG key [4/6] : 94773c389882da1c68c88613672a1c63c2e346","8 | DKG key [5/6] : 242628b9ea8e006baf694c6b5d5e9abe730b97","8 | DKG key [6/6] : 635889048e","9 | Commission rate : 0.05","10 | Maximum commission rate change : 0.01","11 | Validator VP type : User"],"output_expert":["0 | Code hash [1/2] : b3b48166976e0259db4eab1e72ace4c92368b3","0 | Code hash [2/2] : 4fd5a06f7ccd41b4ae4c88ca1d","1 | Account key [1/2] : 004962370b5b3112ab4bfbde70c39811b980b0","1 | Account key [2/2] : c494b9fa2ed4023dcce35485916d","2 | Account key [1/2] : 000d6b506bc1043b2756502505f464693937b0","2 | Account key [2/2] : 97eee21ee4a1ce33d18e8e5028e7","3 | Threshold : 2","4 | Consensus key [1/2] : 0092b9884f0116b2883f330f4346a7be5f81c9","4 | Consensus key [2/2] : e2cd76718fb483fce14b998d9bf8","5 | Ethereum cold key [1/2] : 02260da08b42213c7e0c66f2f209adf011693b","5 | Ethereum cold key [2/2] : 4c33d458a8af4c8d0cbd91aca085","6 | Ethereum hot key [1/2] : 022fbbc808568145cc971b05449bbc01a97d73","6 | Ethereum hot key [2/2] : 2071cae12e5f9b50b4b94cfc750f","7 | Protocol key [1/2] : 005d45751fa40e6e53d29fc7dea8089ebb1db8","7 | Protocol key [2/2] : df30ccfae6acdbc392fa71ee5067","8 | DKG key [1/6] : 600000000e838af1f7afee7d4372548ea623f8","8 | DKG key [2/6] : 95c7ccd0be9d70760f10805c924958794e6fd0","8 | DKG key [3/6] : bf696b5065752e34c2840abbf511c74998f2ba","8 | DKG key [4/6] : 94773c389882da1c68c88613672a1c63c2e346","8 | DKG key [5/6] : 242628b9ea8e006baf694c6b5d5e9abe730b97","8 | DKG key [6/6] : 635889048e","9 | Commission rate : 0.05","10 | Maximum commission rate change : 0.01","11 | Validator VP type [1/2] : 3b9e4d777c9420bbbf730e1549252f1a091bc0","11 | Validator VP type [2/2] : 1535eb1f37e7a7e3d1bace7576","12 | Timestamp : 2023-10-24 13:30:36.287101056 UTC","13 | Pubkey [1/2] : 004962370b5b3112ab4bfbde70c39811b980b0","13 | Pubkey [2/2] : c494b9fa2ed4023dcce35485916d","14 | Epoch : 1","15 | Gas limit : 0.02","16 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e3836366231353935333331353165656365633231650023000000323032332d31302d32345431343a30323a32362e3435303733353139382b30303a3030222180da292a2e3f758536dc657cdf370a9c0378ea15200b7b45deafd8f960f2a7b02a6ad890dcd7a126532c6a044443580fa6e10187dbf4b8abd7a210b6b24b010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e6006f29834bd87d3f8d4f008b8bcaaee57c189e4f9a0523162c978b1ac047eed8310100000000000000204e00000000000000000400000002406ffe618b010000004730c6c302f0a572c09d2b671ae4c40deee8cf46fc168c8eba57fadef88b73de00406ffe618b0100003600000000f565d3e259a7f7b6c2ef61d032ff24fd31124216404b4c0000000000000000000000000000000000000000000000000000000000000301000000ef792182aef7b32da37bbe8a7110d29930a4df54a282ed8fa97a20a72d884ddb0000f565d3e259a7f7b6c2ef61d032ff24fd31124216010000000000db2aec1be1d3c44ab6d2f2eeb5144ea43bb972680f73b337403d7a2020ed24b4c314df25f6254a6afb61bab8f6f2471a0498528a25ae23ce325fa118a5929f070304000000c8f7eca43d56214d7c97773d5169662b3e97e45dbd3c0cd15978d7c5a9cd4b4d222180da292a2e3f758536dc657cdf370a9c0378ea15200b7b45deafd8f960f2a7b02a6ad890dcd7a126532c6a044443580fa6e10187dbf4b8abd7a210b6b24bdf664da9a886b2eb7cc3c3cbaec5413362d31ba0d058e3c8461508a34fb355e60101000000006f29834bd87d3f8d4f008b8bcaaee57c189e4f9a0523162c978b1ac047eed8310100000000001a6f26be1f56990715a58f06ebea29b9b3316eb71976de696c317af68faa6acef9e1b90e866e946053049275f43dc54f6cc9812c066da790daefc1257ae2e50e","index":0,"name":"Unbond_1","output":["0 | Type : Unbond","1 | Validator [1/3] : atest1v4ehgw36gc6nvd2yxdznydfegym5vd6z","1 | Validator [2/3] : xepny32xxcc5gvpnxfryvv35gezrxvf3xg6ryv","1 | Validator [3/3] : fkewx4y8","2 | Amount : NAM 5.0"],"output_expert":["0 | Code hash [1/2] : 4730c6c302f0a572c09d2b671ae4c40deee8cf","0 | Code hash [2/2] : 46fc168c8eba57fadef88b73de","1 | Validator [1/3] : atest1v4ehgw36gc6nvd2yxdznydfegym5vd6z","1 | Validator [2/3] : xepny32xxcc5gvpnxfryvv35gezrxvf3xg6ryv","1 | Validator [3/3] : fkewx4y8","2 | Amount : NAM 5.0","3 | Timestamp : 2023-10-24 14:02:26.450735198 UTC","4 | Pubkey [1/2] : 006f29834bd87d3f8d4f008b8bcaaee57c189e","4 | Pubkey [2/2] : 4f9a0523162c978b1ac047eed831","5 | Epoch : 1","6 | Gas limit : 0.02","7 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e6161366232333634363639616465333464653363340023000000323032332d31302d32345431333a33303a34302e3930333830353334372b30303a30309cf4945d7f9f65804ffc2ae594532d8592b080dde07e26b8c6c8bb0bfc4857d0f3c82aadb0012a41adb312cba742c99a9855cec39ff2fcdd8c65572cfe2f6058010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e6004962370b5b3112ab4bfbde70c39811b980b0c494b9fa2ed4023dcce35485916d0100000000000000204e00000000000000000400000002b65be1618b01000000649353ad4c9b5acefe52b5e67eada78b6f83e206ed71dc935ddec70467c3063b00b65be1618b010000160000000082f54298d9b67046314ba9ae07dbb0f627664d750003010000007f0d4db482ae6577f2e6683fd5adf8e8f50fdc29979277d279fbf0398a5ae095000082f54298d9b67046314ba9ae07dbb0f627664d750100000000009655cb9ff94a92609e5b289f45ee42c5d84e6841723e644adb4c567d463c3cba0e193563bc2eac8d50d9f844236239fbc3283cfc9260d1b9dee465c39f9edb0e0304000000e64faf69f88f956af4a26d807d1d84063cfd94fd31cc7003edb4243f34763c749cf4945d7f9f65804ffc2ae594532d8592b080dde07e26b8c6c8bb0bfc4857d0f3c82aadb0012a41adb312cba742c99a9855cec39ff2fcdd8c65572cfe2f605871fc7a7a4414850133ca3e17d58ccceb49ae6d3d5d7fbf2e1d0c6ea26c4031d60101000000004962370b5b3112ab4bfbde70c39811b980b0c494b9fa2ed4023dcce35485916d0100000000007f4db3adbcba9054235784e8ad4bfcb6ce96bb8b7dbebe9514e632d58f61e0d764c784a04012498a13cd515c4c844dbe17cf7893b6073f8d9754af9959b39703","index":0,"name":"Withdraw_1","output":["0 | Type : Withdraw","1 | Validator [1/3] : atest1v4ehgw368qeyvdf5xguns3peggmrwvp5","1 | Validator [2/3] : xcenzdzzgyu5z3fsxazyys3sgcmrydekxc6ygd","1 | Validator [3/3] : e4gz2an6"],"output_expert":["0 | Code hash [1/2] : 649353ad4c9b5acefe52b5e67eada78b6f83e2","0 | Code hash [2/2] : 06ed71dc935ddec70467c3063b","1 | Validator [1/3] : atest1v4ehgw368qeyvdf5xguns3peggmrwvp5","1 | Validator [2/3] : xcenzdzzgyu5z3fsxazyys3sgcmrydekxc6ygd","1 | Validator [3/3] : e4gz2an6","2 | Timestamp : 2023-10-24 13:30:40.903805347 UTC","3 | Pubkey [1/2] : 004962370b5b3112ab4bfbde70c39811b980b0","3 | Pubkey [2/2] : c494b9fa2ed4023dcce35485916d","4 | Epoch : 1","5 | Gas limit : 0.02","6 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e6161366232333634363639616465333464653363340023000000323032332d31302d32345431333a33303a34342e3339363239373230382b30303a30302cd05fadaf51681579dae40df9a9e7918b0ee48b1897a0f2a70eaf9020dd88abd3ca3589f1bdb8c14be96ed773ba3d841142b4e436b63c742c4a7bb5615b29f6010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e6004962370b5b3112ab4bfbde70c39811b980b0c494b9fa2ed4023dcce35485916d0100000000000000204e000000000000000004000000015b69e1618b010000003b9e4d777c9420bbbf730e1549252f1a091bc01535eb1f37e7a7e3d1bace7576025b69e1618b01000000f0061157377454c314ad7c9e3855221d49da7425ffef6db6b7d28f5242423281005b69e1618b0100004600000001000000004962370b5b3112ab4bfbde70c39811b980b0c494b9fa2ed4023dcce35485916dc6c1a20481dfe68783c5d1901f540b7ddc744bec2c9db9d998952098e339deb5010304000000444874e899e490842a95c5739da318454c0e27b3ff8f5bc32f69d7db9734184ec6c1a20481dfe68783c5d1901f540b7ddc744bec2c9db9d998952098e339deb52cd05fadaf51681579dae40df9a9e7918b0ee48b1897a0f2a70eaf9020dd88abd3ca3589f1bdb8c14be96ed773ba3d841142b4e436b63c742c4a7bb5615b29f60101000000004962370b5b3112ab4bfbde70c39811b980b0c494b9fa2ed4023dcce35485916d0100000000005dc346bb19a416046abe9173c6d7e415b0b038f1066d1cbad6ddbbbab21d5270728281c42a946efeff4d40447c9ad3ef01f7ee9a8b216a746042f3f08ed4d30b","index":0,"name":"Init_Account_2","output":["0 | Type : Init Account","1 | Public key [1/2] : 004962370b5b3112ab4bfbde70c39811b980b0","1 | Public key [2/2] : c494b9fa2ed4023dcce35485916d","2 | Threshold : 1","3 | VP type : User"],"output_expert":["0 | Code hash [1/2] : f0061157377454c314ad7c9e3855221d49da74","0 | Code hash [2/2] : 25ffef6db6b7d28f5242423281","1 | Public key [1/2] : 004962370b5b3112ab4bfbde70c39811b980b0","1 | Public key [2/2] : c494b9fa2ed4023dcce35485916d","2 | Threshold : 1","3 | VP type [1/2] : 3b9e4d777c9420bbbf730e1549252f1a091bc0","3 | VP type [2/2] : 1535eb1f37e7a7e3d1bace7576","4 | Timestamp : 2023-10-24 13:30:44.396297208 UTC","5 | Pubkey [1/2] : 004962370b5b3112ab4bfbde70c39811b980b0","5 | Pubkey [2/2] : c494b9fa2ed4023dcce35485916d","6 | Epoch : 1","7 | Gas limit : 0.02","8 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e6161366232333634363639616465333464653363340023000000323032332d31302d32345431333a33303a34372e3932353937303333382b30303a3030f50bf963e2fb540f6b6ec7d2f89675634eadd4190e7175d55365831ef7181f45e9818594906b68ae018fc1582b18b3960d1a056123f51e0931b23445399128c8010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e6004962370b5b3112ab4bfbde70c39811b980b0c494b9fa2ed4023dcce35485916d0100000000000000204e000000000000000004000000012277e1618b010000003b9e4d777c9420bbbf730e1549252f1a091bc01535eb1f37e7a7e3d1bace7576022277e1618b01000000f0061157377454c314ad7c9e3855221d49da7425ffef6db6b7d28f5242423281002277e1618b0100008800000003000000004962370b5b3112ab4bfbde70c39811b980b0c494b9fa2ed4023dcce35485916d000d6b506bc1043b2756502505f464693937b097eee21ee4a1ce33d18e8e5028e7009dc4b583162dc87318525e388c3899d41fe94001da1dc913ecfee8b543d0ca53bff482daa0a335e04599ed3411a7a251b5e778d7466a45e20622ed495edbf75f02030400000084cd0ccc9f4cdffa4d5b29438b1ac7769309c4feacc673dfe96367aa09f9a8d5bff482daa0a335e04599ed3411a7a251b5e778d7466a45e20622ed495edbf75ff50bf963e2fb540f6b6ec7d2f89675634eadd4190e7175d55365831ef7181f45e9818594906b68ae018fc1582b18b3960d1a056123f51e0931b23445399128c80101000000004962370b5b3112ab4bfbde70c39811b980b0c494b9fa2ed4023dcce35485916d01000000000074a8e9fb1921a00e05eead543a09ff23529574950c9d7bbd3285928f7b5945fa08c2aee69118296d63cd8e1a97ac0adb0a5bd737de808362b4a89450009c0a08","index":0,"name":"Init_Account_3","output":["0 | Type : Init Account","1 | Public key [1/2] : 004962370b5b3112ab4bfbde70c39811b980b0","1 | Public key [2/2] : c494b9fa2ed4023dcce35485916d","2 | Public key [1/2] : 000d6b506bc1043b2756502505f464693937b0","2 | Public key [2/2] : 97eee21ee4a1ce33d18e8e5028e7","3 | Public key [1/2] : 009dc4b583162dc87318525e388c3899d41fe9","3 | Public key [2/2] : 4001da1dc913ecfee8b543d0ca53","4 | Threshold : 2","5 | VP type : User"],"output_expert":["0 | Code hash [1/2] : f0061157377454c314ad7c9e3855221d49da74","0 | Code hash [2/2] : 25ffef6db6b7d28f5242423281","1 | Public key [1/2] : 004962370b5b3112ab4bfbde70c39811b980b0","1 | Public key [2/2] : c494b9fa2ed4023dcce35485916d","2 | Public key [1/2] : 000d6b506bc1043b2756502505f464693937b0","2 | Public key [2/2] : 97eee21ee4a1ce33d18e8e5028e7","3 | Public key [1/2] : 009dc4b583162dc87318525e388c3899d41fe9","3 | Public key [2/2] : 4001da1dc913ecfee8b543d0ca53","4 | Threshold : 2","5 | VP type [1/2] : 3b9e4d777c9420bbbf730e1549252f1a091bc0","5 | VP type [2/2] : 1535eb1f37e7a7e3d1bace7576","6 | Timestamp : 2023-10-24 13:30:47.925970338 UTC","7 | Pubkey [1/2] : 004962370b5b3112ab4bfbde70c39811b980b0","7 | Pubkey [2/2] : c494b9fa2ed4023dcce35485916d","8 | Epoch : 1","9 | Gas limit : 0.02","10 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e6161366232333634363639616465333464653363340023000000323032332d31302d32345431333a33303a35322e3635333938373437342b30303a30307be661a266622a7aca5ad7ea59be1f1e51c6bf48f322daf679191e09ea49ea16397039962c66f8c8c669a516840ee68dae40b35b0f3ee90b69f2e7b14e23b11a010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e6000d6b506bc1043b2756502505f464693937b097eee21ee4a1ce33d18e8e5028e70100000000000000204e000000000000000004000000026d89e1618b0100000058bd568dfa94973c798b3868326197fa5d8687a6f6aee77c395eaaa1d01e2c19006e89e1618b0100000d0100000a292f6962632e6170706c69636174696f6e732e7472616e736665722e76312e4d73675472616e7366657212df010a087472616e73666572120b6368616e6e656c2d3134311a5a0a54617465737431763465686777333678647a727976653567736335327665656735636e73763279783565796776703338716372766432397879367279733670387963357876703478667079327636393477677763701202323422546174657374317634656867773336787375797a336a72387963727964367978657035796436726767756e7173336a7871366e7677703567356d6e776466353879756e766433347867756e797670633463326476372a08636872697374656c32003897a2e6df9db2c4c81703010000004c0d3e4c29414ba597a355d7809ff0af1a92f82986b96f0ef5eae6543c864cae000048afc9027d6cb7cb90b205684e77549966529208010000000100835e81d28ffb378859b9cc394e2c5e9aba5ce5cd53e0887d7b96db228a645cb30d80cd41dd6de7ed8f9b09c320042841fe0a9d0523707b08f5785098b0e95a050304000000047ebe43a36ae38f0271922df725a4b732aee61e455ab0df485c72f71edf23d47be661a266622a7aca5ad7ea59be1f1e51c6bf48f322daf679191e09ea49ea16397039962c66f8c8c669a516840ee68dae40b35b0f3ee90b69f2e7b14e23b11ae255c93427fc09129edd29fe9004183e448483715708e51ff01a0117b106004d0101000000000d6b506bc1043b2756502505f464693937b097eee21ee4a1ce33d18e8e5028e70100000000005043134e6876a4989219a5bf6a6f4eb60a610c2e68a983e04f63fd80354bda147b3bf137ecf8befcfa98aecbd7ffce312320c76fb34a57828ab1fdba2bccb903","index":0,"name":"IBC_3","output":["0 | Type : IBC","1 | Source port : transfer","2 | Source channel : channel-141","3 | Token [1/3] : 24 atest1v4ehgw36xdzryve5gsc52veeg5cns","3 | Token [2/3] : v2yx5eygvp38qcrvd29xy6rys6p8yc5xvp4xfp","3 | Token [3/3] : y2v694wgwcp","4 | Sender [1/3] : atest1v4ehgw36xsuyz3jr8ycryd6yxep5yd6r","4 | Sender [2/3] : ggunqs3jxq6nvwp5g5mnwdf58yunvd34xgunyv","4 | Sender [3/3] : pc4c2dv7","5 | Receiver : christel","6 | Timeout height : no timeout","7 | Timeout timestamp : 2023-10-24T14:30:52.653883671Z"],"output_expert":["0 | Code hash [1/2] : 58bd568dfa94973c798b3868326197fa5d8687","0 | Code hash [2/2] : a6f6aee77c395eaaa1d01e2c19","1 | Source port : transfer","2 | Source channel : channel-141","3 | Token [1/3] : 24 atest1v4ehgw36xdzryve5gsc52veeg5cns","3 | Token [2/3] : v2yx5eygvp38qcrvd29xy6rys6p8yc5xvp4xfp","3 | Token [3/3] : y2v694wgwcp","4 | Sender [1/3] : atest1v4ehgw36xsuyz3jr8ycryd6yxep5yd6r","4 | Sender [2/3] : ggunqs3jxq6nvwp5g5mnwdf58yunvd34xgunyv","4 | Sender [3/3] : pc4c2dv7","5 | Receiver : christel","6 | Timeout height : no timeout","7 | Timeout timestamp : 2023-10-24T14:30:52.653883671Z","8 | Timestamp : 2023-10-24 13:30:52.653987474 UTC","9 | Pubkey [1/2] : 000d6b506bc1043b2756502505f464693937b0","9 | Pubkey [2/2] : 97eee21ee4a1ce33d18e8e5028e7","10 | Epoch : 1","11 | Gas limit : 0.02","12 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e6161366232333634363639616465333464653363340023000000323032332d31302d32345431333a33303a35362e3435343632303235322b30303a30302655cb5ff98d43f55749b2a99f8982591501969ea9e7d6f17ee62ff996f39765fa88da2000be6609fa93904da67139dd257cc4ad3e1bc7bd3280b5ee7bf1a9fa010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e6004962370b5b3112ab4bfbde70c39811b980b0c494b9fa2ed4023dcce35485916d0100000000000000204e000000000000000004000000024698e1618b0100000058bd568dfa94973c798b3868326197fa5d8687a6f6aee77c395eaaa1d01e2c19004698e1618b0100000d0100000a292f6962632e6170706c69636174696f6e732e7472616e736665722e76312e4d73675472616e7366657212df010a087472616e7366657212096368616e6e656c2d301a5e0a5461746573743176346568677733367833707273777a786767756e7a76367078716d6e76646a39787663797a76707367676579767333636739716e797766353839716e77766673673565726733666b6c303972673512063130303030302254617465737431763465686777333638716579766466357867756e7333706567676d72777670357863656e7a647a7a677975357a33667378617a797973337367636d727964656b7863367967646534677a32616e362a06626572746861320038c2e28bf4abb2c4c8170301000000a5a13be4caddab0e644993c083b59e48071004b95c32eabbb716f90a758369be000082f54298d9b67046314ba9ae07dbb0f627664d75010000000000f22bdcb4796a8ed42782bc35483dc6f5cdaf4fca5b7f1caee89c933a7af0f273222e285e9b7e2ba4684e8c77d5a44759bbfb3d5b35a6aa66a6019ce08088e1020304000000ac1224ab1482c1533bf8dd8481f32961fc452199c8d8b58b8d2e15747d433e4a2655cb5ff98d43f55749b2a99f8982591501969ea9e7d6f17ee62ff996f39765fa88da2000be6609fa93904da67139dd257cc4ad3e1bc7bd3280b5ee7bf1a9fa0e4d19b9a3cc3efd4ec27d1fc17a15859fd9ee7e3b701ec1554868bf544e5a5a0101000000004962370b5b3112ab4bfbde70c39811b980b0c494b9fa2ed4023dcce35485916d0100000000005a7269a9aedaa4cf1f9ef13c4cc970e6575ca4031ce0e5d03282c4d893f27ad7ccc76c7b63dad6e18f87104f5312994aceb66c7067306cf67feb28ed5e9b290d","index":0,"name":"IBC_4","output":["0 | Type : IBC","1 | Source port : transfer","2 | Source channel : channel-0","3 | Token [1/3] : 100000 atest1v4ehgw36x3prswzxggunzv6px","3 | Token [2/3] : qmnvdj9xvcyzvpsggeyvs3cg9qnywf589qnwvf","3 | Token [3/3] : sg5erg3fkl09rg5","4 | Sender [1/3] : atest1v4ehgw368qeyvdf5xguns3peggmrwvp5","4 | Sender [2/3] : xcenzdzzgyu5z3fsxazyys3sgcmrydekxc6ygd","4 | Sender [3/3] : e4gz2an6","5 | Receiver : bertha","6 | Timeout height : no timeout","7 | Timeout timestamp : 2023-10-24T14:30:56.454537538Z"],"output_expert":["0 | Code hash [1/2] : 58bd568dfa94973c798b3868326197fa5d8687","0 | Code hash [2/2] : a6f6aee77c395eaaa1d01e2c19","1 | Source port : transfer","2 | Source channel : channel-0","3 | Token [1/3] : 100000 atest1v4ehgw36x3prswzxggunzv6px","3 | Token [2/3] : qmnvdj9xvcyzvpsggeyvs3cg9qnywf589qnwvf","3 | Token [3/3] : sg5erg3fkl09rg5","4 | Sender [1/3] : atest1v4ehgw368qeyvdf5xguns3peggmrwvp5","4 | Sender [2/3] : xcenzdzzgyu5z3fsxazyys3sgcmrydekxc6ygd","4 | Sender [3/3] : e4gz2an6","5 | Receiver : bertha","6 | Timeout height : no timeout","7 | Timeout timestamp : 2023-10-24T14:30:56.454537538Z","8 | Timestamp : 2023-10-24 13:30:56.454620252 UTC","9 | Pubkey [1/2] : 004962370b5b3112ab4bfbde70c39811b980b0","9 | Pubkey [2/2] : c494b9fa2ed4023dcce35485916d","10 | Epoch : 1","11 | Gas limit : 0.02","12 | Fees/gas unit : NAM 0.000001"],"valid":true}, +{"blob":"1e0000006532652d746573742e6161366232333634363639616465333464653363340023000000323032332d31302d32345431333a33313a30312e3334333830373837362b30303a30302255cba1679e2a714d89585ce27859cd90b6c2b8c27a02e1eecff147f25f51c2a3d435ba73c594c67e53a2998715eba3bfcbd61b3319277b28f0c2c5ddd89159010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e6004962370b5b3112ab4bfbde70c39811b980b0c494b9fa2ed4023dcce35485916d0100000000000000204e000000000000000004000000025fabe1618b0100000058bd568dfa94973c798b3868326197fa5d8687a6f6aee77c395eaaa1d01e2c19005fabe1618b0100000d0100000a292f6962632e6170706c69636174696f6e732e7472616e736665722e76312e4d73675472616e7366657212df010a087472616e7366657212096368616e6e656c2d301a5e0a5461746573743176346568677733367833707273777a786767756e7a76367078716d6e76646a39787663797a76707367676579767333636739716e797766353839716e77766673673565726733666b6c303972673512063130303030302254617465737431763465686777333638716579766466357867756e7333706567676d72777670357863656e7a647a7a677975357a33667378617a797973337367636d727964656b7863367967646534677a32616e362a0662657274686132003890b6ebd9edc9c3c8170301000000fad0b1dad4519682d06f1b2e9c05bca0df2119d02d6163e8af6e18e4e2b813e5000082f54298d9b67046314ba9ae07dbb0f627664d75010000000000623cb57c7f1236aa78bf163f8ef967f4daf9f43fe6293554f8a3e632976dbac0751c5c6f98cc91a48eff1356b2c5d7f78a0ef874297f731fc7f57ea5b8d69d0903040000002ed2a4d1d90875a142a07f30ff909e747d6b6e7fa024076ba596d11a20431e9c2255cba1679e2a714d89585ce27859cd90b6c2b8c27a02e1eecff147f25f51c2a3d435ba73c594c67e53a2998715eba3bfcbd61b3319277b28f0c2c5ddd89159acceab03ce554956431a1f0963252ee3171ea4ca8d5efb0b6aa9ecfb159681e20101000000004962370b5b3112ab4bfbde70c39811b980b0c494b9fa2ed4023dcce35485916d010000000000a0fa410d7075d9478502e2848990e7de55ffcc8d3b6d34d083846e2b1ceae63ec1fbb2443bf1d7187f65026088f4902c2d18a029764ba3c89d73ed60a0bd690e","index":0,"name":"IBC_5","output":["0 | Type : IBC","1 | Source port : transfer","2 | Source channel : channel-0","3 | Token [1/3] : 100000 atest1v4ehgw36x3prswzxggunzv6px","3 | Token [2/3] : qmnvdj9xvcyzvpsggeyvs3cg9qnywf589qnwvf","3 | Token [3/3] : sg5erg3fkl09rg5","4 | Sender [1/3] : atest1v4ehgw368qeyvdf5xguns3peggmrwvp5","4 | Sender [2/3] : xcenzdzzgyu5z3fsxazyys3sgcmrydekxc6ygd","4 | Sender [3/3] : e4gz2an6","5 | Receiver : bertha","6 | Timeout height : no timeout","7 | Timeout timestamp : 2023-10-24T13:31:06.343693072Z"],"output_expert":["0 | Code hash [1/2] : 58bd568dfa94973c798b3868326197fa5d8687","0 | Code hash [2/2] : a6f6aee77c395eaaa1d01e2c19","1 | Source port : transfer","2 | Source channel : channel-0","3 | Token [1/3] : 100000 atest1v4ehgw36x3prswzxggunzv6px","3 | Token [2/3] : qmnvdj9xvcyzvpsggeyvs3cg9qnywf589qnwvf","3 | Token [3/3] : sg5erg3fkl09rg5","4 | Sender [1/3] : atest1v4ehgw368qeyvdf5xguns3peggmrwvp5","4 | Sender [2/3] : xcenzdzzgyu5z3fsxazyys3sgcmrydekxc6ygd","4 | Sender [3/3] : e4gz2an6","5 | Receiver : bertha","6 | Timeout height : no timeout","7 | Timeout timestamp : 2023-10-24T13:31:06.343693072Z","8 | Timestamp : 2023-10-24 13:31:01.343807876 UTC","9 | Pubkey [1/2] : 004962370b5b3112ab4bfbde70c39811b980b0","9 | Pubkey [2/2] : c494b9fa2ed4023dcce35485916d","10 | Epoch : 1","11 | Gas limit : 0.02","12 | Fees/gas unit : NAM 0.000001"],"valid":true}, ] diff --git a/tests_zemu/snapshots/s-sign-bond/00001.png b/tests_zemu/snapshots/s-sign-bond/00001.png index 790375ae..b97103cc 100644 Binary files a/tests_zemu/snapshots/s-sign-bond/00001.png 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 index 7e20a28b..5d9dd044 100644 Binary files a/tests_zemu/snapshots/s-sign-bond/00002.png 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 index 847216e3..5999a9a5 100644 Binary files a/tests_zemu/snapshots/s-sign-bond/00003.png 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 index b805bba3..a657a26f 100644 Binary files a/tests_zemu/snapshots/s-sign-bond/00004.png 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 index c7952d6c..7cd26ef2 100644 Binary files a/tests_zemu/snapshots/s-sign-bond/00005.png 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 index 4cc8077d..962d7bf6 100644 Binary files a/tests_zemu/snapshots/s-sign-bond/00006.png and b/tests_zemu/snapshots/s-sign-bond/00006.png differ diff --git a/tests_zemu/snapshots/s-sign-init_account/00001.png b/tests_zemu/snapshots/s-sign-init_account/00001.png index ba5172d6..05271301 100644 Binary files a/tests_zemu/snapshots/s-sign-init_account/00001.png 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 index 4a4a8cae..04548e27 100644 Binary files a/tests_zemu/snapshots/s-sign-init_account/00002.png 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 index 2e2bae00..1de499d5 100644 Binary files a/tests_zemu/snapshots/s-sign-init_account/00003.png 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 index 006c26ab..2e2bae00 100644 Binary files a/tests_zemu/snapshots/s-sign-init_account/00004.png 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 index 9eeb1e0e..006c26ab 100644 Binary files a/tests_zemu/snapshots/s-sign-init_account/00005.png and b/tests_zemu/snapshots/s-sign-init_account/00005.png differ diff --git a/tests_zemu/snapshots/s-sign-init_account/00006.png b/tests_zemu/snapshots/s-sign-init_account/00006.png new file mode 100644 index 00000000..9eeb1e0e Binary files /dev/null and b/tests_zemu/snapshots/s-sign-init_account/00006.png differ diff --git a/tests_zemu/snapshots/s-sign-init_account/00007.png b/tests_zemu/snapshots/s-sign-init_account/00007.png new file mode 100644 index 00000000..8c0036ec Binary files /dev/null and b/tests_zemu/snapshots/s-sign-init_account/00007.png differ diff --git a/tests_zemu/snapshots/s-sign-init_account/00008.png b/tests_zemu/snapshots/s-sign-init_account/00008.png new file mode 100644 index 00000000..2e2bae00 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-init_account/00008.png differ diff --git a/tests_zemu/snapshots/s-sign-init_account/00009.png b/tests_zemu/snapshots/s-sign-init_account/00009.png new file mode 100644 index 00000000..006c26ab Binary files /dev/null and b/tests_zemu/snapshots/s-sign-init_account/00009.png differ diff --git a/tests_zemu/snapshots/s-sign-init_account/00010.png b/tests_zemu/snapshots/s-sign-init_account/00010.png new file mode 100644 index 00000000..9eeb1e0e Binary files /dev/null and b/tests_zemu/snapshots/s-sign-init_account/00010.png differ diff --git a/tests_zemu/snapshots/s-sign-init_proposal/00001.png b/tests_zemu/snapshots/s-sign-init_proposal/00001.png index 2f9b9868..f17fe2d4 100644 Binary files a/tests_zemu/snapshots/s-sign-init_proposal/00001.png 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 index 72f022c4..f483ca3f 100644 Binary files a/tests_zemu/snapshots/s-sign-init_proposal/00002.png 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 index 47478c6c..fe9a4b18 100644 Binary files a/tests_zemu/snapshots/s-sign-init_proposal/00003.png 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 index e5ac71d3..d5ec0f68 100644 Binary files a/tests_zemu/snapshots/s-sign-init_proposal/00004.png 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 index 15e8e4dc..9b72f0c3 100644 Binary files a/tests_zemu/snapshots/s-sign-init_proposal/00005.png and b/tests_zemu/snapshots/s-sign-init_proposal/00005.png differ diff --git a/tests_zemu/snapshots/s-sign-init_validator/00001.png b/tests_zemu/snapshots/s-sign-init_validator/00001.png index 1954e058..f4ca2702 100644 Binary files a/tests_zemu/snapshots/s-sign-init_validator/00001.png 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 index 13f89426..4f5ffb09 100644 Binary files a/tests_zemu/snapshots/s-sign-init_validator/00002.png 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 index 92e4fa41..1de499d5 100644 Binary files a/tests_zemu/snapshots/s-sign-init_validator/00003.png 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 index 10c974d6..3c712136 100644 Binary files a/tests_zemu/snapshots/s-sign-init_validator/00004.png 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 index 1f6a2f97..e81a5ec4 100644 Binary files a/tests_zemu/snapshots/s-sign-init_validator/00005.png 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 index e5ae5652..872ccf00 100644 Binary files a/tests_zemu/snapshots/s-sign-init_validator/00006.png 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 index d1344500..438728e3 100644 Binary files a/tests_zemu/snapshots/s-sign-init_validator/00007.png 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 index de055fff..4debcd34 100644 Binary files a/tests_zemu/snapshots/s-sign-init_validator/00008.png 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 index e6e68734..22bf5d6c 100644 Binary files a/tests_zemu/snapshots/s-sign-init_validator/00009.png 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 index a176d59d..ed273497 100644 Binary files a/tests_zemu/snapshots/s-sign-init_validator/00010.png 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 index bd26c325..6a6766f4 100644 Binary files a/tests_zemu/snapshots/s-sign-init_validator/00011.png 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 index e52e1212..49233c12 100644 Binary files a/tests_zemu/snapshots/s-sign-init_validator/00012.png 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 index 2bfccdb0..a6314aa5 100644 Binary files a/tests_zemu/snapshots/s-sign-init_validator/00013.png 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 index 2c49c978..6535784a 100644 Binary files a/tests_zemu/snapshots/s-sign-init_validator/00014.png 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 index a3a4c055..3f9d07f8 100644 Binary files a/tests_zemu/snapshots/s-sign-init_validator/00015.png 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 index 006c26ab..b787ee5a 100644 Binary files a/tests_zemu/snapshots/s-sign-init_validator/00016.png 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 index 9eeb1e0e..0c154a61 100644 Binary files a/tests_zemu/snapshots/s-sign-init_validator/00017.png and b/tests_zemu/snapshots/s-sign-init_validator/00017.png differ diff --git a/tests_zemu/snapshots/s-sign-init_validator/00018.png b/tests_zemu/snapshots/s-sign-init_validator/00018.png new file mode 100644 index 00000000..2bfccdb0 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-init_validator/00018.png differ diff --git a/tests_zemu/snapshots/s-sign-init_validator/00019.png b/tests_zemu/snapshots/s-sign-init_validator/00019.png new file mode 100644 index 00000000..2c49c978 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-init_validator/00019.png differ diff --git a/tests_zemu/snapshots/s-sign-init_validator/00020.png b/tests_zemu/snapshots/s-sign-init_validator/00020.png new file mode 100644 index 00000000..a3a4c055 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-init_validator/00020.png differ diff --git a/tests_zemu/snapshots/s-sign-init_validator/00021.png b/tests_zemu/snapshots/s-sign-init_validator/00021.png new file mode 100644 index 00000000..006c26ab Binary files /dev/null and b/tests_zemu/snapshots/s-sign-init_validator/00021.png differ diff --git a/tests_zemu/snapshots/s-sign-init_validator/00022.png b/tests_zemu/snapshots/s-sign-init_validator/00022.png new file mode 100644 index 00000000..9eeb1e0e Binary files /dev/null and b/tests_zemu/snapshots/s-sign-init_validator/00022.png differ diff --git a/tests_zemu/snapshots/s-sign-init_validator/00023.png b/tests_zemu/snapshots/s-sign-init_validator/00023.png new file mode 100644 index 00000000..006c26ab Binary files /dev/null and b/tests_zemu/snapshots/s-sign-init_validator/00023.png differ diff --git a/tests_zemu/snapshots/s-sign-init_validator/00024.png b/tests_zemu/snapshots/s-sign-init_validator/00024.png new file mode 100644 index 00000000..9eeb1e0e Binary files /dev/null and b/tests_zemu/snapshots/s-sign-init_validator/00024.png differ diff --git a/tests_zemu/snapshots/s-sign-multisig_address/00000.png b/tests_zemu/snapshots/s-sign-multisig_address/00000.png new file mode 100644 index 00000000..c0616a9b Binary files /dev/null and b/tests_zemu/snapshots/s-sign-multisig_address/00000.png differ diff --git a/tests_zemu/snapshots/s-sign-multisig_address/00001.png b/tests_zemu/snapshots/s-sign-multisig_address/00001.png new file mode 100644 index 00000000..f17fe2d4 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-multisig_address/00001.png differ diff --git a/tests_zemu/snapshots/s-sign-multisig_address/00002.png b/tests_zemu/snapshots/s-sign-multisig_address/00002.png new file mode 100644 index 00000000..f483ca3f Binary files /dev/null and b/tests_zemu/snapshots/s-sign-multisig_address/00002.png differ diff --git a/tests_zemu/snapshots/s-sign-multisig_address/00003.png b/tests_zemu/snapshots/s-sign-multisig_address/00003.png new file mode 100644 index 00000000..fe9a4b18 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-multisig_address/00003.png differ diff --git a/tests_zemu/snapshots/s-sign-multisig_address/00004.png b/tests_zemu/snapshots/s-sign-multisig_address/00004.png new file mode 100644 index 00000000..d5ec0f68 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-multisig_address/00004.png differ diff --git a/tests_zemu/snapshots/s-sign-multisig_address/00005.png b/tests_zemu/snapshots/s-sign-multisig_address/00005.png new file mode 100644 index 00000000..9b72f0c3 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-multisig_address/00005.png differ diff --git a/tests_zemu/snapshots/s-sign-multisig_address/00006.png b/tests_zemu/snapshots/s-sign-multisig_address/00006.png new file mode 100644 index 00000000..5b906340 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-multisig_address/00006.png differ diff --git a/tests_zemu/snapshots/s-sign-multisig_address/00007.png b/tests_zemu/snapshots/s-sign-multisig_address/00007.png new file mode 100644 index 00000000..5041ce50 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-multisig_address/00007.png differ diff --git a/tests_zemu/snapshots/s-sign-multisig_address/00008.png b/tests_zemu/snapshots/s-sign-multisig_address/00008.png new file mode 100644 index 00000000..ec751266 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-multisig_address/00008.png differ diff --git a/tests_zemu/snapshots/s-sign-multisig_address/00009.png b/tests_zemu/snapshots/s-sign-multisig_address/00009.png new file mode 100644 index 00000000..290eabd5 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-multisig_address/00009.png differ diff --git a/tests_zemu/snapshots/s-sign-multisig_address/00010.png b/tests_zemu/snapshots/s-sign-multisig_address/00010.png new file mode 100644 index 00000000..bed0544b Binary files /dev/null and b/tests_zemu/snapshots/s-sign-multisig_address/00010.png differ diff --git a/tests_zemu/snapshots/s-sign-multisig_address/00011.png b/tests_zemu/snapshots/s-sign-multisig_address/00011.png new file mode 100644 index 00000000..006c26ab Binary files /dev/null and b/tests_zemu/snapshots/s-sign-multisig_address/00011.png differ diff --git a/tests_zemu/snapshots/s-sign-multisig_address/00012.png b/tests_zemu/snapshots/s-sign-multisig_address/00012.png new file mode 100644 index 00000000..9eeb1e0e Binary files /dev/null and b/tests_zemu/snapshots/s-sign-multisig_address/00012.png differ diff --git a/tests_zemu/snapshots/s-sign-multisig_pubkeys/00000.png b/tests_zemu/snapshots/s-sign-multisig_pubkeys/00000.png new file mode 100644 index 00000000..c0616a9b Binary files /dev/null and b/tests_zemu/snapshots/s-sign-multisig_pubkeys/00000.png differ diff --git a/tests_zemu/snapshots/s-sign-multisig_pubkeys/00001.png b/tests_zemu/snapshots/s-sign-multisig_pubkeys/00001.png new file mode 100644 index 00000000..f17fe2d4 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-multisig_pubkeys/00001.png differ diff --git a/tests_zemu/snapshots/s-sign-multisig_pubkeys/00002.png b/tests_zemu/snapshots/s-sign-multisig_pubkeys/00002.png new file mode 100644 index 00000000..f483ca3f Binary files /dev/null and b/tests_zemu/snapshots/s-sign-multisig_pubkeys/00002.png differ diff --git a/tests_zemu/snapshots/s-sign-multisig_pubkeys/00003.png b/tests_zemu/snapshots/s-sign-multisig_pubkeys/00003.png new file mode 100644 index 00000000..fe9a4b18 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-multisig_pubkeys/00003.png differ diff --git a/tests_zemu/snapshots/s-sign-multisig_pubkeys/00004.png b/tests_zemu/snapshots/s-sign-multisig_pubkeys/00004.png new file mode 100644 index 00000000..d5ec0f68 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-multisig_pubkeys/00004.png differ diff --git a/tests_zemu/snapshots/s-sign-multisig_pubkeys/00005.png b/tests_zemu/snapshots/s-sign-multisig_pubkeys/00005.png new file mode 100644 index 00000000..9b72f0c3 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-multisig_pubkeys/00005.png differ diff --git a/tests_zemu/snapshots/s-sign-multisig_pubkeys/00006.png b/tests_zemu/snapshots/s-sign-multisig_pubkeys/00006.png new file mode 100644 index 00000000..5b906340 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-multisig_pubkeys/00006.png differ diff --git a/tests_zemu/snapshots/s-sign-multisig_pubkeys/00007.png b/tests_zemu/snapshots/s-sign-multisig_pubkeys/00007.png new file mode 100644 index 00000000..5041ce50 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-multisig_pubkeys/00007.png differ diff --git a/tests_zemu/snapshots/s-sign-multisig_pubkeys/00008.png b/tests_zemu/snapshots/s-sign-multisig_pubkeys/00008.png new file mode 100644 index 00000000..ec751266 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-multisig_pubkeys/00008.png differ diff --git a/tests_zemu/snapshots/s-sign-multisig_pubkeys/00009.png b/tests_zemu/snapshots/s-sign-multisig_pubkeys/00009.png new file mode 100644 index 00000000..290eabd5 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-multisig_pubkeys/00009.png differ diff --git a/tests_zemu/snapshots/s-sign-multisig_pubkeys/00010.png b/tests_zemu/snapshots/s-sign-multisig_pubkeys/00010.png new file mode 100644 index 00000000..bed0544b Binary files /dev/null and b/tests_zemu/snapshots/s-sign-multisig_pubkeys/00010.png differ diff --git a/tests_zemu/snapshots/s-sign-multisig_pubkeys/00011.png b/tests_zemu/snapshots/s-sign-multisig_pubkeys/00011.png new file mode 100644 index 00000000..006c26ab Binary files /dev/null and b/tests_zemu/snapshots/s-sign-multisig_pubkeys/00011.png differ diff --git a/tests_zemu/snapshots/s-sign-multisig_pubkeys/00012.png b/tests_zemu/snapshots/s-sign-multisig_pubkeys/00012.png new file mode 100644 index 00000000..9eeb1e0e Binary files /dev/null and b/tests_zemu/snapshots/s-sign-multisig_pubkeys/00012.png differ diff --git a/tests_zemu/snapshots/s-sign-update_vp/00001.png b/tests_zemu/snapshots/s-sign-update_vp/00001.png index a87f5f7c..4f95809e 100644 Binary files a/tests_zemu/snapshots/s-sign-update_vp/00001.png 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 index 2e497359..46b00255 100644 Binary files a/tests_zemu/snapshots/s-sign-update_vp/00002.png 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 index 40bda034..2d91bee5 100644 Binary files a/tests_zemu/snapshots/s-sign-update_vp/00003.png and b/tests_zemu/snapshots/s-sign-update_vp/00003.png differ diff --git a/tests_zemu/snapshots/s-sign-update_vp/00007.png b/tests_zemu/snapshots/s-sign-update_vp/00007.png new file mode 100644 index 00000000..add6e63c Binary files /dev/null and b/tests_zemu/snapshots/s-sign-update_vp/00007.png differ diff --git a/tests_zemu/snapshots/s-sign-update_vp/00008.png b/tests_zemu/snapshots/s-sign-update_vp/00008.png new file mode 100644 index 00000000..5d2128c9 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-update_vp/00008.png differ diff --git a/tests_zemu/snapshots/s-sign-update_vp/00009.png b/tests_zemu/snapshots/s-sign-update_vp/00009.png new file mode 100644 index 00000000..b6196fe7 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-update_vp/00009.png differ diff --git a/tests_zemu/snapshots/s-sign-update_vp/00010.png b/tests_zemu/snapshots/s-sign-update_vp/00010.png new file mode 100644 index 00000000..8c0036ec Binary files /dev/null and b/tests_zemu/snapshots/s-sign-update_vp/00010.png differ diff --git a/tests_zemu/snapshots/s-sign-update_vp/00011.png b/tests_zemu/snapshots/s-sign-update_vp/00011.png new file mode 100644 index 00000000..2e2bae00 Binary files /dev/null and b/tests_zemu/snapshots/s-sign-update_vp/00011.png differ diff --git a/tests_zemu/snapshots/s-sign-update_vp/00012.png b/tests_zemu/snapshots/s-sign-update_vp/00012.png new file mode 100644 index 00000000..006c26ab Binary files /dev/null and b/tests_zemu/snapshots/s-sign-update_vp/00012.png differ diff --git a/tests_zemu/snapshots/s-sign-update_vp/00013.png b/tests_zemu/snapshots/s-sign-update_vp/00013.png new file mode 100644 index 00000000..9eeb1e0e Binary files /dev/null and b/tests_zemu/snapshots/s-sign-update_vp/00013.png differ diff --git a/tests_zemu/snapshots/sp-sign-bond/00002.png b/tests_zemu/snapshots/sp-sign-bond/00002.png index 13abd374..602e506a 100644 Binary files a/tests_zemu/snapshots/sp-sign-bond/00002.png 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 index d286a3df..affa1c78 100644 Binary files a/tests_zemu/snapshots/sp-sign-bond/00003.png 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 index e99bfa60..4878dae1 100644 Binary files a/tests_zemu/snapshots/sp-sign-bond/00004.png 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 index 1a8cd03e..4dfa4fa5 100644 Binary files a/tests_zemu/snapshots/sp-sign-bond/00005.png and b/tests_zemu/snapshots/sp-sign-bond/00005.png differ diff --git a/tests_zemu/snapshots/sp-sign-init_account/00002.png b/tests_zemu/snapshots/sp-sign-init_account/00002.png index 4e65b98d..ae1fbfa6 100644 Binary files a/tests_zemu/snapshots/sp-sign-init_account/00002.png 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 index a1ba8110..177e3b04 100644 Binary files a/tests_zemu/snapshots/sp-sign-init_account/00003.png 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 index a1fa625f..791bb362 100644 Binary files a/tests_zemu/snapshots/sp-sign-init_account/00004.png 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 index 1e4be699..a1fa625f 100644 Binary files a/tests_zemu/snapshots/sp-sign-init_account/00005.png 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 index 8d9abd01..1e4be699 100644 Binary files a/tests_zemu/snapshots/sp-sign-init_account/00006.png and b/tests_zemu/snapshots/sp-sign-init_account/00006.png differ diff --git a/tests_zemu/snapshots/sp-sign-init_account/00007.png b/tests_zemu/snapshots/sp-sign-init_account/00007.png new file mode 100644 index 00000000..8d9abd01 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-init_account/00007.png differ diff --git a/tests_zemu/snapshots/sp-sign-init_account/00008.png b/tests_zemu/snapshots/sp-sign-init_account/00008.png new file mode 100644 index 00000000..148305a0 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-init_account/00008.png differ diff --git a/tests_zemu/snapshots/sp-sign-init_account/00009.png b/tests_zemu/snapshots/sp-sign-init_account/00009.png new file mode 100644 index 00000000..a1fa625f Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-init_account/00009.png differ diff --git a/tests_zemu/snapshots/sp-sign-init_account/00010.png b/tests_zemu/snapshots/sp-sign-init_account/00010.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-init_account/00010.png differ diff --git a/tests_zemu/snapshots/sp-sign-init_account/00011.png b/tests_zemu/snapshots/sp-sign-init_account/00011.png new file mode 100644 index 00000000..8d9abd01 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-init_account/00011.png differ diff --git a/tests_zemu/snapshots/sp-sign-init_proposal/00002.png b/tests_zemu/snapshots/sp-sign-init_proposal/00002.png index 99792ed1..245b518b 100644 Binary files a/tests_zemu/snapshots/sp-sign-init_proposal/00002.png 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 index e76b7694..ae143ddc 100644 Binary files a/tests_zemu/snapshots/sp-sign-init_proposal/00003.png 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 index 814d2f4e..91089c76 100644 Binary files a/tests_zemu/snapshots/sp-sign-init_proposal/00004.png 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 index f0bab2c4..1ccf64f8 100644 Binary files a/tests_zemu/snapshots/sp-sign-init_proposal/00005.png and b/tests_zemu/snapshots/sp-sign-init_proposal/00005.png differ diff --git a/tests_zemu/snapshots/sp-sign-init_validator/00002.png b/tests_zemu/snapshots/sp-sign-init_validator/00002.png index 87e6b51c..937282ce 100644 Binary files a/tests_zemu/snapshots/sp-sign-init_validator/00002.png 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 index dc4c7cdd..811a81f4 100644 Binary files a/tests_zemu/snapshots/sp-sign-init_validator/00003.png 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 index 83326b39..791bb362 100644 Binary files a/tests_zemu/snapshots/sp-sign-init_validator/00004.png 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 index 28196da3..3c693ed2 100644 Binary files a/tests_zemu/snapshots/sp-sign-init_validator/00005.png 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 index c7e97bc7..bc91a2b6 100644 Binary files a/tests_zemu/snapshots/sp-sign-init_validator/00006.png 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 index 82fd321b..5f3d64e4 100644 Binary files a/tests_zemu/snapshots/sp-sign-init_validator/00007.png 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 index 3b669a6d..3b6fb623 100644 Binary files a/tests_zemu/snapshots/sp-sign-init_validator/00008.png 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 index c1f1b36c..2963c8c1 100644 Binary files a/tests_zemu/snapshots/sp-sign-init_validator/00009.png 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 index ded8319a..9b555b60 100644 Binary files a/tests_zemu/snapshots/sp-sign-init_validator/00010.png 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 index 94f9380d..7bb007c2 100644 Binary files a/tests_zemu/snapshots/sp-sign-init_validator/00011.png 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 index 8b7fd56b..f493a322 100644 Binary files a/tests_zemu/snapshots/sp-sign-init_validator/00012.png 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 index 9eb73546..c5341193 100644 Binary files a/tests_zemu/snapshots/sp-sign-init_validator/00013.png 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 index f79b80c7..187ddb60 100644 Binary files a/tests_zemu/snapshots/sp-sign-init_validator/00014.png 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 index 1e4be699..774e03dc 100644 Binary files a/tests_zemu/snapshots/sp-sign-init_validator/00015.png 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 index 8d9abd01..06d21623 100644 Binary files a/tests_zemu/snapshots/sp-sign-init_validator/00016.png and b/tests_zemu/snapshots/sp-sign-init_validator/00016.png differ diff --git a/tests_zemu/snapshots/sp-sign-init_validator/00017.png b/tests_zemu/snapshots/sp-sign-init_validator/00017.png new file mode 100644 index 00000000..8b7fd56b Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-init_validator/00017.png differ diff --git a/tests_zemu/snapshots/sp-sign-init_validator/00018.png b/tests_zemu/snapshots/sp-sign-init_validator/00018.png new file mode 100644 index 00000000..9eb73546 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-init_validator/00018.png differ diff --git a/tests_zemu/snapshots/sp-sign-init_validator/00019.png b/tests_zemu/snapshots/sp-sign-init_validator/00019.png new file mode 100644 index 00000000..f79b80c7 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-init_validator/00019.png differ diff --git a/tests_zemu/snapshots/sp-sign-init_validator/00020.png b/tests_zemu/snapshots/sp-sign-init_validator/00020.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-init_validator/00020.png differ diff --git a/tests_zemu/snapshots/sp-sign-init_validator/00021.png b/tests_zemu/snapshots/sp-sign-init_validator/00021.png new file mode 100644 index 00000000..8d9abd01 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-init_validator/00021.png differ diff --git a/tests_zemu/snapshots/sp-sign-init_validator/00022.png b/tests_zemu/snapshots/sp-sign-init_validator/00022.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-init_validator/00022.png differ diff --git a/tests_zemu/snapshots/sp-sign-init_validator/00023.png b/tests_zemu/snapshots/sp-sign-init_validator/00023.png new file mode 100644 index 00000000..8d9abd01 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-init_validator/00023.png differ diff --git a/tests_zemu/snapshots/sp-sign-multisig_address/00000.png b/tests_zemu/snapshots/sp-sign-multisig_address/00000.png new file mode 100644 index 00000000..7e718698 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-multisig_address/00000.png differ diff --git a/tests_zemu/snapshots/sp-sign-multisig_address/00001.png b/tests_zemu/snapshots/sp-sign-multisig_address/00001.png new file mode 100644 index 00000000..b1c401f9 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-multisig_address/00001.png differ diff --git a/tests_zemu/snapshots/sp-sign-multisig_address/00002.png b/tests_zemu/snapshots/sp-sign-multisig_address/00002.png new file mode 100644 index 00000000..245b518b Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-multisig_address/00002.png differ diff --git a/tests_zemu/snapshots/sp-sign-multisig_address/00003.png b/tests_zemu/snapshots/sp-sign-multisig_address/00003.png new file mode 100644 index 00000000..ae143ddc Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-multisig_address/00003.png differ diff --git a/tests_zemu/snapshots/sp-sign-multisig_address/00004.png b/tests_zemu/snapshots/sp-sign-multisig_address/00004.png new file mode 100644 index 00000000..91089c76 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-multisig_address/00004.png differ diff --git a/tests_zemu/snapshots/sp-sign-multisig_address/00005.png b/tests_zemu/snapshots/sp-sign-multisig_address/00005.png new file mode 100644 index 00000000..1ccf64f8 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-multisig_address/00005.png differ diff --git a/tests_zemu/snapshots/sp-sign-multisig_address/00006.png b/tests_zemu/snapshots/sp-sign-multisig_address/00006.png new file mode 100644 index 00000000..8232f852 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-multisig_address/00006.png differ diff --git a/tests_zemu/snapshots/sp-sign-multisig_address/00007.png b/tests_zemu/snapshots/sp-sign-multisig_address/00007.png new file mode 100644 index 00000000..741f83e6 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-multisig_address/00007.png differ diff --git a/tests_zemu/snapshots/sp-sign-multisig_address/00008.png b/tests_zemu/snapshots/sp-sign-multisig_address/00008.png new file mode 100644 index 00000000..66130302 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-multisig_address/00008.png differ diff --git a/tests_zemu/snapshots/sp-sign-multisig_address/00009.png b/tests_zemu/snapshots/sp-sign-multisig_address/00009.png new file mode 100644 index 00000000..9b944824 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-multisig_address/00009.png differ diff --git a/tests_zemu/snapshots/sp-sign-multisig_address/00010.png b/tests_zemu/snapshots/sp-sign-multisig_address/00010.png new file mode 100644 index 00000000..42de340f Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-multisig_address/00010.png differ diff --git a/tests_zemu/snapshots/sp-sign-multisig_address/00011.png b/tests_zemu/snapshots/sp-sign-multisig_address/00011.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-multisig_address/00011.png differ diff --git a/tests_zemu/snapshots/sp-sign-multisig_address/00012.png b/tests_zemu/snapshots/sp-sign-multisig_address/00012.png new file mode 100644 index 00000000..8d9abd01 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-multisig_address/00012.png differ diff --git a/tests_zemu/snapshots/sp-sign-multisig_pubkeys/00000.png b/tests_zemu/snapshots/sp-sign-multisig_pubkeys/00000.png new file mode 100644 index 00000000..7e718698 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-multisig_pubkeys/00000.png differ diff --git a/tests_zemu/snapshots/sp-sign-multisig_pubkeys/00001.png b/tests_zemu/snapshots/sp-sign-multisig_pubkeys/00001.png new file mode 100644 index 00000000..b1c401f9 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-multisig_pubkeys/00001.png differ diff --git a/tests_zemu/snapshots/sp-sign-multisig_pubkeys/00002.png b/tests_zemu/snapshots/sp-sign-multisig_pubkeys/00002.png new file mode 100644 index 00000000..245b518b Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-multisig_pubkeys/00002.png differ diff --git a/tests_zemu/snapshots/sp-sign-multisig_pubkeys/00003.png b/tests_zemu/snapshots/sp-sign-multisig_pubkeys/00003.png new file mode 100644 index 00000000..ae143ddc Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-multisig_pubkeys/00003.png differ diff --git a/tests_zemu/snapshots/sp-sign-multisig_pubkeys/00004.png b/tests_zemu/snapshots/sp-sign-multisig_pubkeys/00004.png new file mode 100644 index 00000000..91089c76 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-multisig_pubkeys/00004.png differ diff --git a/tests_zemu/snapshots/sp-sign-multisig_pubkeys/00005.png b/tests_zemu/snapshots/sp-sign-multisig_pubkeys/00005.png new file mode 100644 index 00000000..1ccf64f8 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-multisig_pubkeys/00005.png differ diff --git a/tests_zemu/snapshots/sp-sign-multisig_pubkeys/00006.png b/tests_zemu/snapshots/sp-sign-multisig_pubkeys/00006.png new file mode 100644 index 00000000..8232f852 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-multisig_pubkeys/00006.png differ diff --git a/tests_zemu/snapshots/sp-sign-multisig_pubkeys/00007.png b/tests_zemu/snapshots/sp-sign-multisig_pubkeys/00007.png new file mode 100644 index 00000000..741f83e6 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-multisig_pubkeys/00007.png differ diff --git a/tests_zemu/snapshots/sp-sign-multisig_pubkeys/00008.png b/tests_zemu/snapshots/sp-sign-multisig_pubkeys/00008.png new file mode 100644 index 00000000..66130302 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-multisig_pubkeys/00008.png differ diff --git a/tests_zemu/snapshots/sp-sign-multisig_pubkeys/00009.png b/tests_zemu/snapshots/sp-sign-multisig_pubkeys/00009.png new file mode 100644 index 00000000..9b944824 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-multisig_pubkeys/00009.png differ diff --git a/tests_zemu/snapshots/sp-sign-multisig_pubkeys/00010.png b/tests_zemu/snapshots/sp-sign-multisig_pubkeys/00010.png new file mode 100644 index 00000000..42de340f Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-multisig_pubkeys/00010.png differ diff --git a/tests_zemu/snapshots/sp-sign-multisig_pubkeys/00011.png b/tests_zemu/snapshots/sp-sign-multisig_pubkeys/00011.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-multisig_pubkeys/00011.png differ diff --git a/tests_zemu/snapshots/sp-sign-multisig_pubkeys/00012.png b/tests_zemu/snapshots/sp-sign-multisig_pubkeys/00012.png new file mode 100644 index 00000000..8d9abd01 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-multisig_pubkeys/00012.png differ diff --git a/tests_zemu/snapshots/sp-sign-update_vp/00002.png b/tests_zemu/snapshots/sp-sign-update_vp/00002.png index 9e8761a0..83f3802c 100644 Binary files a/tests_zemu/snapshots/sp-sign-update_vp/00002.png 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 index f071eba9..8f90e476 100644 Binary files a/tests_zemu/snapshots/sp-sign-update_vp/00003.png and b/tests_zemu/snapshots/sp-sign-update_vp/00003.png differ diff --git a/tests_zemu/snapshots/sp-sign-update_vp/00007.png b/tests_zemu/snapshots/sp-sign-update_vp/00007.png new file mode 100644 index 00000000..d19f99f0 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-update_vp/00007.png differ diff --git a/tests_zemu/snapshots/sp-sign-update_vp/00008.png b/tests_zemu/snapshots/sp-sign-update_vp/00008.png new file mode 100644 index 00000000..0815dd2a Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-update_vp/00008.png differ diff --git a/tests_zemu/snapshots/sp-sign-update_vp/00009.png b/tests_zemu/snapshots/sp-sign-update_vp/00009.png new file mode 100644 index 00000000..eed762a4 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-update_vp/00009.png differ diff --git a/tests_zemu/snapshots/sp-sign-update_vp/00010.png b/tests_zemu/snapshots/sp-sign-update_vp/00010.png new file mode 100644 index 00000000..148305a0 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-update_vp/00010.png differ diff --git a/tests_zemu/snapshots/sp-sign-update_vp/00011.png b/tests_zemu/snapshots/sp-sign-update_vp/00011.png new file mode 100644 index 00000000..a1fa625f Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-update_vp/00011.png differ diff --git a/tests_zemu/snapshots/sp-sign-update_vp/00012.png b/tests_zemu/snapshots/sp-sign-update_vp/00012.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-update_vp/00012.png differ diff --git a/tests_zemu/snapshots/sp-sign-update_vp/00013.png b/tests_zemu/snapshots/sp-sign-update_vp/00013.png new file mode 100644 index 00000000..8d9abd01 Binary files /dev/null and b/tests_zemu/snapshots/sp-sign-update_vp/00013.png differ diff --git a/tests_zemu/snapshots/x-sign-bond/00002.png b/tests_zemu/snapshots/x-sign-bond/00002.png index 0bbb7225..99f7ac36 100644 Binary files a/tests_zemu/snapshots/x-sign-bond/00002.png 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 index b93e26f1..93f28956 100644 Binary files a/tests_zemu/snapshots/x-sign-bond/00003.png 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 index e99ef5dc..9d265cfd 100644 Binary files a/tests_zemu/snapshots/x-sign-bond/00004.png 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 index db5b62dc..4dfa4fa5 100644 Binary files a/tests_zemu/snapshots/x-sign-bond/00005.png and b/tests_zemu/snapshots/x-sign-bond/00005.png differ diff --git a/tests_zemu/snapshots/x-sign-init_account/00002.png b/tests_zemu/snapshots/x-sign-init_account/00002.png index b5ec1177..c53ed48a 100644 Binary files a/tests_zemu/snapshots/x-sign-init_account/00002.png 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 index ceedd41e..499e172c 100644 Binary files a/tests_zemu/snapshots/x-sign-init_account/00003.png 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 index a1fa625f..791bb362 100644 Binary files a/tests_zemu/snapshots/x-sign-init_account/00004.png 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 index 1e4be699..a1fa625f 100644 Binary files a/tests_zemu/snapshots/x-sign-init_account/00005.png 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 index 8d9abd01..1e4be699 100644 Binary files a/tests_zemu/snapshots/x-sign-init_account/00006.png and b/tests_zemu/snapshots/x-sign-init_account/00006.png differ diff --git a/tests_zemu/snapshots/x-sign-init_account/00007.png b/tests_zemu/snapshots/x-sign-init_account/00007.png new file mode 100644 index 00000000..8d9abd01 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-init_account/00007.png differ diff --git a/tests_zemu/snapshots/x-sign-init_account/00008.png b/tests_zemu/snapshots/x-sign-init_account/00008.png new file mode 100644 index 00000000..148305a0 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-init_account/00008.png differ diff --git a/tests_zemu/snapshots/x-sign-init_account/00009.png b/tests_zemu/snapshots/x-sign-init_account/00009.png new file mode 100644 index 00000000..a1fa625f Binary files /dev/null and b/tests_zemu/snapshots/x-sign-init_account/00009.png differ diff --git a/tests_zemu/snapshots/x-sign-init_account/00010.png b/tests_zemu/snapshots/x-sign-init_account/00010.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-init_account/00010.png differ diff --git a/tests_zemu/snapshots/x-sign-init_account/00011.png b/tests_zemu/snapshots/x-sign-init_account/00011.png new file mode 100644 index 00000000..8d9abd01 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-init_account/00011.png differ diff --git a/tests_zemu/snapshots/x-sign-init_proposal/00002.png b/tests_zemu/snapshots/x-sign-init_proposal/00002.png index 99792ed1..245b518b 100644 Binary files a/tests_zemu/snapshots/x-sign-init_proposal/00002.png 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 index e76b7694..ae143ddc 100644 Binary files a/tests_zemu/snapshots/x-sign-init_proposal/00003.png 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 index c4bd5dd8..91089c76 100644 Binary files a/tests_zemu/snapshots/x-sign-init_proposal/00004.png 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 index f0bab2c4..22c5e25e 100644 Binary files a/tests_zemu/snapshots/x-sign-init_proposal/00005.png and b/tests_zemu/snapshots/x-sign-init_proposal/00005.png differ diff --git a/tests_zemu/snapshots/x-sign-init_validator/00002.png b/tests_zemu/snapshots/x-sign-init_validator/00002.png index a2bbac54..06719b18 100644 Binary files a/tests_zemu/snapshots/x-sign-init_validator/00002.png 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 index 28beca84..c2fa2c1e 100644 Binary files a/tests_zemu/snapshots/x-sign-init_validator/00003.png 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 index a855f07d..791bb362 100644 Binary files a/tests_zemu/snapshots/x-sign-init_validator/00004.png 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 index cb199231..0bc9f913 100644 Binary files a/tests_zemu/snapshots/x-sign-init_validator/00005.png 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 index c7e97bc7..68bdbf62 100644 Binary files a/tests_zemu/snapshots/x-sign-init_validator/00006.png 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 index 82fd321b..5f3d64e4 100644 Binary files a/tests_zemu/snapshots/x-sign-init_validator/00007.png 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 index 3b669a6d..3b6fb623 100644 Binary files a/tests_zemu/snapshots/x-sign-init_validator/00008.png 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 index c1f1b36c..6f98e7c8 100644 Binary files a/tests_zemu/snapshots/x-sign-init_validator/00009.png 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 index ded8319a..8a99a7cf 100644 Binary files a/tests_zemu/snapshots/x-sign-init_validator/00010.png 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 index 94f9380d..7bb007c2 100644 Binary files a/tests_zemu/snapshots/x-sign-init_validator/00011.png 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 index 8b7fd56b..f493a322 100644 Binary files a/tests_zemu/snapshots/x-sign-init_validator/00012.png 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 index 9eb73546..c5341193 100644 Binary files a/tests_zemu/snapshots/x-sign-init_validator/00013.png 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 index f79b80c7..187ddb60 100644 Binary files a/tests_zemu/snapshots/x-sign-init_validator/00014.png 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 index 1e4be699..774e03dc 100644 Binary files a/tests_zemu/snapshots/x-sign-init_validator/00015.png 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 index 8d9abd01..06d21623 100644 Binary files a/tests_zemu/snapshots/x-sign-init_validator/00016.png and b/tests_zemu/snapshots/x-sign-init_validator/00016.png differ diff --git a/tests_zemu/snapshots/x-sign-init_validator/00017.png b/tests_zemu/snapshots/x-sign-init_validator/00017.png new file mode 100644 index 00000000..8b7fd56b Binary files /dev/null and b/tests_zemu/snapshots/x-sign-init_validator/00017.png differ diff --git a/tests_zemu/snapshots/x-sign-init_validator/00018.png b/tests_zemu/snapshots/x-sign-init_validator/00018.png new file mode 100644 index 00000000..9eb73546 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-init_validator/00018.png differ diff --git a/tests_zemu/snapshots/x-sign-init_validator/00019.png b/tests_zemu/snapshots/x-sign-init_validator/00019.png new file mode 100644 index 00000000..f79b80c7 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-init_validator/00019.png differ diff --git a/tests_zemu/snapshots/x-sign-init_validator/00020.png b/tests_zemu/snapshots/x-sign-init_validator/00020.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-init_validator/00020.png differ diff --git a/tests_zemu/snapshots/x-sign-init_validator/00021.png b/tests_zemu/snapshots/x-sign-init_validator/00021.png new file mode 100644 index 00000000..8d9abd01 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-init_validator/00021.png differ diff --git a/tests_zemu/snapshots/x-sign-init_validator/00022.png b/tests_zemu/snapshots/x-sign-init_validator/00022.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-init_validator/00022.png differ diff --git a/tests_zemu/snapshots/x-sign-init_validator/00023.png b/tests_zemu/snapshots/x-sign-init_validator/00023.png new file mode 100644 index 00000000..8d9abd01 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-init_validator/00023.png differ diff --git a/tests_zemu/snapshots/x-sign-multisig_address/00000.png b/tests_zemu/snapshots/x-sign-multisig_address/00000.png new file mode 100644 index 00000000..7e718698 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-multisig_address/00000.png differ diff --git a/tests_zemu/snapshots/x-sign-multisig_address/00001.png b/tests_zemu/snapshots/x-sign-multisig_address/00001.png new file mode 100644 index 00000000..e353cb0a Binary files /dev/null and b/tests_zemu/snapshots/x-sign-multisig_address/00001.png differ diff --git a/tests_zemu/snapshots/x-sign-multisig_address/00002.png b/tests_zemu/snapshots/x-sign-multisig_address/00002.png new file mode 100644 index 00000000..245b518b Binary files /dev/null and b/tests_zemu/snapshots/x-sign-multisig_address/00002.png differ diff --git a/tests_zemu/snapshots/x-sign-multisig_address/00003.png b/tests_zemu/snapshots/x-sign-multisig_address/00003.png new file mode 100644 index 00000000..ae143ddc Binary files /dev/null and b/tests_zemu/snapshots/x-sign-multisig_address/00003.png differ diff --git a/tests_zemu/snapshots/x-sign-multisig_address/00004.png b/tests_zemu/snapshots/x-sign-multisig_address/00004.png new file mode 100644 index 00000000..91089c76 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-multisig_address/00004.png differ diff --git a/tests_zemu/snapshots/x-sign-multisig_address/00005.png b/tests_zemu/snapshots/x-sign-multisig_address/00005.png new file mode 100644 index 00000000..22c5e25e Binary files /dev/null and b/tests_zemu/snapshots/x-sign-multisig_address/00005.png differ diff --git a/tests_zemu/snapshots/x-sign-multisig_address/00006.png b/tests_zemu/snapshots/x-sign-multisig_address/00006.png new file mode 100644 index 00000000..117ae825 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-multisig_address/00006.png differ diff --git a/tests_zemu/snapshots/x-sign-multisig_address/00007.png b/tests_zemu/snapshots/x-sign-multisig_address/00007.png new file mode 100644 index 00000000..1b8a4349 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-multisig_address/00007.png differ diff --git a/tests_zemu/snapshots/x-sign-multisig_address/00008.png b/tests_zemu/snapshots/x-sign-multisig_address/00008.png new file mode 100644 index 00000000..66130302 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-multisig_address/00008.png differ diff --git a/tests_zemu/snapshots/x-sign-multisig_address/00009.png b/tests_zemu/snapshots/x-sign-multisig_address/00009.png new file mode 100644 index 00000000..be5f0c33 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-multisig_address/00009.png differ diff --git a/tests_zemu/snapshots/x-sign-multisig_address/00010.png b/tests_zemu/snapshots/x-sign-multisig_address/00010.png new file mode 100644 index 00000000..6fed7c4e Binary files /dev/null and b/tests_zemu/snapshots/x-sign-multisig_address/00010.png differ diff --git a/tests_zemu/snapshots/x-sign-multisig_address/00011.png b/tests_zemu/snapshots/x-sign-multisig_address/00011.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-multisig_address/00011.png differ diff --git a/tests_zemu/snapshots/x-sign-multisig_address/00012.png b/tests_zemu/snapshots/x-sign-multisig_address/00012.png new file mode 100644 index 00000000..8d9abd01 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-multisig_address/00012.png differ diff --git a/tests_zemu/snapshots/x-sign-multisig_pubkeys/00000.png b/tests_zemu/snapshots/x-sign-multisig_pubkeys/00000.png new file mode 100644 index 00000000..7e718698 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-multisig_pubkeys/00000.png differ diff --git a/tests_zemu/snapshots/x-sign-multisig_pubkeys/00001.png b/tests_zemu/snapshots/x-sign-multisig_pubkeys/00001.png new file mode 100644 index 00000000..e353cb0a Binary files /dev/null and b/tests_zemu/snapshots/x-sign-multisig_pubkeys/00001.png differ diff --git a/tests_zemu/snapshots/x-sign-multisig_pubkeys/00002.png b/tests_zemu/snapshots/x-sign-multisig_pubkeys/00002.png new file mode 100644 index 00000000..245b518b Binary files /dev/null and b/tests_zemu/snapshots/x-sign-multisig_pubkeys/00002.png differ diff --git a/tests_zemu/snapshots/x-sign-multisig_pubkeys/00003.png b/tests_zemu/snapshots/x-sign-multisig_pubkeys/00003.png new file mode 100644 index 00000000..ae143ddc Binary files /dev/null and b/tests_zemu/snapshots/x-sign-multisig_pubkeys/00003.png differ diff --git a/tests_zemu/snapshots/x-sign-multisig_pubkeys/00004.png b/tests_zemu/snapshots/x-sign-multisig_pubkeys/00004.png new file mode 100644 index 00000000..91089c76 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-multisig_pubkeys/00004.png differ diff --git a/tests_zemu/snapshots/x-sign-multisig_pubkeys/00005.png b/tests_zemu/snapshots/x-sign-multisig_pubkeys/00005.png new file mode 100644 index 00000000..22c5e25e Binary files /dev/null and b/tests_zemu/snapshots/x-sign-multisig_pubkeys/00005.png differ diff --git a/tests_zemu/snapshots/x-sign-multisig_pubkeys/00006.png b/tests_zemu/snapshots/x-sign-multisig_pubkeys/00006.png new file mode 100644 index 00000000..117ae825 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-multisig_pubkeys/00006.png differ diff --git a/tests_zemu/snapshots/x-sign-multisig_pubkeys/00007.png b/tests_zemu/snapshots/x-sign-multisig_pubkeys/00007.png new file mode 100644 index 00000000..1b8a4349 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-multisig_pubkeys/00007.png differ diff --git a/tests_zemu/snapshots/x-sign-multisig_pubkeys/00008.png b/tests_zemu/snapshots/x-sign-multisig_pubkeys/00008.png new file mode 100644 index 00000000..66130302 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-multisig_pubkeys/00008.png differ diff --git a/tests_zemu/snapshots/x-sign-multisig_pubkeys/00009.png b/tests_zemu/snapshots/x-sign-multisig_pubkeys/00009.png new file mode 100644 index 00000000..be5f0c33 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-multisig_pubkeys/00009.png differ diff --git a/tests_zemu/snapshots/x-sign-multisig_pubkeys/00010.png b/tests_zemu/snapshots/x-sign-multisig_pubkeys/00010.png new file mode 100644 index 00000000..6fed7c4e Binary files /dev/null and b/tests_zemu/snapshots/x-sign-multisig_pubkeys/00010.png differ diff --git a/tests_zemu/snapshots/x-sign-multisig_pubkeys/00011.png b/tests_zemu/snapshots/x-sign-multisig_pubkeys/00011.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-multisig_pubkeys/00011.png differ diff --git a/tests_zemu/snapshots/x-sign-multisig_pubkeys/00012.png b/tests_zemu/snapshots/x-sign-multisig_pubkeys/00012.png new file mode 100644 index 00000000..8d9abd01 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-multisig_pubkeys/00012.png differ diff --git a/tests_zemu/snapshots/x-sign-update_vp/00002.png b/tests_zemu/snapshots/x-sign-update_vp/00002.png index a1272d5a..1ade5615 100644 Binary files a/tests_zemu/snapshots/x-sign-update_vp/00002.png 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 index 5c506af4..e7c5393f 100644 Binary files a/tests_zemu/snapshots/x-sign-update_vp/00003.png and b/tests_zemu/snapshots/x-sign-update_vp/00003.png differ diff --git a/tests_zemu/snapshots/x-sign-update_vp/00007.png b/tests_zemu/snapshots/x-sign-update_vp/00007.png new file mode 100644 index 00000000..2da7170e Binary files /dev/null and b/tests_zemu/snapshots/x-sign-update_vp/00007.png differ diff --git a/tests_zemu/snapshots/x-sign-update_vp/00008.png b/tests_zemu/snapshots/x-sign-update_vp/00008.png new file mode 100644 index 00000000..36f366cb Binary files /dev/null and b/tests_zemu/snapshots/x-sign-update_vp/00008.png differ diff --git a/tests_zemu/snapshots/x-sign-update_vp/00009.png b/tests_zemu/snapshots/x-sign-update_vp/00009.png new file mode 100644 index 00000000..209a2616 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-update_vp/00009.png differ diff --git a/tests_zemu/snapshots/x-sign-update_vp/00010.png b/tests_zemu/snapshots/x-sign-update_vp/00010.png new file mode 100644 index 00000000..148305a0 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-update_vp/00010.png differ diff --git a/tests_zemu/snapshots/x-sign-update_vp/00011.png b/tests_zemu/snapshots/x-sign-update_vp/00011.png new file mode 100644 index 00000000..a1fa625f Binary files /dev/null and b/tests_zemu/snapshots/x-sign-update_vp/00011.png differ diff --git a/tests_zemu/snapshots/x-sign-update_vp/00012.png b/tests_zemu/snapshots/x-sign-update_vp/00012.png new file mode 100644 index 00000000..1e4be699 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-update_vp/00012.png differ diff --git a/tests_zemu/snapshots/x-sign-update_vp/00013.png b/tests_zemu/snapshots/x-sign-update_vp/00013.png new file mode 100644 index 00000000..8d9abd01 Binary files /dev/null and b/tests_zemu/snapshots/x-sign-update_vp/00013.png differ diff --git a/tests_zemu/tests/transactions.test.ts b/tests_zemu/tests/transactions.test.ts index e52d5a20..783a5af4 100644 --- a/tests_zemu/tests/transactions.test.ts +++ b/tests_zemu/tests/transactions.test.ts @@ -25,23 +25,35 @@ const leb = require('leb128') import ed25519 from 'ed25519-supercop' -function hashSignatureSec(pubkey: Buffer, salt: Buffer, hashes: Buffer[], signature: Buffer | null, prefix: Uint8Array | null) { +function hashSignatureSec(pubkeys: Buffer[], salt: Buffer, hashes: { [index: number]: Buffer }, indices: 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(new Uint8Array([indices.length, 0, 0, 0])); + for (let i = 0; i < (indices.length); i ++) { + hash.update(Buffer.from(hashes[indices[i]])); } - hash.update(pubkey); + // Signer::PubKeys + hash.update(new Uint8Array([0x01])); + // Vec + // u32 representing length + hash.update(new Uint8Array([pubkeys.length, 0, 0, 0])); + for (let i = 0; i < (pubkeys.length); i ++) { + // common::PublicKey + hash.update(Buffer.from(pubkeys[i])); + } + // BTreeMap if(signature != null) { - hash.update(new Uint8Array([0x01])); + // u32 representing length + hash.update(new Uint8Array([1, 0, 0, 0])); + // u8 representing key + hash.update(new Uint8Array([0x00])); + // common::Signature hash.update(signature); } else { - hash.update(new Uint8Array([0x00])); + // u32 representing length + hash.update(new Uint8Array([0, 0, 0, 0])); } return Buffer.from(hash.array()); } @@ -49,54 +61,84 @@ function hashSignatureSec(pubkey: Buffer, salt: Buffer, hashes: Buffer[], signat const TEST_DATA = [ { 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'), + blob: Buffer.from('1e0000006532652d746573742e3034666165323161626338663330613866653336640023000000323032332d31302d32345431323a31363a30332e3531373433363135372b30303a3030ddc8e7f3a1463df54faae663873d8f46ca67d90a50eb6cace2cf44b707cba76addd167e7c54f7cb24c7c8231df0487b49d8fbfd5dfc51065406b50d2bbd8bf3e010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e600995c47158272b094640f33e1be2e8ef48715ecce0e1307d4c7a71045e35d6a430000000000000000204e00000000000000000200000002e9099d618b01000000bec1efd37d88876be4176d1afc0b6fa784901efe18cf9ec30293313be855d81400e9099d618b0100004b00000000c3b0c3ac7ae423be6dfb63ef2c73ec5b2d30841800e9a435000000000000000000000000000000000000000000000000000000000100b9e8b32a0b14aa741134a95e0468588dd217645e', 'hex'), + sectionHashes: { + 0: Buffer.from('5495ee5290ec771bb111b11eac340fb2ddfb09f332b13bfde7935096267c0e42', 'hex'), + 1: Buffer.from('ddc8e7f3a1463df54faae663873d8f46ca67d90a50eb6cace2cf44b707cba76a', 'hex'), + 2: Buffer.from('ddd167e7c54f7cb24c7c8231df0487b49d8fbfd5dfc51065406b50d2bbd8bf3e', 'hex'), + 0xff: Buffer.from('bfb8dee7cfb2d4887fa3ec8b5e2e928fd3b00c371c5ee0938f48557046a80613', 'hex'), + } as { [index: number]: Buffer }, }, { 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'), + blob: Buffer.from('1e0000006532652d746573742e3034666165323161626338663330613866653336640023000000323032332d31302d32345431323a31373a34382e3234383538343131322b30303a30306c6e75999a324bd173b8223b184cce6ca77340e85c0bb022265c59f91b3c668083a55ca63ce2852be2ccc59f96c54848458bd816dc651d3df69c35a5322cf748010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e60077ba64a6385ce0635625d4137596d969c67d02afcc7766dbb5339efd1296f6e30100000000000000204e0000000000000000030000000102a39e618b010000003b9e4d777c9420bbbf730e1549252f1a091bc01535eb1f37e7a7e3d1bace75760202a39e618b01000000f0061157377454c314ad7c9e3855221d49da7425ffef6db6b7d28f52424232810002a39e618b01000046000000010000000077ba64a6385ce0635625d4137596d969c67d02afcc7766dbb5339efd1296f6e3ee7216f059d2a506354e93aff15d52abe7275c112b64e6115e7f114239b87e8101', 'hex'), + sectionHashes: { + 0: Buffer.from('205362a9856e1b47425c27602098d54319169b6cdc5cba92d1054f0265b2ff8a', 'hex'), + 1: Buffer.from('ee7216f059d2a506354e93aff15d52abe7275c112b64e6115e7f114239b87e81', 'hex'), + 2: Buffer.from('6c6e75999a324bd173b8223b184cce6ca77340e85c0bb022265c59f91b3c6680', 'hex'), + 3: Buffer.from('83a55ca63ce2852be2ccc59f96c54848458bd816dc651d3df69c35a5322cf748', 'hex'), + 0xff: Buffer.from('092448af3b34ec3251a2d469a7d0ad2d8f4d44c9d6f8fb957dde2b09109e5244', 'hex'), + } as { [index: number]: Buffer }, }, { 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'), + blob: Buffer.from('1e0000006532652d746573742e3034666165323161626338663330613866653336640023000000323032332d31302d32345431323a31363a32302e3633353230303237332b30303a30300055805d692db09e0543ab4559d03867af8666e388a1236c2987c542341f2a70b35c02db7d217a355f8f1024de219cf3d9cf0dba1201daf788a2a079d5622606010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e60077ba64a6385ce0635625d4137596d969c67d02afcc7766dbb5339efd1296f6e30100000000000000204e00000000000000000400000001c94c9d618b010000007e68fb834a7772c82a312c4e6e519d97282cce39507950c35fe89f1c347a4a2e01c94c9d618b010000009ebd95ba9479625043b113445c949d78116a77e86011eec60abbfb41b89f880302de4c9d618b010000006f63dc0ee534b74cec728b9f76dae383388f7306df66b827fa940e210a7c11ca00de4c9d618b0100007000000000649fec9556db0c4a16c5d8bf6b5ab91ae6a66f84e2bf1e8245b0eedbbcbf607c0075bca173cf45b6945d0ee4a9985e55aaa7aea6bb000149510642ab1a0b799b3f9afbba9f648a9d0b8c303277c4168cee973b66e082640c0000000000000018000000000000001e00000000000000', 'hex'), + sectionHashes: { + 0: Buffer.from('4c33e85bb44229a5961683873e4dc8bb0dd6cad7002eee26da213218004e8a29', 'hex'), + 1: Buffer.from('649fec9556db0c4a16c5d8bf6b5ab91ae6a66f84e2bf1e8245b0eedbbcbf607c', 'hex'), + 2: Buffer.from('49510642ab1a0b799b3f9afbba9f648a9d0b8c303277c4168cee973b66e08264', 'hex'), + 3: Buffer.from('0055805d692db09e0543ab4559d03867af8666e388a1236c2987c542341f2a70', 'hex'), + 4: Buffer.from('b35c02db7d217a355f8f1024de219cf3d9cf0dba1201daf788a2a079d5622606', 'hex'), + 0xff: Buffer.from('e41b5eb5e4e94c8e973848ae21165821a98e9425f7b7270a880fb6f358a5b970', 'hex'), + } as { [index: number]: Buffer }, }, { 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'), + blob: Buffer.from('1e0000006532652d746573742e3034666165323161626338663330613866653336640023000000323032332d31302d32345431323a31373a33362e3637333934383336332b30303a3030d856401c57c3756bd9b7a8596b30bdbbdcd84ea1369082709085945a75593266bf1978c1d2c865cbd998c85270a41e91bf38370cdce5645c58b3936b29896733010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e600995c47158272b094640f33e1be2e8ef48715ecce0e1307d4c7a71045e35d6a430100000000000000204e00000000000000000300000001a1759e618b010000003b9e4d777c9420bbbf730e1549252f1a091bc01535eb1f37e7a7e3d1bace757602a2759e618b01000000b3b48166976e0259db4eab1e72ace4c92368b34fd5a06f7ccd41b4ae4c88ca1d00a2759e618b0100006e0100000100000000995c47158272b094640f33e1be2e8ef48715ecce0e1307d4c7a71045e35d6a430100f773c1694fd69220bf1a6b71a6ae2af2e6944d0f43246c917a5e8c81b2afde2003bcd7fe0aaa2e25be62fa534195793f5b51d978e04d80e6cbf5381a23b2fedd6f0326db2fb8ef5fef81161189633a4a733a11780b9c010ce9eed3878d02234f986a003828f31d0f9a627e1fb95a39f85055e06118b646a4a37d95c0c2b930dc411d80600000003fdf4787a943f55e530fe56d7004f8597c02b6ad5e468552fc1a9d6b670d0070cf8c4c3dd7e1353972a2c3b5249cb01192d884219de86e801744431eff2f32ffc0380e6eb09360046bc3bd0be237f22716d372b9792462d2b530872a35df0c8200743ba40b00000000000000000000000000000000000000000000000000000000e40b5402000000000000000000000000000000000000000000000000000000b94b385c5bb780bccb7ed816a59209963ba92aeb37ff17bd17bac5439aa28bdf', 'hex'), + sectionHashes: { + 0: Buffer.from('0b9772159d5a6760afad9c18e1837d7bdcb33428c886739bb47f4113c9ff8808', 'hex'), + 1: Buffer.from('b94b385c5bb780bccb7ed816a59209963ba92aeb37ff17bd17bac5439aa28bdf', 'hex'), + 2: Buffer.from('d856401c57c3756bd9b7a8596b30bdbbdcd84ea1369082709085945a75593266', 'hex'), + 3: Buffer.from('bf1978c1d2c865cbd998c85270a41e91bf38370cdce5645c58b3936b29896733', 'hex'), + 0xff: Buffer.from('2635e4198dd017e15766f80a76fd701fbe22409045ee30215adc762ed19f1ab6', 'hex'), + } as { [index: number]: Buffer }, }, { 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'), + blob: Buffer.from('1e0000006532652d746573742e3034666165323161626338663330613866653336640023000000323032332d31302d32345431323a31373a32352e3833383135313936372b30303a303070b5e945f66af7c2ded580ce153616710e6e79bf7d30c69d0915e8c18d3f2bf37b5e32353abaa027c09297bf112b0722bd297c75dca19ccf9e958d8372be0440010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e600995c47158272b094640f33e1be2e8ef48715ecce0e1307d4c7a71045e35d6a430100000000000000204e000000000000000003000000017f4b9e618b010000003b9e4d777c9420bbbf730e1549252f1a091bc01535eb1f37e7a7e3d1bace7576027f4b9e618b01000000c3e25b73b94a226c3e9a5990fb91864c1515cf2bcb8e28e4b3e403c41a37093200804b9e618b0100003b00000000b9e8b32a0b14aa741134a95e0468588dd217645e01e666a12812cd9f8a2bd38973db21836fa6eeab3a915223f3e3ae3441a87369230000000000', 'hex'), + sectionHashes: { + 0: Buffer.from('cc725ee2571dda7143662accd8cb6685c45ab704891f5aa1046a8ad7f4ba2f81', 'hex'), + 1: Buffer.from('e666a12812cd9f8a2bd38973db21836fa6eeab3a915223f3e3ae3441a8736923', 'hex'), + 2: Buffer.from('70b5e945f66af7c2ded580ce153616710e6e79bf7d30c69d0915e8c18d3f2bf3', 'hex'), + 3: Buffer.from('7b5e32353abaa027c09297bf112b0722bd297c75dca19ccf9e958d8372be0440', 'hex'), + 0xff: Buffer.from('8f36472221e8257cbca0093c8ffa50f5d209445b650351030f34d32c678610d4', 'hex'), + } as { [index: number]: Buffer }, + }, + { + name: 'multisig_pubkeys', + blob: Buffer.from('1e0000006532652d746573742e3034666165323161626338663330613866653336640023000000323032332d31302d32345431323a31363a32302e3633353230303237332b30303a30300055805d692db09e0543ab4559d03867af8666e388a1236c2987c542341f2a70b35c02db7d217a355f8f1024de219cf3d9cf0dba1201daf788a2a079d5622606010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e60077ba64a6385ce0635625d4137596d969c67d02afcc7766dbb5339efd1296f6e30100000000000000204e00000000000000000500000001c94c9d618b010000007e68fb834a7772c82a312c4e6e519d97282cce39507950c35fe89f1c347a4a2e01c94c9d618b010000009ebd95ba9479625043b113445c949d78116a77e86011eec60abbfb41b89f880302de4c9d618b010000006f63dc0ee534b74cec728b9f76dae383388f7306df66b827fa940e210a7c11ca00de4c9d618b0100007000000000649fec9556db0c4a16c5d8bf6b5ab91ae6a66f84e2bf1e8245b0eedbbcbf607c0075bca173cf45b6945d0ee4a9985e55aaa7aea6bb000149510642ab1a0b799b3f9afbba9f648a9d0b8c303277c4168cee973b66e082640c0000000000000018000000000000001e000000000000000301000000e41b5eb5e4e94c8e973848ae21165821a98e9425f7b7270a880fb6f358a5b970010100000000d2bbc65a45539c4dc73fd03f896616e56ec326ae8e7f9de08bd4efcc3a506cb8010000000000b038cd9cdbf78dc239c5479b4cf0e00b8135600e308f51b3f2a2bf4efa25264925c2e881a76eac35f99fd918ee2d7b22d74bf11c18b0527519cbe5e1d208f203', 'hex'), + sectionHashes: { + 0: Buffer.from('4c33e85bb44229a5961683873e4dc8bb0dd6cad7002eee26da213218004e8a29', 'hex'), + 1: Buffer.from('649fec9556db0c4a16c5d8bf6b5ab91ae6a66f84e2bf1e8245b0eedbbcbf607c', 'hex'), + 2: Buffer.from('49510642ab1a0b799b3f9afbba9f648a9d0b8c303277c4168cee973b66e08264', 'hex'), + 3: Buffer.from('0055805d692db09e0543ab4559d03867af8666e388a1236c2987c542341f2a70', 'hex'), + 4: Buffer.from('b35c02db7d217a355f8f1024de219cf3d9cf0dba1201daf788a2a079d5622606', 'hex'), + 5: Buffer.from('d6696623fc2de31730650870dd25ba2d8ba3d161c130294b9ad3640eda9a5d0b', 'hex'), + 0xff: Buffer.from('e41b5eb5e4e94c8e973848ae21165821a98e9425f7b7270a880fb6f358a5b970', 'hex'), + } as { [index: number]: Buffer }, + }, + { + name: 'multisig_address', + blob: Buffer.from('1e0000006532652d746573742e3034666165323161626338663330613866653336640023000000323032332d31302d32345431323a31363a32302e3633353230303237332b30303a30300055805d692db09e0543ab4559d03867af8666e388a1236c2987c542341f2a70b35c02db7d217a355f8f1024de219cf3d9cf0dba1201daf788a2a079d5622606010100000000000000000000000000000000000000000000000000000000000000004b88fb913a0766e30a00b2fb8aa2949a710e24e60077ba64a6385ce0635625d4137596d969c67d02afcc7766dbb5339efd1296f6e30100000000000000204e00000000000000000500000001c94c9d618b010000007e68fb834a7772c82a312c4e6e519d97282cce39507950c35fe89f1c347a4a2e01c94c9d618b010000009ebd95ba9479625043b113445c949d78116a77e86011eec60abbfb41b89f880302de4c9d618b010000006f63dc0ee534b74cec728b9f76dae383388f7306df66b827fa940e210a7c11ca00de4c9d618b0100007000000000649fec9556db0c4a16c5d8bf6b5ab91ae6a66f84e2bf1e8245b0eedbbcbf607c0075bca173cf45b6945d0ee4a9985e55aaa7aea6bb000149510642ab1a0b799b3f9afbba9f648a9d0b8c303277c4168cee973b66e082640c0000000000000018000000000000001e000000000000000301000000e41b5eb5e4e94c8e973848ae21165821a98e9425f7b7270a880fb6f358a5b970000030b32c33b5ddd220997c12bb0147165a9f7aa6c5010000000000b038cd9cdbf78dc239c5479b4cf0e00b8135600e308f51b3f2a2bf4efa25264925c2e881a76eac35f99fd918ee2d7b22d74bf11c18b0527519cbe5e1d208f203', 'hex'), + sectionHashes: { + 0: Buffer.from('4c33e85bb44229a5961683873e4dc8bb0dd6cad7002eee26da213218004e8a29', 'hex'), + 1: Buffer.from('649fec9556db0c4a16c5d8bf6b5ab91ae6a66f84e2bf1e8245b0eedbbcbf607c', 'hex'), + 2: Buffer.from('49510642ab1a0b799b3f9afbba9f648a9d0b8c303277c4168cee973b66e08264', 'hex'), + 3: Buffer.from('0055805d692db09e0543ab4559d03867af8666e388a1236c2987c542341f2a70', 'hex'), + 4: Buffer.from('b35c02db7d217a355f8f1024de219cf3d9cf0dba1201daf788a2a079d5622606', 'hex'), + 5: Buffer.from('d953f2b8f418f44360b13b17e4f85710a84131180492033a0ea5b2231766d441', 'hex'), + 0xff: Buffer.from('e41b5eb5e4e94c8e973848ae21165821a98e9425f7b7270a880fb6f358a5b970', 'hex'), + } as { [index: number]: Buffer }, }, ] @@ -127,14 +169,15 @@ describe.each(models)('Transactions', function (m) { expect(signature.pubkey).toEqual(resp_addr.publicKey); // Verify raw signature - const unsignedRawSigHash = hashSignatureSec(signature.pubkey, signature.raw_salt, data.sectionHashes, null, null) + const unsignedRawSigHash = hashSignatureSec([], signature.raw_salt, data.sectionHashes, signature.raw_indices, 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 rawHash: Buffer = hashSignatureSec([signature.pubkey], signature.raw_salt, data.sectionHashes, signature.raw_indices, signature.raw_signature, prefix); + const tmpHashes = {...data.sectionHashes}; + tmpHashes[Object.keys(tmpHashes).length - 1] = rawHash; + const unsignedWrapperSigHash = hashSignatureSec([], signature.wrapper_salt, tmpHashes, signature.wrapper_indices, null, null); const wrapperSig = ed25519.verify(signature.wrapper_signature.subarray(1), unsignedWrapperSigHash, resp_addr.publicKey.subarray(1)); expect(wrapperSig && rawSig).toEqual(true)