mirror of
https://github.com/trezor/trezor-firmware.git
synced 2024-12-22 14:28:07 +00:00
feat(solana): Hidden flag functionality for instructions
This commit is contained in:
parent
866853e856
commit
8b485de173
@ -65,6 +65,289 @@
|
||||
"result": {
|
||||
"expected_signature": "682ba0889bcf9061ce0560fb7f300bfce25ff8ecdc65f1904a3fced1895de5145cf3c73352a811021d930bd224d4789b3c263acc1f1ae0fb48959d8332cc1702"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "Transfer With Compute Budget Without Heap Confirmation",
|
||||
"parameters": {
|
||||
"address": "m/44'/501'/0'/0'",
|
||||
"construct": {
|
||||
"version": null,
|
||||
"header": {
|
||||
"signers": 1,
|
||||
"readonly_signers": 0,
|
||||
"readonly_non_signers": 2
|
||||
},
|
||||
"accounts": [
|
||||
"14CCvQzQzHCVgZM3j9soPnXuJXh1RmCfwLVUcdfbZVBS",
|
||||
"ETxHeBBcuw9Yu4dGuP3oXrD12V5RECvmi8ogQ9PkjyVF",
|
||||
"11111111111111111111111111111111",
|
||||
"ComputeBudget111111111111111111111111111111"
|
||||
],
|
||||
"blockhash": "2p4rYZAaFfV5Uk5ugdG5KPNty9Uda9B3b4gWB8qnNqak",
|
||||
"instructions": [
|
||||
{
|
||||
"program_index": 3,
|
||||
"accounts": {},
|
||||
"data": {
|
||||
"instruction_id": 2,
|
||||
"units": 200000
|
||||
}
|
||||
},
|
||||
{
|
||||
"program_index": 3,
|
||||
"accounts": {},
|
||||
"data": {
|
||||
"instruction_id": 3,
|
||||
"lamports": 8000
|
||||
}
|
||||
},
|
||||
{
|
||||
"program_index": 2,
|
||||
"accounts": {
|
||||
"funding_account": 0,
|
||||
"recipient_account": 1
|
||||
},
|
||||
"data": {
|
||||
"instruction_id": 2,
|
||||
"lamports": 20000000
|
||||
}
|
||||
}
|
||||
],
|
||||
"luts": []
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"expected_signature": "742baf7a4e92f2d8e617512cb75b8698dd44cff6568a29c288767b31403879424ec16c0642b12081995a727f4a936ba49fc1797e900431a8c66297ba0da3c708"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "Transfer Token With Compute Budget",
|
||||
"parameters": {
|
||||
"address": "m/44'/501'/0'/0'",
|
||||
"construct": {
|
||||
"version": null,
|
||||
"header": {
|
||||
"signers": 1,
|
||||
"readonly_signers": 0,
|
||||
"readonly_non_signers": 2
|
||||
},
|
||||
"accounts": [
|
||||
"14CCvQzQzHCVgZM3j9soPnXuJXh1RmCfwLVUcdfbZVBS",
|
||||
"74pZnim7gywyschy4MGkW6eZURv1DBXqwHTCqLRk63wz",
|
||||
"92YgwqTtTWB7qY92JT6mbL2WCmhAs7LPZL4jLcizNfwx",
|
||||
"GHArwcWCuk9WkUG4XKUbt935rKfmBmywbEWyFxdH3mou",
|
||||
"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
|
||||
"ComputeBudget111111111111111111111111111111"
|
||||
],
|
||||
"blockhash": "26kt5r94ZYdTZY27nAHqjropeDf7dPS19VkZJrta7duL",
|
||||
"instructions": [
|
||||
{
|
||||
"program_index": 5,
|
||||
"accounts": {},
|
||||
"data": {
|
||||
"instruction_id": 1,
|
||||
"bytes": 2048
|
||||
}
|
||||
},
|
||||
{
|
||||
"program_index": 5,
|
||||
"accounts": {},
|
||||
"data": {
|
||||
"instruction_id": 2,
|
||||
"units": 200000
|
||||
}
|
||||
},
|
||||
{
|
||||
"program_index": 5,
|
||||
"accounts": {},
|
||||
"data": {
|
||||
"instruction_id": 3,
|
||||
"lamports": 8000
|
||||
}
|
||||
},
|
||||
{
|
||||
"program_index": 4,
|
||||
"accounts": {
|
||||
"source_account": 1,
|
||||
"token_mint": 3,
|
||||
"destination_account": 2,
|
||||
"owner": 0,
|
||||
"multisig_signers": []
|
||||
},
|
||||
"data": {
|
||||
"instruction_id": 12,
|
||||
"amount": 11,
|
||||
"decimals": 9
|
||||
}
|
||||
}
|
||||
],
|
||||
"luts": []
|
||||
},
|
||||
"additional_info": {
|
||||
"token_accounts_infos": [
|
||||
{
|
||||
"base_address": "BkoECWJYM7w9qNZ6EGCoBtnkphWau6nZMPbPqvm4eYF4",
|
||||
"token_program": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
|
||||
"token_mint": "GHArwcWCuk9WkUG4XKUbt935rKfmBmywbEWyFxdH3mou",
|
||||
"token_account": "92YgwqTtTWB7qY92JT6mbL2WCmhAs7LPZL4jLcizNfwx"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"expected_signature": "72fd7f8653661847387363f1c3a0ae48edd488b655861b67062678ffc9f0b1153ceabb9494dec8bb0a897f2a1cc94130f5a64af9b270d0c9a1c93c5efd269a06"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "Transfer Token With Compute Budget Without Heap Confrimation",
|
||||
"parameters": {
|
||||
"address": "m/44'/501'/0'/0'",
|
||||
"construct": {
|
||||
"version": null,
|
||||
"header": {
|
||||
"signers": 1,
|
||||
"readonly_signers": 0,
|
||||
"readonly_non_signers": 2
|
||||
},
|
||||
"accounts": [
|
||||
"14CCvQzQzHCVgZM3j9soPnXuJXh1RmCfwLVUcdfbZVBS",
|
||||
"74pZnim7gywyschy4MGkW6eZURv1DBXqwHTCqLRk63wz",
|
||||
"92YgwqTtTWB7qY92JT6mbL2WCmhAs7LPZL4jLcizNfwx",
|
||||
"GHArwcWCuk9WkUG4XKUbt935rKfmBmywbEWyFxdH3mou",
|
||||
"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
|
||||
"ComputeBudget111111111111111111111111111111"
|
||||
],
|
||||
"blockhash": "26kt5r94ZYdTZY27nAHqjropeDf7dPS19VkZJrta7duL",
|
||||
"instructions": [
|
||||
{
|
||||
"program_index": 5,
|
||||
"accounts": {},
|
||||
"data": {
|
||||
"instruction_id": 2,
|
||||
"units": 200000
|
||||
}
|
||||
},
|
||||
{
|
||||
"program_index": 5,
|
||||
"accounts": {},
|
||||
"data": {
|
||||
"instruction_id": 3,
|
||||
"lamports": 8000
|
||||
}
|
||||
},
|
||||
{
|
||||
"program_index": 4,
|
||||
"accounts": {
|
||||
"source_account": 1,
|
||||
"token_mint": 3,
|
||||
"destination_account": 2,
|
||||
"owner": 0,
|
||||
"multisig_signers": []
|
||||
},
|
||||
"data": {
|
||||
"instruction_id": 12,
|
||||
"amount": 11,
|
||||
"decimals": 9
|
||||
}
|
||||
}
|
||||
],
|
||||
"luts": []
|
||||
},
|
||||
"additional_info": {
|
||||
"token_accounts_infos": [
|
||||
{
|
||||
"base_address": "BkoECWJYM7w9qNZ6EGCoBtnkphWau6nZMPbPqvm4eYF4",
|
||||
"token_program": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
|
||||
"token_mint": "GHArwcWCuk9WkUG4XKUbt935rKfmBmywbEWyFxdH3mou",
|
||||
"token_account": "92YgwqTtTWB7qY92JT6mbL2WCmhAs7LPZL4jLcizNfwx"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"expected_signature": "1eae0dca0209903a44e38964566c87c6db4f60c68067d8e6dec22c2dfb085f98147eb8e29fbf0e1bff390730e76eadf492cc5dd916b564ae892069b3fe485c09"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "Create Stake Account With Compute Budget",
|
||||
"parameters": {
|
||||
"address": "m/44'/501'/0'/0'",
|
||||
"construct": {
|
||||
"version": null,
|
||||
"header": {
|
||||
"signers": 2,
|
||||
"readonly_signers": 0,
|
||||
"readonly_non_signers": 3
|
||||
},
|
||||
"accounts": [
|
||||
"14CCvQzQzHCVgZM3j9soPnXuJXh1RmCfwLVUcdfbZVBS",
|
||||
"ATFXMD5cYiw9yHkvexgx3nf9LNSouEViB5BZBsgwunAv",
|
||||
"11111111111111111111111111111111",
|
||||
"Stake11111111111111111111111111111111111111",
|
||||
"SysvarRent111111111111111111111111111111111",
|
||||
"ComputeBudget111111111111111111111111111111"
|
||||
],
|
||||
"blockhash": "2p4rYZAaFfV5Uk5ugdG5KPNty9Uda9B3b4gWB8qnNqak",
|
||||
"instructions": [
|
||||
{
|
||||
"program_index": 5,
|
||||
"accounts": {},
|
||||
"data": {
|
||||
"instruction_id": 1,
|
||||
"bytes": 2048
|
||||
}
|
||||
},
|
||||
{
|
||||
"program_index": 5,
|
||||
"accounts": {},
|
||||
"data": {
|
||||
"instruction_id": 2,
|
||||
"units": 200000
|
||||
}
|
||||
},
|
||||
{
|
||||
"program_index": 5,
|
||||
"accounts": {},
|
||||
"data": {
|
||||
"instruction_id": 3,
|
||||
"lamports": 8000
|
||||
}
|
||||
},
|
||||
{
|
||||
"program_index": 2,
|
||||
"accounts": {
|
||||
"funding_account": 0,
|
||||
"new_account": 1
|
||||
},
|
||||
"data": {
|
||||
"instruction_id": 0,
|
||||
"lamports": 20000000,
|
||||
"space": 1000,
|
||||
"owner": "Stake11111111111111111111111111111111111111"
|
||||
}
|
||||
},
|
||||
{
|
||||
"program_index": 3,
|
||||
"accounts": {
|
||||
"uninitialized_stake_account": 1,
|
||||
"rent_sysvar": 4
|
||||
},
|
||||
"data": {
|
||||
"instruction_id": 0,
|
||||
"staker": "14CCvQzQzHCVgZM3j9soPnXuJXh1RmCfwLVUcdfbZVBS",
|
||||
"withdrawer": "14CCvQzQzHCVgZM3j9soPnXuJXh1RmCfwLVUcdfbZVBS",
|
||||
"unix_timestamp": 0,
|
||||
"epoch": 0,
|
||||
"custodian": "11111111111111111111111111111111"
|
||||
}
|
||||
}
|
||||
],
|
||||
"luts": []
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"expected_signature": "28ea83fcee7c5e51678e04aa72d37018fd41240ec0c3262268b2dc449971bcc2705ac7d9d24515b9a2c23fe59343d9732466a2207a30ca4f4d84c0ee31451f00"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
@ -122,14 +122,13 @@ async def try_confirm_token_transfer_transaction(
|
||||
from .layout import confirm_token_transfer
|
||||
from .token_account import try_get_token_account_base_address
|
||||
|
||||
visible_instructions = transaction.get_visible_instructions()
|
||||
if not is_predefined_token_transfer(
|
||||
transaction.instructions,
|
||||
visible_instructions,
|
||||
):
|
||||
return False
|
||||
|
||||
transfer_token_instructions = get_token_transfer_instructions(
|
||||
transaction.instructions
|
||||
)
|
||||
transfer_token_instructions = get_token_transfer_instructions(visible_instructions)
|
||||
|
||||
# in is_predefined_token_transfer we made sure that these values are the same
|
||||
# for all the transfer token instructions
|
||||
@ -178,7 +177,7 @@ async def try_confirm_predefined_transaction(
|
||||
from .layout import confirm_system_transfer
|
||||
from .transaction.instructions import SystemProgramTransferInstruction
|
||||
|
||||
instructions = transaction.instructions
|
||||
instructions = transaction.get_visible_instructions()
|
||||
instructions_count = len(instructions)
|
||||
|
||||
for instruction in instructions:
|
||||
|
@ -76,8 +76,10 @@ async def sign_tx(
|
||||
async def confirm_instructions(
|
||||
signer_path: list[int], signer_public_key: bytes, transaction: Transaction
|
||||
) -> None:
|
||||
instructions_count = len(transaction.instructions)
|
||||
for instruction_index, instruction in enumerate(transaction.instructions, 1):
|
||||
|
||||
visible_instructions = transaction.get_visible_instructions()
|
||||
instructions_count = len(visible_instructions)
|
||||
for instruction_index, instruction in enumerate(visible_instructions, 1):
|
||||
if not instruction.is_program_supported:
|
||||
from .layout import confirm_unsupported_program_confirm
|
||||
|
||||
|
@ -202,3 +202,10 @@ class Transaction:
|
||||
):
|
||||
self.blind_signing = True
|
||||
break
|
||||
|
||||
def get_visible_instructions(self) -> list[Instruction]:
|
||||
return [
|
||||
instruction
|
||||
for instruction in self.instructions
|
||||
if not instruction.is_ui_hidden
|
||||
]
|
||||
|
@ -30,6 +30,7 @@ class Instruction:
|
||||
|
||||
is_program_supported: bool
|
||||
is_instruction_supported: bool
|
||||
is_ui_hidden: bool
|
||||
instruction_data: InstructionData
|
||||
accounts: list[Account]
|
||||
|
||||
@ -88,6 +89,7 @@ class Instruction:
|
||||
ui_name: str,
|
||||
is_program_supported: bool = True,
|
||||
is_instruction_supported: bool = True,
|
||||
is_ui_hidden: bool = False,
|
||||
supports_multisig: bool = False,
|
||||
is_deprecated_warning: str | None = None,
|
||||
) -> None:
|
||||
@ -101,6 +103,7 @@ class Instruction:
|
||||
|
||||
self.ui_properties = ui_properties
|
||||
|
||||
self.is_ui_hidden = is_ui_hidden
|
||||
self.is_program_supported = is_program_supported
|
||||
self.is_instruction_supported = is_instruction_supported
|
||||
|
||||
|
@ -890,6 +890,7 @@ def get_instruction(
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
False,
|
||||
None,
|
||||
)
|
||||
if instruction_id == SYSTEM_PROGRAM_ID_INS_ASSIGN:
|
||||
@ -934,6 +935,7 @@ def get_instruction(
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
False,
|
||||
None,
|
||||
)
|
||||
if instruction_id == SYSTEM_PROGRAM_ID_INS_TRANSFER:
|
||||
@ -990,6 +992,7 @@ def get_instruction(
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
False,
|
||||
None,
|
||||
)
|
||||
if instruction_id == SYSTEM_PROGRAM_ID_INS_CREATE_ACCOUNT_WITH_SEED:
|
||||
@ -1079,6 +1082,7 @@ def get_instruction(
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
False,
|
||||
None,
|
||||
)
|
||||
if instruction_id == SYSTEM_PROGRAM_ID_INS_ADVANCE_NONCE_ACCOUNT:
|
||||
@ -1125,6 +1129,7 @@ def get_instruction(
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
False,
|
||||
None,
|
||||
)
|
||||
if instruction_id == SYSTEM_PROGRAM_ID_INS_WITHDRAW_NONCE_ACCOUNT:
|
||||
@ -1203,6 +1208,7 @@ def get_instruction(
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
False,
|
||||
None,
|
||||
)
|
||||
if instruction_id == SYSTEM_PROGRAM_ID_INS_INITIALIZE_NONCE_ACCOUNT:
|
||||
@ -1257,6 +1263,7 @@ def get_instruction(
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
False,
|
||||
None,
|
||||
)
|
||||
if instruction_id == SYSTEM_PROGRAM_ID_INS_AUTHORIZE_NONCE_ACCOUNT:
|
||||
@ -1313,6 +1320,7 @@ def get_instruction(
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
False,
|
||||
None,
|
||||
)
|
||||
if instruction_id == SYSTEM_PROGRAM_ID_INS_ALLOCATE:
|
||||
@ -1357,6 +1365,7 @@ def get_instruction(
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
False,
|
||||
None,
|
||||
)
|
||||
if instruction_id == SYSTEM_PROGRAM_ID_INS_ALLOCATE_WITH_SEED:
|
||||
@ -1427,6 +1436,7 @@ def get_instruction(
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
False,
|
||||
None,
|
||||
)
|
||||
if instruction_id == SYSTEM_PROGRAM_ID_INS_ASSIGN_WITH_SEED:
|
||||
@ -1490,6 +1500,7 @@ def get_instruction(
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
False,
|
||||
None,
|
||||
)
|
||||
if instruction_id == SYSTEM_PROGRAM_ID_INS_TRANSFER_WITH_SEED:
|
||||
@ -1565,6 +1576,7 @@ def get_instruction(
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
False,
|
||||
None,
|
||||
)
|
||||
if instruction_id == SYSTEM_PROGRAM_ID_INS_UPGRADE_NONCE_ACCOUNT:
|
||||
@ -1594,6 +1606,7 @@ def get_instruction(
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
False,
|
||||
None,
|
||||
)
|
||||
return Instruction(
|
||||
@ -1608,6 +1621,7 @@ def get_instruction(
|
||||
True,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
)
|
||||
if program_id == STAKE_PROGRAM_ID:
|
||||
if instruction_id == STAKE_PROGRAM_ID_INS_INITIALIZE:
|
||||
@ -1713,6 +1727,7 @@ def get_instruction(
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
False,
|
||||
None,
|
||||
)
|
||||
if instruction_id == STAKE_PROGRAM_ID_INS_AUTHORIZE:
|
||||
@ -1800,6 +1815,7 @@ def get_instruction(
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
False,
|
||||
None,
|
||||
)
|
||||
if instruction_id == STAKE_PROGRAM_ID_INS_DELEGATE_STAKE:
|
||||
@ -1868,6 +1884,7 @@ def get_instruction(
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
False,
|
||||
None,
|
||||
)
|
||||
if instruction_id == STAKE_PROGRAM_ID_INS_SPLIT:
|
||||
@ -1936,6 +1953,7 @@ def get_instruction(
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
False,
|
||||
None,
|
||||
)
|
||||
if instruction_id == STAKE_PROGRAM_ID_INS_WITHDRAW:
|
||||
@ -2019,6 +2037,7 @@ def get_instruction(
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
False,
|
||||
None,
|
||||
)
|
||||
if instruction_id == STAKE_PROGRAM_ID_INS_DEACTIVATE:
|
||||
@ -2065,6 +2084,7 @@ def get_instruction(
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
False,
|
||||
None,
|
||||
)
|
||||
if instruction_id == STAKE_PROGRAM_ID_INS_SET_LOCKUP:
|
||||
@ -2149,6 +2169,7 @@ def get_instruction(
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
False,
|
||||
None,
|
||||
)
|
||||
if instruction_id == STAKE_PROGRAM_ID_INS_MERGE:
|
||||
@ -2212,6 +2233,7 @@ def get_instruction(
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
False,
|
||||
None,
|
||||
)
|
||||
if instruction_id == STAKE_PROGRAM_ID_INS_AUTHORIZE_WITH_SEED:
|
||||
@ -2313,6 +2335,7 @@ def get_instruction(
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
False,
|
||||
None,
|
||||
)
|
||||
if instruction_id == STAKE_PROGRAM_ID_INS_INITIALIZE_CHECKED:
|
||||
@ -2371,6 +2394,7 @@ def get_instruction(
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
False,
|
||||
None,
|
||||
)
|
||||
if instruction_id == STAKE_PROGRAM_ID_INS_AUTHORIZE_CHECKED:
|
||||
@ -2456,6 +2480,7 @@ def get_instruction(
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
False,
|
||||
None,
|
||||
)
|
||||
if instruction_id == STAKE_PROGRAM_ID_INS_AUTHORIZE_CHECKED_WITH_SEED:
|
||||
@ -2555,6 +2580,7 @@ def get_instruction(
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
False,
|
||||
None,
|
||||
)
|
||||
if instruction_id == STAKE_PROGRAM_ID_INS_SET_LOCKUP_CHECKED:
|
||||
@ -2637,6 +2663,7 @@ def get_instruction(
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
False,
|
||||
None,
|
||||
)
|
||||
return Instruction(
|
||||
@ -2651,6 +2678,7 @@ def get_instruction(
|
||||
True,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
)
|
||||
if program_id == COMPUTE_BUDGET_PROGRAM_ID:
|
||||
if instruction_id == COMPUTE_BUDGET_PROGRAM_ID_INS_REQUEST_HEAP_FRAME:
|
||||
@ -2682,6 +2710,7 @@ def get_instruction(
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
False,
|
||||
None,
|
||||
)
|
||||
if instruction_id == COMPUTE_BUDGET_PROGRAM_ID_INS_SET_COMPUTE_UNIT_LIMIT:
|
||||
@ -2712,6 +2741,7 @@ def get_instruction(
|
||||
"Compute Budget Program: Set Compute Unit Limit",
|
||||
True,
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
None,
|
||||
)
|
||||
@ -2743,6 +2773,7 @@ def get_instruction(
|
||||
"Compute Budget Program: Set Compute Unit Price",
|
||||
True,
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
None,
|
||||
)
|
||||
@ -2758,6 +2789,7 @@ def get_instruction(
|
||||
True,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
)
|
||||
if program_id == TOKEN_PROGRAM_ID:
|
||||
if instruction_id == TOKEN_PROGRAM_ID_INS_INITIALIZE_ACCOUNT:
|
||||
@ -2816,6 +2848,7 @@ def get_instruction(
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
False,
|
||||
None,
|
||||
)
|
||||
if instruction_id == TOKEN_PROGRAM_ID_INS_INITIALIZE_MULTISIG:
|
||||
@ -2869,6 +2902,7 @@ def get_instruction(
|
||||
"Token Program: Initialize Multisig",
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
True,
|
||||
None,
|
||||
)
|
||||
@ -2937,6 +2971,7 @@ def get_instruction(
|
||||
"Token Program: Transfer",
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
True,
|
||||
"Warning: Instruction is deprecated. Token decimals unknown.",
|
||||
)
|
||||
@ -2998,6 +3033,7 @@ def get_instruction(
|
||||
"Token Program: Approve",
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
True,
|
||||
"Warning: Instruction is deprecated. Token decimals unknown.",
|
||||
)
|
||||
@ -3039,6 +3075,7 @@ def get_instruction(
|
||||
"Token Program: Revoke",
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
True,
|
||||
None,
|
||||
)
|
||||
@ -3109,6 +3146,7 @@ def get_instruction(
|
||||
"Token Program: Set Authority",
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
True,
|
||||
None,
|
||||
)
|
||||
@ -3170,6 +3208,7 @@ def get_instruction(
|
||||
"Token Program: Mint To",
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
True,
|
||||
"Warning: Instruction is deprecated. Token decimals unknown.",
|
||||
)
|
||||
@ -3231,6 +3270,7 @@ def get_instruction(
|
||||
"Token Program: Burn",
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
True,
|
||||
"Warning: Instruction is deprecated. Token decimals unknown.",
|
||||
)
|
||||
@ -3284,6 +3324,7 @@ def get_instruction(
|
||||
"Token Program: Close Account",
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
True,
|
||||
None,
|
||||
)
|
||||
@ -3330,6 +3371,7 @@ def get_instruction(
|
||||
"Token Program: Freeze Account",
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
True,
|
||||
None,
|
||||
)
|
||||
@ -3376,6 +3418,7 @@ def get_instruction(
|
||||
"Token Program: Thaw Account",
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
True,
|
||||
None,
|
||||
)
|
||||
@ -3463,6 +3506,7 @@ def get_instruction(
|
||||
"Token Program: Transfer Checked",
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
True,
|
||||
None,
|
||||
)
|
||||
@ -3550,6 +3594,7 @@ def get_instruction(
|
||||
"Token Program: Approve Checked",
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
True,
|
||||
None,
|
||||
)
|
||||
@ -3625,6 +3670,7 @@ def get_instruction(
|
||||
"Token Program: Mint to Checked",
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
True,
|
||||
None,
|
||||
)
|
||||
@ -3700,6 +3746,7 @@ def get_instruction(
|
||||
"Token Program: Burn Checked",
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
True,
|
||||
None,
|
||||
)
|
||||
@ -3762,6 +3809,7 @@ def get_instruction(
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
False,
|
||||
None,
|
||||
)
|
||||
if instruction_id == TOKEN_PROGRAM_ID_INS_SYNC_NATIVE:
|
||||
@ -3791,6 +3839,7 @@ def get_instruction(
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
False,
|
||||
None,
|
||||
)
|
||||
if instruction_id == TOKEN_PROGRAM_ID_INS_INITIALIZE_ACCOUNT_3:
|
||||
@ -3847,6 +3896,7 @@ def get_instruction(
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
False,
|
||||
None,
|
||||
)
|
||||
if instruction_id == TOKEN_PROGRAM_ID_INS_INITIALIZE_IMMUTABLE_OWNER:
|
||||
@ -3876,6 +3926,7 @@ def get_instruction(
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
False,
|
||||
None,
|
||||
)
|
||||
return Instruction(
|
||||
@ -3890,6 +3941,7 @@ def get_instruction(
|
||||
True,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
)
|
||||
if program_id == TOKEN_2022_PROGRAM_ID:
|
||||
if instruction_id == TOKEN_2022_PROGRAM_ID_INS_INITIALIZE_ACCOUNT:
|
||||
@ -3948,6 +4000,7 @@ def get_instruction(
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
False,
|
||||
None,
|
||||
)
|
||||
if instruction_id == TOKEN_2022_PROGRAM_ID_INS_INITIALIZE_MULTISIG:
|
||||
@ -4001,6 +4054,7 @@ def get_instruction(
|
||||
"Token 2022 Program: Initialize Multisig",
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
True,
|
||||
None,
|
||||
)
|
||||
@ -4069,6 +4123,7 @@ def get_instruction(
|
||||
"Token 2022 Program: Transfer",
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
True,
|
||||
"Warning: Instruction is deprecated. Token decimals unknown.",
|
||||
)
|
||||
@ -4130,6 +4185,7 @@ def get_instruction(
|
||||
"Token 2022 Program: Approve",
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
True,
|
||||
"Warning: Instruction is deprecated. Token decimals unknown.",
|
||||
)
|
||||
@ -4171,6 +4227,7 @@ def get_instruction(
|
||||
"Token 2022 Program: Revoke",
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
True,
|
||||
None,
|
||||
)
|
||||
@ -4241,6 +4298,7 @@ def get_instruction(
|
||||
"Token 2022 Program: Set Authority",
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
True,
|
||||
None,
|
||||
)
|
||||
@ -4302,6 +4360,7 @@ def get_instruction(
|
||||
"Token 2022 Program: Mint to",
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
True,
|
||||
"Warning: Instruction is deprecated. Token decimals unknown.",
|
||||
)
|
||||
@ -4363,6 +4422,7 @@ def get_instruction(
|
||||
"Token 2022 Program: Burn",
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
True,
|
||||
"Warning: Instruction is deprecated. Token decimals unknown.",
|
||||
)
|
||||
@ -4416,6 +4476,7 @@ def get_instruction(
|
||||
"Token 2022 Program: Close Account",
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
True,
|
||||
None,
|
||||
)
|
||||
@ -4462,6 +4523,7 @@ def get_instruction(
|
||||
"Token 2022 Program: Freeze Account",
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
True,
|
||||
None,
|
||||
)
|
||||
@ -4508,6 +4570,7 @@ def get_instruction(
|
||||
"Token 2022 Program: Thaw Account",
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
True,
|
||||
None,
|
||||
)
|
||||
@ -4595,6 +4658,7 @@ def get_instruction(
|
||||
"Token 2022 Program: Transfer Checked",
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
True,
|
||||
None,
|
||||
)
|
||||
@ -4682,6 +4746,7 @@ def get_instruction(
|
||||
"Token 2022 Program: Approve Checked",
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
True,
|
||||
None,
|
||||
)
|
||||
@ -4757,6 +4822,7 @@ def get_instruction(
|
||||
"Token 2022 Program: Mint to Checked",
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
True,
|
||||
None,
|
||||
)
|
||||
@ -4832,6 +4898,7 @@ def get_instruction(
|
||||
"Token 2022 Program: Burn Checked",
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
True,
|
||||
None,
|
||||
)
|
||||
@ -4894,6 +4961,7 @@ def get_instruction(
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
False,
|
||||
None,
|
||||
)
|
||||
if instruction_id == TOKEN_2022_PROGRAM_ID_INS_SYNC_NATIVE:
|
||||
@ -4923,6 +4991,7 @@ def get_instruction(
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
False,
|
||||
None,
|
||||
)
|
||||
if instruction_id == TOKEN_2022_PROGRAM_ID_INS_INITIALIZE_ACCOUNT_3:
|
||||
@ -4979,6 +5048,7 @@ def get_instruction(
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
False,
|
||||
None,
|
||||
)
|
||||
if instruction_id == TOKEN_2022_PROGRAM_ID_INS_INITIALIZE_IMMUTABLE_OWNER:
|
||||
@ -5008,6 +5078,7 @@ def get_instruction(
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
False,
|
||||
None,
|
||||
)
|
||||
return Instruction(
|
||||
@ -5022,6 +5093,7 @@ def get_instruction(
|
||||
True,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
)
|
||||
if program_id == ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID:
|
||||
if instruction_id == ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID_INS_CREATE:
|
||||
@ -5097,6 +5169,7 @@ def get_instruction(
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
False,
|
||||
None,
|
||||
)
|
||||
if instruction_id == ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID_INS_CREATE_IDEMPOTENT:
|
||||
@ -5172,6 +5245,7 @@ def get_instruction(
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
False,
|
||||
None,
|
||||
)
|
||||
if instruction_id == ASSOCIATED_TOKEN_ACCOUNT_PROGRAM_ID_INS_RECOVER_NESTED:
|
||||
@ -5245,6 +5319,7 @@ def get_instruction(
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
False,
|
||||
None,
|
||||
)
|
||||
return Instruction(
|
||||
@ -5259,6 +5334,7 @@ def get_instruction(
|
||||
True,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
)
|
||||
if program_id == MEMO_PROGRAM_ID:
|
||||
if instruction_id == MEMO_PROGRAM_ID_INS_MEMO:
|
||||
@ -5303,6 +5379,7 @@ def get_instruction(
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
False,
|
||||
None,
|
||||
)
|
||||
return Instruction(
|
||||
@ -5317,6 +5394,7 @@ def get_instruction(
|
||||
True,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
)
|
||||
if program_id == MEMO_LEGACY_PROGRAM_ID:
|
||||
if instruction_id == MEMO_LEGACY_PROGRAM_ID_INS_MEMO:
|
||||
@ -5361,6 +5439,7 @@ def get_instruction(
|
||||
True,
|
||||
True,
|
||||
False,
|
||||
False,
|
||||
None,
|
||||
)
|
||||
return Instruction(
|
||||
@ -5375,6 +5454,7 @@ def get_instruction(
|
||||
True,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
)
|
||||
return Instruction(
|
||||
instruction_data,
|
||||
@ -5388,4 +5468,5 @@ def get_instruction(
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
)
|
||||
|
@ -130,7 +130,6 @@ def ${type["format"]}(_: Instruction, value: int) -> str:
|
||||
None\
|
||||
% endif
|
||||
</%def>\
|
||||
|
||||
<%
|
||||
# Make sure that all required parameters are present in the instruction.
|
||||
for program in programs["programs"]:
|
||||
@ -190,6 +189,7 @@ def get_instruction(
|
||||
"${program["name"]}: ${instruction["name"]}",
|
||||
True,
|
||||
True,
|
||||
${instruction.get("is_ui_hidden", False)},
|
||||
${instruction["is_multisig"]},
|
||||
${getOptionalString(instruction, "is_deprecated_warning")},
|
||||
)
|
||||
@ -205,6 +205,7 @@ def get_instruction(
|
||||
"${program["name"]}",
|
||||
True,
|
||||
False,
|
||||
False,
|
||||
False
|
||||
)
|
||||
% endif
|
||||
@ -220,6 +221,7 @@ def get_instruction(
|
||||
"Unsupported program",
|
||||
False,
|
||||
False,
|
||||
False,
|
||||
False
|
||||
)
|
||||
|
||||
|
@ -1315,6 +1315,7 @@
|
||||
{
|
||||
"id": 2,
|
||||
"name": "Set Compute Unit Limit",
|
||||
"is_ui_hidden": true,
|
||||
"is_multisig": false,
|
||||
"parameters": [
|
||||
{
|
||||
@ -1334,6 +1335,7 @@
|
||||
{
|
||||
"id": 3,
|
||||
"name": "Set Compute Unit Price",
|
||||
"is_ui_hidden": true,
|
||||
"is_multisig": false,
|
||||
"parameters": [
|
||||
{
|
||||
|
@ -30,6 +30,7 @@ def create_mock_instruction(
|
||||
ui_name="",
|
||||
is_program_supported=True,
|
||||
is_instruction_supported=True,
|
||||
is_ui_hidden=False,
|
||||
supports_multisig=False,
|
||||
is_deprecated_warning=None,
|
||||
)
|
||||
|
@ -19387,6 +19387,7 @@
|
||||
"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account]": "524a9d4ab0406cce8c7c8165c8eef706656bd44de6f5bf29124db6a98b33c612",
|
||||
"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[create_associated_token_account_idempotent]": "8664c38ef71ce627dd11efb64b0df244ef9da0932f806bbfd284ad7687e8a72c",
|
||||
"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account]": "4897dc73849f7e7787de0a5f2dce4973bff127c173a09cd054bdbf68c3f02ece",
|
||||
"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[create_stake_account_with_compute_budget]": "bbee0856297cb8abe986c1832e4020c02c3f172463e369b577f2c662e72974f8",
|
||||
"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[create_token_account_and_transfer_token_-_predefined]": "a9a47846ba32a38d250aab36fd6ae12915343f49b40dd17ef808da8e4c7c485e",
|
||||
"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[deactivate]": "0ba810277887b2c7b1821c8eef4f483c143bb1448ef71a34d0474c6a0afedc7d",
|
||||
"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[delegate]": "09b60fa7a047497229eee817684881c85d3360e710b1b917d0d288ae12aa3459",
|
||||
@ -19423,7 +19424,10 @@
|
||||
"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked]": "0b2d55ccbcfd78972e080b6a72d16ed000207c796ac7d81e8f2dc7ce6f5a7048",
|
||||
"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_checked_-_multisig]": "6545aafb0f5ec3f7703a5006995b4aa1dd7f70f54113ff871f19da13baaaa1c1",
|
||||
"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_-_predefined]": "a9a47846ba32a38d250aab36fd6ae12915343f49b40dd17ef808da8e4c7c485e",
|
||||
"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "2d7f30fdc029ddeeccc405ee7314ac0eb04b3be71593ee2d4e1adc174c483ca5",
|
||||
"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget]": "3faa43bbc5f22d550fa523e34c7bd239f9448a9bc3ea2cbbb9516794dc2973cf",
|
||||
"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_token_with_compute_budget_without_heap-9ae0985e": "ef12c38cc08c2a0cceffc79ca75263cbecabcc500f11ac373ee3e58f18549f78",
|
||||
"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget]": "52010e3d3e71af3494ebdd43f1f69e11bee65d0e209f75c95690a40da3f81fd1",
|
||||
"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_compute_budget_without_heap_confirmation]": "84bac830801fb596c563d2704247bebd92e777ae5008a2f34fe89a38114bc1a1",
|
||||
"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[transfer_with_seed]": "f4e95cb91b71f9bbc64749ec062d944fabf4e59d44753b7c4f71755f5e37cf88",
|
||||
"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[unknown_instruction]": "b610b5c902ee60ad14c76f81bcb9144ac20806b63856054e9efd4ef36c5755fd",
|
||||
"TT_en_solana-test_sign_tx.py::test_solana_sign_tx[upgrade_nonce]": "255fb82c371edfa0c8a0b93751f9994784913afa12d6cc85b99a26eaab12874b",
|
||||
|
Loading…
Reference in New Issue
Block a user