diff --git a/.vscode/settings.json b/.vscode/settings.json
index c4ca565c..e7ce3f8a 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -1,7 +1,14 @@
{
"files.associations": {
"*.h": "c",
- "random": "c"
+ "random": "c",
+ "ratio": "c",
+ "system_error": "c",
+ "array": "c",
+ "functional": "c",
+ "tuple": "c",
+ "type_traits": "c",
+ "utility": "c"
},
"C_Cpp.clang_format_path": "/usr/bin/clang-format",
"editor.formatOnSave": true
diff --git a/Makefile b/Makefile
index cb0e71aa..eff08a50 100755
--- a/Makefile
+++ b/Makefile
@@ -22,8 +22,8 @@ include $(BOLOS_SDK)/Makefile.defines
APPNAME = Stellar
APPVERSION_M=5
-APPVERSION_N=0
-APPVERSION_P=3
+APPVERSION_N=1
+APPVERSION_P=0
APPVERSION=$(APPVERSION_M).$(APPVERSION_N).$(APPVERSION_P)
ifeq ($(TARGET_NAME), TARGET_NANOS)
diff --git a/docs/COMMANDS.md b/docs/COMMANDS.md
index 77baeb40..ada0aa31 100644
--- a/docs/COMMANDS.md
+++ b/docs/COMMANDS.md
@@ -65,6 +65,20 @@
| ----------------------- | ------ | ---------------- |
| 64 | 0x9000 | `signature (64)` |
+## INS_SIGN_SOROBAN_AUTHORATION
+
+### Command
+
+| CLA | INS | P1 | P2 | Lc | CData |
+| ---- | ---- | ---------------------------------- | ---------------------------- | ----------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
+| 0xE0 | 0x0A | 0x00 (first)
0x80 (not_first) | 0x00 (last)
0x80 (more) | 1 + 4n + k
Only the first data chunk contains bip32 path data | `len(bip32_path) (1)` \|\|
`bip32_path{1} (4)` \|\|
`...` \|\|
`bip32_path{n} (4)` \|\|
`hash_id_preimage_chunk(k)` |
+
+### Response
+
+| Response length (bytes) | SW | RData |
+| ----------------------- | ------ | ---------------- |
+| 64 | 0x9000 | `signature (64)` |
+
## Status Words
| SW | SW name | Description |
@@ -76,6 +90,7 @@
| 0x6C24 | `SW_UNKNOWN_OP` | Unknown Stellar operation |
| 0x6C25 | `SW_UNKNOWN_ENVELOPE_TYPE` | Unknown Stellar envelope type |
| 0x6C66 | `SW_TX_HASH_SIGNING_MODE_NOT_ENABLED` | Hash signing model not enabled |
+| 0x6C66 | `SW_CUSTOM_CONTRACT_MODE_NOT_ENABLED` | Custom contract model not enabled |
| 0x6D00 | `SW_INS_NOT_SUPPORTED` | No command exists with `INS` |
| 0x6E00 | `SW_CLA_NOT_SUPPORTED` | Bad `CLA` used for this application |
| 0xB000 | `SW_WRONG_RESPONSE_LENGTH` | Wrong response length (buffer too small or too big) |
diff --git a/release-notes.md b/release-notes.md
index 24d964dd..23bf1a29 100644
--- a/release-notes.md
+++ b/release-notes.md
@@ -1,5 +1,12 @@
# Release Notes
+## v5.1.0
+
+### Updated
+- Add support for Stellar Soroban.
+- Fix some bugs.
+- Remove the soon-to-be-deprecated SDK calls.
+
## v4.0.0
### Updated
diff --git a/src/apdu/dispatcher.c b/src/apdu/dispatcher.c
index bb95c701..80c45b8d 100644
--- a/src/apdu/dispatcher.c
+++ b/src/apdu/dispatcher.c
@@ -74,8 +74,21 @@ int apdu_dispatcher(const command_t *cmd) {
buf.ptr = cmd->data;
buf.size = cmd->lc;
buf.offset = 0;
-
return handler_sign_tx(&buf, !cmd->p1, (bool) (cmd->p2 & P2_MORE));
+ case INS_SIGN_SOROBAN_AUTHORATION:
+ if ((cmd->p1 != P1_FIRST && cmd->p1 != P1_MORE) ||
+ (cmd->p2 != P2_LAST && cmd->p2 != P2_MORE)) {
+ return io_send_sw(SW_WRONG_P1P2);
+ }
+
+ if (!cmd->data) {
+ return io_send_sw(SW_WRONG_DATA_LENGTH);
+ }
+
+ buf.ptr = cmd->data;
+ buf.size = cmd->lc;
+ buf.offset = 0;
+ return handle_sign_soroban_authorization(&buf, !cmd->p1, (bool) (cmd->p2 & P2_MORE));
default:
return io_send_sw(SW_INS_NOT_SUPPORTED);
}
diff --git a/src/crypto.c b/src/crypto.c
index 47e94d71..5fbd71b6 100644
--- a/src/crypto.c
+++ b/src/crypto.c
@@ -26,36 +26,28 @@
int crypto_derive_private_key(cx_ecfp_private_key_t *private_key,
const uint32_t *bip32_path,
uint8_t bip32_path_len) {
- uint8_t raw_private_key[RAW_ED25519_PRIVATE_KEY_SIZE] = {0};
- int error = 0;
+ uint8_t raw_private_key[64] = {0};
+ cx_err_t error = CX_OK;
- BEGIN_TRY {
- TRY {
- // derive the seed with bip32_path
- os_perso_derive_node_with_seed_key(HDW_ED25519_SLIP10,
- CX_CURVE_Ed25519,
- bip32_path,
- bip32_path_len,
- raw_private_key,
- NULL,
- (unsigned char *) STELLAR_SEED_KEY,
- sizeof(STELLAR_SEED_KEY));
- // new private_key from raw
- cx_ecfp_init_private_key(CX_CURVE_Ed25519,
- raw_private_key,
- sizeof(raw_private_key),
- private_key);
- }
- CATCH_OTHER(e) {
- error = e;
- }
- FINALLY {
- explicit_bzero(&raw_private_key, sizeof(raw_private_key));
- }
- }
- END_TRY;
+ // derive the seed with bip32_path
+ CX_CHECK(os_derive_bip32_with_seed_no_throw(HDW_ED25519_SLIP10,
+ CX_CURVE_Ed25519,
+ bip32_path,
+ bip32_path_len,
+ raw_private_key,
+ NULL,
+ (unsigned char *) STELLAR_SEED_KEY,
+ sizeof(STELLAR_SEED_KEY)));
+ // new private_key from raw
+ CX_CHECK(cx_ecfp_init_private_key_no_throw(CX_CURVE_Ed25519, raw_private_key, 32, private_key));
- return error;
+end:
+ explicit_bzero(&raw_private_key, sizeof(raw_private_key));
+ if (error != CX_OK) {
+ explicit_bzero(private_key, sizeof(*private_key));
+ return -1;
+ }
+ return 0;
}
// converts little endian 32 byte public key to big endian 32 byte public key
@@ -71,12 +63,20 @@ void raw_public_key_le_to_be(cx_ecfp_public_key_t *public_key,
}
}
-void crypto_init_public_key(cx_ecfp_private_key_t *private_key,
- cx_ecfp_public_key_t *public_key,
- uint8_t raw_public_key[static RAW_ED25519_PUBLIC_KEY_SIZE]) {
+int crypto_init_public_key(cx_ecfp_private_key_t *private_key,
+ cx_ecfp_public_key_t *public_key,
+ uint8_t raw_public_key[static RAW_ED25519_PUBLIC_KEY_SIZE]) {
+ cx_err_t error = CX_OK;
+
// generate corresponding public key
- cx_ecfp_generate_pair(CX_CURVE_Ed25519, public_key, private_key, 1);
+ CX_CHECK(cx_ecfp_generate_pair_no_throw(CX_CURVE_Ed25519, public_key, private_key, 1));
+
+end:
+ if (error != CX_OK) {
+ return -1;
+ }
raw_public_key_le_to_be(public_key, raw_public_key);
+ return 0;
}
int crypto_sign_message(const uint8_t *message,
@@ -84,35 +84,28 @@ int crypto_sign_message(const uint8_t *message,
const uint8_t *signature,
uint8_t signature_len) {
cx_ecfp_private_key_t private_key = {0};
+ cx_err_t error = CX_OK;
// derive private key according to BIP32 path
- int error =
+ int ret =
crypto_derive_private_key(&private_key, G_context.bip32_path, G_context.bip32_path_len);
- if (error != 0) {
- return error;
+ if (ret != 0) {
+ return -1;
}
- BEGIN_TRY {
- TRY {
- cx_eddsa_sign(&private_key,
- CX_LAST,
- CX_SHA512,
- message,
- message_len,
- NULL,
- 0,
- (unsigned char *) signature,
- signature_len,
- NULL);
- PRINTF("Signature: %.*H\n", signature_len, signature);
- }
- CATCH_OTHER(e) {
- error = e;
- }
- FINALLY {
- explicit_bzero(&private_key, sizeof(private_key));
- }
+ CX_CHECK(cx_eddsa_sign_no_throw(&private_key,
+ CX_SHA512,
+ message,
+ message_len,
+ (unsigned char *) signature,
+ signature_len));
+ PRINTF("Signature: %.*H\n", signature_len, signature);
+
+end:
+ explicit_bzero(&private_key, sizeof(private_key));
+ if (error != CX_OK) {
+ PRINTF("In crypto_sign_message: ERROR %x \n", error);
+ return -1;
}
- END_TRY;
- return error;
-}
+ return 0;
+}
\ No newline at end of file
diff --git a/src/crypto.h b/src/crypto.h
index 04813a7e..69665b84 100644
--- a/src/crypto.h
+++ b/src/crypto.h
@@ -33,12 +33,12 @@ int crypto_derive_private_key(cx_ecfp_private_key_t *private_key,
* @param[out] raw_public_key
* Pointer to raw public key.
*
- * @throw INVALID_PARAMETER
+ * @return 0 on success, error number otherwise.
*
*/
-void crypto_init_public_key(cx_ecfp_private_key_t *private_key,
- cx_ecfp_public_key_t *public_key,
- uint8_t raw_public_key[static RAW_ED25519_PUBLIC_KEY_SIZE]);
+int crypto_init_public_key(cx_ecfp_private_key_t *private_key,
+ cx_ecfp_public_key_t *public_key,
+ uint8_t raw_public_key[static RAW_ED25519_PUBLIC_KEY_SIZE]);
/**
* Sign message.
@@ -49,4 +49,4 @@ void crypto_init_public_key(cx_ecfp_private_key_t *private_key,
int crypto_sign_message(const uint8_t *message,
uint8_t message_len,
const uint8_t *signature,
- uint8_t signature_len);
+ uint8_t signature_len);
\ No newline at end of file
diff --git a/src/handler/get_public_key.c b/src/handler/get_public_key.c
index 98dbcc2d..97cd1636 100644
--- a/src/handler/get_public_key.c
+++ b/src/handler/get_public_key.c
@@ -46,13 +46,14 @@ int handler_get_public_key(buffer_t *cdata, bool display) {
}
// derive private key according to BIP32 path
- int error =
- crypto_derive_private_key(&private_key, G_context.bip32_path, G_context.bip32_path_len);
- if (error != 0) {
- return io_send_sw(error);
+
+ if (crypto_derive_private_key(&private_key, G_context.bip32_path, G_context.bip32_path_len)) {
+ return io_send_sw(SW_INTERNAL_ERROR);
}
// generate corresponding public key
- crypto_init_public_key(&private_key, &public_key, G_context.raw_public_key);
+ if (crypto_init_public_key(&private_key, &public_key, G_context.raw_public_key)) {
+ return io_send_sw(SW_INTERNAL_ERROR);
+ };
// reset private key
explicit_bzero(&private_key, sizeof(private_key));
diff --git a/src/handler/handler.h b/src/handler/handler.h
index 940e77d1..7af0c121 100644
--- a/src/handler/handler.h
+++ b/src/handler/handler.h
@@ -55,3 +55,19 @@ int handler_sign_tx(buffer_t *cdata, bool is_first_chunk, bool more);
*
*/
int handler_sign_tx_hash(buffer_t *cdata);
+
+/**
+ * Handler for INS_SIGN_SOROBAN_AUTHORATION command. If successfully parse BIP32 path
+ * and soroban authorization, sign soroban authorization and send APDU response.
+ *
+ * @param[in,out] cdata
+ * Command data with BIP32 path and soroban authorization serialized.
+ * @param[in] is_first_chunk
+ * Is the first data chunk
+ * @param[in] more
+ * Whether more APDU chunk to be received or not.
+ *
+ * @return zero or positive integer if success, negative integer otherwise.
+ *
+ */
+int handle_sign_soroban_authorization(buffer_t *cdata, bool is_first_chunk, bool more);
\ No newline at end of file
diff --git a/src/handler/sign_soroban_authorization.c b/src/handler/sign_soroban_authorization.c
new file mode 100644
index 00000000..b102ac87
--- /dev/null
+++ b/src/handler/sign_soroban_authorization.c
@@ -0,0 +1,93 @@
+/*****************************************************************************
+ * Ledger Stellar App.
+ * (c) 2022 Ledger SAS.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *****************************************************************************/
+
+#include "./handler.h"
+#include "../globals.h"
+#include "../types.h"
+#include "../sw.h"
+#include "../send_response.h"
+#include "../crypto.h"
+#include "../ui/ui.h"
+#include "../swap/swap_lib_calls.h"
+#include "../swap/handle_swap_commands.h"
+#include "../transaction/transaction_parser.h"
+
+int handle_sign_soroban_authorization(buffer_t *cdata, bool is_first_chunk, bool more) {
+ if (is_first_chunk) {
+ explicit_bzero(&G_context, sizeof(G_context));
+ }
+
+ if (G_context.auth.raw_size + cdata->size > RAW_TX_MAX_SIZE) {
+ return io_send_sw(SW_WRONG_TX_LENGTH);
+ }
+
+ if (is_first_chunk) {
+ G_context.req_type = CONFIRM_SOROBAN_AUTHORATION;
+ G_context.state = STATE_NONE;
+
+ if (!buffer_read_u8(cdata, &G_context.bip32_path_len) ||
+ !buffer_read_bip32_path(cdata,
+ G_context.bip32_path,
+ (size_t) G_context.bip32_path_len)) {
+ return io_send_sw(SW_WRONG_DATA_LENGTH);
+ }
+ size_t data_length = cdata->size - cdata->offset;
+ memcpy(G_context.auth.raw, cdata->ptr + cdata->offset, data_length);
+ G_context.auth.raw_size += data_length;
+ } else {
+ if (G_context.req_type != CONFIRM_SOROBAN_AUTHORATION) {
+ return io_send_sw(SW_BAD_STATE);
+ }
+ memcpy(G_context.auth.raw + G_context.auth.raw_size, cdata->ptr, cdata->size);
+ G_context.auth.raw_size += cdata->size;
+ }
+
+ PRINTF("data size: %d\n", G_context.auth.raw_size);
+
+ if (more) {
+ return io_send_sw(SW_OK);
+ }
+
+ if (!parse_auth(G_context.auth.raw, G_context.auth.raw_size, &G_context.auth)) {
+ THROW(SW_TX_PARSING_FAIL);
+ }
+
+ G_context.state = STATE_PARSED;
+ PRINTF("auth parsed.\n");
+
+ cx_ecfp_private_key_t private_key = {0};
+ cx_ecfp_public_key_t public_key = {0};
+
+ // derive private key according to BIP32 path
+ if (crypto_derive_private_key(&private_key, G_context.bip32_path, G_context.bip32_path_len)) {
+ explicit_bzero(&private_key, sizeof(private_key));
+ return io_send_sw(SW_INTERNAL_ERROR);
+ }
+ // generate corresponding public key
+ if (crypto_init_public_key(&private_key, &public_key, G_context.raw_public_key)) {
+ return io_send_sw(SW_INTERNAL_ERROR);
+ }
+ // reset private key
+ explicit_bzero(&private_key, sizeof(private_key));
+
+ if (cx_hash_sha256(G_context.auth.raw, G_context.auth.raw_size, G_context.hash, HASH_SIZE) !=
+ HASH_SIZE) {
+ THROW(SW_TX_HASH_FAIL);
+ }
+
+ return ui_approve_soroban_auth_init();
+};
diff --git a/src/handler/sign_transaction.c b/src/handler/sign_transaction.c
index 81f03804..021f22f7 100644
--- a/src/handler/sign_transaction.c
+++ b/src/handler/sign_transaction.c
@@ -113,7 +113,7 @@ int handler_sign_tx(buffer_t *cdata, bool is_first_chunk, bool more) {
crypto_derive_private_key(&private_key, G_context.bip32_path, G_context.bip32_path_len);
if (error != 0) {
explicit_bzero(&private_key, sizeof(private_key));
- return io_send_sw(error);
+ return io_send_sw(SW_INTERNAL_ERROR);
}
// generate corresponding public key
crypto_init_public_key(&private_key, &public_key, G_context.raw_public_key);
diff --git a/src/handler/sign_transaction_hash.c b/src/handler/sign_transaction_hash.c
index 970c9a71..88ed8a6f 100644
--- a/src/handler/sign_transaction_hash.c
+++ b/src/handler/sign_transaction_hash.c
@@ -41,13 +41,14 @@ int handler_sign_tx_hash(buffer_t *cdata) {
}
// derive private key according to BIP32 path
- int error =
- crypto_derive_private_key(&private_key, G_context.bip32_path, G_context.bip32_path_len);
- if (error != 0) {
- return io_send_sw(error);
+ if (crypto_derive_private_key(&private_key, G_context.bip32_path, G_context.bip32_path_len)) {
+ return io_send_sw(SW_INTERNAL_ERROR);
}
// generate corresponding public key
- crypto_init_public_key(&private_key, &public_key, G_context.raw_public_key);
+ if (crypto_init_public_key(&private_key, &public_key, G_context.raw_public_key)) {
+ return io_send_sw(SW_INTERNAL_ERROR);
+ }
+
// reset private key
explicit_bzero(&private_key, sizeof(private_key));
diff --git a/src/main.c b/src/main.c
index b2a8e3cb..3599f593 100644
--- a/src/main.c
+++ b/src/main.c
@@ -156,7 +156,6 @@ void standalone_app_main() {
}
static void library_main_helper(struct libargs_s *args) {
- check_api_level(CX_COMPAT_APILEVEL);
PRINTF("Inside library \n");
switch (args->command) {
case CHECK_ADDRESS:
diff --git a/src/settings.h b/src/settings.h
index 2b42891c..41c8b954 100644
--- a/src/settings.h
+++ b/src/settings.h
@@ -24,7 +24,8 @@ extern const internal_storage_t N_storage_real;
// check a setting item
#define HAS_SETTING(k) ((N_settings & (1 << (k))) >> (k))
-#define S_HASH_SIGNING_ENABLED 0
-#define S_SEQUENCE_NUMBER_ENABLED 1
+#define S_HASH_SIGNING_ENABLED 0
+#define S_CUSTOM_CONTRACTS_ENABLED 1
+#define S_SEQUENCE_NUMBER_ENABLED 2
#define S_INITIALIZED 7
diff --git a/src/sw.h b/src/sw.h
index c9d267e7..9fc7e5d3 100644
--- a/src/sw.h
+++ b/src/sw.h
@@ -35,6 +35,11 @@
*/
#define SW_TX_HASH_SIGNING_MODE_NOT_ENABLED 0x6C66
+/**
+ * Status word for custom contract model not enabled.
+ */
+#define SW_CUSTOM_CONTRACT_MODE_NOT_ENABLED 0x6C67
+
/**
* Status word for unknown command with this INS.
*/
@@ -94,3 +99,8 @@
* Status word for success.
*/
#define SW_OK 0x9000
+
+/**
+ * Status word for internal error. (eg. crypto error)
+ */
+#define SW_INTERNAL_ERROR 0x7000
\ No newline at end of file
diff --git a/src/swap/handle_check_address.c b/src/swap/handle_check_address.c
index 7fdb1624..490c6638 100644
--- a/src/swap/handle_check_address.c
+++ b/src/swap/handle_check_address.c
@@ -30,13 +30,15 @@ int handle_check_address(const check_address_parameters_t* params) {
cx_ecfp_private_key_t privateKey;
cx_ecfp_public_key_t publicKey;
uint8_t stellar_publicKey[32];
- if (crypto_derive_private_key(&privateKey, bip32_path, bip32_path_length) != 0) {
+ if (crypto_derive_private_key(&privateKey, bip32_path, bip32_path_length)) {
explicit_bzero(&privateKey, sizeof(privateKey));
PRINTF("derive_private_key failed\n");
return 0;
}
- crypto_init_public_key(&privateKey, &publicKey, stellar_publicKey);
+ if (crypto_init_public_key(&privateKey, &publicKey, stellar_publicKey)) {
+ return 0;
+ }
explicit_bzero(&privateKey, sizeof(privateKey));
diff --git a/src/swap/handle_swap_sign_transaction.c b/src/swap/handle_swap_sign_transaction.c
index e3646599..33a61514 100644
--- a/src/swap/handle_swap_sign_transaction.c
+++ b/src/swap/handle_swap_sign_transaction.c
@@ -1,6 +1,7 @@
#include "os.h"
#include "ux.h"
#include "os_io_seproxyhal.h"
+#include
#include "./swap_lib_calls.h"
#include "handle_swap_commands.h"
diff --git a/src/transaction/transaction_formatter.c b/src/transaction/transaction_formatter.c
index 16cfb083..ee95543c 100644
--- a/src/transaction/transaction_formatter.c
+++ b/src/transaction/transaction_formatter.c
@@ -31,27 +31,6 @@
#include "../common/format.h"
#include "../transaction/transaction_parser.h"
-#define FORMATTER_CHECK(x) \
- { \
- if (!(x)) THROW(SW_TX_FORMATTING_FAIL); \
- }
-
-#define STRLCPY(dst, src, size) \
- { \
- size_t len = strlcpy(dst, src, size); \
- if (len >= size) { \
- THROW(SW_TX_FORMATTING_FAIL); \
- } \
- }
-
-#define STRLCAT(dst, src, size) \
- { \
- size_t len = strlcat(dst, src, size); \
- if (len >= size) { \
- THROW(SW_TX_FORMATTING_FAIL); \
- } \
- }
-
static const char *NETWORK_NAMES[3] = {"Public", "Testnet", "Unknown"};
char op_caption[OPERATION_CAPTION_MAX_LENGTH];
@@ -291,6 +270,9 @@ static void format_transaction_details(tx_ctx_t *tx_ctx) {
case ENVELOPE_TYPE_TX:
STRLCPY(G.ui.detail_caption, "Transaction", DETAIL_CAPTION_MAX_LENGTH);
break;
+ default:
+ THROW(SW_TX_FORMATTING_FAIL);
+ return;
}
STRLCPY(G.ui.detail_value, "Details", DETAIL_VALUE_MAX_LENGTH);
if (tx_ctx->tx_details.memo.type != MEMO_NONE) {
@@ -1619,6 +1601,184 @@ static void format_liquidity_pool_withdraw(tx_ctx_t *tx_ctx) {
push_to_formatter_stack(&format_liquidity_pool_withdraw_liquidity_pool_id);
}
+static void format_invoke_host_function_asset_approve_expiration_ledger(tx_ctx_t *tx_ctx) {
+ STRLCPY(G.ui.detail_caption, "Expiration Ledger", DETAIL_CAPTION_MAX_LENGTH);
+ FORMATTER_CHECK(print_uint(tx_ctx->tx_details.op_details.invoke_host_function_op
+ .invoke_contract_args.asset_approve.expiration_ledger,
+ G.ui.detail_value,
+ DETAIL_VALUE_MAX_LENGTH))
+ format_operation_source_prepare(tx_ctx);
+}
+
+static void format_invoke_host_function_asset_approve_amount(tx_ctx_t *tx_ctx) {
+ STRLCPY(G.ui.detail_caption, "Amount", DETAIL_CAPTION_MAX_LENGTH);
+ char tmp[DETAIL_VALUE_MAX_LENGTH];
+ explicit_bzero(tmp, DETAIL_VALUE_MAX_LENGTH);
+ FORMATTER_CHECK(print_amount(tx_ctx->tx_details.op_details.invoke_host_function_op
+ .invoke_contract_args.asset_approve.amount,
+ NULL,
+ tx_ctx->network,
+ tmp,
+ DETAIL_VALUE_MAX_LENGTH))
+ STRLCAT(tmp, " ", DETAIL_VALUE_MAX_LENGTH);
+ STRLCAT(tmp,
+ tx_ctx->tx_details.op_details.invoke_host_function_op.invoke_contract_args.asset_approve
+ .asset_code,
+ DETAIL_VALUE_MAX_LENGTH);
+ STRLCPY(G.ui.detail_value, tmp, DETAIL_VALUE_MAX_LENGTH);
+ push_to_formatter_stack(&format_invoke_host_function_asset_approve_expiration_ledger);
+}
+
+static void format_invoke_host_function_asset_approve_spender(tx_ctx_t *tx_ctx) {
+ STRLCPY(G.ui.detail_caption, "Spender", DETAIL_CAPTION_MAX_LENGTH);
+
+ FORMATTER_CHECK(print_sc_address(&tx_ctx->tx_details.op_details.invoke_host_function_op
+ .invoke_contract_args.asset_approve.spender,
+ G.ui.detail_value,
+ DETAIL_VALUE_MAX_LENGTH,
+ 0,
+ 0))
+ push_to_formatter_stack(&format_invoke_host_function_asset_approve_amount);
+}
+
+static void format_invoke_host_function_asset_approve_from(tx_ctx_t *tx_ctx) {
+ STRLCPY(G.ui.detail_caption, "From", DETAIL_CAPTION_MAX_LENGTH);
+
+ FORMATTER_CHECK(print_sc_address(&tx_ctx->tx_details.op_details.invoke_host_function_op
+ .invoke_contract_args.asset_approve.from,
+ G.ui.detail_value,
+ DETAIL_VALUE_MAX_LENGTH,
+ 0,
+ 0))
+ push_to_formatter_stack(&format_invoke_host_function_asset_approve_spender);
+}
+
+static void format_invoke_host_function_asset_transfer_to(tx_ctx_t *tx_ctx) {
+ STRLCPY(G.ui.detail_caption, "To", DETAIL_CAPTION_MAX_LENGTH);
+
+ FORMATTER_CHECK(print_sc_address(&tx_ctx->tx_details.op_details.invoke_host_function_op
+ .invoke_contract_args.asset_transfer.to,
+ G.ui.detail_value,
+ DETAIL_VALUE_MAX_LENGTH,
+ 0,
+ 0))
+ format_operation_source_prepare(tx_ctx);
+}
+
+static void format_invoke_host_function_asset_transfer_from(tx_ctx_t *tx_ctx) {
+ STRLCPY(G.ui.detail_caption, "From", DETAIL_CAPTION_MAX_LENGTH);
+
+ FORMATTER_CHECK(print_sc_address(&tx_ctx->tx_details.op_details.invoke_host_function_op
+ .invoke_contract_args.asset_transfer.from,
+ G.ui.detail_value,
+ DETAIL_VALUE_MAX_LENGTH,
+ 0,
+ 0))
+ push_to_formatter_stack(&format_invoke_host_function_asset_transfer_to);
+}
+
+static void format_invoke_host_function_asset_transfer_amount(tx_ctx_t *tx_ctx) {
+ STRLCPY(G.ui.detail_caption, "Transfer", DETAIL_CAPTION_MAX_LENGTH);
+ char tmp[DETAIL_VALUE_MAX_LENGTH];
+ explicit_bzero(tmp, DETAIL_VALUE_MAX_LENGTH);
+ FORMATTER_CHECK(print_amount(tx_ctx->tx_details.op_details.invoke_host_function_op
+ .invoke_contract_args.asset_transfer.amount,
+ NULL,
+ tx_ctx->network,
+ tmp,
+ DETAIL_VALUE_MAX_LENGTH))
+ STRLCAT(tmp, " ", DETAIL_VALUE_MAX_LENGTH);
+ STRLCAT(tmp,
+ tx_ctx->tx_details.op_details.invoke_host_function_op.invoke_contract_args
+ .asset_transfer.asset_code,
+ DETAIL_VALUE_MAX_LENGTH);
+ STRLCPY(G.ui.detail_value, tmp, DETAIL_VALUE_MAX_LENGTH);
+ push_to_formatter_stack(&format_invoke_host_function_asset_transfer_from);
+}
+
+static void format_invoke_host_function_unverified_contract_warning(tx_ctx_t *tx_ctx) {
+ STRLCPY(G.ui.detail_caption, "RISK WARNING", DETAIL_CAPTION_MAX_LENGTH);
+ STRLCPY(G.ui.detail_value,
+ "Unverified contract, will not display details",
+ DETAIL_VALUE_MAX_LENGTH);
+ format_operation_source_prepare(tx_ctx);
+}
+
+static void format_invoke_host_function_func_name(tx_ctx_t *tx_ctx) {
+ STRLCPY(G.ui.detail_caption, "Function", DETAIL_CAPTION_MAX_LENGTH);
+
+ memcpy(G.ui.detail_value,
+ tx_ctx->tx_details.op_details.invoke_host_function_op.invoke_contract_args.function_name
+ .text,
+ tx_ctx->tx_details.op_details.invoke_host_function_op.invoke_contract_args.function_name
+ .text_size);
+ G.ui.detail_value[tx_ctx->tx_details.op_details.invoke_host_function_op.invoke_contract_args
+ .function_name.text_size] = '\0';
+
+ switch (
+ tx_ctx->tx_details.op_details.invoke_host_function_op.invoke_contract_args.contract_type) {
+ case SOROBAN_CONTRACT_TYPE_UNVERIFIED:
+ push_to_formatter_stack(&format_invoke_host_function_unverified_contract_warning);
+ break;
+ case SOROBAN_CONTRACT_TYPE_ASSET_APPROVE:
+ push_to_formatter_stack(&format_invoke_host_function_asset_approve_from);
+ break;
+ case SOROBAN_CONTRACT_TYPE_ASSET_TRANSFER:
+ push_to_formatter_stack(&format_invoke_host_function_asset_transfer_amount);
+ break;
+ default:
+ THROW(SW_TX_FORMATTING_FAIL);
+ return;
+ }
+}
+
+static void format_invoke_host_function_contract_id(tx_ctx_t *tx_ctx) {
+ STRLCPY(G.ui.detail_caption, "Contract ID", DETAIL_CAPTION_MAX_LENGTH);
+
+ FORMATTER_CHECK(print_sc_address(
+ &tx_ctx->tx_details.op_details.invoke_host_function_op.invoke_contract_args.address,
+ G.ui.detail_value,
+ DETAIL_VALUE_MAX_LENGTH,
+ 0,
+ 0))
+ push_to_formatter_stack(&format_invoke_host_function_func_name);
+}
+
+static void format_invoke_host_function(tx_ctx_t *tx_ctx) {
+ switch (tx_ctx->tx_details.op_details.invoke_host_function_op.host_function_type) {
+ case HOST_FUNCTION_TYPE_INVOKE_CONTRACT:
+ STRLCPY(G.ui.detail_caption, "Soroban", DETAIL_CAPTION_MAX_LENGTH);
+ STRLCPY(G.ui.detail_value, "Invoke Smart Contract", DETAIL_VALUE_MAX_LENGTH);
+ push_to_formatter_stack(&format_invoke_host_function_contract_id);
+ break;
+ case HOST_FUNCTION_TYPE_CREATE_CONTRACT:
+ STRLCPY(G.ui.detail_caption, "Soroban", DETAIL_CAPTION_MAX_LENGTH);
+ STRLCPY(G.ui.detail_value, "Create Smart Contract", DETAIL_VALUE_MAX_LENGTH);
+ format_operation_source_prepare(tx_ctx);
+ break;
+ case HOST_FUNCTION_TYPE_UPLOAD_CONTRACT_WASM:
+ STRLCPY(G.ui.detail_caption, "Soroban", DETAIL_CAPTION_MAX_LENGTH);
+ STRLCPY(G.ui.detail_value, "Upload Smart Contract Wasm", DETAIL_VALUE_MAX_LENGTH);
+ format_operation_source_prepare(tx_ctx);
+ break;
+ default:
+ THROW(SW_TX_FORMATTING_FAIL);
+ return;
+ }
+}
+
+static void format_extend_footprint_ttl(tx_ctx_t *tx_ctx) {
+ STRLCPY(G.ui.detail_caption, "Soroban", DETAIL_CAPTION_MAX_LENGTH);
+ STRLCPY(G.ui.detail_value, "Extend Footprint TTL", DETAIL_VALUE_MAX_LENGTH);
+ format_operation_source_prepare(tx_ctx);
+}
+
+static void format_restore_footprint(tx_ctx_t *tx_ctx) {
+ STRLCPY(G.ui.detail_caption, "Soroban", DETAIL_CAPTION_MAX_LENGTH);
+ STRLCPY(G.ui.detail_value, "Restore Footprint", DETAIL_VALUE_MAX_LENGTH);
+ format_operation_source_prepare(tx_ctx);
+}
+
static const format_function_t formatters[] = {&format_create_account,
&format_payment,
&format_path_payment_strict_receive,
@@ -1642,7 +1802,10 @@ static const format_function_t formatters[] = {&format_create_account,
&format_clawback_claimable_balance,
&format_set_trust_line_flags,
&format_liquidity_pool_deposit,
- &format_liquidity_pool_withdraw};
+ &format_liquidity_pool_withdraw,
+ &format_invoke_host_function,
+ &format_extend_footprint_ttl,
+ &format_restore_footprint};
void format_confirm_operation(tx_ctx_t *tx_ctx) {
if (tx_ctx->tx_details.operations_count > 1) {
diff --git a/src/transaction/transaction_parser.c b/src/transaction/transaction_parser.c
index f9abe7d8..fccdda89 100644
--- a/src/transaction/transaction_parser.c
+++ b/src/transaction/transaction_parser.c
@@ -24,12 +24,15 @@
#include "../types.h"
#include "../sw.h"
#include "../common/buffer.h"
+#include "../settings.h"
#define PARSER_CHECK(x) \
{ \
if (!(x)) return false; \
}
+bool parse_scval(buffer_t *buffer);
+
/* SHA256("Public Global Stellar Network ; September 2015") */
static const uint8_t NETWORK_ID_PUBLIC_HASH[32] = {
0x7a, 0xc3, 0x39, 0x97, 0x54, 0x4e, 0x31, 0x75, 0xd2, 0x66, 0xbd, 0x02, 0x24, 0x39, 0xb2, 0x2c,
@@ -40,6 +43,59 @@ static const uint8_t NETWORK_ID_TEST_HASH[32] = {
0xce, 0xe0, 0x30, 0x2d, 0x59, 0x84, 0x4d, 0x32, 0xbd, 0xca, 0x91, 0x5c, 0x82, 0x03, 0xdd, 0x44,
0xb3, 0x3f, 0xbb, 0x7e, 0xdc, 0x19, 0x05, 0x1e, 0xa3, 0x7a, 0xbe, 0xdf, 0x28, 0xec, 0xd4, 0x72};
+static const contract_t SOROBAN_ASSET_CONTRACTS[SOROBAN_ASSET_CONTRACTS_NUM] = {
+ // XLM (testnet)
+ // CDLZFC3SYJYDZT7K67VZ75HPJVIEUVNIXF47ZG2FB2RMQQVU2HHGCYSC
+ {"XLM",
+ {
+ 0xd7, 0x92, 0x8b, 0x72, 0xc2, 0x70, 0x3c, 0xcf, 0xea, 0xf7, 0xeb,
+ 0x9f, 0xf4, 0xef, 0x4d, 0x50, 0x4a, 0x55, 0xa8, 0xb9, 0x79, 0xfc,
+ 0x9b, 0x45, 0x0e, 0xa2, 0xc8, 0x42, 0xb4, 0xd1, 0xce, 0x61,
+ }},
+ // CAS3J7GYLGXMF6TDJBBYYSE3HQ6BBSMLNUQ34T6TZMYMW2EVH34XOWMA
+ {"XLM",
+ {
+ 0x25, 0xb4, 0xfc, 0xd8, 0x59, 0xae, 0xc2, 0xfa, 0x63, 0x48, 0x43,
+ 0x8c, 0x48, 0x9b, 0x3c, 0x3c, 0x10, 0xc9, 0x8b, 0x6d, 0x21, 0xbe,
+ 0x4f, 0xd3, 0xcb, 0x30, 0xcb, 0x68, 0x95, 0x3e, 0xf9, 0x77,
+ }},
+ // CBZVSNVB55ANF24QVJL2K5QCLOAB6XITGTGXYEAF6NPTXYKEJUYQOHFC
+ {"yXLM",
+ {
+ 0x73, 0x59, 0x36, 0xa1, 0xef, 0x40, 0xd2, 0xeb, 0x90, 0xaa, 0x57,
+ 0xa5, 0x76, 0x02, 0x5b, 0x80, 0x1f, 0x5d, 0x13, 0x34, 0xcd, 0x7c,
+ 0x10, 0x05, 0xf3, 0x5f, 0x3b, 0xe1, 0x44, 0x4d, 0x31, 0x07,
+ }},
+ // CCW67TSZV3SSS2HXMBQ5JFGCKJNXKZM7UQUWUZPUTHXSTZLEO7SJMI75
+ {"USDC",
+ {
+ 0xad, 0xef, 0xce, 0x59, 0xae, 0xe5, 0x29, 0x68, 0xf7, 0x60, 0x61,
+ 0xd4, 0x94, 0xc2, 0x52, 0x5b, 0x75, 0x65, 0x9f, 0xa4, 0x29, 0x6a,
+ 0x65, 0xf4, 0x99, 0xef, 0x29, 0xe5, 0x64, 0x77, 0xe4, 0x96,
+ }},
+ // CDOFW7HNKLUZRLFZST4EW7V3AV4JI5IHMT6BPXXSY2IEFZ4NE5TWU2P4
+ {"yUSDC",
+ {
+ 0xdc, 0x5b, 0x7c, 0xed, 0x52, 0xe9, 0x98, 0xac, 0xb9, 0x94, 0xf8,
+ 0x4b, 0x7e, 0xbb, 0x05, 0x78, 0x94, 0x75, 0x07, 0x64, 0xfc, 0x17,
+ 0xde, 0xf2, 0xc6, 0x90, 0x42, 0xe7, 0x8d, 0x27, 0x67, 0x6a,
+ }},
+ // CAAV3AE3VKD2P4TY7LWTQMMJHIJ4WOCZ5ANCIJPC3NRSERKVXNHBU2W7
+ {"XRP",
+ {
+ 0x01, 0x5d, 0x80, 0x9b, 0xaa, 0x87, 0xa7, 0xf2, 0x78, 0xfa, 0xed,
+ 0x38, 0x31, 0x89, 0x3a, 0x13, 0xcb, 0x38, 0x59, 0xe8, 0x1a, 0x24,
+ 0x25, 0xe2, 0xdb, 0x63, 0x22, 0x45, 0x55, 0xbb, 0x4e, 0x1a,
+ }},
+ // CAUIKL3IYGMERDRUN6YSCLWVAKIFG5Q4YJHUKM4S4NJZQIA3BAS6OJPK
+ {"AQUA",
+ {
+ 0x28, 0x85, 0x2f, 0x68, 0xc1, 0x98, 0x48, 0x8e, 0x34, 0x6f, 0xb1,
+ 0x21, 0x2e, 0xd5, 0x02, 0x90, 0x53, 0x76, 0x1c, 0xc2, 0x4f, 0x45,
+ 0x33, 0x92, 0xe3, 0x53, 0x98, 0x20, 0x1b, 0x08, 0x25, 0xe7,
+ }},
+};
+
static bool buffer_advance(buffer_t *buffer, size_t num_bytes) {
return buffer_seek_cur(buffer, num_bytes);
}
@@ -443,6 +499,10 @@ bool parse_path_payment_strict_receive(buffer_t *buffer, path_payment_strict_rec
if (path_len > PATH_PAYMENT_MAX_PATH_LENGTH) {
return false;
}
+ for (uint32_t i = 0; i < path_len; i++) {
+ asset_t tmp_asset;
+ PARSER_CHECK(parse_asset(buffer, &tmp_asset))
+ }
return true;
}
@@ -613,6 +673,10 @@ bool parse_path_payment_strict_send(buffer_t *buffer, path_payment_strict_send_o
if (path_len > PATH_PAYMENT_MAX_PATH_LENGTH) {
return false;
}
+ for (uint32_t i = 0; i < path_len; i++) {
+ asset_t tmp_asset;
+ PARSER_CHECK(parse_asset(buffer, &tmp_asset))
+ }
return true;
}
@@ -711,6 +775,139 @@ bool parse_begin_sponsoring_future_reserves(buffer_t *buffer,
return true;
}
+bool parse_sc_address(buffer_t *buffer, sc_address_t *sc_address) {
+ uint32_t address_type;
+ PARSER_CHECK(buffer_read32(buffer, &address_type))
+ sc_address->type = address_type;
+
+ switch (sc_address->type) {
+ case SC_ADDRESS_TYPE_ACCOUNT:
+ PARSER_CHECK(parse_account_id(buffer, &sc_address->address))
+ return true;
+ case SC_ADDRESS_TYPE_CONTRACT:
+ PARSER_CHECK(buffer_can_read(buffer, 32))
+ sc_address->address = buffer->ptr + buffer->offset;
+ buffer->offset += HASH_SIZE;
+ return true;
+ default:
+ return false;
+ }
+}
+
+bool parse_scval_vec(buffer_t *buffer) {
+ uint32_t vec_len;
+ PARSER_CHECK(buffer_read32(buffer, &vec_len))
+ for (uint32_t i = 0; i < vec_len; i++) {
+ PARSER_CHECK(parse_scval(buffer))
+ }
+ return true;
+}
+
+bool parse_scval_map(buffer_t *buffer) {
+ uint32_t map_len;
+ PARSER_CHECK(buffer_read32(buffer, &map_len))
+ for (uint32_t i = 0; i < map_len; i++) {
+ PARSER_CHECK(parse_scval(buffer))
+ PARSER_CHECK(parse_scval(buffer))
+ }
+ return true;
+}
+
+bool parse_contract_executable(buffer_t *buffer) {
+ uint32_t type;
+ PARSER_CHECK(buffer_read32(buffer, &type))
+ switch (type) {
+ case CONTRACT_EXECUTABLE_WASM:
+ PARSER_CHECK(buffer_advance(buffer, 32)) // code
+ break;
+ case CONTRACT_EXECUTABLE_STELLAR_ASSET:
+ // void
+ break;
+ default:
+ return false;
+ }
+ return true;
+}
+
+bool parse_scval(buffer_t *buffer) {
+ uint32_t sc_type;
+ PARSER_CHECK(buffer_read32(buffer, &sc_type))
+
+ switch (sc_type) {
+ case SCV_BOOL:
+ PARSER_CHECK(buffer_advance(buffer, 4))
+ break;
+ case SCV_VOID:
+ break; // void
+ case SCV_ERROR:
+ return false; // not implemented
+ case SCV_U32:
+ case SCV_I32:
+ PARSER_CHECK(buffer_advance(buffer, 4))
+ break;
+ case SCV_U64:
+ case SCV_I64:
+ case SCV_TIMEPOINT:
+ case SCV_DURATION:
+ PARSER_CHECK(buffer_advance(buffer, 8))
+ break;
+ case SCV_U128:
+ case SCV_I128:
+ PARSER_CHECK(buffer_advance(buffer, 16))
+ break;
+ case SCV_U256:
+ case SCV_I256:
+ PARSER_CHECK(buffer_advance(buffer, 32))
+ break;
+ case SCV_BYTES:
+ case SCV_STRING:
+ case SCV_SYMBOL: {
+ uint32_t data_len;
+ PARSER_CHECK(buffer_read32(buffer, &data_len))
+ PARSER_CHECK(buffer_advance(buffer, num_bytes(data_len)))
+ break;
+ }
+ case SCV_VEC: {
+ bool vec_exists;
+ PARSER_CHECK(buffer_read_bool(buffer, &vec_exists))
+ if (vec_exists) {
+ parse_scval_vec(buffer);
+ }
+ break;
+ }
+ case SCV_MAP: {
+ bool map_exists;
+ PARSER_CHECK(buffer_read_bool(buffer, &map_exists))
+ if (map_exists) {
+ parse_scval_map(buffer);
+ }
+ break;
+ }
+ case SCV_ADDRESS: {
+ sc_address_t sc_address;
+ PARSER_CHECK(parse_sc_address(buffer, &sc_address));
+ break;
+ }
+ case SCV_CONTRACT_INSTANCE: {
+ PARSER_CHECK(parse_contract_executable(buffer))
+ bool map_exists;
+ PARSER_CHECK(buffer_read_bool(buffer, &map_exists))
+ if (map_exists) {
+ parse_scval_map(buffer);
+ }
+ break;
+ }
+ case SCV_LEDGER_KEY_CONTRACT_INSTANCE:
+ break; // void
+ case SCV_LEDGER_KEY_NONCE:
+ PARSER_CHECK(buffer_advance(buffer, 8))
+ break;
+ default:
+ return false;
+ }
+ return true;
+}
+
bool parse_ledger_key(buffer_t *buffer, ledger_key_t *ledger_key) {
uint32_t ledger_entry_type;
PARSER_CHECK(buffer_read32(buffer, &ledger_entry_type))
@@ -807,7 +1004,262 @@ bool parse_liquidity_pool_withdraw(buffer_t *buffer, liquidity_pool_withdraw_op_
return true;
}
+bool parse_extension_point(buffer_t *buffer) {
+ uint32_t v;
+ PARSER_CHECK(buffer_read32(buffer, &v))
+ if (v != 0) {
+ return false;
+ }
+ return true;
+}
+
+bool parse_restore_footprint(buffer_t *buffer, restore_footprint_op_t *op) {
+ (void) op;
+ PARSER_CHECK(parse_extension_point(buffer))
+ return true;
+}
+
+bool parse_soroban_credentials(buffer_t *buffer) {
+ uint32_t type;
+ PARSER_CHECK(buffer_read32(buffer, &type))
+ switch (type) {
+ case SOROBAN_CREDENTIALS_SOURCE_ACCOUNT:
+ // void
+ break;
+ case SOROBAN_CREDENTIALS_ADDRESS: {
+ sc_address_t address;
+ PARSER_CHECK(parse_sc_address(buffer, &address))
+ PARSER_CHECK(buffer_advance(buffer, 8)) // nonce
+ PARSER_CHECK(buffer_advance(buffer, 4)) // signatureExpirationLedger
+ PARSER_CHECK(parse_scval(buffer)) // signature
+ break;
+ }
+ default:
+ return false;
+ }
+ return true;
+}
+
+bool parse_create_contract_args(buffer_t *buffer) {
+ // contract_id_preimage
+ uint32_t type;
+ PARSER_CHECK(buffer_read32(buffer, &type))
+ switch (type) {
+ case CONTRACT_ID_PREIMAGE_FROM_ADDRESS: {
+ sc_address_t address;
+ PARSER_CHECK(parse_sc_address(buffer, &address))
+ PARSER_CHECK(buffer_advance(buffer, 32)) // salt
+ break;
+ }
+ case CONTRACT_ID_PREIMAGE_FROM_ASSET: {
+ asset_t asset;
+ PARSER_CHECK(parse_asset(buffer, &asset))
+ break;
+ }
+ default:
+ return false;
+ }
+
+ // executable
+ PARSER_CHECK(parse_contract_executable(buffer))
+ return true;
+}
+
+bool parse_invoke_contract_args(buffer_t *buffer, invoke_contract_args_t *args) {
+ // contractAddress
+ PARSER_CHECK(parse_sc_address(buffer, &args->address))
+ // functionName
+ size_t text_size;
+ PARSER_CHECK(parse_binary_string_ptr(buffer,
+ (const uint8_t **) &args->function_name.text,
+ &text_size,
+ 32))
+ args->function_name.text_size = text_size;
+
+ // args
+ args->parameters_position = buffer->offset;
+ PRINTF("function_name.text_size=%d, function_name.text=%s\n",
+ args->function_name.text_size,
+ args->function_name.text);
+
+ args->contract_type = SOROBAN_CONTRACT_TYPE_UNVERIFIED;
+ for (int i = 0; i < SOROBAN_ASSET_CONTRACTS_NUM; i++) {
+ if (memcmp(args->address.address, SOROBAN_ASSET_CONTRACTS[i].address, 32) == 0) {
+ PRINTF("Valid contract address found\n");
+ if (args->function_name.text_size == 7 &&
+ memcmp(args->function_name.text, "approve", 7) == 0) {
+ args->contract_type = SOROBAN_CONTRACT_TYPE_ASSET_APPROVE;
+ memset(args->asset_approve.asset_code, 0, ASSET_CODE_MAX_LENGTH);
+ memcpy(args->asset_approve.asset_code,
+ SOROBAN_ASSET_CONTRACTS[i].name,
+ strlen(SOROBAN_ASSET_CONTRACTS[i].name));
+ } else if (args->function_name.text_size == 8 &&
+ memcmp(args->function_name.text, "transfer", 8) == 0) {
+ args->contract_type = SOROBAN_CONTRACT_TYPE_ASSET_TRANSFER;
+ memset(args->asset_transfer.asset_code, 0, ASSET_CODE_MAX_LENGTH);
+ memcpy(args->asset_transfer.asset_code,
+ SOROBAN_ASSET_CONTRACTS[i].name,
+ strlen(SOROBAN_ASSET_CONTRACTS[i].name));
+ }
+ break;
+ }
+ }
+
+ PRINTF("args->contract_type=%d\n", args->contract_type);
+ uint32_t args_len;
+ PARSER_CHECK(buffer_read32(buffer, &args_len))
+
+ switch (args->contract_type) {
+ case SOROBAN_CONTRACT_TYPE_UNVERIFIED: {
+ for (uint32_t i = 0; i < args_len; i++) {
+ PARSER_CHECK(parse_scval(buffer))
+ }
+ break;
+ }
+ case SOROBAN_CONTRACT_TYPE_ASSET_APPROVE: {
+ if (args_len != 4) {
+ return false;
+ }
+
+ uint32_t sc_type;
+
+ PARSER_CHECK(buffer_read32(buffer, &sc_type))
+ if (sc_type != SCV_ADDRESS) {
+ return false;
+ }
+ PARSER_CHECK(parse_sc_address(buffer, &args->asset_approve.from))
+
+ PARSER_CHECK(buffer_read32(buffer, &sc_type))
+ if (sc_type != SCV_ADDRESS) {
+ return false;
+ }
+ PARSER_CHECK(parse_sc_address(buffer, &args->asset_approve.spender))
+
+ PARSER_CHECK(buffer_read32(buffer, &sc_type))
+ if (sc_type != SCV_I128) {
+ return false;
+ }
+ PARSER_CHECK(buffer_advance(buffer, 8)) // amount.hi
+ PARSER_CHECK(buffer_read64(buffer, &args->asset_approve.amount)) // amount.lo
+
+ PARSER_CHECK(buffer_read32(buffer, &sc_type))
+ if (sc_type != SCV_U32) {
+ return false;
+ }
+ PARSER_CHECK(
+ buffer_read32(buffer, &args->asset_approve.expiration_ledger)) // exp ledger
+ break;
+ }
+ case SOROBAN_CONTRACT_TYPE_ASSET_TRANSFER: {
+ if (args_len != 3) {
+ return false;
+ }
+ uint32_t sc_type;
+ PARSER_CHECK(buffer_read32(buffer, &sc_type))
+ if (sc_type != SCV_ADDRESS) {
+ return false;
+ }
+ PARSER_CHECK(parse_sc_address(buffer, &args->asset_transfer.from))
+
+ PARSER_CHECK(buffer_read32(buffer, &sc_type))
+ if (sc_type != SCV_ADDRESS) {
+ return false;
+ }
+ PARSER_CHECK(parse_sc_address(buffer, &args->asset_transfer.to))
+
+ PARSER_CHECK(buffer_read32(buffer, &sc_type))
+ if (sc_type != SCV_I128) {
+ return false;
+ }
+ PARSER_CHECK(buffer_advance(buffer, 8)) // amount.hi
+ PARSER_CHECK(buffer_read64(buffer, &args->asset_transfer.amount)) // amount.lo
+ break;
+ }
+ default:
+ return false;
+ }
+ return true;
+}
+
+bool parse_soroban_authorized_function(buffer_t *buffer) {
+ uint32_t type;
+ PARSER_CHECK(buffer_read32(buffer, &type))
+ switch (type) {
+ case SOROBAN_AUTHORIZED_FUNCTION_TYPE_CONTRACT_FN: {
+ // contractFn
+ invoke_contract_args_t args;
+ PARSER_CHECK(parse_invoke_contract_args(buffer, &args));
+ break;
+ }
+ case SOROBAN_AUTHORIZED_FUNCTION_TYPE_CREATE_CONTRACT_HOST_FN:
+ // createContractHostFn
+ PARSER_CHECK(parse_create_contract_args(buffer));
+ break;
+ default:
+ return false;
+ }
+ return true;
+}
+
+bool parse_soroban_authorized_invocation(buffer_t *buffer) {
+ // function
+ PARSER_CHECK(parse_soroban_authorized_function(buffer))
+
+ // subInvocations
+ uint32_t len;
+ PARSER_CHECK(buffer_read32(buffer, &len))
+ for (uint32_t i = 0; i < len; i++) {
+ PARSER_CHECK(parse_soroban_authorized_invocation(buffer))
+ }
+ return true;
+}
+
+bool parse_soroban_authorization_entry(buffer_t *buffer) {
+ PARSER_CHECK(parse_soroban_credentials(buffer))
+ PARSER_CHECK(parse_soroban_authorized_invocation(buffer))
+ return true;
+}
+
+bool parse_invoke_host_function(buffer_t *buffer, invoke_host_function_op_t *op) {
+ // hostFunction
+ uint32_t type;
+ PARSER_CHECK(buffer_read32(buffer, &type));
+ op->host_function_type = type;
+ PRINTF("host_func_type=%d\n", &op->host_function_type);
+ switch (op->host_function_type) {
+ case HOST_FUNCTION_TYPE_INVOKE_CONTRACT:
+ PARSER_CHECK(parse_invoke_contract_args(buffer, &op->invoke_contract_args))
+ break;
+ case HOST_FUNCTION_TYPE_CREATE_CONTRACT:
+ PARSER_CHECK(parse_create_contract_args(buffer))
+ break;
+ case HOST_FUNCTION_TYPE_UPLOAD_CONTRACT_WASM: {
+ uint32_t data_len;
+ PARSER_CHECK(buffer_read32(buffer, &data_len))
+ PARSER_CHECK(buffer_advance(buffer, num_bytes(data_len)))
+ break;
+ }
+ default:
+ break;
+ }
+
+ // auth<>
+ uint32_t auth_len;
+ PARSER_CHECK(buffer_read32(buffer, &auth_len))
+ for (uint32_t i = 0; i < auth_len; i++) {
+ PARSER_CHECK(parse_soroban_authorization_entry(buffer))
+ }
+ return true;
+}
+
+bool parse_extend_footprint_ttl(buffer_t *buffer, extend_footprint_ttl_op_t *op) {
+ PARSER_CHECK(parse_extension_point(buffer))
+ PARSER_CHECK(buffer_read32(buffer, &op->extend_to))
+ return true;
+}
+
bool parse_operation(buffer_t *buffer, operation_t *operation) {
+ PRINTF("parse_operation: offset=%d\n", buffer->offset);
explicit_bzero(operation, sizeof(operation_t));
uint32_t op_type;
@@ -894,6 +1346,23 @@ bool parse_operation(buffer_t *buffer, operation_t *operation) {
return parse_liquidity_pool_deposit(buffer, &operation->liquidity_pool_deposit_op);
case OPERATION_TYPE_LIQUIDITY_POOL_WITHDRAW:
return parse_liquidity_pool_withdraw(buffer, &operation->liquidity_pool_withdraw_op);
+ case OPERATION_INVOKE_HOST_FUNCTION: {
+ PARSER_CHECK(parse_invoke_host_function(buffer, &operation->invoke_host_function_op))
+#ifndef TEST
+ if (operation->invoke_host_function_op.host_function_type ==
+ HOST_FUNCTION_TYPE_INVOKE_CONTRACT &&
+ operation->invoke_host_function_op.invoke_contract_args.contract_type ==
+ SOROBAN_CONTRACT_TYPE_UNVERIFIED &&
+ !HAS_SETTING(S_CUSTOM_CONTRACTS_ENABLED)) {
+ THROW(SW_CUSTOM_CONTRACT_MODE_NOT_ENABLED);
+ }
+#endif
+ return true;
+ }
+ case OPERATION_EXTEND_FOOTPRINT_TTL:
+ return parse_extend_footprint_ttl(buffer, &operation->extend_footprint_ttl_op);
+ case OPERATION_RESTORE_FOOTPRINT:
+ return parse_restore_footprint(buffer, &operation->restore_footprint_op);
default:
return false;
}
@@ -930,6 +1399,25 @@ bool parse_transaction_operation_len(buffer_t *buffer, uint8_t *operations_count
return true;
}
+bool check_operations(buffer_t *buffer, uint8_t op_count) {
+ PRINTF("check_operations: offset=%d\n", buffer->offset);
+ operation_t op;
+ for (uint8_t i = 0; i < op_count; i++) {
+ PARSER_CHECK(parse_operation(buffer, &op))
+ // for soroban tx, only one soroban operation is allowed
+ if (op_count != 1 && (op.type == OPERATION_EXTEND_FOOTPRINT_TTL ||
+ op.type == OPERATION_INVOKE_HOST_FUNCTION ||
+ op.type == OPERATION_INVOKE_HOST_FUNCTION)) {
+ PRINTF(
+ "check_operations: soroban operation is not allowed in multi-operation tx, "
+ "idx=%d\n",
+ i);
+ return false;
+ }
+ }
+ return true;
+}
+
bool parse_transaction_details(buffer_t *buffer, transaction_details_t *transaction) {
// account used to run the (inner)transaction
PARSER_CHECK(parse_transaction_source(buffer, &transaction->source_account))
@@ -945,6 +1433,11 @@ bool parse_transaction_details(buffer_t *buffer, transaction_details_t *transact
PARSER_CHECK(parse_transaction_memo(buffer, &transaction->memo))
PARSER_CHECK(parse_transaction_operation_len(buffer, &transaction->operations_count))
+
+ size_t offset = buffer->offset;
+ PARSER_CHECK(check_operations(buffer, transaction->operations_count))
+ buffer->offset = offset;
+
return true;
}
@@ -986,9 +1479,9 @@ bool parse_transaction_envelope_type(buffer_t *buffer, envelope_type_t *envelope
bool parse_network(buffer_t *buffer, uint8_t *network) {
PARSER_CHECK(buffer_can_read(buffer, HASH_SIZE))
- if (memcmp(buffer->ptr, NETWORK_ID_PUBLIC_HASH, HASH_SIZE) == 0) {
+ if (memcmp(buffer->ptr + buffer->offset, NETWORK_ID_PUBLIC_HASH, HASH_SIZE) == 0) {
*network = NETWORK_TYPE_PUBLIC;
- } else if (memcmp(buffer->ptr, NETWORK_ID_TEST_HASH, HASH_SIZE) == 0) {
+ } else if (memcmp(buffer->ptr + buffer->offset, NETWORK_ID_TEST_HASH, HASH_SIZE) == 0) {
*network = NETWORK_TYPE_TEST;
} else {
*network = NETWORK_TYPE_UNKNOWN;
@@ -1004,6 +1497,8 @@ bool parse_tx_xdr(const uint8_t *data, size_t size, tx_ctx_t *tx_ctx) {
uint16_t offset = tx_ctx->offset;
buffer.offset = tx_ctx->offset;
+ PRINTF("parse_tx_xdr: offset=%d\n", offset);
+
if (offset == 0) {
explicit_bzero(&tx_ctx->tx_details, sizeof(transaction_details_t));
explicit_bzero(&tx_ctx->fee_bump_tx_details, sizeof(fee_bump_transaction_details_t));
@@ -1036,3 +1531,38 @@ bool parse_tx_xdr(const uint8_t *data, size_t size, tx_ctx_t *tx_ctx) {
tx_ctx->offset = offset;
return true;
}
+
+bool parse_auth(const uint8_t *data, size_t size, auth_ctx_t *auth_ctx) {
+ buffer_t buffer = {data, size, 0};
+ uint32_t type;
+ PARSER_CHECK(buffer_read32(&buffer, &type))
+ if (type != ENVELOPE_TYPE_SOROBAN_AUTHORIZATION) {
+ return false;
+ }
+ PARSER_CHECK(parse_network(&buffer, &auth_ctx->network))
+ PARSER_CHECK(buffer_read64(&buffer, &auth_ctx->nonce))
+ PARSER_CHECK(buffer_read32(&buffer, &auth_ctx->signature_exp_ledger))
+ PARSER_CHECK(buffer_read32(&buffer, &type))
+
+ auth_ctx->function_type = type;
+ switch (type) {
+ case SOROBAN_AUTHORIZED_FUNCTION_TYPE_CONTRACT_FN: {
+ // contractFn
+ PARSER_CHECK(parse_invoke_contract_args(&buffer, &auth_ctx->invoke_contract_args));
+#ifndef TEST
+ if (auth_ctx->invoke_contract_args.contract_type == SOROBAN_CONTRACT_TYPE_UNVERIFIED &&
+ !HAS_SETTING(S_CUSTOM_CONTRACTS_ENABLED)) {
+ THROW(SW_CUSTOM_CONTRACT_MODE_NOT_ENABLED);
+ }
+#endif
+ break;
+ }
+ case SOROBAN_AUTHORIZED_FUNCTION_TYPE_CREATE_CONTRACT_HOST_FN:
+ // createContractHostFn
+ PARSER_CHECK(parse_create_contract_args(&buffer))
+ break;
+ default:
+ return false;
+ }
+ return true;
+}
\ No newline at end of file
diff --git a/src/transaction/transaction_parser.h b/src/transaction/transaction_parser.h
index 1bac58ac..db928c0e 100644
--- a/src/transaction/transaction_parser.h
+++ b/src/transaction/transaction_parser.h
@@ -2,3 +2,5 @@
#include "../types.h"
bool parse_tx_xdr(const uint8_t *data, size_t size, tx_ctx_t *tx_ctx);
+
+bool parse_auth(const uint8_t *data, size_t size, auth_ctx_t *auth_ctx);
\ No newline at end of file
diff --git a/src/transaction/transaction_types.h b/src/transaction/transaction_types.h
index 303a9ee3..01f2f611 100644
--- a/src/transaction/transaction_types.h
+++ b/src/transaction/transaction_types.h
@@ -9,6 +9,7 @@
// ------------------------------------------------------------------------- //
#define ENCODED_ED25519_PUBLIC_KEY_LENGTH 57
+#define ENCODED_CONTRACT_KEY_LENGTH 57
#define ENCODED_ED25519_PRIVATE_KEY_LENGTH 57
#define ENCODED_HASH_X_KEY_LENGTH 57
#define ENCODED_PRE_AUTH_TX_KEY_LENGTH 57
@@ -18,6 +19,7 @@
#define RAW_ED25519_PRIVATE_KEY_SIZE 32
#define RAW_HASH_X_KEY_SIZE 32
#define RAW_PRE_AUTH_TX_KEY_SIZE 32
+#define RAW_CONTRACT_KEY_SIZE 32
#define RAW_MUXED_ACCOUNT_KEY_SIZE 40
#define VERSION_BYTE_ED25519_PUBLIC_KEY 6 << 3
@@ -26,6 +28,7 @@
#define VERSION_BYTE_HASH_X 23 << 3
#define VERSION_BYTE_MUXED_ACCOUNT 12 << 3
#define VERSION_BYTE_ED25519_SIGNED_PAYLOAD 15 << 3
+#define VERSION_BYTE_CONTRACT 2 << 3
#define ASSET_CODE_MAX_LENGTH 13
#define CLAIMANTS_MAX_LENGTH 10
@@ -69,6 +72,7 @@ typedef enum {
typedef enum {
ENVELOPE_TYPE_TX = 2,
ENVELOPE_TYPE_TX_FEE_BUMP = 5,
+ ENVELOPE_TYPE_SOROBAN_AUTHORIZATION = 9
} envelope_type_t;
typedef enum {
@@ -96,6 +100,9 @@ typedef enum {
OPERATION_TYPE_SET_TRUST_LINE_FLAGS = 21,
OPERATION_TYPE_LIQUIDITY_POOL_DEPOSIT = 22,
OPERATION_TYPE_LIQUIDITY_POOL_WITHDRAW = 23,
+ OPERATION_INVOKE_HOST_FUNCTION = 24,
+ OPERATION_EXTEND_FOOTPRINT_TTL = 25,
+ OPERATION_RESTORE_FOOTPRINT = 26
} operation_type_t;
typedef const uint8_t *account_id_t;
@@ -381,7 +388,11 @@ typedef enum {
OFFER = 2,
DATA = 3,
CLAIMABLE_BALANCE = 4,
- LIQUIDITY_POOL = 5
+ LIQUIDITY_POOL = 5,
+ CONTRACT_DATA = 6,
+ CONTRACT_CODE = 7,
+ CONFIG_SETTING = 8,
+ TTL = 9
} ledger_entry_type_t;
typedef struct {
@@ -467,6 +478,111 @@ typedef struct {
int64_t min_amount_b; // minimum amount of second asset to withdraw
} liquidity_pool_withdraw_op_t;
+// ************************* Soroban ************************* //
+#define CONTRACT_ID_PREIMAGE_FROM_ADDRESS 0
+#define CONTRACT_ID_PREIMAGE_FROM_ASSET 1
+#define CONTRACT_EXECUTABLE_WASM 0
+#define CONTRACT_EXECUTABLE_STELLAR_ASSET 1
+#define MAX_CONTRACT_NAME_LEN 13
+#define SOROBAN_ASSET_CONTRACTS_NUM 7
+
+typedef enum SCValType {
+ SCV_BOOL = 0,
+ SCV_VOID = 1,
+ SCV_ERROR = 2,
+ SCV_U32 = 3,
+ SCV_I32 = 4,
+ SCV_U64 = 5,
+ SCV_I64 = 6,
+ SCV_TIMEPOINT = 7,
+ SCV_DURATION = 8,
+ SCV_U128 = 9,
+ SCV_I128 = 10,
+ SCV_U256 = 11,
+ SCV_I256 = 12,
+ SCV_BYTES = 13,
+ SCV_STRING = 14,
+ SCV_SYMBOL = 15,
+ SCV_VEC = 16,
+ SCV_MAP = 17,
+ SCV_ADDRESS = 18,
+ SCV_CONTRACT_INSTANCE = 19,
+ SCV_LEDGER_KEY_CONTRACT_INSTANCE = 20,
+ SCV_LEDGER_KEY_NONCE = 21
+} sc_val_type_t;
+
+typedef enum { SC_ADDRESS_TYPE_ACCOUNT = 0, SC_ADDRESS_TYPE_CONTRACT = 1 } sc_address_type_t;
+
+typedef struct {
+ sc_address_type_t type;
+ const uint8_t *address; // account id or contract id
+} sc_address_t;
+
+typedef enum {
+ SOROBAN_CREDENTIALS_SOURCE_ACCOUNT = 0,
+ SOROBAN_CREDENTIALS_ADDRESS = 1
+} soroban_credentials_type_t;
+
+typedef struct contract_t {
+ char name[MAX_CONTRACT_NAME_LEN];
+ uint8_t address[RAW_CONTRACT_KEY_SIZE];
+} contract_t;
+
+typedef enum {
+ SOROBAN_CONTRACT_TYPE_UNVERIFIED = 0,
+ SOROBAN_CONTRACT_TYPE_ASSET_APPROVE = 1,
+ SOROBAN_CONTRACT_TYPE_ASSET_TRANSFER = 2,
+} soroban_contract_type_t;
+
+typedef struct {
+ sc_address_t address;
+ size_t parameters_position;
+ struct {
+ uint8_t text_size;
+ const uint8_t *text;
+ } function_name;
+ soroban_contract_type_t contract_type;
+ union {
+ struct {
+ sc_address_t from;
+ sc_address_t spender;
+ uint64_t amount;
+ uint32_t expiration_ledger;
+ char asset_code[ASSET_CODE_MAX_LENGTH];
+ } asset_approve;
+ struct {
+ sc_address_t from;
+ sc_address_t to;
+ uint64_t amount;
+ char asset_code[ASSET_CODE_MAX_LENGTH];
+ } asset_transfer;
+ };
+} invoke_contract_args_t;
+
+typedef enum {
+ HOST_FUNCTION_TYPE_INVOKE_CONTRACT = 0,
+ HOST_FUNCTION_TYPE_CREATE_CONTRACT = 1,
+ HOST_FUNCTION_TYPE_UPLOAD_CONTRACT_WASM = 2
+} host_function_type_t;
+
+typedef struct {
+ host_function_type_t host_function_type;
+ invoke_contract_args_t invoke_contract_args;
+} invoke_host_function_op_t;
+
+typedef struct {
+ uint32_t extend_to;
+} extend_footprint_ttl_op_t;
+
+typedef struct {
+} restore_footprint_op_t;
+
+typedef enum {
+ SOROBAN_AUTHORIZED_FUNCTION_TYPE_CONTRACT_FN = 0,
+ SOROBAN_AUTHORIZED_FUNCTION_TYPE_CREATE_CONTRACT_HOST_FN = 1
+} soroban_authorization_function_type_t;
+// ************************* Soroban ************************* //
+
typedef struct {
muxed_account_t source_account;
uint8_t type;
@@ -494,6 +610,9 @@ typedef struct {
set_trust_line_flags_op_t set_trust_line_flags_op;
liquidity_pool_deposit_op_t liquidity_pool_deposit_op;
liquidity_pool_withdraw_op_t liquidity_pool_withdraw_op;
+ invoke_host_function_op_t invoke_host_function_op;
+ extend_footprint_ttl_op_t extend_footprint_ttl_op;
+ restore_footprint_op_t restore_footprint_op;
};
} operation_t;
diff --git a/src/types.h b/src/types.h
index 3487165c..dce69e8a 100644
--- a/src/types.h
+++ b/src/types.h
@@ -66,10 +66,11 @@ typedef enum {
* Enumeration with expected INS of APDU commands.
*/
typedef enum {
- INS_GET_PUBLIC_KEY = 0x02, // public key of corresponding BIP32 path
- INS_SIGN_TX = 0x04, // sign transaction with BIP32 path
- INS_GET_APP_CONFIGURATION = 0x06, // app configuration of the application
- INS_SIGN_TX_HASH = 0x08, // sign transaction in hash mode
+ INS_GET_PUBLIC_KEY = 0x02, // public key of corresponding BIP32 path
+ INS_SIGN_TX = 0x04, // sign transaction with BIP32 path
+ INS_GET_APP_CONFIGURATION = 0x06, // app configuration of the application
+ INS_SIGN_TX_HASH = 0x08, // sign transaction in hash mode
+ INS_SIGN_SOROBAN_AUTHORATION = 0x0a, // sign soroban authoration
} command_e;
/**
@@ -88,9 +89,10 @@ typedef struct {
* Enumeration with user request type.
*/
typedef enum {
- CONFIRM_ADDRESS, // confirm address derived from public key
- CONFIRM_TRANSACTION, // confirm transaction information
- CONFIRM_TRANSACTION_HASH // confirm transaction hash information
+ CONFIRM_ADDRESS, // confirm address derived from public key
+ CONFIRM_TRANSACTION, // confirm transaction information
+ CONFIRM_TRANSACTION_HASH, // confirm transaction hash information
+ CONFIRM_SOROBAN_AUTHORATION // confirm soroban authoration information
} request_type_e;
/**
@@ -116,11 +118,26 @@ typedef struct {
transaction_details_t tx_details;
} tx_ctx_t;
+typedef struct {
+ uint8_t raw[RAW_TX_MAX_SIZE];
+ uint32_t raw_size;
+ uint8_t network;
+ uint64_t nonce;
+ uint32_t signature_exp_ledger;
+ soroban_authorization_function_type_t function_type;
+ invoke_contract_args_t invoke_contract_args; // only exist when function_type is
+ // SOROBAN_AUTHORIZED_FUNCTION_TYPE_CONTRACT_FN
+} auth_ctx_t;
+
/**
* Structure for global context.
*/
typedef struct {
- tx_ctx_t tx_info; // tx
+ union {
+ tx_ctx_t tx_info; // tx
+ auth_ctx_t auth; // soroban auth
+ };
+
uint8_t hash[HASH_SIZE]; // tx hash
uint32_t bip32_path[MAX_BIP32_PATH]; // BIP32 path
uint8_t raw_public_key[RAW_ED25519_PUBLIC_KEY_SIZE]; // BIP32 path public key
diff --git a/src/ui/ui.h b/src/ui/ui.h
index e70c3457..73b9211b 100644
--- a/src/ui/ui.h
+++ b/src/ui/ui.h
@@ -36,4 +36,11 @@ int ui_approve_tx_hash_init();
*
* @return 0 if success, negative integer otherwise.
*/
-int ui_approve_tx_init();
\ No newline at end of file
+int ui_approve_tx_init();
+
+/**
+ * Shows the process of signing a Soroban authorization.
+ *
+ * @return 0 if success, negative integer otherwise.
+ */
+int ui_approve_soroban_auth_init();
\ No newline at end of file
diff --git a/src/ui/ui_menu_bagl.c b/src/ui/ui_menu_bagl.c
index 5f316f88..2e16f746 100644
--- a/src/ui/ui_menu_bagl.c
+++ b/src/ui/ui_menu_bagl.c
@@ -15,6 +15,7 @@
* limitations under the License.
*****************************************************************************/
#ifdef HAVE_BAGL
+#include
#include "./ui.h"
#include "../globals.h"
#include "../settings.h"
@@ -22,6 +23,7 @@
void ui_idle(void);
void display_settings(const ux_flow_step_t* const start_step);
void switch_settings_hash_signing();
+void switch_settings_custom_contracts();
void switch_settings_sequence_number();
// FLOW for the settings menu:
// #1 screen: enable hash signing
@@ -34,12 +36,19 @@ UX_STEP_CB(ux_settings_hash_signing_step,
.title = "Hash signing",
.text = G.ui.detail_value,
});
+UX_STEP_CB(ux_settings_custom_contracts_step,
+ bnnn_paging,
+ switch_settings_custom_contracts(),
+ {
+ .title = "Custom contracts",
+ .text = G.ui.detail_value + 12,
+ });
UX_STEP_CB(ux_settings_sequence_number_step,
bnnn_paging,
switch_settings_sequence_number(),
{
.title = "Sequence Number",
- .text = G.ui.detail_value + 12,
+ .text = G.ui.detail_value + 24,
});
#else
UX_STEP_CB(ux_settings_hash_signing_step,
@@ -51,6 +60,15 @@ UX_STEP_CB(ux_settings_hash_signing_step,
"hash signing",
G.ui.detail_value,
});
+UX_STEP_CB(ux_settings_custom_contracts_step,
+ bnnn,
+ switch_settings_custom_contracts(),
+ {
+ "Custom contracts",
+ "Allow unverified",
+ "contracts",
+ G.ui.detail_value + 12,
+ });
UX_STEP_CB(ux_settings_sequence_number_step,
bnnn,
switch_settings_sequence_number(),
@@ -58,7 +76,7 @@ UX_STEP_CB(ux_settings_sequence_number_step,
"Sequence Number",
"Display sequence",
"in transactions",
- G.ui.detail_value + 12,
+ G.ui.detail_value + 24,
});
#endif
UX_STEP_CB(ux_settings_exit_step,
@@ -70,6 +88,7 @@ UX_STEP_CB(ux_settings_exit_step,
});
UX_FLOW(ux_settings_flow,
&ux_settings_hash_signing_step,
+ &ux_settings_custom_contracts_step,
&ux_settings_sequence_number_step,
&ux_settings_exit_step);
@@ -110,6 +129,9 @@ void display_settings(const ux_flow_step_t* const start_step) {
(HAS_SETTING(S_HASH_SIGNING_ENABLED) ? "Enabled" : "NOT Enabled"),
12);
strlcpy(G.ui.detail_value + 12,
+ (HAS_SETTING(S_CUSTOM_CONTRACTS_ENABLED) ? "Enabled" : "NOT Enabled"),
+ 12);
+ strlcpy(G.ui.detail_value + 24,
(HAS_SETTING(S_SEQUENCE_NUMBER_ENABLED) ? "Displayed" : "NOT Displayed"),
14);
ux_flow_init(0, ux_settings_flow, start_step);
@@ -120,6 +142,11 @@ void switch_settings_hash_signing() {
display_settings(&ux_settings_hash_signing_step);
}
+void switch_settings_custom_contracts() {
+ SETTING_TOGGLE(S_CUSTOM_CONTRACTS_ENABLED);
+ display_settings(&ux_settings_custom_contracts_step);
+}
+
void switch_settings_sequence_number() {
SETTING_TOGGLE(S_SEQUENCE_NUMBER_ENABLED);
display_settings(&ux_settings_sequence_number_step);
diff --git a/src/ui/ui_menu_nbgl.c b/src/ui/ui_menu_nbgl.c
index becbf323..946a8ef5 100644
--- a/src/ui/ui_menu_nbgl.c
+++ b/src/ui/ui_menu_nbgl.c
@@ -30,13 +30,17 @@ static void displaySettingsMenu(void);
static void settingsControlsCallback(int token, uint8_t index);
static bool settingsNavCallback(uint8_t page, nbgl_pageContent_t* content);
-enum { SWITCH_HASH_SET_TOKEN = FIRST_USER_TOKEN, SWITCH_SEQUENCE_SET_TOKEN };
+enum {
+ SWITCH_HASH_SET_TOKEN = FIRST_USER_TOKEN,
+ SWITCH_CUSTOM_CONTRACTS_SET_TOKEN,
+ SWITCH_SEQUENCE_SET_TOKEN
+};
#define NB_INFO_FIELDS 2
static const char* const infoTypes[] = {"Version", "Developer"};
static const char* const infoContents[] = {APPVERSION, "Ledger"};
-#define NB_SETTINGS_SWITCHES 2
+#define NB_SETTINGS_SWITCHES 3
#define SETTINGS_INIT_PAGE 0
#define SETTINGS_NB_PAGES 2
#define SETTINGS_TOUCHABLE false
@@ -58,11 +62,16 @@ static bool settingsNavCallback(uint8_t page, nbgl_pageContent_t* content) {
switches[0].token = SWITCH_HASH_SET_TOKEN;
switches[0].tuneId = TUNE_TAP_CASUAL;
switches[0].initState = (HAS_SETTING(S_HASH_SIGNING_ENABLED)) ? ON_STATE : OFF_STATE;
- switches[1].text = "Sequence number";
- switches[1].subText = "Display sequence in\ntransactions";
- switches[1].token = SWITCH_SEQUENCE_SET_TOKEN;
+ switches[1].text = "Custom contracts";
+ switches[1].subText = "Allow unverified\ncontracts";
+ switches[1].token = SWITCH_CUSTOM_CONTRACTS_SET_TOKEN;
switches[1].tuneId = TUNE_TAP_CASUAL;
- switches[1].initState = (HAS_SETTING(S_SEQUENCE_NUMBER_ENABLED)) ? ON_STATE : OFF_STATE;
+ switches[1].initState = (HAS_SETTING(S_CUSTOM_CONTRACTS_ENABLED)) ? ON_STATE : OFF_STATE;
+ switches[2].text = "Sequence number";
+ switches[2].subText = "Display sequence in\ntransactions";
+ switches[2].token = SWITCH_SEQUENCE_SET_TOKEN;
+ switches[2].tuneId = TUNE_TAP_CASUAL;
+ switches[2].initState = (HAS_SETTING(S_SEQUENCE_NUMBER_ENABLED)) ? ON_STATE : OFF_STATE;
content->type = SWITCHES_LIST;
content->switchesList.nbSwitches = NB_SETTINGS_SWITCHES;
@@ -79,6 +88,9 @@ static void settingsControlsCallback(int token, uint8_t index) {
case SWITCH_HASH_SET_TOKEN:
SETTING_TOGGLE(S_HASH_SIGNING_ENABLED);
break;
+ case SWITCH_CUSTOM_CONTRACTS_SET_TOKEN:
+ SETTING_TOGGLE(S_CUSTOM_CONTRACTS_ENABLED);
+ break;
case SWITCH_SEQUENCE_SET_TOKEN:
SETTING_TOGGLE(S_SEQUENCE_NUMBER_ENABLED);
break;
diff --git a/src/ui/ui_soroban_authorization_bagl.c b/src/ui/ui_soroban_authorization_bagl.c
new file mode 100644
index 00000000..9332ee7e
--- /dev/null
+++ b/src/ui/ui_soroban_authorization_bagl.c
@@ -0,0 +1,347 @@
+/*****************************************************************************
+ * Ledger Stellar App.
+ * (c) 2022 Ledger SAS.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *****************************************************************************/
+#ifdef HAVE_BAGL
+#include // bool
+#include // memset
+
+#include "./ui.h"
+#include "./action/validate.h"
+#include "../globals.h"
+#include "../sw.h"
+#include "../utils.h"
+#include "../io.h"
+#include "../common/format.h"
+
+static void display_next_state(bool is_upper_delimiter);
+static const char *NETWORK_NAMES[3] = {"Public", "Testnet", "Unknown"};
+
+// Step with icon and text
+UX_STEP_NOCB(ux_soroban_auth_signing_review_step,
+ pnn,
+ {
+ &C_icon_eye,
+ "Review",
+ "Soroban Auth",
+ });
+// what we're doing here is a little more complicated due to the need to reduce memory usage
+UX_STEP_INIT(ux_soroban_auth_init_upper_border, NULL, NULL, { display_next_state(true); });
+UX_STEP_NOCB(ux_soroban_auth_variable_display,
+ bnnn_paging,
+ {
+ .title = G.ui.detail_caption,
+ .text = G.ui.detail_value,
+ });
+UX_STEP_INIT(ux_soroban_auth_init_lower_border, NULL, NULL, { display_next_state(false); });
+// Step with approve button
+UX_STEP_CB(ux_soroban_auth_display_approve_step,
+ pb,
+ (*G.ui.validate_callback)(true),
+ {
+ &C_icon_validate_14,
+ "Finalize",
+ });
+// Step with reject button
+UX_STEP_CB(ux_soroban_auth_display_reject_step,
+ pb,
+ (*G.ui.validate_callback)(false),
+ {
+ &C_icon_crossmark,
+ "Reject",
+ });
+// FLOW to display hash signing
+// #1 screen: eye icon + "Soroban Auth"
+// #2 screen: auth info
+// #3 screen: approve button
+// #4 screen: reject button
+UX_FLOW(ux_soroban_auth_signing_flow,
+ &ux_soroban_auth_signing_review_step,
+ &ux_soroban_auth_init_upper_border,
+ &ux_soroban_auth_variable_display,
+ &ux_soroban_auth_init_lower_border,
+ &ux_soroban_auth_display_approve_step,
+ &ux_soroban_auth_display_reject_step);
+
+static bool get_next_data(char *caption, char *value, bool forward) {
+ explicit_bzero(caption, sizeof(caption));
+ explicit_bzero(value, sizeof(value));
+ if (forward) {
+ G.ui.current_data_index++;
+ } else {
+ G.ui.current_data_index--;
+ }
+ if (G_context.auth.function_type == SOROBAN_AUTHORIZED_FUNCTION_TYPE_CREATE_CONTRACT_HOST_FN) {
+ switch (G.ui.current_data_index) {
+ case 1:
+ STRLCPY(caption, "Soroban", DETAIL_CAPTION_MAX_LENGTH);
+ STRLCPY(value, "Create Contract", DETAIL_CAPTION_MAX_LENGTH);
+ break;
+ case 2:
+ STRLCPY(caption, "Network", DETAIL_CAPTION_MAX_LENGTH);
+ STRLCPY(value,
+ (char *) PIC(NETWORK_NAMES[G_context.auth.network]),
+ DETAIL_VALUE_MAX_LENGTH);
+ break;
+ default:
+ return false;
+ }
+ } else {
+ switch (G.ui.current_data_index) {
+ case 1:
+ STRLCPY(caption, "Contract ID", DETAIL_CAPTION_MAX_LENGTH);
+ FORMATTER_CHECK(print_sc_address(&G_context.auth.invoke_contract_args.address,
+ value,
+ DETAIL_VALUE_MAX_LENGTH,
+ 0,
+ 0))
+ break;
+ case 2:
+ STRLCPY(caption, "Function", DETAIL_CAPTION_MAX_LENGTH);
+ STRLCPY(value,
+ (char *) G_context.auth.invoke_contract_args.function_name.text,
+ DETAIL_VALUE_MAX_LENGTH);
+ break;
+ case 3:
+ STRLCPY(caption, "Network", DETAIL_CAPTION_MAX_LENGTH);
+ STRLCPY(value,
+ (char *) PIC(NETWORK_NAMES[G_context.auth.network]),
+ DETAIL_VALUE_MAX_LENGTH);
+ break;
+ case 4:
+ STRLCPY(caption, "Nonce", DETAIL_CAPTION_MAX_LENGTH);
+ FORMATTER_CHECK(print_uint(G_context.auth.nonce, value, DETAIL_VALUE_MAX_LENGTH))
+ break;
+ case 5:
+ STRLCPY(caption, "Sig Exp Ledger", DETAIL_CAPTION_MAX_LENGTH);
+ FORMATTER_CHECK(
+ print_uint(G_context.auth.signature_exp_ledger, value, DETAIL_VALUE_MAX_LENGTH))
+ break;
+ default:
+ break;
+ }
+
+ if (G.ui.current_data_index < 6) {
+ return true;
+ }
+
+ switch (G_context.auth.invoke_contract_args.contract_type) {
+ case SOROBAN_CONTRACT_TYPE_UNVERIFIED:
+ switch (G.ui.current_data_index) {
+ case 6:
+ STRLCPY(caption, "RISK WARNING", DETAIL_CAPTION_MAX_LENGTH);
+ STRLCPY(value,
+ "Unverified contract, will not display details",
+ DETAIL_VALUE_MAX_LENGTH);
+ break;
+ case 7:
+ STRLCPY(caption, "Hash", DETAIL_CAPTION_MAX_LENGTH);
+ FORMATTER_CHECK(
+ format_hex(G_context.hash, 32, value, DETAIL_VALUE_MAX_LENGTH))
+ break;
+ default:
+ return false;
+ }
+ break;
+ case SOROBAN_CONTRACT_TYPE_ASSET_APPROVE:
+ switch (G.ui.current_data_index) {
+ case 6: {
+ STRLCPY(caption, "Spender", DETAIL_CAPTION_MAX_LENGTH);
+ FORMATTER_CHECK(print_sc_address(
+ &G_context.auth.invoke_contract_args.asset_approve.spender,
+ value,
+ DETAIL_VALUE_MAX_LENGTH,
+ 0,
+ 0))
+ break;
+ }
+ case 7: {
+ STRLCPY(caption, "From", DETAIL_CAPTION_MAX_LENGTH);
+ FORMATTER_CHECK(print_sc_address(
+ &G_context.auth.invoke_contract_args.asset_approve.from,
+ value,
+ DETAIL_VALUE_MAX_LENGTH,
+ 0,
+ 0))
+ break;
+ }
+ case 8: {
+ STRLCPY(caption, "Amount", DETAIL_CAPTION_MAX_LENGTH);
+ char tmp[DETAIL_VALUE_MAX_LENGTH];
+ explicit_bzero(tmp, DETAIL_VALUE_MAX_LENGTH);
+ FORMATTER_CHECK(
+ print_amount(G_context.auth.invoke_contract_args.asset_approve.amount,
+ NULL,
+ G_context.auth.network,
+ tmp,
+ DETAIL_VALUE_MAX_LENGTH))
+ STRLCAT(tmp, " ", DETAIL_VALUE_MAX_LENGTH);
+ STRLCAT(tmp,
+ G_context.auth.invoke_contract_args.asset_approve.asset_code,
+ DETAIL_VALUE_MAX_LENGTH);
+ STRLCPY(value, tmp, DETAIL_VALUE_MAX_LENGTH);
+ break;
+ }
+ case 9: {
+ STRLCPY(caption, "Approve Exp Ledger", DETAIL_CAPTION_MAX_LENGTH);
+ FORMATTER_CHECK(print_uint(
+ G_context.auth.invoke_contract_args.asset_approve.expiration_ledger,
+ value,
+ DETAIL_VALUE_MAX_LENGTH))
+ break;
+ }
+ default:
+ return false;
+ }
+ break;
+ case SOROBAN_CONTRACT_TYPE_ASSET_TRANSFER:
+ switch (G.ui.current_data_index) {
+ case 6: {
+ STRLCPY(caption, "Transfer", DETAIL_CAPTION_MAX_LENGTH);
+ char tmp[DETAIL_VALUE_MAX_LENGTH];
+ explicit_bzero(tmp, DETAIL_VALUE_MAX_LENGTH);
+ FORMATTER_CHECK(
+ print_amount(G_context.auth.invoke_contract_args.asset_transfer.amount,
+ NULL,
+ G_context.auth.network,
+ tmp,
+ DETAIL_VALUE_MAX_LENGTH))
+ STRLCAT(tmp, " ", DETAIL_VALUE_MAX_LENGTH);
+ STRLCAT(tmp,
+ G_context.auth.invoke_contract_args.asset_transfer.asset_code,
+ DETAIL_VALUE_MAX_LENGTH);
+ STRLCPY(value, tmp, DETAIL_VALUE_MAX_LENGTH);
+ break;
+ }
+ case 7: {
+ STRLCPY(caption, "From", DETAIL_CAPTION_MAX_LENGTH);
+ FORMATTER_CHECK(print_sc_address(
+ &G_context.auth.invoke_contract_args.asset_transfer.from,
+ value,
+ DETAIL_VALUE_MAX_LENGTH,
+ 0,
+ 0))
+ break;
+ }
+ case 8: {
+ STRLCPY(caption, "To", DETAIL_CAPTION_MAX_LENGTH);
+ FORMATTER_CHECK(
+ print_sc_address(&G_context.auth.invoke_contract_args.asset_transfer.to,
+ value,
+ DETAIL_VALUE_MAX_LENGTH,
+ 0,
+ 0))
+ break;
+ }
+ default:
+ return false;
+ }
+ break;
+ }
+ }
+ return true;
+}
+
+// This is a special function you must call for bnnn_paging to work properly in an edgecase.
+// It does some weird stuff with the `G_ux` global which is defined by the SDK.
+// No need to dig deeper into the code, a simple copy-paste will do.
+static void bnnn_paging_edgecase() {
+ G_ux.flow_stack[G_ux.stack_count - 1].prev_index =
+ G_ux.flow_stack[G_ux.stack_count - 1].index - 2;
+ G_ux.flow_stack[G_ux.stack_count - 1].index--;
+ ux_flow_relayout();
+}
+
+// Main function that handles all the business logic for our new display architecture.
+static void display_next_state(bool is_upper_delimiter) {
+ if (is_upper_delimiter) { // We're called from the upper delimiter.
+ if (G.ui.current_state == OUT_OF_BORDERS) {
+ // Fetch new data.
+ bool dynamic_data = get_next_data(G.ui.detail_caption, G.ui.detail_value, true);
+
+ if (dynamic_data) {
+ // We found some data to display so we now enter in dynamic mode.
+ G.ui.current_state = INSIDE_BORDERS;
+ }
+
+ // Move to the next step, which will display the screen.
+ ux_flow_next();
+ } else {
+ // The previous screen was NOT a static screen, so we were already in a dynamic screen.
+
+ // Fetch new data.
+ bool dynamic_data = get_next_data(G.ui.detail_caption, G.ui.detail_value, false);
+ if (dynamic_data) {
+ // We found some data so simply display it.
+ ux_flow_next();
+ } else {
+ // There's no more dynamic data to display, so
+ // update the current state accordingly.
+ G.ui.current_state = OUT_OF_BORDERS;
+
+ // Display the previous screen which should be a static one.
+ ux_flow_prev();
+ }
+ }
+ } else {
+ // We're called from the lower delimiter.
+
+ if (G.ui.current_state == OUT_OF_BORDERS) {
+ // Fetch new data.
+ bool dynamic_data = get_next_data(G.ui.detail_caption, G.ui.detail_value, false);
+
+ if (dynamic_data) {
+ // We found some data to display so enter in dynamic mode.
+ G.ui.current_state = INSIDE_BORDERS;
+ }
+
+ // Display the data.
+ ux_flow_prev();
+ } else {
+ // We're being called from a dynamic screen, so the user was already browsing the
+ // array.
+
+ // Fetch new data.
+ bool dynamic_data = get_next_data(G.ui.detail_caption, G.ui.detail_value, true);
+ if (dynamic_data) {
+ // We found some data, so display it.
+ // Similar to `ux_flow_prev()` but updates layout to account for `bnnn_paging`'s
+ // weird behaviour.
+ bnnn_paging_edgecase();
+ } else {
+ // We found no data so make sure we update the state accordingly.
+ G.ui.current_state = OUT_OF_BORDERS;
+
+ // Display the next screen
+ ux_flow_next();
+ }
+ }
+ }
+}
+
+int ui_approve_soroban_auth_init() {
+ if (G_context.req_type != CONFIRM_SOROBAN_AUTHORATION || G_context.state != STATE_PARSED) {
+ G_context.state = STATE_NONE;
+ return io_send_sw(SW_BAD_STATE);
+ }
+ PRINTF("parse_auth, network=%d\n", G_context.auth.network);
+
+ G.ui.current_state = OUT_OF_BORDERS;
+ G.ui.current_data_index = 0;
+ G.ui.validate_callback = &ui_action_validate_transaction;
+ ux_flow_init(0, ux_soroban_auth_signing_flow, NULL);
+ return 0;
+}
+#endif // HAVE_BAGL
diff --git a/src/ui/ui_soroban_authorization_nbgl.c b/src/ui/ui_soroban_authorization_nbgl.c
new file mode 100644
index 00000000..37f2a687
--- /dev/null
+++ b/src/ui/ui_soroban_authorization_nbgl.c
@@ -0,0 +1,249 @@
+/*****************************************************************************
+ * Ledger Stellar App.
+ * (c) 2022 Ledger SAS.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *****************************************************************************/
+#ifdef HAVE_NBGL
+#include // bool
+#include // memset
+
+#include "ui.h"
+#include "validate.h"
+#include "globals.h"
+#include "sw.h"
+#include "utils.h"
+#include "io.h"
+#include "format.h"
+#include "nbgl_use_case.h"
+
+// Macros
+#define TAG_VAL_LST_PAIR_NB 9
+
+// Globals
+static char str_values[TAG_VAL_LST_PAIR_NB][DETAIL_VALUE_MAX_LENGTH];
+static nbgl_pageInfoLongPress_t infoLongPress;
+static nbgl_layoutTagValue_t caption_value_pairs[TAG_VAL_LST_PAIR_NB];
+static nbgl_layoutTagValueList_t pairList;
+static const char *NETWORK_NAMES[3] = {"Public", "Testnet", "Unknown"};
+static uint8_t actual_pair;
+
+// Static functions declarations
+static void reviewStart(void);
+static void reviewWarning(void);
+static void reviewContinue(void);
+static void rejectConfirmation(void);
+static void rejectChoice(void);
+
+// Functions definitions
+static void preparePage(void) {
+ explicit_bzero(caption_value_pairs, sizeof(caption_value_pairs));
+ explicit_bzero(str_values, sizeof(str_values));
+
+ if (G_context.auth.function_type == SOROBAN_AUTHORIZED_FUNCTION_TYPE_CREATE_CONTRACT_HOST_FN) {
+ caption_value_pairs[0].item = "Soroban";
+ STRLCPY(str_values[0], "Create Contract", DETAIL_VALUE_MAX_LENGTH);
+ caption_value_pairs[0].value = str_values[1];
+
+ caption_value_pairs[1].item = "Network";
+ STRLCPY(str_values[1],
+ (char *) PIC(NETWORK_NAMES[G_context.auth.network]),
+ DETAIL_VALUE_MAX_LENGTH);
+ caption_value_pairs[1].value = str_values[1];
+ actual_pair = 2;
+ } else {
+ caption_value_pairs[0].item = "Contract ID";
+ FORMATTER_CHECK(print_sc_address(&G_context.auth.invoke_contract_args.address,
+ str_values[0],
+ DETAIL_VALUE_MAX_LENGTH,
+ 0,
+ 0))
+ caption_value_pairs[0].value = str_values[0];
+
+ caption_value_pairs[1].item = "Function";
+ STRLCPY(str_values[1],
+ (char *) G_context.auth.invoke_contract_args.function_name.text,
+ DETAIL_VALUE_MAX_LENGTH);
+ caption_value_pairs[1].value = str_values[1];
+
+ caption_value_pairs[2].item = "Network";
+ STRLCPY(str_values[2],
+ (char *) PIC(NETWORK_NAMES[G_context.auth.network]),
+ DETAIL_VALUE_MAX_LENGTH);
+ caption_value_pairs[2].value = str_values[2];
+
+ caption_value_pairs[3].item = "Nonce";
+ FORMATTER_CHECK(print_uint(G_context.auth.nonce, str_values[3], DETAIL_VALUE_MAX_LENGTH))
+ caption_value_pairs[3].value = str_values[3];
+
+ caption_value_pairs[4].item = "Sig Exp Ledger";
+ FORMATTER_CHECK(
+ print_uint(G_context.auth.signature_exp_ledger, str_values[4], DETAIL_VALUE_MAX_LENGTH))
+ caption_value_pairs[4].value = str_values[4];
+
+ switch (G_context.auth.invoke_contract_args.contract_type) {
+ case SOROBAN_CONTRACT_TYPE_UNVERIFIED:
+ caption_value_pairs[5].item = "Soroban Auth Hash";
+ FORMATTER_CHECK(
+ format_hex(G_context.hash, 32, str_values[5], DETAIL_VALUE_MAX_LENGTH))
+ caption_value_pairs[5].value = str_values[5];
+ actual_pair = 6;
+ break;
+ case SOROBAN_CONTRACT_TYPE_ASSET_APPROVE:
+ caption_value_pairs[5].item = "Spender";
+ FORMATTER_CHECK(
+ print_sc_address(&G_context.auth.invoke_contract_args.asset_approve.spender,
+ str_values[5],
+ DETAIL_VALUE_MAX_LENGTH,
+ 0,
+ 0))
+ caption_value_pairs[5].value = str_values[5];
+
+ caption_value_pairs[6].item = "From";
+ FORMATTER_CHECK(
+ print_sc_address(&G_context.auth.invoke_contract_args.asset_approve.from,
+ str_values[6],
+ DETAIL_VALUE_MAX_LENGTH,
+ 0,
+ 0))
+ caption_value_pairs[6].value = str_values[6];
+
+ caption_value_pairs[7].item = "Amount";
+ print_amount(G_context.auth.invoke_contract_args.asset_approve.amount,
+ NULL,
+ G_context.auth.network,
+ str_values[7],
+ DETAIL_VALUE_MAX_LENGTH);
+ STRLCAT(str_values[7], " ", DETAIL_VALUE_MAX_LENGTH);
+ STRLCAT(str_values[7],
+ G_context.auth.invoke_contract_args.asset_approve.asset_code,
+ DETAIL_VALUE_MAX_LENGTH);
+ caption_value_pairs[7].value = str_values[7];
+
+ caption_value_pairs[8].item = "Approve Expire Ledger";
+ print_uint(G_context.auth.invoke_contract_args.asset_approve.expiration_ledger,
+ str_values[8],
+ DETAIL_VALUE_MAX_LENGTH);
+ caption_value_pairs[8].value = str_values[8];
+
+ actual_pair = 9;
+ break;
+ case SOROBAN_CONTRACT_TYPE_ASSET_TRANSFER:
+ caption_value_pairs[5].item = "Transfer";
+ FORMATTER_CHECK(
+ print_amount(G_context.auth.invoke_contract_args.asset_transfer.amount,
+ NULL,
+ G_context.auth.network,
+ str_values[5],
+ DETAIL_VALUE_MAX_LENGTH))
+ STRLCAT(str_values[5], " ", DETAIL_VALUE_MAX_LENGTH);
+ STRLCAT(str_values[5],
+ G_context.auth.invoke_contract_args.asset_transfer.asset_code,
+ DETAIL_VALUE_MAX_LENGTH);
+ caption_value_pairs[5].value = str_values[5];
+
+ caption_value_pairs[6].item = "From";
+ FORMATTER_CHECK(
+ print_sc_address(&G_context.auth.invoke_contract_args.asset_transfer.from,
+ str_values[6],
+ DETAIL_VALUE_MAX_LENGTH,
+ 0,
+ 0))
+ caption_value_pairs[6].value = str_values[6];
+
+ caption_value_pairs[7].item = "To";
+ FORMATTER_CHECK(
+ print_sc_address(&G_context.auth.invoke_contract_args.asset_transfer.to,
+ str_values[7],
+ DETAIL_VALUE_MAX_LENGTH,
+ 0,
+ 0))
+ caption_value_pairs[7].value = str_values[7];
+ actual_pair = 8;
+ break;
+ }
+ }
+}
+
+static void rejectConfirmation(void) {
+ ui_action_validate_transaction(false);
+ nbgl_useCaseStatus("Soroban Auth\nRejected", false, ui_menu_main);
+}
+
+static void rejectChoice(void) {
+ nbgl_useCaseConfirm("Reject Soroban Auth?",
+ NULL,
+ "Yes, Reject",
+ "Go back to Soroban Auth",
+ rejectConfirmation);
+}
+
+static void reviewChoice(bool confirm) {
+ if (confirm) {
+ ui_action_validate_transaction(true);
+ nbgl_useCaseStatus("SOROBAN AUTH\nSIGNED", true, ui_menu_main);
+ } else {
+ rejectChoice();
+ }
+}
+
+static void reviewStart(void) {
+ if (G_context.auth.invoke_contract_args.contract_type == SOROBAN_CONTRACT_TYPE_UNVERIFIED) {
+ nbgl_useCaseReviewStart(&C_icon_stellar_64px,
+ "Review Soroban Auth",
+ "",
+ "Reject Soroban Auth",
+ reviewWarning,
+ rejectChoice);
+ } else {
+ nbgl_useCaseReviewStart(&C_icon_stellar_64px,
+ "Review Soroban Auth",
+ "",
+ "Reject Soroban Auth",
+ reviewContinue,
+ rejectChoice);
+ }
+}
+
+static void reviewWarning(void) {
+ nbgl_useCaseReviewStart(NULL,
+ "WARNING",
+ "Unverified contract,\nwill not display details",
+ "Reject transaction",
+ reviewContinue,
+ rejectChoice);
+}
+
+static void reviewContinue(void) {
+ pairList.pairs = caption_value_pairs;
+ pairList.nbPairs = actual_pair;
+
+ infoLongPress.text = "Sign Soroban Auth?";
+ infoLongPress.icon = &C_icon_stellar_64px;
+ infoLongPress.longPressText = "Hold to sign";
+ infoLongPress.longPressToken = 0;
+ infoLongPress.tuneId = TUNE_TAP_CASUAL;
+
+ nbgl_useCaseStaticReview(&pairList, &infoLongPress, "Reject Soroban Auth", reviewChoice);
+}
+
+int ui_approve_soroban_auth_init() {
+ if (G_context.req_type != CONFIRM_SOROBAN_AUTHORATION || G_context.state != STATE_PARSED) {
+ G_context.state = STATE_NONE;
+ return io_send_sw(SW_BAD_STATE);
+ }
+ preparePage();
+ reviewStart();
+ return 0;
+}
+#endif // HAVE_NBGL
diff --git a/src/utils.c b/src/utils.c
index 44f685b4..f5444679 100644
--- a/src/utils.c
+++ b/src/utils.c
@@ -113,6 +113,12 @@ bool encode_pre_auth_x_key(const uint8_t raw_pre_auth_tx[static RAW_PRE_AUTH_TX_
return encode_key(raw_pre_auth_tx, VERSION_BYTE_PRE_AUTH_TX_KEY, out, out_len);
}
+bool encode_contract(const uint8_t raw_contract[static RAW_CONTRACT_KEY_SIZE],
+ char *out,
+ size_t out_len) {
+ return encode_key(raw_contract, VERSION_BYTE_CONTRACT, out, out_len);
+}
+
bool encode_ed25519_signed_payload(const ed25519_signed_payload_t *signed_payload,
char *out,
size_t out_len) {
@@ -225,6 +231,21 @@ bool print_account_id(const account_id_t account_id,
return encode_ed25519_public_key(account_id, out, out_len);
}
+bool print_contract_id(const uint8_t *contract_id,
+ char *out,
+ size_t out_len,
+ uint8_t num_chars_l,
+ uint8_t num_chars_r) {
+ if (num_chars_l > 0) {
+ char buffer[ENCODED_CONTRACT_KEY_LENGTH];
+ if (!encode_contract(contract_id, buffer, sizeof(buffer))) {
+ return false;
+ }
+ return print_summary(buffer, out, out_len, num_chars_l, num_chars_r);
+ }
+ return encode_contract(contract_id, out, out_len);
+}
+
bool print_hash_x_key(const uint8_t raw_hash_x[static RAW_HASH_X_KEY_SIZE],
char *out,
size_t out_len,
@@ -254,6 +275,7 @@ bool print_pre_auth_x_key(const uint8_t raw_pre_auth_tx[static RAW_PRE_AUTH_TX_K
}
return encode_pre_auth_x_key(raw_pre_auth_tx, out, out_len);
}
+
bool print_ed25519_signed_payload(const ed25519_signed_payload_t *signed_payload,
char *out,
size_t out_len,
@@ -269,6 +291,19 @@ bool print_ed25519_signed_payload(const ed25519_signed_payload_t *signed_payload
return print_summary(tmp, out, out_len, num_chars_l, num_chars_r);
}
+bool print_sc_address(const sc_address_t *sc_address,
+ char *out,
+ size_t out_len,
+ uint8_t num_chars_l,
+ uint8_t num_chars_r) {
+ if (sc_address->type == SC_ADDRESS_TYPE_ACCOUNT) {
+ return print_account_id(sc_address->address, out, out_len, num_chars_l, num_chars_r);
+ } else {
+ return print_contract_id(sc_address->address, out, out_len, num_chars_l, num_chars_r);
+ }
+ return true;
+}
+
bool print_muxed_account(const muxed_account_t *muxed_account,
char *out,
size_t out_len,
diff --git a/src/utils.h b/src/utils.h
index b1871517..84d9b624 100644
--- a/src/utils.h
+++ b/src/utils.h
@@ -2,6 +2,27 @@
#include "./types.h"
+#define STRLCPY(dst, src, size) \
+ { \
+ size_t len = strlcpy(dst, src, size); \
+ if (len >= size) { \
+ THROW(SW_TX_FORMATTING_FAIL); \
+ } \
+ }
+
+#define FORMATTER_CHECK(x) \
+ { \
+ if (!(x)) THROW(SW_TX_FORMATTING_FAIL); \
+ }
+
+#define STRLCAT(dst, src, size) \
+ { \
+ size_t len = strlcat(dst, src, size); \
+ if (len >= size) { \
+ THROW(SW_TX_FORMATTING_FAIL); \
+ } \
+ }
+
bool encode_ed25519_public_key(const uint8_t raw_public_key[static RAW_ED25519_PUBLIC_KEY_SIZE],
char *out,
size_t out_len);
@@ -75,6 +96,12 @@ bool print_ed25519_signed_payload(const ed25519_signed_payload_t *signed_payload
uint8_t num_chars_l,
uint8_t num_chars_r);
+bool print_sc_address(const sc_address_t *sc_address,
+ char *out,
+ size_t out_len,
+ uint8_t num_chars_l,
+ uint8_t num_chars_r);
+
bool print_muxed_account(const muxed_account_t *muxed_account,
char *out,
size_t out_len,
diff --git a/tests_common_js/package-lock.json b/tests_common_js/package-lock.json
index c08d8584..1e2889aa 100644
--- a/tests_common_js/package-lock.json
+++ b/tests_common_js/package-lock.json
@@ -9,13 +9,47 @@
"version": "1.0.0",
"license": "Apache-2.0",
"dependencies": {
- "stellar-base": "^8.1.0"
+ "@stellar/stellar-base": "^11.0.0"
},
"devDependencies": {
"@types/node": "^17.0.29",
"typescript": "^4.6.3"
}
},
+ "node_modules/@stellar/js-xdr": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@stellar/js-xdr/-/js-xdr-3.1.0.tgz",
+ "integrity": "sha512-mYTyFnhgyQgyvpAYZRO1LurUn2MxcIZRj74zZz/BxKEk7zrL4axhQ1ez0HL2BRi0wlG6cHn5BeD/t9Xcyp7CSQ=="
+ },
+ "node_modules/@stellar/stellar-base": {
+ "version": "11.0.0",
+ "resolved": "https://registry.npmjs.org/@stellar/stellar-base/-/stellar-base-11.0.0.tgz",
+ "integrity": "sha512-KPTjaWJCG2m7hMCPRWFGGPaG5qOkgPLWvFVOhe1HUy7dlE4MxxPfdusz0mcLkf6VT7doqhLB1rIt0D9M2GgQcQ==",
+ "dependencies": {
+ "@stellar/js-xdr": "^3.1.0",
+ "base32.js": "^0.1.0",
+ "bignumber.js": "^9.1.2",
+ "buffer": "^6.0.3",
+ "sha.js": "^2.3.6",
+ "tweetnacl": "^1.0.3",
+ "typescript": "^5.3.3"
+ },
+ "optionalDependencies": {
+ "sodium-native": "^4.0.8"
+ }
+ },
+ "node_modules/@stellar/stellar-base/node_modules/typescript": {
+ "version": "5.3.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz",
+ "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==",
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=14.17"
+ }
+ },
"node_modules/@types/node": {
"version": "17.0.29",
"resolved": "https://registry.npmmirror.com/@types/node/-/node-17.0.29.tgz",
@@ -32,70 +66,82 @@
},
"node_modules/base64-js": {
"version": "1.5.1",
- "resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz",
- "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
+ "resolved": "https://mirrors.cloud.tencent.com/npm/base64-js/-/base64-js-1.5.1.tgz",
+ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
},
"node_modules/bignumber.js": {
- "version": "4.1.0",
- "resolved": "https://registry.npmmirror.com/bignumber.js/-/bignumber.js-4.1.0.tgz",
- "integrity": "sha512-eJzYkFYy9L4JzXsbymsFn3p54D+llV27oTQ+ziJG7WFRheJcNZilgVXMG0LoZtlQSKBsJdWtLFqOD0u+U0jZKA==",
+ "version": "9.1.2",
+ "resolved": "https://mirrors.cloud.tencent.com/npm/bignumber.js/-/bignumber.js-9.1.2.tgz",
+ "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==",
"engines": {
"node": "*"
}
},
"node_modules/buffer": {
- "version": "5.7.1",
- "resolved": "https://registry.npmmirror.com/buffer/-/buffer-5.7.1.tgz",
- "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
+ "version": "6.0.3",
+ "resolved": "https://mirrors.cloud.tencent.com/npm/buffer/-/buffer-6.0.3.tgz",
+ "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
"dependencies": {
"base64-js": "^1.3.1",
- "ieee754": "^1.1.13"
- }
- },
- "node_modules/crc": {
- "version": "3.8.0",
- "resolved": "https://registry.npmmirror.com/crc/-/crc-3.8.0.tgz",
- "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==",
- "dependencies": {
- "buffer": "^5.1.0"
+ "ieee754": "^1.2.1"
}
},
"node_modules/ieee754": {
"version": "1.2.1",
- "resolved": "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz",
- "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="
+ "resolved": "https://mirrors.cloud.tencent.com/npm/ieee754/-/ieee754-1.2.1.tgz",
+ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ]
},
"node_modules/inherits": {
"version": "2.0.4",
"resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz",
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
},
- "node_modules/js-xdr": {
- "version": "1.3.0",
- "resolved": "https://registry.npmmirror.com/js-xdr/-/js-xdr-1.3.0.tgz",
- "integrity": "sha512-fjLTm2uBtFvWsE3l2J14VjTuuB8vJfeTtYuNS7LiLHDWIX2kt0l1pqq9334F8kODUkKPMuULjEcbGbkFFwhx5g==",
- "dependencies": {
- "lodash": "^4.17.5",
- "long": "^2.2.3"
- }
- },
- "node_modules/lodash": {
- "version": "4.17.21",
- "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
- },
- "node_modules/long": {
- "version": "2.4.0",
- "resolved": "https://registry.npmmirror.com/long/-/long-2.4.0.tgz",
- "integrity": "sha512-ijUtjmO/n2A5PaosNG9ZGDsQ3vxJg7ZW8vsY8Kp0f2yIZWhSJvjmegV7t+9RPQKxKrvj8yKGehhS+po14hPLGQ==",
- "engines": {
- "node": ">=0.6"
- }
- },
"node_modules/node-gyp-build": {
- "version": "4.4.0",
- "resolved": "https://registry.npmmirror.com/node-gyp-build/-/node-gyp-build-4.4.0.tgz",
- "integrity": "sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ==",
+ "version": "4.7.1",
+ "resolved": "https://mirrors.cloud.tencent.com/npm/node-gyp-build/-/node-gyp-build-4.7.1.tgz",
+ "integrity": "sha512-wTSrZ+8lsRRa3I3H8Xr65dLWSgCvY2l4AOnaeKdPA9TB/WYMPaTcrzf3rXvFoVvjKNVnu0CcWSx54qq9GKRUYg==",
"optional": true,
"bin": {
"node-gyp-build": "bin.js",
@@ -121,30 +167,13 @@
}
},
"node_modules/sodium-native": {
- "version": "3.3.0",
- "resolved": "https://registry.npmmirror.com/sodium-native/-/sodium-native-3.3.0.tgz",
- "integrity": "sha512-rg6lCDM/qa3p07YGqaVD+ciAbUqm6SoO4xmlcfkbU5r1zIGrguXztLiEtaLYTV5U6k8KSIUFmnU3yQUSKmf6DA==",
+ "version": "4.0.9",
+ "resolved": "https://registry.npmjs.org/sodium-native/-/sodium-native-4.0.9.tgz",
+ "integrity": "sha512-nuEaJkwQMjzZOgD6N/yTJAWuzeOq+HKnBR7Qo+geZGorf/AkyBEtwIEjnd2YSs21w/TuFKCgbo2i6j7Uv+kVDQ==",
"hasInstallScript": true,
"optional": true,
"dependencies": {
- "node-gyp-build": "^4.3.0"
- }
- },
- "node_modules/stellar-base": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/stellar-base/-/stellar-base-8.1.0.tgz",
- "integrity": "sha512-sQaLZZ2qaFUokOtFVfimFNCCZuX5QEYV2Zxa4Ve+br8cdv1pl6AOaAlpyjs0T7E4V3FmvLi5MJkUQ50i0yHfmA==",
- "dependencies": {
- "base32.js": "^0.1.0",
- "bignumber.js": "^4.0.0",
- "crc": "^3.5.0",
- "js-xdr": "^1.1.3",
- "lodash": "^4.17.21",
- "sha.js": "^2.3.6",
- "tweetnacl": "^1.0.3"
- },
- "optionalDependencies": {
- "sodium-native": "^3.3.0"
+ "node-gyp-build": "^4.6.0"
}
},
"node_modules/tweetnacl": {
@@ -167,6 +196,33 @@
}
},
"dependencies": {
+ "@stellar/js-xdr": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@stellar/js-xdr/-/js-xdr-3.1.0.tgz",
+ "integrity": "sha512-mYTyFnhgyQgyvpAYZRO1LurUn2MxcIZRj74zZz/BxKEk7zrL4axhQ1ez0HL2BRi0wlG6cHn5BeD/t9Xcyp7CSQ=="
+ },
+ "@stellar/stellar-base": {
+ "version": "11.0.0",
+ "resolved": "https://registry.npmjs.org/@stellar/stellar-base/-/stellar-base-11.0.0.tgz",
+ "integrity": "sha512-KPTjaWJCG2m7hMCPRWFGGPaG5qOkgPLWvFVOhe1HUy7dlE4MxxPfdusz0mcLkf6VT7doqhLB1rIt0D9M2GgQcQ==",
+ "requires": {
+ "@stellar/js-xdr": "^3.1.0",
+ "base32.js": "^0.1.0",
+ "bignumber.js": "^9.1.2",
+ "buffer": "^6.0.3",
+ "sha.js": "^2.3.6",
+ "sodium-native": "^4.0.8",
+ "tweetnacl": "^1.0.3",
+ "typescript": "^5.3.3"
+ },
+ "dependencies": {
+ "typescript": {
+ "version": "5.3.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz",
+ "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw=="
+ }
+ }
+ },
"@types/node": {
"version": "17.0.29",
"resolved": "https://registry.npmmirror.com/@types/node/-/node-17.0.29.tgz",
@@ -180,34 +236,26 @@
},
"base64-js": {
"version": "1.5.1",
- "resolved": "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz",
+ "resolved": "https://mirrors.cloud.tencent.com/npm/base64-js/-/base64-js-1.5.1.tgz",
"integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="
},
"bignumber.js": {
- "version": "4.1.0",
- "resolved": "https://registry.npmmirror.com/bignumber.js/-/bignumber.js-4.1.0.tgz",
- "integrity": "sha512-eJzYkFYy9L4JzXsbymsFn3p54D+llV27oTQ+ziJG7WFRheJcNZilgVXMG0LoZtlQSKBsJdWtLFqOD0u+U0jZKA=="
+ "version": "9.1.2",
+ "resolved": "https://mirrors.cloud.tencent.com/npm/bignumber.js/-/bignumber.js-9.1.2.tgz",
+ "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug=="
},
"buffer": {
- "version": "5.7.1",
- "resolved": "https://registry.npmmirror.com/buffer/-/buffer-5.7.1.tgz",
- "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
+ "version": "6.0.3",
+ "resolved": "https://mirrors.cloud.tencent.com/npm/buffer/-/buffer-6.0.3.tgz",
+ "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
"requires": {
"base64-js": "^1.3.1",
- "ieee754": "^1.1.13"
- }
- },
- "crc": {
- "version": "3.8.0",
- "resolved": "https://registry.npmmirror.com/crc/-/crc-3.8.0.tgz",
- "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==",
- "requires": {
- "buffer": "^5.1.0"
+ "ieee754": "^1.2.1"
}
},
"ieee754": {
"version": "1.2.1",
- "resolved": "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz",
+ "resolved": "https://mirrors.cloud.tencent.com/npm/ieee754/-/ieee754-1.2.1.tgz",
"integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="
},
"inherits": {
@@ -215,29 +263,10 @@
"resolved": "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz",
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
},
- "js-xdr": {
- "version": "1.3.0",
- "resolved": "https://registry.npmmirror.com/js-xdr/-/js-xdr-1.3.0.tgz",
- "integrity": "sha512-fjLTm2uBtFvWsE3l2J14VjTuuB8vJfeTtYuNS7LiLHDWIX2kt0l1pqq9334F8kODUkKPMuULjEcbGbkFFwhx5g==",
- "requires": {
- "lodash": "^4.17.5",
- "long": "^2.2.3"
- }
- },
- "lodash": {
- "version": "4.17.21",
- "resolved": "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg=="
- },
- "long": {
- "version": "2.4.0",
- "resolved": "https://registry.npmmirror.com/long/-/long-2.4.0.tgz",
- "integrity": "sha512-ijUtjmO/n2A5PaosNG9ZGDsQ3vxJg7ZW8vsY8Kp0f2yIZWhSJvjmegV7t+9RPQKxKrvj8yKGehhS+po14hPLGQ=="
- },
"node-gyp-build": {
- "version": "4.4.0",
- "resolved": "https://registry.npmmirror.com/node-gyp-build/-/node-gyp-build-4.4.0.tgz",
- "integrity": "sha512-amJnQCcgtRVw9SvoebO3BKGESClrfXGCUTX9hSn1OuGQTQBOZmVd0Z0OlecpuRksKvbsUqALE8jls/ErClAPuQ==",
+ "version": "4.7.1",
+ "resolved": "https://mirrors.cloud.tencent.com/npm/node-gyp-build/-/node-gyp-build-4.7.1.tgz",
+ "integrity": "sha512-wTSrZ+8lsRRa3I3H8Xr65dLWSgCvY2l4AOnaeKdPA9TB/WYMPaTcrzf3rXvFoVvjKNVnu0CcWSx54qq9GKRUYg==",
"optional": true
},
"safe-buffer": {
@@ -255,27 +284,12 @@
}
},
"sodium-native": {
- "version": "3.3.0",
- "resolved": "https://registry.npmmirror.com/sodium-native/-/sodium-native-3.3.0.tgz",
- "integrity": "sha512-rg6lCDM/qa3p07YGqaVD+ciAbUqm6SoO4xmlcfkbU5r1zIGrguXztLiEtaLYTV5U6k8KSIUFmnU3yQUSKmf6DA==",
+ "version": "4.0.9",
+ "resolved": "https://registry.npmjs.org/sodium-native/-/sodium-native-4.0.9.tgz",
+ "integrity": "sha512-nuEaJkwQMjzZOgD6N/yTJAWuzeOq+HKnBR7Qo+geZGorf/AkyBEtwIEjnd2YSs21w/TuFKCgbo2i6j7Uv+kVDQ==",
"optional": true,
"requires": {
- "node-gyp-build": "^4.3.0"
- }
- },
- "stellar-base": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/stellar-base/-/stellar-base-8.1.0.tgz",
- "integrity": "sha512-sQaLZZ2qaFUokOtFVfimFNCCZuX5QEYV2Zxa4Ve+br8cdv1pl6AOaAlpyjs0T7E4V3FmvLi5MJkUQ50i0yHfmA==",
- "requires": {
- "base32.js": "^0.1.0",
- "bignumber.js": "^4.0.0",
- "crc": "^3.5.0",
- "js-xdr": "^1.1.3",
- "lodash": "^4.17.21",
- "sha.js": "^2.3.6",
- "sodium-native": "^3.3.0",
- "tweetnacl": "^1.0.3"
+ "node-gyp-build": "^4.6.0"
}
},
"tweetnacl": {
diff --git a/tests_common_js/package.json b/tests_common_js/package.json
index ebfe30bf..eef780c7 100644
--- a/tests_common_js/package.json
+++ b/tests_common_js/package.json
@@ -25,7 +25,7 @@
},
"homepage": "https://github.com/LedgerHQ/app-stellar#readme",
"dependencies": {
- "stellar-base": "^8.1.0"
+ "@stellar/stellar-base": "^11.0.0"
},
"devDependencies": {
"@types/node": "^17.0.29",
diff --git a/tests_common_js/src/index.ts b/tests_common_js/src/index.ts
index 463e43ca..8ffa61f2 100644
--- a/tests_common_js/src/index.ts
+++ b/tests_common_js/src/index.ts
@@ -1,3 +1,4 @@
+import exp = require("constants");
import {
Operation,
TransactionBuilder,
@@ -13,7 +14,7 @@ import {
LiquidityPoolAsset,
MuxedAccount,
LiquidityPoolId,
-} from "stellar-base";
+} from "@stellar/stellar-base";
// mnemonic: 'other base behind follow wet put glad muscle unlock sell income october'
// index 0: GDUTHCF37UX32EMANXIL2WOOVEDZ47GHBTT3DYKU6EKM37SOIZXM2FN7 / SAIYWGGWU2WMXYDSK33UBQBMBDKU4TTJVY3ZIFF24H2KQDR7RQW5KAEK
@@ -1213,6 +1214,463 @@ export function opLiquidityPoolWithdraw() {
.build();
}
+export function opInvokeHostFunctionUploadWasm() {
+ /**
+ * soroban --very-verbose contract deploy \
+ --wasm ./increment/target/wasm32-unknown-unknown/release/soroban_increment_contract.wasm \
+ --source SAIYWGGWU2WMXYDSK33UBQBMBDKU4TTJVY3ZIFF24H2KQDR7RQW5KAEK \
+ --rpc-url https://soroban-testnet.stellar.org \
+ --network-passphrase 'Test SDF Network ; September 2015'
+ */
+ const xdr = "AAAAAgAAAADpM4i7/S+9EYBt0L1ZzqkHnnzHDOex4VTxFM3+TkZuzQAAcdcALZ/tAAAAAQAAAAAAAAAAAAAAAQAAAAEAAAAA6TOIu/0vvRGAbdC9Wc6pB558xwznseFU8RTN/k5Gbs0AAAAYAAAAAgAAAkwAYXNtAQAAAAEVBGACfn4BfmADfn5+AX5gAAF+YAAAAhkEAWwBMAAAAWwBMQAAAWwBXwABAWwBOAAAAwUEAgMDAwUDAQAQBhkDfwFBgIDAAAt/AEGAgMAAC38AQYCAwAALBzUFBm1lbW9yeQIACWluY3JlbWVudAAEAV8ABwpfX2RhdGFfZW5kAwELX19oZWFwX2Jhc2UDAgqnAQSSAQIBfwF+QQAhAAJAAkACQEKOutCvhtQ5QgIQgICAgABCAVINAEKOutCvhtQ5QgIQgYCAgAAiAUL/AYNCBFINASABQiCIpyEACyAAQQFqIgBFDQFCjrrQr4bUOSAArUIghkIEhCIBQgIQgoCAgAAaQoSAgICgBkKEgICAwAwQg4CAgAAaIAEPCwAACxCFgICAAAALCQAQhoCAgAAACwQAAAALAgALAHMOY29udHJhY3RzcGVjdjAAAAAAAAAAQEluY3JlbWVudCBpbmNyZW1lbnRzIGFuIGludGVybmFsIGNvdW50ZXIsIGFuZCByZXR1cm5zIHRoZSB2YWx1ZS4AAAAJaW5jcmVtZW50AAAAAAAAAAAAAAEAAAAEAB4RY29udHJhY3RlbnZtZXRhdjAAAAAAAAAAFAAAADkAcw5jb250cmFjdG1ldGF2MAAAAAAAAAAFcnN2ZXIAAAAAAAAGMS43My4wAAAAAAAAAAAACHJzc2RrdmVyAAAAMzIwLjAuMC1yYzIjMDk5MjQxM2Y5YjA1ZTViZmIxZjg3MmJjZTk5ZTg5ZDkxMjliMmU2MQAAAAAAAAAAAQAAAAAAAAABAAAABxPhaFi95KtQoAbb8HFyKI8+wZ2GQNGoUwFsYMFcJREXAAAAAAAYZjYAAAKwAAAAAAAAAAAAAAAMAAAAAU5Gbs0AAABA4Qgx6lFhpvkLoEOoHEV2O/B0+ALtMwuX4Kh3iPmI4CtYXBFNMUmKDnKvsiZE/moqNtxyD8Ce0ZblL6rhjCCaBA==";
+ return TransactionBuilder.fromXDR(xdr, Networks.TESTNET);
+}
+
+export function opInvokeHostFunctionCreateContractWasmId() {
+ /**
+ * soroban --very-verbose contract deploy \
+ --wasm ./increment/target/wasm32-unknown-unknown/release/soroban_increment_contract.wasm \
+ --source SAIYWGGWU2WMXYDSK33UBQBMBDKU4TTJVY3ZIFF24H2KQDR7RQW5KAEK \
+ --rpc-url https://soroban-testnet.stellar.org \
+ --network-passphrase 'Test SDF Network ; September 2015'
+ */
+ const xdr = "AAAAAgAAAADpM4i7/S+9EYBt0L1ZzqkHnnzHDOex4VTxFM3+TkZuzQAB7iQALZ/tAAAAAgAAAAAAAAAAAAAAAQAAAAAAAAAYAAAAAQAAAAAAAAAAAAAAAOkziLv9L70RgG3QvVnOqQeefMcM57HhVPEUzf5ORm7NqDN1ZmOZBULw7RQpLx1hMwklzeYyod2tz7XGLOGlAnsAAAAAE+FoWL3kq1CgBtvwcXIojz7BnYZA0ahTAWxgwVwlERcAAAABAAAAAAAAAAEAAAAAAAAAAAAAAADpM4i7/S+9EYBt0L1ZzqkHnnzHDOex4VTxFM3+TkZuzagzdWZjmQVC8O0UKS8dYTMJJc3mMqHdrc+1xizhpQJ7AAAAABPhaFi95KtQoAbb8HFyKI8+wZ2GQNGoUwFsYMFcJREXAAAAAAAAAAEAAAAAAAAAAQAAAAcT4WhYveSrUKAG2/BxciiPPsGdhkDRqFMBbGDBXCURFwAAAAEAAAAGAAAAASDg5o1dgbNGaFKMfUZ6NtiiHIsKeZQjTddBtARypKjgAAAAFAAAAAEAAbYGAAAC4AAAAGgAAAAAAACh8wAAAAFORm7NAAAAQB9/IVcMlt2Uo2f5SSwDUXEimmUOQMqgz2baGQlL6a4aH/Jyqpm5sGsraNzDlbu6W5VIcHkEtuGVY+d7kPNFHwU=";
+ return TransactionBuilder.fromXDR(xdr, Networks.TESTNET);
+}
+
+export function opInvokeHostFunctionCreateContractNewAsset() {
+ // import time
+
+ // from stellar_sdk import (
+ // Keypair,
+ // Network,
+ // SorobanServer,
+ // StrKey,
+ // TransactionBuilder,
+ // )
+ // from stellar_sdk import xdr as stellar_xdr
+ // from stellar_sdk.exceptions import PrepareTransactionException
+ // from stellar_sdk.soroban_rpc import GetTransactionStatus, SendTransactionStatus
+
+ // secret = "SAIYWGGWU2WMXYDSK33UBQBMBDKU4TTJVY3ZIFF24H2KQDR7RQW5KAEK"
+ // rpc_server_url = "https://soroban-testnet.stellar.org:443"
+ // network_passphrase = Network.TESTNET_NETWORK_PASSPHRASE
+
+ // kp = Keypair.from_secret(secret)
+ // soroban_server = SorobanServer(rpc_server_url)
+ // source = soroban_server.load_account(kp.public_key)
+
+ // tx = (
+ // TransactionBuilder(source, network_passphrase)
+ // .add_time_bounds(0, 0)
+ // .append_create_stellar_asset_contract_from_address_op(address=kp.public_key, salt=b'c' * 32, source=kp.public_key)
+ // .build()
+ // )
+
+ // try:
+ // tx = soroban_server.prepare_transaction(tx)
+ // except PrepareTransactionException as e:
+ // print(f"Got exception: {e.simulate_transaction_response}")
+ // raise e
+
+ // print(tx.to_xdr())
+
+ // tx.sign(kp)
+
+ // send_transaction_data = soroban_server.send_transaction(tx)
+ // print(f"sent transaction: {send_transaction_data}")
+ // if send_transaction_data.status != SendTransactionStatus.PENDING:
+ // raise Exception("send transaction failed")
+
+ // while True:
+ // print("waiting for transaction to be confirmed...")
+ // get_transaction_data = soroban_server.get_transaction(send_transaction_data.hash)
+ // if get_transaction_data.status != GetTransactionStatus.NOT_FOUND:
+ // break
+ // time.sleep(3)
+
+ // print(f"transaction: {get_transaction_data}")
+
+ // if get_transaction_data.status == GetTransactionStatus.SUCCESS:
+ // assert get_transaction_data.result_meta_xdr is not None
+ // transaction_meta = stellar_xdr.TransactionMeta.from_xdr(
+ // get_transaction_data.result_meta_xdr
+ // )
+ // result = transaction_meta.v3.soroban_meta.return_value.address.contract_id.hash # type: ignore
+ // contract_id = StrKey.encode_contract(result)
+ // print(f"contract id: {contract_id}")
+ // else:
+ // print(f"Transaction failed: {get_transaction_data.result_xdr}")
+
+ const xdr = "AAAAAgAAAADpM4i7/S+9EYBt0L1ZzqkHnnzHDOex4VTxFM3+TkZuzQABUbYALZ/tAAAACgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAOkziLv9L70RgG3QvVnOqQeefMcM57HhVPEUzf5ORm7NAAAAGAAAAAEAAAAAAAAAAAAAAADpM4i7/S+9EYBt0L1ZzqkHnnzHDOex4VTxFM3+TkZuzWNjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjAAAAAQAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAOkziLv9L70RgG3QvVnOqQeefMcM57HhVPEUzf5ORm7NY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2MAAAABAAAAAAAAAAEAAAAAAAAAAAAAAAEAAAAGAAAAAVvz5/0ZDBy7NBxhMS/CR+rdii7rHMTLZO5cDByDoxtUAAAAFAAAAAEAAXf0AAAAMAAAAEgAAAAAAACSxAAAAAA=";
+ return TransactionBuilder.fromXDR(xdr, Networks.TESTNET);
+}
+
+export function opInvokeHostFunctionCreateContractWrapAsset() {
+ /**
+ * soroban contract deploy \
+ --wasm ./increment/target/wasm32-unknown-unknown/release/soroban_increment_contract.wasm \
+ --source SAIYWGGWU2WMXYDSK33UBQBMBDKU4TTJVY3ZIFF24H2KQDR7RQW5KAEK \
+ --rpc-url https://soroban-testnet.stellar.org \
+ --network-passphrase 'Test SDF Network ; September 2015'
+ */
+ const xdr = "AAAAAgAAAADpM4i7/S+9EYBt0L1ZzqkHnnzHDOex4VTxFM3+TkZuzQAGY4YALZ/tAAAAAwAAAAAAAAAAAAAAAQAAAAAAAAAYAAAAAQAAAAEAAAACTEVER0VSAAAAAAAAAAAAAOLGgQ+bUJsmS/JcX/hJdFvPzHVliRnd2jaspzLmaehVAAAAAQAAAAAAAAABAAAAAAAAAAAAAAABAAAABgAAAAH1fw7+2c6SK9x+aL47FkMYOgIZwujCGmG2Ve5S7lUfFgAAABQAAAABAAOluwAAADAAAAHsAAAAAAABWgMAAAABTkZuzQAAAEAScsqMRjAFnQsVoZjDSfYjEGAOPXjgZaFvxaN1EuE0q/zuF+uukosgx7UaxNR7R1xvz0Rk27VtC+E0X/SNcWIC";
+ return TransactionBuilder.fromXDR(xdr, Networks.TESTNET);
+}
+
+export function opInvokeHostFunctionUnverifiedContract() {
+ /**
+ * soroban --very-verbose contract invoke \
+ --id CAQOBZUNLWA3GRTIKKGH2RT2G3MKEHELBJ4ZII2N25A3IBDSUSUOAUQU \
+ --source SAIYWGGWU2WMXYDSK33UBQBMBDKU4TTJVY3ZIFF24H2KQDR7RQW5KAEK \
+ --rpc-url https://soroban-testnet.stellar.org \
+ --network-passphrase 'Test SDF Network ; September 2015' \
+ -- \
+ increment
+ */
+ const xdr = "AAAAAgAAAADpM4i7/S+9EYBt0L1ZzqkHnnzHDOex4VTxFM3+TkZuzQABxvgALZ/tAAAABAAAAAAAAAAAAAAAAQAAAAAAAAAYAAAAAAAAAAEg4OaNXYGzRmhSjH1GejbYohyLCnmUI03XQbQEcqSo4AAAAAlpbmNyZW1lbnQAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAcT4WhYveSrUKAG2/BxciiPPsGdhkDRqFMBbGDBXCURFwAAAAEAAAAGAAAAASDg5o1dgbNGaFKMfUZ6NtiiHIsKeZQjTddBtARypKjgAAAAFAAAAAEAGQovAAADSAAAAIQAAAAAAAANSQAAAAFORm7NAAAAQMeYqOX1HnwH9heyEgce5OcjQEakm+vFFqtXBEdaHMqDvMBVCcy4u8WhVAbOWCvNQf+/wjIaj03un47sRyLJtwc=";
+ return TransactionBuilder.fromXDR(xdr, Networks.TESTNET);
+}
+
+export function opInvokeHostFunctionUnverifiedContractWithTransferFunction() {
+ // from stellar_sdk import Keypair, Network, SorobanServer, TransactionBuilder, scval
+
+ // rpc_server_url = "https://soroban-testnet.stellar.org:443"
+ // soroban_server = SorobanServer(rpc_server_url)
+ // network_passphrase = Network.TESTNET_NETWORK_PASSPHRASE
+
+ // alice_kp = Keypair.from_secret(
+ // "SAIYWGGWU2WMXYDSK33UBQBMBDKU4TTJVY3ZIFF24H2KQDR7RQW5KAEK"
+ // ) # GDUTHCF37UX32EMANXIL2WOOVEDZ47GHBTT3DYKU6EKM37SOIZXM2FN7
+ // bob_kp = Keypair.from_secret(
+ // "SAE52G23WPAS7MIR2OFGILLICLXXR4K6HSXZHMKD6C33JCAVVILIWYAA"
+ // ) # GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX
+ // native_token_contract_id = "CAQOBZUNLWA3GRTIKKGH2RT2G3MKEHELBJ4ZII2N25A3IBDSUSUOAUQU"
+
+ // alice_source = soroban_server.load_account(alice_kp.public_key)
+
+ // args = [
+ // scval.to_address(alice_kp.public_key), # from
+ // scval.to_address(bob_kp.public_key), # spender
+ // scval.to_int128(100 * 10 ** 7), # amount, 100 XLM
+ // scval.to_uint32(2990592)
+ // ]
+
+ // tx = (
+ // TransactionBuilder(alice_source, network_passphrase, base_fee=500)
+ // .add_time_bounds(0, 0)
+ // .append_invoke_contract_function_op(
+ // contract_id=native_token_contract_id,
+ // function_name="approve",
+ // parameters=args,
+ // )
+ // .build()
+ // )
+
+ // print(f"Unsigned XDR:\n{tx.to_xdr()}")
+ const xdr = "AAAAAgAAAADpM4i7/S+9EYBt0L1ZzqkHnnzHDOex4VTxFM3+TkZuzQAAAfQALZ/tAAAACAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAGAAAAAAAAAABIODmjV2Bs0ZoUox9Rno22KIciwp5lCNN10G0BHKkqOAAAAAHYXBwcm92ZQAAAAAEAAAAEgAAAAAAAAAA6TOIu/0vvRGAbdC9Wc6pB558xwznseFU8RTN/k5Gbs0AAAASAAAAAAAAAADixoEPm1CbJkvyXF/4SXRbz8x1ZYkZ3do2rKcy5mnoVQAAAAoAAAAAAAAAAAAAAAA7msoAAAAAAwAtogAAAAAAAAAAAAAAAAA=";
+ return TransactionBuilder.fromXDR(xdr, Networks.TESTNET);
+}
+
+export function opInvokeHostFunctionUnverifiedContractWithApproveFunction() {
+ // from stellar_sdk import Keypair, Network, SorobanServer, TransactionBuilder, scval
+
+ // rpc_server_url = "https://soroban-testnet.stellar.org:443"
+ // soroban_server = SorobanServer(rpc_server_url)
+ // network_passphrase = Network.TESTNET_NETWORK_PASSPHRASE
+
+ // alice_kp = Keypair.from_secret(
+ // "SAIYWGGWU2WMXYDSK33UBQBMBDKU4TTJVY3ZIFF24H2KQDR7RQW5KAEK"
+ // ) # GDUTHCF37UX32EMANXIL2WOOVEDZ47GHBTT3DYKU6EKM37SOIZXM2FN7
+ // bob_kp = Keypair.from_secret(
+ // "SAE52G23WPAS7MIR2OFGILLICLXXR4K6HSXZHMKD6C33JCAVVILIWYAA"
+ // ) # GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX
+ // native_token_contract_id = "CDLZFC3SYJYDZT7K67VZ75HPJVIEUVNIXF47ZG2FB2RMQQVU2HHGCYSC"
+
+ // alice_source = soroban_server.load_account(alice_kp.public_key)
+
+ // args = [
+ // scval.to_address(alice_kp.public_key), # from
+ // scval.to_address(bob_kp.public_key), # spender
+ // scval.to_int128(100 * 10 ** 7), # amount, 100 XLM
+ // scval.to_uint32(2990592)
+ // ]
+
+ // tx = (
+ // TransactionBuilder(alice_source, network_passphrase, base_fee=500)
+ // .add_time_bounds(0, 0)
+ // .append_invoke_contract_function_op(
+ // contract_id=native_token_contract_id,
+ // function_name="mock",
+ // parameters=args,
+ // source=alice_kp.public_key
+ // )
+ // .build()
+ // )
+
+ // print(f"Unsigned XDR:\n{tx.to_xdr()}")
+ const xdr = "AAAAAgAAAADpM4i7/S+9EYBt0L1ZzqkHnnzHDOex4VTxFM3+TkZuzQAAAfQALZ/tAAAACwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAOkziLv9L70RgG3QvVnOqQeefMcM57HhVPEUzf5ORm7NAAAAGAAAAAAAAAAB15KLcsJwPM/q9+uf9O9NUEpVqLl5/JtFDqLIQrTRzmEAAAAEbW9jawAAAAQAAAASAAAAAAAAAADpM4i7/S+9EYBt0L1ZzqkHnnzHDOex4VTxFM3+TkZuzQAAABIAAAAAAAAAAOLGgQ+bUJsmS/JcX/hJdFvPzHVliRnd2jaspzLmaehVAAAACgAAAAAAAAAAAAAAADuaygAAAAADAC2iAAAAAAAAAAAAAAAAAA==";
+ return TransactionBuilder.fromXDR(xdr, Networks.TESTNET);
+}
+
+export function opInvokeHostFunctionAssetTransfer() {
+ // import time
+
+ // from stellar_sdk import Keypair, Network, SorobanServer, TransactionBuilder, scval
+ // from stellar_sdk import xdr as stellar_xdr
+ // from stellar_sdk.exceptions import PrepareTransactionException
+ // from stellar_sdk.soroban_rpc import GetTransactionStatus, SendTransactionStatus
+
+ // rpc_server_url = "https://soroban-testnet.stellar.org:443"
+ // soroban_server = SorobanServer(rpc_server_url)
+ // network_passphrase = Network.TESTNET_NETWORK_PASSPHRASE
+
+ // alice_kp = Keypair.from_secret(
+ // "SAIYWGGWU2WMXYDSK33UBQBMBDKU4TTJVY3ZIFF24H2KQDR7RQW5KAEK"
+ // ) # GDUTHCF37UX32EMANXIL2WOOVEDZ47GHBTT3DYKU6EKM37SOIZXM2FN7
+ // bob_kp = Keypair.from_secret(
+ // "SAE52G23WPAS7MIR2OFGILLICLXXR4K6HSXZHMKD6C33JCAVVILIWYAA"
+ // ) # GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX
+ // native_token_contract_id = "CDLZFC3SYJYDZT7K67VZ75HPJVIEUVNIXF47ZG2FB2RMQQVU2HHGCYSC"
+
+ // alice_source = soroban_server.load_account(alice_kp.public_key)
+
+ // args = [
+ // scval.to_address(alice_kp.public_key), # from
+ // scval.to_address(bob_kp.public_key), # to
+ // scval.to_int128(100 * 10 ** 7), # amount, 100 XLM
+ // ]
+
+ // tx = (
+ // TransactionBuilder(alice_source, network_passphrase, base_fee=500)
+ // .add_time_bounds(0, 0)
+ // .append_invoke_contract_function_op(
+ // contract_id=native_token_contract_id,
+ // function_name="transfer",
+ // parameters=args,
+ // source=alice_kp.public_key
+ // )
+ // .build()
+ // )
+
+ // try:
+ // tx = soroban_server.prepare_transaction(tx)
+ // except PrepareTransactionException as e:
+ // print(f"Got exception: {e.simulate_transaction_response}")
+ // raise e
+
+ // print(f"Unsigned XDR:\n{tx.to_xdr()}")
+
+ // tx.sign(alice_kp)
+ // print(f"Signed XDR:\n{tx.to_xdr()}")
+
+ // send_transaction_data = soroban_server.send_transaction(tx)
+ // print(f"sent transaction: {send_transaction_data}")
+ // if send_transaction_data.status != SendTransactionStatus.PENDING:
+ // raise Exception("send transaction failed")
+ // while True:
+ // print("waiting for transaction to be confirmed...")
+ // get_transaction_data = soroban_server.get_transaction(send_transaction_data.hash)
+ // if get_transaction_data.status != GetTransactionStatus.NOT_FOUND:
+ // break
+ // time.sleep(3)
+
+ // print(f"transaction: {get_transaction_data}")
+
+ // if get_transaction_data.status == GetTransactionStatus.SUCCESS:
+ // assert get_transaction_data.result_meta_xdr is not None
+ // transaction_meta = stellar_xdr.TransactionMeta.from_xdr(
+ // get_transaction_data.result_meta_xdr
+ // )
+ // if transaction_meta.v3.soroban_meta.return_value.type == stellar_xdr.SCValType.SCV_VOID: # type: ignore[union-attr]
+ // print("send success")
+ // else:
+ // print(f"Transaction failed: {get_transaction_data.result_xdr}")
+
+ const xdr = "AAAAAgAAAADpM4i7/S+9EYBt0L1ZzqkHnnzHDOex4VTxFM3+TkZuzQACOxwALZ/tAAAACwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAOkziLv9L70RgG3QvVnOqQeefMcM57HhVPEUzf5ORm7NAAAAGAAAAAAAAAAB15KLcsJwPM/q9+uf9O9NUEpVqLl5/JtFDqLIQrTRzmEAAAAIdHJhbnNmZXIAAAADAAAAEgAAAAAAAAAA6TOIu/0vvRGAbdC9Wc6pB558xwznseFU8RTN/k5Gbs0AAAASAAAAAAAAAADixoEPm1CbJkvyXF/4SXRbz8x1ZYkZ3do2rKcy5mnoVQAAAAoAAAAAAAAAAAAAAAA7msoAAAAAAQAAAAAAAAAAAAAAAdeSi3LCcDzP6vfrn/TvTVBKVai5efybRQ6iyEK00c5hAAAACHRyYW5zZmVyAAAAAwAAABIAAAAAAAAAAOkziLv9L70RgG3QvVnOqQeefMcM57HhVPEUzf5ORm7NAAAAEgAAAAAAAAAA4saBD5tQmyZL8lxf+El0W8/MdWWJGd3aNqynMuZp6FUAAAAKAAAAAAAAAAAAAAAAO5rKAAAAAAAAAAABAAAAAAAAAAEAAAAGAAAAAdeSi3LCcDzP6vfrn/TvTVBKVai5efybRQ6iyEK00c5hAAAAFAAAAAEAAAACAAAAAAAAAADixoEPm1CbJkvyXF/4SXRbz8x1ZYkZ3do2rKcy5mnoVQAAAAAAAAAA6TOIu/0vvRGAbdC9Wc6pB558xwznseFU8RTN/k5Gbs0ABBGDAAACFAAAAOwAAAAAAAAAOwAAAAA=";
+ return TransactionBuilder.fromXDR(xdr, Networks.TESTNET);
+}
+
+export function opInvokeHostFunctionAssetApprove() {
+ // import time
+
+ // from stellar_sdk import Keypair, Network, SorobanServer, TransactionBuilder, scval
+ // from stellar_sdk import xdr as stellar_xdr
+ // from stellar_sdk.exceptions import PrepareTransactionException
+ // from stellar_sdk.soroban_rpc import GetTransactionStatus, SendTransactionStatus
+
+ // rpc_server_url = "https://soroban-testnet.stellar.org:443"
+ // soroban_server = SorobanServer(rpc_server_url)
+ // network_passphrase = Network.TESTNET_NETWORK_PASSPHRASE
+
+ // alice_kp = Keypair.from_secret(
+ // "SAIYWGGWU2WMXYDSK33UBQBMBDKU4TTJVY3ZIFF24H2KQDR7RQW5KAEK"
+ // ) # GDUTHCF37UX32EMANXIL2WOOVEDZ47GHBTT3DYKU6EKM37SOIZXM2FN7
+ // bob_kp = Keypair.from_secret(
+ // "SAE52G23WPAS7MIR2OFGILLICLXXR4K6HSXZHMKD6C33JCAVVILIWYAA"
+ // ) # GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX
+ // native_token_contract_id = "CDLZFC3SYJYDZT7K67VZ75HPJVIEUVNIXF47ZG2FB2RMQQVU2HHGCYSC"
+
+ // alice_source = soroban_server.load_account(alice_kp.public_key)
+
+ // args = [
+ // scval.to_address(alice_kp.public_key), # from
+ // scval.to_address(bob_kp.public_key), # spender
+ // scval.to_int128(1000 * 10 ** 7), # amount, 1000 XLM
+ // scval.to_uint32(2999592)
+ // ]
+
+ // tx = (
+ // TransactionBuilder(alice_source, network_passphrase, base_fee=500)
+ // .add_time_bounds(0, 0)
+ // .append_invoke_contract_function_op(
+ // contract_id=native_token_contract_id,
+ // function_name="approve",
+ // parameters=args,
+ // source=alice_kp.public_key
+ // )
+ // .build()
+ // )
+
+ // try:
+ // tx = soroban_server.prepare_transaction(tx)
+ // except PrepareTransactionException as e:
+ // print(f"Got exception: {e.simulate_transaction_response}")
+ // raise e
+
+ // print(f"Unsigned XDR:\n{tx.to_xdr()}")
+
+ // tx.sign(alice_kp)
+ // print(f"Signed XDR:\n{tx.to_xdr()}")
+
+ // send_transaction_data = soroban_server.send_transaction(tx)
+ // print(f"sent transaction: {send_transaction_data}")
+ // if send_transaction_data.status != SendTransactionStatus.PENDING:
+ // raise Exception("send transaction failed")
+ // while True:
+ // print("waiting for transaction to be confirmed...")
+ // get_transaction_data = soroban_server.get_transaction(send_transaction_data.hash)
+ // if get_transaction_data.status != GetTransactionStatus.NOT_FOUND:
+ // break
+ // time.sleep(3)
+
+ // print(f"transaction: {get_transaction_data}")
+
+ // if get_transaction_data.status == GetTransactionStatus.SUCCESS:
+ // assert get_transaction_data.result_meta_xdr is not None
+ // transaction_meta = stellar_xdr.TransactionMeta.from_xdr(
+ // get_transaction_data.result_meta_xdr
+ // )
+ // if transaction_meta.v3.soroban_meta.return_value.type == stellar_xdr.SCValType.SCV_VOID: # type: ignore[union-attr]
+ // print("send success")
+ // else:
+ // print(f"Transaction failed: {get_transaction_data.result_xdr}")
+ const xdr = "AAAAAgAAAADpM4i7/S+9EYBt0L1ZzqkHnnzHDOex4VTxFM3+TkZuzQADJ94ALZ/tAAAADAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAOkziLv9L70RgG3QvVnOqQeefMcM57HhVPEUzf5ORm7NAAAAGAAAAAAAAAAB15KLcsJwPM/q9+uf9O9NUEpVqLl5/JtFDqLIQrTRzmEAAAAHYXBwcm92ZQAAAAAEAAAAEgAAAAAAAAAA6TOIu/0vvRGAbdC9Wc6pB558xwznseFU8RTN/k5Gbs0AAAASAAAAAAAAAADixoEPm1CbJkvyXF/4SXRbz8x1ZYkZ3do2rKcy5mnoVQAAAAoAAAAAAAAAAAAAAAJUC+QAAAAAAwAtxSgAAAABAAAAAAAAAAAAAAAB15KLcsJwPM/q9+uf9O9NUEpVqLl5/JtFDqLIQrTRzmEAAAAHYXBwcm92ZQAAAAAEAAAAEgAAAAAAAAAA6TOIu/0vvRGAbdC9Wc6pB558xwznseFU8RTN/k5Gbs0AAAASAAAAAAAAAADixoEPm1CbJkvyXF/4SXRbz8x1ZYkZ3do2rKcy5mnoVQAAAAoAAAAAAAAAAAAAAAJUC+QAAAAAAwAtxSgAAAAAAAAAAQAAAAAAAAABAAAABgAAAAHXkotywnA8z+r365/0701QSlWouXn8m0UOoshCtNHOYQAAABQAAAABAAAAAQAAAAYAAAAB15KLcsJwPM/q9+uf9O9NUEpVqLl5/JtFDqLIQrTRzmEAAAAQAAAAAQAAAAIAAAAPAAAACUFsbG93YW5jZQAAAAAAABEAAAABAAAAAgAAAA8AAAAEZnJvbQAAABIAAAAAAAAAAOkziLv9L70RgG3QvVnOqQeefMcM57HhVPEUzf5ORm7NAAAADwAAAAdzcGVuZGVyAAAAABIAAAAAAAAAAOLGgQ+bUJsmS/JcX/hJdFvPzHVliRnd2jaspzLmaehVAAAAAAAEyB8AAAFYAAABLAAAAAAAAHGtAAAAAA==";
+ return TransactionBuilder.fromXDR(xdr, Networks.TESTNET);
+}
+
+export function opInvokeHostFunctionScvals() {
+ // from stellar_sdk import *
+ // from stellar_sdk import xdr
+
+ // kp0 = Keypair.from_secret("SAIYWGGWU2WMXYDSK33UBQBMBDKU4TTJVY3ZIFF24H2KQDR7RQW5KAEK")
+ // source = Account(kp0.public_key, 1234567890)
+
+ // scvals = [
+ // scval.to_bool(True),
+ // scval.to_void(),
+ // scval.to_uint32(1234),
+ // scval.to_int32(12345),
+ // scval.to_uint64(23432453),
+ // scval.to_int64(454546),
+ // scval.to_timepoint(2356623562),
+ // scval.to_duration(34543643),
+ // scval.to_uint128(43543645645645),
+ // scval.to_int128(43543645645645),
+ // scval.to_uint256(24358729874358025473024572),
+ // scval.to_int256(24358729874358025473024572),
+ // scval.to_bytes(b"this is test bytes"),
+ // scval.to_string("hello this is test string"),
+ // scval.to_symbol("testfunc"),
+ // scval.to_vec([scval.to_bool(True), scval.to_bool(False)]),
+ // scval.to_map(
+ // {
+ // scval.to_symbol("true"): scval.to_bool(True),
+ // scval.to_symbol("false"): scval.to_bool(False),
+ // }
+ // ),
+ // scval.to_address(kp0.public_key),
+ // scval.to_address("CDLZFC3SYJYDZT7K67VZ75HPJVIEUVNIXF47ZG2FB2RMQQVU2HHGCYSC"),
+ // xdr.SCVal(xdr.SCValType.SCV_LEDGER_KEY_CONTRACT_INSTANCE),
+ // xdr.SCVal(
+ // xdr.SCValType.SCV_LEDGER_KEY_NONCE, nonce_key=xdr.SCNonceKey(xdr.Int64(100))
+ // ),
+ // xdr.SCVal(
+ // xdr.SCValType.SCV_CONTRACT_INSTANCE,
+ // instance=xdr.SCContractInstance(
+ // executable=xdr.ContractExecutable(
+ // xdr.ContractExecutableType.CONTRACT_EXECUTABLE_STELLAR_ASSET
+ // ),
+ // storage=None,
+ // ),
+ // ),
+ // xdr.SCVal(
+ // xdr.SCValType.SCV_CONTRACT_INSTANCE,
+ // instance=xdr.SCContractInstance(
+ // executable=xdr.ContractExecutable(
+ // xdr.ContractExecutableType.CONTRACT_EXECUTABLE_WASM,
+ // wasm_hash=xdr.Hash(
+ // b"\xcf\x88\x84S\xd6`V\xbc\xb6\xaeY*\x91\x90s\xb5\x93\xb5\x96[\xff\xcb\xcf\xc3\x04\xacGT\x9e\xac\xda\xd6"
+ // ),
+ // ),
+ // storage=scval.to_map(
+ // {
+ // scval.to_symbol("true"): scval.to_bool(True),
+ // scval.to_symbol("false"): scval.to_bool(False),
+ // }
+ // ).map,
+ // ),
+ // ),
+ // ]
+ // tx = (
+ // TransactionBuilder(source, Network.TESTNET_NETWORK_PASSPHRASE, 500)
+ // .append_invoke_contract_function_op(
+ // contract_id="CDLZFC3SYJYDZT7K67VZ75HPJVIEUVNIXF47ZG2FB2RMQQVU2HHGCYSC",
+ // function_name="test",
+ // parameters=scvals,
+ // )
+ // .add_time_bounds(0, 0)
+ // .build()
+ // )
+
+ // print(tx.to_xdr())
+ const xdr = "AAAAAgAAAADpM4i7/S+9EYBt0L1ZzqkHnnzHDOex4VTxFM3+TkZuzQAAAfQAAAAASZYC0wAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAGAAAAAAAAAAB15KLcsJwPM/q9+uf9O9NUEpVqLl5/JtFDqLIQrTRzmEAAAAEdGVzdAAAABcAAAAAAAAAAQAAAAEAAAADAAAE0gAAAAQAADA5AAAABQAAAAABZY0FAAAABgAAAAAABu+SAAAABwAAAACMdzjKAAAACAAAAAACDxgbAAAACQAAAAAAAAAAAAAnmkuH600AAAAKAAAAAAAAAAAAACeaS4frTQAAAAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAUJilkdtaR8ljiPAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAUJilkdtaR8ljiPAAAAA0AAAASdGhpcyBpcyB0ZXN0IGJ5dGVzAAAAAAAOAAAAGWhlbGxvIHRoaXMgaXMgdGVzdCBzdHJpbmcAAAAAAAAPAAAACHRlc3RmdW5jAAAAEAAAAAEAAAACAAAAAAAAAAEAAAAAAAAAAAAAABEAAAABAAAAAgAAAA8AAAAEdHJ1ZQAAAAAAAAABAAAADwAAAAVmYWxzZQAAAAAAAAAAAAAAAAAAEgAAAAAAAAAA6TOIu/0vvRGAbdC9Wc6pB558xwznseFU8RTN/k5Gbs0AAAASAAAAAdeSi3LCcDzP6vfrn/TvTVBKVai5efybRQ6iyEK00c5hAAAAFAAAABUAAAAAAAAAZAAAABMAAAABAAAAAAAAABMAAAAAz4iEU9ZgVry2rlkqkZBztZO1llv/y8/DBKxHVJ6s2tYAAAABAAAAAgAAAA8AAAAEdHJ1ZQAAAAAAAAABAAAADwAAAAVmYWxzZQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA";
+ return TransactionBuilder.fromXDR(xdr, Networks.TESTNET);
+}
+
+export function opExtendFootprintTtl() {
+ /**
+ * soroban --very-verbose contract bump --ledgers-to-expire 130816 \
+ --durability persistent --id CACEIKVZTU7Z6VKNISE3OO5MXSCKUC7HC2FNCWRO2HJMWSUPUWHDLSJE \
+ --source SAIYWGGWU2WMXYDSK33UBQBMBDKU4TTJVY3ZIFF24H2KQDR7RQW5KAEK \
+ --rpc-url https://soroban-testnet.stellar.org:443 \
+ --network-passphrase 'Test SDF Network ; September 2015'
+ */
+ const xdr = "AAAAAgAAAADpM4i7/S+9EYBt0L1ZzqkHnnzHDOex4VTxFM3+TkZuzQAAn9IALZ/tAAAABQAAAAAAAAAAAAAAAQAAAAAAAAAZAAAAAAAB/wAAAAABAAAAAAAAAAEAAAAGAAAAAQREKrmdP59VTUSJtzusvISqC+cWitFaLtHSy0qPpY41AAAAFAAAAAEAAAAAAAAAAAAAAJgAAAAAAAAAAAAAdogAAAABTkZuzQAAAEAQIX09qLt+SIcA7sOc7XGSWjK98FFURHW77g8uWm4lQirDqZU51B0uatCZe90mSt+RK7r7it3I92JSUL1Ba+EA";
+ return TransactionBuilder.fromXDR(xdr, Networks.TESTNET);
+}
+
+export function opRestoreFootprint() {
+ // TODO: add soroban resource
+ return getCommonTransactionBuilder()
+ .addOperation(
+ Operation.restoreFootprint({
+ source: kp0.publicKey(),
+ })
+ )
+ .build();
+}
+
export function opWithEmptySource() {
return getCommonTransactionBuilder()
.addOperation(
diff --git a/tests_generate_binary/package-lock.json b/tests_generate_binary/package-lock.json
index 40295593..65eb8543 100644
--- a/tests_generate_binary/package-lock.json
+++ b/tests_generate_binary/package-lock.json
@@ -18,7 +18,7 @@
"dev": true,
"license": "Apache-2.0",
"dependencies": {
- "stellar-base": "^8.1.0"
+ "@stellar/stellar-base": "^11.0.0"
},
"devDependencies": {
"@types/node": "^17.0.29",
@@ -34,8 +34,8 @@
"tests-common": {
"version": "file:../tests_common_js",
"requires": {
+ "@stellar/stellar-base": "^11.0.0",
"@types/node": "^17.0.29",
- "stellar-base": "^8.1.0",
"typescript": "^4.6.3"
}
}
diff --git a/tests_unit/test_tx_formatter.c b/tests_unit/test_tx_formatter.c
index a75a00e0..2b61c500 100644
--- a/tests_unit/test_tx_formatter.c
+++ b/tests_unit/test_tx_formatter.c
@@ -16,6 +16,7 @@ static const char *testcases[] = {
"../testcases/opPaymentAssetAlphanum4.raw",
"../testcases/opPaymentAssetAlphanum12.raw",
"../testcases/opPaymentWithMuxedDestination.raw",
+ "../testcases/opRestoreFootprint.raw",
"../testcases/opPathPaymentStrictReceive.raw",
"../testcases/opPathPaymentStrictReceiveWithEmptyPath.raw",
"../testcases/opPathPaymentStrictReceiveWithMuxedDestination.raw",
@@ -43,6 +44,16 @@ static const char *testcases[] = {
"../testcases/opAccountMerge.raw",
"../testcases/opAccountMergeWithMuxedDestination.raw",
"../testcases/opInflation.raw",
+ "../testcases/opInvokeHostFunctionAssetApprove.raw",
+ "../testcases/opInvokeHostFunctionScvals.raw",
+ "../testcases/opInvokeHostFunctionAssetTransfer.raw",
+ "../testcases/opInvokeHostFunctionCreateContractNewAsset.raw",
+ "../testcases/opInvokeHostFunctionCreateContractWasmId.raw",
+ "../testcases/opInvokeHostFunctionCreateContractWrapAsset.raw",
+ "../testcases/opInvokeHostFunctionUnverifiedContract.raw",
+ "../testcases/opInvokeHostFunctionUnverifiedContractWithApproveFunction.raw",
+ "../testcases/opInvokeHostFunctionUnverifiedContractWithTransferFunction.raw",
+ "../testcases/opInvokeHostFunctionUploadWasm.raw",
"../testcases/opManageDataAdd.raw",
"../testcases/opManageDataAddWithUnprintableData.raw",
"../testcases/opManageDataRemove.raw",
@@ -57,6 +68,7 @@ static const char *testcases[] = {
"../testcases/opClaimClaimableBalance.raw",
"../testcases/opBeginSponsoringFutureReserves.raw",
"../testcases/opEndSponsoringFutureReserves.raw",
+ "../testcases/opExtendFootprintTtl.raw",
"../testcases/opRevokeSponsorshipAccount.raw",
"../testcases/opRevokeSponsorshipTrustLineWithAsset.raw",
"../testcases/opRevokeSponsorshipTrustLineWithLiquidityPoolId.raw",
diff --git a/tests_unit/test_tx_parser.c b/tests_unit/test_tx_parser.c
index 148e8b92..162b13d3 100644
--- a/tests_unit/test_tx_parser.c
+++ b/tests_unit/test_tx_parser.c
@@ -15,6 +15,7 @@ static const char *testcases[] = {
"../testcases/opPaymentAssetAlphanum4.raw",
"../testcases/opPaymentAssetAlphanum12.raw",
"../testcases/opPaymentWithMuxedDestination.raw",
+ "../testcases/opRestoreFootprint.raw",
"../testcases/opPathPaymentStrictReceive.raw",
"../testcases/opPathPaymentStrictReceiveWithEmptyPath.raw",
"../testcases/opPathPaymentStrictReceiveWithMuxedDestination.raw",
@@ -42,6 +43,16 @@ static const char *testcases[] = {
"../testcases/opAccountMerge.raw",
"../testcases/opAccountMergeWithMuxedDestination.raw",
"../testcases/opInflation.raw",
+ "../testcases/opInvokeHostFunctionAssetApprove.raw",
+ "../testcases/opInvokeHostFunctionScvals.raw",
+ "../testcases/opInvokeHostFunctionAssetTransfer.raw",
+ "../testcases/opInvokeHostFunctionCreateContractNewAsset.raw",
+ "../testcases/opInvokeHostFunctionCreateContractWasmId.raw",
+ "../testcases/opInvokeHostFunctionCreateContractWrapAsset.raw",
+ "../testcases/opInvokeHostFunctionUnverifiedContract.raw",
+ "../testcases/opInvokeHostFunctionUnverifiedContractWithApproveFunction.raw",
+ "../testcases/opInvokeHostFunctionUnverifiedContractWithTransferFunction.raw",
+ "../testcases/opInvokeHostFunctionUploadWasm.raw",
"../testcases/opManageDataAdd.raw",
"../testcases/opManageDataAddWithUnprintableData.raw",
"../testcases/opManageDataRemove.raw",
@@ -56,6 +67,7 @@ static const char *testcases[] = {
"../testcases/opClaimClaimableBalance.raw",
"../testcases/opBeginSponsoringFutureReserves.raw",
"../testcases/opEndSponsoringFutureReserves.raw",
+ "../testcases/opExtendFootprintTtl.raw",
"../testcases/opRevokeSponsorshipAccount.raw",
"../testcases/opRevokeSponsorshipTrustLineWithAsset.raw",
"../testcases/opRevokeSponsorshipTrustLineWithLiquidityPoolId.raw",
diff --git a/tests_unit/testcases/opExtendFootprintTtl.txt b/tests_unit/testcases/opExtendFootprintTtl.txt
new file mode 100644
index 00000000..8c1f55a6
--- /dev/null
+++ b/tests_unit/testcases/opExtendFootprintTtl.txt
@@ -0,0 +1,5 @@
+Network; Testnet
+Max Fee; 0.0040914 XLM
+Sequence Num; 12842214208045061
+Tx Source; GDUTHC..XM2FN7
+Soroban; Extend Footprint TTL
\ No newline at end of file
diff --git a/tests_unit/testcases/opInvokeHostFunctionAssetApprove.txt b/tests_unit/testcases/opInvokeHostFunctionAssetApprove.txt
new file mode 100644
index 00000000..52276431
--- /dev/null
+++ b/tests_unit/testcases/opInvokeHostFunctionAssetApprove.txt
@@ -0,0 +1,12 @@
+Network; Testnet
+Max Fee; 0.0206814 XLM
+Sequence Num; 12842214208045068
+Tx Source; GDUTHC..XM2FN7
+Soroban; Invoke Smart Contract
+Contract ID; CDLZFC3SYJYDZT7K67VZ75HPJVIEUVNIXF47ZG2FB2RMQQVU2HHGCYSC
+Function; approve
+From; GDUTHCF37UX32EMANXIL2WOOVEDZ47GHBTT3DYKU6EKM37SOIZXM2FN7
+Spender; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX
+Amount; 1,000 XLM
+Expiration Ledger; 2999592
+Op Source; GDUTHC..XM2FN7
\ No newline at end of file
diff --git a/tests_unit/testcases/opInvokeHostFunctionAssetTransfer.txt b/tests_unit/testcases/opInvokeHostFunctionAssetTransfer.txt
new file mode 100644
index 00000000..adea6f31
--- /dev/null
+++ b/tests_unit/testcases/opInvokeHostFunctionAssetTransfer.txt
@@ -0,0 +1,11 @@
+Network; Testnet
+Max Fee; 0.0146204 XLM
+Sequence Num; 12842214208045067
+Tx Source; GDUTHC..XM2FN7
+Soroban; Invoke Smart Contract
+Contract ID; CDLZFC3SYJYDZT7K67VZ75HPJVIEUVNIXF47ZG2FB2RMQQVU2HHGCYSC
+Function; transfer
+Transfer; 100 XLM
+From; GDUTHCF37UX32EMANXIL2WOOVEDZ47GHBTT3DYKU6EKM37SOIZXM2FN7
+To; GDRMNAIPTNIJWJSL6JOF76CJORN47TDVMWERTXO2G2WKOMXGNHUFL5QX
+Op Source; GDUTHC..XM2FN7
\ No newline at end of file
diff --git a/tests_unit/testcases/opInvokeHostFunctionCreateContractNewAsset.txt b/tests_unit/testcases/opInvokeHostFunctionCreateContractNewAsset.txt
new file mode 100644
index 00000000..63225080
--- /dev/null
+++ b/tests_unit/testcases/opInvokeHostFunctionCreateContractNewAsset.txt
@@ -0,0 +1,6 @@
+Network; Testnet
+Max Fee; 0.0086454 XLM
+Sequence Num; 12842214208045066
+Tx Source; GDUTHC..XM2FN7
+Soroban; Create Smart Contract
+Op Source; GDUTHC..XM2FN7
\ No newline at end of file
diff --git a/tests_unit/testcases/opInvokeHostFunctionCreateContractWasmId.txt b/tests_unit/testcases/opInvokeHostFunctionCreateContractWasmId.txt
new file mode 100644
index 00000000..777b1c7c
--- /dev/null
+++ b/tests_unit/testcases/opInvokeHostFunctionCreateContractWasmId.txt
@@ -0,0 +1,5 @@
+Network; Testnet
+Max Fee; 0.01265 XLM
+Sequence Num; 12842214208045058
+Tx Source; GDUTHC..XM2FN7
+Soroban; Create Smart Contract
\ No newline at end of file
diff --git a/tests_unit/testcases/opInvokeHostFunctionCreateContractWrapAsset.txt b/tests_unit/testcases/opInvokeHostFunctionCreateContractWrapAsset.txt
new file mode 100644
index 00000000..5be5f445
--- /dev/null
+++ b/tests_unit/testcases/opInvokeHostFunctionCreateContractWrapAsset.txt
@@ -0,0 +1,5 @@
+Network; Testnet
+Max Fee; 0.0418694 XLM
+Sequence Num; 12842214208045059
+Tx Source; GDUTHC..XM2FN7
+Soroban; Create Smart Contract
\ No newline at end of file
diff --git a/tests_unit/testcases/opInvokeHostFunctionScvals.txt b/tests_unit/testcases/opInvokeHostFunctionScvals.txt
new file mode 100644
index 00000000..0607c11a
--- /dev/null
+++ b/tests_unit/testcases/opInvokeHostFunctionScvals.txt
@@ -0,0 +1,8 @@
+Network; Testnet
+Max Fee; 0.00005 XLM
+Sequence Num; 1234567891
+Tx Source; GDUTHC..XM2FN7
+Soroban; Invoke Smart Contract
+Contract ID; CDLZFC3SYJYDZT7K67VZ75HPJVIEUVNIXF47ZG2FB2RMQQVU2HHGCYSC
+Function; test
+RISK WARNING; Unverified contract, will not display details
\ No newline at end of file
diff --git a/tests_unit/testcases/opInvokeHostFunctionUnverifiedContract.txt b/tests_unit/testcases/opInvokeHostFunctionUnverifiedContract.txt
new file mode 100644
index 00000000..fefa4ec1
--- /dev/null
+++ b/tests_unit/testcases/opInvokeHostFunctionUnverifiedContract.txt
@@ -0,0 +1,8 @@
+Network; Testnet
+Max Fee; 0.0116472 XLM
+Sequence Num; 12842214208045060
+Tx Source; GDUTHC..XM2FN7
+Soroban; Invoke Smart Contract
+Contract ID; CAQOBZUNLWA3GRTIKKGH2RT2G3MKEHELBJ4ZII2N25A3IBDSUSUOAUQU
+Function; increment
+RISK WARNING; Unverified contract, will not display details
\ No newline at end of file
diff --git a/tests_unit/testcases/opInvokeHostFunctionUnverifiedContractWithApproveFunction.txt b/tests_unit/testcases/opInvokeHostFunctionUnverifiedContractWithApproveFunction.txt
new file mode 100644
index 00000000..4f10aa30
--- /dev/null
+++ b/tests_unit/testcases/opInvokeHostFunctionUnverifiedContractWithApproveFunction.txt
@@ -0,0 +1,9 @@
+Network; Testnet
+Max Fee; 0.00005 XLM
+Sequence Num; 12842214208045067
+Tx Source; GDUTHC..XM2FN7
+Soroban; Invoke Smart Contract
+Contract ID; CDLZFC3SYJYDZT7K67VZ75HPJVIEUVNIXF47ZG2FB2RMQQVU2HHGCYSC
+Function; mock
+RISK WARNING; Unverified contract, will not display details
+Op Source; GDUTHC..XM2FN7
\ No newline at end of file
diff --git a/tests_unit/testcases/opInvokeHostFunctionUnverifiedContractWithTransferFunction.txt b/tests_unit/testcases/opInvokeHostFunctionUnverifiedContractWithTransferFunction.txt
new file mode 100644
index 00000000..b1eb5541
--- /dev/null
+++ b/tests_unit/testcases/opInvokeHostFunctionUnverifiedContractWithTransferFunction.txt
@@ -0,0 +1,8 @@
+Network; Testnet
+Max Fee; 0.00005 XLM
+Sequence Num; 12842214208045064
+Tx Source; GDUTHC..XM2FN7
+Soroban; Invoke Smart Contract
+Contract ID; CAQOBZUNLWA3GRTIKKGH2RT2G3MKEHELBJ4ZII2N25A3IBDSUSUOAUQU
+Function; approve
+RISK WARNING; Unverified contract, will not display details
\ No newline at end of file
diff --git a/tests_unit/testcases/opInvokeHostFunctionUploadWasm.txt b/tests_unit/testcases/opInvokeHostFunctionUploadWasm.txt
new file mode 100644
index 00000000..42687189
--- /dev/null
+++ b/tests_unit/testcases/opInvokeHostFunctionUploadWasm.txt
@@ -0,0 +1,6 @@
+Network; Testnet
+Max Fee; 0.0029143 XLM
+Sequence Num; 12842214208045057
+Tx Source; GDUTHC..XM2FN7
+Soroban; Upload Smart Contract Wasm
+Op Source; GDUTHC..XM2FN7
\ No newline at end of file
diff --git a/tests_unit/testcases/opRestoreFootprint.txt b/tests_unit/testcases/opRestoreFootprint.txt
new file mode 100644
index 00000000..9d212e68
--- /dev/null
+++ b/tests_unit/testcases/opRestoreFootprint.txt
@@ -0,0 +1,7 @@
+Memo Text; hello world
+Max Fee; 0.00001 XLM
+Sequence Num; 103720918407102568
+Valid Before (UTC); 2022-12-12 04:12:12
+Tx Source; GDUTHC..XM2FN7
+Soroban; Restore Footprint
+Op Source; GDUTHC..XM2FN7
\ No newline at end of file
diff --git a/tests_zemu/package-lock.json b/tests_zemu/package-lock.json
index 6d5abd2b..2a56ce5f 100644
--- a/tests_zemu/package-lock.json
+++ b/tests_zemu/package-lock.json
@@ -9,12 +9,14 @@
"version": "1.0.0",
"license": "Apache-2.0",
"devDependencies": {
- "@ledgerhq/hw-app-str": "^6.27.1",
+ "@ledgerhq/hw-app-str": "github:overcat/hw-ledger-str-dev",
"@ledgerhq/hw-transport-http": "^6.28.3",
+ "@stellar/stellar-base": "^11.0.0",
"@types/jest": "^29.2.1",
- "@zondax/zemu": "^0.44.1",
+ "@types/sha.js": "^2.4.4",
+ "@zondax/zemu": "^0.46.2",
"jest": "29.2.2",
- "stellar-base": "^8.1.0",
+ "sha.js": "^2.4.9",
"tests-common": "file:../tests_common_js",
"ts-jest": "^29.0.3",
"typescript": "^4.5.3"
@@ -26,7 +28,7 @@
"dev": true,
"license": "Apache-2.0",
"dependencies": {
- "stellar-base": "^8.1.0"
+ "@stellar/stellar-base": "^11.0.0"
},
"devDependencies": {
"@types/node": "^17.0.29",
@@ -568,18 +570,6 @@
"@babel/core": "^7.0.0-0"
}
},
- "node_modules/@babel/runtime": {
- "version": "7.22.15",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.15.tgz",
- "integrity": "sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA==",
- "dev": true,
- "dependencies": {
- "regenerator-runtime": "^0.14.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
"node_modules/@babel/template": {
"version": "7.21.9",
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.21.9.tgz",
@@ -642,9 +632,9 @@
"dev": true
},
"node_modules/@grpc/grpc-js": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.9.3.tgz",
- "integrity": "sha512-b8iWtdrYIeT5fdZdS4Br/6h/kuk0PW5EVBUGk1amSbrpL8DlktJD43CdcCWwRdd6+jgwHhADSbL9CsNnm6EUPA==",
+ "version": "1.10.1",
+ "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.10.1.tgz",
+ "integrity": "sha512-55ONqFytZExfOIjF1RjXPcVmT/jJqFzbbDqxK9jmRV4nxiYWtL9hENSW1Jfx0SdZfrvoqd44YJ/GJTqfRrawSQ==",
"dev": true,
"dependencies": {
"@grpc/proto-loader": "^0.7.8",
@@ -655,9 +645,9 @@
}
},
"node_modules/@grpc/proto-loader": {
- "version": "0.7.9",
- "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.9.tgz",
- "integrity": "sha512-YJsOehVXzgurc+lLAxYnlSMc1p/Gu6VAvnfx0ATi2nzvr0YZcjhmZDeY8SeAKv1M7zE3aEJH0Xo9mK1iZ8GYoQ==",
+ "version": "0.7.10",
+ "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.10.tgz",
+ "integrity": "sha512-CAqDfoaQ8ykFd9zqBDn4k6iWT9loLAlc2ETmDFS9JCD70gDcnA4L3AFEo2iV7KyAtAAHFW9ftq1Fz+Vsgq80RQ==",
"dev": true,
"dependencies": {
"lodash.camelcase": "^4.3.0",
@@ -1030,55 +1020,56 @@
"dev": true
},
"node_modules/@ledgerhq/devices": {
- "version": "8.0.7",
- "resolved": "https://registry.npmjs.org/@ledgerhq/devices/-/devices-8.0.7.tgz",
- "integrity": "sha512-BbPyET52lXnVs7CxJWrGYqmtGdbGzj+XnfCqLsDnA7QYr1CZREysxmie+Rr6BKpNDBRVesAovXjtaVaZOn+upw==",
+ "version": "8.2.0",
+ "resolved": "https://mirrors.cloud.tencent.com/npm/@ledgerhq/devices/-/devices-8.2.0.tgz",
+ "integrity": "sha512-XROTW2gTmmuy+YPPDjdtKKTQ3mfxrPtKtV+a9QFbj8f5MnjVMV0Zpy1BIB4CyIMsVVi4z6+nI67auT7IlsM3SQ==",
"dev": true,
"dependencies": {
- "@ledgerhq/errors": "^6.14.0",
- "@ledgerhq/logs": "^6.10.1",
- "rxjs": "6",
+ "@ledgerhq/errors": "^6.16.1",
+ "@ledgerhq/logs": "^6.12.0",
+ "rxjs": "^7.8.1",
"semver": "^7.3.5"
}
},
"node_modules/@ledgerhq/errors": {
- "version": "6.14.0",
- "resolved": "https://registry.npmjs.org/@ledgerhq/errors/-/errors-6.14.0.tgz",
- "integrity": "sha512-ZWJw2Ti6Dq1Ott/+qYqJdDWeZm16qI3VNG5rFlb0TQ3UcAyLIQZbnnzzdcVVwVeZiEp66WIpINd/pBdqsHVyOA==",
+ "version": "6.16.1",
+ "resolved": "https://mirrors.cloud.tencent.com/npm/@ledgerhq/errors/-/errors-6.16.1.tgz",
+ "integrity": "sha512-4D4wKecGzQpIu7sx03Sg4uE1e8g1oZUndWgw9gw776H8h9ov9c5TxPaldTn2j6orPECAERViLf7LTO4L5pE2Cw==",
"dev": true
},
"node_modules/@ledgerhq/hw-app-str": {
- "version": "6.27.15",
- "resolved": "https://registry.npmjs.org/@ledgerhq/hw-app-str/-/hw-app-str-6.27.15.tgz",
- "integrity": "sha512-UqPvEghLNoEeclIiWiKpyQN0vAbQJKvMnL+d6CChkAVnOzHMcRuMXK1Iu3OCoTkqvk4R1PjPW/ORydIE3nrvuw==",
+ "version": "6.27.20",
+ "resolved": "git+ssh://git@github.com/overcat/hw-ledger-str-dev.git#134b60c16398ea38dd26d788009fa76011bd1d74",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "@ledgerhq/hw-transport": "^6.28.4",
+ "@ledgerhq/hw-transport": "^6.30.3",
"base32.js": "^0.1.0",
"sha.js": "^2.3.6",
"tweetnacl": "^1.0.3"
}
},
"node_modules/@ledgerhq/hw-transport": {
- "version": "6.28.8",
- "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport/-/hw-transport-6.28.8.tgz",
- "integrity": "sha512-XxQVl4htd018u/M66r0iu5nlHi+J6QfdPsORzDF6N39jaz+tMqItb7tUlXM/isggcuS5lc7GJo7NOuJ8rvHZaQ==",
+ "version": "6.30.3",
+ "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport/-/hw-transport-6.30.3.tgz",
+ "integrity": "sha512-eqtTCGy8wFCxl+hZSEpjVqn1EDjQhFCne/qUyY0aA36efhWUF6bCRAhkq1e5i7g2P6TbxcIM5P5PW67dILuqIQ==",
"dev": true,
"dependencies": {
- "@ledgerhq/devices": "^8.0.7",
- "@ledgerhq/errors": "^6.14.0",
+ "@ledgerhq/devices": "^8.2.0",
+ "@ledgerhq/errors": "^6.16.1",
+ "@ledgerhq/logs": "^6.12.0",
"events": "^3.3.0"
}
},
"node_modules/@ledgerhq/hw-transport-http": {
- "version": "6.28.3",
- "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport-http/-/hw-transport-http-6.28.3.tgz",
- "integrity": "sha512-Z+zzK3v+rs/j9V2fc1uDJ38wBviziyU2sSSSHy0F2VnOhdEuE9i82hYsRniwi3c+pi9LThZP9kQrHOyeAnTaow==",
+ "version": "6.29.3",
+ "resolved": "https://registry.npmjs.org/@ledgerhq/hw-transport-http/-/hw-transport-http-6.29.3.tgz",
+ "integrity": "sha512-06uwieqFE2bcav12GjZr534etgn3MAflgwe5ovfPoUzBCPv72YEH3A1FKJqbtxVthPjYthjZXD1SLdL2EKMd6g==",
"dev": true,
"dependencies": {
- "@ledgerhq/errors": "^6.14.0",
- "@ledgerhq/hw-transport": "^6.28.8",
- "@ledgerhq/logs": "^6.10.1",
+ "@ledgerhq/errors": "^6.16.1",
+ "@ledgerhq/hw-transport": "^6.30.3",
+ "@ledgerhq/logs": "^6.12.0",
"axios": "^0.26.1",
"ws": "^7.5.2"
}
@@ -1093,9 +1084,9 @@
}
},
"node_modules/@ledgerhq/logs": {
- "version": "6.10.1",
- "resolved": "https://registry.npmjs.org/@ledgerhq/logs/-/logs-6.10.1.tgz",
- "integrity": "sha512-z+ILK8Q3y+nfUl43ctCPuR4Y2bIxk/ooCQFwZxhtci1EhAtMDzMAx2W25qx8G1PPL9UUOdnUax19+F0OjXoj4w==",
+ "version": "6.12.0",
+ "resolved": "https://mirrors.cloud.tencent.com/npm/@ledgerhq/logs/-/logs-6.12.0.tgz",
+ "integrity": "sha512-ExDoj1QV5eC6TEbMdLUMMk9cfvNKhhv5gXol4SmULRVCx/3iyCPhJ74nsb3S0Vb+/f+XujBEj3vQn5+cwS0fNA==",
"dev": true
},
"node_modules/@protobufjs/aspromise": {
@@ -1186,6 +1177,67 @@
"@sinonjs/commons": "^3.0.0"
}
},
+ "node_modules/@stellar/js-xdr": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@stellar/js-xdr/-/js-xdr-3.1.0.tgz",
+ "integrity": "sha512-mYTyFnhgyQgyvpAYZRO1LurUn2MxcIZRj74zZz/BxKEk7zrL4axhQ1ez0HL2BRi0wlG6cHn5BeD/t9Xcyp7CSQ==",
+ "dev": true
+ },
+ "node_modules/@stellar/stellar-base": {
+ "version": "11.0.0",
+ "resolved": "https://registry.npmjs.org/@stellar/stellar-base/-/stellar-base-11.0.0.tgz",
+ "integrity": "sha512-KPTjaWJCG2m7hMCPRWFGGPaG5qOkgPLWvFVOhe1HUy7dlE4MxxPfdusz0mcLkf6VT7doqhLB1rIt0D9M2GgQcQ==",
+ "dev": true,
+ "dependencies": {
+ "@stellar/js-xdr": "^3.1.0",
+ "base32.js": "^0.1.0",
+ "bignumber.js": "^9.1.2",
+ "buffer": "^6.0.3",
+ "sha.js": "^2.3.6",
+ "tweetnacl": "^1.0.3",
+ "typescript": "^5.3.3"
+ },
+ "optionalDependencies": {
+ "sodium-native": "^4.0.8"
+ }
+ },
+ "node_modules/@stellar/stellar-base/node_modules/buffer": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
+ "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/feross"
+ },
+ {
+ "type": "patreon",
+ "url": "https://www.patreon.com/feross"
+ },
+ {
+ "type": "consulting",
+ "url": "https://feross.org/support"
+ }
+ ],
+ "dependencies": {
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.2.1"
+ }
+ },
+ "node_modules/@stellar/stellar-base/node_modules/typescript": {
+ "version": "5.3.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz",
+ "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==",
+ "dev": true,
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=14.17"
+ }
+ },
"node_modules/@types/babel__core": {
"version": "7.20.1",
"resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.1.tgz",
@@ -1282,6 +1334,15 @@
"integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==",
"dev": true
},
+ "node_modules/@types/sha.js": {
+ "version": "2.4.4",
+ "resolved": "https://registry.npmjs.org/@types/sha.js/-/sha.js-2.4.4.tgz",
+ "integrity": "sha512-Qukd+D6S2Hm0wLVt2Vh+/eWBIoUt+wF8jWjBsG4F8EFQRwKtYvtXCPcNl2OEUQ1R+eTr3xuSaBYUyM3WD1x/Qw==",
+ "dev": true,
+ "dependencies": {
+ "@types/node": "*"
+ }
+ },
"node_modules/@types/stack-utils": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz",
@@ -1304,18 +1365,19 @@
"dev": true
},
"node_modules/@zondax/zemu": {
- "version": "0.44.1",
- "resolved": "https://registry.npmjs.org/@zondax/zemu/-/zemu-0.44.1.tgz",
- "integrity": "sha512-GxH+W2rLs36tGQh1EpB5AJu85oqHoTS9ZHp1cGk7Uufm0l/MivOWNUKPfQjzZ11RCYbbhTGKyg2QVVF/m7b9vA==",
+ "version": "0.46.2",
+ "resolved": "https://registry.npmjs.org/@zondax/zemu/-/zemu-0.46.2.tgz",
+ "integrity": "sha512-9BXfgfBk/jPLRDIlReEWHSAT8mWy4umpCGJma2ZfNVfhuMBITSHdIwR62UhMlsuCc/ZFJ9Tj5xqQOdXQEmybYg==",
"dev": true,
"dependencies": {
- "@grpc/grpc-js": "^1.9.3",
- "@grpc/proto-loader": "^0.7.9",
- "axios": "^1.5.0",
- "axios-retry": "^3.7.0",
- "dockerode": "^3.3.1",
+ "@grpc/grpc-js": "^1.9.14",
+ "@grpc/proto-loader": "^0.7.10",
+ "@ledgerhq/hw-transport-http": "^6.29.2",
+ "axios": "^1.6.6",
+ "axios-retry": "^4.0.0",
+ "dockerode": "^4.0.2",
"elfy": "^1.0.0",
- "fs-extra": "^11.0.0",
+ "fs-extra": "^11.2.0",
"get-port": "^5.1.1",
"pngjs": "^7.0.0",
"randomstring": "^1.3.0"
@@ -1393,29 +1455,31 @@
},
"node_modules/asynckit": {
"version": "0.4.0",
- "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
+ "resolved": "https://mirrors.cloud.tencent.com/npm/asynckit/-/asynckit-0.4.0.tgz",
+ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
"dev": true
},
"node_modules/axios": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/axios/-/axios-1.5.0.tgz",
- "integrity": "sha512-D4DdjDo5CY50Qms0qGQTTw6Q44jl7zRwY7bthds06pUGfChBCTcQs+N743eFWGEd6pRTMd6A+I87aWyFV5wiZQ==",
+ "version": "1.6.7",
+ "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.7.tgz",
+ "integrity": "sha512-/hDJGff6/c7u0hDkvkGxR/oy6CbCs8ziCsC7SqmhjfozqiJGc8Z11wrv9z9lYfY4K8l+H9TpjcMDX0xOZmx+RA==",
"dev": true,
"dependencies": {
- "follow-redirects": "^1.15.0",
+ "follow-redirects": "^1.15.4",
"form-data": "^4.0.0",
"proxy-from-env": "^1.1.0"
}
},
"node_modules/axios-retry": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/axios-retry/-/axios-retry-3.7.0.tgz",
- "integrity": "sha512-ZTnCkJbRtfScvwiRnoVskFAfvU0UG3xNcsjwTR0mawSbIJoothxn67gKsMaNAFHRXJ1RmuLhmZBzvyXi3+9WyQ==",
+ "version": "4.0.0",
+ "resolved": "https://mirrors.cloud.tencent.com/npm/axios-retry/-/axios-retry-4.0.0.tgz",
+ "integrity": "sha512-F6P4HVGITD/v4z9Lw2mIA24IabTajvpDZmKa6zq/gGwn57wN5j1P3uWrAV0+diqnW6kTM2fTqmWNfgYWGmMuiA==",
"dev": true,
"dependencies": {
- "@babel/runtime": "^7.15.4",
"is-retry-allowed": "^2.2.0"
+ },
+ "peerDependencies": {
+ "axios": "0.x || 1.x"
}
},
"node_modules/babel-jest": {
@@ -1560,9 +1624,9 @@
"dev": true
},
"node_modules/bignumber.js": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-4.1.0.tgz",
- "integrity": "sha512-eJzYkFYy9L4JzXsbymsFn3p54D+llV27oTQ+ziJG7WFRheJcNZilgVXMG0LoZtlQSKBsJdWtLFqOD0u+U0jZKA==",
+ "version": "9.1.2",
+ "resolved": "https://mirrors.cloud.tencent.com/npm/bignumber.js/-/bignumber.js-9.1.2.tgz",
+ "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==",
"dev": true,
"engines": {
"node": "*"
@@ -1834,7 +1898,7 @@
},
"node_modules/combined-stream": {
"version": "1.0.8",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+ "resolved": "https://mirrors.cloud.tencent.com/npm/combined-stream/-/combined-stream-1.0.8.tgz",
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
"dev": true,
"dependencies": {
@@ -1857,9 +1921,9 @@
"dev": true
},
"node_modules/cpu-features": {
- "version": "0.0.8",
- "resolved": "https://registry.npmjs.org/cpu-features/-/cpu-features-0.0.8.tgz",
- "integrity": "sha512-BbHBvtYhUhksqTjr6bhNOjGgMnhwhGTQmOoZGD+K7BCaQDCuZl/Ve1ZxUSMRwVC4D/rkCPQ2MAIeYzrWyK7eEg==",
+ "version": "0.0.9",
+ "resolved": "https://registry.npmjs.org/cpu-features/-/cpu-features-0.0.9.tgz",
+ "integrity": "sha512-AKjgn2rP2yJyfbepsmLfiYcmtNn/2eUvocUyM/09yB0YDiz39HteK/5/T4Onf0pmdYDMgkBoGvRLvEguzyL7wQ==",
"dev": true,
"hasInstallScript": true,
"optional": true,
@@ -1871,15 +1935,6 @@
"node": ">=10.0.0"
}
},
- "node_modules/crc": {
- "version": "3.8.0",
- "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz",
- "integrity": "sha512-iX3mfgcTMIq3ZKLIsVFAbv7+Mc10kxabAGQb8HvjA1o3T1PIYprbakQ65d3I+2HGHt6nSKkM9PYjgoJO2KcFBQ==",
- "dev": true,
- "dependencies": {
- "buffer": "^5.1.0"
- }
- },
"node_modules/cross-spawn": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
@@ -1928,8 +1983,8 @@
},
"node_modules/delayed-stream": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+ "resolved": "https://mirrors.cloud.tencent.com/npm/delayed-stream/-/delayed-stream-1.0.0.tgz",
+ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
"dev": true,
"engines": {
"node": ">=0.4.0"
@@ -1954,28 +2009,28 @@
}
},
"node_modules/docker-modem": {
- "version": "3.0.8",
- "resolved": "https://registry.npmjs.org/docker-modem/-/docker-modem-3.0.8.tgz",
- "integrity": "sha512-f0ReSURdM3pcKPNS30mxOHSbaFLcknGmQjwSfmbcdOw1XWKXVhukM3NJHhr7NpY9BIyyWQb0EBo3KQvvuU5egQ==",
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/docker-modem/-/docker-modem-5.0.3.tgz",
+ "integrity": "sha512-89zhop5YVhcPEt5FpUFGr3cDyceGhq/F9J+ZndQ4KfqNvfbJpPMfgeixFgUj5OjCYAboElqODxY5Z1EBsSa6sg==",
"dev": true,
"dependencies": {
"debug": "^4.1.1",
"readable-stream": "^3.5.0",
"split-ca": "^1.0.1",
- "ssh2": "^1.11.0"
+ "ssh2": "^1.15.0"
},
"engines": {
"node": ">= 8.0"
}
},
"node_modules/dockerode": {
- "version": "3.3.5",
- "resolved": "https://registry.npmjs.org/dockerode/-/dockerode-3.3.5.tgz",
- "integrity": "sha512-/0YNa3ZDNeLr/tSckmD69+Gq+qVNhvKfAHNeZJBnp7EOP6RGKV8ORrJHkUn20So5wU+xxT7+1n5u8PjHbfjbSA==",
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/dockerode/-/dockerode-4.0.2.tgz",
+ "integrity": "sha512-9wM1BVpVMFr2Pw3eJNXrYYt6DT9k0xMcsSCjtPvyQ+xa1iPg/Mo3T/gUcwI0B2cczqCeCYRPF8yFYDwtFXT0+w==",
"dev": true,
"dependencies": {
"@balena/dockerignore": "^1.0.2",
- "docker-modem": "^3.0.0",
+ "docker-modem": "^5.0.3",
"tar-fs": "~2.0.1"
},
"engines": {
@@ -2168,9 +2223,9 @@
}
},
"node_modules/follow-redirects": {
- "version": "1.15.2",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz",
- "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==",
+ "version": "1.15.5",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.5.tgz",
+ "integrity": "sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==",
"dev": true,
"funding": [
{
@@ -2189,7 +2244,7 @@
},
"node_modules/form-data": {
"version": "4.0.0",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
+ "resolved": "https://mirrors.cloud.tencent.com/npm/form-data/-/form-data-4.0.0.tgz",
"integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
"dev": true,
"dependencies": {
@@ -2208,9 +2263,9 @@
"dev": true
},
"node_modules/fs-extra": {
- "version": "11.1.1",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz",
- "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==",
+ "version": "11.2.0",
+ "resolved": "https://mirrors.cloud.tencent.com/npm/fs-extra/-/fs-extra-11.2.0.tgz",
+ "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==",
"dev": true,
"dependencies": {
"graceful-fs": "^4.2.0",
@@ -2480,7 +2535,7 @@
},
"node_modules/is-retry-allowed": {
"version": "2.2.0",
- "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-2.2.0.tgz",
+ "resolved": "https://mirrors.cloud.tencent.com/npm/is-retry-allowed/-/is-retry-allowed-2.2.0.tgz",
"integrity": "sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg==",
"dev": true,
"engines": {
@@ -3147,25 +3202,6 @@
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
"dev": true
},
- "node_modules/js-xdr": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/js-xdr/-/js-xdr-1.3.0.tgz",
- "integrity": "sha512-fjLTm2uBtFvWsE3l2J14VjTuuB8vJfeTtYuNS7LiLHDWIX2kt0l1pqq9334F8kODUkKPMuULjEcbGbkFFwhx5g==",
- "dev": true,
- "dependencies": {
- "lodash": "^4.17.5",
- "long": "^2.2.3"
- }
- },
- "node_modules/js-xdr/node_modules/long": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/long/-/long-2.4.0.tgz",
- "integrity": "sha512-ijUtjmO/n2A5PaosNG9ZGDsQ3vxJg7ZW8vsY8Kp0f2yIZWhSJvjmegV7t+9RPQKxKrvj8yKGehhS+po14hPLGQ==",
- "dev": true,
- "engines": {
- "node": ">=0.6"
- }
- },
"node_modules/js-yaml": {
"version": "3.14.1",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
@@ -3211,7 +3247,7 @@
},
"node_modules/jsonfile": {
"version": "6.1.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
+ "resolved": "https://mirrors.cloud.tencent.com/npm/jsonfile/-/jsonfile-6.1.0.tgz",
"integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
"dev": true,
"dependencies": {
@@ -3257,12 +3293,6 @@
"node": ">=8"
}
},
- "node_modules/lodash": {
- "version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
- "dev": true
- },
"node_modules/lodash.camelcase": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
@@ -3350,7 +3380,7 @@
},
"node_modules/mime-db": {
"version": "1.52.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+ "resolved": "https://mirrors.cloud.tencent.com/npm/mime-db/-/mime-db-1.52.0.tgz",
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
"dev": true,
"engines": {
@@ -3359,7 +3389,7 @@
},
"node_modules/mime-types": {
"version": "2.1.35",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+ "resolved": "https://mirrors.cloud.tencent.com/npm/mime-types/-/mime-types-2.1.35.tgz",
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
"dev": true,
"dependencies": {
@@ -3403,9 +3433,9 @@
"dev": true
},
"node_modules/nan": {
- "version": "2.17.0",
- "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz",
- "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==",
+ "version": "2.18.0",
+ "resolved": "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz",
+ "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==",
"dev": true,
"optional": true
},
@@ -3416,9 +3446,9 @@
"dev": true
},
"node_modules/node-gyp-build": {
- "version": "4.6.0",
- "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz",
- "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==",
+ "version": "4.7.1",
+ "resolved": "https://mirrors.cloud.tencent.com/npm/node-gyp-build/-/node-gyp-build-4.7.1.tgz",
+ "integrity": "sha512-wTSrZ+8lsRRa3I3H8Xr65dLWSgCvY2l4AOnaeKdPA9TB/WYMPaTcrzf3rXvFoVvjKNVnu0CcWSx54qq9GKRUYg==",
"dev": true,
"optional": true,
"bin": {
@@ -3674,9 +3704,9 @@
}
},
"node_modules/protobufjs": {
- "version": "7.2.5",
- "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.5.tgz",
- "integrity": "sha512-gGXRSXvxQ7UiPgfw8gevrfRWcTlSbOFg+p/N+JVJEK5VhueL2miT6qTymqAmjr1Q5WbOCyJbyrk6JfWKwlFn6A==",
+ "version": "7.2.6",
+ "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.6.tgz",
+ "integrity": "sha512-dgJaEDDL6x8ASUZ1YqWciTRrdOuYNzoOf27oHNfdyvKqHr5i0FV7FSLU+aIeFjyFgVxrpTOtQUi0BLLBymZaBw==",
"dev": true,
"hasInstallScript": true,
"dependencies": {
@@ -3699,7 +3729,7 @@
},
"node_modules/proxy-from-env": {
"version": "1.1.0",
- "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+ "resolved": "https://mirrors.cloud.tencent.com/npm/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
"integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
"dev": true
},
@@ -3770,12 +3800,6 @@
"node": ">= 6"
}
},
- "node_modules/regenerator-runtime": {
- "version": "0.14.0",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz",
- "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==",
- "dev": true
- },
"node_modules/require-directory": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
@@ -3833,15 +3857,12 @@
}
},
"node_modules/rxjs": {
- "version": "6.6.7",
- "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
- "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
+ "version": "7.8.1",
+ "resolved": "https://mirrors.cloud.tencent.com/npm/rxjs/-/rxjs-7.8.1.tgz",
+ "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==",
"dev": true,
"dependencies": {
- "tslib": "^1.9.0"
- },
- "engines": {
- "npm": ">=2.0.0"
+ "tslib": "^2.1.0"
}
},
"node_modules/safe-buffer": {
@@ -3904,9 +3925,9 @@
"dev": true
},
"node_modules/sha.js": {
- "version": "2.4.11",
- "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
- "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
+ "version": "2.4.9",
+ "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.9.tgz",
+ "integrity": "sha512-G8zektVqbiPHrylgew9Zg1VRB1L/DtXNUVAM6q4QLy8NE3qtHlFXTf8VLL4k1Yl6c7NMjtZUTdXV+X44nFaT6A==",
"dev": true,
"dependencies": {
"inherits": "^2.0.1",
@@ -3959,14 +3980,14 @@
}
},
"node_modules/sodium-native": {
- "version": "3.4.1",
- "resolved": "https://registry.npmjs.org/sodium-native/-/sodium-native-3.4.1.tgz",
- "integrity": "sha512-PaNN/roiFWzVVTL6OqjzYct38NSXewdl2wz8SRB51Br/MLIJPrbM3XexhVWkq7D3UWMysfrhKVf1v1phZq6MeQ==",
+ "version": "4.0.9",
+ "resolved": "https://registry.npmjs.org/sodium-native/-/sodium-native-4.0.9.tgz",
+ "integrity": "sha512-nuEaJkwQMjzZOgD6N/yTJAWuzeOq+HKnBR7Qo+geZGorf/AkyBEtwIEjnd2YSs21w/TuFKCgbo2i6j7Uv+kVDQ==",
"dev": true,
"hasInstallScript": true,
"optional": true,
"dependencies": {
- "node-gyp-build": "^4.3.0"
+ "node-gyp-build": "^4.6.0"
}
},
"node_modules/source-map": {
@@ -4001,9 +4022,9 @@
"dev": true
},
"node_modules/ssh2": {
- "version": "1.13.0",
- "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.13.0.tgz",
- "integrity": "sha512-CIZBFRRY1y9mAZSqBGFE4EB4dNJad2ysT2PqO8OpkiI3UTB/gUZwE5EaN16qVyQ6s/M7EgC/iaV/MnjdlvnuzA==",
+ "version": "1.15.0",
+ "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.15.0.tgz",
+ "integrity": "sha512-C0PHgX4h6lBxYx7hcXwu3QWdh4tg6tZZsTfXcdvc5caW/EMxaB4H9dWsl7qk+F7LAW762hp8VbXOX7x4xUYvEw==",
"dev": true,
"hasInstallScript": true,
"dependencies": {
@@ -4014,8 +4035,8 @@
"node": ">=10.16.0"
},
"optionalDependencies": {
- "cpu-features": "~0.0.7",
- "nan": "^2.17.0"
+ "cpu-features": "~0.0.9",
+ "nan": "^2.18.0"
}
},
"node_modules/stack-utils": {
@@ -4030,24 +4051,6 @@
"node": ">=10"
}
},
- "node_modules/stellar-base": {
- "version": "8.2.2",
- "resolved": "https://registry.npmjs.org/stellar-base/-/stellar-base-8.2.2.tgz",
- "integrity": "sha512-YVCIuJXU1bPn+vU0ded+g0D99DcpYXH9CEXfpYEDc4Gf04h65YjOVhGojQBm1hqVHq3rKT7m1tgfNACkU84FTA==",
- "dev": true,
- "dependencies": {
- "base32.js": "^0.1.0",
- "bignumber.js": "^4.0.0",
- "crc": "^3.5.0",
- "js-xdr": "^1.1.3",
- "lodash": "^4.17.21",
- "sha.js": "^2.3.6",
- "tweetnacl": "^1.0.3"
- },
- "optionalDependencies": {
- "sodium-native": "^3.3.0"
- }
- },
"node_modules/string_decoder": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
@@ -4267,9 +4270,9 @@
}
},
"node_modules/tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
+ "version": "2.6.2",
+ "resolved": "https://mirrors.cloud.tencent.com/npm/tslib/-/tslib-2.6.2.tgz",
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==",
"dev": true
},
"node_modules/tweetnacl": {
@@ -4313,9 +4316,9 @@
}
},
"node_modules/universalify": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
- "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
+ "version": "2.0.1",
+ "resolved": "https://mirrors.cloud.tencent.com/npm/universalify/-/universalify-2.0.1.tgz",
+ "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==",
"dev": true,
"engines": {
"node": ">= 10.0.0"
diff --git a/tests_zemu/package.json b/tests_zemu/package.json
index 1aa7215e..7e02e2a7 100644
--- a/tests_zemu/package.json
+++ b/tests_zemu/package.json
@@ -11,12 +11,14 @@
"test": "jest"
},
"devDependencies": {
- "@ledgerhq/hw-app-str": "^6.27.1",
+ "@ledgerhq/hw-app-str": "github:overcat/hw-ledger-str-dev",
"@ledgerhq/hw-transport-http": "^6.28.3",
+ "@stellar/stellar-base": "^11.0.0",
"@types/jest": "^29.2.1",
- "@zondax/zemu": "^0.44.1",
+ "@types/sha.js": "^2.4.4",
+ "@zondax/zemu": "^0.46.2",
"jest": "29.2.2",
- "stellar-base": "^8.1.0",
+ "sha.js": "^2.4.9",
"tests-common": "file:../tests_common_js",
"ts-jest": "^29.0.3",
"typescript": "^4.5.3"
diff --git a/tests_zemu/snapshots/s-op-extend-footprint-ttl/00000.png b/tests_zemu/snapshots/s-op-extend-footprint-ttl/00000.png
new file mode 100644
index 00000000..88429892
Binary files /dev/null and b/tests_zemu/snapshots/s-op-extend-footprint-ttl/00000.png differ
diff --git a/tests_zemu/snapshots/s-op-extend-footprint-ttl/00001.png b/tests_zemu/snapshots/s-op-extend-footprint-ttl/00001.png
new file mode 100644
index 00000000..6f73c9d6
Binary files /dev/null and b/tests_zemu/snapshots/s-op-extend-footprint-ttl/00001.png differ
diff --git a/tests_zemu/snapshots/s-op-extend-footprint-ttl/00002.png b/tests_zemu/snapshots/s-op-extend-footprint-ttl/00002.png
new file mode 100644
index 00000000..2c87ec2b
Binary files /dev/null and b/tests_zemu/snapshots/s-op-extend-footprint-ttl/00002.png differ
diff --git a/tests_zemu/snapshots/s-op-extend-footprint-ttl/00003.png b/tests_zemu/snapshots/s-op-extend-footprint-ttl/00003.png
new file mode 100644
index 00000000..ce10ca77
Binary files /dev/null and b/tests_zemu/snapshots/s-op-extend-footprint-ttl/00003.png differ
diff --git a/tests_zemu/snapshots/s-op-extend-footprint-ttl/00004.png b/tests_zemu/snapshots/s-op-extend-footprint-ttl/00004.png
new file mode 100644
index 00000000..1521826b
Binary files /dev/null and b/tests_zemu/snapshots/s-op-extend-footprint-ttl/00004.png differ
diff --git a/tests_zemu/snapshots/s-op-extend-footprint-ttl/00005.png b/tests_zemu/snapshots/s-op-extend-footprint-ttl/00005.png
new file mode 100644
index 00000000..97e49b17
Binary files /dev/null and b/tests_zemu/snapshots/s-op-extend-footprint-ttl/00005.png differ
diff --git a/tests_zemu/snapshots/s-op-extend-footprint-ttl/00006.png b/tests_zemu/snapshots/s-op-extend-footprint-ttl/00006.png
new file mode 100644
index 00000000..fbb9ce10
Binary files /dev/null and b/tests_zemu/snapshots/s-op-extend-footprint-ttl/00006.png differ
diff --git a/tests_zemu/snapshots/s-op-extend-footprint-ttl/00007.png b/tests_zemu/snapshots/s-op-extend-footprint-ttl/00007.png
new file mode 100644
index 00000000..fcbedd82
Binary files /dev/null and b/tests_zemu/snapshots/s-op-extend-footprint-ttl/00007.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00000.png b/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00000.png
new file mode 100644
index 00000000..88429892
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00000.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00001.png b/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00001.png
new file mode 100644
index 00000000..6f73c9d6
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00001.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00002.png b/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00002.png
new file mode 100644
index 00000000..1d493b1d
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00002.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00003.png b/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00003.png
new file mode 100644
index 00000000..cc48b459
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00003.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00004.png b/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00004.png
new file mode 100644
index 00000000..1521826b
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00004.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00005.png b/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00005.png
new file mode 100644
index 00000000..34456a08
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00005.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00006.png b/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00006.png
new file mode 100644
index 00000000..cd2f7a14
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00006.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00007.png b/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00007.png
new file mode 100644
index 00000000..5e62d273
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00007.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00008.png b/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00008.png
new file mode 100644
index 00000000..7597592d
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00008.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00009.png b/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00009.png
new file mode 100644
index 00000000..d1353b15
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00009.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00010.png b/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00010.png
new file mode 100644
index 00000000..0c6d80d8
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00010.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00011.png b/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00011.png
new file mode 100644
index 00000000..ee87f328
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00011.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00012.png b/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00012.png
new file mode 100644
index 00000000..d5031984
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00012.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00013.png b/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00013.png
new file mode 100644
index 00000000..d104618a
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00013.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00014.png b/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00014.png
new file mode 100644
index 00000000..f63e3c11
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00014.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00015.png b/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00015.png
new file mode 100644
index 00000000..da4b63b2
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00015.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00016.png b/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00016.png
new file mode 100644
index 00000000..0ff216b4
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00016.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00017.png b/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00017.png
new file mode 100644
index 00000000..d6c8b52c
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00017.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00018.png b/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00018.png
new file mode 100644
index 00000000..1087a174
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00018.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00019.png b/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00019.png
new file mode 100644
index 00000000..22ca461a
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00019.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00020.png b/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00020.png
new file mode 100644
index 00000000..92579480
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00020.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00021.png b/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00021.png
new file mode 100644
index 00000000..b4cdbec2
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00021.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00022.png b/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00022.png
new file mode 100644
index 00000000..0dc3dfc0
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00022.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00023.png b/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00023.png
new file mode 100644
index 00000000..fbb9ce10
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00023.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00024.png b/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00024.png
new file mode 100644
index 00000000..fcbedd82
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-asset-approve/00024.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00000.png b/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00000.png
new file mode 100644
index 00000000..88429892
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00000.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00001.png b/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00001.png
new file mode 100644
index 00000000..6f73c9d6
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00001.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00002.png b/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00002.png
new file mode 100644
index 00000000..04fc5068
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00002.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00003.png b/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00003.png
new file mode 100644
index 00000000..0335c7a9
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00003.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00004.png b/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00004.png
new file mode 100644
index 00000000..1521826b
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00004.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00005.png b/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00005.png
new file mode 100644
index 00000000..34456a08
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00005.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00006.png b/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00006.png
new file mode 100644
index 00000000..cd2f7a14
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00006.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00007.png b/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00007.png
new file mode 100644
index 00000000..5e62d273
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00007.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00008.png b/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00008.png
new file mode 100644
index 00000000..7597592d
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00008.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00009.png b/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00009.png
new file mode 100644
index 00000000..d1353b15
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00009.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00010.png b/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00010.png
new file mode 100644
index 00000000..0c6d80d8
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00010.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00011.png b/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00011.png
new file mode 100644
index 00000000..ffdaa2fd
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00011.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00012.png b/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00012.png
new file mode 100644
index 00000000..b69284c2
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00012.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00013.png b/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00013.png
new file mode 100644
index 00000000..d5031984
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00013.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00014.png b/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00014.png
new file mode 100644
index 00000000..d104618a
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00014.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00015.png b/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00015.png
new file mode 100644
index 00000000..f63e3c11
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00015.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00016.png b/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00016.png
new file mode 100644
index 00000000..da4b63b2
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00016.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00017.png b/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00017.png
new file mode 100644
index 00000000..5e6755ca
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00017.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00018.png b/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00018.png
new file mode 100644
index 00000000..b102ae53
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00018.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00019.png b/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00019.png
new file mode 100644
index 00000000..5eefc54b
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00019.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00020.png b/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00020.png
new file mode 100644
index 00000000..50412ec2
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00020.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00021.png b/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00021.png
new file mode 100644
index 00000000..0dc3dfc0
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00021.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00022.png b/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00022.png
new file mode 100644
index 00000000..fbb9ce10
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00022.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00023.png b/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00023.png
new file mode 100644
index 00000000..fcbedd82
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-asset-transfer/00023.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-new-asset/00000.png b/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-new-asset/00000.png
new file mode 100644
index 00000000..88429892
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-new-asset/00000.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-new-asset/00001.png b/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-new-asset/00001.png
new file mode 100644
index 00000000..6f73c9d6
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-new-asset/00001.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-new-asset/00002.png b/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-new-asset/00002.png
new file mode 100644
index 00000000..d46d9183
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-new-asset/00002.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-new-asset/00003.png b/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-new-asset/00003.png
new file mode 100644
index 00000000..b3154f0e
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-new-asset/00003.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-new-asset/00004.png b/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-new-asset/00004.png
new file mode 100644
index 00000000..1521826b
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-new-asset/00004.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-new-asset/00005.png b/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-new-asset/00005.png
new file mode 100644
index 00000000..7fead284
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-new-asset/00005.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-new-asset/00006.png b/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-new-asset/00006.png
new file mode 100644
index 00000000..0dc3dfc0
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-new-asset/00006.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-new-asset/00007.png b/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-new-asset/00007.png
new file mode 100644
index 00000000..fbb9ce10
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-new-asset/00007.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-new-asset/00008.png b/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-new-asset/00008.png
new file mode 100644
index 00000000..fcbedd82
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-new-asset/00008.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-wasm-id/00000.png b/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-wasm-id/00000.png
new file mode 100644
index 00000000..88429892
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-wasm-id/00000.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-wasm-id/00001.png b/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-wasm-id/00001.png
new file mode 100644
index 00000000..6f73c9d6
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-wasm-id/00001.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-wasm-id/00002.png b/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-wasm-id/00002.png
new file mode 100644
index 00000000..8d76769a
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-wasm-id/00002.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-wasm-id/00003.png b/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-wasm-id/00003.png
new file mode 100644
index 00000000..5c57c150
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-wasm-id/00003.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-wasm-id/00004.png b/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-wasm-id/00004.png
new file mode 100644
index 00000000..1521826b
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-wasm-id/00004.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-wasm-id/00005.png b/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-wasm-id/00005.png
new file mode 100644
index 00000000..7fead284
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-wasm-id/00005.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-wasm-id/00006.png b/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-wasm-id/00006.png
new file mode 100644
index 00000000..fbb9ce10
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-wasm-id/00006.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-wasm-id/00007.png b/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-wasm-id/00007.png
new file mode 100644
index 00000000..fcbedd82
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-wasm-id/00007.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-wrap-asset/00000.png b/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-wrap-asset/00000.png
new file mode 100644
index 00000000..88429892
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-wrap-asset/00000.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-wrap-asset/00001.png b/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-wrap-asset/00001.png
new file mode 100644
index 00000000..6f73c9d6
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-wrap-asset/00001.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-wrap-asset/00002.png b/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-wrap-asset/00002.png
new file mode 100644
index 00000000..b68d891d
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-wrap-asset/00002.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-wrap-asset/00003.png b/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-wrap-asset/00003.png
new file mode 100644
index 00000000..56f0528e
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-wrap-asset/00003.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-wrap-asset/00004.png b/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-wrap-asset/00004.png
new file mode 100644
index 00000000..1521826b
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-wrap-asset/00004.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-wrap-asset/00005.png b/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-wrap-asset/00005.png
new file mode 100644
index 00000000..7fead284
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-wrap-asset/00005.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-wrap-asset/00006.png b/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-wrap-asset/00006.png
new file mode 100644
index 00000000..fbb9ce10
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-wrap-asset/00006.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-wrap-asset/00007.png b/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-wrap-asset/00007.png
new file mode 100644
index 00000000..fcbedd82
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-create-contract-wrap-asset/00007.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-scvals/00000.png b/tests_zemu/snapshots/s-op-invoke-host-function-scvals/00000.png
new file mode 100644
index 00000000..88429892
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-scvals/00000.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-scvals/00001.png b/tests_zemu/snapshots/s-op-invoke-host-function-scvals/00001.png
new file mode 100644
index 00000000..6f73c9d6
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-scvals/00001.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-scvals/00002.png b/tests_zemu/snapshots/s-op-invoke-host-function-scvals/00002.png
new file mode 100644
index 00000000..af150607
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-scvals/00002.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-scvals/00003.png b/tests_zemu/snapshots/s-op-invoke-host-function-scvals/00003.png
new file mode 100644
index 00000000..35062bc0
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-scvals/00003.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-scvals/00004.png b/tests_zemu/snapshots/s-op-invoke-host-function-scvals/00004.png
new file mode 100644
index 00000000..1521826b
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-scvals/00004.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-scvals/00005.png b/tests_zemu/snapshots/s-op-invoke-host-function-scvals/00005.png
new file mode 100644
index 00000000..34456a08
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-scvals/00005.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-scvals/00006.png b/tests_zemu/snapshots/s-op-invoke-host-function-scvals/00006.png
new file mode 100644
index 00000000..cd2f7a14
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-scvals/00006.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-scvals/00007.png b/tests_zemu/snapshots/s-op-invoke-host-function-scvals/00007.png
new file mode 100644
index 00000000..5e62d273
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-scvals/00007.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-scvals/00008.png b/tests_zemu/snapshots/s-op-invoke-host-function-scvals/00008.png
new file mode 100644
index 00000000..7597592d
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-scvals/00008.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-scvals/00009.png b/tests_zemu/snapshots/s-op-invoke-host-function-scvals/00009.png
new file mode 100644
index 00000000..d1353b15
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-scvals/00009.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-scvals/00010.png b/tests_zemu/snapshots/s-op-invoke-host-function-scvals/00010.png
new file mode 100644
index 00000000..0c6d80d8
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-scvals/00010.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-scvals/00011.png b/tests_zemu/snapshots/s-op-invoke-host-function-scvals/00011.png
new file mode 100644
index 00000000..f6f02cd7
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-scvals/00011.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-scvals/00012.png b/tests_zemu/snapshots/s-op-invoke-host-function-scvals/00012.png
new file mode 100644
index 00000000..7c2d1eb7
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-scvals/00012.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-scvals/00013.png b/tests_zemu/snapshots/s-op-invoke-host-function-scvals/00013.png
new file mode 100644
index 00000000..54cfd32c
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-scvals/00013.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-scvals/00014.png b/tests_zemu/snapshots/s-op-invoke-host-function-scvals/00014.png
new file mode 100644
index 00000000..e41bd756
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-scvals/00014.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-scvals/00015.png b/tests_zemu/snapshots/s-op-invoke-host-function-scvals/00015.png
new file mode 100644
index 00000000..fbb9ce10
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-scvals/00015.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-scvals/00016.png b/tests_zemu/snapshots/s-op-invoke-host-function-scvals/00016.png
new file mode 100644
index 00000000..fcbedd82
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-scvals/00016.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-approve-function/00000.png b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-approve-function/00000.png
new file mode 100644
index 00000000..88429892
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-approve-function/00000.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-approve-function/00001.png b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-approve-function/00001.png
new file mode 100644
index 00000000..6f73c9d6
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-approve-function/00001.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-approve-function/00002.png b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-approve-function/00002.png
new file mode 100644
index 00000000..af150607
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-approve-function/00002.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-approve-function/00003.png b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-approve-function/00003.png
new file mode 100644
index 00000000..0335c7a9
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-approve-function/00003.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-approve-function/00004.png b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-approve-function/00004.png
new file mode 100644
index 00000000..1521826b
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-approve-function/00004.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-approve-function/00005.png b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-approve-function/00005.png
new file mode 100644
index 00000000..34456a08
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-approve-function/00005.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-approve-function/00006.png b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-approve-function/00006.png
new file mode 100644
index 00000000..cd2f7a14
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-approve-function/00006.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-approve-function/00007.png b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-approve-function/00007.png
new file mode 100644
index 00000000..5e62d273
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-approve-function/00007.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-approve-function/00008.png b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-approve-function/00008.png
new file mode 100644
index 00000000..7597592d
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-approve-function/00008.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-approve-function/00009.png b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-approve-function/00009.png
new file mode 100644
index 00000000..d1353b15
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-approve-function/00009.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-approve-function/00010.png b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-approve-function/00010.png
new file mode 100644
index 00000000..0c6d80d8
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-approve-function/00010.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-approve-function/00011.png b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-approve-function/00011.png
new file mode 100644
index 00000000..ee91bf81
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-approve-function/00011.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-approve-function/00012.png b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-approve-function/00012.png
new file mode 100644
index 00000000..7c2d1eb7
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-approve-function/00012.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-approve-function/00013.png b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-approve-function/00013.png
new file mode 100644
index 00000000..54cfd32c
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-approve-function/00013.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-approve-function/00014.png b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-approve-function/00014.png
new file mode 100644
index 00000000..e41bd756
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-approve-function/00014.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-approve-function/00015.png b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-approve-function/00015.png
new file mode 100644
index 00000000..0dc3dfc0
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-approve-function/00015.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-approve-function/00016.png b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-approve-function/00016.png
new file mode 100644
index 00000000..fbb9ce10
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-approve-function/00016.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-approve-function/00017.png b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-approve-function/00017.png
new file mode 100644
index 00000000..fcbedd82
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-approve-function/00017.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-transfer-function/00000.png b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-transfer-function/00000.png
new file mode 100644
index 00000000..88429892
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-transfer-function/00000.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-transfer-function/00001.png b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-transfer-function/00001.png
new file mode 100644
index 00000000..6f73c9d6
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-transfer-function/00001.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-transfer-function/00002.png b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-transfer-function/00002.png
new file mode 100644
index 00000000..af150607
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-transfer-function/00002.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-transfer-function/00003.png b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-transfer-function/00003.png
new file mode 100644
index 00000000..8a9c1100
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-transfer-function/00003.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-transfer-function/00004.png b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-transfer-function/00004.png
new file mode 100644
index 00000000..1521826b
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-transfer-function/00004.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-transfer-function/00005.png b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-transfer-function/00005.png
new file mode 100644
index 00000000..34456a08
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-transfer-function/00005.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-transfer-function/00006.png b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-transfer-function/00006.png
new file mode 100644
index 00000000..cd2f7a14
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-transfer-function/00006.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-transfer-function/00007.png b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-transfer-function/00007.png
new file mode 100644
index 00000000..1f1ad966
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-transfer-function/00007.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-transfer-function/00008.png b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-transfer-function/00008.png
new file mode 100644
index 00000000..f80246e4
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-transfer-function/00008.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-transfer-function/00009.png b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-transfer-function/00009.png
new file mode 100644
index 00000000..242fbe06
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-transfer-function/00009.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-transfer-function/00010.png b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-transfer-function/00010.png
new file mode 100644
index 00000000..6a353163
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-transfer-function/00010.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-transfer-function/00011.png b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-transfer-function/00011.png
new file mode 100644
index 00000000..ee87f328
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-transfer-function/00011.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-transfer-function/00012.png b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-transfer-function/00012.png
new file mode 100644
index 00000000..7c2d1eb7
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-transfer-function/00012.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-transfer-function/00013.png b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-transfer-function/00013.png
new file mode 100644
index 00000000..54cfd32c
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-transfer-function/00013.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-transfer-function/00014.png b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-transfer-function/00014.png
new file mode 100644
index 00000000..e41bd756
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-transfer-function/00014.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-transfer-function/00015.png b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-transfer-function/00015.png
new file mode 100644
index 00000000..fbb9ce10
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-transfer-function/00015.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-transfer-function/00016.png b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-transfer-function/00016.png
new file mode 100644
index 00000000..fcbedd82
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract-with-transfer-function/00016.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract/00000.png b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract/00000.png
new file mode 100644
index 00000000..88429892
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract/00000.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract/00001.png b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract/00001.png
new file mode 100644
index 00000000..6f73c9d6
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract/00001.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract/00002.png b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract/00002.png
new file mode 100644
index 00000000..ddde8f88
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract/00002.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract/00003.png b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract/00003.png
new file mode 100644
index 00000000..eeb458e9
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract/00003.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract/00004.png b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract/00004.png
new file mode 100644
index 00000000..1521826b
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract/00004.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract/00005.png b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract/00005.png
new file mode 100644
index 00000000..34456a08
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract/00005.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract/00006.png b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract/00006.png
new file mode 100644
index 00000000..cd2f7a14
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract/00006.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract/00007.png b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract/00007.png
new file mode 100644
index 00000000..1f1ad966
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract/00007.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract/00008.png b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract/00008.png
new file mode 100644
index 00000000..f80246e4
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract/00008.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract/00009.png b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract/00009.png
new file mode 100644
index 00000000..242fbe06
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract/00009.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract/00010.png b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract/00010.png
new file mode 100644
index 00000000..6a353163
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract/00010.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract/00011.png b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract/00011.png
new file mode 100644
index 00000000..fb136524
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract/00011.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract/00012.png b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract/00012.png
new file mode 100644
index 00000000..7c2d1eb7
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract/00012.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract/00013.png b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract/00013.png
new file mode 100644
index 00000000..54cfd32c
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract/00013.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract/00014.png b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract/00014.png
new file mode 100644
index 00000000..e41bd756
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract/00014.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract/00015.png b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract/00015.png
new file mode 100644
index 00000000..fbb9ce10
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract/00015.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract/00016.png b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract/00016.png
new file mode 100644
index 00000000..fcbedd82
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-unverified-contract/00016.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-upload-wasm/00000.png b/tests_zemu/snapshots/s-op-invoke-host-function-upload-wasm/00000.png
new file mode 100644
index 00000000..88429892
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-upload-wasm/00000.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-upload-wasm/00001.png b/tests_zemu/snapshots/s-op-invoke-host-function-upload-wasm/00001.png
new file mode 100644
index 00000000..6f73c9d6
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-upload-wasm/00001.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-upload-wasm/00002.png b/tests_zemu/snapshots/s-op-invoke-host-function-upload-wasm/00002.png
new file mode 100644
index 00000000..a8b4daa6
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-upload-wasm/00002.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-upload-wasm/00003.png b/tests_zemu/snapshots/s-op-invoke-host-function-upload-wasm/00003.png
new file mode 100644
index 00000000..bf76cf5c
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-upload-wasm/00003.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-upload-wasm/00004.png b/tests_zemu/snapshots/s-op-invoke-host-function-upload-wasm/00004.png
new file mode 100644
index 00000000..1521826b
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-upload-wasm/00004.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-upload-wasm/00005.png b/tests_zemu/snapshots/s-op-invoke-host-function-upload-wasm/00005.png
new file mode 100644
index 00000000..3e501a32
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-upload-wasm/00005.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-upload-wasm/00006.png b/tests_zemu/snapshots/s-op-invoke-host-function-upload-wasm/00006.png
new file mode 100644
index 00000000..7a4144ed
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-upload-wasm/00006.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-upload-wasm/00007.png b/tests_zemu/snapshots/s-op-invoke-host-function-upload-wasm/00007.png
new file mode 100644
index 00000000..0dc3dfc0
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-upload-wasm/00007.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-upload-wasm/00008.png b/tests_zemu/snapshots/s-op-invoke-host-function-upload-wasm/00008.png
new file mode 100644
index 00000000..fbb9ce10
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-upload-wasm/00008.png differ
diff --git a/tests_zemu/snapshots/s-op-invoke-host-function-upload-wasm/00009.png b/tests_zemu/snapshots/s-op-invoke-host-function-upload-wasm/00009.png
new file mode 100644
index 00000000..fcbedd82
Binary files /dev/null and b/tests_zemu/snapshots/s-op-invoke-host-function-upload-wasm/00009.png differ
diff --git a/tests_zemu/snapshots/s-op-restore-footprint/00000.png b/tests_zemu/snapshots/s-op-restore-footprint/00000.png
new file mode 100644
index 00000000..88429892
Binary files /dev/null and b/tests_zemu/snapshots/s-op-restore-footprint/00000.png differ
diff --git a/tests_zemu/snapshots/s-op-restore-footprint/00001.png b/tests_zemu/snapshots/s-op-restore-footprint/00001.png
new file mode 100644
index 00000000..368711bc
Binary files /dev/null and b/tests_zemu/snapshots/s-op-restore-footprint/00001.png differ
diff --git a/tests_zemu/snapshots/s-op-restore-footprint/00002.png b/tests_zemu/snapshots/s-op-restore-footprint/00002.png
new file mode 100644
index 00000000..2e2ad7eb
Binary files /dev/null and b/tests_zemu/snapshots/s-op-restore-footprint/00002.png differ
diff --git a/tests_zemu/snapshots/s-op-restore-footprint/00003.png b/tests_zemu/snapshots/s-op-restore-footprint/00003.png
new file mode 100644
index 00000000..3957ddd4
Binary files /dev/null and b/tests_zemu/snapshots/s-op-restore-footprint/00003.png differ
diff --git a/tests_zemu/snapshots/s-op-restore-footprint/00004.png b/tests_zemu/snapshots/s-op-restore-footprint/00004.png
new file mode 100644
index 00000000..b4a8c761
Binary files /dev/null and b/tests_zemu/snapshots/s-op-restore-footprint/00004.png differ
diff --git a/tests_zemu/snapshots/s-op-restore-footprint/00005.png b/tests_zemu/snapshots/s-op-restore-footprint/00005.png
new file mode 100644
index 00000000..1521826b
Binary files /dev/null and b/tests_zemu/snapshots/s-op-restore-footprint/00005.png differ
diff --git a/tests_zemu/snapshots/s-op-restore-footprint/00006.png b/tests_zemu/snapshots/s-op-restore-footprint/00006.png
new file mode 100644
index 00000000..2c27b1ca
Binary files /dev/null and b/tests_zemu/snapshots/s-op-restore-footprint/00006.png differ
diff --git a/tests_zemu/snapshots/s-op-restore-footprint/00007.png b/tests_zemu/snapshots/s-op-restore-footprint/00007.png
new file mode 100644
index 00000000..0dc3dfc0
Binary files /dev/null and b/tests_zemu/snapshots/s-op-restore-footprint/00007.png differ
diff --git a/tests_zemu/snapshots/s-op-restore-footprint/00008.png b/tests_zemu/snapshots/s-op-restore-footprint/00008.png
new file mode 100644
index 00000000..fbb9ce10
Binary files /dev/null and b/tests_zemu/snapshots/s-op-restore-footprint/00008.png differ
diff --git a/tests_zemu/snapshots/s-op-restore-footprint/00009.png b/tests_zemu/snapshots/s-op-restore-footprint/00009.png
new file mode 100644
index 00000000..fcbedd82
Binary files /dev/null and b/tests_zemu/snapshots/s-op-restore-footprint/00009.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-asset-approve/00000.png b/tests_zemu/snapshots/s-soroban-auth-asset-approve/00000.png
new file mode 100644
index 00000000..f4f760bb
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-asset-approve/00000.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-asset-approve/00001.png b/tests_zemu/snapshots/s-soroban-auth-asset-approve/00001.png
new file mode 100644
index 00000000..c49170e4
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-asset-approve/00001.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-asset-approve/00002.png b/tests_zemu/snapshots/s-soroban-auth-asset-approve/00002.png
new file mode 100644
index 00000000..d87d3170
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-asset-approve/00002.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-asset-approve/00003.png b/tests_zemu/snapshots/s-soroban-auth-asset-approve/00003.png
new file mode 100644
index 00000000..f6a4dac5
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-asset-approve/00003.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-asset-approve/00004.png b/tests_zemu/snapshots/s-soroban-auth-asset-approve/00004.png
new file mode 100644
index 00000000..4265b35c
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-asset-approve/00004.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-asset-approve/00005.png b/tests_zemu/snapshots/s-soroban-auth-asset-approve/00005.png
new file mode 100644
index 00000000..ee87f328
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-asset-approve/00005.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-asset-approve/00006.png b/tests_zemu/snapshots/s-soroban-auth-asset-approve/00006.png
new file mode 100644
index 00000000..14be9988
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-asset-approve/00006.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-asset-approve/00007.png b/tests_zemu/snapshots/s-soroban-auth-asset-approve/00007.png
new file mode 100644
index 00000000..71326a23
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-asset-approve/00007.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-asset-approve/00008.png b/tests_zemu/snapshots/s-soroban-auth-asset-approve/00008.png
new file mode 100644
index 00000000..39608848
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-asset-approve/00008.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-asset-approve/00009.png b/tests_zemu/snapshots/s-soroban-auth-asset-approve/00009.png
new file mode 100644
index 00000000..18cf47a1
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-asset-approve/00009.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-asset-approve/00010.png b/tests_zemu/snapshots/s-soroban-auth-asset-approve/00010.png
new file mode 100644
index 00000000..e40d10e0
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-asset-approve/00010.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-asset-approve/00011.png b/tests_zemu/snapshots/s-soroban-auth-asset-approve/00011.png
new file mode 100644
index 00000000..dfe46d21
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-asset-approve/00011.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-asset-approve/00012.png b/tests_zemu/snapshots/s-soroban-auth-asset-approve/00012.png
new file mode 100644
index 00000000..bce2acd2
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-asset-approve/00012.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-asset-approve/00013.png b/tests_zemu/snapshots/s-soroban-auth-asset-approve/00013.png
new file mode 100644
index 00000000..3a70fa18
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-asset-approve/00013.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-asset-approve/00014.png b/tests_zemu/snapshots/s-soroban-auth-asset-approve/00014.png
new file mode 100644
index 00000000..6dd92098
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-asset-approve/00014.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-asset-approve/00015.png b/tests_zemu/snapshots/s-soroban-auth-asset-approve/00015.png
new file mode 100644
index 00000000..22a960ab
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-asset-approve/00015.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-asset-approve/00016.png b/tests_zemu/snapshots/s-soroban-auth-asset-approve/00016.png
new file mode 100644
index 00000000..7f28d0a0
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-asset-approve/00016.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-asset-approve/00017.png b/tests_zemu/snapshots/s-soroban-auth-asset-approve/00017.png
new file mode 100644
index 00000000..fe802a77
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-asset-approve/00017.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-asset-approve/00018.png b/tests_zemu/snapshots/s-soroban-auth-asset-approve/00018.png
new file mode 100644
index 00000000..0c2699e7
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-asset-approve/00018.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-asset-approve/00019.png b/tests_zemu/snapshots/s-soroban-auth-asset-approve/00019.png
new file mode 100644
index 00000000..6901d14a
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-asset-approve/00019.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-asset-approve/00020.png b/tests_zemu/snapshots/s-soroban-auth-asset-approve/00020.png
new file mode 100644
index 00000000..fcbedd82
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-asset-approve/00020.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-asset-transfer/00000.png b/tests_zemu/snapshots/s-soroban-auth-asset-transfer/00000.png
new file mode 100644
index 00000000..f4f760bb
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-asset-transfer/00000.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-asset-transfer/00001.png b/tests_zemu/snapshots/s-soroban-auth-asset-transfer/00001.png
new file mode 100644
index 00000000..5e62d273
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-asset-transfer/00001.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-asset-transfer/00002.png b/tests_zemu/snapshots/s-soroban-auth-asset-transfer/00002.png
new file mode 100644
index 00000000..7597592d
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-asset-transfer/00002.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-asset-transfer/00003.png b/tests_zemu/snapshots/s-soroban-auth-asset-transfer/00003.png
new file mode 100644
index 00000000..d1353b15
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-asset-transfer/00003.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-asset-transfer/00004.png b/tests_zemu/snapshots/s-soroban-auth-asset-transfer/00004.png
new file mode 100644
index 00000000..0c6d80d8
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-asset-transfer/00004.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-asset-transfer/00005.png b/tests_zemu/snapshots/s-soroban-auth-asset-transfer/00005.png
new file mode 100644
index 00000000..ffdaa2fd
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-asset-transfer/00005.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-asset-transfer/00006.png b/tests_zemu/snapshots/s-soroban-auth-asset-transfer/00006.png
new file mode 100644
index 00000000..6f73c9d6
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-asset-transfer/00006.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-asset-transfer/00007.png b/tests_zemu/snapshots/s-soroban-auth-asset-transfer/00007.png
new file mode 100644
index 00000000..71326a23
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-asset-transfer/00007.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-asset-transfer/00008.png b/tests_zemu/snapshots/s-soroban-auth-asset-transfer/00008.png
new file mode 100644
index 00000000..39608848
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-asset-transfer/00008.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-asset-transfer/00009.png b/tests_zemu/snapshots/s-soroban-auth-asset-transfer/00009.png
new file mode 100644
index 00000000..8f4941ee
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-asset-transfer/00009.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-asset-transfer/00010.png b/tests_zemu/snapshots/s-soroban-auth-asset-transfer/00010.png
new file mode 100644
index 00000000..3a70fa18
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-asset-transfer/00010.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-asset-transfer/00011.png b/tests_zemu/snapshots/s-soroban-auth-asset-transfer/00011.png
new file mode 100644
index 00000000..6dd92098
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-asset-transfer/00011.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-asset-transfer/00012.png b/tests_zemu/snapshots/s-soroban-auth-asset-transfer/00012.png
new file mode 100644
index 00000000..22a960ab
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-asset-transfer/00012.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-asset-transfer/00013.png b/tests_zemu/snapshots/s-soroban-auth-asset-transfer/00013.png
new file mode 100644
index 00000000..7f28d0a0
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-asset-transfer/00013.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-asset-transfer/00014.png b/tests_zemu/snapshots/s-soroban-auth-asset-transfer/00014.png
new file mode 100644
index 00000000..5e1f0df3
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-asset-transfer/00014.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-asset-transfer/00015.png b/tests_zemu/snapshots/s-soroban-auth-asset-transfer/00015.png
new file mode 100644
index 00000000..c207018e
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-asset-transfer/00015.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-asset-transfer/00016.png b/tests_zemu/snapshots/s-soroban-auth-asset-transfer/00016.png
new file mode 100644
index 00000000..55f4ee98
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-asset-transfer/00016.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-asset-transfer/00017.png b/tests_zemu/snapshots/s-soroban-auth-asset-transfer/00017.png
new file mode 100644
index 00000000..3b0f48d4
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-asset-transfer/00017.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-asset-transfer/00018.png b/tests_zemu/snapshots/s-soroban-auth-asset-transfer/00018.png
new file mode 100644
index 00000000..6901d14a
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-asset-transfer/00018.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-asset-transfer/00019.png b/tests_zemu/snapshots/s-soroban-auth-asset-transfer/00019.png
new file mode 100644
index 00000000..fcbedd82
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-asset-transfer/00019.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-create-contract/00000.png b/tests_zemu/snapshots/s-soroban-auth-create-contract/00000.png
new file mode 100644
index 00000000..f4f760bb
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-create-contract/00000.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-create-contract/00001.png b/tests_zemu/snapshots/s-soroban-auth-create-contract/00001.png
new file mode 100644
index 00000000..126560c8
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-create-contract/00001.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-create-contract/00002.png b/tests_zemu/snapshots/s-soroban-auth-create-contract/00002.png
new file mode 100644
index 00000000..6f73c9d6
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-create-contract/00002.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-create-contract/00003.png b/tests_zemu/snapshots/s-soroban-auth-create-contract/00003.png
new file mode 100644
index 00000000..6901d14a
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-create-contract/00003.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-create-contract/00004.png b/tests_zemu/snapshots/s-soroban-auth-create-contract/00004.png
new file mode 100644
index 00000000..fcbedd82
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-create-contract/00004.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-custom-contract/00000.png b/tests_zemu/snapshots/s-soroban-auth-custom-contract/00000.png
new file mode 100644
index 00000000..f4f760bb
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-custom-contract/00000.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-custom-contract/00001.png b/tests_zemu/snapshots/s-soroban-auth-custom-contract/00001.png
new file mode 100644
index 00000000..5e62d273
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-custom-contract/00001.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-custom-contract/00002.png b/tests_zemu/snapshots/s-soroban-auth-custom-contract/00002.png
new file mode 100644
index 00000000..7597592d
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-custom-contract/00002.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-custom-contract/00003.png b/tests_zemu/snapshots/s-soroban-auth-custom-contract/00003.png
new file mode 100644
index 00000000..d1353b15
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-custom-contract/00003.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-custom-contract/00004.png b/tests_zemu/snapshots/s-soroban-auth-custom-contract/00004.png
new file mode 100644
index 00000000..0c6d80d8
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-custom-contract/00004.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-custom-contract/00005.png b/tests_zemu/snapshots/s-soroban-auth-custom-contract/00005.png
new file mode 100644
index 00000000..f6f02cd7
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-custom-contract/00005.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-custom-contract/00006.png b/tests_zemu/snapshots/s-soroban-auth-custom-contract/00006.png
new file mode 100644
index 00000000..6f73c9d6
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-custom-contract/00006.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-custom-contract/00007.png b/tests_zemu/snapshots/s-soroban-auth-custom-contract/00007.png
new file mode 100644
index 00000000..95ea9afc
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-custom-contract/00007.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-custom-contract/00008.png b/tests_zemu/snapshots/s-soroban-auth-custom-contract/00008.png
new file mode 100644
index 00000000..35a38ade
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-custom-contract/00008.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-custom-contract/00009.png b/tests_zemu/snapshots/s-soroban-auth-custom-contract/00009.png
new file mode 100644
index 00000000..7c2d1eb7
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-custom-contract/00009.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-custom-contract/00010.png b/tests_zemu/snapshots/s-soroban-auth-custom-contract/00010.png
new file mode 100644
index 00000000..54cfd32c
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-custom-contract/00010.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-custom-contract/00011.png b/tests_zemu/snapshots/s-soroban-auth-custom-contract/00011.png
new file mode 100644
index 00000000..e41bd756
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-custom-contract/00011.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-custom-contract/00012.png b/tests_zemu/snapshots/s-soroban-auth-custom-contract/00012.png
new file mode 100644
index 00000000..a80a1a3d
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-custom-contract/00012.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-custom-contract/00013.png b/tests_zemu/snapshots/s-soroban-auth-custom-contract/00013.png
new file mode 100644
index 00000000..ec020ad8
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-custom-contract/00013.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-custom-contract/00014.png b/tests_zemu/snapshots/s-soroban-auth-custom-contract/00014.png
new file mode 100644
index 00000000..07d7b9de
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-custom-contract/00014.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-custom-contract/00015.png b/tests_zemu/snapshots/s-soroban-auth-custom-contract/00015.png
new file mode 100644
index 00000000..39ca0a18
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-custom-contract/00015.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-custom-contract/00016.png b/tests_zemu/snapshots/s-soroban-auth-custom-contract/00016.png
new file mode 100644
index 00000000..6901d14a
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-custom-contract/00016.png differ
diff --git a/tests_zemu/snapshots/s-soroban-auth-custom-contract/00017.png b/tests_zemu/snapshots/s-soroban-auth-custom-contract/00017.png
new file mode 100644
index 00000000..fcbedd82
Binary files /dev/null and b/tests_zemu/snapshots/s-soroban-auth-custom-contract/00017.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00002.png b/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00002.png
index d72ec205..ac4a8c47 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00002.png and b/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00002.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00003.png b/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00003.png
index 45b232ee..4d6b44c8 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00003.png and b/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00003.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00005.png b/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00005.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00005.png and b/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00005.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00006.png b/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00006.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00006.png and b/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00006.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00008.png b/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00008.png
index 0f15324a..c47baab5 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00008.png and b/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00008.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00009.png b/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00009.png
index 55508a4d..cc3b7bfe 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00009.png and b/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00009.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00011.png b/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00011.png
index bae17cff..716253dd 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00011.png and b/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00011.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00012.png b/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00012.png
index 9fc66f1d..21ca90fc 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00012.png and b/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00012.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00013.png b/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00013.png
index 55496b82..cffd5a33 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00013.png and b/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00013.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00014.png b/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00014.png
index 4e2026a1..61032206 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00014.png and b/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00014.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00015.png b/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00015.png
index 5cea3230..9bc20076 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00015.png and b/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00015.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00017.png b/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00017.png
index bae17cff..716253dd 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00017.png and b/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00017.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00018.png b/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00018.png
index 349bce7a..40df6355 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00018.png and b/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00018.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00019.png b/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00019.png
index a19cd2a9..e8214054 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00019.png and b/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00019.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00020.png b/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00020.png
index 4e2026a1..61032206 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00020.png and b/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00020.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00021.png b/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00021.png
index 5cea3230..9bc20076 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00021.png and b/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00021.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00023.png b/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00023.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00023.png and b/tests_zemu/snapshots/sp-fee-bump-tx-hide-sequence/00023.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00002.png b/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00002.png
index d72ec205..ac4a8c47 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00002.png and b/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00002.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00003.png b/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00003.png
index 9e9d65b3..43682b3e 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00003.png and b/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00003.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00005.png b/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00005.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00005.png and b/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00005.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00006.png b/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00006.png
index 01f221f9..ebf8b908 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00006.png and b/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00006.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00007.png b/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00007.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00007.png and b/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00007.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00009.png b/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00009.png
index 0f15324a..c47baab5 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00009.png and b/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00009.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00010.png b/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00010.png
index 55508a4d..cc3b7bfe 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00010.png and b/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00010.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00012.png b/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00012.png
index 1571c9b3..5a7ffae2 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00012.png and b/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00012.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00013.png b/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00013.png
index 4e2026a1..61032206 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00013.png and b/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00013.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00014.png b/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00014.png
index 5cea3230..9bc20076 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00014.png and b/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00014.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00016.png b/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00016.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00016.png and b/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-equal-signer/00016.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00002.png b/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00002.png
index 36f530e6..8b99b7ac 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00002.png and b/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00002.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00003.png b/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00003.png
index 87df7a36..d45fcdbf 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00003.png and b/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00003.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00004.png b/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00004.png
index 9e9d65b3..43682b3e 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00004.png and b/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00004.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00006.png b/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00006.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00006.png and b/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00006.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00007.png b/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00007.png
index 01f221f9..ebf8b908 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00007.png and b/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00007.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00008.png b/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00008.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00008.png and b/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00008.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00010.png b/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00010.png
index 0f15324a..c47baab5 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00010.png and b/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00010.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00011.png b/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00011.png
index 55508a4d..cc3b7bfe 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00011.png and b/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00011.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00013.png b/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00013.png
index 1571c9b3..5a7ffae2 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00013.png and b/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00013.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00014.png b/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00014.png
index 4e2026a1..61032206 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00014.png and b/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00014.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00015.png b/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00015.png
index 5cea3230..9bc20076 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00015.png and b/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00015.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00017.png b/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00017.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00017.png and b/tests_zemu/snapshots/sp-fee-bump-tx-omit-fee-source-not-equal-signer/00017.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00002.png b/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00002.png
index afb59c82..3f8d070a 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00002.png and b/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00002.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00003.png b/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00003.png
index 34178afd..fc4dfbbe 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00003.png and b/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00003.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00004.png b/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00004.png
index 9e9d65b3..43682b3e 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00004.png and b/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00004.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00006.png b/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00006.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00006.png and b/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00006.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00007.png b/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00007.png
index 01f221f9..ebf8b908 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00007.png and b/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00007.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00008.png b/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00008.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00008.png and b/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00008.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00010.png b/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00010.png
index 0f15324a..c47baab5 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00010.png and b/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00010.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00011.png b/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00011.png
index 55508a4d..cc3b7bfe 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00011.png and b/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00011.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00013.png b/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00013.png
index 1571c9b3..5a7ffae2 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00013.png and b/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00013.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00014.png b/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00014.png
index 4e2026a1..61032206 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00014.png and b/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00014.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00015.png b/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00015.png
index 5cea3230..9bc20076 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00015.png and b/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00015.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00017.png b/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00017.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00017.png and b/tests_zemu/snapshots/sp-fee-bump-tx-omit-muxed-fee-source-equal-signer/00017.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-reject/00002.png b/tests_zemu/snapshots/sp-fee-bump-tx-reject/00002.png
index d72ec205..ac4a8c47 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-reject/00002.png and b/tests_zemu/snapshots/sp-fee-bump-tx-reject/00002.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-reject/00003.png b/tests_zemu/snapshots/sp-fee-bump-tx-reject/00003.png
index 45b232ee..4d6b44c8 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-reject/00003.png and b/tests_zemu/snapshots/sp-fee-bump-tx-reject/00003.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-reject/00005.png b/tests_zemu/snapshots/sp-fee-bump-tx-reject/00005.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-reject/00005.png and b/tests_zemu/snapshots/sp-fee-bump-tx-reject/00005.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-reject/00006.png b/tests_zemu/snapshots/sp-fee-bump-tx-reject/00006.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-reject/00006.png and b/tests_zemu/snapshots/sp-fee-bump-tx-reject/00006.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-reject/00007.png b/tests_zemu/snapshots/sp-fee-bump-tx-reject/00007.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-reject/00007.png and b/tests_zemu/snapshots/sp-fee-bump-tx-reject/00007.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-reject/00009.png b/tests_zemu/snapshots/sp-fee-bump-tx-reject/00009.png
index 0f15324a..c47baab5 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-reject/00009.png and b/tests_zemu/snapshots/sp-fee-bump-tx-reject/00009.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-reject/00010.png b/tests_zemu/snapshots/sp-fee-bump-tx-reject/00010.png
index 55508a4d..cc3b7bfe 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-reject/00010.png and b/tests_zemu/snapshots/sp-fee-bump-tx-reject/00010.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-reject/00012.png b/tests_zemu/snapshots/sp-fee-bump-tx-reject/00012.png
index bae17cff..716253dd 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-reject/00012.png and b/tests_zemu/snapshots/sp-fee-bump-tx-reject/00012.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-reject/00013.png b/tests_zemu/snapshots/sp-fee-bump-tx-reject/00013.png
index 9fc66f1d..21ca90fc 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-reject/00013.png and b/tests_zemu/snapshots/sp-fee-bump-tx-reject/00013.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-reject/00014.png b/tests_zemu/snapshots/sp-fee-bump-tx-reject/00014.png
index 55496b82..cffd5a33 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-reject/00014.png and b/tests_zemu/snapshots/sp-fee-bump-tx-reject/00014.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-reject/00015.png b/tests_zemu/snapshots/sp-fee-bump-tx-reject/00015.png
index 4e2026a1..61032206 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-reject/00015.png and b/tests_zemu/snapshots/sp-fee-bump-tx-reject/00015.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-reject/00016.png b/tests_zemu/snapshots/sp-fee-bump-tx-reject/00016.png
index 5cea3230..9bc20076 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-reject/00016.png and b/tests_zemu/snapshots/sp-fee-bump-tx-reject/00016.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-reject/00018.png b/tests_zemu/snapshots/sp-fee-bump-tx-reject/00018.png
index bae17cff..716253dd 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-reject/00018.png and b/tests_zemu/snapshots/sp-fee-bump-tx-reject/00018.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-reject/00019.png b/tests_zemu/snapshots/sp-fee-bump-tx-reject/00019.png
index 349bce7a..40df6355 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-reject/00019.png and b/tests_zemu/snapshots/sp-fee-bump-tx-reject/00019.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-reject/00020.png b/tests_zemu/snapshots/sp-fee-bump-tx-reject/00020.png
index a19cd2a9..e8214054 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-reject/00020.png and b/tests_zemu/snapshots/sp-fee-bump-tx-reject/00020.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-reject/00021.png b/tests_zemu/snapshots/sp-fee-bump-tx-reject/00021.png
index 4e2026a1..61032206 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-reject/00021.png and b/tests_zemu/snapshots/sp-fee-bump-tx-reject/00021.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-reject/00022.png b/tests_zemu/snapshots/sp-fee-bump-tx-reject/00022.png
index 5cea3230..9bc20076 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-reject/00022.png and b/tests_zemu/snapshots/sp-fee-bump-tx-reject/00022.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-reject/00025.png b/tests_zemu/snapshots/sp-fee-bump-tx-reject/00025.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-reject/00025.png and b/tests_zemu/snapshots/sp-fee-bump-tx-reject/00025.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00002.png b/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00002.png
index afb59c82..3f8d070a 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00002.png and b/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00002.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00003.png b/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00003.png
index 34178afd..fc4dfbbe 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00003.png and b/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00003.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00004.png b/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00004.png
index 45b232ee..4d6b44c8 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00004.png and b/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00004.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00006.png b/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00006.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00006.png and b/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00006.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00007.png b/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00007.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00007.png and b/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00007.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00008.png b/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00008.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00008.png and b/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00008.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00010.png b/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00010.png
index 0f15324a..c47baab5 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00010.png and b/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00010.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00011.png b/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00011.png
index 55508a4d..cc3b7bfe 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00011.png and b/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00011.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00013.png b/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00013.png
index bae17cff..716253dd 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00013.png and b/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00013.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00014.png b/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00014.png
index 9fc66f1d..21ca90fc 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00014.png and b/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00014.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00015.png b/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00015.png
index 55496b82..cffd5a33 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00015.png and b/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00015.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00016.png b/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00016.png
index 4e2026a1..61032206 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00016.png and b/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00016.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00017.png b/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00017.png
index 5cea3230..9bc20076 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00017.png and b/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00017.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00019.png b/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00019.png
index bae17cff..716253dd 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00019.png and b/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00019.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00020.png b/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00020.png
index 349bce7a..40df6355 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00020.png and b/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00020.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00021.png b/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00021.png
index a19cd2a9..e8214054 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00021.png and b/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00021.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00022.png b/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00022.png
index 4e2026a1..61032206 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00022.png and b/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00022.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00023.png b/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00023.png
index 5cea3230..9bc20076 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00023.png and b/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00023.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00025.png b/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00025.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00025.png and b/tests_zemu/snapshots/sp-fee-bump-tx-with-muxed-fee-source/00025.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx/00002.png b/tests_zemu/snapshots/sp-fee-bump-tx/00002.png
index d72ec205..ac4a8c47 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx/00002.png and b/tests_zemu/snapshots/sp-fee-bump-tx/00002.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx/00003.png b/tests_zemu/snapshots/sp-fee-bump-tx/00003.png
index 45b232ee..4d6b44c8 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx/00003.png and b/tests_zemu/snapshots/sp-fee-bump-tx/00003.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx/00005.png b/tests_zemu/snapshots/sp-fee-bump-tx/00005.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx/00005.png and b/tests_zemu/snapshots/sp-fee-bump-tx/00005.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx/00006.png b/tests_zemu/snapshots/sp-fee-bump-tx/00006.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx/00006.png and b/tests_zemu/snapshots/sp-fee-bump-tx/00006.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx/00007.png b/tests_zemu/snapshots/sp-fee-bump-tx/00007.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx/00007.png and b/tests_zemu/snapshots/sp-fee-bump-tx/00007.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx/00009.png b/tests_zemu/snapshots/sp-fee-bump-tx/00009.png
index 0f15324a..c47baab5 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx/00009.png and b/tests_zemu/snapshots/sp-fee-bump-tx/00009.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx/00010.png b/tests_zemu/snapshots/sp-fee-bump-tx/00010.png
index 55508a4d..cc3b7bfe 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx/00010.png and b/tests_zemu/snapshots/sp-fee-bump-tx/00010.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx/00012.png b/tests_zemu/snapshots/sp-fee-bump-tx/00012.png
index bae17cff..716253dd 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx/00012.png and b/tests_zemu/snapshots/sp-fee-bump-tx/00012.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx/00013.png b/tests_zemu/snapshots/sp-fee-bump-tx/00013.png
index 9fc66f1d..21ca90fc 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx/00013.png and b/tests_zemu/snapshots/sp-fee-bump-tx/00013.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx/00014.png b/tests_zemu/snapshots/sp-fee-bump-tx/00014.png
index 55496b82..cffd5a33 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx/00014.png and b/tests_zemu/snapshots/sp-fee-bump-tx/00014.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx/00015.png b/tests_zemu/snapshots/sp-fee-bump-tx/00015.png
index 4e2026a1..61032206 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx/00015.png and b/tests_zemu/snapshots/sp-fee-bump-tx/00015.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx/00016.png b/tests_zemu/snapshots/sp-fee-bump-tx/00016.png
index 5cea3230..9bc20076 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx/00016.png and b/tests_zemu/snapshots/sp-fee-bump-tx/00016.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx/00018.png b/tests_zemu/snapshots/sp-fee-bump-tx/00018.png
index bae17cff..716253dd 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx/00018.png and b/tests_zemu/snapshots/sp-fee-bump-tx/00018.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx/00019.png b/tests_zemu/snapshots/sp-fee-bump-tx/00019.png
index 349bce7a..40df6355 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx/00019.png and b/tests_zemu/snapshots/sp-fee-bump-tx/00019.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx/00020.png b/tests_zemu/snapshots/sp-fee-bump-tx/00020.png
index a19cd2a9..e8214054 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx/00020.png and b/tests_zemu/snapshots/sp-fee-bump-tx/00020.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx/00021.png b/tests_zemu/snapshots/sp-fee-bump-tx/00021.png
index 4e2026a1..61032206 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx/00021.png and b/tests_zemu/snapshots/sp-fee-bump-tx/00021.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx/00022.png b/tests_zemu/snapshots/sp-fee-bump-tx/00022.png
index 5cea3230..9bc20076 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx/00022.png and b/tests_zemu/snapshots/sp-fee-bump-tx/00022.png differ
diff --git a/tests_zemu/snapshots/sp-fee-bump-tx/00024.png b/tests_zemu/snapshots/sp-fee-bump-tx/00024.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-fee-bump-tx/00024.png and b/tests_zemu/snapshots/sp-fee-bump-tx/00024.png differ
diff --git a/tests_zemu/snapshots/sp-hash-signing-approve/00001.png b/tests_zemu/snapshots/sp-hash-signing-approve/00001.png
index 61e944eb..e8f503ec 100644
Binary files a/tests_zemu/snapshots/sp-hash-signing-approve/00001.png and b/tests_zemu/snapshots/sp-hash-signing-approve/00001.png differ
diff --git a/tests_zemu/snapshots/sp-hash-signing-approve/00002.png b/tests_zemu/snapshots/sp-hash-signing-approve/00002.png
index efb147a7..671b365f 100644
Binary files a/tests_zemu/snapshots/sp-hash-signing-approve/00002.png and b/tests_zemu/snapshots/sp-hash-signing-approve/00002.png differ
diff --git a/tests_zemu/snapshots/sp-hash-signing-approve/00003.png b/tests_zemu/snapshots/sp-hash-signing-approve/00003.png
index 9d9f6dbf..5c056861 100644
Binary files a/tests_zemu/snapshots/sp-hash-signing-approve/00003.png and b/tests_zemu/snapshots/sp-hash-signing-approve/00003.png differ
diff --git a/tests_zemu/snapshots/sp-hash-signing-approve/00007.png b/tests_zemu/snapshots/sp-hash-signing-approve/00007.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-hash-signing-approve/00007.png and b/tests_zemu/snapshots/sp-hash-signing-approve/00007.png differ
diff --git a/tests_zemu/snapshots/sp-hash-signing-reject/00001.png b/tests_zemu/snapshots/sp-hash-signing-reject/00001.png
index 61e944eb..e8f503ec 100644
Binary files a/tests_zemu/snapshots/sp-hash-signing-reject/00001.png and b/tests_zemu/snapshots/sp-hash-signing-reject/00001.png differ
diff --git a/tests_zemu/snapshots/sp-hash-signing-reject/00002.png b/tests_zemu/snapshots/sp-hash-signing-reject/00002.png
index efb147a7..671b365f 100644
Binary files a/tests_zemu/snapshots/sp-hash-signing-reject/00002.png and b/tests_zemu/snapshots/sp-hash-signing-reject/00002.png differ
diff --git a/tests_zemu/snapshots/sp-hash-signing-reject/00003.png b/tests_zemu/snapshots/sp-hash-signing-reject/00003.png
index 9d9f6dbf..5c056861 100644
Binary files a/tests_zemu/snapshots/sp-hash-signing-reject/00003.png and b/tests_zemu/snapshots/sp-hash-signing-reject/00003.png differ
diff --git a/tests_zemu/snapshots/sp-hash-signing-reject/00007.png b/tests_zemu/snapshots/sp-hash-signing-reject/00007.png
index c9222461..e90cd9db 100644
Binary files a/tests_zemu/snapshots/sp-hash-signing-reject/00007.png and b/tests_zemu/snapshots/sp-hash-signing-reject/00007.png differ
diff --git a/tests_zemu/snapshots/sp-hash-signing-reject/00008.png b/tests_zemu/snapshots/sp-hash-signing-reject/00008.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-hash-signing-reject/00008.png and b/tests_zemu/snapshots/sp-hash-signing-reject/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00001.png b/tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00001.png and b/tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00002.png b/tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00002.png and b/tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00003.png b/tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00003.png and b/tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00005.png b/tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00005.png and b/tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00006.png b/tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00006.png
index 6e04454e..b97bf8bd 100644
Binary files a/tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00006.png and b/tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00006.png differ
diff --git a/tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00007.png b/tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00007.png
index 924a0fda..39d85d54 100644
Binary files a/tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00007.png and b/tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00008.png b/tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00008.png
index 360a4316..d36cda7a 100644
Binary files a/tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00008.png and b/tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00009.png b/tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00009.png
index ea1b11a7..a9670471 100644
Binary files a/tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00009.png and b/tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00009.png differ
diff --git a/tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00011.png b/tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00011.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00011.png and b/tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00011.png differ
diff --git a/tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00013.png b/tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00013.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00013.png and b/tests_zemu/snapshots/sp-op-account-merge-with-muxed-destination/00013.png differ
diff --git a/tests_zemu/snapshots/sp-op-account-merge/00001.png b/tests_zemu/snapshots/sp-op-account-merge/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-account-merge/00001.png and b/tests_zemu/snapshots/sp-op-account-merge/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-account-merge/00002.png b/tests_zemu/snapshots/sp-op-account-merge/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-account-merge/00002.png and b/tests_zemu/snapshots/sp-op-account-merge/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-account-merge/00003.png b/tests_zemu/snapshots/sp-op-account-merge/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-account-merge/00003.png and b/tests_zemu/snapshots/sp-op-account-merge/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-account-merge/00005.png b/tests_zemu/snapshots/sp-op-account-merge/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-account-merge/00005.png and b/tests_zemu/snapshots/sp-op-account-merge/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-account-merge/00006.png b/tests_zemu/snapshots/sp-op-account-merge/00006.png
index 6e04454e..b97bf8bd 100644
Binary files a/tests_zemu/snapshots/sp-op-account-merge/00006.png and b/tests_zemu/snapshots/sp-op-account-merge/00006.png differ
diff --git a/tests_zemu/snapshots/sp-op-account-merge/00007.png b/tests_zemu/snapshots/sp-op-account-merge/00007.png
index 924a0fda..39d85d54 100644
Binary files a/tests_zemu/snapshots/sp-op-account-merge/00007.png and b/tests_zemu/snapshots/sp-op-account-merge/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-account-merge/00008.png b/tests_zemu/snapshots/sp-op-account-merge/00008.png
index 360a4316..d36cda7a 100644
Binary files a/tests_zemu/snapshots/sp-op-account-merge/00008.png and b/tests_zemu/snapshots/sp-op-account-merge/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-account-merge/00009.png b/tests_zemu/snapshots/sp-op-account-merge/00009.png
index 9fc66f1d..21ca90fc 100644
Binary files a/tests_zemu/snapshots/sp-op-account-merge/00009.png and b/tests_zemu/snapshots/sp-op-account-merge/00009.png differ
diff --git a/tests_zemu/snapshots/sp-op-account-merge/00010.png b/tests_zemu/snapshots/sp-op-account-merge/00010.png
index 55496b82..cffd5a33 100644
Binary files a/tests_zemu/snapshots/sp-op-account-merge/00010.png and b/tests_zemu/snapshots/sp-op-account-merge/00010.png differ
diff --git a/tests_zemu/snapshots/sp-op-account-merge/00011.png b/tests_zemu/snapshots/sp-op-account-merge/00011.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-account-merge/00011.png and b/tests_zemu/snapshots/sp-op-account-merge/00011.png differ
diff --git a/tests_zemu/snapshots/sp-op-account-merge/00013.png b/tests_zemu/snapshots/sp-op-account-merge/00013.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-account-merge/00013.png and b/tests_zemu/snapshots/sp-op-account-merge/00013.png differ
diff --git a/tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00001.png b/tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00001.png and b/tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00002.png b/tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00002.png and b/tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00003.png b/tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00003.png and b/tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00005.png b/tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00005.png and b/tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00007.png b/tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00007.png
index 91837361..5cdc8b87 100644
Binary files a/tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00007.png and b/tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00008.png b/tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00008.png
index c7b05375..f33ba708 100644
Binary files a/tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00008.png and b/tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00009.png b/tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00009.png
index d7877240..9919c284 100644
Binary files a/tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00009.png and b/tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00009.png differ
diff --git a/tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00010.png b/tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00010.png
index 7a54b4da..aad8b574 100644
Binary files a/tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00010.png and b/tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00010.png differ
diff --git a/tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00011.png b/tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00011.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00011.png and b/tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00011.png differ
diff --git a/tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00013.png b/tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00013.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00013.png and b/tests_zemu/snapshots/sp-op-allow-trust-authorize-to-maintain-liabilities/00013.png differ
diff --git a/tests_zemu/snapshots/sp-op-allow-trust-authorize/00001.png b/tests_zemu/snapshots/sp-op-allow-trust-authorize/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-allow-trust-authorize/00001.png and b/tests_zemu/snapshots/sp-op-allow-trust-authorize/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-allow-trust-authorize/00002.png b/tests_zemu/snapshots/sp-op-allow-trust-authorize/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-allow-trust-authorize/00002.png and b/tests_zemu/snapshots/sp-op-allow-trust-authorize/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-allow-trust-authorize/00003.png b/tests_zemu/snapshots/sp-op-allow-trust-authorize/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-allow-trust-authorize/00003.png and b/tests_zemu/snapshots/sp-op-allow-trust-authorize/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-allow-trust-authorize/00005.png b/tests_zemu/snapshots/sp-op-allow-trust-authorize/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-allow-trust-authorize/00005.png and b/tests_zemu/snapshots/sp-op-allow-trust-authorize/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-allow-trust-authorize/00007.png b/tests_zemu/snapshots/sp-op-allow-trust-authorize/00007.png
index 91837361..5cdc8b87 100644
Binary files a/tests_zemu/snapshots/sp-op-allow-trust-authorize/00007.png and b/tests_zemu/snapshots/sp-op-allow-trust-authorize/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-allow-trust-authorize/00008.png b/tests_zemu/snapshots/sp-op-allow-trust-authorize/00008.png
index c7b05375..f33ba708 100644
Binary files a/tests_zemu/snapshots/sp-op-allow-trust-authorize/00008.png and b/tests_zemu/snapshots/sp-op-allow-trust-authorize/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-allow-trust-authorize/00009.png b/tests_zemu/snapshots/sp-op-allow-trust-authorize/00009.png
index d7877240..9919c284 100644
Binary files a/tests_zemu/snapshots/sp-op-allow-trust-authorize/00009.png and b/tests_zemu/snapshots/sp-op-allow-trust-authorize/00009.png differ
diff --git a/tests_zemu/snapshots/sp-op-allow-trust-authorize/00011.png b/tests_zemu/snapshots/sp-op-allow-trust-authorize/00011.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-allow-trust-authorize/00011.png and b/tests_zemu/snapshots/sp-op-allow-trust-authorize/00011.png differ
diff --git a/tests_zemu/snapshots/sp-op-allow-trust-authorize/00013.png b/tests_zemu/snapshots/sp-op-allow-trust-authorize/00013.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-allow-trust-authorize/00013.png and b/tests_zemu/snapshots/sp-op-allow-trust-authorize/00013.png differ
diff --git a/tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00001.png b/tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00001.png and b/tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00002.png b/tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00002.png and b/tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00003.png b/tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00003.png and b/tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00005.png b/tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00005.png and b/tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00007.png b/tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00007.png
index 91837361..5cdc8b87 100644
Binary files a/tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00007.png and b/tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00008.png b/tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00008.png
index c7b05375..f33ba708 100644
Binary files a/tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00008.png and b/tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00009.png b/tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00009.png
index d7877240..9919c284 100644
Binary files a/tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00009.png and b/tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00009.png differ
diff --git a/tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00011.png b/tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00011.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00011.png and b/tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00011.png differ
diff --git a/tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00013.png b/tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00013.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00013.png and b/tests_zemu/snapshots/sp-op-allow-trust-deauthorize/00013.png differ
diff --git a/tests_zemu/snapshots/sp-op-begin-sponsoring-future-reserves/00001.png b/tests_zemu/snapshots/sp-op-begin-sponsoring-future-reserves/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-begin-sponsoring-future-reserves/00001.png and b/tests_zemu/snapshots/sp-op-begin-sponsoring-future-reserves/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-begin-sponsoring-future-reserves/00002.png b/tests_zemu/snapshots/sp-op-begin-sponsoring-future-reserves/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-begin-sponsoring-future-reserves/00002.png and b/tests_zemu/snapshots/sp-op-begin-sponsoring-future-reserves/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-begin-sponsoring-future-reserves/00003.png b/tests_zemu/snapshots/sp-op-begin-sponsoring-future-reserves/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-begin-sponsoring-future-reserves/00003.png and b/tests_zemu/snapshots/sp-op-begin-sponsoring-future-reserves/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-begin-sponsoring-future-reserves/00005.png b/tests_zemu/snapshots/sp-op-begin-sponsoring-future-reserves/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-begin-sponsoring-future-reserves/00005.png and b/tests_zemu/snapshots/sp-op-begin-sponsoring-future-reserves/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-begin-sponsoring-future-reserves/00007.png b/tests_zemu/snapshots/sp-op-begin-sponsoring-future-reserves/00007.png
index bc7f2d8e..fe5c1075 100644
Binary files a/tests_zemu/snapshots/sp-op-begin-sponsoring-future-reserves/00007.png and b/tests_zemu/snapshots/sp-op-begin-sponsoring-future-reserves/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-begin-sponsoring-future-reserves/00008.png b/tests_zemu/snapshots/sp-op-begin-sponsoring-future-reserves/00008.png
index 58e43c80..662e9a95 100644
Binary files a/tests_zemu/snapshots/sp-op-begin-sponsoring-future-reserves/00008.png and b/tests_zemu/snapshots/sp-op-begin-sponsoring-future-reserves/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-begin-sponsoring-future-reserves/00009.png b/tests_zemu/snapshots/sp-op-begin-sponsoring-future-reserves/00009.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-begin-sponsoring-future-reserves/00009.png and b/tests_zemu/snapshots/sp-op-begin-sponsoring-future-reserves/00009.png differ
diff --git a/tests_zemu/snapshots/sp-op-begin-sponsoring-future-reserves/00011.png b/tests_zemu/snapshots/sp-op-begin-sponsoring-future-reserves/00011.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-begin-sponsoring-future-reserves/00011.png and b/tests_zemu/snapshots/sp-op-begin-sponsoring-future-reserves/00011.png differ
diff --git a/tests_zemu/snapshots/sp-op-bump-sequence/00001.png b/tests_zemu/snapshots/sp-op-bump-sequence/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-bump-sequence/00001.png and b/tests_zemu/snapshots/sp-op-bump-sequence/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-bump-sequence/00002.png b/tests_zemu/snapshots/sp-op-bump-sequence/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-bump-sequence/00002.png and b/tests_zemu/snapshots/sp-op-bump-sequence/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-bump-sequence/00003.png b/tests_zemu/snapshots/sp-op-bump-sequence/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-bump-sequence/00003.png and b/tests_zemu/snapshots/sp-op-bump-sequence/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-bump-sequence/00005.png b/tests_zemu/snapshots/sp-op-bump-sequence/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-bump-sequence/00005.png and b/tests_zemu/snapshots/sp-op-bump-sequence/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-bump-sequence/00007.png b/tests_zemu/snapshots/sp-op-bump-sequence/00007.png
index e6a128f6..52986b07 100644
Binary files a/tests_zemu/snapshots/sp-op-bump-sequence/00007.png and b/tests_zemu/snapshots/sp-op-bump-sequence/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-bump-sequence/00008.png b/tests_zemu/snapshots/sp-op-bump-sequence/00008.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-bump-sequence/00008.png and b/tests_zemu/snapshots/sp-op-bump-sequence/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-bump-sequence/00010.png b/tests_zemu/snapshots/sp-op-bump-sequence/00010.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-bump-sequence/00010.png and b/tests_zemu/snapshots/sp-op-bump-sequence/00010.png differ
diff --git a/tests_zemu/snapshots/sp-op-change-trust-add-trust-line/00001.png b/tests_zemu/snapshots/sp-op-change-trust-add-trust-line/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-change-trust-add-trust-line/00001.png and b/tests_zemu/snapshots/sp-op-change-trust-add-trust-line/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-change-trust-add-trust-line/00002.png b/tests_zemu/snapshots/sp-op-change-trust-add-trust-line/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-change-trust-add-trust-line/00002.png and b/tests_zemu/snapshots/sp-op-change-trust-add-trust-line/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-change-trust-add-trust-line/00003.png b/tests_zemu/snapshots/sp-op-change-trust-add-trust-line/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-change-trust-add-trust-line/00003.png and b/tests_zemu/snapshots/sp-op-change-trust-add-trust-line/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-change-trust-add-trust-line/00005.png b/tests_zemu/snapshots/sp-op-change-trust-add-trust-line/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-change-trust-add-trust-line/00005.png and b/tests_zemu/snapshots/sp-op-change-trust-add-trust-line/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-change-trust-add-trust-line/00007.png b/tests_zemu/snapshots/sp-op-change-trust-add-trust-line/00007.png
index 25afd4f2..b12e670d 100644
Binary files a/tests_zemu/snapshots/sp-op-change-trust-add-trust-line/00007.png and b/tests_zemu/snapshots/sp-op-change-trust-add-trust-line/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-change-trust-add-trust-line/00008.png b/tests_zemu/snapshots/sp-op-change-trust-add-trust-line/00008.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-change-trust-add-trust-line/00008.png and b/tests_zemu/snapshots/sp-op-change-trust-add-trust-line/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-change-trust-add-trust-line/00010.png b/tests_zemu/snapshots/sp-op-change-trust-add-trust-line/00010.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-change-trust-add-trust-line/00010.png and b/tests_zemu/snapshots/sp-op-change-trust-add-trust-line/00010.png differ
diff --git a/tests_zemu/snapshots/sp-op-change-trust-remove-trust-line/00001.png b/tests_zemu/snapshots/sp-op-change-trust-remove-trust-line/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-change-trust-remove-trust-line/00001.png and b/tests_zemu/snapshots/sp-op-change-trust-remove-trust-line/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-change-trust-remove-trust-line/00002.png b/tests_zemu/snapshots/sp-op-change-trust-remove-trust-line/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-change-trust-remove-trust-line/00002.png and b/tests_zemu/snapshots/sp-op-change-trust-remove-trust-line/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-change-trust-remove-trust-line/00003.png b/tests_zemu/snapshots/sp-op-change-trust-remove-trust-line/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-change-trust-remove-trust-line/00003.png and b/tests_zemu/snapshots/sp-op-change-trust-remove-trust-line/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-change-trust-remove-trust-line/00005.png b/tests_zemu/snapshots/sp-op-change-trust-remove-trust-line/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-change-trust-remove-trust-line/00005.png and b/tests_zemu/snapshots/sp-op-change-trust-remove-trust-line/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-change-trust-remove-trust-line/00007.png b/tests_zemu/snapshots/sp-op-change-trust-remove-trust-line/00007.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-change-trust-remove-trust-line/00007.png and b/tests_zemu/snapshots/sp-op-change-trust-remove-trust-line/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-change-trust-remove-trust-line/00009.png b/tests_zemu/snapshots/sp-op-change-trust-remove-trust-line/00009.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-change-trust-remove-trust-line/00009.png and b/tests_zemu/snapshots/sp-op-change-trust-remove-trust-line/00009.png differ
diff --git a/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-add-trust-line/00001.png b/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-add-trust-line/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-add-trust-line/00001.png and b/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-add-trust-line/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-add-trust-line/00002.png b/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-add-trust-line/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-add-trust-line/00002.png and b/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-add-trust-line/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-add-trust-line/00003.png b/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-add-trust-line/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-add-trust-line/00003.png and b/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-add-trust-line/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-add-trust-line/00005.png b/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-add-trust-line/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-add-trust-line/00005.png and b/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-add-trust-line/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-add-trust-line/00007.png b/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-add-trust-line/00007.png
index 04d1561b..a5872d4a 100644
Binary files a/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-add-trust-line/00007.png and b/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-add-trust-line/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-add-trust-line/00008.png b/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-add-trust-line/00008.png
index 8849a6a3..aaa0faa8 100644
Binary files a/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-add-trust-line/00008.png and b/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-add-trust-line/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-add-trust-line/00010.png b/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-add-trust-line/00010.png
index 25afd4f2..b12e670d 100644
Binary files a/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-add-trust-line/00010.png and b/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-add-trust-line/00010.png differ
diff --git a/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-add-trust-line/00011.png b/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-add-trust-line/00011.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-add-trust-line/00011.png and b/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-add-trust-line/00011.png differ
diff --git a/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-add-trust-line/00013.png b/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-add-trust-line/00013.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-add-trust-line/00013.png and b/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-add-trust-line/00013.png differ
diff --git a/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00001.png b/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00001.png and b/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00002.png b/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00002.png and b/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00003.png b/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00003.png and b/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00005.png b/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00005.png and b/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00007.png b/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00007.png
index 04d1561b..a5872d4a 100644
Binary files a/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00007.png and b/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00008.png b/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00008.png
index 8849a6a3..aaa0faa8 100644
Binary files a/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00008.png and b/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00010.png b/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00010.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00010.png and b/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00010.png differ
diff --git a/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00012.png b/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00012.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00012.png and b/tests_zemu/snapshots/sp-op-change-trust-with-liquidity-pool-asset-remove-trust-line/00012.png differ
diff --git a/tests_zemu/snapshots/sp-op-claim-claimable-balance/00001.png b/tests_zemu/snapshots/sp-op-claim-claimable-balance/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-claim-claimable-balance/00001.png and b/tests_zemu/snapshots/sp-op-claim-claimable-balance/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-claim-claimable-balance/00002.png b/tests_zemu/snapshots/sp-op-claim-claimable-balance/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-claim-claimable-balance/00002.png and b/tests_zemu/snapshots/sp-op-claim-claimable-balance/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-claim-claimable-balance/00003.png b/tests_zemu/snapshots/sp-op-claim-claimable-balance/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-claim-claimable-balance/00003.png and b/tests_zemu/snapshots/sp-op-claim-claimable-balance/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-claim-claimable-balance/00005.png b/tests_zemu/snapshots/sp-op-claim-claimable-balance/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-claim-claimable-balance/00005.png and b/tests_zemu/snapshots/sp-op-claim-claimable-balance/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-claim-claimable-balance/00008.png b/tests_zemu/snapshots/sp-op-claim-claimable-balance/00008.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-claim-claimable-balance/00008.png and b/tests_zemu/snapshots/sp-op-claim-claimable-balance/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-claim-claimable-balance/00010.png b/tests_zemu/snapshots/sp-op-claim-claimable-balance/00010.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-claim-claimable-balance/00010.png and b/tests_zemu/snapshots/sp-op-claim-claimable-balance/00010.png differ
diff --git a/tests_zemu/snapshots/sp-op-clawback-claimable-balance/00001.png b/tests_zemu/snapshots/sp-op-clawback-claimable-balance/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-clawback-claimable-balance/00001.png and b/tests_zemu/snapshots/sp-op-clawback-claimable-balance/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-clawback-claimable-balance/00002.png b/tests_zemu/snapshots/sp-op-clawback-claimable-balance/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-clawback-claimable-balance/00002.png and b/tests_zemu/snapshots/sp-op-clawback-claimable-balance/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-clawback-claimable-balance/00003.png b/tests_zemu/snapshots/sp-op-clawback-claimable-balance/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-clawback-claimable-balance/00003.png and b/tests_zemu/snapshots/sp-op-clawback-claimable-balance/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-clawback-claimable-balance/00005.png b/tests_zemu/snapshots/sp-op-clawback-claimable-balance/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-clawback-claimable-balance/00005.png and b/tests_zemu/snapshots/sp-op-clawback-claimable-balance/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-clawback-claimable-balance/00009.png b/tests_zemu/snapshots/sp-op-clawback-claimable-balance/00009.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-clawback-claimable-balance/00009.png and b/tests_zemu/snapshots/sp-op-clawback-claimable-balance/00009.png differ
diff --git a/tests_zemu/snapshots/sp-op-clawback-claimable-balance/00011.png b/tests_zemu/snapshots/sp-op-clawback-claimable-balance/00011.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-clawback-claimable-balance/00011.png and b/tests_zemu/snapshots/sp-op-clawback-claimable-balance/00011.png differ
diff --git a/tests_zemu/snapshots/sp-op-clawback-with-muxed-from/00001.png b/tests_zemu/snapshots/sp-op-clawback-with-muxed-from/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-clawback-with-muxed-from/00001.png and b/tests_zemu/snapshots/sp-op-clawback-with-muxed-from/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-clawback-with-muxed-from/00002.png b/tests_zemu/snapshots/sp-op-clawback-with-muxed-from/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-clawback-with-muxed-from/00002.png and b/tests_zemu/snapshots/sp-op-clawback-with-muxed-from/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-clawback-with-muxed-from/00003.png b/tests_zemu/snapshots/sp-op-clawback-with-muxed-from/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-clawback-with-muxed-from/00003.png and b/tests_zemu/snapshots/sp-op-clawback-with-muxed-from/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-clawback-with-muxed-from/00005.png b/tests_zemu/snapshots/sp-op-clawback-with-muxed-from/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-clawback-with-muxed-from/00005.png and b/tests_zemu/snapshots/sp-op-clawback-with-muxed-from/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-clawback-with-muxed-from/00007.png b/tests_zemu/snapshots/sp-op-clawback-with-muxed-from/00007.png
index 1c9b8431..dab80bee 100644
Binary files a/tests_zemu/snapshots/sp-op-clawback-with-muxed-from/00007.png and b/tests_zemu/snapshots/sp-op-clawback-with-muxed-from/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-clawback-with-muxed-from/00008.png b/tests_zemu/snapshots/sp-op-clawback-with-muxed-from/00008.png
index a8de9ce1..2e65ee2f 100644
Binary files a/tests_zemu/snapshots/sp-op-clawback-with-muxed-from/00008.png and b/tests_zemu/snapshots/sp-op-clawback-with-muxed-from/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-clawback-with-muxed-from/00010.png b/tests_zemu/snapshots/sp-op-clawback-with-muxed-from/00010.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-clawback-with-muxed-from/00010.png and b/tests_zemu/snapshots/sp-op-clawback-with-muxed-from/00010.png differ
diff --git a/tests_zemu/snapshots/sp-op-clawback-with-muxed-from/00012.png b/tests_zemu/snapshots/sp-op-clawback-with-muxed-from/00012.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-clawback-with-muxed-from/00012.png and b/tests_zemu/snapshots/sp-op-clawback-with-muxed-from/00012.png differ
diff --git a/tests_zemu/snapshots/sp-op-clawback/00001.png b/tests_zemu/snapshots/sp-op-clawback/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-clawback/00001.png and b/tests_zemu/snapshots/sp-op-clawback/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-clawback/00002.png b/tests_zemu/snapshots/sp-op-clawback/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-clawback/00002.png and b/tests_zemu/snapshots/sp-op-clawback/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-clawback/00003.png b/tests_zemu/snapshots/sp-op-clawback/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-clawback/00003.png and b/tests_zemu/snapshots/sp-op-clawback/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-clawback/00005.png b/tests_zemu/snapshots/sp-op-clawback/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-clawback/00005.png and b/tests_zemu/snapshots/sp-op-clawback/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-clawback/00007.png b/tests_zemu/snapshots/sp-op-clawback/00007.png
index 1c9b8431..dab80bee 100644
Binary files a/tests_zemu/snapshots/sp-op-clawback/00007.png and b/tests_zemu/snapshots/sp-op-clawback/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-clawback/00008.png b/tests_zemu/snapshots/sp-op-clawback/00008.png
index 959dba6b..6f30fe54 100644
Binary files a/tests_zemu/snapshots/sp-op-clawback/00008.png and b/tests_zemu/snapshots/sp-op-clawback/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-clawback/00009.png b/tests_zemu/snapshots/sp-op-clawback/00009.png
index 296484f8..2358f44d 100644
Binary files a/tests_zemu/snapshots/sp-op-clawback/00009.png and b/tests_zemu/snapshots/sp-op-clawback/00009.png differ
diff --git a/tests_zemu/snapshots/sp-op-clawback/00010.png b/tests_zemu/snapshots/sp-op-clawback/00010.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-clawback/00010.png and b/tests_zemu/snapshots/sp-op-clawback/00010.png differ
diff --git a/tests_zemu/snapshots/sp-op-clawback/00012.png b/tests_zemu/snapshots/sp-op-clawback/00012.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-clawback/00012.png and b/tests_zemu/snapshots/sp-op-clawback/00012.png differ
diff --git a/tests_zemu/snapshots/sp-op-create-account/00001.png b/tests_zemu/snapshots/sp-op-create-account/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-create-account/00001.png and b/tests_zemu/snapshots/sp-op-create-account/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-create-account/00002.png b/tests_zemu/snapshots/sp-op-create-account/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-create-account/00002.png and b/tests_zemu/snapshots/sp-op-create-account/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-create-account/00003.png b/tests_zemu/snapshots/sp-op-create-account/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-create-account/00003.png and b/tests_zemu/snapshots/sp-op-create-account/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-create-account/00005.png b/tests_zemu/snapshots/sp-op-create-account/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-create-account/00005.png and b/tests_zemu/snapshots/sp-op-create-account/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-create-account/00007.png b/tests_zemu/snapshots/sp-op-create-account/00007.png
index 9fc66f1d..21ca90fc 100644
Binary files a/tests_zemu/snapshots/sp-op-create-account/00007.png and b/tests_zemu/snapshots/sp-op-create-account/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-create-account/00008.png b/tests_zemu/snapshots/sp-op-create-account/00008.png
index 55496b82..cffd5a33 100644
Binary files a/tests_zemu/snapshots/sp-op-create-account/00008.png and b/tests_zemu/snapshots/sp-op-create-account/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-create-account/00009.png b/tests_zemu/snapshots/sp-op-create-account/00009.png
index dba8ca3c..bbc7db02 100644
Binary files a/tests_zemu/snapshots/sp-op-create-account/00009.png and b/tests_zemu/snapshots/sp-op-create-account/00009.png differ
diff --git a/tests_zemu/snapshots/sp-op-create-account/00010.png b/tests_zemu/snapshots/sp-op-create-account/00010.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-create-account/00010.png and b/tests_zemu/snapshots/sp-op-create-account/00010.png differ
diff --git a/tests_zemu/snapshots/sp-op-create-account/00012.png b/tests_zemu/snapshots/sp-op-create-account/00012.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-create-account/00012.png and b/tests_zemu/snapshots/sp-op-create-account/00012.png differ
diff --git a/tests_zemu/snapshots/sp-op-create-claimable-balance/00001.png b/tests_zemu/snapshots/sp-op-create-claimable-balance/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-create-claimable-balance/00001.png and b/tests_zemu/snapshots/sp-op-create-claimable-balance/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-create-claimable-balance/00002.png b/tests_zemu/snapshots/sp-op-create-claimable-balance/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-create-claimable-balance/00002.png and b/tests_zemu/snapshots/sp-op-create-claimable-balance/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-create-claimable-balance/00003.png b/tests_zemu/snapshots/sp-op-create-claimable-balance/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-create-claimable-balance/00003.png and b/tests_zemu/snapshots/sp-op-create-claimable-balance/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-create-claimable-balance/00005.png b/tests_zemu/snapshots/sp-op-create-claimable-balance/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-create-claimable-balance/00005.png and b/tests_zemu/snapshots/sp-op-create-claimable-balance/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-create-claimable-balance/00008.png b/tests_zemu/snapshots/sp-op-create-claimable-balance/00008.png
index ab78f5b7..37dde270 100644
Binary files a/tests_zemu/snapshots/sp-op-create-claimable-balance/00008.png and b/tests_zemu/snapshots/sp-op-create-claimable-balance/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-create-claimable-balance/00009.png b/tests_zemu/snapshots/sp-op-create-claimable-balance/00009.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-create-claimable-balance/00009.png and b/tests_zemu/snapshots/sp-op-create-claimable-balance/00009.png differ
diff --git a/tests_zemu/snapshots/sp-op-create-claimable-balance/00011.png b/tests_zemu/snapshots/sp-op-create-claimable-balance/00011.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-create-claimable-balance/00011.png and b/tests_zemu/snapshots/sp-op-create-claimable-balance/00011.png differ
diff --git a/tests_zemu/snapshots/sp-op-create-passive-sell-offer/00001.png b/tests_zemu/snapshots/sp-op-create-passive-sell-offer/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-create-passive-sell-offer/00001.png and b/tests_zemu/snapshots/sp-op-create-passive-sell-offer/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-create-passive-sell-offer/00002.png b/tests_zemu/snapshots/sp-op-create-passive-sell-offer/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-create-passive-sell-offer/00002.png and b/tests_zemu/snapshots/sp-op-create-passive-sell-offer/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-create-passive-sell-offer/00003.png b/tests_zemu/snapshots/sp-op-create-passive-sell-offer/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-create-passive-sell-offer/00003.png and b/tests_zemu/snapshots/sp-op-create-passive-sell-offer/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-create-passive-sell-offer/00005.png b/tests_zemu/snapshots/sp-op-create-passive-sell-offer/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-create-passive-sell-offer/00005.png and b/tests_zemu/snapshots/sp-op-create-passive-sell-offer/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-create-passive-sell-offer/00007.png b/tests_zemu/snapshots/sp-op-create-passive-sell-offer/00007.png
index bfcaa634..e5ddbf9f 100644
Binary files a/tests_zemu/snapshots/sp-op-create-passive-sell-offer/00007.png and b/tests_zemu/snapshots/sp-op-create-passive-sell-offer/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-create-passive-sell-offer/00008.png b/tests_zemu/snapshots/sp-op-create-passive-sell-offer/00008.png
index 4a19f3bf..7e574b9b 100644
Binary files a/tests_zemu/snapshots/sp-op-create-passive-sell-offer/00008.png and b/tests_zemu/snapshots/sp-op-create-passive-sell-offer/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-create-passive-sell-offer/00009.png b/tests_zemu/snapshots/sp-op-create-passive-sell-offer/00009.png
index 5cbcd2df..b85c6ed2 100644
Binary files a/tests_zemu/snapshots/sp-op-create-passive-sell-offer/00009.png and b/tests_zemu/snapshots/sp-op-create-passive-sell-offer/00009.png differ
diff --git a/tests_zemu/snapshots/sp-op-create-passive-sell-offer/00010.png b/tests_zemu/snapshots/sp-op-create-passive-sell-offer/00010.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-create-passive-sell-offer/00010.png and b/tests_zemu/snapshots/sp-op-create-passive-sell-offer/00010.png differ
diff --git a/tests_zemu/snapshots/sp-op-create-passive-sell-offer/00012.png b/tests_zemu/snapshots/sp-op-create-passive-sell-offer/00012.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-create-passive-sell-offer/00012.png and b/tests_zemu/snapshots/sp-op-create-passive-sell-offer/00012.png differ
diff --git a/tests_zemu/snapshots/sp-op-end-sponsoring-future-reserves/00001.png b/tests_zemu/snapshots/sp-op-end-sponsoring-future-reserves/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-end-sponsoring-future-reserves/00001.png and b/tests_zemu/snapshots/sp-op-end-sponsoring-future-reserves/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-end-sponsoring-future-reserves/00002.png b/tests_zemu/snapshots/sp-op-end-sponsoring-future-reserves/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-end-sponsoring-future-reserves/00002.png and b/tests_zemu/snapshots/sp-op-end-sponsoring-future-reserves/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-end-sponsoring-future-reserves/00003.png b/tests_zemu/snapshots/sp-op-end-sponsoring-future-reserves/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-end-sponsoring-future-reserves/00003.png and b/tests_zemu/snapshots/sp-op-end-sponsoring-future-reserves/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-end-sponsoring-future-reserves/00005.png b/tests_zemu/snapshots/sp-op-end-sponsoring-future-reserves/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-end-sponsoring-future-reserves/00005.png and b/tests_zemu/snapshots/sp-op-end-sponsoring-future-reserves/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-end-sponsoring-future-reserves/00007.png b/tests_zemu/snapshots/sp-op-end-sponsoring-future-reserves/00007.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-end-sponsoring-future-reserves/00007.png and b/tests_zemu/snapshots/sp-op-end-sponsoring-future-reserves/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-end-sponsoring-future-reserves/00009.png b/tests_zemu/snapshots/sp-op-end-sponsoring-future-reserves/00009.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-end-sponsoring-future-reserves/00009.png and b/tests_zemu/snapshots/sp-op-end-sponsoring-future-reserves/00009.png differ
diff --git a/tests_zemu/snapshots/sp-op-extend-footprint-ttl/00000.png b/tests_zemu/snapshots/sp-op-extend-footprint-ttl/00000.png
new file mode 100644
index 00000000..df51419d
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-extend-footprint-ttl/00000.png differ
diff --git a/tests_zemu/snapshots/sp-op-extend-footprint-ttl/00001.png b/tests_zemu/snapshots/sp-op-extend-footprint-ttl/00001.png
new file mode 100644
index 00000000..76410f07
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-extend-footprint-ttl/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-extend-footprint-ttl/00002.png b/tests_zemu/snapshots/sp-op-extend-footprint-ttl/00002.png
new file mode 100644
index 00000000..39c74b8e
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-extend-footprint-ttl/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-extend-footprint-ttl/00003.png b/tests_zemu/snapshots/sp-op-extend-footprint-ttl/00003.png
new file mode 100644
index 00000000..7327c4a4
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-extend-footprint-ttl/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-extend-footprint-ttl/00004.png b/tests_zemu/snapshots/sp-op-extend-footprint-ttl/00004.png
new file mode 100644
index 00000000..06db03ba
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-extend-footprint-ttl/00004.png differ
diff --git a/tests_zemu/snapshots/sp-op-extend-footprint-ttl/00005.png b/tests_zemu/snapshots/sp-op-extend-footprint-ttl/00005.png
new file mode 100644
index 00000000..4c973d72
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-extend-footprint-ttl/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-extend-footprint-ttl/00006.png b/tests_zemu/snapshots/sp-op-extend-footprint-ttl/00006.png
new file mode 100644
index 00000000..62b55891
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-extend-footprint-ttl/00006.png differ
diff --git a/tests_zemu/snapshots/sp-op-extend-footprint-ttl/00007.png b/tests_zemu/snapshots/sp-op-extend-footprint-ttl/00007.png
new file mode 100644
index 00000000..fb27b648
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-extend-footprint-ttl/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-inflation/00001.png b/tests_zemu/snapshots/sp-op-inflation/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-inflation/00001.png and b/tests_zemu/snapshots/sp-op-inflation/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-inflation/00002.png b/tests_zemu/snapshots/sp-op-inflation/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-inflation/00002.png and b/tests_zemu/snapshots/sp-op-inflation/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-inflation/00003.png b/tests_zemu/snapshots/sp-op-inflation/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-inflation/00003.png and b/tests_zemu/snapshots/sp-op-inflation/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-inflation/00005.png b/tests_zemu/snapshots/sp-op-inflation/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-inflation/00005.png and b/tests_zemu/snapshots/sp-op-inflation/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-inflation/00007.png b/tests_zemu/snapshots/sp-op-inflation/00007.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-inflation/00007.png and b/tests_zemu/snapshots/sp-op-inflation/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-inflation/00009.png b/tests_zemu/snapshots/sp-op-inflation/00009.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-inflation/00009.png and b/tests_zemu/snapshots/sp-op-inflation/00009.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-asset-approve/00000.png b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-approve/00000.png
new file mode 100644
index 00000000..df51419d
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-approve/00000.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-asset-approve/00001.png b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-approve/00001.png
new file mode 100644
index 00000000..76410f07
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-approve/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-asset-approve/00002.png b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-approve/00002.png
new file mode 100644
index 00000000..226be80b
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-approve/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-asset-approve/00003.png b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-approve/00003.png
new file mode 100644
index 00000000..439a5ce5
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-approve/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-asset-approve/00004.png b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-approve/00004.png
new file mode 100644
index 00000000..06db03ba
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-approve/00004.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-asset-approve/00005.png b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-approve/00005.png
new file mode 100644
index 00000000..ea41dd20
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-approve/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-asset-approve/00006.png b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-approve/00006.png
new file mode 100644
index 00000000..11c54779
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-approve/00006.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-asset-approve/00007.png b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-approve/00007.png
new file mode 100644
index 00000000..4960ff48
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-approve/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-asset-approve/00008.png b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-approve/00008.png
new file mode 100644
index 00000000..85a77c8c
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-approve/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-asset-approve/00009.png b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-approve/00009.png
new file mode 100644
index 00000000..7e22f042
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-approve/00009.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-asset-approve/00010.png b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-approve/00010.png
new file mode 100644
index 00000000..61f08818
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-approve/00010.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-asset-approve/00011.png b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-approve/00011.png
new file mode 100644
index 00000000..9899655b
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-approve/00011.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-asset-approve/00012.png b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-approve/00012.png
new file mode 100644
index 00000000..c915f750
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-approve/00012.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-asset-approve/00013.png b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-approve/00013.png
new file mode 100644
index 00000000..e4064ec2
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-approve/00013.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-asset-approve/00014.png b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-approve/00014.png
new file mode 100644
index 00000000..e8ec4fb3
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-approve/00014.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-asset-approve/00015.png b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-approve/00015.png
new file mode 100644
index 00000000..2debbe6c
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-approve/00015.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-asset-approve/00016.png b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-approve/00016.png
new file mode 100644
index 00000000..62b55891
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-approve/00016.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-asset-approve/00017.png b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-approve/00017.png
new file mode 100644
index 00000000..fb27b648
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-approve/00017.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-asset-transfer/00000.png b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-transfer/00000.png
new file mode 100644
index 00000000..df51419d
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-transfer/00000.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-asset-transfer/00001.png b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-transfer/00001.png
new file mode 100644
index 00000000..76410f07
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-transfer/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-asset-transfer/00002.png b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-transfer/00002.png
new file mode 100644
index 00000000..94d43496
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-transfer/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-asset-transfer/00003.png b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-transfer/00003.png
new file mode 100644
index 00000000..2af179b7
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-transfer/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-asset-transfer/00004.png b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-transfer/00004.png
new file mode 100644
index 00000000..06db03ba
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-transfer/00004.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-asset-transfer/00005.png b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-transfer/00005.png
new file mode 100644
index 00000000..ea41dd20
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-transfer/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-asset-transfer/00006.png b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-transfer/00006.png
new file mode 100644
index 00000000..11c54779
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-transfer/00006.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-asset-transfer/00007.png b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-transfer/00007.png
new file mode 100644
index 00000000..4960ff48
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-transfer/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-asset-transfer/00008.png b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-transfer/00008.png
new file mode 100644
index 00000000..24b1a786
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-transfer/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-asset-transfer/00009.png b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-transfer/00009.png
new file mode 100644
index 00000000..1a03ff09
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-transfer/00009.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-asset-transfer/00010.png b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-transfer/00010.png
new file mode 100644
index 00000000..7e22f042
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-transfer/00010.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-asset-transfer/00011.png b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-transfer/00011.png
new file mode 100644
index 00000000..61f08818
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-transfer/00011.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-asset-transfer/00012.png b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-transfer/00012.png
new file mode 100644
index 00000000..32f14e26
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-transfer/00012.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-asset-transfer/00013.png b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-transfer/00013.png
new file mode 100644
index 00000000..6e9f9881
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-transfer/00013.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-asset-transfer/00014.png b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-transfer/00014.png
new file mode 100644
index 00000000..2debbe6c
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-transfer/00014.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-asset-transfer/00015.png b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-transfer/00015.png
new file mode 100644
index 00000000..62b55891
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-transfer/00015.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-asset-transfer/00016.png b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-transfer/00016.png
new file mode 100644
index 00000000..fb27b648
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-asset-transfer/00016.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-new-asset/00000.png b/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-new-asset/00000.png
new file mode 100644
index 00000000..df51419d
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-new-asset/00000.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-new-asset/00001.png b/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-new-asset/00001.png
new file mode 100644
index 00000000..76410f07
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-new-asset/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-new-asset/00002.png b/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-new-asset/00002.png
new file mode 100644
index 00000000..0e5866d5
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-new-asset/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-new-asset/00003.png b/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-new-asset/00003.png
new file mode 100644
index 00000000..b9ca5b27
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-new-asset/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-new-asset/00004.png b/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-new-asset/00004.png
new file mode 100644
index 00000000..06db03ba
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-new-asset/00004.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-new-asset/00005.png b/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-new-asset/00005.png
new file mode 100644
index 00000000..47777ef8
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-new-asset/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-new-asset/00006.png b/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-new-asset/00006.png
new file mode 100644
index 00000000..2debbe6c
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-new-asset/00006.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-new-asset/00007.png b/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-new-asset/00007.png
new file mode 100644
index 00000000..62b55891
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-new-asset/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-new-asset/00008.png b/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-new-asset/00008.png
new file mode 100644
index 00000000..fb27b648
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-new-asset/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-wasm-id/00000.png b/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-wasm-id/00000.png
new file mode 100644
index 00000000..df51419d
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-wasm-id/00000.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-wasm-id/00001.png b/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-wasm-id/00001.png
new file mode 100644
index 00000000..76410f07
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-wasm-id/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-wasm-id/00002.png b/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-wasm-id/00002.png
new file mode 100644
index 00000000..3923d946
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-wasm-id/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-wasm-id/00003.png b/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-wasm-id/00003.png
new file mode 100644
index 00000000..6d493303
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-wasm-id/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-wasm-id/00004.png b/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-wasm-id/00004.png
new file mode 100644
index 00000000..06db03ba
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-wasm-id/00004.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-wasm-id/00005.png b/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-wasm-id/00005.png
new file mode 100644
index 00000000..47777ef8
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-wasm-id/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-wasm-id/00006.png b/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-wasm-id/00006.png
new file mode 100644
index 00000000..62b55891
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-wasm-id/00006.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-wasm-id/00007.png b/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-wasm-id/00007.png
new file mode 100644
index 00000000..fb27b648
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-wasm-id/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-wrap-asset/00000.png b/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-wrap-asset/00000.png
new file mode 100644
index 00000000..df51419d
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-wrap-asset/00000.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-wrap-asset/00001.png b/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-wrap-asset/00001.png
new file mode 100644
index 00000000..76410f07
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-wrap-asset/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-wrap-asset/00002.png b/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-wrap-asset/00002.png
new file mode 100644
index 00000000..835a3b04
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-wrap-asset/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-wrap-asset/00003.png b/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-wrap-asset/00003.png
new file mode 100644
index 00000000..80219c56
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-wrap-asset/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-wrap-asset/00004.png b/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-wrap-asset/00004.png
new file mode 100644
index 00000000..06db03ba
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-wrap-asset/00004.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-wrap-asset/00005.png b/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-wrap-asset/00005.png
new file mode 100644
index 00000000..47777ef8
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-wrap-asset/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-wrap-asset/00006.png b/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-wrap-asset/00006.png
new file mode 100644
index 00000000..62b55891
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-wrap-asset/00006.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-wrap-asset/00007.png b/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-wrap-asset/00007.png
new file mode 100644
index 00000000..fb27b648
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-create-contract-wrap-asset/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-scvals/00000.png b/tests_zemu/snapshots/sp-op-invoke-host-function-scvals/00000.png
new file mode 100644
index 00000000..df51419d
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-scvals/00000.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-scvals/00001.png b/tests_zemu/snapshots/sp-op-invoke-host-function-scvals/00001.png
new file mode 100644
index 00000000..76410f07
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-scvals/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-scvals/00002.png b/tests_zemu/snapshots/sp-op-invoke-host-function-scvals/00002.png
new file mode 100644
index 00000000..09b29a5f
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-scvals/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-scvals/00003.png b/tests_zemu/snapshots/sp-op-invoke-host-function-scvals/00003.png
new file mode 100644
index 00000000..a3c49ec1
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-scvals/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-scvals/00004.png b/tests_zemu/snapshots/sp-op-invoke-host-function-scvals/00004.png
new file mode 100644
index 00000000..06db03ba
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-scvals/00004.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-scvals/00005.png b/tests_zemu/snapshots/sp-op-invoke-host-function-scvals/00005.png
new file mode 100644
index 00000000..ea41dd20
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-scvals/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-scvals/00006.png b/tests_zemu/snapshots/sp-op-invoke-host-function-scvals/00006.png
new file mode 100644
index 00000000..11c54779
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-scvals/00006.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-scvals/00007.png b/tests_zemu/snapshots/sp-op-invoke-host-function-scvals/00007.png
new file mode 100644
index 00000000..4960ff48
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-scvals/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-scvals/00008.png b/tests_zemu/snapshots/sp-op-invoke-host-function-scvals/00008.png
new file mode 100644
index 00000000..24d231ce
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-scvals/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-scvals/00009.png b/tests_zemu/snapshots/sp-op-invoke-host-function-scvals/00009.png
new file mode 100644
index 00000000..200c5220
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-scvals/00009.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-scvals/00010.png b/tests_zemu/snapshots/sp-op-invoke-host-function-scvals/00010.png
new file mode 100644
index 00000000..62b55891
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-scvals/00010.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-scvals/00011.png b/tests_zemu/snapshots/sp-op-invoke-host-function-scvals/00011.png
new file mode 100644
index 00000000..fb27b648
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-scvals/00011.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-approve-function/00000.png b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-approve-function/00000.png
new file mode 100644
index 00000000..df51419d
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-approve-function/00000.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-approve-function/00001.png b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-approve-function/00001.png
new file mode 100644
index 00000000..76410f07
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-approve-function/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-approve-function/00002.png b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-approve-function/00002.png
new file mode 100644
index 00000000..09b29a5f
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-approve-function/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-approve-function/00003.png b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-approve-function/00003.png
new file mode 100644
index 00000000..2af179b7
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-approve-function/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-approve-function/00004.png b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-approve-function/00004.png
new file mode 100644
index 00000000..06db03ba
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-approve-function/00004.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-approve-function/00005.png b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-approve-function/00005.png
new file mode 100644
index 00000000..ea41dd20
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-approve-function/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-approve-function/00006.png b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-approve-function/00006.png
new file mode 100644
index 00000000..11c54779
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-approve-function/00006.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-approve-function/00007.png b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-approve-function/00007.png
new file mode 100644
index 00000000..4960ff48
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-approve-function/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-approve-function/00008.png b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-approve-function/00008.png
new file mode 100644
index 00000000..16ab4d15
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-approve-function/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-approve-function/00009.png b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-approve-function/00009.png
new file mode 100644
index 00000000..200c5220
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-approve-function/00009.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-approve-function/00010.png b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-approve-function/00010.png
new file mode 100644
index 00000000..2debbe6c
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-approve-function/00010.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-approve-function/00011.png b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-approve-function/00011.png
new file mode 100644
index 00000000..62b55891
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-approve-function/00011.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-approve-function/00012.png b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-approve-function/00012.png
new file mode 100644
index 00000000..fb27b648
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-approve-function/00012.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-transfer-function/00000.png b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-transfer-function/00000.png
new file mode 100644
index 00000000..df51419d
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-transfer-function/00000.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-transfer-function/00001.png b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-transfer-function/00001.png
new file mode 100644
index 00000000..76410f07
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-transfer-function/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-transfer-function/00002.png b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-transfer-function/00002.png
new file mode 100644
index 00000000..09b29a5f
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-transfer-function/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-transfer-function/00003.png b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-transfer-function/00003.png
new file mode 100644
index 00000000..fe00bd75
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-transfer-function/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-transfer-function/00004.png b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-transfer-function/00004.png
new file mode 100644
index 00000000..06db03ba
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-transfer-function/00004.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-transfer-function/00005.png b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-transfer-function/00005.png
new file mode 100644
index 00000000..ea41dd20
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-transfer-function/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-transfer-function/00006.png b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-transfer-function/00006.png
new file mode 100644
index 00000000..85563723
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-transfer-function/00006.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-transfer-function/00007.png b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-transfer-function/00007.png
new file mode 100644
index 00000000..8069468a
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-transfer-function/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-transfer-function/00008.png b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-transfer-function/00008.png
new file mode 100644
index 00000000..85a77c8c
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-transfer-function/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-transfer-function/00009.png b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-transfer-function/00009.png
new file mode 100644
index 00000000..200c5220
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-transfer-function/00009.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-transfer-function/00010.png b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-transfer-function/00010.png
new file mode 100644
index 00000000..62b55891
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-transfer-function/00010.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-transfer-function/00011.png b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-transfer-function/00011.png
new file mode 100644
index 00000000..fb27b648
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract-with-transfer-function/00011.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract/00000.png b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract/00000.png
new file mode 100644
index 00000000..df51419d
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract/00000.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract/00001.png b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract/00001.png
new file mode 100644
index 00000000..76410f07
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract/00002.png b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract/00002.png
new file mode 100644
index 00000000..4e13fe4a
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract/00003.png b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract/00003.png
new file mode 100644
index 00000000..7d51372f
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract/00004.png b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract/00004.png
new file mode 100644
index 00000000..06db03ba
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract/00004.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract/00005.png b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract/00005.png
new file mode 100644
index 00000000..ea41dd20
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract/00006.png b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract/00006.png
new file mode 100644
index 00000000..85563723
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract/00006.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract/00007.png b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract/00007.png
new file mode 100644
index 00000000..8069468a
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract/00008.png b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract/00008.png
new file mode 100644
index 00000000..98bd1093
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract/00009.png b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract/00009.png
new file mode 100644
index 00000000..200c5220
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract/00009.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract/00010.png b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract/00010.png
new file mode 100644
index 00000000..62b55891
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract/00010.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract/00011.png b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract/00011.png
new file mode 100644
index 00000000..fb27b648
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-unverified-contract/00011.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-upload-wasm/00000.png b/tests_zemu/snapshots/sp-op-invoke-host-function-upload-wasm/00000.png
new file mode 100644
index 00000000..df51419d
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-upload-wasm/00000.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-upload-wasm/00001.png b/tests_zemu/snapshots/sp-op-invoke-host-function-upload-wasm/00001.png
new file mode 100644
index 00000000..76410f07
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-upload-wasm/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-upload-wasm/00002.png b/tests_zemu/snapshots/sp-op-invoke-host-function-upload-wasm/00002.png
new file mode 100644
index 00000000..be7769d0
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-upload-wasm/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-upload-wasm/00003.png b/tests_zemu/snapshots/sp-op-invoke-host-function-upload-wasm/00003.png
new file mode 100644
index 00000000..a8357a99
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-upload-wasm/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-upload-wasm/00004.png b/tests_zemu/snapshots/sp-op-invoke-host-function-upload-wasm/00004.png
new file mode 100644
index 00000000..06db03ba
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-upload-wasm/00004.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-upload-wasm/00005.png b/tests_zemu/snapshots/sp-op-invoke-host-function-upload-wasm/00005.png
new file mode 100644
index 00000000..aa33fe01
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-upload-wasm/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-upload-wasm/00006.png b/tests_zemu/snapshots/sp-op-invoke-host-function-upload-wasm/00006.png
new file mode 100644
index 00000000..2debbe6c
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-upload-wasm/00006.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-upload-wasm/00007.png b/tests_zemu/snapshots/sp-op-invoke-host-function-upload-wasm/00007.png
new file mode 100644
index 00000000..62b55891
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-upload-wasm/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-invoke-host-function-upload-wasm/00008.png b/tests_zemu/snapshots/sp-op-invoke-host-function-upload-wasm/00008.png
new file mode 100644
index 00000000..fb27b648
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-invoke-host-function-upload-wasm/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00001.png b/tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00001.png and b/tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00002.png b/tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00002.png and b/tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00003.png b/tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00003.png and b/tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00005.png b/tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00005.png and b/tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00009.png b/tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00009.png
index efaa904a..e61455a0 100644
Binary files a/tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00009.png and b/tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00009.png differ
diff --git a/tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00010.png b/tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00010.png
index 541168fc..86459c96 100644
Binary files a/tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00010.png and b/tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00010.png differ
diff --git a/tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00012.png b/tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00012.png
index 94625bde..e16ac808 100644
Binary files a/tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00012.png and b/tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00012.png differ
diff --git a/tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00013.png b/tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00013.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00013.png and b/tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00013.png differ
diff --git a/tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00015.png b/tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00015.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00015.png and b/tests_zemu/snapshots/sp-op-liquidity-pool-deposit/00015.png differ
diff --git a/tests_zemu/snapshots/sp-op-liquidity-pool-withdraw/00001.png b/tests_zemu/snapshots/sp-op-liquidity-pool-withdraw/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-liquidity-pool-withdraw/00001.png and b/tests_zemu/snapshots/sp-op-liquidity-pool-withdraw/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-liquidity-pool-withdraw/00002.png b/tests_zemu/snapshots/sp-op-liquidity-pool-withdraw/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-liquidity-pool-withdraw/00002.png and b/tests_zemu/snapshots/sp-op-liquidity-pool-withdraw/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-liquidity-pool-withdraw/00003.png b/tests_zemu/snapshots/sp-op-liquidity-pool-withdraw/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-liquidity-pool-withdraw/00003.png and b/tests_zemu/snapshots/sp-op-liquidity-pool-withdraw/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-liquidity-pool-withdraw/00005.png b/tests_zemu/snapshots/sp-op-liquidity-pool-withdraw/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-liquidity-pool-withdraw/00005.png and b/tests_zemu/snapshots/sp-op-liquidity-pool-withdraw/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-liquidity-pool-withdraw/00010.png b/tests_zemu/snapshots/sp-op-liquidity-pool-withdraw/00010.png
index 38aa20f9..c58f6cbe 100644
Binary files a/tests_zemu/snapshots/sp-op-liquidity-pool-withdraw/00010.png and b/tests_zemu/snapshots/sp-op-liquidity-pool-withdraw/00010.png differ
diff --git a/tests_zemu/snapshots/sp-op-liquidity-pool-withdraw/00011.png b/tests_zemu/snapshots/sp-op-liquidity-pool-withdraw/00011.png
index 7c7f45e9..9700e2c6 100644
Binary files a/tests_zemu/snapshots/sp-op-liquidity-pool-withdraw/00011.png and b/tests_zemu/snapshots/sp-op-liquidity-pool-withdraw/00011.png differ
diff --git a/tests_zemu/snapshots/sp-op-liquidity-pool-withdraw/00012.png b/tests_zemu/snapshots/sp-op-liquidity-pool-withdraw/00012.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-liquidity-pool-withdraw/00012.png and b/tests_zemu/snapshots/sp-op-liquidity-pool-withdraw/00012.png differ
diff --git a/tests_zemu/snapshots/sp-op-liquidity-pool-withdraw/00014.png b/tests_zemu/snapshots/sp-op-liquidity-pool-withdraw/00014.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-liquidity-pool-withdraw/00014.png and b/tests_zemu/snapshots/sp-op-liquidity-pool-withdraw/00014.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-buy-offer-create/00001.png b/tests_zemu/snapshots/sp-op-manage-buy-offer-create/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-buy-offer-create/00001.png and b/tests_zemu/snapshots/sp-op-manage-buy-offer-create/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-buy-offer-create/00002.png b/tests_zemu/snapshots/sp-op-manage-buy-offer-create/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-buy-offer-create/00002.png and b/tests_zemu/snapshots/sp-op-manage-buy-offer-create/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-buy-offer-create/00003.png b/tests_zemu/snapshots/sp-op-manage-buy-offer-create/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-buy-offer-create/00003.png and b/tests_zemu/snapshots/sp-op-manage-buy-offer-create/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-buy-offer-create/00005.png b/tests_zemu/snapshots/sp-op-manage-buy-offer-create/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-buy-offer-create/00005.png and b/tests_zemu/snapshots/sp-op-manage-buy-offer-create/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-buy-offer-create/00007.png b/tests_zemu/snapshots/sp-op-manage-buy-offer-create/00007.png
index 51752fb4..9852658c 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-buy-offer-create/00007.png and b/tests_zemu/snapshots/sp-op-manage-buy-offer-create/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-buy-offer-create/00008.png b/tests_zemu/snapshots/sp-op-manage-buy-offer-create/00008.png
index 14e8a577..16642f17 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-buy-offer-create/00008.png and b/tests_zemu/snapshots/sp-op-manage-buy-offer-create/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-buy-offer-create/00009.png b/tests_zemu/snapshots/sp-op-manage-buy-offer-create/00009.png
index cc8af917..fc2dfbba 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-buy-offer-create/00009.png and b/tests_zemu/snapshots/sp-op-manage-buy-offer-create/00009.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-buy-offer-create/00010.png b/tests_zemu/snapshots/sp-op-manage-buy-offer-create/00010.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-buy-offer-create/00010.png and b/tests_zemu/snapshots/sp-op-manage-buy-offer-create/00010.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-buy-offer-create/00012.png b/tests_zemu/snapshots/sp-op-manage-buy-offer-create/00012.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-buy-offer-create/00012.png and b/tests_zemu/snapshots/sp-op-manage-buy-offer-create/00012.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-buy-offer-delete/00001.png b/tests_zemu/snapshots/sp-op-manage-buy-offer-delete/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-buy-offer-delete/00001.png and b/tests_zemu/snapshots/sp-op-manage-buy-offer-delete/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-buy-offer-delete/00002.png b/tests_zemu/snapshots/sp-op-manage-buy-offer-delete/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-buy-offer-delete/00002.png and b/tests_zemu/snapshots/sp-op-manage-buy-offer-delete/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-buy-offer-delete/00003.png b/tests_zemu/snapshots/sp-op-manage-buy-offer-delete/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-buy-offer-delete/00003.png and b/tests_zemu/snapshots/sp-op-manage-buy-offer-delete/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-buy-offer-delete/00005.png b/tests_zemu/snapshots/sp-op-manage-buy-offer-delete/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-buy-offer-delete/00005.png and b/tests_zemu/snapshots/sp-op-manage-buy-offer-delete/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-buy-offer-delete/00007.png b/tests_zemu/snapshots/sp-op-manage-buy-offer-delete/00007.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-buy-offer-delete/00007.png and b/tests_zemu/snapshots/sp-op-manage-buy-offer-delete/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-buy-offer-delete/00009.png b/tests_zemu/snapshots/sp-op-manage-buy-offer-delete/00009.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-buy-offer-delete/00009.png and b/tests_zemu/snapshots/sp-op-manage-buy-offer-delete/00009.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-buy-offer-update/00001.png b/tests_zemu/snapshots/sp-op-manage-buy-offer-update/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-buy-offer-update/00001.png and b/tests_zemu/snapshots/sp-op-manage-buy-offer-update/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-buy-offer-update/00002.png b/tests_zemu/snapshots/sp-op-manage-buy-offer-update/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-buy-offer-update/00002.png and b/tests_zemu/snapshots/sp-op-manage-buy-offer-update/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-buy-offer-update/00003.png b/tests_zemu/snapshots/sp-op-manage-buy-offer-update/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-buy-offer-update/00003.png and b/tests_zemu/snapshots/sp-op-manage-buy-offer-update/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-buy-offer-update/00005.png b/tests_zemu/snapshots/sp-op-manage-buy-offer-update/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-buy-offer-update/00005.png and b/tests_zemu/snapshots/sp-op-manage-buy-offer-update/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-buy-offer-update/00007.png b/tests_zemu/snapshots/sp-op-manage-buy-offer-update/00007.png
index 51752fb4..9852658c 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-buy-offer-update/00007.png and b/tests_zemu/snapshots/sp-op-manage-buy-offer-update/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-buy-offer-update/00008.png b/tests_zemu/snapshots/sp-op-manage-buy-offer-update/00008.png
index 14e8a577..16642f17 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-buy-offer-update/00008.png and b/tests_zemu/snapshots/sp-op-manage-buy-offer-update/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-buy-offer-update/00009.png b/tests_zemu/snapshots/sp-op-manage-buy-offer-update/00009.png
index cc8af917..fc2dfbba 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-buy-offer-update/00009.png and b/tests_zemu/snapshots/sp-op-manage-buy-offer-update/00009.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-buy-offer-update/00010.png b/tests_zemu/snapshots/sp-op-manage-buy-offer-update/00010.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-buy-offer-update/00010.png and b/tests_zemu/snapshots/sp-op-manage-buy-offer-update/00010.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-buy-offer-update/00012.png b/tests_zemu/snapshots/sp-op-manage-buy-offer-update/00012.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-buy-offer-update/00012.png and b/tests_zemu/snapshots/sp-op-manage-buy-offer-update/00012.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-data-add-with-unprintable-data/00001.png b/tests_zemu/snapshots/sp-op-manage-data-add-with-unprintable-data/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-data-add-with-unprintable-data/00001.png and b/tests_zemu/snapshots/sp-op-manage-data-add-with-unprintable-data/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-data-add-with-unprintable-data/00002.png b/tests_zemu/snapshots/sp-op-manage-data-add-with-unprintable-data/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-data-add-with-unprintable-data/00002.png and b/tests_zemu/snapshots/sp-op-manage-data-add-with-unprintable-data/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-data-add-with-unprintable-data/00003.png b/tests_zemu/snapshots/sp-op-manage-data-add-with-unprintable-data/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-data-add-with-unprintable-data/00003.png and b/tests_zemu/snapshots/sp-op-manage-data-add-with-unprintable-data/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-data-add-with-unprintable-data/00005.png b/tests_zemu/snapshots/sp-op-manage-data-add-with-unprintable-data/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-data-add-with-unprintable-data/00005.png and b/tests_zemu/snapshots/sp-op-manage-data-add-with-unprintable-data/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-data-add-with-unprintable-data/00006.png b/tests_zemu/snapshots/sp-op-manage-data-add-with-unprintable-data/00006.png
index 89b13c14..5a9e1ab5 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-data-add-with-unprintable-data/00006.png and b/tests_zemu/snapshots/sp-op-manage-data-add-with-unprintable-data/00006.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-data-add-with-unprintable-data/00007.png b/tests_zemu/snapshots/sp-op-manage-data-add-with-unprintable-data/00007.png
index eae3dab8..9642afef 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-data-add-with-unprintable-data/00007.png and b/tests_zemu/snapshots/sp-op-manage-data-add-with-unprintable-data/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-data-add-with-unprintable-data/00009.png b/tests_zemu/snapshots/sp-op-manage-data-add-with-unprintable-data/00009.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-data-add-with-unprintable-data/00009.png and b/tests_zemu/snapshots/sp-op-manage-data-add-with-unprintable-data/00009.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-data-add-with-unprintable-data/00011.png b/tests_zemu/snapshots/sp-op-manage-data-add-with-unprintable-data/00011.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-data-add-with-unprintable-data/00011.png and b/tests_zemu/snapshots/sp-op-manage-data-add-with-unprintable-data/00011.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-data-add/00001.png b/tests_zemu/snapshots/sp-op-manage-data-add/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-data-add/00001.png and b/tests_zemu/snapshots/sp-op-manage-data-add/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-data-add/00002.png b/tests_zemu/snapshots/sp-op-manage-data-add/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-data-add/00002.png and b/tests_zemu/snapshots/sp-op-manage-data-add/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-data-add/00003.png b/tests_zemu/snapshots/sp-op-manage-data-add/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-data-add/00003.png and b/tests_zemu/snapshots/sp-op-manage-data-add/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-data-add/00005.png b/tests_zemu/snapshots/sp-op-manage-data-add/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-data-add/00005.png and b/tests_zemu/snapshots/sp-op-manage-data-add/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-data-add/00006.png b/tests_zemu/snapshots/sp-op-manage-data-add/00006.png
index 89b13c14..5a9e1ab5 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-data-add/00006.png and b/tests_zemu/snapshots/sp-op-manage-data-add/00006.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-data-add/00007.png b/tests_zemu/snapshots/sp-op-manage-data-add/00007.png
index eae3dab8..9642afef 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-data-add/00007.png and b/tests_zemu/snapshots/sp-op-manage-data-add/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-data-add/00010.png b/tests_zemu/snapshots/sp-op-manage-data-add/00010.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-data-add/00010.png and b/tests_zemu/snapshots/sp-op-manage-data-add/00010.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-data-add/00012.png b/tests_zemu/snapshots/sp-op-manage-data-add/00012.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-data-add/00012.png and b/tests_zemu/snapshots/sp-op-manage-data-add/00012.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-data-remove/00001.png b/tests_zemu/snapshots/sp-op-manage-data-remove/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-data-remove/00001.png and b/tests_zemu/snapshots/sp-op-manage-data-remove/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-data-remove/00002.png b/tests_zemu/snapshots/sp-op-manage-data-remove/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-data-remove/00002.png and b/tests_zemu/snapshots/sp-op-manage-data-remove/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-data-remove/00003.png b/tests_zemu/snapshots/sp-op-manage-data-remove/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-data-remove/00003.png and b/tests_zemu/snapshots/sp-op-manage-data-remove/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-data-remove/00005.png b/tests_zemu/snapshots/sp-op-manage-data-remove/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-data-remove/00005.png and b/tests_zemu/snapshots/sp-op-manage-data-remove/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-data-remove/00008.png b/tests_zemu/snapshots/sp-op-manage-data-remove/00008.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-data-remove/00008.png and b/tests_zemu/snapshots/sp-op-manage-data-remove/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-data-remove/00010.png b/tests_zemu/snapshots/sp-op-manage-data-remove/00010.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-data-remove/00010.png and b/tests_zemu/snapshots/sp-op-manage-data-remove/00010.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-sell-offer-create/00001.png b/tests_zemu/snapshots/sp-op-manage-sell-offer-create/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-sell-offer-create/00001.png and b/tests_zemu/snapshots/sp-op-manage-sell-offer-create/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-sell-offer-create/00002.png b/tests_zemu/snapshots/sp-op-manage-sell-offer-create/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-sell-offer-create/00002.png and b/tests_zemu/snapshots/sp-op-manage-sell-offer-create/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-sell-offer-create/00003.png b/tests_zemu/snapshots/sp-op-manage-sell-offer-create/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-sell-offer-create/00003.png and b/tests_zemu/snapshots/sp-op-manage-sell-offer-create/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-sell-offer-create/00005.png b/tests_zemu/snapshots/sp-op-manage-sell-offer-create/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-sell-offer-create/00005.png and b/tests_zemu/snapshots/sp-op-manage-sell-offer-create/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-sell-offer-create/00007.png b/tests_zemu/snapshots/sp-op-manage-sell-offer-create/00007.png
index bfcaa634..e5ddbf9f 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-sell-offer-create/00007.png and b/tests_zemu/snapshots/sp-op-manage-sell-offer-create/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-sell-offer-create/00008.png b/tests_zemu/snapshots/sp-op-manage-sell-offer-create/00008.png
index 4a19f3bf..7e574b9b 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-sell-offer-create/00008.png and b/tests_zemu/snapshots/sp-op-manage-sell-offer-create/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-sell-offer-create/00009.png b/tests_zemu/snapshots/sp-op-manage-sell-offer-create/00009.png
index 5cbcd2df..b85c6ed2 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-sell-offer-create/00009.png and b/tests_zemu/snapshots/sp-op-manage-sell-offer-create/00009.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-sell-offer-create/00010.png b/tests_zemu/snapshots/sp-op-manage-sell-offer-create/00010.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-sell-offer-create/00010.png and b/tests_zemu/snapshots/sp-op-manage-sell-offer-create/00010.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-sell-offer-create/00012.png b/tests_zemu/snapshots/sp-op-manage-sell-offer-create/00012.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-sell-offer-create/00012.png and b/tests_zemu/snapshots/sp-op-manage-sell-offer-create/00012.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-sell-offer-delete/00001.png b/tests_zemu/snapshots/sp-op-manage-sell-offer-delete/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-sell-offer-delete/00001.png and b/tests_zemu/snapshots/sp-op-manage-sell-offer-delete/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-sell-offer-delete/00002.png b/tests_zemu/snapshots/sp-op-manage-sell-offer-delete/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-sell-offer-delete/00002.png and b/tests_zemu/snapshots/sp-op-manage-sell-offer-delete/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-sell-offer-delete/00003.png b/tests_zemu/snapshots/sp-op-manage-sell-offer-delete/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-sell-offer-delete/00003.png and b/tests_zemu/snapshots/sp-op-manage-sell-offer-delete/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-sell-offer-delete/00005.png b/tests_zemu/snapshots/sp-op-manage-sell-offer-delete/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-sell-offer-delete/00005.png and b/tests_zemu/snapshots/sp-op-manage-sell-offer-delete/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-sell-offer-delete/00007.png b/tests_zemu/snapshots/sp-op-manage-sell-offer-delete/00007.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-sell-offer-delete/00007.png and b/tests_zemu/snapshots/sp-op-manage-sell-offer-delete/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-sell-offer-delete/00009.png b/tests_zemu/snapshots/sp-op-manage-sell-offer-delete/00009.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-sell-offer-delete/00009.png and b/tests_zemu/snapshots/sp-op-manage-sell-offer-delete/00009.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-sell-offer-update/00001.png b/tests_zemu/snapshots/sp-op-manage-sell-offer-update/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-sell-offer-update/00001.png and b/tests_zemu/snapshots/sp-op-manage-sell-offer-update/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-sell-offer-update/00002.png b/tests_zemu/snapshots/sp-op-manage-sell-offer-update/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-sell-offer-update/00002.png and b/tests_zemu/snapshots/sp-op-manage-sell-offer-update/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-sell-offer-update/00003.png b/tests_zemu/snapshots/sp-op-manage-sell-offer-update/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-sell-offer-update/00003.png and b/tests_zemu/snapshots/sp-op-manage-sell-offer-update/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-sell-offer-update/00005.png b/tests_zemu/snapshots/sp-op-manage-sell-offer-update/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-sell-offer-update/00005.png and b/tests_zemu/snapshots/sp-op-manage-sell-offer-update/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-sell-offer-update/00007.png b/tests_zemu/snapshots/sp-op-manage-sell-offer-update/00007.png
index bfcaa634..e5ddbf9f 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-sell-offer-update/00007.png and b/tests_zemu/snapshots/sp-op-manage-sell-offer-update/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-sell-offer-update/00008.png b/tests_zemu/snapshots/sp-op-manage-sell-offer-update/00008.png
index 4a19f3bf..7e574b9b 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-sell-offer-update/00008.png and b/tests_zemu/snapshots/sp-op-manage-sell-offer-update/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-sell-offer-update/00009.png b/tests_zemu/snapshots/sp-op-manage-sell-offer-update/00009.png
index 5cbcd2df..b85c6ed2 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-sell-offer-update/00009.png and b/tests_zemu/snapshots/sp-op-manage-sell-offer-update/00009.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-sell-offer-update/00010.png b/tests_zemu/snapshots/sp-op-manage-sell-offer-update/00010.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-sell-offer-update/00010.png and b/tests_zemu/snapshots/sp-op-manage-sell-offer-update/00010.png differ
diff --git a/tests_zemu/snapshots/sp-op-manage-sell-offer-update/00012.png b/tests_zemu/snapshots/sp-op-manage-sell-offer-update/00012.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-manage-sell-offer-update/00012.png and b/tests_zemu/snapshots/sp-op-manage-sell-offer-update/00012.png differ
diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00001.png b/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00001.png and b/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00002.png b/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00002.png and b/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00003.png b/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00003.png and b/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00005.png b/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00005.png and b/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00006.png b/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00006.png
index f40f4d68..48abb447 100644
Binary files a/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00006.png and b/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00006.png differ
diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00007.png b/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00007.png
index 9fc66f1d..21ca90fc 100644
Binary files a/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00007.png and b/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00008.png b/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00008.png
index 55496b82..cffd5a33 100644
Binary files a/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00008.png and b/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00009.png b/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00009.png
index 3aaecbbe..1bce7f56 100644
Binary files a/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00009.png and b/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00009.png differ
diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00010.png b/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00010.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00010.png and b/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00010.png differ
diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00012.png b/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00012.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00012.png and b/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-empty-path/00012.png differ
diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00001.png b/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00001.png and b/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00002.png b/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00002.png and b/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00003.png b/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00003.png and b/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00005.png b/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00005.png and b/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00006.png b/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00006.png
index f40f4d68..48abb447 100644
Binary files a/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00006.png and b/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00006.png differ
diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00007.png b/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00007.png
index ea1b11a7..a9670471 100644
Binary files a/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00007.png and b/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00009.png b/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00009.png
index 3aaecbbe..1bce7f56 100644
Binary files a/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00009.png and b/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00009.png differ
diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00010.png b/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00010.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00010.png and b/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00010.png differ
diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00012.png b/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00012.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00012.png and b/tests_zemu/snapshots/sp-op-path-payment-strict-receive-with-muxed-destination/00012.png differ
diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-receive/00001.png b/tests_zemu/snapshots/sp-op-path-payment-strict-receive/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-path-payment-strict-receive/00001.png and b/tests_zemu/snapshots/sp-op-path-payment-strict-receive/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-receive/00002.png b/tests_zemu/snapshots/sp-op-path-payment-strict-receive/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-path-payment-strict-receive/00002.png and b/tests_zemu/snapshots/sp-op-path-payment-strict-receive/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-receive/00003.png b/tests_zemu/snapshots/sp-op-path-payment-strict-receive/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-path-payment-strict-receive/00003.png and b/tests_zemu/snapshots/sp-op-path-payment-strict-receive/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-receive/00005.png b/tests_zemu/snapshots/sp-op-path-payment-strict-receive/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-path-payment-strict-receive/00005.png and b/tests_zemu/snapshots/sp-op-path-payment-strict-receive/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-receive/00006.png b/tests_zemu/snapshots/sp-op-path-payment-strict-receive/00006.png
index f40f4d68..48abb447 100644
Binary files a/tests_zemu/snapshots/sp-op-path-payment-strict-receive/00006.png and b/tests_zemu/snapshots/sp-op-path-payment-strict-receive/00006.png differ
diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-receive/00007.png b/tests_zemu/snapshots/sp-op-path-payment-strict-receive/00007.png
index 9fc66f1d..21ca90fc 100644
Binary files a/tests_zemu/snapshots/sp-op-path-payment-strict-receive/00007.png and b/tests_zemu/snapshots/sp-op-path-payment-strict-receive/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-receive/00008.png b/tests_zemu/snapshots/sp-op-path-payment-strict-receive/00008.png
index 55496b82..cffd5a33 100644
Binary files a/tests_zemu/snapshots/sp-op-path-payment-strict-receive/00008.png and b/tests_zemu/snapshots/sp-op-path-payment-strict-receive/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-receive/00009.png b/tests_zemu/snapshots/sp-op-path-payment-strict-receive/00009.png
index 3aaecbbe..1bce7f56 100644
Binary files a/tests_zemu/snapshots/sp-op-path-payment-strict-receive/00009.png and b/tests_zemu/snapshots/sp-op-path-payment-strict-receive/00009.png differ
diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-receive/00010.png b/tests_zemu/snapshots/sp-op-path-payment-strict-receive/00010.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-path-payment-strict-receive/00010.png and b/tests_zemu/snapshots/sp-op-path-payment-strict-receive/00010.png differ
diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-receive/00012.png b/tests_zemu/snapshots/sp-op-path-payment-strict-receive/00012.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-path-payment-strict-receive/00012.png and b/tests_zemu/snapshots/sp-op-path-payment-strict-receive/00012.png differ
diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00001.png b/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00001.png and b/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00002.png b/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00002.png and b/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00003.png b/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00003.png and b/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00005.png b/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00005.png and b/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00006.png b/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00006.png
index 491f48d5..36f586e9 100644
Binary files a/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00006.png and b/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00006.png differ
diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00007.png b/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00007.png
index 9fc66f1d..21ca90fc 100644
Binary files a/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00007.png and b/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00008.png b/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00008.png
index 55496b82..cffd5a33 100644
Binary files a/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00008.png and b/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00009.png b/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00009.png
index 618d9038..3f7d321c 100644
Binary files a/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00009.png and b/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00009.png differ
diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00010.png b/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00010.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00010.png and b/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00010.png differ
diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00012.png b/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00012.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00012.png and b/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-empty-path/00012.png differ
diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00001.png b/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00001.png and b/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00002.png b/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00002.png and b/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00003.png b/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00003.png and b/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00005.png b/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00005.png and b/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00006.png b/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00006.png
index 491f48d5..36f586e9 100644
Binary files a/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00006.png and b/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00006.png differ
diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00007.png b/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00007.png
index ea1b11a7..a9670471 100644
Binary files a/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00007.png and b/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00009.png b/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00009.png
index 618d9038..3f7d321c 100644
Binary files a/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00009.png and b/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00009.png differ
diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00010.png b/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00010.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00010.png and b/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00010.png differ
diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00012.png b/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00012.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00012.png and b/tests_zemu/snapshots/sp-op-path-payment-strict-send-with-muxed-destination/00012.png differ
diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-send/00001.png b/tests_zemu/snapshots/sp-op-path-payment-strict-send/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-path-payment-strict-send/00001.png and b/tests_zemu/snapshots/sp-op-path-payment-strict-send/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-send/00002.png b/tests_zemu/snapshots/sp-op-path-payment-strict-send/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-path-payment-strict-send/00002.png and b/tests_zemu/snapshots/sp-op-path-payment-strict-send/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-send/00003.png b/tests_zemu/snapshots/sp-op-path-payment-strict-send/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-path-payment-strict-send/00003.png and b/tests_zemu/snapshots/sp-op-path-payment-strict-send/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-send/00005.png b/tests_zemu/snapshots/sp-op-path-payment-strict-send/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-path-payment-strict-send/00005.png and b/tests_zemu/snapshots/sp-op-path-payment-strict-send/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-send/00006.png b/tests_zemu/snapshots/sp-op-path-payment-strict-send/00006.png
index 491f48d5..36f586e9 100644
Binary files a/tests_zemu/snapshots/sp-op-path-payment-strict-send/00006.png and b/tests_zemu/snapshots/sp-op-path-payment-strict-send/00006.png differ
diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-send/00007.png b/tests_zemu/snapshots/sp-op-path-payment-strict-send/00007.png
index 9fc66f1d..21ca90fc 100644
Binary files a/tests_zemu/snapshots/sp-op-path-payment-strict-send/00007.png and b/tests_zemu/snapshots/sp-op-path-payment-strict-send/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-send/00008.png b/tests_zemu/snapshots/sp-op-path-payment-strict-send/00008.png
index 55496b82..cffd5a33 100644
Binary files a/tests_zemu/snapshots/sp-op-path-payment-strict-send/00008.png and b/tests_zemu/snapshots/sp-op-path-payment-strict-send/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-send/00009.png b/tests_zemu/snapshots/sp-op-path-payment-strict-send/00009.png
index 618d9038..3f7d321c 100644
Binary files a/tests_zemu/snapshots/sp-op-path-payment-strict-send/00009.png and b/tests_zemu/snapshots/sp-op-path-payment-strict-send/00009.png differ
diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-send/00010.png b/tests_zemu/snapshots/sp-op-path-payment-strict-send/00010.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-path-payment-strict-send/00010.png and b/tests_zemu/snapshots/sp-op-path-payment-strict-send/00010.png differ
diff --git a/tests_zemu/snapshots/sp-op-path-payment-strict-send/00012.png b/tests_zemu/snapshots/sp-op-path-payment-strict-send/00012.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-path-payment-strict-send/00012.png and b/tests_zemu/snapshots/sp-op-path-payment-strict-send/00012.png differ
diff --git a/tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00001.png b/tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00001.png and b/tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00002.png b/tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00002.png and b/tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00003.png b/tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00003.png and b/tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00005.png b/tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00005.png and b/tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00006.png b/tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00006.png
index 55792351..6451ba3d 100644
Binary files a/tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00006.png and b/tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00006.png differ
diff --git a/tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00007.png b/tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00007.png
index 76770bb5..e5bf63ee 100644
Binary files a/tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00007.png and b/tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00008.png b/tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00008.png
index 9fc66f1d..21ca90fc 100644
Binary files a/tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00008.png and b/tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00009.png b/tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00009.png
index 55496b82..cffd5a33 100644
Binary files a/tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00009.png and b/tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00009.png differ
diff --git a/tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00010.png b/tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00010.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00010.png and b/tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00010.png differ
diff --git a/tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00012.png b/tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00012.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00012.png and b/tests_zemu/snapshots/sp-op-payment-asset-alphanum12/00012.png differ
diff --git a/tests_zemu/snapshots/sp-op-payment-asset-alphanum4/00001.png b/tests_zemu/snapshots/sp-op-payment-asset-alphanum4/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-payment-asset-alphanum4/00001.png and b/tests_zemu/snapshots/sp-op-payment-asset-alphanum4/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-payment-asset-alphanum4/00002.png b/tests_zemu/snapshots/sp-op-payment-asset-alphanum4/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-payment-asset-alphanum4/00002.png and b/tests_zemu/snapshots/sp-op-payment-asset-alphanum4/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-payment-asset-alphanum4/00003.png b/tests_zemu/snapshots/sp-op-payment-asset-alphanum4/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-payment-asset-alphanum4/00003.png and b/tests_zemu/snapshots/sp-op-payment-asset-alphanum4/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-payment-asset-alphanum4/00005.png b/tests_zemu/snapshots/sp-op-payment-asset-alphanum4/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-payment-asset-alphanum4/00005.png and b/tests_zemu/snapshots/sp-op-payment-asset-alphanum4/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-payment-asset-alphanum4/00006.png b/tests_zemu/snapshots/sp-op-payment-asset-alphanum4/00006.png
index 8a547ece..562b6383 100644
Binary files a/tests_zemu/snapshots/sp-op-payment-asset-alphanum4/00006.png and b/tests_zemu/snapshots/sp-op-payment-asset-alphanum4/00006.png differ
diff --git a/tests_zemu/snapshots/sp-op-payment-asset-alphanum4/00007.png b/tests_zemu/snapshots/sp-op-payment-asset-alphanum4/00007.png
index 9fc66f1d..21ca90fc 100644
Binary files a/tests_zemu/snapshots/sp-op-payment-asset-alphanum4/00007.png and b/tests_zemu/snapshots/sp-op-payment-asset-alphanum4/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-payment-asset-alphanum4/00008.png b/tests_zemu/snapshots/sp-op-payment-asset-alphanum4/00008.png
index 55496b82..cffd5a33 100644
Binary files a/tests_zemu/snapshots/sp-op-payment-asset-alphanum4/00008.png and b/tests_zemu/snapshots/sp-op-payment-asset-alphanum4/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-payment-asset-alphanum4/00009.png b/tests_zemu/snapshots/sp-op-payment-asset-alphanum4/00009.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-payment-asset-alphanum4/00009.png and b/tests_zemu/snapshots/sp-op-payment-asset-alphanum4/00009.png differ
diff --git a/tests_zemu/snapshots/sp-op-payment-asset-alphanum4/00011.png b/tests_zemu/snapshots/sp-op-payment-asset-alphanum4/00011.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-payment-asset-alphanum4/00011.png and b/tests_zemu/snapshots/sp-op-payment-asset-alphanum4/00011.png differ
diff --git a/tests_zemu/snapshots/sp-op-payment-asset-native/00001.png b/tests_zemu/snapshots/sp-op-payment-asset-native/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-payment-asset-native/00001.png and b/tests_zemu/snapshots/sp-op-payment-asset-native/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-payment-asset-native/00002.png b/tests_zemu/snapshots/sp-op-payment-asset-native/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-payment-asset-native/00002.png and b/tests_zemu/snapshots/sp-op-payment-asset-native/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-payment-asset-native/00003.png b/tests_zemu/snapshots/sp-op-payment-asset-native/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-payment-asset-native/00003.png and b/tests_zemu/snapshots/sp-op-payment-asset-native/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-payment-asset-native/00005.png b/tests_zemu/snapshots/sp-op-payment-asset-native/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-payment-asset-native/00005.png and b/tests_zemu/snapshots/sp-op-payment-asset-native/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-payment-asset-native/00006.png b/tests_zemu/snapshots/sp-op-payment-asset-native/00006.png
index a8a420c3..3729654f 100644
Binary files a/tests_zemu/snapshots/sp-op-payment-asset-native/00006.png and b/tests_zemu/snapshots/sp-op-payment-asset-native/00006.png differ
diff --git a/tests_zemu/snapshots/sp-op-payment-asset-native/00007.png b/tests_zemu/snapshots/sp-op-payment-asset-native/00007.png
index 9fc66f1d..21ca90fc 100644
Binary files a/tests_zemu/snapshots/sp-op-payment-asset-native/00007.png and b/tests_zemu/snapshots/sp-op-payment-asset-native/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-payment-asset-native/00008.png b/tests_zemu/snapshots/sp-op-payment-asset-native/00008.png
index 55496b82..cffd5a33 100644
Binary files a/tests_zemu/snapshots/sp-op-payment-asset-native/00008.png and b/tests_zemu/snapshots/sp-op-payment-asset-native/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-payment-asset-native/00009.png b/tests_zemu/snapshots/sp-op-payment-asset-native/00009.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-payment-asset-native/00009.png and b/tests_zemu/snapshots/sp-op-payment-asset-native/00009.png differ
diff --git a/tests_zemu/snapshots/sp-op-payment-asset-native/00011.png b/tests_zemu/snapshots/sp-op-payment-asset-native/00011.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-payment-asset-native/00011.png and b/tests_zemu/snapshots/sp-op-payment-asset-native/00011.png differ
diff --git a/tests_zemu/snapshots/sp-op-payment-with-muxed-destination/00001.png b/tests_zemu/snapshots/sp-op-payment-with-muxed-destination/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-payment-with-muxed-destination/00001.png and b/tests_zemu/snapshots/sp-op-payment-with-muxed-destination/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-payment-with-muxed-destination/00002.png b/tests_zemu/snapshots/sp-op-payment-with-muxed-destination/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-payment-with-muxed-destination/00002.png and b/tests_zemu/snapshots/sp-op-payment-with-muxed-destination/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-payment-with-muxed-destination/00003.png b/tests_zemu/snapshots/sp-op-payment-with-muxed-destination/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-payment-with-muxed-destination/00003.png and b/tests_zemu/snapshots/sp-op-payment-with-muxed-destination/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-payment-with-muxed-destination/00005.png b/tests_zemu/snapshots/sp-op-payment-with-muxed-destination/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-payment-with-muxed-destination/00005.png and b/tests_zemu/snapshots/sp-op-payment-with-muxed-destination/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-payment-with-muxed-destination/00006.png b/tests_zemu/snapshots/sp-op-payment-with-muxed-destination/00006.png
index a8a420c3..3729654f 100644
Binary files a/tests_zemu/snapshots/sp-op-payment-with-muxed-destination/00006.png and b/tests_zemu/snapshots/sp-op-payment-with-muxed-destination/00006.png differ
diff --git a/tests_zemu/snapshots/sp-op-payment-with-muxed-destination/00007.png b/tests_zemu/snapshots/sp-op-payment-with-muxed-destination/00007.png
index ea1b11a7..a9670471 100644
Binary files a/tests_zemu/snapshots/sp-op-payment-with-muxed-destination/00007.png and b/tests_zemu/snapshots/sp-op-payment-with-muxed-destination/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-payment-with-muxed-destination/00009.png b/tests_zemu/snapshots/sp-op-payment-with-muxed-destination/00009.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-payment-with-muxed-destination/00009.png and b/tests_zemu/snapshots/sp-op-payment-with-muxed-destination/00009.png differ
diff --git a/tests_zemu/snapshots/sp-op-payment-with-muxed-destination/00011.png b/tests_zemu/snapshots/sp-op-payment-with-muxed-destination/00011.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-payment-with-muxed-destination/00011.png and b/tests_zemu/snapshots/sp-op-payment-with-muxed-destination/00011.png differ
diff --git a/tests_zemu/snapshots/sp-op-restore-footprint/00000.png b/tests_zemu/snapshots/sp-op-restore-footprint/00000.png
new file mode 100644
index 00000000..df51419d
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-restore-footprint/00000.png differ
diff --git a/tests_zemu/snapshots/sp-op-restore-footprint/00001.png b/tests_zemu/snapshots/sp-op-restore-footprint/00001.png
new file mode 100644
index 00000000..2e650e1f
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-restore-footprint/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-restore-footprint/00002.png b/tests_zemu/snapshots/sp-op-restore-footprint/00002.png
new file mode 100644
index 00000000..eff68d24
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-restore-footprint/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-restore-footprint/00003.png b/tests_zemu/snapshots/sp-op-restore-footprint/00003.png
new file mode 100644
index 00000000..a1f1e09c
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-restore-footprint/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-restore-footprint/00004.png b/tests_zemu/snapshots/sp-op-restore-footprint/00004.png
new file mode 100644
index 00000000..1031d9e1
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-restore-footprint/00004.png differ
diff --git a/tests_zemu/snapshots/sp-op-restore-footprint/00005.png b/tests_zemu/snapshots/sp-op-restore-footprint/00005.png
new file mode 100644
index 00000000..06db03ba
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-restore-footprint/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-restore-footprint/00006.png b/tests_zemu/snapshots/sp-op-restore-footprint/00006.png
new file mode 100644
index 00000000..4ddb7cc3
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-restore-footprint/00006.png differ
diff --git a/tests_zemu/snapshots/sp-op-restore-footprint/00007.png b/tests_zemu/snapshots/sp-op-restore-footprint/00007.png
new file mode 100644
index 00000000..2debbe6c
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-restore-footprint/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-restore-footprint/00008.png b/tests_zemu/snapshots/sp-op-restore-footprint/00008.png
new file mode 100644
index 00000000..62b55891
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-restore-footprint/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-restore-footprint/00009.png b/tests_zemu/snapshots/sp-op-restore-footprint/00009.png
new file mode 100644
index 00000000..fb27b648
Binary files /dev/null and b/tests_zemu/snapshots/sp-op-restore-footprint/00009.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-account/00001.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-account/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-account/00001.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-account/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-account/00002.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-account/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-account/00002.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-account/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-account/00003.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-account/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-account/00003.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-account/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-account/00005.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-account/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-account/00005.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-account/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-account/00007.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-account/00007.png
index 62df4806..6f88341c 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-account/00007.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-account/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-account/00008.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-account/00008.png
index c5b4dd7b..3025a242 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-account/00008.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-account/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-account/00009.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-account/00009.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-account/00009.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-account/00009.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-account/00011.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-account/00011.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-account/00011.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-account/00011.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-claimable-balance/00001.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-claimable-balance/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-claimable-balance/00001.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-claimable-balance/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-claimable-balance/00002.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-claimable-balance/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-claimable-balance/00002.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-claimable-balance/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-claimable-balance/00003.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-claimable-balance/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-claimable-balance/00003.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-claimable-balance/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-claimable-balance/00005.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-claimable-balance/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-claimable-balance/00005.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-claimable-balance/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-claimable-balance/00006.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-claimable-balance/00006.png
index a3a1325a..99e87238 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-claimable-balance/00006.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-claimable-balance/00006.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-claimable-balance/00009.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-claimable-balance/00009.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-claimable-balance/00009.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-claimable-balance/00009.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-claimable-balance/00011.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-claimable-balance/00011.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-claimable-balance/00011.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-claimable-balance/00011.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-data/00001.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-data/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-data/00001.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-data/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-data/00002.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-data/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-data/00002.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-data/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-data/00003.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-data/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-data/00003.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-data/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-data/00005.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-data/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-data/00005.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-data/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-data/00007.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-data/00007.png
index 62df4806..6f88341c 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-data/00007.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-data/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-data/00008.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-data/00008.png
index c5b4dd7b..3025a242 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-data/00008.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-data/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-data/00011.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-data/00011.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-data/00011.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-data/00011.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-data/00013.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-data/00013.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-data/00013.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-data/00013.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00001.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00001.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00002.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00002.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00003.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00003.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00005.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00005.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00006.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00006.png
index 4c4b912b..f7f0cba7 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00006.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00006.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00007.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00007.png
index 62df4806..6f88341c 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00007.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00008.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00008.png
index c5b4dd7b..3025a242 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00008.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00009.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00009.png
index b2883ac9..a0d35f57 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00009.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00009.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00010.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00010.png
index 3a1749fa..95680b45 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00010.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00010.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00011.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00011.png
index 00cf1a83..4ef06745 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00011.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00011.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00012.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00012.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00012.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00012.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00014.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00014.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00014.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-ed25519-public-key-signer/00014.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00001.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00001.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00002.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00002.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00003.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00003.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00005.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00005.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00006.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00006.png
index 4c4b912b..f7f0cba7 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00006.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00006.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00007.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00007.png
index 62df4806..6f88341c 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00007.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00008.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00008.png
index c5b4dd7b..3025a242 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00008.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00009.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00009.png
index bfdef21d..11808978 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00009.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00009.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00010.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00010.png
index 609f80a1..621b579f 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00010.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00010.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00011.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00011.png
index d0c4c91c..941a71c6 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00011.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00011.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00012.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00012.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00012.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00012.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00014.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00014.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00014.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-hash-x-signer/00014.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-liquidity-pool/00001.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-liquidity-pool/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-liquidity-pool/00001.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-liquidity-pool/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-liquidity-pool/00002.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-liquidity-pool/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-liquidity-pool/00002.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-liquidity-pool/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-liquidity-pool/00003.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-liquidity-pool/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-liquidity-pool/00003.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-liquidity-pool/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-liquidity-pool/00005.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-liquidity-pool/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-liquidity-pool/00005.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-liquidity-pool/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-liquidity-pool/00006.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-liquidity-pool/00006.png
index 183ef322..e1fbe3a5 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-liquidity-pool/00006.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-liquidity-pool/00006.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-liquidity-pool/00009.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-liquidity-pool/00009.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-liquidity-pool/00009.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-liquidity-pool/00009.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-liquidity-pool/00011.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-liquidity-pool/00011.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-liquidity-pool/00011.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-liquidity-pool/00011.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-offer/00001.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-offer/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-offer/00001.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-offer/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-offer/00002.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-offer/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-offer/00002.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-offer/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-offer/00003.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-offer/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-offer/00003.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-offer/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-offer/00005.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-offer/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-offer/00005.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-offer/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-offer/00007.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-offer/00007.png
index 0d5cf21b..e210407c 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-offer/00007.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-offer/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-offer/00008.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-offer/00008.png
index 9a9290c9..a7035ad6 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-offer/00008.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-offer/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-offer/00010.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-offer/00010.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-offer/00010.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-offer/00010.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-offer/00012.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-offer/00012.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-offer/00012.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-offer/00012.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00001.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00001.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00002.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00002.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00003.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00003.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00005.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00005.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00006.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00006.png
index 4c4b912b..f7f0cba7 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00006.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00006.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00007.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00007.png
index 62df4806..6f88341c 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00007.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00008.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00008.png
index c5b4dd7b..3025a242 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00008.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00009.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00009.png
index bc66f86d..25bf2d60 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00009.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00009.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00010.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00010.png
index a443dd67..6cac010f 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00010.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00010.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00011.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00011.png
index 1b948fdb..0e99d4b1 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00011.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00011.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00012.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00012.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00012.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00012.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00014.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00014.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00014.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-pre-auth-tx-signer/00014.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-asset/00001.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-asset/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-asset/00001.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-asset/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-asset/00002.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-asset/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-asset/00002.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-asset/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-asset/00003.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-asset/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-asset/00003.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-asset/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-asset/00005.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-asset/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-asset/00005.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-asset/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-asset/00007.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-asset/00007.png
index 62df4806..6f88341c 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-asset/00007.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-asset/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-asset/00008.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-asset/00008.png
index c5b4dd7b..3025a242 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-asset/00008.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-asset/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-asset/00010.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-asset/00010.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-asset/00010.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-asset/00010.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-asset/00012.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-asset/00012.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-asset/00012.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-asset/00012.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00001.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00001.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00002.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00002.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00003.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00003.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00005.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00005.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00007.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00007.png
index 62df4806..6f88341c 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00007.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00008.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00008.png
index c5b4dd7b..3025a242 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00008.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00011.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00011.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00011.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00011.png differ
diff --git a/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00013.png b/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00013.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00013.png and b/tests_zemu/snapshots/sp-op-revoke-sponsorship-trust-line-with-liquidity-pool-id/00013.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00001.png b/tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00001.png and b/tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00002.png b/tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00002.png and b/tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00003.png b/tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00003.png and b/tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00005.png b/tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00005.png and b/tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00006.png b/tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00006.png
index d7dc42b0..2ee2b057 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00006.png and b/tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00006.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00007.png b/tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00007.png
index b2110819..884aac43 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00007.png and b/tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00008.png b/tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00008.png
index f90bd1df..f38dd797 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00008.png and b/tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00010.png b/tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00010.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00010.png and b/tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00010.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00012.png b/tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00012.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00012.png and b/tests_zemu/snapshots/sp-op-set-options-add-ed25519-signer-payload-signer/00012.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00001.png b/tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00001.png and b/tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00002.png b/tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00002.png and b/tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00003.png b/tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00003.png and b/tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00005.png b/tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00005.png and b/tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00006.png b/tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00006.png
index d7dc42b0..2ee2b057 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00006.png and b/tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00006.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00007.png b/tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00007.png
index 734052eb..ec26c879 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00007.png and b/tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00008.png b/tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00008.png
index 609f80a1..621b579f 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00008.png and b/tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00009.png b/tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00009.png
index d0c4c91c..941a71c6 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00009.png and b/tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00009.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00011.png b/tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00011.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00011.png and b/tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00011.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00013.png b/tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00013.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00013.png and b/tests_zemu/snapshots/sp-op-set-options-add-hash-x-signer/00013.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00001.png b/tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00001.png and b/tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00002.png b/tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00002.png and b/tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00003.png b/tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00003.png and b/tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00005.png b/tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00005.png and b/tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00006.png b/tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00006.png
index d7dc42b0..2ee2b057 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00006.png and b/tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00006.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00007.png b/tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00007.png
index 07f22e4c..72467465 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00007.png and b/tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00008.png b/tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00008.png
index a443dd67..6cac010f 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00008.png and b/tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00009.png b/tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00009.png
index 1b948fdb..0e99d4b1 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00009.png and b/tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00009.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00011.png b/tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00011.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00011.png and b/tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00011.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00013.png b/tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00013.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00013.png and b/tests_zemu/snapshots/sp-op-set-options-add-pre-auth-tx-signer/00013.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00001.png b/tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00001.png and b/tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00002.png b/tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00002.png and b/tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00003.png b/tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00003.png and b/tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00005.png b/tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00005.png and b/tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00006.png b/tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00006.png
index d7dc42b0..2ee2b057 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00006.png and b/tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00006.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00007.png b/tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00007.png
index 2b30765f..f07c1a03 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00007.png and b/tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00008.png b/tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00008.png
index be99bd3d..ec8cfbbf 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00008.png and b/tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00009.png b/tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00009.png
index bd1c2d09..206bc02d 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00009.png and b/tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00009.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00011.png b/tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00011.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00011.png and b/tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00011.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00013.png b/tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00013.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00013.png and b/tests_zemu/snapshots/sp-op-set-options-add-public-key-signer/00013.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00001.png b/tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00001.png and b/tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00002.png b/tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00002.png and b/tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00003.png b/tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00003.png and b/tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00005.png b/tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00005.png and b/tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00006.png b/tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00006.png
index d7dc42b0..2ee2b057 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00006.png and b/tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00006.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00007.png b/tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00007.png
index 070462d1..c49ce350 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00007.png and b/tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00008.png b/tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00008.png
index f90bd1df..f38dd797 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00008.png and b/tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00009.png b/tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00009.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00009.png and b/tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00009.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00011.png b/tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00011.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00011.png and b/tests_zemu/snapshots/sp-op-set-options-remove-ed25519-signer-payload-signer/00011.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00001.png b/tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00001.png and b/tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00002.png b/tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00002.png and b/tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00003.png b/tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00003.png and b/tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00005.png b/tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00005.png and b/tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00006.png b/tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00006.png
index d7dc42b0..2ee2b057 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00006.png and b/tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00006.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00007.png b/tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00007.png
index 745c081f..32e153b5 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00007.png and b/tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00008.png b/tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00008.png
index 609f80a1..621b579f 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00008.png and b/tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00009.png b/tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00009.png
index d0c4c91c..941a71c6 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00009.png and b/tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00009.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00010.png b/tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00010.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00010.png and b/tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00010.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00012.png b/tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00012.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00012.png and b/tests_zemu/snapshots/sp-op-set-options-remove-hash-x-signer/00012.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00001.png b/tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00001.png and b/tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00002.png b/tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00002.png and b/tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00003.png b/tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00003.png and b/tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00005.png b/tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00005.png and b/tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00006.png b/tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00006.png
index d7dc42b0..2ee2b057 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00006.png and b/tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00006.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00007.png b/tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00007.png
index 2379be74..7ff89bab 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00007.png and b/tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00008.png b/tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00008.png
index a443dd67..6cac010f 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00008.png and b/tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00009.png b/tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00009.png
index 1b948fdb..0e99d4b1 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00009.png and b/tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00009.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00010.png b/tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00010.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00010.png and b/tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00010.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00012.png b/tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00012.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00012.png and b/tests_zemu/snapshots/sp-op-set-options-remove-pre-auth-tx-signer/00012.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00001.png b/tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00001.png and b/tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00002.png b/tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00002.png and b/tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00003.png b/tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00003.png and b/tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00005.png b/tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00005.png and b/tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00006.png b/tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00006.png
index d7dc42b0..2ee2b057 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00006.png and b/tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00006.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00007.png b/tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00007.png
index 73ca7a6a..abce542d 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00007.png and b/tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00008.png b/tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00008.png
index be99bd3d..ec8cfbbf 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00008.png and b/tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00009.png b/tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00009.png
index bd1c2d09..206bc02d 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00009.png and b/tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00009.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00010.png b/tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00010.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00010.png and b/tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00010.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00012.png b/tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00012.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00012.png and b/tests_zemu/snapshots/sp-op-set-options-remove-public-key-signer/00012.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-with-empty-body/00001.png b/tests_zemu/snapshots/sp-op-set-options-with-empty-body/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-with-empty-body/00001.png and b/tests_zemu/snapshots/sp-op-set-options-with-empty-body/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-with-empty-body/00002.png b/tests_zemu/snapshots/sp-op-set-options-with-empty-body/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-with-empty-body/00002.png and b/tests_zemu/snapshots/sp-op-set-options-with-empty-body/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-with-empty-body/00003.png b/tests_zemu/snapshots/sp-op-set-options-with-empty-body/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-with-empty-body/00003.png and b/tests_zemu/snapshots/sp-op-set-options-with-empty-body/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-with-empty-body/00005.png b/tests_zemu/snapshots/sp-op-set-options-with-empty-body/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-with-empty-body/00005.png and b/tests_zemu/snapshots/sp-op-set-options-with-empty-body/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-with-empty-body/00006.png b/tests_zemu/snapshots/sp-op-set-options-with-empty-body/00006.png
index d7dc42b0..2ee2b057 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-with-empty-body/00006.png and b/tests_zemu/snapshots/sp-op-set-options-with-empty-body/00006.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-with-empty-body/00007.png b/tests_zemu/snapshots/sp-op-set-options-with-empty-body/00007.png
index 9d7a4ccb..7d8c0c89 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-with-empty-body/00007.png and b/tests_zemu/snapshots/sp-op-set-options-with-empty-body/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-with-empty-body/00008.png b/tests_zemu/snapshots/sp-op-set-options-with-empty-body/00008.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-with-empty-body/00008.png and b/tests_zemu/snapshots/sp-op-set-options-with-empty-body/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options-with-empty-body/00010.png b/tests_zemu/snapshots/sp-op-set-options-with-empty-body/00010.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options-with-empty-body/00010.png and b/tests_zemu/snapshots/sp-op-set-options-with-empty-body/00010.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options/00001.png b/tests_zemu/snapshots/sp-op-set-options/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options/00001.png and b/tests_zemu/snapshots/sp-op-set-options/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options/00002.png b/tests_zemu/snapshots/sp-op-set-options/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options/00002.png and b/tests_zemu/snapshots/sp-op-set-options/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options/00003.png b/tests_zemu/snapshots/sp-op-set-options/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options/00003.png and b/tests_zemu/snapshots/sp-op-set-options/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options/00005.png b/tests_zemu/snapshots/sp-op-set-options/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options/00005.png and b/tests_zemu/snapshots/sp-op-set-options/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options/00006.png b/tests_zemu/snapshots/sp-op-set-options/00006.png
index d7dc42b0..2ee2b057 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options/00006.png and b/tests_zemu/snapshots/sp-op-set-options/00006.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options/00007.png b/tests_zemu/snapshots/sp-op-set-options/00007.png
index a1792be7..3213b46b 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options/00007.png and b/tests_zemu/snapshots/sp-op-set-options/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options/00008.png b/tests_zemu/snapshots/sp-op-set-options/00008.png
index 1b8b48f4..902e8f54 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options/00008.png and b/tests_zemu/snapshots/sp-op-set-options/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options/00009.png b/tests_zemu/snapshots/sp-op-set-options/00009.png
index 27de4247..d564e6a2 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options/00009.png and b/tests_zemu/snapshots/sp-op-set-options/00009.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options/00010.png b/tests_zemu/snapshots/sp-op-set-options/00010.png
index d67ca0d9..2d6e187a 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options/00010.png and b/tests_zemu/snapshots/sp-op-set-options/00010.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options/00016.png b/tests_zemu/snapshots/sp-op-set-options/00016.png
index 2b30765f..f07c1a03 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options/00016.png and b/tests_zemu/snapshots/sp-op-set-options/00016.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options/00017.png b/tests_zemu/snapshots/sp-op-set-options/00017.png
index 3a1749fa..95680b45 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options/00017.png and b/tests_zemu/snapshots/sp-op-set-options/00017.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options/00018.png b/tests_zemu/snapshots/sp-op-set-options/00018.png
index 00cf1a83..4ef06745 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options/00018.png and b/tests_zemu/snapshots/sp-op-set-options/00018.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options/00020.png b/tests_zemu/snapshots/sp-op-set-options/00020.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options/00020.png and b/tests_zemu/snapshots/sp-op-set-options/00020.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-options/00022.png b/tests_zemu/snapshots/sp-op-set-options/00022.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-set-options/00022.png and b/tests_zemu/snapshots/sp-op-set-options/00022.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00001.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00001.png and b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00002.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00002.png and b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00003.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00003.png and b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00005.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00005.png and b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00006.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00006.png
index fe37ee8d..b4be404e 100644
Binary files a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00006.png and b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00006.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00007.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00007.png
index 91837361..5cdc8b87 100644
Binary files a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00007.png and b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00008.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00008.png
index c7b05375..f33ba708 100644
Binary files a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00008.png and b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00010.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00010.png
index a118eeb0..e391b9bc 100644
Binary files a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00010.png and b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00010.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00011.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00011.png
index 4b70bf88..6f105756 100644
Binary files a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00011.png and b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00011.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00012.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00012.png
index fe5760ad..7d409ef2 100644
Binary files a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00012.png and b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00012.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00013.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00013.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00013.png and b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00013.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00015.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00015.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00015.png and b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-and-clawback-enabled/00015.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00001.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00001.png and b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00002.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00002.png and b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00003.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00003.png and b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00005.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00005.png and b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00006.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00006.png
index fe37ee8d..b4be404e 100644
Binary files a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00006.png and b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00006.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00007.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00007.png
index 91837361..5cdc8b87 100644
Binary files a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00007.png and b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00008.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00008.png
index c7b05375..f33ba708 100644
Binary files a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00008.png and b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00010.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00010.png
index bc3aa781..8eed55d9 100644
Binary files a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00010.png and b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00010.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00011.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00011.png
index 20059ee4..b9b2f944 100644
Binary files a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00011.png and b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00011.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00012.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00012.png
index 457aa4d5..d92b3a3b 100644
Binary files a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00012.png and b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00012.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00013.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00013.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00013.png and b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00013.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00015.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00015.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00015.png and b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized-to-maintain-liabilities/00015.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00001.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00001.png and b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00002.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00002.png and b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00003.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00003.png and b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00005.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00005.png and b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00006.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00006.png
index fe37ee8d..b4be404e 100644
Binary files a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00006.png and b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00006.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00007.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00007.png
index 91837361..5cdc8b87 100644
Binary files a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00007.png and b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00008.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00008.png
index c7b05375..f33ba708 100644
Binary files a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00008.png and b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00010.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00010.png
index 568aa65d..90f730a1 100644
Binary files a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00010.png and b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00010.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00011.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00011.png
index d86bb945..e4c766a1 100644
Binary files a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00011.png and b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00011.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00012.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00012.png
index 4ca40c14..bfcbb6f8 100644
Binary files a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00012.png and b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00012.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00013.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00013.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00013.png and b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00013.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00015.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00015.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00015.png and b/tests_zemu/snapshots/sp-op-set-trust-line-flags-authorized/00015.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00001.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00001.png and b/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00002.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00002.png and b/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00003.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00003.png and b/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00005.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00005.png and b/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00006.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00006.png
index fe37ee8d..b4be404e 100644
Binary files a/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00006.png and b/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00006.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00007.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00007.png
index 91837361..5cdc8b87 100644
Binary files a/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00007.png and b/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00008.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00008.png
index c7b05375..f33ba708 100644
Binary files a/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00008.png and b/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00010.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00010.png
index dde0ee89..2169b22a 100644
Binary files a/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00010.png and b/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00010.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00011.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00011.png
index 0eab1d25..51c1dec3 100644
Binary files a/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00011.png and b/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00011.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00012.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00012.png
index 10179d51..2a42a3d3 100644
Binary files a/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00012.png and b/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00012.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00013.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00013.png
index dd790245..c439338e 100644
Binary files a/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00013.png and b/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00013.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00014.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00014.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00014.png and b/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00014.png differ
diff --git a/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00016.png b/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00016.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00016.png and b/tests_zemu/snapshots/sp-op-set-trust-line-flags-unauthorized/00016.png differ
diff --git a/tests_zemu/snapshots/sp-op-source-omit-op-source-equal-signer-not-equal-tx-source/00001.png b/tests_zemu/snapshots/sp-op-source-omit-op-source-equal-signer-not-equal-tx-source/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-source-omit-op-source-equal-signer-not-equal-tx-source/00001.png and b/tests_zemu/snapshots/sp-op-source-omit-op-source-equal-signer-not-equal-tx-source/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-source-omit-op-source-equal-signer-not-equal-tx-source/00002.png b/tests_zemu/snapshots/sp-op-source-omit-op-source-equal-signer-not-equal-tx-source/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-source-omit-op-source-equal-signer-not-equal-tx-source/00002.png and b/tests_zemu/snapshots/sp-op-source-omit-op-source-equal-signer-not-equal-tx-source/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-source-omit-op-source-equal-signer-not-equal-tx-source/00003.png b/tests_zemu/snapshots/sp-op-source-omit-op-source-equal-signer-not-equal-tx-source/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-source-omit-op-source-equal-signer-not-equal-tx-source/00003.png and b/tests_zemu/snapshots/sp-op-source-omit-op-source-equal-signer-not-equal-tx-source/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-source-omit-op-source-equal-signer-not-equal-tx-source/00005.png b/tests_zemu/snapshots/sp-op-source-omit-op-source-equal-signer-not-equal-tx-source/00005.png
index 7dbb4d7a..b0d30635 100644
Binary files a/tests_zemu/snapshots/sp-op-source-omit-op-source-equal-signer-not-equal-tx-source/00005.png and b/tests_zemu/snapshots/sp-op-source-omit-op-source-equal-signer-not-equal-tx-source/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-source-omit-op-source-equal-signer-not-equal-tx-source/00006.png b/tests_zemu/snapshots/sp-op-source-omit-op-source-equal-signer-not-equal-tx-source/00006.png
index 5f9656de..22740f21 100644
Binary files a/tests_zemu/snapshots/sp-op-source-omit-op-source-equal-signer-not-equal-tx-source/00006.png and b/tests_zemu/snapshots/sp-op-source-omit-op-source-equal-signer-not-equal-tx-source/00006.png differ
diff --git a/tests_zemu/snapshots/sp-op-source-omit-op-source-equal-signer-not-equal-tx-source/00008.png b/tests_zemu/snapshots/sp-op-source-omit-op-source-equal-signer-not-equal-tx-source/00008.png
index 1571c9b3..5a7ffae2 100644
Binary files a/tests_zemu/snapshots/sp-op-source-omit-op-source-equal-signer-not-equal-tx-source/00008.png and b/tests_zemu/snapshots/sp-op-source-omit-op-source-equal-signer-not-equal-tx-source/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-source-omit-op-source-equal-signer-not-equal-tx-source/00009.png b/tests_zemu/snapshots/sp-op-source-omit-op-source-equal-signer-not-equal-tx-source/00009.png
index 4e2026a1..61032206 100644
Binary files a/tests_zemu/snapshots/sp-op-source-omit-op-source-equal-signer-not-equal-tx-source/00009.png and b/tests_zemu/snapshots/sp-op-source-omit-op-source-equal-signer-not-equal-tx-source/00009.png differ
diff --git a/tests_zemu/snapshots/sp-op-source-omit-op-source-equal-signer-not-equal-tx-source/00010.png b/tests_zemu/snapshots/sp-op-source-omit-op-source-equal-signer-not-equal-tx-source/00010.png
index 5cea3230..9bc20076 100644
Binary files a/tests_zemu/snapshots/sp-op-source-omit-op-source-equal-signer-not-equal-tx-source/00010.png and b/tests_zemu/snapshots/sp-op-source-omit-op-source-equal-signer-not-equal-tx-source/00010.png differ
diff --git a/tests_zemu/snapshots/sp-op-source-omit-op-source-equal-signer-not-equal-tx-source/00012.png b/tests_zemu/snapshots/sp-op-source-omit-op-source-equal-signer-not-equal-tx-source/00012.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-source-omit-op-source-equal-signer-not-equal-tx-source/00012.png and b/tests_zemu/snapshots/sp-op-source-omit-op-source-equal-signer-not-equal-tx-source/00012.png differ
diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00001.png b/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00001.png and b/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00002.png b/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00002.png and b/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00003.png b/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00003.png and b/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00005.png b/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00005.png
index 188a9b9e..d7f46534 100644
Binary files a/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00005.png and b/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00006.png b/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00006.png
index 7f4ebd9c..429130d0 100644
Binary files a/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00006.png and b/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00006.png differ
diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00008.png b/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00008.png
index 1571c9b3..5a7ffae2 100644
Binary files a/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00008.png and b/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00009.png b/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00009.png
index 01b51481..24a69a05 100644
Binary files a/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00009.png and b/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00009.png differ
diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00010.png b/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00010.png
index a72ea709..0e027d6f 100644
Binary files a/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00010.png and b/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00010.png differ
diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00012.png b/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00012.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00012.png and b/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-muxed-source-equal-signer/00012.png differ
diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00001.png b/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00001.png and b/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00002.png b/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00002.png and b/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00003.png b/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00003.png and b/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00005.png b/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00005.png
index 188a9b9e..d7f46534 100644
Binary files a/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00005.png and b/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00006.png b/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00006.png
index 7f4ebd9c..429130d0 100644
Binary files a/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00006.png and b/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00006.png differ
diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00008.png b/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00008.png
index 1571c9b3..5a7ffae2 100644
Binary files a/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00008.png and b/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00009.png b/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00009.png
index 4e2026a1..61032206 100644
Binary files a/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00009.png and b/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00009.png differ
diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00010.png b/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00010.png
index 5cea3230..9bc20076 100644
Binary files a/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00010.png and b/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00010.png differ
diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00012.png b/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00012.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00012.png and b/tests_zemu/snapshots/sp-op-source-omit-tx-muxed-source-equal-op-source-equal-signer/00012.png differ
diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00001.png b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00001.png and b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00002.png b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00002.png and b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00003.png b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00003.png and b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00005.png b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00005.png and b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00007.png b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00007.png
index 1571c9b3..5a7ffae2 100644
Binary files a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00007.png and b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00008.png b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00008.png
index 01b51481..24a69a05 100644
Binary files a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00008.png and b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00009.png b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00009.png
index a72ea709..0e027d6f 100644
Binary files a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00009.png and b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00009.png differ
diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00011.png b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00011.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00011.png and b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-muxed-source-equal-signer/00011.png differ
diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-equal-signer/00001.png b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-equal-signer/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-equal-signer/00001.png and b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-equal-signer/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-equal-signer/00002.png b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-equal-signer/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-equal-signer/00002.png and b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-equal-signer/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-equal-signer/00003.png b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-equal-signer/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-equal-signer/00003.png and b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-equal-signer/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-equal-signer/00005.png b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-equal-signer/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-equal-signer/00005.png and b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-equal-signer/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-equal-signer/00007.png b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-equal-signer/00007.png
index 1571c9b3..5a7ffae2 100644
Binary files a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-equal-signer/00007.png and b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-equal-signer/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-equal-signer/00008.png b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-equal-signer/00008.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-equal-signer/00008.png and b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-equal-signer/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-equal-signer/00010.png b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-equal-signer/00010.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-equal-signer/00010.png and b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-equal-signer/00010.png differ
diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-not-equal-signer/00001.png b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-not-equal-signer/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-not-equal-signer/00001.png and b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-not-equal-signer/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-not-equal-signer/00002.png b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-not-equal-signer/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-not-equal-signer/00002.png and b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-not-equal-signer/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-not-equal-signer/00003.png b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-not-equal-signer/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-not-equal-signer/00003.png and b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-not-equal-signer/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-not-equal-signer/00005.png b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-not-equal-signer/00005.png
index 7dbb4d7a..b0d30635 100644
Binary files a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-not-equal-signer/00005.png and b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-not-equal-signer/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-not-equal-signer/00006.png b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-not-equal-signer/00006.png
index 5f9656de..22740f21 100644
Binary files a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-not-equal-signer/00006.png and b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-not-equal-signer/00006.png differ
diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-not-equal-signer/00008.png b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-not-equal-signer/00008.png
index 1571c9b3..5a7ffae2 100644
Binary files a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-not-equal-signer/00008.png and b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-not-equal-signer/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-not-equal-signer/00009.png b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-not-equal-signer/00009.png
index d7e84285..a365da7b 100644
Binary files a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-not-equal-signer/00009.png and b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-not-equal-signer/00009.png differ
diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-not-equal-signer/00010.png b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-not-equal-signer/00010.png
index 6aaffb04..982bd122 100644
Binary files a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-not-equal-signer/00010.png and b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-not-equal-signer/00010.png differ
diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-not-equal-signer/00012.png b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-not-equal-signer/00012.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-not-equal-signer/00012.png and b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-op-source-not-equal-signer/00012.png differ
diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-signer-not-equal-op-source/00001.png b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-signer-not-equal-op-source/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-signer-not-equal-op-source/00001.png and b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-signer-not-equal-op-source/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-signer-not-equal-op-source/00002.png b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-signer-not-equal-op-source/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-signer-not-equal-op-source/00002.png and b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-signer-not-equal-op-source/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-signer-not-equal-op-source/00003.png b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-signer-not-equal-op-source/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-signer-not-equal-op-source/00003.png and b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-signer-not-equal-op-source/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-signer-not-equal-op-source/00005.png b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-signer-not-equal-op-source/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-signer-not-equal-op-source/00005.png and b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-signer-not-equal-op-source/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-signer-not-equal-op-source/00007.png b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-signer-not-equal-op-source/00007.png
index 1571c9b3..5a7ffae2 100644
Binary files a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-signer-not-equal-op-source/00007.png and b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-signer-not-equal-op-source/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-signer-not-equal-op-source/00008.png b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-signer-not-equal-op-source/00008.png
index d7e84285..a365da7b 100644
Binary files a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-signer-not-equal-op-source/00008.png and b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-signer-not-equal-op-source/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-signer-not-equal-op-source/00009.png b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-signer-not-equal-op-source/00009.png
index 6aaffb04..982bd122 100644
Binary files a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-signer-not-equal-op-source/00009.png and b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-signer-not-equal-op-source/00009.png differ
diff --git a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-signer-not-equal-op-source/00011.png b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-signer-not-equal-op-source/00011.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-signer-not-equal-op-source/00011.png and b/tests_zemu/snapshots/sp-op-source-omit-tx-source-equal-signer-not-equal-op-source/00011.png differ
diff --git a/tests_zemu/snapshots/sp-op-with-empty-source/00001.png b/tests_zemu/snapshots/sp-op-with-empty-source/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-with-empty-source/00001.png and b/tests_zemu/snapshots/sp-op-with-empty-source/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-with-empty-source/00002.png b/tests_zemu/snapshots/sp-op-with-empty-source/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-with-empty-source/00002.png and b/tests_zemu/snapshots/sp-op-with-empty-source/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-with-empty-source/00003.png b/tests_zemu/snapshots/sp-op-with-empty-source/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-with-empty-source/00003.png and b/tests_zemu/snapshots/sp-op-with-empty-source/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-with-empty-source/00005.png b/tests_zemu/snapshots/sp-op-with-empty-source/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-with-empty-source/00005.png and b/tests_zemu/snapshots/sp-op-with-empty-source/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-with-empty-source/00006.png b/tests_zemu/snapshots/sp-op-with-empty-source/00006.png
index a8a420c3..3729654f 100644
Binary files a/tests_zemu/snapshots/sp-op-with-empty-source/00006.png and b/tests_zemu/snapshots/sp-op-with-empty-source/00006.png differ
diff --git a/tests_zemu/snapshots/sp-op-with-empty-source/00007.png b/tests_zemu/snapshots/sp-op-with-empty-source/00007.png
index 9fc66f1d..21ca90fc 100644
Binary files a/tests_zemu/snapshots/sp-op-with-empty-source/00007.png and b/tests_zemu/snapshots/sp-op-with-empty-source/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-with-empty-source/00008.png b/tests_zemu/snapshots/sp-op-with-empty-source/00008.png
index 55496b82..cffd5a33 100644
Binary files a/tests_zemu/snapshots/sp-op-with-empty-source/00008.png and b/tests_zemu/snapshots/sp-op-with-empty-source/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-with-empty-source/00010.png b/tests_zemu/snapshots/sp-op-with-empty-source/00010.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-with-empty-source/00010.png and b/tests_zemu/snapshots/sp-op-with-empty-source/00010.png differ
diff --git a/tests_zemu/snapshots/sp-op-with-muxed-source/00001.png b/tests_zemu/snapshots/sp-op-with-muxed-source/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-op-with-muxed-source/00001.png and b/tests_zemu/snapshots/sp-op-with-muxed-source/00001.png differ
diff --git a/tests_zemu/snapshots/sp-op-with-muxed-source/00002.png b/tests_zemu/snapshots/sp-op-with-muxed-source/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-op-with-muxed-source/00002.png and b/tests_zemu/snapshots/sp-op-with-muxed-source/00002.png differ
diff --git a/tests_zemu/snapshots/sp-op-with-muxed-source/00003.png b/tests_zemu/snapshots/sp-op-with-muxed-source/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-op-with-muxed-source/00003.png and b/tests_zemu/snapshots/sp-op-with-muxed-source/00003.png differ
diff --git a/tests_zemu/snapshots/sp-op-with-muxed-source/00005.png b/tests_zemu/snapshots/sp-op-with-muxed-source/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-op-with-muxed-source/00005.png and b/tests_zemu/snapshots/sp-op-with-muxed-source/00005.png differ
diff --git a/tests_zemu/snapshots/sp-op-with-muxed-source/00006.png b/tests_zemu/snapshots/sp-op-with-muxed-source/00006.png
index a8a420c3..3729654f 100644
Binary files a/tests_zemu/snapshots/sp-op-with-muxed-source/00006.png and b/tests_zemu/snapshots/sp-op-with-muxed-source/00006.png differ
diff --git a/tests_zemu/snapshots/sp-op-with-muxed-source/00007.png b/tests_zemu/snapshots/sp-op-with-muxed-source/00007.png
index 9fc66f1d..21ca90fc 100644
Binary files a/tests_zemu/snapshots/sp-op-with-muxed-source/00007.png and b/tests_zemu/snapshots/sp-op-with-muxed-source/00007.png differ
diff --git a/tests_zemu/snapshots/sp-op-with-muxed-source/00008.png b/tests_zemu/snapshots/sp-op-with-muxed-source/00008.png
index 55496b82..cffd5a33 100644
Binary files a/tests_zemu/snapshots/sp-op-with-muxed-source/00008.png and b/tests_zemu/snapshots/sp-op-with-muxed-source/00008.png differ
diff --git a/tests_zemu/snapshots/sp-op-with-muxed-source/00009.png b/tests_zemu/snapshots/sp-op-with-muxed-source/00009.png
index 01b51481..24a69a05 100644
Binary files a/tests_zemu/snapshots/sp-op-with-muxed-source/00009.png and b/tests_zemu/snapshots/sp-op-with-muxed-source/00009.png differ
diff --git a/tests_zemu/snapshots/sp-op-with-muxed-source/00010.png b/tests_zemu/snapshots/sp-op-with-muxed-source/00010.png
index a72ea709..0e027d6f 100644
Binary files a/tests_zemu/snapshots/sp-op-with-muxed-source/00010.png and b/tests_zemu/snapshots/sp-op-with-muxed-source/00010.png differ
diff --git a/tests_zemu/snapshots/sp-op-with-muxed-source/00012.png b/tests_zemu/snapshots/sp-op-with-muxed-source/00012.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-op-with-muxed-source/00012.png and b/tests_zemu/snapshots/sp-op-with-muxed-source/00012.png differ
diff --git a/tests_zemu/snapshots/sp-public-key-approve/00001.png b/tests_zemu/snapshots/sp-public-key-approve/00001.png
index efb147a7..671b365f 100644
Binary files a/tests_zemu/snapshots/sp-public-key-approve/00001.png and b/tests_zemu/snapshots/sp-public-key-approve/00001.png differ
diff --git a/tests_zemu/snapshots/sp-public-key-approve/00002.png b/tests_zemu/snapshots/sp-public-key-approve/00002.png
index 9d9f6dbf..5c056861 100644
Binary files a/tests_zemu/snapshots/sp-public-key-approve/00002.png and b/tests_zemu/snapshots/sp-public-key-approve/00002.png differ
diff --git a/tests_zemu/snapshots/sp-public-key-approve/00004.png b/tests_zemu/snapshots/sp-public-key-approve/00004.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-public-key-approve/00004.png and b/tests_zemu/snapshots/sp-public-key-approve/00004.png differ
diff --git a/tests_zemu/snapshots/sp-public-key-reject/00001.png b/tests_zemu/snapshots/sp-public-key-reject/00001.png
index efb147a7..671b365f 100644
Binary files a/tests_zemu/snapshots/sp-public-key-reject/00001.png and b/tests_zemu/snapshots/sp-public-key-reject/00001.png differ
diff --git a/tests_zemu/snapshots/sp-public-key-reject/00002.png b/tests_zemu/snapshots/sp-public-key-reject/00002.png
index 9d9f6dbf..5c056861 100644
Binary files a/tests_zemu/snapshots/sp-public-key-reject/00002.png and b/tests_zemu/snapshots/sp-public-key-reject/00002.png differ
diff --git a/tests_zemu/snapshots/sp-public-key-reject/00004.png b/tests_zemu/snapshots/sp-public-key-reject/00004.png
index c9222461..e90cd9db 100644
Binary files a/tests_zemu/snapshots/sp-public-key-reject/00004.png and b/tests_zemu/snapshots/sp-public-key-reject/00004.png differ
diff --git a/tests_zemu/snapshots/sp-public-key-reject/00005.png b/tests_zemu/snapshots/sp-public-key-reject/00005.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-public-key-reject/00005.png and b/tests_zemu/snapshots/sp-public-key-reject/00005.png differ
diff --git a/tests_zemu/snapshots/sp-soroban-auth-asset-approve/00000.png b/tests_zemu/snapshots/sp-soroban-auth-asset-approve/00000.png
new file mode 100644
index 00000000..25549343
Binary files /dev/null and b/tests_zemu/snapshots/sp-soroban-auth-asset-approve/00000.png differ
diff --git a/tests_zemu/snapshots/sp-soroban-auth-asset-approve/00001.png b/tests_zemu/snapshots/sp-soroban-auth-asset-approve/00001.png
new file mode 100644
index 00000000..1768be3e
Binary files /dev/null and b/tests_zemu/snapshots/sp-soroban-auth-asset-approve/00001.png differ
diff --git a/tests_zemu/snapshots/sp-soroban-auth-asset-approve/00002.png b/tests_zemu/snapshots/sp-soroban-auth-asset-approve/00002.png
new file mode 100644
index 00000000..31870ac3
Binary files /dev/null and b/tests_zemu/snapshots/sp-soroban-auth-asset-approve/00002.png differ
diff --git a/tests_zemu/snapshots/sp-soroban-auth-asset-approve/00003.png b/tests_zemu/snapshots/sp-soroban-auth-asset-approve/00003.png
new file mode 100644
index 00000000..85a77c8c
Binary files /dev/null and b/tests_zemu/snapshots/sp-soroban-auth-asset-approve/00003.png differ
diff --git a/tests_zemu/snapshots/sp-soroban-auth-asset-approve/00004.png b/tests_zemu/snapshots/sp-soroban-auth-asset-approve/00004.png
new file mode 100644
index 00000000..13952475
Binary files /dev/null and b/tests_zemu/snapshots/sp-soroban-auth-asset-approve/00004.png differ
diff --git a/tests_zemu/snapshots/sp-soroban-auth-asset-approve/00005.png b/tests_zemu/snapshots/sp-soroban-auth-asset-approve/00005.png
new file mode 100644
index 00000000..51c3800e
Binary files /dev/null and b/tests_zemu/snapshots/sp-soroban-auth-asset-approve/00005.png differ
diff --git a/tests_zemu/snapshots/sp-soroban-auth-asset-approve/00006.png b/tests_zemu/snapshots/sp-soroban-auth-asset-approve/00006.png
new file mode 100644
index 00000000..66665edc
Binary files /dev/null and b/tests_zemu/snapshots/sp-soroban-auth-asset-approve/00006.png differ
diff --git a/tests_zemu/snapshots/sp-soroban-auth-asset-approve/00007.png b/tests_zemu/snapshots/sp-soroban-auth-asset-approve/00007.png
new file mode 100644
index 00000000..33f97d5a
Binary files /dev/null and b/tests_zemu/snapshots/sp-soroban-auth-asset-approve/00007.png differ
diff --git a/tests_zemu/snapshots/sp-soroban-auth-asset-approve/00008.png b/tests_zemu/snapshots/sp-soroban-auth-asset-approve/00008.png
new file mode 100644
index 00000000..fea626f5
Binary files /dev/null and b/tests_zemu/snapshots/sp-soroban-auth-asset-approve/00008.png differ
diff --git a/tests_zemu/snapshots/sp-soroban-auth-asset-approve/00009.png b/tests_zemu/snapshots/sp-soroban-auth-asset-approve/00009.png
new file mode 100644
index 00000000..f81b25e3
Binary files /dev/null and b/tests_zemu/snapshots/sp-soroban-auth-asset-approve/00009.png differ
diff --git a/tests_zemu/snapshots/sp-soroban-auth-asset-approve/00010.png b/tests_zemu/snapshots/sp-soroban-auth-asset-approve/00010.png
new file mode 100644
index 00000000..c428a9ef
Binary files /dev/null and b/tests_zemu/snapshots/sp-soroban-auth-asset-approve/00010.png differ
diff --git a/tests_zemu/snapshots/sp-soroban-auth-asset-approve/00011.png b/tests_zemu/snapshots/sp-soroban-auth-asset-approve/00011.png
new file mode 100644
index 00000000..fc3a94d3
Binary files /dev/null and b/tests_zemu/snapshots/sp-soroban-auth-asset-approve/00011.png differ
diff --git a/tests_zemu/snapshots/sp-soroban-auth-asset-approve/00012.png b/tests_zemu/snapshots/sp-soroban-auth-asset-approve/00012.png
new file mode 100644
index 00000000..7bf396f2
Binary files /dev/null and b/tests_zemu/snapshots/sp-soroban-auth-asset-approve/00012.png differ
diff --git a/tests_zemu/snapshots/sp-soroban-auth-asset-approve/00013.png b/tests_zemu/snapshots/sp-soroban-auth-asset-approve/00013.png
new file mode 100644
index 00000000..91ca6d69
Binary files /dev/null and b/tests_zemu/snapshots/sp-soroban-auth-asset-approve/00013.png differ
diff --git a/tests_zemu/snapshots/sp-soroban-auth-asset-approve/00014.png b/tests_zemu/snapshots/sp-soroban-auth-asset-approve/00014.png
new file mode 100644
index 00000000..fb27b648
Binary files /dev/null and b/tests_zemu/snapshots/sp-soroban-auth-asset-approve/00014.png differ
diff --git a/tests_zemu/snapshots/sp-soroban-auth-asset-transfer/00000.png b/tests_zemu/snapshots/sp-soroban-auth-asset-transfer/00000.png
new file mode 100644
index 00000000..25549343
Binary files /dev/null and b/tests_zemu/snapshots/sp-soroban-auth-asset-transfer/00000.png differ
diff --git a/tests_zemu/snapshots/sp-soroban-auth-asset-transfer/00001.png b/tests_zemu/snapshots/sp-soroban-auth-asset-transfer/00001.png
new file mode 100644
index 00000000..11c54779
Binary files /dev/null and b/tests_zemu/snapshots/sp-soroban-auth-asset-transfer/00001.png differ
diff --git a/tests_zemu/snapshots/sp-soroban-auth-asset-transfer/00002.png b/tests_zemu/snapshots/sp-soroban-auth-asset-transfer/00002.png
new file mode 100644
index 00000000..4960ff48
Binary files /dev/null and b/tests_zemu/snapshots/sp-soroban-auth-asset-transfer/00002.png differ
diff --git a/tests_zemu/snapshots/sp-soroban-auth-asset-transfer/00003.png b/tests_zemu/snapshots/sp-soroban-auth-asset-transfer/00003.png
new file mode 100644
index 00000000..24b1a786
Binary files /dev/null and b/tests_zemu/snapshots/sp-soroban-auth-asset-transfer/00003.png differ
diff --git a/tests_zemu/snapshots/sp-soroban-auth-asset-transfer/00004.png b/tests_zemu/snapshots/sp-soroban-auth-asset-transfer/00004.png
new file mode 100644
index 00000000..76410f07
Binary files /dev/null and b/tests_zemu/snapshots/sp-soroban-auth-asset-transfer/00004.png differ
diff --git a/tests_zemu/snapshots/sp-soroban-auth-asset-transfer/00005.png b/tests_zemu/snapshots/sp-soroban-auth-asset-transfer/00005.png
new file mode 100644
index 00000000..51c3800e
Binary files /dev/null and b/tests_zemu/snapshots/sp-soroban-auth-asset-transfer/00005.png differ
diff --git a/tests_zemu/snapshots/sp-soroban-auth-asset-transfer/00006.png b/tests_zemu/snapshots/sp-soroban-auth-asset-transfer/00006.png
new file mode 100644
index 00000000..66665edc
Binary files /dev/null and b/tests_zemu/snapshots/sp-soroban-auth-asset-transfer/00006.png differ
diff --git a/tests_zemu/snapshots/sp-soroban-auth-asset-transfer/00007.png b/tests_zemu/snapshots/sp-soroban-auth-asset-transfer/00007.png
new file mode 100644
index 00000000..21558978
Binary files /dev/null and b/tests_zemu/snapshots/sp-soroban-auth-asset-transfer/00007.png differ
diff --git a/tests_zemu/snapshots/sp-soroban-auth-asset-transfer/00008.png b/tests_zemu/snapshots/sp-soroban-auth-asset-transfer/00008.png
new file mode 100644
index 00000000..f81b25e3
Binary files /dev/null and b/tests_zemu/snapshots/sp-soroban-auth-asset-transfer/00008.png differ
diff --git a/tests_zemu/snapshots/sp-soroban-auth-asset-transfer/00009.png b/tests_zemu/snapshots/sp-soroban-auth-asset-transfer/00009.png
new file mode 100644
index 00000000..c428a9ef
Binary files /dev/null and b/tests_zemu/snapshots/sp-soroban-auth-asset-transfer/00009.png differ
diff --git a/tests_zemu/snapshots/sp-soroban-auth-asset-transfer/00010.png b/tests_zemu/snapshots/sp-soroban-auth-asset-transfer/00010.png
new file mode 100644
index 00000000..4ffc4013
Binary files /dev/null and b/tests_zemu/snapshots/sp-soroban-auth-asset-transfer/00010.png differ
diff --git a/tests_zemu/snapshots/sp-soroban-auth-asset-transfer/00011.png b/tests_zemu/snapshots/sp-soroban-auth-asset-transfer/00011.png
new file mode 100644
index 00000000..33ab9009
Binary files /dev/null and b/tests_zemu/snapshots/sp-soroban-auth-asset-transfer/00011.png differ
diff --git a/tests_zemu/snapshots/sp-soroban-auth-asset-transfer/00012.png b/tests_zemu/snapshots/sp-soroban-auth-asset-transfer/00012.png
new file mode 100644
index 00000000..91ca6d69
Binary files /dev/null and b/tests_zemu/snapshots/sp-soroban-auth-asset-transfer/00012.png differ
diff --git a/tests_zemu/snapshots/sp-soroban-auth-asset-transfer/00013.png b/tests_zemu/snapshots/sp-soroban-auth-asset-transfer/00013.png
new file mode 100644
index 00000000..fb27b648
Binary files /dev/null and b/tests_zemu/snapshots/sp-soroban-auth-asset-transfer/00013.png differ
diff --git a/tests_zemu/snapshots/sp-soroban-auth-create-contract/00000.png b/tests_zemu/snapshots/sp-soroban-auth-create-contract/00000.png
new file mode 100644
index 00000000..25549343
Binary files /dev/null and b/tests_zemu/snapshots/sp-soroban-auth-create-contract/00000.png differ
diff --git a/tests_zemu/snapshots/sp-soroban-auth-create-contract/00001.png b/tests_zemu/snapshots/sp-soroban-auth-create-contract/00001.png
new file mode 100644
index 00000000..68254c16
Binary files /dev/null and b/tests_zemu/snapshots/sp-soroban-auth-create-contract/00001.png differ
diff --git a/tests_zemu/snapshots/sp-soroban-auth-create-contract/00002.png b/tests_zemu/snapshots/sp-soroban-auth-create-contract/00002.png
new file mode 100644
index 00000000..76410f07
Binary files /dev/null and b/tests_zemu/snapshots/sp-soroban-auth-create-contract/00002.png differ
diff --git a/tests_zemu/snapshots/sp-soroban-auth-create-contract/00003.png b/tests_zemu/snapshots/sp-soroban-auth-create-contract/00003.png
new file mode 100644
index 00000000..91ca6d69
Binary files /dev/null and b/tests_zemu/snapshots/sp-soroban-auth-create-contract/00003.png differ
diff --git a/tests_zemu/snapshots/sp-soroban-auth-create-contract/00004.png b/tests_zemu/snapshots/sp-soroban-auth-create-contract/00004.png
new file mode 100644
index 00000000..fb27b648
Binary files /dev/null and b/tests_zemu/snapshots/sp-soroban-auth-create-contract/00004.png differ
diff --git a/tests_zemu/snapshots/sp-soroban-auth-custom-contract/00000.png b/tests_zemu/snapshots/sp-soroban-auth-custom-contract/00000.png
new file mode 100644
index 00000000..25549343
Binary files /dev/null and b/tests_zemu/snapshots/sp-soroban-auth-custom-contract/00000.png differ
diff --git a/tests_zemu/snapshots/sp-soroban-auth-custom-contract/00001.png b/tests_zemu/snapshots/sp-soroban-auth-custom-contract/00001.png
new file mode 100644
index 00000000..11c54779
Binary files /dev/null and b/tests_zemu/snapshots/sp-soroban-auth-custom-contract/00001.png differ
diff --git a/tests_zemu/snapshots/sp-soroban-auth-custom-contract/00002.png b/tests_zemu/snapshots/sp-soroban-auth-custom-contract/00002.png
new file mode 100644
index 00000000..4960ff48
Binary files /dev/null and b/tests_zemu/snapshots/sp-soroban-auth-custom-contract/00002.png differ
diff --git a/tests_zemu/snapshots/sp-soroban-auth-custom-contract/00003.png b/tests_zemu/snapshots/sp-soroban-auth-custom-contract/00003.png
new file mode 100644
index 00000000..24d231ce
Binary files /dev/null and b/tests_zemu/snapshots/sp-soroban-auth-custom-contract/00003.png differ
diff --git a/tests_zemu/snapshots/sp-soroban-auth-custom-contract/00004.png b/tests_zemu/snapshots/sp-soroban-auth-custom-contract/00004.png
new file mode 100644
index 00000000..76410f07
Binary files /dev/null and b/tests_zemu/snapshots/sp-soroban-auth-custom-contract/00004.png differ
diff --git a/tests_zemu/snapshots/sp-soroban-auth-custom-contract/00005.png b/tests_zemu/snapshots/sp-soroban-auth-custom-contract/00005.png
new file mode 100644
index 00000000..cf038fbd
Binary files /dev/null and b/tests_zemu/snapshots/sp-soroban-auth-custom-contract/00005.png differ
diff --git a/tests_zemu/snapshots/sp-soroban-auth-custom-contract/00006.png b/tests_zemu/snapshots/sp-soroban-auth-custom-contract/00006.png
new file mode 100644
index 00000000..62f641e1
Binary files /dev/null and b/tests_zemu/snapshots/sp-soroban-auth-custom-contract/00006.png differ
diff --git a/tests_zemu/snapshots/sp-soroban-auth-custom-contract/00007.png b/tests_zemu/snapshots/sp-soroban-auth-custom-contract/00007.png
new file mode 100644
index 00000000..200c5220
Binary files /dev/null and b/tests_zemu/snapshots/sp-soroban-auth-custom-contract/00007.png differ
diff --git a/tests_zemu/snapshots/sp-soroban-auth-custom-contract/00008.png b/tests_zemu/snapshots/sp-soroban-auth-custom-contract/00008.png
new file mode 100644
index 00000000..86ec1949
Binary files /dev/null and b/tests_zemu/snapshots/sp-soroban-auth-custom-contract/00008.png differ
diff --git a/tests_zemu/snapshots/sp-soroban-auth-custom-contract/00009.png b/tests_zemu/snapshots/sp-soroban-auth-custom-contract/00009.png
new file mode 100644
index 00000000..f4869866
Binary files /dev/null and b/tests_zemu/snapshots/sp-soroban-auth-custom-contract/00009.png differ
diff --git a/tests_zemu/snapshots/sp-soroban-auth-custom-contract/00010.png b/tests_zemu/snapshots/sp-soroban-auth-custom-contract/00010.png
new file mode 100644
index 00000000..91ca6d69
Binary files /dev/null and b/tests_zemu/snapshots/sp-soroban-auth-custom-contract/00010.png differ
diff --git a/tests_zemu/snapshots/sp-soroban-auth-custom-contract/00011.png b/tests_zemu/snapshots/sp-soroban-auth-custom-contract/00011.png
new file mode 100644
index 00000000..fb27b648
Binary files /dev/null and b/tests_zemu/snapshots/sp-soroban-auth-custom-contract/00011.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-one-signer/00001.png b/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-one-signer/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-one-signer/00001.png and b/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-one-signer/00001.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-one-signer/00002.png b/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-one-signer/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-one-signer/00002.png and b/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-one-signer/00002.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-one-signer/00003.png b/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-one-signer/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-one-signer/00003.png and b/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-one-signer/00003.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-one-signer/00004.png b/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-one-signer/00004.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-one-signer/00004.png and b/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-one-signer/00004.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-one-signer/00005.png b/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-one-signer/00005.png
index bae17cff..716253dd 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-one-signer/00005.png and b/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-one-signer/00005.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-one-signer/00006.png b/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-one-signer/00006.png
index 9fc66f1d..21ca90fc 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-one-signer/00006.png and b/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-one-signer/00006.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-one-signer/00007.png b/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-one-signer/00007.png
index 55496b82..cffd5a33 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-one-signer/00007.png and b/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-one-signer/00007.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-one-signer/00008.png b/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-one-signer/00008.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-one-signer/00008.png and b/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-one-signer/00008.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-one-signer/00010.png b/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-one-signer/00010.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-one-signer/00010.png and b/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-one-signer/00010.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-two-signers/00001.png b/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-two-signers/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-two-signers/00001.png and b/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-two-signers/00001.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-two-signers/00002.png b/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-two-signers/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-two-signers/00002.png and b/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-two-signers/00002.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-two-signers/00003.png b/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-two-signers/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-two-signers/00003.png and b/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-two-signers/00003.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-two-signers/00004.png b/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-two-signers/00004.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-two-signers/00004.png and b/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-two-signers/00004.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-two-signers/00005.png b/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-two-signers/00005.png
index bae17cff..716253dd 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-two-signers/00005.png and b/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-two-signers/00005.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-two-signers/00006.png b/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-two-signers/00006.png
index 9fc66f1d..21ca90fc 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-two-signers/00006.png and b/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-two-signers/00006.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-two-signers/00007.png b/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-two-signers/00007.png
index 55496b82..cffd5a33 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-two-signers/00007.png and b/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-two-signers/00007.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-two-signers/00008.png b/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-two-signers/00008.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-two-signers/00008.png and b/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-two-signers/00008.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-two-signers/00010.png b/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-two-signers/00010.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-two-signers/00010.png and b/tests_zemu/snapshots/sp-tx-cond-extra-signers-with-two-signers/00010.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-is-none/00001.png b/tests_zemu/snapshots/sp-tx-cond-is-none/00001.png
index 3b4f6621..552a295a 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-is-none/00001.png and b/tests_zemu/snapshots/sp-tx-cond-is-none/00001.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-is-none/00002.png b/tests_zemu/snapshots/sp-tx-cond-is-none/00002.png
index 2f40c037..3d4b9dfa 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-is-none/00002.png and b/tests_zemu/snapshots/sp-tx-cond-is-none/00002.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-is-none/00003.png b/tests_zemu/snapshots/sp-tx-cond-is-none/00003.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-is-none/00003.png and b/tests_zemu/snapshots/sp-tx-cond-is-none/00003.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-is-none/00004.png b/tests_zemu/snapshots/sp-tx-cond-is-none/00004.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-is-none/00004.png and b/tests_zemu/snapshots/sp-tx-cond-is-none/00004.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-is-none/00005.png b/tests_zemu/snapshots/sp-tx-cond-is-none/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-is-none/00005.png and b/tests_zemu/snapshots/sp-tx-cond-is-none/00005.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-is-none/00006.png b/tests_zemu/snapshots/sp-tx-cond-is-none/00006.png
index bae17cff..716253dd 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-is-none/00006.png and b/tests_zemu/snapshots/sp-tx-cond-is-none/00006.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-is-none/00007.png b/tests_zemu/snapshots/sp-tx-cond-is-none/00007.png
index 9fc66f1d..21ca90fc 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-is-none/00007.png and b/tests_zemu/snapshots/sp-tx-cond-is-none/00007.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-is-none/00008.png b/tests_zemu/snapshots/sp-tx-cond-is-none/00008.png
index 55496b82..cffd5a33 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-is-none/00008.png and b/tests_zemu/snapshots/sp-tx-cond-is-none/00008.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-is-none/00009.png b/tests_zemu/snapshots/sp-tx-cond-is-none/00009.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-is-none/00009.png and b/tests_zemu/snapshots/sp-tx-cond-is-none/00009.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-is-none/00011.png b/tests_zemu/snapshots/sp-tx-cond-is-none/00011.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-is-none/00011.png and b/tests_zemu/snapshots/sp-tx-cond-is-none/00011.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-are-zero/00001.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-are-zero/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-are-zero/00001.png and b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-are-zero/00001.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-are-zero/00002.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-are-zero/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-are-zero/00002.png and b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-are-zero/00002.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-are-zero/00003.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-are-zero/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-are-zero/00003.png and b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-are-zero/00003.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-are-zero/00004.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-are-zero/00004.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-are-zero/00004.png and b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-are-zero/00004.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-are-zero/00005.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-are-zero/00005.png
index bae17cff..716253dd 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-are-zero/00005.png and b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-are-zero/00005.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-are-zero/00006.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-are-zero/00006.png
index 9fc66f1d..21ca90fc 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-are-zero/00006.png and b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-are-zero/00006.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-are-zero/00007.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-are-zero/00007.png
index 55496b82..cffd5a33 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-are-zero/00007.png and b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-are-zero/00007.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-are-zero/00008.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-are-zero/00008.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-are-zero/00008.png and b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-are-zero/00008.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-are-zero/00010.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-are-zero/00010.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-are-zero/00010.png and b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-are-zero/00010.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00001.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00001.png and b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00001.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00002.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00002.png and b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00002.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00003.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00003.png and b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00003.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00004.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00004.png
index 749f55f1..312fd9ce 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00004.png and b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00004.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00005.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00005.png and b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00005.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00006.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00006.png
index bae17cff..716253dd 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00006.png and b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00006.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00007.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00007.png
index 9fc66f1d..21ca90fc 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00007.png and b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00007.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00008.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00008.png
index 55496b82..cffd5a33 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00008.png and b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00008.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00009.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00009.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00009.png and b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00009.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00011.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00011.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00011.png and b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-max-is-zero/00011.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00001.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00001.png and b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00001.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00002.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00002.png and b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00002.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00003.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00003.png and b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00003.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00004.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00004.png
index 1c1d9d2a..c776ed20 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00004.png and b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00004.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00005.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00005.png and b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00005.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00006.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00006.png
index bae17cff..716253dd 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00006.png and b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00006.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00007.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00007.png
index 9fc66f1d..21ca90fc 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00007.png and b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00007.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00008.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00008.png
index 55496b82..cffd5a33 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00008.png and b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00008.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00009.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00009.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00009.png and b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00009.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00011.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00011.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00011.png and b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds-min-is-zero/00011.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00001.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00001.png and b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00001.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00002.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00002.png and b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00002.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00003.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00003.png and b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00003.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00004.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00004.png
index 749f55f1..312fd9ce 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00004.png and b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00004.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00005.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00005.png
index 1c1d9d2a..c776ed20 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00005.png and b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00005.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00006.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00006.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00006.png and b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00006.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00007.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00007.png
index bae17cff..716253dd 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00007.png and b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00007.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00008.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00008.png
index 9fc66f1d..21ca90fc 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00008.png and b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00008.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00009.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00009.png
index 55496b82..cffd5a33 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00009.png and b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00009.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00010.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00010.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00010.png and b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00010.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00012.png b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00012.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00012.png and b/tests_zemu/snapshots/sp-tx-cond-ledger-bounds/00012.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00001.png b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00001.png and b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00001.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00002.png b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00002.png and b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00002.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00003.png b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00003.png and b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00003.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00004.png b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00004.png
index 9d363a86..08155608 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00004.png and b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00004.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00005.png b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00005.png and b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00005.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00006.png b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00006.png
index bae17cff..716253dd 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00006.png and b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00006.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00007.png b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00007.png
index 9fc66f1d..21ca90fc 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00007.png and b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00007.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00008.png b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00008.png
index 55496b82..cffd5a33 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00008.png and b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00008.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00009.png b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00009.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00009.png and b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00009.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00011.png b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00011.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00011.png and b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-age/00011.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00001.png b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00001.png and b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00001.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00002.png b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00002.png and b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00002.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00003.png b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00003.png and b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00003.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00004.png b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00004.png
index ad30db8e..4c60fd17 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00004.png and b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00004.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00005.png b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00005.png and b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00005.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00006.png b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00006.png
index bae17cff..716253dd 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00006.png and b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00006.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00007.png b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00007.png
index 9fc66f1d..21ca90fc 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00007.png and b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00007.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00008.png b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00008.png
index 55496b82..cffd5a33 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00008.png and b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00008.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00009.png b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00009.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00009.png and b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00009.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00011.png b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00011.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00011.png and b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence-ledger-gap/00011.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00001.png b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00001.png and b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00001.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00002.png b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00002.png and b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00002.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00003.png b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00003.png and b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00003.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00004.png b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00004.png
index 693ad27f..2c2bbfe4 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00004.png and b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00004.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00005.png b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00005.png and b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00005.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00006.png b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00006.png
index bae17cff..716253dd 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00006.png and b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00006.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00007.png b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00007.png
index 9fc66f1d..21ca90fc 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00007.png and b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00007.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00008.png b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00008.png
index 55496b82..cffd5a33 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00008.png and b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00008.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00009.png b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00009.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00009.png and b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00009.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00011.png b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00011.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00011.png and b/tests_zemu/snapshots/sp-tx-cond-min-account-sequence/00011.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-are-zero/00001.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-are-zero/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-time-bounds-are-zero/00001.png and b/tests_zemu/snapshots/sp-tx-cond-time-bounds-are-zero/00001.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-are-zero/00002.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-are-zero/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-time-bounds-are-zero/00002.png and b/tests_zemu/snapshots/sp-tx-cond-time-bounds-are-zero/00002.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-are-zero/00003.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-are-zero/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-time-bounds-are-zero/00003.png and b/tests_zemu/snapshots/sp-tx-cond-time-bounds-are-zero/00003.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-are-zero/00004.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-are-zero/00004.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-time-bounds-are-zero/00004.png and b/tests_zemu/snapshots/sp-tx-cond-time-bounds-are-zero/00004.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-are-zero/00005.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-are-zero/00005.png
index bae17cff..716253dd 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-time-bounds-are-zero/00005.png and b/tests_zemu/snapshots/sp-tx-cond-time-bounds-are-zero/00005.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-are-zero/00006.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-are-zero/00006.png
index 9fc66f1d..21ca90fc 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-time-bounds-are-zero/00006.png and b/tests_zemu/snapshots/sp-tx-cond-time-bounds-are-zero/00006.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-are-zero/00007.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-are-zero/00007.png
index 55496b82..cffd5a33 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-time-bounds-are-zero/00007.png and b/tests_zemu/snapshots/sp-tx-cond-time-bounds-are-zero/00007.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-are-zero/00008.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-are-zero/00008.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-time-bounds-are-zero/00008.png and b/tests_zemu/snapshots/sp-tx-cond-time-bounds-are-zero/00008.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-are-zero/00010.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-are-zero/00010.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-time-bounds-are-zero/00010.png and b/tests_zemu/snapshots/sp-tx-cond-time-bounds-are-zero/00010.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00001.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00001.png
index 3b4f6621..552a295a 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00001.png and b/tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00001.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00002.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00002.png
index 2f40c037..3d4b9dfa 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00002.png and b/tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00002.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00003.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00003.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00003.png and b/tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00003.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00004.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00004.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00004.png and b/tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00004.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00005.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00005.png
index 749f55f1..312fd9ce 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00005.png and b/tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00005.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00006.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00006.png
index 1c1d9d2a..c776ed20 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00006.png and b/tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00006.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00007.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00007.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00007.png and b/tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00007.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00008.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00008.png
index bae17cff..716253dd 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00008.png and b/tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00008.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00009.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00009.png
index 9fc66f1d..21ca90fc 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00009.png and b/tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00009.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00010.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00010.png
index 55496b82..cffd5a33 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00010.png and b/tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00010.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00011.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00011.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00011.png and b/tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00011.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00013.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00013.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00013.png and b/tests_zemu/snapshots/sp-tx-cond-time-bounds-is-none/00013.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-max-is-zero/00001.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-max-is-zero/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-time-bounds-max-is-zero/00001.png and b/tests_zemu/snapshots/sp-tx-cond-time-bounds-max-is-zero/00001.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-max-is-zero/00002.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-max-is-zero/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-time-bounds-max-is-zero/00002.png and b/tests_zemu/snapshots/sp-tx-cond-time-bounds-max-is-zero/00002.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-max-is-zero/00003.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-max-is-zero/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-time-bounds-max-is-zero/00003.png and b/tests_zemu/snapshots/sp-tx-cond-time-bounds-max-is-zero/00003.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-max-is-zero/00005.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-max-is-zero/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-time-bounds-max-is-zero/00005.png and b/tests_zemu/snapshots/sp-tx-cond-time-bounds-max-is-zero/00005.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-max-is-zero/00006.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-max-is-zero/00006.png
index bae17cff..716253dd 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-time-bounds-max-is-zero/00006.png and b/tests_zemu/snapshots/sp-tx-cond-time-bounds-max-is-zero/00006.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-max-is-zero/00007.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-max-is-zero/00007.png
index 9fc66f1d..21ca90fc 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-time-bounds-max-is-zero/00007.png and b/tests_zemu/snapshots/sp-tx-cond-time-bounds-max-is-zero/00007.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-max-is-zero/00008.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-max-is-zero/00008.png
index 55496b82..cffd5a33 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-time-bounds-max-is-zero/00008.png and b/tests_zemu/snapshots/sp-tx-cond-time-bounds-max-is-zero/00008.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-max-is-zero/00009.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-max-is-zero/00009.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-time-bounds-max-is-zero/00009.png and b/tests_zemu/snapshots/sp-tx-cond-time-bounds-max-is-zero/00009.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-max-is-zero/00011.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-max-is-zero/00011.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-time-bounds-max-is-zero/00011.png and b/tests_zemu/snapshots/sp-tx-cond-time-bounds-max-is-zero/00011.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-min-is-zero/00001.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-min-is-zero/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-time-bounds-min-is-zero/00001.png and b/tests_zemu/snapshots/sp-tx-cond-time-bounds-min-is-zero/00001.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-min-is-zero/00002.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-min-is-zero/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-time-bounds-min-is-zero/00002.png and b/tests_zemu/snapshots/sp-tx-cond-time-bounds-min-is-zero/00002.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-min-is-zero/00003.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-min-is-zero/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-time-bounds-min-is-zero/00003.png and b/tests_zemu/snapshots/sp-tx-cond-time-bounds-min-is-zero/00003.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-min-is-zero/00005.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-min-is-zero/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-time-bounds-min-is-zero/00005.png and b/tests_zemu/snapshots/sp-tx-cond-time-bounds-min-is-zero/00005.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-min-is-zero/00006.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-min-is-zero/00006.png
index bae17cff..716253dd 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-time-bounds-min-is-zero/00006.png and b/tests_zemu/snapshots/sp-tx-cond-time-bounds-min-is-zero/00006.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-min-is-zero/00007.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-min-is-zero/00007.png
index 9fc66f1d..21ca90fc 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-time-bounds-min-is-zero/00007.png and b/tests_zemu/snapshots/sp-tx-cond-time-bounds-min-is-zero/00007.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-min-is-zero/00008.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-min-is-zero/00008.png
index 55496b82..cffd5a33 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-time-bounds-min-is-zero/00008.png and b/tests_zemu/snapshots/sp-tx-cond-time-bounds-min-is-zero/00008.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-min-is-zero/00009.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-min-is-zero/00009.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-time-bounds-min-is-zero/00009.png and b/tests_zemu/snapshots/sp-tx-cond-time-bounds-min-is-zero/00009.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds-min-is-zero/00011.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds-min-is-zero/00011.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-time-bounds-min-is-zero/00011.png and b/tests_zemu/snapshots/sp-tx-cond-time-bounds-min-is-zero/00011.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds/00001.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-time-bounds/00001.png and b/tests_zemu/snapshots/sp-tx-cond-time-bounds/00001.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds/00002.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-time-bounds/00002.png and b/tests_zemu/snapshots/sp-tx-cond-time-bounds/00002.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds/00003.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-time-bounds/00003.png and b/tests_zemu/snapshots/sp-tx-cond-time-bounds/00003.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds/00006.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds/00006.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-time-bounds/00006.png and b/tests_zemu/snapshots/sp-tx-cond-time-bounds/00006.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds/00007.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds/00007.png
index bae17cff..716253dd 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-time-bounds/00007.png and b/tests_zemu/snapshots/sp-tx-cond-time-bounds/00007.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds/00008.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds/00008.png
index 9fc66f1d..21ca90fc 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-time-bounds/00008.png and b/tests_zemu/snapshots/sp-tx-cond-time-bounds/00008.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds/00009.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds/00009.png
index 55496b82..cffd5a33 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-time-bounds/00009.png and b/tests_zemu/snapshots/sp-tx-cond-time-bounds/00009.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds/00010.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds/00010.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-time-bounds/00010.png and b/tests_zemu/snapshots/sp-tx-cond-time-bounds/00010.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-time-bounds/00012.png b/tests_zemu/snapshots/sp-tx-cond-time-bounds/00012.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-time-bounds/00012.png and b/tests_zemu/snapshots/sp-tx-cond-time-bounds/00012.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-with-all-items/00001.png b/tests_zemu/snapshots/sp-tx-cond-with-all-items/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-with-all-items/00001.png and b/tests_zemu/snapshots/sp-tx-cond-with-all-items/00001.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-with-all-items/00002.png b/tests_zemu/snapshots/sp-tx-cond-with-all-items/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-with-all-items/00002.png and b/tests_zemu/snapshots/sp-tx-cond-with-all-items/00002.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-with-all-items/00003.png b/tests_zemu/snapshots/sp-tx-cond-with-all-items/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-with-all-items/00003.png and b/tests_zemu/snapshots/sp-tx-cond-with-all-items/00003.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-with-all-items/00006.png b/tests_zemu/snapshots/sp-tx-cond-with-all-items/00006.png
index 749f55f1..312fd9ce 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-with-all-items/00006.png and b/tests_zemu/snapshots/sp-tx-cond-with-all-items/00006.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-with-all-items/00007.png b/tests_zemu/snapshots/sp-tx-cond-with-all-items/00007.png
index 1c1d9d2a..c776ed20 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-with-all-items/00007.png and b/tests_zemu/snapshots/sp-tx-cond-with-all-items/00007.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-with-all-items/00008.png b/tests_zemu/snapshots/sp-tx-cond-with-all-items/00008.png
index 693ad27f..2c2bbfe4 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-with-all-items/00008.png and b/tests_zemu/snapshots/sp-tx-cond-with-all-items/00008.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-with-all-items/00009.png b/tests_zemu/snapshots/sp-tx-cond-with-all-items/00009.png
index 9d363a86..08155608 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-with-all-items/00009.png and b/tests_zemu/snapshots/sp-tx-cond-with-all-items/00009.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-with-all-items/00010.png b/tests_zemu/snapshots/sp-tx-cond-with-all-items/00010.png
index ad30db8e..4c60fd17 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-with-all-items/00010.png and b/tests_zemu/snapshots/sp-tx-cond-with-all-items/00010.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-with-all-items/00011.png b/tests_zemu/snapshots/sp-tx-cond-with-all-items/00011.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-with-all-items/00011.png and b/tests_zemu/snapshots/sp-tx-cond-with-all-items/00011.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-with-all-items/00012.png b/tests_zemu/snapshots/sp-tx-cond-with-all-items/00012.png
index bae17cff..716253dd 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-with-all-items/00012.png and b/tests_zemu/snapshots/sp-tx-cond-with-all-items/00012.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-with-all-items/00013.png b/tests_zemu/snapshots/sp-tx-cond-with-all-items/00013.png
index 9fc66f1d..21ca90fc 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-with-all-items/00013.png and b/tests_zemu/snapshots/sp-tx-cond-with-all-items/00013.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-with-all-items/00014.png b/tests_zemu/snapshots/sp-tx-cond-with-all-items/00014.png
index 55496b82..cffd5a33 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-with-all-items/00014.png and b/tests_zemu/snapshots/sp-tx-cond-with-all-items/00014.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-with-all-items/00015.png b/tests_zemu/snapshots/sp-tx-cond-with-all-items/00015.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-with-all-items/00015.png and b/tests_zemu/snapshots/sp-tx-cond-with-all-items/00015.png differ
diff --git a/tests_zemu/snapshots/sp-tx-cond-with-all-items/00017.png b/tests_zemu/snapshots/sp-tx-cond-with-all-items/00017.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-tx-cond-with-all-items/00017.png and b/tests_zemu/snapshots/sp-tx-cond-with-all-items/00017.png differ
diff --git a/tests_zemu/snapshots/sp-tx-custom-base-fee/00001.png b/tests_zemu/snapshots/sp-tx-custom-base-fee/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-tx-custom-base-fee/00001.png and b/tests_zemu/snapshots/sp-tx-custom-base-fee/00001.png differ
diff --git a/tests_zemu/snapshots/sp-tx-custom-base-fee/00002.png b/tests_zemu/snapshots/sp-tx-custom-base-fee/00002.png
index ca567cf5..8041a598 100644
Binary files a/tests_zemu/snapshots/sp-tx-custom-base-fee/00002.png and b/tests_zemu/snapshots/sp-tx-custom-base-fee/00002.png differ
diff --git a/tests_zemu/snapshots/sp-tx-custom-base-fee/00003.png b/tests_zemu/snapshots/sp-tx-custom-base-fee/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-tx-custom-base-fee/00003.png and b/tests_zemu/snapshots/sp-tx-custom-base-fee/00003.png differ
diff --git a/tests_zemu/snapshots/sp-tx-custom-base-fee/00005.png b/tests_zemu/snapshots/sp-tx-custom-base-fee/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-tx-custom-base-fee/00005.png and b/tests_zemu/snapshots/sp-tx-custom-base-fee/00005.png differ
diff --git a/tests_zemu/snapshots/sp-tx-custom-base-fee/00007.png b/tests_zemu/snapshots/sp-tx-custom-base-fee/00007.png
index bae17cff..716253dd 100644
Binary files a/tests_zemu/snapshots/sp-tx-custom-base-fee/00007.png and b/tests_zemu/snapshots/sp-tx-custom-base-fee/00007.png differ
diff --git a/tests_zemu/snapshots/sp-tx-custom-base-fee/00008.png b/tests_zemu/snapshots/sp-tx-custom-base-fee/00008.png
index 9fc66f1d..21ca90fc 100644
Binary files a/tests_zemu/snapshots/sp-tx-custom-base-fee/00008.png and b/tests_zemu/snapshots/sp-tx-custom-base-fee/00008.png differ
diff --git a/tests_zemu/snapshots/sp-tx-custom-base-fee/00009.png b/tests_zemu/snapshots/sp-tx-custom-base-fee/00009.png
index 55496b82..cffd5a33 100644
Binary files a/tests_zemu/snapshots/sp-tx-custom-base-fee/00009.png and b/tests_zemu/snapshots/sp-tx-custom-base-fee/00009.png differ
diff --git a/tests_zemu/snapshots/sp-tx-custom-base-fee/00010.png b/tests_zemu/snapshots/sp-tx-custom-base-fee/00010.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-tx-custom-base-fee/00010.png and b/tests_zemu/snapshots/sp-tx-custom-base-fee/00010.png differ
diff --git a/tests_zemu/snapshots/sp-tx-custom-base-fee/00012.png b/tests_zemu/snapshots/sp-tx-custom-base-fee/00012.png
index bae17cff..716253dd 100644
Binary files a/tests_zemu/snapshots/sp-tx-custom-base-fee/00012.png and b/tests_zemu/snapshots/sp-tx-custom-base-fee/00012.png differ
diff --git a/tests_zemu/snapshots/sp-tx-custom-base-fee/00013.png b/tests_zemu/snapshots/sp-tx-custom-base-fee/00013.png
index 349bce7a..40df6355 100644
Binary files a/tests_zemu/snapshots/sp-tx-custom-base-fee/00013.png and b/tests_zemu/snapshots/sp-tx-custom-base-fee/00013.png differ
diff --git a/tests_zemu/snapshots/sp-tx-custom-base-fee/00014.png b/tests_zemu/snapshots/sp-tx-custom-base-fee/00014.png
index a19cd2a9..e8214054 100644
Binary files a/tests_zemu/snapshots/sp-tx-custom-base-fee/00014.png and b/tests_zemu/snapshots/sp-tx-custom-base-fee/00014.png differ
diff --git a/tests_zemu/snapshots/sp-tx-custom-base-fee/00015.png b/tests_zemu/snapshots/sp-tx-custom-base-fee/00015.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-tx-custom-base-fee/00015.png and b/tests_zemu/snapshots/sp-tx-custom-base-fee/00015.png differ
diff --git a/tests_zemu/snapshots/sp-tx-custom-base-fee/00017.png b/tests_zemu/snapshots/sp-tx-custom-base-fee/00017.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-tx-custom-base-fee/00017.png and b/tests_zemu/snapshots/sp-tx-custom-base-fee/00017.png differ
diff --git a/tests_zemu/snapshots/sp-tx-hide-sequence/00001.png b/tests_zemu/snapshots/sp-tx-hide-sequence/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-tx-hide-sequence/00001.png and b/tests_zemu/snapshots/sp-tx-hide-sequence/00001.png differ
diff --git a/tests_zemu/snapshots/sp-tx-hide-sequence/00002.png b/tests_zemu/snapshots/sp-tx-hide-sequence/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-tx-hide-sequence/00002.png and b/tests_zemu/snapshots/sp-tx-hide-sequence/00002.png differ
diff --git a/tests_zemu/snapshots/sp-tx-hide-sequence/00004.png b/tests_zemu/snapshots/sp-tx-hide-sequence/00004.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-tx-hide-sequence/00004.png and b/tests_zemu/snapshots/sp-tx-hide-sequence/00004.png differ
diff --git a/tests_zemu/snapshots/sp-tx-hide-sequence/00006.png b/tests_zemu/snapshots/sp-tx-hide-sequence/00006.png
index 1571c9b3..5a7ffae2 100644
Binary files a/tests_zemu/snapshots/sp-tx-hide-sequence/00006.png and b/tests_zemu/snapshots/sp-tx-hide-sequence/00006.png differ
diff --git a/tests_zemu/snapshots/sp-tx-hide-sequence/00007.png b/tests_zemu/snapshots/sp-tx-hide-sequence/00007.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-tx-hide-sequence/00007.png and b/tests_zemu/snapshots/sp-tx-hide-sequence/00007.png differ
diff --git a/tests_zemu/snapshots/sp-tx-hide-sequence/00009.png b/tests_zemu/snapshots/sp-tx-hide-sequence/00009.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-tx-hide-sequence/00009.png and b/tests_zemu/snapshots/sp-tx-hide-sequence/00009.png differ
diff --git a/tests_zemu/snapshots/sp-tx-memo-hash/00001.png b/tests_zemu/snapshots/sp-tx-memo-hash/00001.png
index b7d5d01d..7807e491 100644
Binary files a/tests_zemu/snapshots/sp-tx-memo-hash/00001.png and b/tests_zemu/snapshots/sp-tx-memo-hash/00001.png differ
diff --git a/tests_zemu/snapshots/sp-tx-memo-hash/00002.png b/tests_zemu/snapshots/sp-tx-memo-hash/00002.png
index 50e58d3e..67e4a3fc 100644
Binary files a/tests_zemu/snapshots/sp-tx-memo-hash/00002.png and b/tests_zemu/snapshots/sp-tx-memo-hash/00002.png differ
diff --git a/tests_zemu/snapshots/sp-tx-memo-hash/00003.png b/tests_zemu/snapshots/sp-tx-memo-hash/00003.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-tx-memo-hash/00003.png and b/tests_zemu/snapshots/sp-tx-memo-hash/00003.png differ
diff --git a/tests_zemu/snapshots/sp-tx-memo-hash/00004.png b/tests_zemu/snapshots/sp-tx-memo-hash/00004.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-tx-memo-hash/00004.png and b/tests_zemu/snapshots/sp-tx-memo-hash/00004.png differ
diff --git a/tests_zemu/snapshots/sp-tx-memo-hash/00006.png b/tests_zemu/snapshots/sp-tx-memo-hash/00006.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-tx-memo-hash/00006.png and b/tests_zemu/snapshots/sp-tx-memo-hash/00006.png differ
diff --git a/tests_zemu/snapshots/sp-tx-memo-hash/00007.png b/tests_zemu/snapshots/sp-tx-memo-hash/00007.png
index bae17cff..716253dd 100644
Binary files a/tests_zemu/snapshots/sp-tx-memo-hash/00007.png and b/tests_zemu/snapshots/sp-tx-memo-hash/00007.png differ
diff --git a/tests_zemu/snapshots/sp-tx-memo-hash/00008.png b/tests_zemu/snapshots/sp-tx-memo-hash/00008.png
index 9fc66f1d..21ca90fc 100644
Binary files a/tests_zemu/snapshots/sp-tx-memo-hash/00008.png and b/tests_zemu/snapshots/sp-tx-memo-hash/00008.png differ
diff --git a/tests_zemu/snapshots/sp-tx-memo-hash/00009.png b/tests_zemu/snapshots/sp-tx-memo-hash/00009.png
index 55496b82..cffd5a33 100644
Binary files a/tests_zemu/snapshots/sp-tx-memo-hash/00009.png and b/tests_zemu/snapshots/sp-tx-memo-hash/00009.png differ
diff --git a/tests_zemu/snapshots/sp-tx-memo-hash/00010.png b/tests_zemu/snapshots/sp-tx-memo-hash/00010.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-tx-memo-hash/00010.png and b/tests_zemu/snapshots/sp-tx-memo-hash/00010.png differ
diff --git a/tests_zemu/snapshots/sp-tx-memo-hash/00012.png b/tests_zemu/snapshots/sp-tx-memo-hash/00012.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-tx-memo-hash/00012.png and b/tests_zemu/snapshots/sp-tx-memo-hash/00012.png differ
diff --git a/tests_zemu/snapshots/sp-tx-memo-id/00001.png b/tests_zemu/snapshots/sp-tx-memo-id/00001.png
index 95152b0f..8daeba9a 100644
Binary files a/tests_zemu/snapshots/sp-tx-memo-id/00001.png and b/tests_zemu/snapshots/sp-tx-memo-id/00001.png differ
diff --git a/tests_zemu/snapshots/sp-tx-memo-id/00002.png b/tests_zemu/snapshots/sp-tx-memo-id/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-tx-memo-id/00002.png and b/tests_zemu/snapshots/sp-tx-memo-id/00002.png differ
diff --git a/tests_zemu/snapshots/sp-tx-memo-id/00003.png b/tests_zemu/snapshots/sp-tx-memo-id/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-tx-memo-id/00003.png and b/tests_zemu/snapshots/sp-tx-memo-id/00003.png differ
diff --git a/tests_zemu/snapshots/sp-tx-memo-id/00005.png b/tests_zemu/snapshots/sp-tx-memo-id/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-tx-memo-id/00005.png and b/tests_zemu/snapshots/sp-tx-memo-id/00005.png differ
diff --git a/tests_zemu/snapshots/sp-tx-memo-id/00006.png b/tests_zemu/snapshots/sp-tx-memo-id/00006.png
index bae17cff..716253dd 100644
Binary files a/tests_zemu/snapshots/sp-tx-memo-id/00006.png and b/tests_zemu/snapshots/sp-tx-memo-id/00006.png differ
diff --git a/tests_zemu/snapshots/sp-tx-memo-id/00007.png b/tests_zemu/snapshots/sp-tx-memo-id/00007.png
index 9fc66f1d..21ca90fc 100644
Binary files a/tests_zemu/snapshots/sp-tx-memo-id/00007.png and b/tests_zemu/snapshots/sp-tx-memo-id/00007.png differ
diff --git a/tests_zemu/snapshots/sp-tx-memo-id/00008.png b/tests_zemu/snapshots/sp-tx-memo-id/00008.png
index 55496b82..cffd5a33 100644
Binary files a/tests_zemu/snapshots/sp-tx-memo-id/00008.png and b/tests_zemu/snapshots/sp-tx-memo-id/00008.png differ
diff --git a/tests_zemu/snapshots/sp-tx-memo-id/00009.png b/tests_zemu/snapshots/sp-tx-memo-id/00009.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-tx-memo-id/00009.png and b/tests_zemu/snapshots/sp-tx-memo-id/00009.png differ
diff --git a/tests_zemu/snapshots/sp-tx-memo-id/00011.png b/tests_zemu/snapshots/sp-tx-memo-id/00011.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-tx-memo-id/00011.png and b/tests_zemu/snapshots/sp-tx-memo-id/00011.png differ
diff --git a/tests_zemu/snapshots/sp-tx-memo-none/00001.png b/tests_zemu/snapshots/sp-tx-memo-none/00001.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-tx-memo-none/00001.png and b/tests_zemu/snapshots/sp-tx-memo-none/00001.png differ
diff --git a/tests_zemu/snapshots/sp-tx-memo-none/00002.png b/tests_zemu/snapshots/sp-tx-memo-none/00002.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-tx-memo-none/00002.png and b/tests_zemu/snapshots/sp-tx-memo-none/00002.png differ
diff --git a/tests_zemu/snapshots/sp-tx-memo-none/00004.png b/tests_zemu/snapshots/sp-tx-memo-none/00004.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-tx-memo-none/00004.png and b/tests_zemu/snapshots/sp-tx-memo-none/00004.png differ
diff --git a/tests_zemu/snapshots/sp-tx-memo-none/00005.png b/tests_zemu/snapshots/sp-tx-memo-none/00005.png
index bae17cff..716253dd 100644
Binary files a/tests_zemu/snapshots/sp-tx-memo-none/00005.png and b/tests_zemu/snapshots/sp-tx-memo-none/00005.png differ
diff --git a/tests_zemu/snapshots/sp-tx-memo-none/00006.png b/tests_zemu/snapshots/sp-tx-memo-none/00006.png
index 9fc66f1d..21ca90fc 100644
Binary files a/tests_zemu/snapshots/sp-tx-memo-none/00006.png and b/tests_zemu/snapshots/sp-tx-memo-none/00006.png differ
diff --git a/tests_zemu/snapshots/sp-tx-memo-none/00007.png b/tests_zemu/snapshots/sp-tx-memo-none/00007.png
index 55496b82..cffd5a33 100644
Binary files a/tests_zemu/snapshots/sp-tx-memo-none/00007.png and b/tests_zemu/snapshots/sp-tx-memo-none/00007.png differ
diff --git a/tests_zemu/snapshots/sp-tx-memo-none/00008.png b/tests_zemu/snapshots/sp-tx-memo-none/00008.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-tx-memo-none/00008.png and b/tests_zemu/snapshots/sp-tx-memo-none/00008.png differ
diff --git a/tests_zemu/snapshots/sp-tx-memo-none/00010.png b/tests_zemu/snapshots/sp-tx-memo-none/00010.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-tx-memo-none/00010.png and b/tests_zemu/snapshots/sp-tx-memo-none/00010.png differ
diff --git a/tests_zemu/snapshots/sp-tx-memo-return-hash/00001.png b/tests_zemu/snapshots/sp-tx-memo-return-hash/00001.png
index 3b4f6621..552a295a 100644
Binary files a/tests_zemu/snapshots/sp-tx-memo-return-hash/00001.png and b/tests_zemu/snapshots/sp-tx-memo-return-hash/00001.png differ
diff --git a/tests_zemu/snapshots/sp-tx-memo-return-hash/00002.png b/tests_zemu/snapshots/sp-tx-memo-return-hash/00002.png
index 2f40c037..3d4b9dfa 100644
Binary files a/tests_zemu/snapshots/sp-tx-memo-return-hash/00002.png and b/tests_zemu/snapshots/sp-tx-memo-return-hash/00002.png differ
diff --git a/tests_zemu/snapshots/sp-tx-memo-return-hash/00003.png b/tests_zemu/snapshots/sp-tx-memo-return-hash/00003.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-tx-memo-return-hash/00003.png and b/tests_zemu/snapshots/sp-tx-memo-return-hash/00003.png differ
diff --git a/tests_zemu/snapshots/sp-tx-memo-return-hash/00004.png b/tests_zemu/snapshots/sp-tx-memo-return-hash/00004.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-tx-memo-return-hash/00004.png and b/tests_zemu/snapshots/sp-tx-memo-return-hash/00004.png differ
diff --git a/tests_zemu/snapshots/sp-tx-memo-return-hash/00006.png b/tests_zemu/snapshots/sp-tx-memo-return-hash/00006.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-tx-memo-return-hash/00006.png and b/tests_zemu/snapshots/sp-tx-memo-return-hash/00006.png differ
diff --git a/tests_zemu/snapshots/sp-tx-memo-return-hash/00007.png b/tests_zemu/snapshots/sp-tx-memo-return-hash/00007.png
index bae17cff..716253dd 100644
Binary files a/tests_zemu/snapshots/sp-tx-memo-return-hash/00007.png and b/tests_zemu/snapshots/sp-tx-memo-return-hash/00007.png differ
diff --git a/tests_zemu/snapshots/sp-tx-memo-return-hash/00008.png b/tests_zemu/snapshots/sp-tx-memo-return-hash/00008.png
index 9fc66f1d..21ca90fc 100644
Binary files a/tests_zemu/snapshots/sp-tx-memo-return-hash/00008.png and b/tests_zemu/snapshots/sp-tx-memo-return-hash/00008.png differ
diff --git a/tests_zemu/snapshots/sp-tx-memo-return-hash/00009.png b/tests_zemu/snapshots/sp-tx-memo-return-hash/00009.png
index 55496b82..cffd5a33 100644
Binary files a/tests_zemu/snapshots/sp-tx-memo-return-hash/00009.png and b/tests_zemu/snapshots/sp-tx-memo-return-hash/00009.png differ
diff --git a/tests_zemu/snapshots/sp-tx-memo-return-hash/00010.png b/tests_zemu/snapshots/sp-tx-memo-return-hash/00010.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-tx-memo-return-hash/00010.png and b/tests_zemu/snapshots/sp-tx-memo-return-hash/00010.png differ
diff --git a/tests_zemu/snapshots/sp-tx-memo-return-hash/00012.png b/tests_zemu/snapshots/sp-tx-memo-return-hash/00012.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-tx-memo-return-hash/00012.png and b/tests_zemu/snapshots/sp-tx-memo-return-hash/00012.png differ
diff --git a/tests_zemu/snapshots/sp-tx-memo-text-unprintable/00001.png b/tests_zemu/snapshots/sp-tx-memo-text-unprintable/00001.png
index c9e7fe42..2f370633 100644
Binary files a/tests_zemu/snapshots/sp-tx-memo-text-unprintable/00001.png and b/tests_zemu/snapshots/sp-tx-memo-text-unprintable/00001.png differ
diff --git a/tests_zemu/snapshots/sp-tx-memo-text-unprintable/00002.png b/tests_zemu/snapshots/sp-tx-memo-text-unprintable/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-tx-memo-text-unprintable/00002.png and b/tests_zemu/snapshots/sp-tx-memo-text-unprintable/00002.png differ
diff --git a/tests_zemu/snapshots/sp-tx-memo-text-unprintable/00003.png b/tests_zemu/snapshots/sp-tx-memo-text-unprintable/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-tx-memo-text-unprintable/00003.png and b/tests_zemu/snapshots/sp-tx-memo-text-unprintable/00003.png differ
diff --git a/tests_zemu/snapshots/sp-tx-memo-text-unprintable/00005.png b/tests_zemu/snapshots/sp-tx-memo-text-unprintable/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-tx-memo-text-unprintable/00005.png and b/tests_zemu/snapshots/sp-tx-memo-text-unprintable/00005.png differ
diff --git a/tests_zemu/snapshots/sp-tx-memo-text-unprintable/00006.png b/tests_zemu/snapshots/sp-tx-memo-text-unprintable/00006.png
index bae17cff..716253dd 100644
Binary files a/tests_zemu/snapshots/sp-tx-memo-text-unprintable/00006.png and b/tests_zemu/snapshots/sp-tx-memo-text-unprintable/00006.png differ
diff --git a/tests_zemu/snapshots/sp-tx-memo-text-unprintable/00007.png b/tests_zemu/snapshots/sp-tx-memo-text-unprintable/00007.png
index 9fc66f1d..21ca90fc 100644
Binary files a/tests_zemu/snapshots/sp-tx-memo-text-unprintable/00007.png and b/tests_zemu/snapshots/sp-tx-memo-text-unprintable/00007.png differ
diff --git a/tests_zemu/snapshots/sp-tx-memo-text-unprintable/00008.png b/tests_zemu/snapshots/sp-tx-memo-text-unprintable/00008.png
index 55496b82..cffd5a33 100644
Binary files a/tests_zemu/snapshots/sp-tx-memo-text-unprintable/00008.png and b/tests_zemu/snapshots/sp-tx-memo-text-unprintable/00008.png differ
diff --git a/tests_zemu/snapshots/sp-tx-memo-text-unprintable/00009.png b/tests_zemu/snapshots/sp-tx-memo-text-unprintable/00009.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-tx-memo-text-unprintable/00009.png and b/tests_zemu/snapshots/sp-tx-memo-text-unprintable/00009.png differ
diff --git a/tests_zemu/snapshots/sp-tx-memo-text-unprintable/00011.png b/tests_zemu/snapshots/sp-tx-memo-text-unprintable/00011.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-tx-memo-text-unprintable/00011.png and b/tests_zemu/snapshots/sp-tx-memo-text-unprintable/00011.png differ
diff --git a/tests_zemu/snapshots/sp-tx-memo-text/00001.png b/tests_zemu/snapshots/sp-tx-memo-text/00001.png
index 54eefaee..7c7dbed5 100644
Binary files a/tests_zemu/snapshots/sp-tx-memo-text/00001.png and b/tests_zemu/snapshots/sp-tx-memo-text/00001.png differ
diff --git a/tests_zemu/snapshots/sp-tx-memo-text/00002.png b/tests_zemu/snapshots/sp-tx-memo-text/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-tx-memo-text/00002.png and b/tests_zemu/snapshots/sp-tx-memo-text/00002.png differ
diff --git a/tests_zemu/snapshots/sp-tx-memo-text/00003.png b/tests_zemu/snapshots/sp-tx-memo-text/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-tx-memo-text/00003.png and b/tests_zemu/snapshots/sp-tx-memo-text/00003.png differ
diff --git a/tests_zemu/snapshots/sp-tx-memo-text/00005.png b/tests_zemu/snapshots/sp-tx-memo-text/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-tx-memo-text/00005.png and b/tests_zemu/snapshots/sp-tx-memo-text/00005.png differ
diff --git a/tests_zemu/snapshots/sp-tx-memo-text/00006.png b/tests_zemu/snapshots/sp-tx-memo-text/00006.png
index bae17cff..716253dd 100644
Binary files a/tests_zemu/snapshots/sp-tx-memo-text/00006.png and b/tests_zemu/snapshots/sp-tx-memo-text/00006.png differ
diff --git a/tests_zemu/snapshots/sp-tx-memo-text/00007.png b/tests_zemu/snapshots/sp-tx-memo-text/00007.png
index 9fc66f1d..21ca90fc 100644
Binary files a/tests_zemu/snapshots/sp-tx-memo-text/00007.png and b/tests_zemu/snapshots/sp-tx-memo-text/00007.png differ
diff --git a/tests_zemu/snapshots/sp-tx-memo-text/00008.png b/tests_zemu/snapshots/sp-tx-memo-text/00008.png
index 55496b82..cffd5a33 100644
Binary files a/tests_zemu/snapshots/sp-tx-memo-text/00008.png and b/tests_zemu/snapshots/sp-tx-memo-text/00008.png differ
diff --git a/tests_zemu/snapshots/sp-tx-memo-text/00009.png b/tests_zemu/snapshots/sp-tx-memo-text/00009.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-tx-memo-text/00009.png and b/tests_zemu/snapshots/sp-tx-memo-text/00009.png differ
diff --git a/tests_zemu/snapshots/sp-tx-memo-text/00011.png b/tests_zemu/snapshots/sp-tx-memo-text/00011.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-tx-memo-text/00011.png and b/tests_zemu/snapshots/sp-tx-memo-text/00011.png differ
diff --git a/tests_zemu/snapshots/sp-tx-multi-operations/00001.png b/tests_zemu/snapshots/sp-tx-multi-operations/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-tx-multi-operations/00001.png and b/tests_zemu/snapshots/sp-tx-multi-operations/00001.png differ
diff --git a/tests_zemu/snapshots/sp-tx-multi-operations/00002.png b/tests_zemu/snapshots/sp-tx-multi-operations/00002.png
index 89ed6634..709af206 100644
Binary files a/tests_zemu/snapshots/sp-tx-multi-operations/00002.png and b/tests_zemu/snapshots/sp-tx-multi-operations/00002.png differ
diff --git a/tests_zemu/snapshots/sp-tx-multi-operations/00003.png b/tests_zemu/snapshots/sp-tx-multi-operations/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-tx-multi-operations/00003.png and b/tests_zemu/snapshots/sp-tx-multi-operations/00003.png differ
diff --git a/tests_zemu/snapshots/sp-tx-multi-operations/00005.png b/tests_zemu/snapshots/sp-tx-multi-operations/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-tx-multi-operations/00005.png and b/tests_zemu/snapshots/sp-tx-multi-operations/00005.png differ
diff --git a/tests_zemu/snapshots/sp-tx-multi-operations/00007.png b/tests_zemu/snapshots/sp-tx-multi-operations/00007.png
index a8a420c3..3729654f 100644
Binary files a/tests_zemu/snapshots/sp-tx-multi-operations/00007.png and b/tests_zemu/snapshots/sp-tx-multi-operations/00007.png differ
diff --git a/tests_zemu/snapshots/sp-tx-multi-operations/00008.png b/tests_zemu/snapshots/sp-tx-multi-operations/00008.png
index 9fc66f1d..21ca90fc 100644
Binary files a/tests_zemu/snapshots/sp-tx-multi-operations/00008.png and b/tests_zemu/snapshots/sp-tx-multi-operations/00008.png differ
diff --git a/tests_zemu/snapshots/sp-tx-multi-operations/00009.png b/tests_zemu/snapshots/sp-tx-multi-operations/00009.png
index 55496b82..cffd5a33 100644
Binary files a/tests_zemu/snapshots/sp-tx-multi-operations/00009.png and b/tests_zemu/snapshots/sp-tx-multi-operations/00009.png differ
diff --git a/tests_zemu/snapshots/sp-tx-multi-operations/00010.png b/tests_zemu/snapshots/sp-tx-multi-operations/00010.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-tx-multi-operations/00010.png and b/tests_zemu/snapshots/sp-tx-multi-operations/00010.png differ
diff --git a/tests_zemu/snapshots/sp-tx-multi-operations/00012.png b/tests_zemu/snapshots/sp-tx-multi-operations/00012.png
index 8a547ece..562b6383 100644
Binary files a/tests_zemu/snapshots/sp-tx-multi-operations/00012.png and b/tests_zemu/snapshots/sp-tx-multi-operations/00012.png differ
diff --git a/tests_zemu/snapshots/sp-tx-multi-operations/00013.png b/tests_zemu/snapshots/sp-tx-multi-operations/00013.png
index 9fc66f1d..21ca90fc 100644
Binary files a/tests_zemu/snapshots/sp-tx-multi-operations/00013.png and b/tests_zemu/snapshots/sp-tx-multi-operations/00013.png differ
diff --git a/tests_zemu/snapshots/sp-tx-multi-operations/00014.png b/tests_zemu/snapshots/sp-tx-multi-operations/00014.png
index 55496b82..cffd5a33 100644
Binary files a/tests_zemu/snapshots/sp-tx-multi-operations/00014.png and b/tests_zemu/snapshots/sp-tx-multi-operations/00014.png differ
diff --git a/tests_zemu/snapshots/sp-tx-multi-operations/00015.png b/tests_zemu/snapshots/sp-tx-multi-operations/00015.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-tx-multi-operations/00015.png and b/tests_zemu/snapshots/sp-tx-multi-operations/00015.png differ
diff --git a/tests_zemu/snapshots/sp-tx-multi-operations/00017.png b/tests_zemu/snapshots/sp-tx-multi-operations/00017.png
index d7dc42b0..2ee2b057 100644
Binary files a/tests_zemu/snapshots/sp-tx-multi-operations/00017.png and b/tests_zemu/snapshots/sp-tx-multi-operations/00017.png differ
diff --git a/tests_zemu/snapshots/sp-tx-multi-operations/00020.png b/tests_zemu/snapshots/sp-tx-multi-operations/00020.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-tx-multi-operations/00020.png and b/tests_zemu/snapshots/sp-tx-multi-operations/00020.png differ
diff --git a/tests_zemu/snapshots/sp-tx-network-custom/00002.png b/tests_zemu/snapshots/sp-tx-network-custom/00002.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-tx-network-custom/00002.png and b/tests_zemu/snapshots/sp-tx-network-custom/00002.png differ
diff --git a/tests_zemu/snapshots/sp-tx-network-custom/00003.png b/tests_zemu/snapshots/sp-tx-network-custom/00003.png
index e4bee7c6..665136b9 100644
Binary files a/tests_zemu/snapshots/sp-tx-network-custom/00003.png and b/tests_zemu/snapshots/sp-tx-network-custom/00003.png differ
diff --git a/tests_zemu/snapshots/sp-tx-network-custom/00004.png b/tests_zemu/snapshots/sp-tx-network-custom/00004.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-tx-network-custom/00004.png and b/tests_zemu/snapshots/sp-tx-network-custom/00004.png differ
diff --git a/tests_zemu/snapshots/sp-tx-network-custom/00006.png b/tests_zemu/snapshots/sp-tx-network-custom/00006.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-tx-network-custom/00006.png and b/tests_zemu/snapshots/sp-tx-network-custom/00006.png differ
diff --git a/tests_zemu/snapshots/sp-tx-network-custom/00008.png b/tests_zemu/snapshots/sp-tx-network-custom/00008.png
index 1571c9b3..5a7ffae2 100644
Binary files a/tests_zemu/snapshots/sp-tx-network-custom/00008.png and b/tests_zemu/snapshots/sp-tx-network-custom/00008.png differ
diff --git a/tests_zemu/snapshots/sp-tx-network-custom/00009.png b/tests_zemu/snapshots/sp-tx-network-custom/00009.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-tx-network-custom/00009.png and b/tests_zemu/snapshots/sp-tx-network-custom/00009.png differ
diff --git a/tests_zemu/snapshots/sp-tx-network-custom/00011.png b/tests_zemu/snapshots/sp-tx-network-custom/00011.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-tx-network-custom/00011.png and b/tests_zemu/snapshots/sp-tx-network-custom/00011.png differ
diff --git a/tests_zemu/snapshots/sp-tx-network-public/00001.png b/tests_zemu/snapshots/sp-tx-network-public/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-tx-network-public/00001.png and b/tests_zemu/snapshots/sp-tx-network-public/00001.png differ
diff --git a/tests_zemu/snapshots/sp-tx-network-public/00002.png b/tests_zemu/snapshots/sp-tx-network-public/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-tx-network-public/00002.png and b/tests_zemu/snapshots/sp-tx-network-public/00002.png differ
diff --git a/tests_zemu/snapshots/sp-tx-network-public/00003.png b/tests_zemu/snapshots/sp-tx-network-public/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-tx-network-public/00003.png and b/tests_zemu/snapshots/sp-tx-network-public/00003.png differ
diff --git a/tests_zemu/snapshots/sp-tx-network-public/00005.png b/tests_zemu/snapshots/sp-tx-network-public/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-tx-network-public/00005.png and b/tests_zemu/snapshots/sp-tx-network-public/00005.png differ
diff --git a/tests_zemu/snapshots/sp-tx-network-public/00007.png b/tests_zemu/snapshots/sp-tx-network-public/00007.png
index 1571c9b3..5a7ffae2 100644
Binary files a/tests_zemu/snapshots/sp-tx-network-public/00007.png and b/tests_zemu/snapshots/sp-tx-network-public/00007.png differ
diff --git a/tests_zemu/snapshots/sp-tx-network-public/00008.png b/tests_zemu/snapshots/sp-tx-network-public/00008.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-tx-network-public/00008.png and b/tests_zemu/snapshots/sp-tx-network-public/00008.png differ
diff --git a/tests_zemu/snapshots/sp-tx-network-public/00010.png b/tests_zemu/snapshots/sp-tx-network-public/00010.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-tx-network-public/00010.png and b/tests_zemu/snapshots/sp-tx-network-public/00010.png differ
diff --git a/tests_zemu/snapshots/sp-tx-network-testnet/00002.png b/tests_zemu/snapshots/sp-tx-network-testnet/00002.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-tx-network-testnet/00002.png and b/tests_zemu/snapshots/sp-tx-network-testnet/00002.png differ
diff --git a/tests_zemu/snapshots/sp-tx-network-testnet/00003.png b/tests_zemu/snapshots/sp-tx-network-testnet/00003.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-tx-network-testnet/00003.png and b/tests_zemu/snapshots/sp-tx-network-testnet/00003.png differ
diff --git a/tests_zemu/snapshots/sp-tx-network-testnet/00004.png b/tests_zemu/snapshots/sp-tx-network-testnet/00004.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-tx-network-testnet/00004.png and b/tests_zemu/snapshots/sp-tx-network-testnet/00004.png differ
diff --git a/tests_zemu/snapshots/sp-tx-network-testnet/00006.png b/tests_zemu/snapshots/sp-tx-network-testnet/00006.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-tx-network-testnet/00006.png and b/tests_zemu/snapshots/sp-tx-network-testnet/00006.png differ
diff --git a/tests_zemu/snapshots/sp-tx-network-testnet/00008.png b/tests_zemu/snapshots/sp-tx-network-testnet/00008.png
index 1571c9b3..5a7ffae2 100644
Binary files a/tests_zemu/snapshots/sp-tx-network-testnet/00008.png and b/tests_zemu/snapshots/sp-tx-network-testnet/00008.png differ
diff --git a/tests_zemu/snapshots/sp-tx-network-testnet/00009.png b/tests_zemu/snapshots/sp-tx-network-testnet/00009.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-tx-network-testnet/00009.png and b/tests_zemu/snapshots/sp-tx-network-testnet/00009.png differ
diff --git a/tests_zemu/snapshots/sp-tx-network-testnet/00011.png b/tests_zemu/snapshots/sp-tx-network-testnet/00011.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-tx-network-testnet/00011.png and b/tests_zemu/snapshots/sp-tx-network-testnet/00011.png differ
diff --git a/tests_zemu/snapshots/sp-tx-reject/00001.png b/tests_zemu/snapshots/sp-tx-reject/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-tx-reject/00001.png and b/tests_zemu/snapshots/sp-tx-reject/00001.png differ
diff --git a/tests_zemu/snapshots/sp-tx-reject/00002.png b/tests_zemu/snapshots/sp-tx-reject/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-tx-reject/00002.png and b/tests_zemu/snapshots/sp-tx-reject/00002.png differ
diff --git a/tests_zemu/snapshots/sp-tx-reject/00003.png b/tests_zemu/snapshots/sp-tx-reject/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-tx-reject/00003.png and b/tests_zemu/snapshots/sp-tx-reject/00003.png differ
diff --git a/tests_zemu/snapshots/sp-tx-reject/00005.png b/tests_zemu/snapshots/sp-tx-reject/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-tx-reject/00005.png and b/tests_zemu/snapshots/sp-tx-reject/00005.png differ
diff --git a/tests_zemu/snapshots/sp-tx-reject/00007.png b/tests_zemu/snapshots/sp-tx-reject/00007.png
index 1571c9b3..5a7ffae2 100644
Binary files a/tests_zemu/snapshots/sp-tx-reject/00007.png and b/tests_zemu/snapshots/sp-tx-reject/00007.png differ
diff --git a/tests_zemu/snapshots/sp-tx-reject/00008.png b/tests_zemu/snapshots/sp-tx-reject/00008.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-tx-reject/00008.png and b/tests_zemu/snapshots/sp-tx-reject/00008.png differ
diff --git a/tests_zemu/snapshots/sp-tx-reject/00011.png b/tests_zemu/snapshots/sp-tx-reject/00011.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-tx-reject/00011.png and b/tests_zemu/snapshots/sp-tx-reject/00011.png differ
diff --git a/tests_zemu/snapshots/sp-tx-source-omit-muxed-source-equal-signer/00001.png b/tests_zemu/snapshots/sp-tx-source-omit-muxed-source-equal-signer/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-tx-source-omit-muxed-source-equal-signer/00001.png and b/tests_zemu/snapshots/sp-tx-source-omit-muxed-source-equal-signer/00001.png differ
diff --git a/tests_zemu/snapshots/sp-tx-source-omit-muxed-source-equal-signer/00002.png b/tests_zemu/snapshots/sp-tx-source-omit-muxed-source-equal-signer/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-tx-source-omit-muxed-source-equal-signer/00002.png and b/tests_zemu/snapshots/sp-tx-source-omit-muxed-source-equal-signer/00002.png differ
diff --git a/tests_zemu/snapshots/sp-tx-source-omit-muxed-source-equal-signer/00003.png b/tests_zemu/snapshots/sp-tx-source-omit-muxed-source-equal-signer/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-tx-source-omit-muxed-source-equal-signer/00003.png and b/tests_zemu/snapshots/sp-tx-source-omit-muxed-source-equal-signer/00003.png differ
diff --git a/tests_zemu/snapshots/sp-tx-source-omit-muxed-source-equal-signer/00005.png b/tests_zemu/snapshots/sp-tx-source-omit-muxed-source-equal-signer/00005.png
index 188a9b9e..d7f46534 100644
Binary files a/tests_zemu/snapshots/sp-tx-source-omit-muxed-source-equal-signer/00005.png and b/tests_zemu/snapshots/sp-tx-source-omit-muxed-source-equal-signer/00005.png differ
diff --git a/tests_zemu/snapshots/sp-tx-source-omit-muxed-source-equal-signer/00006.png b/tests_zemu/snapshots/sp-tx-source-omit-muxed-source-equal-signer/00006.png
index 7f4ebd9c..429130d0 100644
Binary files a/tests_zemu/snapshots/sp-tx-source-omit-muxed-source-equal-signer/00006.png and b/tests_zemu/snapshots/sp-tx-source-omit-muxed-source-equal-signer/00006.png differ
diff --git a/tests_zemu/snapshots/sp-tx-source-omit-muxed-source-equal-signer/00008.png b/tests_zemu/snapshots/sp-tx-source-omit-muxed-source-equal-signer/00008.png
index 1571c9b3..5a7ffae2 100644
Binary files a/tests_zemu/snapshots/sp-tx-source-omit-muxed-source-equal-signer/00008.png and b/tests_zemu/snapshots/sp-tx-source-omit-muxed-source-equal-signer/00008.png differ
diff --git a/tests_zemu/snapshots/sp-tx-source-omit-muxed-source-equal-signer/00009.png b/tests_zemu/snapshots/sp-tx-source-omit-muxed-source-equal-signer/00009.png
index 4e2026a1..61032206 100644
Binary files a/tests_zemu/snapshots/sp-tx-source-omit-muxed-source-equal-signer/00009.png and b/tests_zemu/snapshots/sp-tx-source-omit-muxed-source-equal-signer/00009.png differ
diff --git a/tests_zemu/snapshots/sp-tx-source-omit-muxed-source-equal-signer/00010.png b/tests_zemu/snapshots/sp-tx-source-omit-muxed-source-equal-signer/00010.png
index 5cea3230..9bc20076 100644
Binary files a/tests_zemu/snapshots/sp-tx-source-omit-muxed-source-equal-signer/00010.png and b/tests_zemu/snapshots/sp-tx-source-omit-muxed-source-equal-signer/00010.png differ
diff --git a/tests_zemu/snapshots/sp-tx-source-omit-muxed-source-equal-signer/00012.png b/tests_zemu/snapshots/sp-tx-source-omit-muxed-source-equal-signer/00012.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-tx-source-omit-muxed-source-equal-signer/00012.png and b/tests_zemu/snapshots/sp-tx-source-omit-muxed-source-equal-signer/00012.png differ
diff --git a/tests_zemu/snapshots/sp-tx-source-omit-source-equal-signer/00001.png b/tests_zemu/snapshots/sp-tx-source-omit-source-equal-signer/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-tx-source-omit-source-equal-signer/00001.png and b/tests_zemu/snapshots/sp-tx-source-omit-source-equal-signer/00001.png differ
diff --git a/tests_zemu/snapshots/sp-tx-source-omit-source-equal-signer/00002.png b/tests_zemu/snapshots/sp-tx-source-omit-source-equal-signer/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-tx-source-omit-source-equal-signer/00002.png and b/tests_zemu/snapshots/sp-tx-source-omit-source-equal-signer/00002.png differ
diff --git a/tests_zemu/snapshots/sp-tx-source-omit-source-equal-signer/00003.png b/tests_zemu/snapshots/sp-tx-source-omit-source-equal-signer/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-tx-source-omit-source-equal-signer/00003.png and b/tests_zemu/snapshots/sp-tx-source-omit-source-equal-signer/00003.png differ
diff --git a/tests_zemu/snapshots/sp-tx-source-omit-source-equal-signer/00005.png b/tests_zemu/snapshots/sp-tx-source-omit-source-equal-signer/00005.png
index 7fc42f29..06db03ba 100644
Binary files a/tests_zemu/snapshots/sp-tx-source-omit-source-equal-signer/00005.png and b/tests_zemu/snapshots/sp-tx-source-omit-source-equal-signer/00005.png differ
diff --git a/tests_zemu/snapshots/sp-tx-source-omit-source-equal-signer/00007.png b/tests_zemu/snapshots/sp-tx-source-omit-source-equal-signer/00007.png
index 1571c9b3..5a7ffae2 100644
Binary files a/tests_zemu/snapshots/sp-tx-source-omit-source-equal-signer/00007.png and b/tests_zemu/snapshots/sp-tx-source-omit-source-equal-signer/00007.png differ
diff --git a/tests_zemu/snapshots/sp-tx-source-omit-source-equal-signer/00008.png b/tests_zemu/snapshots/sp-tx-source-omit-source-equal-signer/00008.png
index 746f94e1..2debbe6c 100644
Binary files a/tests_zemu/snapshots/sp-tx-source-omit-source-equal-signer/00008.png and b/tests_zemu/snapshots/sp-tx-source-omit-source-equal-signer/00008.png differ
diff --git a/tests_zemu/snapshots/sp-tx-source-omit-source-equal-signer/00010.png b/tests_zemu/snapshots/sp-tx-source-omit-source-equal-signer/00010.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-tx-source-omit-source-equal-signer/00010.png and b/tests_zemu/snapshots/sp-tx-source-omit-source-equal-signer/00010.png differ
diff --git a/tests_zemu/snapshots/sp-tx-source-omit-source-not-equal-signer/00001.png b/tests_zemu/snapshots/sp-tx-source-omit-source-not-equal-signer/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-tx-source-omit-source-not-equal-signer/00001.png and b/tests_zemu/snapshots/sp-tx-source-omit-source-not-equal-signer/00001.png differ
diff --git a/tests_zemu/snapshots/sp-tx-source-omit-source-not-equal-signer/00002.png b/tests_zemu/snapshots/sp-tx-source-omit-source-not-equal-signer/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-tx-source-omit-source-not-equal-signer/00002.png and b/tests_zemu/snapshots/sp-tx-source-omit-source-not-equal-signer/00002.png differ
diff --git a/tests_zemu/snapshots/sp-tx-source-omit-source-not-equal-signer/00003.png b/tests_zemu/snapshots/sp-tx-source-omit-source-not-equal-signer/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-tx-source-omit-source-not-equal-signer/00003.png and b/tests_zemu/snapshots/sp-tx-source-omit-source-not-equal-signer/00003.png differ
diff --git a/tests_zemu/snapshots/sp-tx-source-omit-source-not-equal-signer/00005.png b/tests_zemu/snapshots/sp-tx-source-omit-source-not-equal-signer/00005.png
index 7dbb4d7a..b0d30635 100644
Binary files a/tests_zemu/snapshots/sp-tx-source-omit-source-not-equal-signer/00005.png and b/tests_zemu/snapshots/sp-tx-source-omit-source-not-equal-signer/00005.png differ
diff --git a/tests_zemu/snapshots/sp-tx-source-omit-source-not-equal-signer/00006.png b/tests_zemu/snapshots/sp-tx-source-omit-source-not-equal-signer/00006.png
index 5f9656de..22740f21 100644
Binary files a/tests_zemu/snapshots/sp-tx-source-omit-source-not-equal-signer/00006.png and b/tests_zemu/snapshots/sp-tx-source-omit-source-not-equal-signer/00006.png differ
diff --git a/tests_zemu/snapshots/sp-tx-source-omit-source-not-equal-signer/00008.png b/tests_zemu/snapshots/sp-tx-source-omit-source-not-equal-signer/00008.png
index 1571c9b3..5a7ffae2 100644
Binary files a/tests_zemu/snapshots/sp-tx-source-omit-source-not-equal-signer/00008.png and b/tests_zemu/snapshots/sp-tx-source-omit-source-not-equal-signer/00008.png differ
diff --git a/tests_zemu/snapshots/sp-tx-source-omit-source-not-equal-signer/00009.png b/tests_zemu/snapshots/sp-tx-source-omit-source-not-equal-signer/00009.png
index d7e84285..a365da7b 100644
Binary files a/tests_zemu/snapshots/sp-tx-source-omit-source-not-equal-signer/00009.png and b/tests_zemu/snapshots/sp-tx-source-omit-source-not-equal-signer/00009.png differ
diff --git a/tests_zemu/snapshots/sp-tx-source-omit-source-not-equal-signer/00010.png b/tests_zemu/snapshots/sp-tx-source-omit-source-not-equal-signer/00010.png
index 6aaffb04..982bd122 100644
Binary files a/tests_zemu/snapshots/sp-tx-source-omit-source-not-equal-signer/00010.png and b/tests_zemu/snapshots/sp-tx-source-omit-source-not-equal-signer/00010.png differ
diff --git a/tests_zemu/snapshots/sp-tx-source-omit-source-not-equal-signer/00012.png b/tests_zemu/snapshots/sp-tx-source-omit-source-not-equal-signer/00012.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-tx-source-omit-source-not-equal-signer/00012.png and b/tests_zemu/snapshots/sp-tx-source-omit-source-not-equal-signer/00012.png differ
diff --git a/tests_zemu/snapshots/sp-tx-with-muxed-source/00001.png b/tests_zemu/snapshots/sp-tx-with-muxed-source/00001.png
index 0b599bce..2e650e1f 100644
Binary files a/tests_zemu/snapshots/sp-tx-with-muxed-source/00001.png and b/tests_zemu/snapshots/sp-tx-with-muxed-source/00001.png differ
diff --git a/tests_zemu/snapshots/sp-tx-with-muxed-source/00002.png b/tests_zemu/snapshots/sp-tx-with-muxed-source/00002.png
index e5793eb5..eff68d24 100644
Binary files a/tests_zemu/snapshots/sp-tx-with-muxed-source/00002.png and b/tests_zemu/snapshots/sp-tx-with-muxed-source/00002.png differ
diff --git a/tests_zemu/snapshots/sp-tx-with-muxed-source/00003.png b/tests_zemu/snapshots/sp-tx-with-muxed-source/00003.png
index 1c7329ee..a1f1e09c 100644
Binary files a/tests_zemu/snapshots/sp-tx-with-muxed-source/00003.png and b/tests_zemu/snapshots/sp-tx-with-muxed-source/00003.png differ
diff --git a/tests_zemu/snapshots/sp-tx-with-muxed-source/00005.png b/tests_zemu/snapshots/sp-tx-with-muxed-source/00005.png
index 188a9b9e..d7f46534 100644
Binary files a/tests_zemu/snapshots/sp-tx-with-muxed-source/00005.png and b/tests_zemu/snapshots/sp-tx-with-muxed-source/00005.png differ
diff --git a/tests_zemu/snapshots/sp-tx-with-muxed-source/00006.png b/tests_zemu/snapshots/sp-tx-with-muxed-source/00006.png
index 7f4ebd9c..429130d0 100644
Binary files a/tests_zemu/snapshots/sp-tx-with-muxed-source/00006.png and b/tests_zemu/snapshots/sp-tx-with-muxed-source/00006.png differ
diff --git a/tests_zemu/snapshots/sp-tx-with-muxed-source/00007.png b/tests_zemu/snapshots/sp-tx-with-muxed-source/00007.png
index bae17cff..716253dd 100644
Binary files a/tests_zemu/snapshots/sp-tx-with-muxed-source/00007.png and b/tests_zemu/snapshots/sp-tx-with-muxed-source/00007.png differ
diff --git a/tests_zemu/snapshots/sp-tx-with-muxed-source/00008.png b/tests_zemu/snapshots/sp-tx-with-muxed-source/00008.png
index 9fc66f1d..21ca90fc 100644
Binary files a/tests_zemu/snapshots/sp-tx-with-muxed-source/00008.png and b/tests_zemu/snapshots/sp-tx-with-muxed-source/00008.png differ
diff --git a/tests_zemu/snapshots/sp-tx-with-muxed-source/00009.png b/tests_zemu/snapshots/sp-tx-with-muxed-source/00009.png
index 55496b82..cffd5a33 100644
Binary files a/tests_zemu/snapshots/sp-tx-with-muxed-source/00009.png and b/tests_zemu/snapshots/sp-tx-with-muxed-source/00009.png differ
diff --git a/tests_zemu/snapshots/sp-tx-with-muxed-source/00010.png b/tests_zemu/snapshots/sp-tx-with-muxed-source/00010.png
index 4e2026a1..61032206 100644
Binary files a/tests_zemu/snapshots/sp-tx-with-muxed-source/00010.png and b/tests_zemu/snapshots/sp-tx-with-muxed-source/00010.png differ
diff --git a/tests_zemu/snapshots/sp-tx-with-muxed-source/00011.png b/tests_zemu/snapshots/sp-tx-with-muxed-source/00011.png
index 5cea3230..9bc20076 100644
Binary files a/tests_zemu/snapshots/sp-tx-with-muxed-source/00011.png and b/tests_zemu/snapshots/sp-tx-with-muxed-source/00011.png differ
diff --git a/tests_zemu/snapshots/sp-tx-with-muxed-source/00013.png b/tests_zemu/snapshots/sp-tx-with-muxed-source/00013.png
index 96627275..fb27b648 100644
Binary files a/tests_zemu/snapshots/sp-tx-with-muxed-source/00013.png and b/tests_zemu/snapshots/sp-tx-with-muxed-source/00013.png differ
diff --git a/tests_zemu/snapshots/stax-op-extend-footprint-ttl/00000.png b/tests_zemu/snapshots/stax-op-extend-footprint-ttl/00000.png
new file mode 100644
index 00000000..3e30e23b
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-extend-footprint-ttl/00000.png differ
diff --git a/tests_zemu/snapshots/stax-op-extend-footprint-ttl/00001.png b/tests_zemu/snapshots/stax-op-extend-footprint-ttl/00001.png
new file mode 100644
index 00000000..62d257d0
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-extend-footprint-ttl/00001.png differ
diff --git a/tests_zemu/snapshots/stax-op-extend-footprint-ttl/00002.png b/tests_zemu/snapshots/stax-op-extend-footprint-ttl/00002.png
new file mode 100644
index 00000000..e07a55f7
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-extend-footprint-ttl/00002.png differ
diff --git a/tests_zemu/snapshots/stax-op-extend-footprint-ttl/00003.png b/tests_zemu/snapshots/stax-op-extend-footprint-ttl/00003.png
new file mode 100644
index 00000000..cd2f5275
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-extend-footprint-ttl/00003.png differ
diff --git a/tests_zemu/snapshots/stax-op-invoke-host-function-asset-approve/00000.png b/tests_zemu/snapshots/stax-op-invoke-host-function-asset-approve/00000.png
new file mode 100644
index 00000000..3e30e23b
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-invoke-host-function-asset-approve/00000.png differ
diff --git a/tests_zemu/snapshots/stax-op-invoke-host-function-asset-approve/00001.png b/tests_zemu/snapshots/stax-op-invoke-host-function-asset-approve/00001.png
new file mode 100644
index 00000000..1a4ae3f9
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-invoke-host-function-asset-approve/00001.png differ
diff --git a/tests_zemu/snapshots/stax-op-invoke-host-function-asset-approve/00002.png b/tests_zemu/snapshots/stax-op-invoke-host-function-asset-approve/00002.png
new file mode 100644
index 00000000..44349add
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-invoke-host-function-asset-approve/00002.png differ
diff --git a/tests_zemu/snapshots/stax-op-invoke-host-function-asset-approve/00003.png b/tests_zemu/snapshots/stax-op-invoke-host-function-asset-approve/00003.png
new file mode 100644
index 00000000..175bb0cf
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-invoke-host-function-asset-approve/00003.png differ
diff --git a/tests_zemu/snapshots/stax-op-invoke-host-function-asset-approve/00004.png b/tests_zemu/snapshots/stax-op-invoke-host-function-asset-approve/00004.png
new file mode 100644
index 00000000..b4176935
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-invoke-host-function-asset-approve/00004.png differ
diff --git a/tests_zemu/snapshots/stax-op-invoke-host-function-asset-approve/00005.png b/tests_zemu/snapshots/stax-op-invoke-host-function-asset-approve/00005.png
new file mode 100644
index 00000000..abbafeed
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-invoke-host-function-asset-approve/00005.png differ
diff --git a/tests_zemu/snapshots/stax-op-invoke-host-function-asset-approve/00006.png b/tests_zemu/snapshots/stax-op-invoke-host-function-asset-approve/00006.png
new file mode 100644
index 00000000..cd2f5275
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-invoke-host-function-asset-approve/00006.png differ
diff --git a/tests_zemu/snapshots/stax-op-invoke-host-function-asset-transfer/00000.png b/tests_zemu/snapshots/stax-op-invoke-host-function-asset-transfer/00000.png
new file mode 100644
index 00000000..3e30e23b
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-invoke-host-function-asset-transfer/00000.png differ
diff --git a/tests_zemu/snapshots/stax-op-invoke-host-function-asset-transfer/00001.png b/tests_zemu/snapshots/stax-op-invoke-host-function-asset-transfer/00001.png
new file mode 100644
index 00000000..3c0f2a4d
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-invoke-host-function-asset-transfer/00001.png differ
diff --git a/tests_zemu/snapshots/stax-op-invoke-host-function-asset-transfer/00002.png b/tests_zemu/snapshots/stax-op-invoke-host-function-asset-transfer/00002.png
new file mode 100644
index 00000000..4b958b19
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-invoke-host-function-asset-transfer/00002.png differ
diff --git a/tests_zemu/snapshots/stax-op-invoke-host-function-asset-transfer/00003.png b/tests_zemu/snapshots/stax-op-invoke-host-function-asset-transfer/00003.png
new file mode 100644
index 00000000..8310d5d3
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-invoke-host-function-asset-transfer/00003.png differ
diff --git a/tests_zemu/snapshots/stax-op-invoke-host-function-asset-transfer/00004.png b/tests_zemu/snapshots/stax-op-invoke-host-function-asset-transfer/00004.png
new file mode 100644
index 00000000..734b7d6e
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-invoke-host-function-asset-transfer/00004.png differ
diff --git a/tests_zemu/snapshots/stax-op-invoke-host-function-asset-transfer/00005.png b/tests_zemu/snapshots/stax-op-invoke-host-function-asset-transfer/00005.png
new file mode 100644
index 00000000..abbafeed
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-invoke-host-function-asset-transfer/00005.png differ
diff --git a/tests_zemu/snapshots/stax-op-invoke-host-function-asset-transfer/00006.png b/tests_zemu/snapshots/stax-op-invoke-host-function-asset-transfer/00006.png
new file mode 100644
index 00000000..cd2f5275
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-invoke-host-function-asset-transfer/00006.png differ
diff --git a/tests_zemu/snapshots/stax-op-invoke-host-function-create-contract-new-asset/00000.png b/tests_zemu/snapshots/stax-op-invoke-host-function-create-contract-new-asset/00000.png
new file mode 100644
index 00000000..3e30e23b
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-invoke-host-function-create-contract-new-asset/00000.png differ
diff --git a/tests_zemu/snapshots/stax-op-invoke-host-function-create-contract-new-asset/00001.png b/tests_zemu/snapshots/stax-op-invoke-host-function-create-contract-new-asset/00001.png
new file mode 100644
index 00000000..993b250e
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-invoke-host-function-create-contract-new-asset/00001.png differ
diff --git a/tests_zemu/snapshots/stax-op-invoke-host-function-create-contract-new-asset/00002.png b/tests_zemu/snapshots/stax-op-invoke-host-function-create-contract-new-asset/00002.png
new file mode 100644
index 00000000..48433faf
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-invoke-host-function-create-contract-new-asset/00002.png differ
diff --git a/tests_zemu/snapshots/stax-op-invoke-host-function-create-contract-new-asset/00003.png b/tests_zemu/snapshots/stax-op-invoke-host-function-create-contract-new-asset/00003.png
new file mode 100644
index 00000000..ebc0b7e3
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-invoke-host-function-create-contract-new-asset/00003.png differ
diff --git a/tests_zemu/snapshots/stax-op-invoke-host-function-create-contract-new-asset/00004.png b/tests_zemu/snapshots/stax-op-invoke-host-function-create-contract-new-asset/00004.png
new file mode 100644
index 00000000..cd2f5275
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-invoke-host-function-create-contract-new-asset/00004.png differ
diff --git a/tests_zemu/snapshots/stax-op-invoke-host-function-create-contract-wasm-id/00000.png b/tests_zemu/snapshots/stax-op-invoke-host-function-create-contract-wasm-id/00000.png
new file mode 100644
index 00000000..3e30e23b
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-invoke-host-function-create-contract-wasm-id/00000.png differ
diff --git a/tests_zemu/snapshots/stax-op-invoke-host-function-create-contract-wasm-id/00001.png b/tests_zemu/snapshots/stax-op-invoke-host-function-create-contract-wasm-id/00001.png
new file mode 100644
index 00000000..8aae716f
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-invoke-host-function-create-contract-wasm-id/00001.png differ
diff --git a/tests_zemu/snapshots/stax-op-invoke-host-function-create-contract-wasm-id/00002.png b/tests_zemu/snapshots/stax-op-invoke-host-function-create-contract-wasm-id/00002.png
new file mode 100644
index 00000000..e07a55f7
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-invoke-host-function-create-contract-wasm-id/00002.png differ
diff --git a/tests_zemu/snapshots/stax-op-invoke-host-function-create-contract-wasm-id/00003.png b/tests_zemu/snapshots/stax-op-invoke-host-function-create-contract-wasm-id/00003.png
new file mode 100644
index 00000000..cd2f5275
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-invoke-host-function-create-contract-wasm-id/00003.png differ
diff --git a/tests_zemu/snapshots/stax-op-invoke-host-function-create-contract-wrap-asset/00000.png b/tests_zemu/snapshots/stax-op-invoke-host-function-create-contract-wrap-asset/00000.png
new file mode 100644
index 00000000..3e30e23b
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-invoke-host-function-create-contract-wrap-asset/00000.png differ
diff --git a/tests_zemu/snapshots/stax-op-invoke-host-function-create-contract-wrap-asset/00001.png b/tests_zemu/snapshots/stax-op-invoke-host-function-create-contract-wrap-asset/00001.png
new file mode 100644
index 00000000..a689f715
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-invoke-host-function-create-contract-wrap-asset/00001.png differ
diff --git a/tests_zemu/snapshots/stax-op-invoke-host-function-create-contract-wrap-asset/00002.png b/tests_zemu/snapshots/stax-op-invoke-host-function-create-contract-wrap-asset/00002.png
new file mode 100644
index 00000000..e07a55f7
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-invoke-host-function-create-contract-wrap-asset/00002.png differ
diff --git a/tests_zemu/snapshots/stax-op-invoke-host-function-create-contract-wrap-asset/00003.png b/tests_zemu/snapshots/stax-op-invoke-host-function-create-contract-wrap-asset/00003.png
new file mode 100644
index 00000000..cd2f5275
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-invoke-host-function-create-contract-wrap-asset/00003.png differ
diff --git a/tests_zemu/snapshots/stax-op-invoke-host-function-scvals/00000.png b/tests_zemu/snapshots/stax-op-invoke-host-function-scvals/00000.png
new file mode 100644
index 00000000..3e30e23b
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-invoke-host-function-scvals/00000.png differ
diff --git a/tests_zemu/snapshots/stax-op-invoke-host-function-scvals/00001.png b/tests_zemu/snapshots/stax-op-invoke-host-function-scvals/00001.png
new file mode 100644
index 00000000..7c748ea4
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-invoke-host-function-scvals/00001.png differ
diff --git a/tests_zemu/snapshots/stax-op-invoke-host-function-scvals/00002.png b/tests_zemu/snapshots/stax-op-invoke-host-function-scvals/00002.png
new file mode 100644
index 00000000..b60dcfe6
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-invoke-host-function-scvals/00002.png differ
diff --git a/tests_zemu/snapshots/stax-op-invoke-host-function-scvals/00003.png b/tests_zemu/snapshots/stax-op-invoke-host-function-scvals/00003.png
new file mode 100644
index 00000000..e5c4f72e
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-invoke-host-function-scvals/00003.png differ
diff --git a/tests_zemu/snapshots/stax-op-invoke-host-function-scvals/00004.png b/tests_zemu/snapshots/stax-op-invoke-host-function-scvals/00004.png
new file mode 100644
index 00000000..75a118a0
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-invoke-host-function-scvals/00004.png differ
diff --git a/tests_zemu/snapshots/stax-op-invoke-host-function-scvals/00005.png b/tests_zemu/snapshots/stax-op-invoke-host-function-scvals/00005.png
new file mode 100644
index 00000000..cd2f5275
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-invoke-host-function-scvals/00005.png differ
diff --git a/tests_zemu/snapshots/stax-op-invoke-host-function-unverified-contract-with-approve-function/00000.png b/tests_zemu/snapshots/stax-op-invoke-host-function-unverified-contract-with-approve-function/00000.png
new file mode 100644
index 00000000..3e30e23b
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-invoke-host-function-unverified-contract-with-approve-function/00000.png differ
diff --git a/tests_zemu/snapshots/stax-op-invoke-host-function-unverified-contract-with-approve-function/00001.png b/tests_zemu/snapshots/stax-op-invoke-host-function-unverified-contract-with-approve-function/00001.png
new file mode 100644
index 00000000..7c748ea4
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-invoke-host-function-unverified-contract-with-approve-function/00001.png differ
diff --git a/tests_zemu/snapshots/stax-op-invoke-host-function-unverified-contract-with-approve-function/00002.png b/tests_zemu/snapshots/stax-op-invoke-host-function-unverified-contract-with-approve-function/00002.png
new file mode 100644
index 00000000..11cbeb56
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-invoke-host-function-unverified-contract-with-approve-function/00002.png differ
diff --git a/tests_zemu/snapshots/stax-op-invoke-host-function-unverified-contract-with-approve-function/00003.png b/tests_zemu/snapshots/stax-op-invoke-host-function-unverified-contract-with-approve-function/00003.png
new file mode 100644
index 00000000..365a84ec
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-invoke-host-function-unverified-contract-with-approve-function/00003.png differ
diff --git a/tests_zemu/snapshots/stax-op-invoke-host-function-unverified-contract-with-approve-function/00004.png b/tests_zemu/snapshots/stax-op-invoke-host-function-unverified-contract-with-approve-function/00004.png
new file mode 100644
index 00000000..75a118a0
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-invoke-host-function-unverified-contract-with-approve-function/00004.png differ
diff --git a/tests_zemu/snapshots/stax-op-invoke-host-function-unverified-contract-with-approve-function/00005.png b/tests_zemu/snapshots/stax-op-invoke-host-function-unverified-contract-with-approve-function/00005.png
new file mode 100644
index 00000000..cd2f5275
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-invoke-host-function-unverified-contract-with-approve-function/00005.png differ
diff --git a/tests_zemu/snapshots/stax-op-invoke-host-function-unverified-contract-with-transfer-function/00000.png b/tests_zemu/snapshots/stax-op-invoke-host-function-unverified-contract-with-transfer-function/00000.png
new file mode 100644
index 00000000..3e30e23b
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-invoke-host-function-unverified-contract-with-transfer-function/00000.png differ
diff --git a/tests_zemu/snapshots/stax-op-invoke-host-function-unverified-contract-with-transfer-function/00001.png b/tests_zemu/snapshots/stax-op-invoke-host-function-unverified-contract-with-transfer-function/00001.png
new file mode 100644
index 00000000..7c748ea4
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-invoke-host-function-unverified-contract-with-transfer-function/00001.png differ
diff --git a/tests_zemu/snapshots/stax-op-invoke-host-function-unverified-contract-with-transfer-function/00002.png b/tests_zemu/snapshots/stax-op-invoke-host-function-unverified-contract-with-transfer-function/00002.png
new file mode 100644
index 00000000..5238f4af
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-invoke-host-function-unverified-contract-with-transfer-function/00002.png differ
diff --git a/tests_zemu/snapshots/stax-op-invoke-host-function-unverified-contract-with-transfer-function/00003.png b/tests_zemu/snapshots/stax-op-invoke-host-function-unverified-contract-with-transfer-function/00003.png
new file mode 100644
index 00000000..e5c4f72e
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-invoke-host-function-unverified-contract-with-transfer-function/00003.png differ
diff --git a/tests_zemu/snapshots/stax-op-invoke-host-function-unverified-contract-with-transfer-function/00004.png b/tests_zemu/snapshots/stax-op-invoke-host-function-unverified-contract-with-transfer-function/00004.png
new file mode 100644
index 00000000..75a118a0
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-invoke-host-function-unverified-contract-with-transfer-function/00004.png differ
diff --git a/tests_zemu/snapshots/stax-op-invoke-host-function-unverified-contract-with-transfer-function/00005.png b/tests_zemu/snapshots/stax-op-invoke-host-function-unverified-contract-with-transfer-function/00005.png
new file mode 100644
index 00000000..cd2f5275
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-invoke-host-function-unverified-contract-with-transfer-function/00005.png differ
diff --git a/tests_zemu/snapshots/stax-op-invoke-host-function-unverified-contract/00000.png b/tests_zemu/snapshots/stax-op-invoke-host-function-unverified-contract/00000.png
new file mode 100644
index 00000000..3e30e23b
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-invoke-host-function-unverified-contract/00000.png differ
diff --git a/tests_zemu/snapshots/stax-op-invoke-host-function-unverified-contract/00001.png b/tests_zemu/snapshots/stax-op-invoke-host-function-unverified-contract/00001.png
new file mode 100644
index 00000000..2f11ca83
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-invoke-host-function-unverified-contract/00001.png differ
diff --git a/tests_zemu/snapshots/stax-op-invoke-host-function-unverified-contract/00002.png b/tests_zemu/snapshots/stax-op-invoke-host-function-unverified-contract/00002.png
new file mode 100644
index 00000000..730a280f
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-invoke-host-function-unverified-contract/00002.png differ
diff --git a/tests_zemu/snapshots/stax-op-invoke-host-function-unverified-contract/00003.png b/tests_zemu/snapshots/stax-op-invoke-host-function-unverified-contract/00003.png
new file mode 100644
index 00000000..e5c4f72e
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-invoke-host-function-unverified-contract/00003.png differ
diff --git a/tests_zemu/snapshots/stax-op-invoke-host-function-unverified-contract/00004.png b/tests_zemu/snapshots/stax-op-invoke-host-function-unverified-contract/00004.png
new file mode 100644
index 00000000..75a118a0
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-invoke-host-function-unverified-contract/00004.png differ
diff --git a/tests_zemu/snapshots/stax-op-invoke-host-function-unverified-contract/00005.png b/tests_zemu/snapshots/stax-op-invoke-host-function-unverified-contract/00005.png
new file mode 100644
index 00000000..cd2f5275
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-invoke-host-function-unverified-contract/00005.png differ
diff --git a/tests_zemu/snapshots/stax-op-invoke-host-function-upload-wasm/00000.png b/tests_zemu/snapshots/stax-op-invoke-host-function-upload-wasm/00000.png
new file mode 100644
index 00000000..3e30e23b
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-invoke-host-function-upload-wasm/00000.png differ
diff --git a/tests_zemu/snapshots/stax-op-invoke-host-function-upload-wasm/00001.png b/tests_zemu/snapshots/stax-op-invoke-host-function-upload-wasm/00001.png
new file mode 100644
index 00000000..5bb581ed
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-invoke-host-function-upload-wasm/00001.png differ
diff --git a/tests_zemu/snapshots/stax-op-invoke-host-function-upload-wasm/00002.png b/tests_zemu/snapshots/stax-op-invoke-host-function-upload-wasm/00002.png
new file mode 100644
index 00000000..48433faf
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-invoke-host-function-upload-wasm/00002.png differ
diff --git a/tests_zemu/snapshots/stax-op-invoke-host-function-upload-wasm/00003.png b/tests_zemu/snapshots/stax-op-invoke-host-function-upload-wasm/00003.png
new file mode 100644
index 00000000..ebc0b7e3
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-invoke-host-function-upload-wasm/00003.png differ
diff --git a/tests_zemu/snapshots/stax-op-invoke-host-function-upload-wasm/00004.png b/tests_zemu/snapshots/stax-op-invoke-host-function-upload-wasm/00004.png
new file mode 100644
index 00000000..cd2f5275
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-invoke-host-function-upload-wasm/00004.png differ
diff --git a/tests_zemu/snapshots/stax-op-restore-footprint/00000.png b/tests_zemu/snapshots/stax-op-restore-footprint/00000.png
new file mode 100644
index 00000000..3e30e23b
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-restore-footprint/00000.png differ
diff --git a/tests_zemu/snapshots/stax-op-restore-footprint/00001.png b/tests_zemu/snapshots/stax-op-restore-footprint/00001.png
new file mode 100644
index 00000000..0f27dd35
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-restore-footprint/00001.png differ
diff --git a/tests_zemu/snapshots/stax-op-restore-footprint/00002.png b/tests_zemu/snapshots/stax-op-restore-footprint/00002.png
new file mode 100644
index 00000000..0942da34
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-restore-footprint/00002.png differ
diff --git a/tests_zemu/snapshots/stax-op-restore-footprint/00003.png b/tests_zemu/snapshots/stax-op-restore-footprint/00003.png
new file mode 100644
index 00000000..ebc0b7e3
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-restore-footprint/00003.png differ
diff --git a/tests_zemu/snapshots/stax-op-restore-footprint/00004.png b/tests_zemu/snapshots/stax-op-restore-footprint/00004.png
new file mode 100644
index 00000000..cd2f5275
Binary files /dev/null and b/tests_zemu/snapshots/stax-op-restore-footprint/00004.png differ
diff --git a/tests_zemu/snapshots/stax-soroban-auth-asset-approve/00000.png b/tests_zemu/snapshots/stax-soroban-auth-asset-approve/00000.png
new file mode 100644
index 00000000..6bbd7445
Binary files /dev/null and b/tests_zemu/snapshots/stax-soroban-auth-asset-approve/00000.png differ
diff --git a/tests_zemu/snapshots/stax-soroban-auth-asset-approve/00001.png b/tests_zemu/snapshots/stax-soroban-auth-asset-approve/00001.png
new file mode 100644
index 00000000..3b48a588
Binary files /dev/null and b/tests_zemu/snapshots/stax-soroban-auth-asset-approve/00001.png differ
diff --git a/tests_zemu/snapshots/stax-soroban-auth-asset-approve/00002.png b/tests_zemu/snapshots/stax-soroban-auth-asset-approve/00002.png
new file mode 100644
index 00000000..b9e3f96d
Binary files /dev/null and b/tests_zemu/snapshots/stax-soroban-auth-asset-approve/00002.png differ
diff --git a/tests_zemu/snapshots/stax-soroban-auth-asset-approve/00003.png b/tests_zemu/snapshots/stax-soroban-auth-asset-approve/00003.png
new file mode 100644
index 00000000..28eea61a
Binary files /dev/null and b/tests_zemu/snapshots/stax-soroban-auth-asset-approve/00003.png differ
diff --git a/tests_zemu/snapshots/stax-soroban-auth-asset-approve/00004.png b/tests_zemu/snapshots/stax-soroban-auth-asset-approve/00004.png
new file mode 100644
index 00000000..01d275f1
Binary files /dev/null and b/tests_zemu/snapshots/stax-soroban-auth-asset-approve/00004.png differ
diff --git a/tests_zemu/snapshots/stax-soroban-auth-asset-approve/00005.png b/tests_zemu/snapshots/stax-soroban-auth-asset-approve/00005.png
new file mode 100644
index 00000000..d57e2614
Binary files /dev/null and b/tests_zemu/snapshots/stax-soroban-auth-asset-approve/00005.png differ
diff --git a/tests_zemu/snapshots/stax-soroban-auth-asset-transfer/00000.png b/tests_zemu/snapshots/stax-soroban-auth-asset-transfer/00000.png
new file mode 100644
index 00000000..6bbd7445
Binary files /dev/null and b/tests_zemu/snapshots/stax-soroban-auth-asset-transfer/00000.png differ
diff --git a/tests_zemu/snapshots/stax-soroban-auth-asset-transfer/00001.png b/tests_zemu/snapshots/stax-soroban-auth-asset-transfer/00001.png
new file mode 100644
index 00000000..66280499
Binary files /dev/null and b/tests_zemu/snapshots/stax-soroban-auth-asset-transfer/00001.png differ
diff --git a/tests_zemu/snapshots/stax-soroban-auth-asset-transfer/00002.png b/tests_zemu/snapshots/stax-soroban-auth-asset-transfer/00002.png
new file mode 100644
index 00000000..1ffb1db1
Binary files /dev/null and b/tests_zemu/snapshots/stax-soroban-auth-asset-transfer/00002.png differ
diff --git a/tests_zemu/snapshots/stax-soroban-auth-asset-transfer/00003.png b/tests_zemu/snapshots/stax-soroban-auth-asset-transfer/00003.png
new file mode 100644
index 00000000..b0ce9eb1
Binary files /dev/null and b/tests_zemu/snapshots/stax-soroban-auth-asset-transfer/00003.png differ
diff --git a/tests_zemu/snapshots/stax-soroban-auth-asset-transfer/00004.png b/tests_zemu/snapshots/stax-soroban-auth-asset-transfer/00004.png
new file mode 100644
index 00000000..90235e2a
Binary files /dev/null and b/tests_zemu/snapshots/stax-soroban-auth-asset-transfer/00004.png differ
diff --git a/tests_zemu/snapshots/stax-soroban-auth-asset-transfer/00005.png b/tests_zemu/snapshots/stax-soroban-auth-asset-transfer/00005.png
new file mode 100644
index 00000000..8d3550f1
Binary files /dev/null and b/tests_zemu/snapshots/stax-soroban-auth-asset-transfer/00005.png differ
diff --git a/tests_zemu/snapshots/stax-soroban-auth-asset-transfer/00006.png b/tests_zemu/snapshots/stax-soroban-auth-asset-transfer/00006.png
new file mode 100644
index 00000000..d57e2614
Binary files /dev/null and b/tests_zemu/snapshots/stax-soroban-auth-asset-transfer/00006.png differ
diff --git a/tests_zemu/snapshots/stax-soroban-auth-create-contract/00000.png b/tests_zemu/snapshots/stax-soroban-auth-create-contract/00000.png
new file mode 100644
index 00000000..6bbd7445
Binary files /dev/null and b/tests_zemu/snapshots/stax-soroban-auth-create-contract/00000.png differ
diff --git a/tests_zemu/snapshots/stax-soroban-auth-create-contract/00001.png b/tests_zemu/snapshots/stax-soroban-auth-create-contract/00001.png
new file mode 100644
index 00000000..a9dbfa28
Binary files /dev/null and b/tests_zemu/snapshots/stax-soroban-auth-create-contract/00001.png differ
diff --git a/tests_zemu/snapshots/stax-soroban-auth-create-contract/00002.png b/tests_zemu/snapshots/stax-soroban-auth-create-contract/00002.png
new file mode 100644
index 00000000..224040c2
Binary files /dev/null and b/tests_zemu/snapshots/stax-soroban-auth-create-contract/00002.png differ
diff --git a/tests_zemu/snapshots/stax-soroban-auth-create-contract/00003.png b/tests_zemu/snapshots/stax-soroban-auth-create-contract/00003.png
new file mode 100644
index 00000000..dcee29aa
Binary files /dev/null and b/tests_zemu/snapshots/stax-soroban-auth-create-contract/00003.png differ
diff --git a/tests_zemu/snapshots/stax-soroban-auth-create-contract/00004.png b/tests_zemu/snapshots/stax-soroban-auth-create-contract/00004.png
new file mode 100644
index 00000000..d57e2614
Binary files /dev/null and b/tests_zemu/snapshots/stax-soroban-auth-create-contract/00004.png differ
diff --git a/tests_zemu/snapshots/stax-soroban-auth-custom-contract/00000.png b/tests_zemu/snapshots/stax-soroban-auth-custom-contract/00000.png
new file mode 100644
index 00000000..6bbd7445
Binary files /dev/null and b/tests_zemu/snapshots/stax-soroban-auth-custom-contract/00000.png differ
diff --git a/tests_zemu/snapshots/stax-soroban-auth-custom-contract/00001.png b/tests_zemu/snapshots/stax-soroban-auth-custom-contract/00001.png
new file mode 100644
index 00000000..a9dbfa28
Binary files /dev/null and b/tests_zemu/snapshots/stax-soroban-auth-custom-contract/00001.png differ
diff --git a/tests_zemu/snapshots/stax-soroban-auth-custom-contract/00002.png b/tests_zemu/snapshots/stax-soroban-auth-custom-contract/00002.png
new file mode 100644
index 00000000..81979449
Binary files /dev/null and b/tests_zemu/snapshots/stax-soroban-auth-custom-contract/00002.png differ
diff --git a/tests_zemu/snapshots/stax-soroban-auth-custom-contract/00003.png b/tests_zemu/snapshots/stax-soroban-auth-custom-contract/00003.png
new file mode 100644
index 00000000..6be965b4
Binary files /dev/null and b/tests_zemu/snapshots/stax-soroban-auth-custom-contract/00003.png differ
diff --git a/tests_zemu/snapshots/stax-soroban-auth-custom-contract/00004.png b/tests_zemu/snapshots/stax-soroban-auth-custom-contract/00004.png
new file mode 100644
index 00000000..b0951462
Binary files /dev/null and b/tests_zemu/snapshots/stax-soroban-auth-custom-contract/00004.png differ
diff --git a/tests_zemu/snapshots/stax-soroban-auth-custom-contract/00005.png b/tests_zemu/snapshots/stax-soroban-auth-custom-contract/00005.png
new file mode 100644
index 00000000..d57e2614
Binary files /dev/null and b/tests_zemu/snapshots/stax-soroban-auth-custom-contract/00005.png differ
diff --git a/tests_zemu/snapshots/x-op-extend-footprint-ttl/00000.png b/tests_zemu/snapshots/x-op-extend-footprint-ttl/00000.png
new file mode 100644
index 00000000..df51419d
Binary files /dev/null and b/tests_zemu/snapshots/x-op-extend-footprint-ttl/00000.png differ
diff --git a/tests_zemu/snapshots/x-op-extend-footprint-ttl/00001.png b/tests_zemu/snapshots/x-op-extend-footprint-ttl/00001.png
new file mode 100644
index 00000000..76410f07
Binary files /dev/null and b/tests_zemu/snapshots/x-op-extend-footprint-ttl/00001.png differ
diff --git a/tests_zemu/snapshots/x-op-extend-footprint-ttl/00002.png b/tests_zemu/snapshots/x-op-extend-footprint-ttl/00002.png
new file mode 100644
index 00000000..39c74b8e
Binary files /dev/null and b/tests_zemu/snapshots/x-op-extend-footprint-ttl/00002.png differ
diff --git a/tests_zemu/snapshots/x-op-extend-footprint-ttl/00003.png b/tests_zemu/snapshots/x-op-extend-footprint-ttl/00003.png
new file mode 100644
index 00000000..7327c4a4
Binary files /dev/null and b/tests_zemu/snapshots/x-op-extend-footprint-ttl/00003.png differ
diff --git a/tests_zemu/snapshots/x-op-extend-footprint-ttl/00004.png b/tests_zemu/snapshots/x-op-extend-footprint-ttl/00004.png
new file mode 100644
index 00000000..06db03ba
Binary files /dev/null and b/tests_zemu/snapshots/x-op-extend-footprint-ttl/00004.png differ
diff --git a/tests_zemu/snapshots/x-op-extend-footprint-ttl/00005.png b/tests_zemu/snapshots/x-op-extend-footprint-ttl/00005.png
new file mode 100644
index 00000000..4c973d72
Binary files /dev/null and b/tests_zemu/snapshots/x-op-extend-footprint-ttl/00005.png differ
diff --git a/tests_zemu/snapshots/x-op-extend-footprint-ttl/00006.png b/tests_zemu/snapshots/x-op-extend-footprint-ttl/00006.png
new file mode 100644
index 00000000..62b55891
Binary files /dev/null and b/tests_zemu/snapshots/x-op-extend-footprint-ttl/00006.png differ
diff --git a/tests_zemu/snapshots/x-op-extend-footprint-ttl/00007.png b/tests_zemu/snapshots/x-op-extend-footprint-ttl/00007.png
new file mode 100644
index 00000000..fb27b648
Binary files /dev/null and b/tests_zemu/snapshots/x-op-extend-footprint-ttl/00007.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-asset-approve/00000.png b/tests_zemu/snapshots/x-op-invoke-host-function-asset-approve/00000.png
new file mode 100644
index 00000000..df51419d
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-asset-approve/00000.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-asset-approve/00001.png b/tests_zemu/snapshots/x-op-invoke-host-function-asset-approve/00001.png
new file mode 100644
index 00000000..76410f07
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-asset-approve/00001.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-asset-approve/00002.png b/tests_zemu/snapshots/x-op-invoke-host-function-asset-approve/00002.png
new file mode 100644
index 00000000..226be80b
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-asset-approve/00002.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-asset-approve/00003.png b/tests_zemu/snapshots/x-op-invoke-host-function-asset-approve/00003.png
new file mode 100644
index 00000000..439a5ce5
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-asset-approve/00003.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-asset-approve/00004.png b/tests_zemu/snapshots/x-op-invoke-host-function-asset-approve/00004.png
new file mode 100644
index 00000000..06db03ba
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-asset-approve/00004.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-asset-approve/00005.png b/tests_zemu/snapshots/x-op-invoke-host-function-asset-approve/00005.png
new file mode 100644
index 00000000..ea41dd20
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-asset-approve/00005.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-asset-approve/00006.png b/tests_zemu/snapshots/x-op-invoke-host-function-asset-approve/00006.png
new file mode 100644
index 00000000..11c54779
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-asset-approve/00006.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-asset-approve/00007.png b/tests_zemu/snapshots/x-op-invoke-host-function-asset-approve/00007.png
new file mode 100644
index 00000000..4960ff48
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-asset-approve/00007.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-asset-approve/00008.png b/tests_zemu/snapshots/x-op-invoke-host-function-asset-approve/00008.png
new file mode 100644
index 00000000..85a77c8c
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-asset-approve/00008.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-asset-approve/00009.png b/tests_zemu/snapshots/x-op-invoke-host-function-asset-approve/00009.png
new file mode 100644
index 00000000..7e22f042
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-asset-approve/00009.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-asset-approve/00010.png b/tests_zemu/snapshots/x-op-invoke-host-function-asset-approve/00010.png
new file mode 100644
index 00000000..61f08818
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-asset-approve/00010.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-asset-approve/00011.png b/tests_zemu/snapshots/x-op-invoke-host-function-asset-approve/00011.png
new file mode 100644
index 00000000..9899655b
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-asset-approve/00011.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-asset-approve/00012.png b/tests_zemu/snapshots/x-op-invoke-host-function-asset-approve/00012.png
new file mode 100644
index 00000000..c915f750
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-asset-approve/00012.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-asset-approve/00013.png b/tests_zemu/snapshots/x-op-invoke-host-function-asset-approve/00013.png
new file mode 100644
index 00000000..e4064ec2
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-asset-approve/00013.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-asset-approve/00014.png b/tests_zemu/snapshots/x-op-invoke-host-function-asset-approve/00014.png
new file mode 100644
index 00000000..e8ec4fb3
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-asset-approve/00014.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-asset-approve/00015.png b/tests_zemu/snapshots/x-op-invoke-host-function-asset-approve/00015.png
new file mode 100644
index 00000000..2debbe6c
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-asset-approve/00015.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-asset-approve/00016.png b/tests_zemu/snapshots/x-op-invoke-host-function-asset-approve/00016.png
new file mode 100644
index 00000000..62b55891
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-asset-approve/00016.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-asset-approve/00017.png b/tests_zemu/snapshots/x-op-invoke-host-function-asset-approve/00017.png
new file mode 100644
index 00000000..fb27b648
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-asset-approve/00017.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-asset-transfer/00000.png b/tests_zemu/snapshots/x-op-invoke-host-function-asset-transfer/00000.png
new file mode 100644
index 00000000..df51419d
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-asset-transfer/00000.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-asset-transfer/00001.png b/tests_zemu/snapshots/x-op-invoke-host-function-asset-transfer/00001.png
new file mode 100644
index 00000000..76410f07
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-asset-transfer/00001.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-asset-transfer/00002.png b/tests_zemu/snapshots/x-op-invoke-host-function-asset-transfer/00002.png
new file mode 100644
index 00000000..94d43496
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-asset-transfer/00002.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-asset-transfer/00003.png b/tests_zemu/snapshots/x-op-invoke-host-function-asset-transfer/00003.png
new file mode 100644
index 00000000..2af179b7
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-asset-transfer/00003.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-asset-transfer/00004.png b/tests_zemu/snapshots/x-op-invoke-host-function-asset-transfer/00004.png
new file mode 100644
index 00000000..06db03ba
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-asset-transfer/00004.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-asset-transfer/00005.png b/tests_zemu/snapshots/x-op-invoke-host-function-asset-transfer/00005.png
new file mode 100644
index 00000000..ea41dd20
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-asset-transfer/00005.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-asset-transfer/00006.png b/tests_zemu/snapshots/x-op-invoke-host-function-asset-transfer/00006.png
new file mode 100644
index 00000000..11c54779
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-asset-transfer/00006.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-asset-transfer/00007.png b/tests_zemu/snapshots/x-op-invoke-host-function-asset-transfer/00007.png
new file mode 100644
index 00000000..4960ff48
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-asset-transfer/00007.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-asset-transfer/00008.png b/tests_zemu/snapshots/x-op-invoke-host-function-asset-transfer/00008.png
new file mode 100644
index 00000000..24b1a786
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-asset-transfer/00008.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-asset-transfer/00009.png b/tests_zemu/snapshots/x-op-invoke-host-function-asset-transfer/00009.png
new file mode 100644
index 00000000..1a03ff09
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-asset-transfer/00009.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-asset-transfer/00010.png b/tests_zemu/snapshots/x-op-invoke-host-function-asset-transfer/00010.png
new file mode 100644
index 00000000..7e22f042
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-asset-transfer/00010.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-asset-transfer/00011.png b/tests_zemu/snapshots/x-op-invoke-host-function-asset-transfer/00011.png
new file mode 100644
index 00000000..61f08818
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-asset-transfer/00011.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-asset-transfer/00012.png b/tests_zemu/snapshots/x-op-invoke-host-function-asset-transfer/00012.png
new file mode 100644
index 00000000..32f14e26
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-asset-transfer/00012.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-asset-transfer/00013.png b/tests_zemu/snapshots/x-op-invoke-host-function-asset-transfer/00013.png
new file mode 100644
index 00000000..6e9f9881
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-asset-transfer/00013.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-asset-transfer/00014.png b/tests_zemu/snapshots/x-op-invoke-host-function-asset-transfer/00014.png
new file mode 100644
index 00000000..2debbe6c
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-asset-transfer/00014.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-asset-transfer/00015.png b/tests_zemu/snapshots/x-op-invoke-host-function-asset-transfer/00015.png
new file mode 100644
index 00000000..62b55891
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-asset-transfer/00015.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-asset-transfer/00016.png b/tests_zemu/snapshots/x-op-invoke-host-function-asset-transfer/00016.png
new file mode 100644
index 00000000..fb27b648
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-asset-transfer/00016.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-new-asset/00000.png b/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-new-asset/00000.png
new file mode 100644
index 00000000..df51419d
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-new-asset/00000.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-new-asset/00001.png b/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-new-asset/00001.png
new file mode 100644
index 00000000..76410f07
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-new-asset/00001.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-new-asset/00002.png b/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-new-asset/00002.png
new file mode 100644
index 00000000..0e5866d5
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-new-asset/00002.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-new-asset/00003.png b/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-new-asset/00003.png
new file mode 100644
index 00000000..b9ca5b27
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-new-asset/00003.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-new-asset/00004.png b/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-new-asset/00004.png
new file mode 100644
index 00000000..06db03ba
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-new-asset/00004.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-new-asset/00005.png b/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-new-asset/00005.png
new file mode 100644
index 00000000..47777ef8
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-new-asset/00005.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-new-asset/00006.png b/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-new-asset/00006.png
new file mode 100644
index 00000000..2debbe6c
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-new-asset/00006.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-new-asset/00007.png b/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-new-asset/00007.png
new file mode 100644
index 00000000..62b55891
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-new-asset/00007.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-new-asset/00008.png b/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-new-asset/00008.png
new file mode 100644
index 00000000..fb27b648
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-new-asset/00008.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-wasm-id/00000.png b/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-wasm-id/00000.png
new file mode 100644
index 00000000..df51419d
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-wasm-id/00000.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-wasm-id/00001.png b/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-wasm-id/00001.png
new file mode 100644
index 00000000..76410f07
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-wasm-id/00001.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-wasm-id/00002.png b/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-wasm-id/00002.png
new file mode 100644
index 00000000..3923d946
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-wasm-id/00002.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-wasm-id/00003.png b/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-wasm-id/00003.png
new file mode 100644
index 00000000..6d493303
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-wasm-id/00003.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-wasm-id/00004.png b/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-wasm-id/00004.png
new file mode 100644
index 00000000..06db03ba
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-wasm-id/00004.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-wasm-id/00005.png b/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-wasm-id/00005.png
new file mode 100644
index 00000000..47777ef8
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-wasm-id/00005.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-wasm-id/00006.png b/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-wasm-id/00006.png
new file mode 100644
index 00000000..62b55891
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-wasm-id/00006.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-wasm-id/00007.png b/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-wasm-id/00007.png
new file mode 100644
index 00000000..fb27b648
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-wasm-id/00007.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-wrap-asset/00000.png b/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-wrap-asset/00000.png
new file mode 100644
index 00000000..df51419d
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-wrap-asset/00000.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-wrap-asset/00001.png b/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-wrap-asset/00001.png
new file mode 100644
index 00000000..76410f07
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-wrap-asset/00001.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-wrap-asset/00002.png b/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-wrap-asset/00002.png
new file mode 100644
index 00000000..835a3b04
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-wrap-asset/00002.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-wrap-asset/00003.png b/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-wrap-asset/00003.png
new file mode 100644
index 00000000..80219c56
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-wrap-asset/00003.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-wrap-asset/00004.png b/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-wrap-asset/00004.png
new file mode 100644
index 00000000..06db03ba
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-wrap-asset/00004.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-wrap-asset/00005.png b/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-wrap-asset/00005.png
new file mode 100644
index 00000000..47777ef8
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-wrap-asset/00005.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-wrap-asset/00006.png b/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-wrap-asset/00006.png
new file mode 100644
index 00000000..62b55891
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-wrap-asset/00006.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-wrap-asset/00007.png b/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-wrap-asset/00007.png
new file mode 100644
index 00000000..fb27b648
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-create-contract-wrap-asset/00007.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-scvals/00000.png b/tests_zemu/snapshots/x-op-invoke-host-function-scvals/00000.png
new file mode 100644
index 00000000..df51419d
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-scvals/00000.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-scvals/00001.png b/tests_zemu/snapshots/x-op-invoke-host-function-scvals/00001.png
new file mode 100644
index 00000000..76410f07
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-scvals/00001.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-scvals/00002.png b/tests_zemu/snapshots/x-op-invoke-host-function-scvals/00002.png
new file mode 100644
index 00000000..09b29a5f
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-scvals/00002.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-scvals/00003.png b/tests_zemu/snapshots/x-op-invoke-host-function-scvals/00003.png
new file mode 100644
index 00000000..a3c49ec1
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-scvals/00003.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-scvals/00004.png b/tests_zemu/snapshots/x-op-invoke-host-function-scvals/00004.png
new file mode 100644
index 00000000..06db03ba
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-scvals/00004.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-scvals/00005.png b/tests_zemu/snapshots/x-op-invoke-host-function-scvals/00005.png
new file mode 100644
index 00000000..ea41dd20
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-scvals/00005.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-scvals/00006.png b/tests_zemu/snapshots/x-op-invoke-host-function-scvals/00006.png
new file mode 100644
index 00000000..11c54779
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-scvals/00006.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-scvals/00007.png b/tests_zemu/snapshots/x-op-invoke-host-function-scvals/00007.png
new file mode 100644
index 00000000..4960ff48
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-scvals/00007.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-scvals/00008.png b/tests_zemu/snapshots/x-op-invoke-host-function-scvals/00008.png
new file mode 100644
index 00000000..24d231ce
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-scvals/00008.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-scvals/00009.png b/tests_zemu/snapshots/x-op-invoke-host-function-scvals/00009.png
new file mode 100644
index 00000000..200c5220
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-scvals/00009.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-scvals/00010.png b/tests_zemu/snapshots/x-op-invoke-host-function-scvals/00010.png
new file mode 100644
index 00000000..62b55891
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-scvals/00010.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-scvals/00011.png b/tests_zemu/snapshots/x-op-invoke-host-function-scvals/00011.png
new file mode 100644
index 00000000..fb27b648
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-scvals/00011.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-approve-function/00000.png b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-approve-function/00000.png
new file mode 100644
index 00000000..df51419d
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-approve-function/00000.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-approve-function/00001.png b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-approve-function/00001.png
new file mode 100644
index 00000000..76410f07
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-approve-function/00001.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-approve-function/00002.png b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-approve-function/00002.png
new file mode 100644
index 00000000..09b29a5f
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-approve-function/00002.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-approve-function/00003.png b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-approve-function/00003.png
new file mode 100644
index 00000000..2af179b7
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-approve-function/00003.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-approve-function/00004.png b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-approve-function/00004.png
new file mode 100644
index 00000000..06db03ba
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-approve-function/00004.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-approve-function/00005.png b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-approve-function/00005.png
new file mode 100644
index 00000000..ea41dd20
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-approve-function/00005.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-approve-function/00006.png b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-approve-function/00006.png
new file mode 100644
index 00000000..11c54779
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-approve-function/00006.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-approve-function/00007.png b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-approve-function/00007.png
new file mode 100644
index 00000000..4960ff48
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-approve-function/00007.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-approve-function/00008.png b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-approve-function/00008.png
new file mode 100644
index 00000000..16ab4d15
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-approve-function/00008.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-approve-function/00009.png b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-approve-function/00009.png
new file mode 100644
index 00000000..200c5220
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-approve-function/00009.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-approve-function/00010.png b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-approve-function/00010.png
new file mode 100644
index 00000000..2debbe6c
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-approve-function/00010.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-approve-function/00011.png b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-approve-function/00011.png
new file mode 100644
index 00000000..62b55891
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-approve-function/00011.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-approve-function/00012.png b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-approve-function/00012.png
new file mode 100644
index 00000000..fb27b648
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-approve-function/00012.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-transfer-function/00000.png b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-transfer-function/00000.png
new file mode 100644
index 00000000..df51419d
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-transfer-function/00000.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-transfer-function/00001.png b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-transfer-function/00001.png
new file mode 100644
index 00000000..76410f07
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-transfer-function/00001.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-transfer-function/00002.png b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-transfer-function/00002.png
new file mode 100644
index 00000000..09b29a5f
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-transfer-function/00002.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-transfer-function/00003.png b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-transfer-function/00003.png
new file mode 100644
index 00000000..fe00bd75
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-transfer-function/00003.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-transfer-function/00004.png b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-transfer-function/00004.png
new file mode 100644
index 00000000..06db03ba
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-transfer-function/00004.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-transfer-function/00005.png b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-transfer-function/00005.png
new file mode 100644
index 00000000..ea41dd20
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-transfer-function/00005.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-transfer-function/00006.png b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-transfer-function/00006.png
new file mode 100644
index 00000000..85563723
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-transfer-function/00006.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-transfer-function/00007.png b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-transfer-function/00007.png
new file mode 100644
index 00000000..8069468a
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-transfer-function/00007.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-transfer-function/00008.png b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-transfer-function/00008.png
new file mode 100644
index 00000000..85a77c8c
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-transfer-function/00008.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-transfer-function/00009.png b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-transfer-function/00009.png
new file mode 100644
index 00000000..200c5220
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-transfer-function/00009.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-transfer-function/00010.png b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-transfer-function/00010.png
new file mode 100644
index 00000000..62b55891
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-transfer-function/00010.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-transfer-function/00011.png b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-transfer-function/00011.png
new file mode 100644
index 00000000..fb27b648
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract-with-transfer-function/00011.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract/00000.png b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract/00000.png
new file mode 100644
index 00000000..df51419d
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract/00000.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract/00001.png b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract/00001.png
new file mode 100644
index 00000000..76410f07
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract/00001.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract/00002.png b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract/00002.png
new file mode 100644
index 00000000..4e13fe4a
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract/00002.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract/00003.png b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract/00003.png
new file mode 100644
index 00000000..7d51372f
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract/00003.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract/00004.png b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract/00004.png
new file mode 100644
index 00000000..06db03ba
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract/00004.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract/00005.png b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract/00005.png
new file mode 100644
index 00000000..ea41dd20
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract/00005.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract/00006.png b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract/00006.png
new file mode 100644
index 00000000..85563723
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract/00006.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract/00007.png b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract/00007.png
new file mode 100644
index 00000000..8069468a
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract/00007.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract/00008.png b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract/00008.png
new file mode 100644
index 00000000..98bd1093
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract/00008.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract/00009.png b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract/00009.png
new file mode 100644
index 00000000..200c5220
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract/00009.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract/00010.png b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract/00010.png
new file mode 100644
index 00000000..62b55891
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract/00010.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract/00011.png b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract/00011.png
new file mode 100644
index 00000000..fb27b648
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-unverified-contract/00011.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-upload-wasm/00000.png b/tests_zemu/snapshots/x-op-invoke-host-function-upload-wasm/00000.png
new file mode 100644
index 00000000..df51419d
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-upload-wasm/00000.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-upload-wasm/00001.png b/tests_zemu/snapshots/x-op-invoke-host-function-upload-wasm/00001.png
new file mode 100644
index 00000000..76410f07
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-upload-wasm/00001.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-upload-wasm/00002.png b/tests_zemu/snapshots/x-op-invoke-host-function-upload-wasm/00002.png
new file mode 100644
index 00000000..be7769d0
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-upload-wasm/00002.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-upload-wasm/00003.png b/tests_zemu/snapshots/x-op-invoke-host-function-upload-wasm/00003.png
new file mode 100644
index 00000000..a8357a99
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-upload-wasm/00003.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-upload-wasm/00004.png b/tests_zemu/snapshots/x-op-invoke-host-function-upload-wasm/00004.png
new file mode 100644
index 00000000..06db03ba
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-upload-wasm/00004.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-upload-wasm/00005.png b/tests_zemu/snapshots/x-op-invoke-host-function-upload-wasm/00005.png
new file mode 100644
index 00000000..aa33fe01
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-upload-wasm/00005.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-upload-wasm/00006.png b/tests_zemu/snapshots/x-op-invoke-host-function-upload-wasm/00006.png
new file mode 100644
index 00000000..2debbe6c
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-upload-wasm/00006.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-upload-wasm/00007.png b/tests_zemu/snapshots/x-op-invoke-host-function-upload-wasm/00007.png
new file mode 100644
index 00000000..62b55891
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-upload-wasm/00007.png differ
diff --git a/tests_zemu/snapshots/x-op-invoke-host-function-upload-wasm/00008.png b/tests_zemu/snapshots/x-op-invoke-host-function-upload-wasm/00008.png
new file mode 100644
index 00000000..fb27b648
Binary files /dev/null and b/tests_zemu/snapshots/x-op-invoke-host-function-upload-wasm/00008.png differ
diff --git a/tests_zemu/snapshots/x-op-restore-footprint/00000.png b/tests_zemu/snapshots/x-op-restore-footprint/00000.png
new file mode 100644
index 00000000..df51419d
Binary files /dev/null and b/tests_zemu/snapshots/x-op-restore-footprint/00000.png differ
diff --git a/tests_zemu/snapshots/x-op-restore-footprint/00001.png b/tests_zemu/snapshots/x-op-restore-footprint/00001.png
new file mode 100644
index 00000000..2e650e1f
Binary files /dev/null and b/tests_zemu/snapshots/x-op-restore-footprint/00001.png differ
diff --git a/tests_zemu/snapshots/x-op-restore-footprint/00002.png b/tests_zemu/snapshots/x-op-restore-footprint/00002.png
new file mode 100644
index 00000000..eff68d24
Binary files /dev/null and b/tests_zemu/snapshots/x-op-restore-footprint/00002.png differ
diff --git a/tests_zemu/snapshots/x-op-restore-footprint/00003.png b/tests_zemu/snapshots/x-op-restore-footprint/00003.png
new file mode 100644
index 00000000..a1f1e09c
Binary files /dev/null and b/tests_zemu/snapshots/x-op-restore-footprint/00003.png differ
diff --git a/tests_zemu/snapshots/x-op-restore-footprint/00004.png b/tests_zemu/snapshots/x-op-restore-footprint/00004.png
new file mode 100644
index 00000000..1031d9e1
Binary files /dev/null and b/tests_zemu/snapshots/x-op-restore-footprint/00004.png differ
diff --git a/tests_zemu/snapshots/x-op-restore-footprint/00005.png b/tests_zemu/snapshots/x-op-restore-footprint/00005.png
new file mode 100644
index 00000000..06db03ba
Binary files /dev/null and b/tests_zemu/snapshots/x-op-restore-footprint/00005.png differ
diff --git a/tests_zemu/snapshots/x-op-restore-footprint/00006.png b/tests_zemu/snapshots/x-op-restore-footprint/00006.png
new file mode 100644
index 00000000..4ddb7cc3
Binary files /dev/null and b/tests_zemu/snapshots/x-op-restore-footprint/00006.png differ
diff --git a/tests_zemu/snapshots/x-op-restore-footprint/00007.png b/tests_zemu/snapshots/x-op-restore-footprint/00007.png
new file mode 100644
index 00000000..2debbe6c
Binary files /dev/null and b/tests_zemu/snapshots/x-op-restore-footprint/00007.png differ
diff --git a/tests_zemu/snapshots/x-op-restore-footprint/00008.png b/tests_zemu/snapshots/x-op-restore-footprint/00008.png
new file mode 100644
index 00000000..62b55891
Binary files /dev/null and b/tests_zemu/snapshots/x-op-restore-footprint/00008.png differ
diff --git a/tests_zemu/snapshots/x-op-restore-footprint/00009.png b/tests_zemu/snapshots/x-op-restore-footprint/00009.png
new file mode 100644
index 00000000..fb27b648
Binary files /dev/null and b/tests_zemu/snapshots/x-op-restore-footprint/00009.png differ
diff --git a/tests_zemu/snapshots/x-soroban-auth-asset-approve/00000.png b/tests_zemu/snapshots/x-soroban-auth-asset-approve/00000.png
new file mode 100644
index 00000000..25549343
Binary files /dev/null and b/tests_zemu/snapshots/x-soroban-auth-asset-approve/00000.png differ
diff --git a/tests_zemu/snapshots/x-soroban-auth-asset-approve/00001.png b/tests_zemu/snapshots/x-soroban-auth-asset-approve/00001.png
new file mode 100644
index 00000000..1768be3e
Binary files /dev/null and b/tests_zemu/snapshots/x-soroban-auth-asset-approve/00001.png differ
diff --git a/tests_zemu/snapshots/x-soroban-auth-asset-approve/00002.png b/tests_zemu/snapshots/x-soroban-auth-asset-approve/00002.png
new file mode 100644
index 00000000..31870ac3
Binary files /dev/null and b/tests_zemu/snapshots/x-soroban-auth-asset-approve/00002.png differ
diff --git a/tests_zemu/snapshots/x-soroban-auth-asset-approve/00003.png b/tests_zemu/snapshots/x-soroban-auth-asset-approve/00003.png
new file mode 100644
index 00000000..85a77c8c
Binary files /dev/null and b/tests_zemu/snapshots/x-soroban-auth-asset-approve/00003.png differ
diff --git a/tests_zemu/snapshots/x-soroban-auth-asset-approve/00004.png b/tests_zemu/snapshots/x-soroban-auth-asset-approve/00004.png
new file mode 100644
index 00000000..13952475
Binary files /dev/null and b/tests_zemu/snapshots/x-soroban-auth-asset-approve/00004.png differ
diff --git a/tests_zemu/snapshots/x-soroban-auth-asset-approve/00005.png b/tests_zemu/snapshots/x-soroban-auth-asset-approve/00005.png
new file mode 100644
index 00000000..51c3800e
Binary files /dev/null and b/tests_zemu/snapshots/x-soroban-auth-asset-approve/00005.png differ
diff --git a/tests_zemu/snapshots/x-soroban-auth-asset-approve/00006.png b/tests_zemu/snapshots/x-soroban-auth-asset-approve/00006.png
new file mode 100644
index 00000000..66665edc
Binary files /dev/null and b/tests_zemu/snapshots/x-soroban-auth-asset-approve/00006.png differ
diff --git a/tests_zemu/snapshots/x-soroban-auth-asset-approve/00007.png b/tests_zemu/snapshots/x-soroban-auth-asset-approve/00007.png
new file mode 100644
index 00000000..33f97d5a
Binary files /dev/null and b/tests_zemu/snapshots/x-soroban-auth-asset-approve/00007.png differ
diff --git a/tests_zemu/snapshots/x-soroban-auth-asset-approve/00008.png b/tests_zemu/snapshots/x-soroban-auth-asset-approve/00008.png
new file mode 100644
index 00000000..fea626f5
Binary files /dev/null and b/tests_zemu/snapshots/x-soroban-auth-asset-approve/00008.png differ
diff --git a/tests_zemu/snapshots/x-soroban-auth-asset-approve/00009.png b/tests_zemu/snapshots/x-soroban-auth-asset-approve/00009.png
new file mode 100644
index 00000000..f81b25e3
Binary files /dev/null and b/tests_zemu/snapshots/x-soroban-auth-asset-approve/00009.png differ
diff --git a/tests_zemu/snapshots/x-soroban-auth-asset-approve/00010.png b/tests_zemu/snapshots/x-soroban-auth-asset-approve/00010.png
new file mode 100644
index 00000000..c428a9ef
Binary files /dev/null and b/tests_zemu/snapshots/x-soroban-auth-asset-approve/00010.png differ
diff --git a/tests_zemu/snapshots/x-soroban-auth-asset-approve/00011.png b/tests_zemu/snapshots/x-soroban-auth-asset-approve/00011.png
new file mode 100644
index 00000000..fc3a94d3
Binary files /dev/null and b/tests_zemu/snapshots/x-soroban-auth-asset-approve/00011.png differ
diff --git a/tests_zemu/snapshots/x-soroban-auth-asset-approve/00012.png b/tests_zemu/snapshots/x-soroban-auth-asset-approve/00012.png
new file mode 100644
index 00000000..7bf396f2
Binary files /dev/null and b/tests_zemu/snapshots/x-soroban-auth-asset-approve/00012.png differ
diff --git a/tests_zemu/snapshots/x-soroban-auth-asset-approve/00013.png b/tests_zemu/snapshots/x-soroban-auth-asset-approve/00013.png
new file mode 100644
index 00000000..91ca6d69
Binary files /dev/null and b/tests_zemu/snapshots/x-soroban-auth-asset-approve/00013.png differ
diff --git a/tests_zemu/snapshots/x-soroban-auth-asset-approve/00014.png b/tests_zemu/snapshots/x-soroban-auth-asset-approve/00014.png
new file mode 100644
index 00000000..fb27b648
Binary files /dev/null and b/tests_zemu/snapshots/x-soroban-auth-asset-approve/00014.png differ
diff --git a/tests_zemu/snapshots/x-soroban-auth-asset-transfer/00000.png b/tests_zemu/snapshots/x-soroban-auth-asset-transfer/00000.png
new file mode 100644
index 00000000..25549343
Binary files /dev/null and b/tests_zemu/snapshots/x-soroban-auth-asset-transfer/00000.png differ
diff --git a/tests_zemu/snapshots/x-soroban-auth-asset-transfer/00001.png b/tests_zemu/snapshots/x-soroban-auth-asset-transfer/00001.png
new file mode 100644
index 00000000..11c54779
Binary files /dev/null and b/tests_zemu/snapshots/x-soroban-auth-asset-transfer/00001.png differ
diff --git a/tests_zemu/snapshots/x-soroban-auth-asset-transfer/00002.png b/tests_zemu/snapshots/x-soroban-auth-asset-transfer/00002.png
new file mode 100644
index 00000000..4960ff48
Binary files /dev/null and b/tests_zemu/snapshots/x-soroban-auth-asset-transfer/00002.png differ
diff --git a/tests_zemu/snapshots/x-soroban-auth-asset-transfer/00003.png b/tests_zemu/snapshots/x-soroban-auth-asset-transfer/00003.png
new file mode 100644
index 00000000..24b1a786
Binary files /dev/null and b/tests_zemu/snapshots/x-soroban-auth-asset-transfer/00003.png differ
diff --git a/tests_zemu/snapshots/x-soroban-auth-asset-transfer/00004.png b/tests_zemu/snapshots/x-soroban-auth-asset-transfer/00004.png
new file mode 100644
index 00000000..76410f07
Binary files /dev/null and b/tests_zemu/snapshots/x-soroban-auth-asset-transfer/00004.png differ
diff --git a/tests_zemu/snapshots/x-soroban-auth-asset-transfer/00005.png b/tests_zemu/snapshots/x-soroban-auth-asset-transfer/00005.png
new file mode 100644
index 00000000..51c3800e
Binary files /dev/null and b/tests_zemu/snapshots/x-soroban-auth-asset-transfer/00005.png differ
diff --git a/tests_zemu/snapshots/x-soroban-auth-asset-transfer/00006.png b/tests_zemu/snapshots/x-soroban-auth-asset-transfer/00006.png
new file mode 100644
index 00000000..66665edc
Binary files /dev/null and b/tests_zemu/snapshots/x-soroban-auth-asset-transfer/00006.png differ
diff --git a/tests_zemu/snapshots/x-soroban-auth-asset-transfer/00007.png b/tests_zemu/snapshots/x-soroban-auth-asset-transfer/00007.png
new file mode 100644
index 00000000..21558978
Binary files /dev/null and b/tests_zemu/snapshots/x-soroban-auth-asset-transfer/00007.png differ
diff --git a/tests_zemu/snapshots/x-soroban-auth-asset-transfer/00008.png b/tests_zemu/snapshots/x-soroban-auth-asset-transfer/00008.png
new file mode 100644
index 00000000..f81b25e3
Binary files /dev/null and b/tests_zemu/snapshots/x-soroban-auth-asset-transfer/00008.png differ
diff --git a/tests_zemu/snapshots/x-soroban-auth-asset-transfer/00009.png b/tests_zemu/snapshots/x-soroban-auth-asset-transfer/00009.png
new file mode 100644
index 00000000..c428a9ef
Binary files /dev/null and b/tests_zemu/snapshots/x-soroban-auth-asset-transfer/00009.png differ
diff --git a/tests_zemu/snapshots/x-soroban-auth-asset-transfer/00010.png b/tests_zemu/snapshots/x-soroban-auth-asset-transfer/00010.png
new file mode 100644
index 00000000..4ffc4013
Binary files /dev/null and b/tests_zemu/snapshots/x-soroban-auth-asset-transfer/00010.png differ
diff --git a/tests_zemu/snapshots/x-soroban-auth-asset-transfer/00011.png b/tests_zemu/snapshots/x-soroban-auth-asset-transfer/00011.png
new file mode 100644
index 00000000..33ab9009
Binary files /dev/null and b/tests_zemu/snapshots/x-soroban-auth-asset-transfer/00011.png differ
diff --git a/tests_zemu/snapshots/x-soroban-auth-asset-transfer/00012.png b/tests_zemu/snapshots/x-soroban-auth-asset-transfer/00012.png
new file mode 100644
index 00000000..91ca6d69
Binary files /dev/null and b/tests_zemu/snapshots/x-soroban-auth-asset-transfer/00012.png differ
diff --git a/tests_zemu/snapshots/x-soroban-auth-asset-transfer/00013.png b/tests_zemu/snapshots/x-soroban-auth-asset-transfer/00013.png
new file mode 100644
index 00000000..fb27b648
Binary files /dev/null and b/tests_zemu/snapshots/x-soroban-auth-asset-transfer/00013.png differ
diff --git a/tests_zemu/snapshots/x-soroban-auth-create-contract/00000.png b/tests_zemu/snapshots/x-soroban-auth-create-contract/00000.png
new file mode 100644
index 00000000..25549343
Binary files /dev/null and b/tests_zemu/snapshots/x-soroban-auth-create-contract/00000.png differ
diff --git a/tests_zemu/snapshots/x-soroban-auth-create-contract/00001.png b/tests_zemu/snapshots/x-soroban-auth-create-contract/00001.png
new file mode 100644
index 00000000..68254c16
Binary files /dev/null and b/tests_zemu/snapshots/x-soroban-auth-create-contract/00001.png differ
diff --git a/tests_zemu/snapshots/x-soroban-auth-create-contract/00002.png b/tests_zemu/snapshots/x-soroban-auth-create-contract/00002.png
new file mode 100644
index 00000000..76410f07
Binary files /dev/null and b/tests_zemu/snapshots/x-soroban-auth-create-contract/00002.png differ
diff --git a/tests_zemu/snapshots/x-soroban-auth-create-contract/00003.png b/tests_zemu/snapshots/x-soroban-auth-create-contract/00003.png
new file mode 100644
index 00000000..91ca6d69
Binary files /dev/null and b/tests_zemu/snapshots/x-soroban-auth-create-contract/00003.png differ
diff --git a/tests_zemu/snapshots/x-soroban-auth-create-contract/00004.png b/tests_zemu/snapshots/x-soroban-auth-create-contract/00004.png
new file mode 100644
index 00000000..fb27b648
Binary files /dev/null and b/tests_zemu/snapshots/x-soroban-auth-create-contract/00004.png differ
diff --git a/tests_zemu/snapshots/x-soroban-auth-custom-contract/00000.png b/tests_zemu/snapshots/x-soroban-auth-custom-contract/00000.png
new file mode 100644
index 00000000..25549343
Binary files /dev/null and b/tests_zemu/snapshots/x-soroban-auth-custom-contract/00000.png differ
diff --git a/tests_zemu/snapshots/x-soroban-auth-custom-contract/00001.png b/tests_zemu/snapshots/x-soroban-auth-custom-contract/00001.png
new file mode 100644
index 00000000..11c54779
Binary files /dev/null and b/tests_zemu/snapshots/x-soroban-auth-custom-contract/00001.png differ
diff --git a/tests_zemu/snapshots/x-soroban-auth-custom-contract/00002.png b/tests_zemu/snapshots/x-soroban-auth-custom-contract/00002.png
new file mode 100644
index 00000000..4960ff48
Binary files /dev/null and b/tests_zemu/snapshots/x-soroban-auth-custom-contract/00002.png differ
diff --git a/tests_zemu/snapshots/x-soroban-auth-custom-contract/00003.png b/tests_zemu/snapshots/x-soroban-auth-custom-contract/00003.png
new file mode 100644
index 00000000..24d231ce
Binary files /dev/null and b/tests_zemu/snapshots/x-soroban-auth-custom-contract/00003.png differ
diff --git a/tests_zemu/snapshots/x-soroban-auth-custom-contract/00004.png b/tests_zemu/snapshots/x-soroban-auth-custom-contract/00004.png
new file mode 100644
index 00000000..76410f07
Binary files /dev/null and b/tests_zemu/snapshots/x-soroban-auth-custom-contract/00004.png differ
diff --git a/tests_zemu/snapshots/x-soroban-auth-custom-contract/00005.png b/tests_zemu/snapshots/x-soroban-auth-custom-contract/00005.png
new file mode 100644
index 00000000..cf038fbd
Binary files /dev/null and b/tests_zemu/snapshots/x-soroban-auth-custom-contract/00005.png differ
diff --git a/tests_zemu/snapshots/x-soroban-auth-custom-contract/00006.png b/tests_zemu/snapshots/x-soroban-auth-custom-contract/00006.png
new file mode 100644
index 00000000..62f641e1
Binary files /dev/null and b/tests_zemu/snapshots/x-soroban-auth-custom-contract/00006.png differ
diff --git a/tests_zemu/snapshots/x-soroban-auth-custom-contract/00007.png b/tests_zemu/snapshots/x-soroban-auth-custom-contract/00007.png
new file mode 100644
index 00000000..200c5220
Binary files /dev/null and b/tests_zemu/snapshots/x-soroban-auth-custom-contract/00007.png differ
diff --git a/tests_zemu/snapshots/x-soroban-auth-custom-contract/00008.png b/tests_zemu/snapshots/x-soroban-auth-custom-contract/00008.png
new file mode 100644
index 00000000..86ec1949
Binary files /dev/null and b/tests_zemu/snapshots/x-soroban-auth-custom-contract/00008.png differ
diff --git a/tests_zemu/snapshots/x-soroban-auth-custom-contract/00009.png b/tests_zemu/snapshots/x-soroban-auth-custom-contract/00009.png
new file mode 100644
index 00000000..f4869866
Binary files /dev/null and b/tests_zemu/snapshots/x-soroban-auth-custom-contract/00009.png differ
diff --git a/tests_zemu/snapshots/x-soroban-auth-custom-contract/00010.png b/tests_zemu/snapshots/x-soroban-auth-custom-contract/00010.png
new file mode 100644
index 00000000..91ca6d69
Binary files /dev/null and b/tests_zemu/snapshots/x-soroban-auth-custom-contract/00010.png differ
diff --git a/tests_zemu/snapshots/x-soroban-auth-custom-contract/00011.png b/tests_zemu/snapshots/x-soroban-auth-custom-contract/00011.png
new file mode 100644
index 00000000..fb27b648
Binary files /dev/null and b/tests_zemu/snapshots/x-soroban-auth-custom-contract/00011.png differ
diff --git a/tests_zemu/tests/main.test.ts b/tests_zemu/tests/main.test.ts
index 71909df5..163de006 100644
--- a/tests_zemu/tests/main.test.ts
+++ b/tests_zemu/tests/main.test.ts
@@ -1,9 +1,10 @@
import { DEFAULT_START_OPTIONS, ButtonKind, TouchNavigation } from "@zondax/zemu";
import { APP_SEED, models } from "./common";
import * as testCasesFunction from "tests-common";
-import { Keypair } from "stellar-base";
+import { Keypair, xdr } from "@stellar/stellar-base";
import Str from "@ledgerhq/hw-app-str";
import Zemu from "@zondax/zemu";
+import { sha256 } from 'sha.js'
beforeAll(async () => {
await Zemu.checkAndPullImage();
@@ -27,19 +28,6 @@ test.each(models)("can start and stop container ($dev.name)", async ({ dev, star
}
});
-test.each(models)("app version ($dev.name)", async ({ dev, startText }) => {
- const sim = new Zemu(dev.path);
- try {
- await sim.start({ ...defaultOptions, model: dev.name, startText: startText });
- const transport = await sim.getTransport();
- const str = new Str(transport);
- const result = await str.getAppConfiguration();
- expect(result.version).toBe("5.0.2");
- } finally {
- await sim.close();
- }
-});
-
describe("get public key", () => {
test.each(models)("get public key without confirmation ($dev.name)", async ({ dev, startText }) => {
const sim = new Zemu(dev.path);
@@ -213,6 +201,7 @@ describe("transactions", () => {
ButtonKind.InfoButton,
ButtonKind.NavRightButton,
ButtonKind.ToggleSettingButton2,
+ ButtonKind.ToggleSettingButton3,
]);
await sim.navigate(".", `tx`, settingNav.schedule, true, false);
} else {
@@ -220,6 +209,8 @@ describe("transactions", () => {
await sim.clickBoth(undefined, false);
await sim.clickRight();
await sim.clickBoth(undefined, false);
+ await sim.clickRight();
+ await sim.clickBoth(undefined, false);
}
const result = str.signTransaction("44'/148'/0'", tx.signatureBase());
const events = await sim.getEvents();
@@ -259,13 +250,14 @@ describe("transactions", () => {
const settingNav = new TouchNavigation([
ButtonKind.InfoButton,
ButtonKind.NavRightButton,
- ButtonKind.ToggleSettingButton2,
+ ButtonKind.ToggleSettingButton3,
]);
await sim.navigate(".", `reject tx`, settingNav.schedule, true, false);
} else {
await sim.clickRight();
await sim.clickBoth(undefined, false);
await sim.clickRight();
+ await sim.clickRight();
await sim.clickBoth(undefined, false);
}
@@ -307,13 +299,14 @@ describe("transactions", () => {
const settingNav = new TouchNavigation([
ButtonKind.InfoButton,
ButtonKind.NavRightButton,
- ButtonKind.ToggleSettingButton2,
+ ButtonKind.ToggleSettingButton3,
]);
await sim.navigate(".", `reject fee bump tx`, settingNav.schedule, true, false);
} else {
await sim.clickRight();
await sim.clickBoth(undefined, false);
await sim.clickRight();
+ await sim.clickRight();
await sim.clickBoth(undefined, false);
}
@@ -402,8 +395,265 @@ describe("transactions", () => {
await sim.close();
}
});
+
+ test.each(models)("disable custom contract support ($dev.name)", async ({ dev, startText }) => {
+ const tx = testCasesFunction.opInvokeHostFunctionUnverifiedContract()
+ const sim = new Zemu(dev.path);
+ try {
+ await sim.start({ ...defaultOptions, model: dev.name, startText: startText });
+ const transport = await sim.getTransport();
+ const str = new Str(transport);
+
+ expect(() => str.signTransaction("44'/148'/0'", tx.signatureBase())).rejects.toThrow(
+ new Error("Custom contract mode is not enabled")
+ );
+ } finally {
+ await sim.close();
+ }
+ });
});
+describe("soroban auth", () => {
+ test.each(models)("custom contract ($dev.name)", async ({ dev, startText }) => {
+ const hashIdPreimage = xdr.HashIdPreimage.fromXDR("AAAACc7gMC1ZhE0yvcqRXIID3USzP7t+3BkFHqN6vt8o7NRyAAAAAAAAANUAAAB7AAAAAAAAAAHXkotywnA8z+r365/0701QSlWouXn8m0UOoshCtNHOYQAAAAR0ZXN0AAAABwAAABIAAAAAAAAAAJR2U+bMMdA0nH7HAYNhr5Op1xUBrfPK8nO8iTBa1KacAAAAEgAAAAAAAAAAWLfEosjyl6qPPSRxKB/fzOyv5I5WYzE+wY4Spz7KmKEAAAANAAAA3GhlbGxvIHdvcmxkaGVsbG8gd29ybGRoZWxsbyB3b3JsZGhlbGxvIHdvcmxkaGVsbG8gd29ybGRoZWxsbyB3b3JsZGhlbGxvIHdvcmxkaGVsbG8gd29ybGRoZWxsbyB3b3JsZGhlbGxvIHdvcmxkaGVsbG8gd29ybGRoZWxsbyB3b3JsZGhlbGxvIHdvcmxkaGVsbG8gd29ybGRoZWxsbyB3b3JsZGhlbGxvIHdvcmxkaGVsbG8gd29ybGRoZWxsbyB3b3JsZGhlbGxvIHdvcmxkaGVsbG8gd29ybGQAAAAQAAAAAQAAAAMAAAAGAAAAAAAAAOgAAAAGAAAAAAAAACsAAAAGAAAAAAAAAdIAAAARAAAAAQAAAAIAAAAGAAAAAAAAAAEAAAAGAAAAAAAAAAIAAAAGAAAAAAAAAAMAAAAGAAAAAAAAAAQAAAAGAAAAAAAAKGcAAAAUAAAAAgAAAAAAAAAB15KLcsJwPM/q9+uf9O9NUEpVqLl5/JtFDqLIQrTRzmEAAAAEc3ViMQAAAAEAAAASAAAAAAAAAACUdlPmzDHQNJx+xwGDYa+TqdcVAa3zyvJzvIkwWtSmnAAAAAEAAAAAAAAAAdeSi3LCcDzP6vfrn/TvTVBKVai5efybRQ6iyEK00c5hAAAABHN1YjMAAAABAAAAEgAAAAAAAAAAlHZT5swx0DScfscBg2Gvk6nXFQGt88ryc7yJMFrUppwAAAAAAAAAAAAAAAHXkotywnA8z+r365/0701QSlWouXn8m0UOoshCtNHOYQAAAARzdWIyAAAAAQAAABIAAAAAAAAAAJR2U+bMMdA0nH7HAYNhr5Op1xUBrfPK8nO8iTBa1KacAAAAAA==", "base64")
+ const sim = new Zemu(dev.path);
+ try {
+ await sim.start({ ...defaultOptions, model: dev.name, startText: startText });
+ const transport = await sim.getTransport();
+ const str = new Str(transport);
+ if (dev.name == "stax") {
+ const settingNav = new TouchNavigation([
+ ButtonKind.InfoButton,
+ ButtonKind.NavRightButton,
+ ButtonKind.ToggleSettingButton2,
+ ButtonKind.ToggleSettingButton3,
+ ]);
+ await sim.navigate(".", `tx`, settingNav.schedule, true, false);
+ } else {
+ await sim.clickRight();
+ await sim.clickBoth(undefined, false);
+ await sim.clickRight();
+ await sim.clickBoth(undefined, false);
+ }
+ const result = str.signSorobanAuthoration("44'/148'/0'", hashIdPreimage.toXDR());
+ const events = await sim.getEvents();
+ await sim.waitForScreenChanges(events);
+ let textToFind = "Finalize";
+ if (dev.name == "stax") {
+ textToFind = "Hold to";
+ }
+ await sim.navigateAndCompareUntilText(
+ ".",
+ `${dev.prefix.toLowerCase()}-soroban-auth-custom-contract`,
+ textToFind,
+ true,
+ undefined,
+ 1000 * 60 * 60
+ );
+ const kp = Keypair.fromSecret("SAIYWGGWU2WMXYDSK33UBQBMBDKU4TTJVY3ZIFF24H2KQDR7RQW5KAEK");
+ const signature = kp.sign(hash(hashIdPreimage.toXDR()))
+ expect((await result).signature).toStrictEqual(signature);
+ } finally {
+ await sim.close();
+ }
+ });
+
+ test.each(models)("disable custom contract support ($dev.name)", async ({ dev, startText }) => {
+ const hashIdPreimage = xdr.HashIdPreimage.fromXDR("AAAACc7gMC1ZhE0yvcqRXIID3USzP7t+3BkFHqN6vt8o7NRyAAAAAEl1bUUCEMifAAAAAAAAAAHXkotywnA8z+r365/0701QSlWouXn8m0UOoshCtNHOYQAAAApjdXN0b21mdW5jAAAAAAACAAAAEgAAAAAAAAAArNCtx3gjgAC9trrSLpGZI4l/eofjEM7xUF5sCwtxVCUAAAAKAAAAAAAAAAAAAAACaUQFAAAAAAA=", "base64")
+ const sim = new Zemu(dev.path);
+ try {
+ await sim.start({ ...defaultOptions, model: dev.name, startText: startText });
+ const transport = await sim.getTransport();
+ const str = new Str(transport);
+ expect(() => str.signSorobanAuthoration("44'/148'/0'", hashIdPreimage.toXDR())).rejects.toThrow(
+ new Error("Custom contract mode is not enabled")
+ );
+ } finally {
+ await sim.close();
+ }
+ })
+
+ test.each(models)("asset transfer ($dev.name)", async ({ dev, startText }) => {
+ // from stellar_sdk import *
+ // from stellar_sdk import xdr
+
+ // kp = Keypair.from_mnemonic_phrase("sock divorce large flag accident car innocent step success grid attitude race")
+
+ // data = xdr.HashIDPreimage(
+ // xdr.EnvelopeType.ENVELOPE_TYPE_SOROBAN_AUTHORIZATION,
+ // soroban_authorization=xdr.HashIDPreimageSorobanAuthorization(
+ // network_id=xdr.Hash(Network(Network.TESTNET_NETWORK_PASSPHRASE).network_id()),
+ // nonce=xdr.Int64(1232432453),
+ // signature_expiration_ledger=xdr.Uint32(34654367),
+ // invocation=xdr.SorobanAuthorizedInvocation(function=xdr.SorobanAuthorizedFunction(
+ // xdr.SorobanAuthorizedFunctionType.SOROBAN_AUTHORIZED_FUNCTION_TYPE_CONTRACT_FN,
+ // contract_fn=xdr.InvokeContractArgs(
+ // contract_address=Address(
+ // "CDLZFC3SYJYDZT7K67VZ75HPJVIEUVNIXF47ZG2FB2RMQQVU2HHGCYSC").to_xdr_sc_address(),
+ // function_name=scval.to_symbol("transfer").sym,
+ // args=[
+ // scval.to_address("GCWNBLOHPARYAAF5W25NELURTERYS732Q7RRBTXRKBPGYCYLOFKCLKKA"), # from
+ // scval.to_address("GB42LIJ3V5KXCY32EFL4NL73OSI5PRCFJ3WNFMFX4QHGOAR7BFX2YC34"), # to
+ // scval.to_int128(103560 * 10 ** 5), # amount
+ // ]
+ // )), sub_invocations=[])
+ // )
+ // )
+
+ // print(data.to_xdr())
+
+ const hashIdPreimage = xdr.HashIdPreimage.fromXDR("AAAACc7gMC1ZhE0yvcqRXIID3USzP7t+3BkFHqN6vt8o7NRyAAAAAEl1bUUCEMifAAAAAAAAAAHXkotywnA8z+r365/0701QSlWouXn8m0UOoshCtNHOYQAAAAh0cmFuc2ZlcgAAAAMAAAASAAAAAAAAAACs0K3HeCOAAL22utIukZkjiX96h+MQzvFQXmwLC3FUJQAAABIAAAAAAAAAAHmloTuvVXFjeiFXxq/7dJHXxEVO7NKwt+QOZwI/CW+sAAAACgAAAAAAAAAAAAAAAmlEBQAAAAAA", "base64")
+ const sim = new Zemu(dev.path);
+ try {
+ await sim.start({ ...defaultOptions, model: dev.name, startText: startText });
+ const transport = await sim.getTransport();
+ const str = new Str(transport);
+ const result = str.signSorobanAuthoration("44'/148'/0'", hashIdPreimage.toXDR());
+ const events = await sim.getEvents();
+ await sim.waitForScreenChanges(events);
+ let textToFind = "Finalize";
+ if (dev.name == "stax") {
+ textToFind = "Hold to";
+ }
+ await sim.navigateAndCompareUntilText(
+ ".",
+ `${dev.prefix.toLowerCase()}-soroban-auth-asset-transfer`,
+ textToFind,
+ true,
+ undefined,
+ 1000 * 60 * 60
+ );
+ const kp = Keypair.fromSecret("SAIYWGGWU2WMXYDSK33UBQBMBDKU4TTJVY3ZIFF24H2KQDR7RQW5KAEK");
+ const signature = kp.sign(hash(hashIdPreimage.toXDR()))
+ expect((await result).signature).toStrictEqual(signature);
+ } finally {
+ await sim.close();
+ }
+ });
+
+ test.each(models)("asset approve ($dev.name)", async ({ dev, startText }) => {
+ // from stellar_sdk import *
+ // from stellar_sdk import xdr
+
+ // kp = Keypair.from_mnemonic_phrase("sock divorce large flag accident car innocent step success grid attitude race")
+
+ // data = xdr.HashIDPreimage(
+ // xdr.EnvelopeType.ENVELOPE_TYPE_SOROBAN_AUTHORIZATION,
+ // soroban_authorization=xdr.HashIDPreimageSorobanAuthorization(
+ // network_id=xdr.Hash(Network(Network.PUBLIC_NETWORK_PASSPHRASE).network_id()),
+ // nonce=xdr.Int64(1232432453),
+ // signature_expiration_ledger=xdr.Uint32(34654367),
+ // invocation=xdr.SorobanAuthorizedInvocation(function=xdr.SorobanAuthorizedFunction(
+ // xdr.SorobanAuthorizedFunctionType.SOROBAN_AUTHORIZED_FUNCTION_TYPE_CONTRACT_FN,
+ // contract_fn=xdr.InvokeContractArgs(
+ // contract_address=Address(
+ // "CAUIKL3IYGMERDRUN6YSCLWVAKIFG5Q4YJHUKM4S4NJZQIA3BAS6OJPK").to_xdr_sc_address(),
+ // function_name=scval.to_symbol("approve").sym,
+ // args=[
+ // scval.to_address("GCWNBLOHPARYAAF5W25NELURTERYS732Q7RRBTXRKBPGYCYLOFKCLKKA"), # from
+ // scval.to_address("GB42LIJ3V5KXCY32EFL4NL73OSI5PRCFJ3WNFMFX4QHGOAR7BFX2YC34"), # spender
+ // scval.to_int128(10000 * 10 ** 7), # amount, 100 AQUA
+ // scval.to_uint32(356654), # live_until_ledger
+ // ]
+ // )), sub_invocations=[])
+ // )
+ // )
+
+ // print(data.to_xdr())
+
+ const hashIdPreimage = xdr.HashIdPreimage.fromXDR("AAAACXrDOZdUTjF10ma9AiQ5sizbFlCMARY/JuXLKj4QRal5AAAAAEl1bUUCEMifAAAAAAAAAAEohS9owZhIjjRvsSEu1QKQU3Ycwk9FM5LjU5ggGwgl5wAAAAdhcHByb3ZlAAAAAAQAAAASAAAAAAAAAACs0K3HeCOAAL22utIukZkjiX96h+MQzvFQXmwLC3FUJQAAABIAAAAAAAAAAHmloTuvVXFjeiFXxq/7dJHXxEVO7NKwt+QOZwI/CW+sAAAACgAAAAAAAAAAAAAAF0h26AAAAAADAAVxLgAAAAA=", "base64")
+ const sim = new Zemu(dev.path);
+ try {
+ await sim.start({ ...defaultOptions, model: dev.name, startText: startText });
+ const transport = await sim.getTransport();
+ const str = new Str(transport);
+ const result = str.signSorobanAuthoration("44'/148'/0'", hashIdPreimage.toXDR());
+ const events = await sim.getEvents();
+ await sim.waitForScreenChanges(events);
+ let textToFind = "Finalize";
+ if (dev.name == "stax") {
+ textToFind = "Hold to";
+ }
+ await sim.navigateAndCompareUntilText(
+ ".",
+ `${dev.prefix.toLowerCase()}-soroban-auth-asset-approve`,
+ textToFind,
+ true,
+ undefined,
+ 1000 * 60 * 60
+ );
+ const kp = Keypair.fromSecret("SAIYWGGWU2WMXYDSK33UBQBMBDKU4TTJVY3ZIFF24H2KQDR7RQW5KAEK");
+ const signature = kp.sign(hash(hashIdPreimage.toXDR()))
+ expect((await result).signature).toStrictEqual(signature);
+ } finally {
+ await sim.close();
+ }
+ });
+
+ test.each(models)("create contract ($dev.name)", async ({ dev, startText }) => {
+ // import os
+
+ // from stellar_sdk import *
+ // from stellar_sdk import xdr
+
+ // kp = Keypair.from_mnemonic_phrase("sock divorce large flag accident car innocent step success grid attitude race")
+
+ // create_contract = stellar_xdr.CreateContractArgs(
+ // contract_id_preimage=stellar_xdr.ContractIDPreimage(
+ // stellar_xdr.ContractIDPreimageType.CONTRACT_ID_PREIMAGE_FROM_ADDRESS,
+ // from_address=stellar_xdr.ContractIDPreimageFromAddress(
+ // address=Address("GB42LIJ3V5KXCY32EFL4NL73OSI5PRCFJ3WNFMFX4QHGOAR7BFX2YC34").to_xdr_sc_address(),
+ // salt=stellar_xdr.Uint256(os.urandom(32)),
+ // ),
+ // ),
+ // executable=stellar_xdr.ContractExecutable(
+ // stellar_xdr.ContractExecutableType.CONTRACT_EXECUTABLE_WASM,
+ // stellar_xdr.Hash(os.urandom(32)),
+ // ),
+ // )
+ // data = xdr.HashIDPreimage(
+ // xdr.EnvelopeType.ENVELOPE_TYPE_SOROBAN_AUTHORIZATION,
+ // soroban_authorization=xdr.HashIDPreimageSorobanAuthorization(
+ // network_id=xdr.Hash(Network(Network.TESTNET_NETWORK_PASSPHRASE).network_id()),
+ // nonce=xdr.Int64(1232432453),
+ // signature_expiration_ledger=xdr.Uint32(34654367),
+ // invocation=xdr.SorobanAuthorizedInvocation(function=xdr.SorobanAuthorizedFunction(
+ // xdr.SorobanAuthorizedFunctionType.SOROBAN_AUTHORIZED_FUNCTION_TYPE_CREATE_CONTRACT_HOST_FN,
+ // create_contract_host_fn=create_contract), sub_invocations=[])
+ // )
+ // )
+
+ // print(data.to_xdr())
+ const hashIdPreimage = xdr.HashIdPreimage.fromXDR("AAAACc7gMC1ZhE0yvcqRXIID3USzP7t+3BkFHqN6vt8o7NRyAAAAAEl1bUUCEMifAAAAAQAAAAAAAAAAAAAAAHmloTuvVXFjeiFXxq/7dJHXxEVO7NKwt+QOZwI/CW+sZtJrYZLQhUNQ41DfRYSHnaHrciqZinqVKPFRKq8TKTIAAAAAtYMmZe+dL7n/Rl8va30Nong7L5JZ1zFQSNKKkrOVJhgAAAAA", "base64")
+ const sim = new Zemu(dev.path);
+ try {
+ await sim.start({ ...defaultOptions, model: dev.name, startText: startText });
+ const transport = await sim.getTransport();
+ const str = new Str(transport);
+ const result = str.signSorobanAuthoration("44'/148'/0'", hashIdPreimage.toXDR());
+ const events = await sim.getEvents();
+ await sim.waitForScreenChanges(events);
+ let textToFind = "Finalize";
+ if (dev.name == "stax") {
+ textToFind = "Hold to";
+ }
+ await sim.navigateAndCompareUntilText(
+ ".",
+ `${dev.prefix.toLowerCase()}-soroban-auth-create-contract`,
+ textToFind,
+ true,
+ undefined,
+ 1000 * 60 * 60
+ );
+ const kp = Keypair.fromSecret("SAIYWGGWU2WMXYDSK33UBQBMBDKU4TTJVY3ZIFF24H2KQDR7RQW5KAEK");
+ const signature = kp.sign(hash(hashIdPreimage.toXDR()))
+ expect((await result).signature).toStrictEqual(signature);
+ } finally {
+ await sim.close();
+ }
+ });
+})
+
function camelToFilePath(str: string) {
return str.replace(/([A-Z])/g, "-$1").toLowerCase();
}
@@ -420,3 +670,9 @@ function getTestCases() {
}
return cases;
}
+
+function hash(data: Buffer) {
+ const hasher = new sha256()
+ hasher.update(data)
+ return hasher.digest()
+}
\ No newline at end of file