mirror of
https://github.com/trezor/trezor-firmware.git
synced 2025-02-24 05:12:02 +00:00
fixup! feat(core): add Solana staking layouts
Also, add more test vectors for Solana staking confirmation
This commit is contained in:
parent
4efc51d3b4
commit
4f82374b8a
@ -92,6 +92,94 @@
|
||||
"expected_signature": "d38bf15aefa994ec712ae801ce35c6ebd54ef1df46a52e8577376baefefb4e842261e7d4c39f465a38caf9520cbbbd59a94313ccbe4c55ca16721f2f0674af0d"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "Stake instructions with warning",
|
||||
"parameters": {
|
||||
"address": "m/44'/501'/0'/0'",
|
||||
"construct": {
|
||||
"version": null,
|
||||
"header": {
|
||||
"signers": 1,
|
||||
"readonly_signers": 0,
|
||||
"readonly_non_signers": 2
|
||||
},
|
||||
"accounts": [
|
||||
"14CCvQzQzHCVgZM3j9soPnXuJXh1RmCfwLVUcdfbZVBS",
|
||||
"ATFXMD5cYiw9yHkvexgx3nf9LNSouEViB5BZBsgwunAv",
|
||||
"ETxHeBBcuw9Yu4dGuP3oXrD12V5RECvmi8ogQ9PkjyVF",
|
||||
"Stake11111111111111111111111111111111111111",
|
||||
"SysvarC1ock11111111111111111111111111111111",
|
||||
"ComputeBudget111111111111111111111111111111",
|
||||
"11111111111111111111111111111111",
|
||||
"SysvarRent111111111111111111111111111111111",
|
||||
"SysvarStakeHistory1111111111111111111111111",
|
||||
"StakeConfig11111111111111111111111111111111"
|
||||
],
|
||||
"blockhash": "2p4rYZAaFfV5Uk5ugdG5KPNty9Uda9B3b4gWB8qnNqak",
|
||||
"instructions": [
|
||||
{
|
||||
"program_index": 5,
|
||||
"accounts": {},
|
||||
"data": {
|
||||
"instruction_id": 3,
|
||||
"lamports": 8000
|
||||
}
|
||||
},
|
||||
{
|
||||
"program_index": 6,
|
||||
"accounts": {
|
||||
"funding_account": 0,
|
||||
"created_account": 1
|
||||
},
|
||||
"data": {
|
||||
"instruction_id": 3,
|
||||
"base": "14CCvQzQzHCVgZM3j9soPnXuJXh1RmCfwLVUcdfbZVBS",
|
||||
"seed": {
|
||||
"length": 6,
|
||||
"chars": "seed:1"
|
||||
},
|
||||
"lamports": 20000000,
|
||||
"space": 0,
|
||||
"owner": "11111111111111111111111111111111"
|
||||
}
|
||||
},
|
||||
{
|
||||
"program_index": 3,
|
||||
"accounts": {
|
||||
"uninitialized_stake_account": 1,
|
||||
"rent_sysvar": 7
|
||||
},
|
||||
"data": {
|
||||
"instruction_id": 0,
|
||||
"staker": "14CCvQzQzHCVgZM3j9soPnXuJXh1RmCfwLVUcdfbZVBS",
|
||||
"withdrawer": "AeDJ1BqA7ruBbd6mEcS1QNxFbT8FQbiBVuN9NqK94Taq",
|
||||
"unix_timestamp": 0,
|
||||
"epoch": 0,
|
||||
"custodian": "11111111111111111111111111111111"
|
||||
}
|
||||
},
|
||||
{
|
||||
"program_index": 3,
|
||||
"accounts": {
|
||||
"initialized_stake_account": 1,
|
||||
"vote_account": 2,
|
||||
"clock_sysvar": 4,
|
||||
"stake_history_sysvar": 8,
|
||||
"config_account": 9,
|
||||
"stake_authority": 0
|
||||
},
|
||||
"data": {
|
||||
"instruction_id": 2
|
||||
}
|
||||
}
|
||||
],
|
||||
"luts": []
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"expected_signature": "e4bbe5bec49dbc9d3cdeaa00612facb67e7b1d1b2446600d6c0cddc61a89da4343d62be788ea72734b4a6818471eaf1a37fbbad34b33e7b6cdfe8c705c8c8701"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "Unstake instructions",
|
||||
"parameters": {
|
||||
@ -189,6 +277,58 @@
|
||||
"result": {
|
||||
"expected_signature": "4edf71d1b4d075c6717617ef43cd896a80153f418dbe4cca5e66ee9f27bd5652bec67d30ee9a14e3bd7062dd72ed619cf238e6f5538b150dae34d24bee650303"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "Claim instructions with warning",
|
||||
"parameters": {
|
||||
"address": "m/44'/501'/0'/0'",
|
||||
"construct": {
|
||||
"version": null,
|
||||
"header": {
|
||||
"signers": 1,
|
||||
"readonly_signers": 0,
|
||||
"readonly_non_signers": 3
|
||||
},
|
||||
"accounts": [
|
||||
"14CCvQzQzHCVgZM3j9soPnXuJXh1RmCfwLVUcdfbZVBS",
|
||||
"ATFXMD5cYiw9yHkvexgx3nf9LNSouEViB5BZBsgwunAv",
|
||||
"Stake11111111111111111111111111111111111111",
|
||||
"SysvarC1ock11111111111111111111111111111111",
|
||||
"ComputeBudget111111111111111111111111111111",
|
||||
"AeDJ1BqA7ruBbd6mEcS1QNxFbT8FQbiBVuN9NqK94Taq"
|
||||
],
|
||||
"blockhash": "2p4rYZAaFfV5Uk5ugdG5KPNty9Uda9B3b4gWB8qnNqak",
|
||||
"instructions": [
|
||||
{
|
||||
"program_index": 4,
|
||||
"accounts": {},
|
||||
"data": {
|
||||
"instruction_id": 3,
|
||||
"lamports": 8000
|
||||
}
|
||||
},
|
||||
{
|
||||
"program_index": 2,
|
||||
"accounts": {
|
||||
"stake_account": 1,
|
||||
"recipient_account": 5,
|
||||
"clock_sysvar": 3,
|
||||
"stake_history_sysvar": 4,
|
||||
"withdrawal_authority": 0,
|
||||
"lockup_authority": 0
|
||||
},
|
||||
"data": {
|
||||
"instruction_id": 4,
|
||||
"lamports": 1000000
|
||||
}
|
||||
}
|
||||
],
|
||||
"luts": []
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"expected_signature": "53e953033988f8ce3cca4f7d1f94da41d8f3d1467724785f5cd9c4d16250198429a5d27bc474a66d4c1bf4a936c680f51973d54a3b16a2b73e62ecbb1f062104"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -551,11 +551,11 @@ impl FirmwareUI for UICaesar {
|
||||
let mut ops = OpTextLayout::new(theme::TEXT_MONO)
|
||||
.text(amount_label, fonts::FONT_BOLD)
|
||||
.newline()
|
||||
.text(amount, fonts::FONT_MONO)
|
||||
.newline();
|
||||
.text(amount, fonts::FONT_MONO);
|
||||
|
||||
if !fee_label.is_empty() || !fee.is_empty() {
|
||||
ops = ops
|
||||
.newline()
|
||||
.newline()
|
||||
.text(fee_label, fonts::FONT_BOLD)
|
||||
.newline()
|
||||
|
@ -399,19 +399,12 @@ async def confirm_stake_transaction(
|
||||
) -> None:
|
||||
from trezor.ui.layouts import confirm_solana_staking_tx
|
||||
|
||||
KNOWN_ACCOUNTS = {
|
||||
"9QU2QSxhb24FUX3Tu2FpczXjpK3VYrvRudywSZaM29mF": "Everstake",
|
||||
}
|
||||
|
||||
vote_account = base58.encode(delegate.vote_account[0])
|
||||
vote_account = KNOWN_ACCOUNTS.get(vote_account, vote_account)
|
||||
|
||||
await confirm_solana_staking_tx(
|
||||
title=TR.solana__stake,
|
||||
message=TR.solana__stake_question,
|
||||
description=TR.solana__stake_question,
|
||||
account=_format_path(signer_path),
|
||||
account_path=address_n_to_str(signer_path),
|
||||
vote_account=vote_account,
|
||||
vote_account=base58.encode(delegate.vote_account[0]),
|
||||
stake_item=(
|
||||
TR.solana__stake_account,
|
||||
base58.encode(delegate.initialized_stake_account[0]),
|
||||
@ -423,7 +416,6 @@ async def confirm_stake_transaction(
|
||||
fee_item=_fee_summary(fee),
|
||||
fee_details=_fee_details(fee),
|
||||
blockhash_item=(TR.words__blockhash, base58.encode(blockhash)),
|
||||
br_name="confirm_stake_transaction",
|
||||
)
|
||||
|
||||
|
||||
@ -437,7 +429,7 @@ async def confirm_unstake_transaction(
|
||||
|
||||
await confirm_solana_staking_tx(
|
||||
title=TR.solana__unstake,
|
||||
message=TR.solana__unstake_question,
|
||||
description=TR.solana__unstake_question,
|
||||
account=_format_path(signer_path),
|
||||
account_path=address_n_to_str(signer_path),
|
||||
vote_account="",
|
||||
@ -445,11 +437,10 @@ async def confirm_unstake_transaction(
|
||||
TR.solana__stake_account,
|
||||
base58.encode(deactivate.delegated_stake_account[0]),
|
||||
),
|
||||
amount_item=("", ""),
|
||||
fee_item=_fee_summary(fee),
|
||||
amount_item=_fee_summary(fee),
|
||||
fee_item=("", ""),
|
||||
fee_details=_fee_details(fee),
|
||||
blockhash_item=(TR.words__blockhash, base58.encode(blockhash)),
|
||||
br_name="confirm_unstake_transaction",
|
||||
)
|
||||
|
||||
|
||||
@ -463,7 +454,7 @@ async def confirm_claim_transaction(
|
||||
|
||||
await confirm_solana_staking_tx(
|
||||
title=TR.solana__claim,
|
||||
message=TR.solana__claim_question,
|
||||
description=TR.solana__claim_question,
|
||||
account=_format_path(signer_path),
|
||||
account_path=address_n_to_str(signer_path),
|
||||
vote_account="",
|
||||
@ -478,7 +469,6 @@ async def confirm_claim_transaction(
|
||||
fee_item=_fee_summary(fee),
|
||||
fee_details=_fee_details(fee),
|
||||
blockhash_item=(TR.words__blockhash, base58.encode(blockhash)),
|
||||
br_name="confirm_claim_transaction",
|
||||
)
|
||||
|
||||
|
||||
|
@ -952,7 +952,7 @@ if not utils.BITCOIN_ONLY:
|
||||
|
||||
async def confirm_solana_staking_tx(
|
||||
title: str,
|
||||
message: str,
|
||||
description: str,
|
||||
account: str,
|
||||
account_path: str,
|
||||
vote_account: str,
|
||||
@ -961,14 +961,15 @@ if not utils.BITCOIN_ONLY:
|
||||
fee_item: tuple[str, str],
|
||||
fee_details: Iterable[tuple[str, str]],
|
||||
blockhash_item: tuple[str, str],
|
||||
br_name: str,
|
||||
br_name: str = "confirm_solana_staking_tx",
|
||||
br_code: ButtonRequestType = ButtonRequestType.SignTx,
|
||||
) -> None:
|
||||
(amount_label, amount) = amount_item
|
||||
(fee_label, fee) = fee_item
|
||||
|
||||
confirm_layout = trezorui_api.confirm_value(
|
||||
title=title,
|
||||
description=message,
|
||||
description=description,
|
||||
extra=f"{TR.solana__stake_provider}:" if vote_account else None,
|
||||
value=vote_account,
|
||||
verb=TR.buttons__continue,
|
||||
@ -986,7 +987,7 @@ if not utils.BITCOIN_ONLY:
|
||||
horizontal=True,
|
||||
)
|
||||
|
||||
await with_info(confirm_layout, info_layout, br_name, ButtonRequestType.SignTx)
|
||||
await with_info(confirm_layout, info_layout, br_name, br_code)
|
||||
|
||||
await _confirm_summary(
|
||||
amount=amount,
|
||||
@ -998,7 +999,7 @@ if not utils.BITCOIN_ONLY:
|
||||
extra_title=TR.confirm_total__title_fee,
|
||||
extra_items=fee_details,
|
||||
br_name=br_name,
|
||||
br_code=ButtonRequestType.SignTx,
|
||||
br_code=br_code,
|
||||
)
|
||||
|
||||
def confirm_cardano_tx(
|
||||
|
@ -928,7 +928,7 @@ if not utils.BITCOIN_ONLY:
|
||||
|
||||
async def confirm_solana_staking_tx(
|
||||
title: str,
|
||||
message: str,
|
||||
description: str,
|
||||
account: str,
|
||||
account_path: str,
|
||||
vote_account: str,
|
||||
@ -937,7 +937,8 @@ if not utils.BITCOIN_ONLY:
|
||||
fee_item: tuple[str, str],
|
||||
fee_details: Iterable[tuple[str, str]],
|
||||
blockhash_item: tuple[str, str],
|
||||
br_name: str,
|
||||
br_name: str = "confirm_solana_staking_tx",
|
||||
br_code: ButtonRequestType = ButtonRequestType.SignTx,
|
||||
) -> None:
|
||||
(amount_label, amount) = amount_item
|
||||
(fee_label, fee) = fee_item
|
||||
@ -948,17 +949,21 @@ if not utils.BITCOIN_ONLY:
|
||||
stake_item,
|
||||
blockhash_item,
|
||||
)
|
||||
if vote_account:
|
||||
description = f"{description}\n{TR.solana__stake_provider}:"
|
||||
else:
|
||||
description = f"\n\n{description}"
|
||||
await raise_if_not_confirmed(
|
||||
trezorui_api.confirm_summary(
|
||||
amount="",
|
||||
amount_label=message,
|
||||
fee=vote_account,
|
||||
fee_label=f"{TR.solana__stake_provider}:" if vote_account else "",
|
||||
amount=vote_account,
|
||||
amount_label=description,
|
||||
fee="",
|
||||
fee_label="",
|
||||
extra_title=title,
|
||||
extra_items=items,
|
||||
),
|
||||
br_name,
|
||||
ButtonRequestType.SignTx,
|
||||
br_code,
|
||||
)
|
||||
|
||||
await raise_if_not_confirmed(
|
||||
@ -973,7 +978,7 @@ if not utils.BITCOIN_ONLY:
|
||||
extra_items=fee_details,
|
||||
),
|
||||
br_name,
|
||||
ButtonRequestType.SignTx,
|
||||
br_code,
|
||||
)
|
||||
|
||||
def confirm_cardano_tx(
|
||||
|
@ -868,7 +868,7 @@ if not utils.BITCOIN_ONLY:
|
||||
|
||||
async def confirm_solana_staking_tx(
|
||||
title: str,
|
||||
message: str,
|
||||
description: str,
|
||||
account: str,
|
||||
account_path: str,
|
||||
vote_account: str,
|
||||
@ -877,12 +877,11 @@ if not utils.BITCOIN_ONLY:
|
||||
fee_item: tuple[str, str],
|
||||
fee_details: Iterable[tuple[str, str]],
|
||||
blockhash_item: tuple[str, str],
|
||||
br_name: str,
|
||||
br_name: str = "confirm_solana_staking_tx",
|
||||
br_code: ButtonRequestType = ButtonRequestType.SignTx,
|
||||
) -> None:
|
||||
description = message
|
||||
if vote_account:
|
||||
description = f"{message}\n{TR.solana__stake_provider}:"
|
||||
|
||||
description = f"{description}\n\n{TR.solana__stake_provider}:"
|
||||
await raise_if_not_confirmed(
|
||||
trezorui_api.flow_confirm_output(
|
||||
title=title,
|
||||
@ -894,14 +893,14 @@ if not utils.BITCOIN_ONLY:
|
||||
text_mono=True,
|
||||
account=account,
|
||||
account_path=account_path,
|
||||
br_code=ButtonRequestType.SignTx,
|
||||
br_code=br_code,
|
||||
br_name=br_name,
|
||||
address_item=stake_item,
|
||||
extra_item=blockhash_item,
|
||||
fee_items=fee_details,
|
||||
summary_title=title,
|
||||
summary_items=(amount_item, fee_item),
|
||||
summary_br_name="confirm_solana_staking_tx_total",
|
||||
summary_br_name="confirm_total",
|
||||
summary_br_code=ButtonRequestType.SignTx,
|
||||
cancel_text=TR.buttons__cancel,
|
||||
),
|
||||
|
@ -22,6 +22,7 @@ from trezorlib.solana import sign_tx
|
||||
from trezorlib.tools import parse_path
|
||||
|
||||
from ...common import parametrize_using_common_fixtures
|
||||
from ...input_flows import InputFlowConfirmAllWarnings
|
||||
from .construct.instructions import PROGRAMS, UnknownInstruction
|
||||
from .construct.transaction import Message, RawInstruction
|
||||
|
||||
@ -48,28 +49,31 @@ def test_solana_sign_tx(client: Client, parameters, result):
|
||||
|
||||
serialized_tx = _serialize_tx(parameters["construct"])
|
||||
|
||||
actual_result = sign_tx(
|
||||
client,
|
||||
address_n=parse_path(parameters["address"]),
|
||||
serialized_tx=serialized_tx,
|
||||
additional_info=(
|
||||
messages.SolanaTxAdditionalInfo(
|
||||
token_accounts_infos=[
|
||||
messages.SolanaTxTokenAccountInfo(
|
||||
base_address=token_account["base_address"],
|
||||
token_program=token_account["token_program"],
|
||||
token_mint=token_account["token_mint"],
|
||||
token_account=token_account["token_account"],
|
||||
)
|
||||
for token_account in parameters["additional_info"][
|
||||
"token_accounts_infos"
|
||||
with client:
|
||||
IF = InputFlowConfirmAllWarnings(client)
|
||||
client.set_input_flow(IF.get())
|
||||
actual_result = sign_tx(
|
||||
client,
|
||||
address_n=parse_path(parameters["address"]),
|
||||
serialized_tx=serialized_tx,
|
||||
additional_info=(
|
||||
messages.SolanaTxAdditionalInfo(
|
||||
token_accounts_infos=[
|
||||
messages.SolanaTxTokenAccountInfo(
|
||||
base_address=token_account["base_address"],
|
||||
token_program=token_account["token_program"],
|
||||
token_mint=token_account["token_mint"],
|
||||
token_account=token_account["token_account"],
|
||||
)
|
||||
for token_account in parameters["additional_info"][
|
||||
"token_accounts_infos"
|
||||
]
|
||||
]
|
||||
]
|
||||
)
|
||||
if "additional_info" in parameters
|
||||
else None
|
||||
),
|
||||
)
|
||||
)
|
||||
if "additional_info" in parameters
|
||||
else None
|
||||
),
|
||||
)
|
||||
|
||||
assert actual_result == bytes.fromhex(result["expected_signature"])
|
||||
|
||||
|
@ -2274,6 +2274,7 @@ class InputFlowConfirmAllWarnings(InputFlowBase):
|
||||
# hi priority warning
|
||||
hi_prio = (
|
||||
TR.ethereum__unknown_contract_address,
|
||||
TR.solana__stake_withdrawal_warning,
|
||||
TR.addr_mismatch__wrong_derivation_path,
|
||||
TR.send__receiving_to_multisig,
|
||||
"witness path",
|
||||
|
@ -5133,7 +5133,8 @@
|
||||
"T2T1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "7ae3abe87dcc439d593fff1b5eb49a20ffbd962ef52acc0d1ea6c467c0b2cba0",
|
||||
"T2T1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "8017c70cb7ca945b985210e05195e0b29689527a0bd233ef65e6972a9a5bac20",
|
||||
"T2T1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "7640124cb84555d1ed5abbfcf4098dfb0dbd4cd5461f9694de6518c14fe668c9",
|
||||
"T2T1_en_solana-test_sign_tx.py::test_solana_sign_tx[claim_instructions]": "9c82dde84b33161503de2464e1c890c65c242b54898b67e4662807e4c458603d",
|
||||
"T2T1_en_solana-test_sign_tx.py::test_solana_sign_tx[claim_instructions]": "5d4c657a9d6d2dd260748c452e85657a9c013a15c09a416da054b4f806fd929b",
|
||||
"T2T1_en_solana-test_sign_tx.py::test_solana_sign_tx[claim_instructions_with_warning]": "d6eea8bcac8bc3ee38a2dfb65e4968f211d62ba86de730af6dc0e55cddd2fb0a",
|
||||
"T2T1_en_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "c003994e4b5f3d8fb3d3273d2db57239aec8dc1e6231ab3d1a2d46e99ce1a575",
|
||||
"T2T1_en_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "694eca79abd20df9110c32ecb14adc778ffef4e9d4cc8f8553eaa4643e60220b",
|
||||
"T2T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "48574562182de66e96b7e2e7cf47d97db60b979ce69331176ac42aec5ecdb631",
|
||||
@ -5171,7 +5172,8 @@
|
||||
"T2T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "f1c4985080e51dcd6889fc2b2a5ea2502ba44bb4af9fb47656eb2c301395caf5",
|
||||
"T2T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "6eb89719cacab2d73b0b91484f6f065e2a3445a24d58f1874702981e6ba45707",
|
||||
"T2T1_en_solana-test_sign_tx.py::test_solana_sign_tx[split]": "6068df82ab79eff5dfdf5e57dc8156e50031ee469934ee63a8d5a38e45aa63ac",
|
||||
"T2T1_en_solana-test_sign_tx.py::test_solana_sign_tx[stake_instructions]": "0093adde4ba3e9b0374ee330ebccd360582dd53227a828ce7fcd272ada59a321",
|
||||
"T2T1_en_solana-test_sign_tx.py::test_solana_sign_tx[stake_instructions]": "0a1b9a510f656249a552434fe3b30067e61382a24066ace44e100f488eab2366",
|
||||
"T2T1_en_solana-test_sign_tx.py::test_solana_sign_tx[stake_instructions_with_warning]": "61ce8b6a0e90dfbcd4f9a05b0398b8229df90d71807a9eef027160758a8df6c0",
|
||||
"T2T1_en_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "5a5cc506048b5025bac6cf82ef63d6d81be36fa01cef471eb69f9cd526787f96",
|
||||
"T2T1_en_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "0312b269438961cac1d5f8d05414f7a318318c390a235402446788fb59ab26a2",
|
||||
"T2T1_en_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "4613157fbf5d5b48ee47d638a68d814f88bcfa41e88d09e189017fcdeb9fa5f7",
|
||||
@ -5186,7 +5188,7 @@
|
||||
"T2T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "8845c8f61d4d2fe2d5d68cf8468ae2effdd2f1c4cadad65df1e676066bdb4395",
|
||||
"T2T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "6d3c2e590a0b91a39e294a6c0d13490f4c6c541617f7b98e0ba241e7dfc76693",
|
||||
"T2T1_en_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "f1e96601a1b72ea0a7b0b02d590ba1cdf7c73a9b4b776569a3e2a14632169dcb",
|
||||
"T2T1_en_solana-test_sign_tx.py::test_solana_sign_tx[unstake_instructions]": "105bc5df069c2673da8a1746843ff5457044b75e221542c310b166197dbfadfb",
|
||||
"T2T1_en_solana-test_sign_tx.py::test_solana_sign_tx[unstake_instructions]": "cf1b187032adf39e2289dbd87c2e8cc2629c9c691382b6c3c3fd46bf649217bf",
|
||||
"T2T1_en_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "c5046158a24f6ef8ca43a58d3914a3a3da3fcafd94bdcaaf3cd53c77fa37d0e7",
|
||||
"T2T1_en_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "9a1e4083290937d22ed9d2a85b757e495b26a8e9fc37cf501b3450bf5217183b",
|
||||
"T2T1_en_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "25db9577893e79a0823d88eda0b8bfa70ee0125cd574bab912b116f506dbb9c1",
|
||||
@ -13962,7 +13964,8 @@
|
||||
"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "0e61b22a03de7857d11771e71d4c9aa9d3c538e86ca784213e653faf0d5e8883",
|
||||
"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "f13824278d5cfb30b5154e2bb5a83ccb3dd420ee9aa369b9f303b0fbcf992bf4",
|
||||
"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "4764b77eac8dfc5ca2a0c90fcb073fbfc187c3f49ad3815737989c9ff17c0090",
|
||||
"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[claim_instructions]": "42f916fd2622211058ed7c2f63dea6616843440b8aa22291e964502aaabd7112",
|
||||
"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[claim_instructions]": "ce5329dfe7543d9ff0f6c7402885c3ed28616973f66271231cbec2b95f044c91",
|
||||
"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[claim_instructions_with_warning]": "2dbe711e39dcca5a7585c8d7c23a28b7b55018f417d679e3d578aa17d43d4129",
|
||||
"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "4e60a1f2fd7c2a555aabdb380cd5e3e42238ffb0470908fa69c88741c4837e88",
|
||||
"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "f5f8683aa05fbb3a5a157c2faea5d2b19e19c48e78c82bf77210f7cf4b0d3c89",
|
||||
"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "534ceb09bd4bcd999be21bde9aa76d5dd1daae339154c0c135231d05d7a86032",
|
||||
@ -14000,7 +14003,8 @@
|
||||
"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "a1581f15d3de981f3df17feb8e127f2e6c2b16cd3f17a6badfd0c39b14e38033",
|
||||
"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "644939a485c7005abc6a85f08d76a5cd90690c0b8c62692834a09b42f5b9b1ba",
|
||||
"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[split]": "2fecaa57d3448d40d685019aa7b6053706a17e12dc1717f16ca0eaca8324fd85",
|
||||
"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[stake_instructions]": "a9a13a7451fb3c33ca491f3986567ff5108fac4d0e4f8689e2de535c10d7ea1f",
|
||||
"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[stake_instructions]": "306bdc6bb9e68d77c4987a29c25cf32fe73dc8d06c41187e04489c156026aaec",
|
||||
"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[stake_instructions_with_warning]": "55e79d034d7019f53e49f4787db161227cc51ccdc8fbecf76e2510d736ad1dbc",
|
||||
"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "43c5e4cfdbbc29456197ba924c44d082d5153a1188607d5e95f186304c734881",
|
||||
"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "b1df488b46ad1db517c75d7b4eecc97da4a49c85d0545658331cb830b5cda9e7",
|
||||
"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "7a800abac1a122b118a78f01a39b3c0079f8dbd3a05048c7beb6c6a491b70af8",
|
||||
@ -14015,7 +14019,7 @@
|
||||
"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "4cda28586c4c33b0c75087923507838c7f8916f4749076c4d737de5bc09f5434",
|
||||
"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "e305c57526dc4d8d9d31d2403b751851d1630f457a23e2602e1ac685334ed7f4",
|
||||
"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "3fb9f9929ba7539aca6007e9f7cc7fb2d5527df24949d591a484f30aba475c5d",
|
||||
"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[unstake_instructions]": "b83b4312855e9a75fddd4fa891a1bad4b74bffcba1c2ddf86b9b73f40b5adb8e",
|
||||
"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[unstake_instructions]": "04f2df8f1b09141244c2daafe1c3bba2ed95b041c0cd4bff3cf36e7d5bc1353b",
|
||||
"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "99e7087efd53509b067134fb4b9c82dfcf05c9bb8f0bc2e2ad5caa008946ee2d",
|
||||
"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "5bca29906bf6422cad691df82e844a50e639d9186a565fca945b64b1b179ad58",
|
||||
"T3B1_en_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "fa6ec1c23d35127a15f9aae1d36a7ea2472c55339ac15653b89346a2a6b09b49",
|
||||
@ -22630,7 +22634,8 @@
|
||||
"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn]": "efb38859a134aa88820b2004d7f5924ad82103611455182a658cb0bf4bf61d25",
|
||||
"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked]": "9c9c177956102a54655029b26b4d7445ba1a2fdc245449c06a81c185bbe67e65",
|
||||
"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[burn_checked_-_multisig]": "5d2e96e4a827cd7d51ac88cb2e47718bf2f35df0f587588aec5deeaaea2082c6",
|
||||
"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[claim_instructions]": "a65e5c5d6286592b86e52b8b29c0145b34382e111ea7c53de9d4e350eaa901f5",
|
||||
"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[claim_instructions]": "22c607b61c5dcaf4b85063d505afaa89b41ada761667413aca6a2aa4e535239c",
|
||||
"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[claim_instructions_with_warning]": "d24749e2042ab04ab74a5acf92f90d4d4556bbd6a71de0fa0e8642e6366647bb",
|
||||
"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[close_account]": "7fb521f59a4b7f4f367766b500477b648b3b14498bce600c61da754f4a44e2e2",
|
||||
"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[close_account_-_multisig]": "ae7e0b3ab1a8c52046db8ce51438e4fda6a92a535d87b28bcdf16aea1a1800e2",
|
||||
"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[create_account]": "f22cebb39308d26d57d9e9ee3a2658bb18d61f0c6149de164798c86b6ff18acd",
|
||||
@ -22668,7 +22673,8 @@
|
||||
"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_-_with_epoch_only]": "8fa9a9434ace91ac1df213b4cf37f3aa2b73a1dc7ef4e0218afa29383d7e34a4",
|
||||
"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[set_lockup_checked]": "9de53632cbfe2ef5198cb5da00335cf42fdfb4b859f879d0ec1d78ed7a5e7106",
|
||||
"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[split]": "f4d4c5cfaec18fc8d8fe324c4443f39656911d0653d8812057147be65d2a19f8",
|
||||
"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[stake_instructions]": "56630eb27772c73da7b3e0f8bdd5fdf3014e5f8e6135955df11c77e7f05c9d60",
|
||||
"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[stake_instructions]": "5aeb536218701ecff849773ae202ecedc976720f43ab8f280d29b2f371b19889",
|
||||
"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[stake_instructions_with_warning]": "833e6a02e4ba228c4a87dc90032bfe50a27ca123697750b67bf3dcbae2883afc",
|
||||
"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[sync_native]": "d7c5f749cedc8aff3cab16c85da4a483e8fa8dfa6fb4999cfb62aeeb48ac600f",
|
||||
"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account]": "0f6339a9a903d36dcc2142ca2ed5909a9794bc9b9d7189f3144a41b67d36f96d",
|
||||
"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[thaw_account_-_multisig]": "fa87184a580a5bfbb6de960d844739a8e89dd7aa67472507fff1416c85471fb9",
|
||||
@ -22683,7 +22689,7 @@
|
||||
"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "92857737c3c221d4486ffa12b0d8668191b7ec473d9060077e104f027a6ae4b6",
|
||||
"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "648374bd6ebf21edcaae603a53f5d435536065f0988d34b24280d25c4ffee791",
|
||||
"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "2aec3d7f064bb0a43cfdfa17514d9e5e62db98b82842624b9b555ff8d3117c91",
|
||||
"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[unstake_instructions]": "3a6f7371fa663f400954ab4138c165bebff1cba9942ea9f037c09f3659358902",
|
||||
"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[unstake_instructions]": "8504de9387dcc3f68633d5f49f71702a7f6c0aae0153ec9e952c93ba84b3acca",
|
||||
"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "68bfd9b9a175c028d78631779bc8ce486b1d17a6d255a2bc66f47a4cc604273b",
|
||||
"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[withdraw]": "64230ba3efa3adab7148bc1b3dfb2d1ef270d5a502f3413268ff7ffa3d9a99f2",
|
||||
"T3T1_en_solana-test_sign_tx.py::test_solana_sign_tx[withdraw_nonce_account]": "3ebe9fbb3e26038c18360bb46fe92665b68c052b3436ce613ad4d11bfb00d068",
|
||||
|
Loading…
Reference in New Issue
Block a user