Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

B2CA-1522: Add sender field in transaction #545

Merged
merged 4 commits into from
Jun 20, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 3 additions & 3 deletions src/handle_swap_sign_transaction.c
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,10 @@ bool copy_transaction_parameters(create_transaction_parameters_t* sign_transacti
// We need this "trick" as the input data position can overlap with app-ethereum globals
txStringProperties_t stack_data;
memset(&stack_data, 0, sizeof(stack_data));
strlcpy(stack_data.fullAddress,
strlcpy(stack_data.toAddress,
sign_transaction_params->destination_address,
sizeof(stack_data.fullAddress));
if ((stack_data.fullAddress[sizeof(stack_data.fullAddress) - 1] != '\0') ||
sizeof(stack_data.toAddress));
if ((stack_data.toAddress[sizeof(stack_data.toAddress) - 1] != '\0') ||
(sign_transaction_params->amount_length > 32) ||
(sign_transaction_params->fee_amount_length > 8)) {
return false;
Expand Down
8 changes: 4 additions & 4 deletions src/plugins.c
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
void plugin_ui_get_id(void) {
ethQueryContractID_t pluginQueryContractID;
eth_plugin_prepare_query_contract_ID(&pluginQueryContractID,
strings.common.fullAddress,
sizeof(strings.common.fullAddress),
strings.common.toAddress,
sizeof(strings.common.toAddress),
strings.common.fullAmount,
sizeof(strings.common.fullAmount));
// Query the original contract for ID if it's not an internal alias
Expand Down Expand Up @@ -33,8 +33,8 @@ void plugin_ui_get_item_internal(char *title_buffer,
}

void plugin_ui_get_item(void) {
plugin_ui_get_item_internal(strings.common.fullAddress,
sizeof(strings.common.fullAddress),
plugin_ui_get_item_internal(strings.common.toAddress,
sizeof(strings.common.toAddress),
strings.common.fullAmount,
sizeof(strings.common.fullAmount));
}
3 changes: 2 additions & 1 deletion src/shared_context.h
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,8 @@ typedef enum {
#define NETWORK_STRING_MAX_SIZE 19

typedef struct txStringProperties_s {
char fullAddress[43];
char fromAddress[43];
char toAddress[43];
char fullAmount[79]; // 2^256 is 78 digits long
char maxFee[50];
char nonce[8]; // 10M tx per account ought to be enough for everybody
Expand Down
2 changes: 1 addition & 1 deletion src_bagl/ui_domain_name.c
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ UX_STEP_NOCB(
ux_domain_name_step,
bnnn_paging,
{
.title = "Domain",
.title = "To (domain)",
.text = g_domain_name
});
// clang-format on
Expand Down
2 changes: 1 addition & 1 deletion src_bagl/ui_flow_erc20_approval.c
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ UX_STEP_NOCB(
bnnn_paging,
{
.title = "Contract Name",
.text = strings.common.fullAddress,
.text = strings.common.toAddress,
});

UX_STEP_NOCB(
Expand Down
2 changes: 1 addition & 1 deletion src_bagl/ui_flow_getPublicKey.c
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ UX_STEP_NOCB(
bnnn_paging,
{
.title = "Address",
.text = strings.common.fullAddress,
.text = strings.common.toAddress,
});
UX_STEP_CB(
ux_display_public_flow_3_step,
Expand Down
2 changes: 1 addition & 1 deletion src_bagl/ui_flow_performPrivacyOperation.c
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ UX_STEP_NOCB(
bnnn_paging,
{
.title = "Address",
.text = strings.common.fullAddress,
.text = strings.common.toAddress,
});
UX_STEP_NOCB(
ux_display_privacy_public_key_flow_3_step,
Expand Down
29 changes: 22 additions & 7 deletions src_bagl/ui_flow_signTx.c
Original file line number Diff line number Diff line change
Expand Up @@ -110,19 +110,26 @@ UX_STEP_NOCB(
.text = strings.common.fullAmount
});
UX_STEP_NOCB(
ux_approval_address_step,
ux_approval_from_step,
bnnn_paging,
{
.title = "Address",
.text = strings.common.fullAddress,
.title = "From",
.text = strings.common.fromAddress,
});
UX_STEP_NOCB(
ux_approval_to_step,
bnnn_paging,
{
.title = "To",
.text = strings.common.toAddress,
});

UX_STEP_NOCB_INIT(
ux_plugin_approval_id_step,
bnnn_paging,
plugin_ui_get_id(),
{
.title = strings.common.fullAddress,
.title = strings.common.toAddress,
.text = strings.common.fullAmount
});

Expand All @@ -138,7 +145,7 @@ UX_FLOW_DEF_NOCB(
ux_plugin_approval_display_step,
bnnn_paging,
{
.title = strings.common.fullAddress,
.title = strings.common.toAddress,
.text = strings.common.fullAmount
});

Expand Down Expand Up @@ -214,22 +221,30 @@ void ux_approve_tx(bool fromPlugin) {
if (fromPlugin) {
// Add the special dynamic display logic
ux_approval_tx_flow[step++] = &ux_plugin_approval_id_step;
if (pluginType != EXTERNAL) {
if (strings.common.fromAddress[0] != 0) {
ux_approval_tx_flow[step++] = &ux_approval_from_step;
}
}
ux_approval_tx_flow[step++] = &ux_plugin_approval_before_step;
ux_approval_tx_flow[step++] = &ux_plugin_approval_display_step;
ux_approval_tx_flow[step++] = &ux_plugin_approval_after_step;
} else {
// We're in a regular transaction, just show the amount and the address
if (strings.common.fromAddress[0] != 0) {
ux_approval_tx_flow[step++] = &ux_approval_from_step;
}
ux_approval_tx_flow[step++] = &ux_approval_amount_step;
#ifdef HAVE_DOMAIN_NAME
uint64_t chain_id = get_tx_chain_id();
if (has_domain_name(&chain_id, tmpContent.txContent.destination)) {
ux_approval_tx_flow[step++] = &ux_domain_name_step;
if (N_storage.verbose_domain_name) {
ux_approval_tx_flow[step++] = &ux_approval_address_step;
ux_approval_tx_flow[step++] = &ux_approval_to_step;
}
} else {
#endif // HAVE_DOMAIN_NAME
ux_approval_tx_flow[step++] = &ux_approval_address_step;
ux_approval_tx_flow[step++] = &ux_approval_to_step;
#ifdef HAVE_DOMAIN_NAME
}
#endif // HAVE_DOMAIN_NAME
Expand Down
4 changes: 2 additions & 2 deletions src_features/getPublicKey/cmd_getPublicKey.c
Original file line number Diff line number Diff line change
Expand Up @@ -64,8 +64,8 @@ void handleGetPublicKey(uint8_t p1,
*tx = set_result_get_publicKey();
THROW(APDU_RESPONSE_OK);
} else {
snprintf(strings.common.fullAddress,
sizeof(strings.common.fullAddress),
snprintf(strings.common.toAddress,
sizeof(strings.common.toAddress),
"0x%.*s",
40,
tmpCtx.publicKeyContext.address);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,8 +94,8 @@ void handlePerformPrivacyOperation(uint8_t p1,
*tx = set_result_perform_privacy_operation();
THROW(0x9000);
} else {
snprintf(strings.common.fullAddress,
sizeof(strings.common.fullAddress),
snprintf(strings.common.toAddress,
sizeof(strings.common.toAddress),
"0x%.*s",
40,
tmpCtx.publicKeyContext.address);
Expand Down
17 changes: 12 additions & 5 deletions src_features/signTx/logic_signTx.c
Original file line number Diff line number Diff line change
Expand Up @@ -346,12 +346,19 @@ __attribute__((noinline)) static bool finalize_parsing_helper(bool direct, bool
tmpCtx.transactionContext.hash,
32));

uint8_t msg_sender[ADDRESS_LENGTH] = {0};
get_public_key(msg_sender, sizeof(msg_sender));

address_to_string(msg_sender,
ADDRESS_LENGTH,
strings.common.fromAddress,
sizeof(strings.common.fromAddress),
chainConfig->chainId);
PRINTF("FROM address displayed: %s\n", strings.common.fromAddress);
// Finalize the plugin handling
if (dataContext.tokenContext.pluginStatus >= ETH_PLUGIN_RESULT_SUCCESSFUL) {
eth_plugin_prepare_finalize(&pluginFinalize);

uint8_t msg_sender[ADDRESS_LENGTH] = {0};
get_public_key(msg_sender, sizeof(msg_sender));
pluginFinalize.address = msg_sender;

if (!eth_plugin_call(ETH_PLUGIN_FINALIZE, (void *) &pluginFinalize)) {
Expand Down Expand Up @@ -465,14 +472,14 @@ __attribute__((noinline)) static bool finalize_parsing_helper(bool direct, bool
chainConfig->chainId);
if (G_called_from_swap) {
// Ensure the values are the same that the ones that have been previously validated
if (strcasecmp_workaround(strings.common.fullAddress, displayBuffer) != 0) {
if (strcasecmp_workaround(strings.common.toAddress, displayBuffer) != 0) {
PRINTF("ERR_SILENT_MODE_CHECK_FAILED, address check failed\n");
THROW(ERR_SILENT_MODE_CHECK_FAILED);
}
} else {
strlcpy(strings.common.fullAddress, displayBuffer, sizeof(strings.common.fullAddress));
strlcpy(strings.common.toAddress, displayBuffer, sizeof(strings.common.toAddress));
}
PRINTF("Address displayed: %s\n", strings.common.fullAddress);
PRINTF("TO address displayed: %s\n", strings.common.toAddress);

// Format the amount in a temporary buffer, if in swap case compare it with validated
// amount, else commit it
Expand Down
28 changes: 21 additions & 7 deletions src_nbgl/ui_approve_tx.c
Original file line number Diff line number Diff line change
Expand Up @@ -57,8 +57,8 @@ static const nbgl_icon_details_t *get_tx_icon(void) {

if (tx_approval_context.fromPlugin && (pluginType == EXTERNAL)) {
if (caller_app && caller_app->name) {
if ((strlen(strings.common.fullAddress) == strlen(caller_app->name)) &&
(strcmp(strings.common.fullAddress, caller_app->name) == 0)) {
if ((strlen(strings.common.toAddress) == strlen(caller_app->name)) &&
(strcmp(strings.common.toAddress, caller_app->name) == 0)) {
icon = get_app_icon(true);
}
}
Expand Down Expand Up @@ -93,6 +93,13 @@ static uint8_t setTagValuePairs(void) {

// Setup data to display
if (tx_approval_context.fromPlugin) {
if (pluginType != EXTERNAL) {
if (strings.common.fromAddress[0] != 0) {
pairs[nbPairs].item = "From";
pairs[nbPairs].value = strings.common.fromAddress;
nbPairs++;
}
}
for (pairIndex = 0; pairIndex < dataContext.tokenContext.pluginUiMaxItems; pairIndex++) {
// for the next dataContext.tokenContext.pluginUiMaxItems items, get tag/value from
// plugin_ui_get_item_internal()
Expand All @@ -116,6 +123,12 @@ static uint8_t setTagValuePairs(void) {
pairs[nbPairs].value = strings.common.maxFee;
nbPairs++;
} else {
if (strings.common.fromAddress[0] != 0) {
pairs[nbPairs].item = "From";
pairs[nbPairs].value = strings.common.fromAddress;
nbPairs++;
}

pairs[nbPairs].item = "Amount";
pairs[nbPairs].value = strings.common.fullAmount;
nbPairs++;
Expand All @@ -125,14 +138,14 @@ static uint8_t setTagValuePairs(void) {
tx_approval_context.domain_name_match =
has_domain_name(&chain_id, tmpContent.txContent.destination);
if (tx_approval_context.domain_name_match) {
pairs[nbPairs].item = "Domain";
pairs[nbPairs].item = "To (domain)";
pairs[nbPairs].value = g_domain_name;
nbPairs++;
}
if (!tx_approval_context.domain_name_match || N_storage.verbose_domain_name) {
#endif
pairs[nbPairs].item = "Address";
pairs[nbPairs].value = strings.common.fullAddress;
pairs[nbPairs].item = "To";
pairs[nbPairs].value = strings.common.toAddress;
nbPairs++;
#ifdef HAVE_DOMAIN_NAME
}
Expand All @@ -142,6 +155,7 @@ static uint8_t setTagValuePairs(void) {
pairs[nbPairs].value = strings.common.nonce;
nbPairs++;
}

pairs[nbPairs].item = "Max fees";
pairs[nbPairs].value = strings.common.maxFee;
nbPairs++;
Expand Down Expand Up @@ -172,14 +186,14 @@ static void reviewCommon(void) {
"Review transaction\nto %s\n%s%s",
op_name,
(pluginType == EXTERNAL ? "on " : ""),
strings.common.fullAddress);
strings.common.toAddress);
// Finish text: replace "Review" by "Sign" and add questionmark
snprintf(g_stax_shared_buffer + buf_size,
buf_size,
"Sign transaction\nto %s\n%s%s",
op_name,
(pluginType == EXTERNAL ? "on " : ""),
strings.common.fullAddress);
strings.common.toAddress);

nbgl_useCaseReview(TYPE_TRANSACTION,
&pairsList,
Expand Down
2 changes: 1 addition & 1 deletion src_nbgl/ui_display_privacy.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ static void buildFirstPage(const char *review_string) {
uint8_t nbPairs = 0;

pairs[nbPairs].item = "Address";
pairs[nbPairs].value = strings.common.fullAddress;
pairs[nbPairs].value = strings.common.toAddress;
nbPairs++;
pairs[nbPairs].item = "Key";
pairs[nbPairs].value = strings.common.fullAmount;
Expand Down
2 changes: 1 addition & 1 deletion src_nbgl/ui_get_public_key.c
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ void ui_display_public_key(const uint64_t *chain_id) {
icon = get_app_icon(false);
}
strlcat(g_stax_shared_buffer, "address", sizeof(g_stax_shared_buffer));
nbgl_useCaseAddressReview(strings.common.fullAddress,
nbgl_useCaseAddressReview(strings.common.toAddress,
NULL,
icon,
g_stax_shared_buffer,
Expand Down
Binary file modified tests/ragger/snapshots/flex/blind-signed_approval/00001.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified tests/ragger/snapshots/flex/domain_name_non_mainnet/00000.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified tests/ragger/snapshots/flex/domain_name_non_mainnet/00001.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified tests/ragger/snapshots/flex/domain_name_non_mainnet/00002.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified tests/ragger/snapshots/flex/domain_name_non_mainnet/00003.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified tests/ragger/snapshots/flex/domain_name_non_mainnet/00004.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified tests/ragger/snapshots/flex/domain_name_unknown_chain/00000.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified tests/ragger/snapshots/flex/domain_name_unknown_chain/00001.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified tests/ragger/snapshots/flex/domain_name_unknown_chain/00002.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified tests/ragger/snapshots/flex/domain_name_unknown_chain/00003.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified tests/ragger/snapshots/flex/domain_name_unknown_chain/00005.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified tests/ragger/snapshots/flex/domain_name_verbose_False/00000.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified tests/ragger/snapshots/flex/domain_name_verbose_False/00001.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified tests/ragger/snapshots/flex/domain_name_verbose_False/00002.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified tests/ragger/snapshots/flex/domain_name_verbose_False/00003.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified tests/ragger/snapshots/flex/domain_name_verbose_False/00004.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified tests/ragger/snapshots/flex/domain_name_verbose_True/00000.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified tests/ragger/snapshots/flex/domain_name_verbose_True/00001.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified tests/ragger/snapshots/flex/domain_name_verbose_True/00002.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified tests/ragger/snapshots/flex/domain_name_verbose_True/00003.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified tests/ragger/snapshots/flex/domain_name_verbose_True/00005.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified tests/ragger/snapshots/flex/domain_name_wrong_addr/00000.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified tests/ragger/snapshots/flex/domain_name_wrong_addr/00001.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified tests/ragger/snapshots/flex/domain_name_wrong_addr/00002.png
Binary file modified tests/ragger/snapshots/flex/domain_name_wrong_addr/00003.png
Binary file modified tests/ragger/snapshots/flex/domain_name_wrong_addr/00004.png
Binary file modified tests/ragger/snapshots/flex/erc1155_safeTransferFrom_1/00000.png
Binary file modified tests/ragger/snapshots/flex/erc1155_safeTransferFrom_1/00001.png
Binary file modified tests/ragger/snapshots/flex/erc1155_safeTransferFrom_1/00002.png
Binary file modified tests/ragger/snapshots/flex/erc1155_safeTransferFrom_1/00003.png
Binary file modified tests/ragger/snapshots/flex/erc1155_safeTransferFrom_1/00004.png
Binary file modified tests/ragger/snapshots/flex/erc1155_safeTransferFrom_137/00004.png
Binary file modified tests/ragger/snapshots/flex/erc1155_safeTransferFrom_5/00000.png
Binary file modified tests/ragger/snapshots/flex/erc1155_safeTransferFrom_5/00001.png
Binary file modified tests/ragger/snapshots/flex/erc1155_safeTransferFrom_5/00003.png
Binary file modified tests/ragger/snapshots/flex/erc1155_safeTransferFrom_5/00004.png
Binary file modified tests/ragger/snapshots/flex/erc1155_setApprovalForAll_5/00000.png
Binary file modified tests/ragger/snapshots/flex/erc721_approve_1/00000.png
Binary file modified tests/ragger/snapshots/flex/erc721_approve_1/00001.png
Binary file modified tests/ragger/snapshots/flex/erc721_approve_1/00002.png
Binary file modified tests/ragger/snapshots/flex/erc721_approve_1/00003.png
Binary file modified tests/ragger/snapshots/flex/erc721_approve_1/00004.png
Binary file modified tests/ragger/snapshots/flex/erc721_approve_1/00005.png
Binary file modified tests/ragger/snapshots/flex/erc721_approve_137/00000.png
Binary file modified tests/ragger/snapshots/flex/erc721_approve_137/00001.png
Binary file modified tests/ragger/snapshots/flex/erc721_approve_137/00002.png
Binary file modified tests/ragger/snapshots/flex/erc721_approve_137/00003.png
Binary file modified tests/ragger/snapshots/flex/erc721_approve_137/00004.png
Binary file modified tests/ragger/snapshots/flex/erc721_approve_137/00006.png
Binary file modified tests/ragger/snapshots/flex/erc721_approve_5/00000.png
Binary file modified tests/ragger/snapshots/flex/erc721_approve_5/00001.png
Binary file modified tests/ragger/snapshots/flex/erc721_approve_5/00002.png
Binary file modified tests/ragger/snapshots/flex/erc721_approve_5/00003.png
Binary file modified tests/ragger/snapshots/flex/erc721_approve_5/00004.png
Binary file modified tests/ragger/snapshots/flex/erc721_approve_5/00006.png
Binary file modified tests/ragger/snapshots/flex/erc721_safeTransferFrom_1/00000.png
Binary file modified tests/ragger/snapshots/flex/erc721_safeTransferFrom_1/00001.png
Binary file modified tests/ragger/snapshots/flex/erc721_safeTransferFrom_1/00003.png
Binary file modified tests/ragger/snapshots/flex/erc721_safeTransferFrom_1/00004.png
Binary file modified tests/ragger/snapshots/flex/erc721_safeTransferFrom_1/00005.png
Binary file modified tests/ragger/snapshots/flex/erc721_safeTransferFrom_137/00002.png
Binary file modified tests/ragger/snapshots/flex/erc721_safeTransferFrom_137/00004.png
Binary file modified tests/ragger/snapshots/flex/erc721_safeTransferFrom_5/00000.png
Binary file modified tests/ragger/snapshots/flex/erc721_safeTransferFrom_5/00001.png
Binary file modified tests/ragger/snapshots/flex/erc721_safeTransferFrom_5/00002.png
Binary file modified tests/ragger/snapshots/flex/erc721_safeTransferFrom_5/00003.png
Binary file modified tests/ragger/snapshots/flex/erc721_safeTransferFrom_5/00004.png
Binary file modified tests/ragger/snapshots/flex/erc721_safeTransferFrom_5/00006.png
Binary file modified tests/ragger/snapshots/flex/erc721_setApprovalForAll_1/00000.png
Binary file modified tests/ragger/snapshots/flex/erc721_setApprovalForAll_1/00001.png
Binary file modified tests/ragger/snapshots/flex/erc721_setApprovalForAll_1/00002.png
Binary file modified tests/ragger/snapshots/flex/erc721_setApprovalForAll_1/00003.png
Binary file modified tests/ragger/snapshots/flex/erc721_setApprovalForAll_137/00000.png
Binary file modified tests/ragger/snapshots/flex/erc721_setApprovalForAll_137/00002.png
Binary file modified tests/ragger/snapshots/flex/erc721_setApprovalForAll_5/00000.png
Binary file modified tests/ragger/snapshots/flex/erc721_setApprovalForAll_5/00001.png
Binary file modified tests/ragger/snapshots/flex/erc721_setApprovalForAll_5/00002.png
Binary file modified tests/ragger/snapshots/flex/erc721_setApprovalForAll_5/00004.png
Binary file modified tests/ragger/snapshots/flex/erc721_transferFrom_1/00000.png
Binary file modified tests/ragger/snapshots/flex/erc721_transferFrom_1/00001.png
Binary file modified tests/ragger/snapshots/flex/erc721_transferFrom_1/00002.png
Binary file modified tests/ragger/snapshots/flex/erc721_transferFrom_1/00003.png
Binary file modified tests/ragger/snapshots/flex/erc721_transferFrom_1/00004.png
Binary file modified tests/ragger/snapshots/flex/erc721_transferFrom_1/00005.png
Binary file modified tests/ragger/snapshots/flex/erc721_transferFrom_137/00000.png
Binary file modified tests/ragger/snapshots/flex/erc721_transferFrom_137/00001.png
Binary file modified tests/ragger/snapshots/flex/erc721_transferFrom_137/00002.png
Binary file modified tests/ragger/snapshots/flex/erc721_transferFrom_137/00003.png
Binary file modified tests/ragger/snapshots/flex/erc721_transferFrom_137/00004.png
Binary file modified tests/ragger/snapshots/flex/erc721_transferFrom_137/00006.png
Binary file modified tests/ragger/snapshots/flex/erc721_transferFrom_5/00000.png
Binary file modified tests/ragger/snapshots/flex/erc721_transferFrom_5/00001.png
Binary file modified tests/ragger/snapshots/flex/erc721_transferFrom_5/00002.png
Binary file modified tests/ragger/snapshots/flex/erc721_transferFrom_5/00003.png
Binary file modified tests/ragger/snapshots/flex/erc721_transferFrom_5/00004.png
Binary file modified tests/ragger/snapshots/flex/erc721_transferFrom_5/00006.png
Binary file modified tests/ragger/snapshots/flex/get_pk_1/00000.png
Binary file modified tests/ragger/snapshots/flex/get_pk_1/00001.png
Binary file modified tests/ragger/snapshots/flex/get_pk_1/00003.png
Binary file modified tests/ragger/snapshots/flex/get_pk_137/00000.png
Binary file modified tests/ragger/snapshots/flex/get_pk_137/00001.png
Binary file modified tests/ragger/snapshots/flex/get_pk_137/00003.png
Binary file modified tests/ragger/snapshots/flex/get_pk_2/00000.png
Binary file modified tests/ragger/snapshots/flex/get_pk_2/00001.png
Binary file modified tests/ragger/snapshots/flex/get_pk_2/00003.png
Binary file modified tests/ragger/snapshots/flex/get_pk_5/00000.png
Binary file modified tests/ragger/snapshots/flex/get_pk_5/00001.png
Binary file modified tests/ragger/snapshots/flex/get_pk_5/00003.png
Binary file modified tests/ragger/snapshots/flex/get_pk_None/00000.png
Binary file modified tests/ragger/snapshots/flex/get_pk_None/00001.png
Binary file modified tests/ragger/snapshots/flex/get_pk_None/00003.png
Binary file modified tests/ragger/snapshots/flex/get_pk_rejected_60/00000.png
Binary file modified tests/ragger/snapshots/flex/get_pk_rejected_60/00001.png
Binary file modified tests/ragger/snapshots/flex/get_pk_rejected_60/00003.png
Binary file modified tests/ragger/snapshots/flex/get_pk_rejected_700/00000.png
Binary file modified tests/ragger/snapshots/flex/get_pk_rejected_700/00001.png
Binary file modified tests/ragger/snapshots/flex/get_pk_rejected_700/00003.png
Binary file modified tests/ragger/snapshots/flex/test_clone_thundercore/00000.png
Binary file modified tests/ragger/snapshots/flex/test_clone_thundercore/00001.png
Binary file modified tests/ragger/snapshots/flex/test_clone_thundercore/00002.png
Binary file modified tests/ragger/snapshots/flex/test_clone_thundercore/00003.png
Binary file modified tests/ragger/snapshots/flex/test_clone_thundercore/00004.png
Binary file modified tests/ragger/snapshots/flex/test_get_eth2_pk/00000.png
Binary file modified tests/ragger/snapshots/flex/test_get_eth2_pk/00001.png
Binary file modified tests/ragger/snapshots/flex/test_get_eth2_pk/00003.png
Binary file modified tests/ragger/snapshots/flex/test_legacy_chainid/00000.png
Binary file modified tests/ragger/snapshots/flex/test_legacy_chainid/00001.png
Binary file modified tests/ragger/snapshots/flex/test_legacy_chainid/00002.png
Binary file modified tests/ragger/snapshots/flex/test_legacy_chainid/00003.png
Binary file modified tests/ragger/snapshots/flex/test_legacy_chainid/00005.png
Binary file modified tests/ragger/snapshots/flex/test_legacy_send_bsc/00000.png
Binary file modified tests/ragger/snapshots/flex/test_legacy_send_bsc/00001.png
Binary file modified tests/ragger/snapshots/flex/test_legacy_send_bsc/00002.png
Binary file modified tests/ragger/snapshots/flex/test_legacy_send_bsc/00003.png
Binary file modified tests/ragger/snapshots/flex/test_legacy_send_bsc/00005.png
Binary file modified tests/ragger/snapshots/flex/test_personal_sign_metamask/00001.png
Binary file modified tests/ragger/snapshots/flex/test_personal_sign_non_ascii/00001.png
Binary file modified tests/ragger/snapshots/flex/test_personal_sign_opensea/00001.png
Binary file modified tests/ragger/snapshots/flex/test_personal_sign_opensea/00002.png
Binary file modified tests/ragger/snapshots/flex/test_personal_sign_opensea/00003.png
Binary file modified tests/ragger/snapshots/flex/test_personal_sign_reject/00000.png
Binary file modified tests/ragger/snapshots/flex/test_personal_sign_reject/00001.png
Binary file modified tests/ragger/snapshots/flex/test_personal_sign_reject/00002.png
Binary file modified tests/ragger/snapshots/flex/test_personal_sign_reject/00005.png
Binary file modified tests/ragger/snapshots/flex/test_sign_blind_simple/00000.png
Binary file modified tests/ragger/snapshots/flex/test_sign_blind_simple/00001.png
Binary file modified tests/ragger/snapshots/flex/test_sign_blind_simple/00002.png
Binary file modified tests/ragger/snapshots/flex/test_sign_blind_simple/00003.png
Binary file modified tests/ragger/snapshots/flex/test_sign_blind_simple/00004.png
Binary file modified tests/ragger/snapshots/flex/test_sign_eip_2930/00000.png
Binary file modified tests/ragger/snapshots/flex/test_sign_eip_2930/00001.png
Binary file modified tests/ragger/snapshots/flex/test_sign_eip_2930/00002.png
Binary file modified tests/ragger/snapshots/flex/test_sign_eip_2930/00003.png
Binary file modified tests/ragger/snapshots/flex/test_sign_eip_2930/00005.png
Binary file modified tests/ragger/snapshots/flex/test_sign_limit_nonce/00000.png
Binary file modified tests/ragger/snapshots/flex/test_sign_limit_nonce/00001.png
Binary file modified tests/ragger/snapshots/flex/test_sign_limit_nonce/00002.png
Binary file modified tests/ragger/snapshots/flex/test_sign_limit_nonce/00003.png
Binary file modified tests/ragger/snapshots/flex/test_sign_limit_nonce/00004.png
Binary file modified tests/ragger/snapshots/flex/test_sign_nonce_display/00000.png
Binary file modified tests/ragger/snapshots/flex/test_sign_nonce_display/00001.png
Binary file modified tests/ragger/snapshots/flex/test_sign_nonce_display/00002.png
Binary file modified tests/ragger/snapshots/flex/test_sign_nonce_display/00003.png
Binary file modified tests/ragger/snapshots/flex/test_sign_nonce_display/00005.png
Loading
Loading