mirror of
https://github.com/trezor/trezor-firmware.git
synced 2024-11-22 07:28:10 +00:00
chore(solana): add sign_tx
tests
This commit is contained in:
parent
68c0e6c43e
commit
e53121b3c4
94
common/tests/fixtures/solana/sign_tx.associated_token_account_program.json
vendored
Normal file
94
common/tests/fixtures/solana/sign_tx.associated_token_account_program.json
vendored
Normal file
@ -0,0 +1,94 @@
|
||||
{
|
||||
"setup": {
|
||||
"mnemonic": "all all all all all all all all all all all all",
|
||||
"passphrase": ""
|
||||
},
|
||||
"tests": [
|
||||
{
|
||||
"description": "Create Associated Token Account",
|
||||
"parameters": {
|
||||
"address": "m/44'/501'/0'/0'",
|
||||
"construct": {
|
||||
"version": null,
|
||||
"header": {
|
||||
"signers": 1,
|
||||
"readonly_signers": 0,
|
||||
"readonly_non_signers": 4
|
||||
},
|
||||
"accounts": [
|
||||
"14CCvQzQzHCVgZM3j9soPnXuJXh1RmCfwLVUcdfbZVBS",
|
||||
"FUqrjRRtF1LiptdFqaFxipE8R3YfCE4k56xwm5n1piqX",
|
||||
"11111111111111111111111111111111",
|
||||
"6YuhWADZyAAxAaVKPm1G5N51RvDBXsnWo4SfsJ47wSoK",
|
||||
"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL",
|
||||
"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
|
||||
],
|
||||
"blockhash": "2p4rYZAaFfV5Uk5ugdG5KPNty9Uda9B3b4gWB8qnNqak",
|
||||
"instructions": [
|
||||
{
|
||||
"program_index": 4,
|
||||
"accounts": {
|
||||
"funding_account": 0,
|
||||
"associated_token_account": 1,
|
||||
"wallet_address": 0,
|
||||
"token_mint": 3,
|
||||
"system_program": 2,
|
||||
"spl_token": 5
|
||||
},
|
||||
"data": {
|
||||
"instruction_id": null
|
||||
}
|
||||
}
|
||||
],
|
||||
"luts": []
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"expected_signature": "629daa88d10bca2315fe4176c323197a22c821026f7f6019cadbcf2769c5bb38ceef7652b5cba7e246a51f131f14fa8d776df63c50a1c4a09a3cf0bf2d446201"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "Create Associated Token Account Idempotent",
|
||||
"parameters": {
|
||||
"address": "m/44'/501'/0'/0'",
|
||||
"construct": {
|
||||
"version": null,
|
||||
"header": {
|
||||
"signers": 1,
|
||||
"readonly_signers": 0,
|
||||
"readonly_non_signers": 4
|
||||
},
|
||||
"accounts": [
|
||||
"14CCvQzQzHCVgZM3j9soPnXuJXh1RmCfwLVUcdfbZVBS",
|
||||
"FUqrjRRtF1LiptdFqaFxipE8R3YfCE4k56xwm5n1piqX",
|
||||
"11111111111111111111111111111111",
|
||||
"6YuhWADZyAAxAaVKPm1G5N51RvDBXsnWo4SfsJ47wSoK",
|
||||
"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL",
|
||||
"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
|
||||
],
|
||||
"blockhash": "2p4rYZAaFfV5Uk5ugdG5KPNty9Uda9B3b4gWB8qnNqak",
|
||||
"instructions": [
|
||||
{
|
||||
"program_index": 4,
|
||||
"accounts": {
|
||||
"funding_account": 0,
|
||||
"associated_token_account": 1,
|
||||
"wallet_addr": 0,
|
||||
"token_mint": 3,
|
||||
"system_program": 2,
|
||||
"spl_token": 5
|
||||
},
|
||||
"data": {
|
||||
"instruction_id": 1
|
||||
}
|
||||
}
|
||||
],
|
||||
"luts": []
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"expected_signature": "c7b7dc9afab413788fa185b85cbf72a90b6f12de583a478a531eaa2f7d13f6cbeae97b539c6859f2c954a9d92fbce8be12b0fe1a5a53df367e715b9793f20301"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
70
common/tests/fixtures/solana/sign_tx.compute_budget_program.json
vendored
Normal file
70
common/tests/fixtures/solana/sign_tx.compute_budget_program.json
vendored
Normal file
@ -0,0 +1,70 @@
|
||||
{
|
||||
"setup": {
|
||||
"mnemonic": "all all all all all all all all all all all all",
|
||||
"passphrase": ""
|
||||
},
|
||||
"tests": [
|
||||
{
|
||||
"description": "Transfer 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",
|
||||
"ETxHeBBcuw9Yu4dGuP3oXrD12V5RECvmi8ogQ9PkjyVF",
|
||||
"11111111111111111111111111111111",
|
||||
"ComputeBudget111111111111111111111111111111"
|
||||
],
|
||||
"blockhash": "2p4rYZAaFfV5Uk5ugdG5KPNty9Uda9B3b4gWB8qnNqak",
|
||||
"instructions": [
|
||||
{
|
||||
"program_index": 3,
|
||||
"accounts": {},
|
||||
"data": {
|
||||
"instruction_id": 1,
|
||||
"bytes": 2048
|
||||
}
|
||||
},
|
||||
{
|
||||
"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": "682ba0889bcf9061ce0560fb7f300bfce25ff8ecdc65f1904a3fced1895de5145cf3c73352a811021d930bd224d4789b3c263acc1f1ae0fb48959d8332cc1702"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
78
common/tests/fixtures/solana/sign_tx.memo_program.json
vendored
Normal file
78
common/tests/fixtures/solana/sign_tx.memo_program.json
vendored
Normal file
@ -0,0 +1,78 @@
|
||||
{
|
||||
"setup": {
|
||||
"mnemonic": "all all all all all all all all all all all all",
|
||||
"passphrase": ""
|
||||
},
|
||||
"tests": [
|
||||
{
|
||||
"description": "Memo",
|
||||
"parameters": {
|
||||
"address": "m/44'/501'/0'/0'",
|
||||
"construct": {
|
||||
"version": null,
|
||||
"header": {
|
||||
"signers": 1,
|
||||
"readonly_signers": 0,
|
||||
"readonly_non_signers": 1
|
||||
},
|
||||
"accounts": [
|
||||
"14CCvQzQzHCVgZM3j9soPnXuJXh1RmCfwLVUcdfbZVBS",
|
||||
"MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"
|
||||
],
|
||||
"blockhash": "2p4rYZAaFfV5Uk5ugdG5KPNty9Uda9B3b4gWB8qnNqak",
|
||||
"instructions": [
|
||||
{
|
||||
"program_index": 1,
|
||||
"accounts": {
|
||||
"signer_accounts": 0
|
||||
},
|
||||
"data": {
|
||||
"instruction_id": null,
|
||||
"memo": "Hello World"
|
||||
}
|
||||
}
|
||||
],
|
||||
"luts": []
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"expected_signature": "0a69b5df79ea6dc007fea6d9be72a94bb19dd3f957c7634737c33452b2539f870b251cb88ef639b4f5f2720c5de1a6bedf5f9b88b5ee0fa0a9ad87634f121909"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "Memo Legacy",
|
||||
"parameters": {
|
||||
"address": "m/44'/501'/0'/0'",
|
||||
"construct": {
|
||||
"version": null,
|
||||
"header": {
|
||||
"signers": 1,
|
||||
"readonly_signers": 0,
|
||||
"readonly_non_signers": 1
|
||||
},
|
||||
"accounts": [
|
||||
"14CCvQzQzHCVgZM3j9soPnXuJXh1RmCfwLVUcdfbZVBS",
|
||||
"Memo1UhkJRfHyvLMcVucJwxXeuD728EqVDDwQDxFMNo"
|
||||
],
|
||||
"blockhash": "2p4rYZAaFfV5Uk5ugdG5KPNty9Uda9B3b4gWB8qnNqak",
|
||||
"instructions": [
|
||||
{
|
||||
"program_index": 1,
|
||||
"accounts": {
|
||||
"signer_accounts": 0
|
||||
},
|
||||
"data": {
|
||||
"instruction_id": null,
|
||||
"memo": "Hello Legacy World"
|
||||
}
|
||||
}
|
||||
],
|
||||
"luts": []
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"expected_signature": "d52b675ca8a81bc9d3dd87eec309589a32645221fbab8792d5b3bf647528711321fdba67dd8af1276d62b201a5bb12d8b1a870e65341989708ccb25ef7155f08"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
707
common/tests/fixtures/solana/sign_tx.stake_program.json
vendored
Normal file
707
common/tests/fixtures/solana/sign_tx.stake_program.json
vendored
Normal file
@ -0,0 +1,707 @@
|
||||
{
|
||||
"setup": {
|
||||
"mnemonic": "all all all all all all all all all all all all",
|
||||
"passphrase": ""
|
||||
},
|
||||
"tests": [
|
||||
{
|
||||
"description": "Initialize Stake Account",
|
||||
"parameters": {
|
||||
"address": "m/44'/501'/0'/0'",
|
||||
"construct": {
|
||||
"version": null,
|
||||
"header": {
|
||||
"signers": 1,
|
||||
"readonly_signers": 0,
|
||||
"readonly_non_signers": 2
|
||||
},
|
||||
"accounts": [
|
||||
"14CCvQzQzHCVgZM3j9soPnXuJXh1RmCfwLVUcdfbZVBS",
|
||||
"ATFXMD5cYiw9yHkvexgx3nf9LNSouEViB5BZBsgwunAv",
|
||||
"Stake11111111111111111111111111111111111111",
|
||||
"SysvarRent111111111111111111111111111111111"
|
||||
],
|
||||
"blockhash": "2p4rYZAaFfV5Uk5ugdG5KPNty9Uda9B3b4gWB8qnNqak",
|
||||
"instructions": [
|
||||
{
|
||||
"program_index": 2,
|
||||
"accounts": {
|
||||
"uninitialized_stake_account": 1,
|
||||
"rent_sysvar": 3
|
||||
},
|
||||
"data": {
|
||||
"instruction_id": 0,
|
||||
"staker": "14CCvQzQzHCVgZM3j9soPnXuJXh1RmCfwLVUcdfbZVBS",
|
||||
"withdrawer": "14CCvQzQzHCVgZM3j9soPnXuJXh1RmCfwLVUcdfbZVBS",
|
||||
"unix_timestamp": 20,
|
||||
"epoch": 330,
|
||||
"custodian": "14CCvQzQzHCVgZM3j9soPnXuJXh1RmCfwLVUcdfbZVBS"
|
||||
}
|
||||
}
|
||||
],
|
||||
"luts": []
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"expected_signature": "196037eae9f57396938a8c673d255a8f34f1d79200fb439a1bcc551484b0a79716e8db42af041f23207f9e9e7603e567ba8fb9b6ffa4f20dad64e1277453530d"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "Authorize",
|
||||
"parameters": {
|
||||
"address": "m/44'/501'/0'/0'",
|
||||
"construct": {
|
||||
"version": null,
|
||||
"header": {
|
||||
"signers": 1,
|
||||
"readonly_signers": 0,
|
||||
"readonly_non_signers": 1
|
||||
},
|
||||
"accounts": [
|
||||
"14CCvQzQzHCVgZM3j9soPnXuJXh1RmCfwLVUcdfbZVBS",
|
||||
"ATFXMD5cYiw9yHkvexgx3nf9LNSouEViB5BZBsgwunAv",
|
||||
"SysvarC1ock11111111111111111111111111111111",
|
||||
"Stake11111111111111111111111111111111111111"
|
||||
],
|
||||
"blockhash": "2p4rYZAaFfV5Uk5ugdG5KPNty9Uda9B3b4gWB8qnNqak",
|
||||
"instructions": [
|
||||
{
|
||||
"program_index": 3,
|
||||
"accounts": {
|
||||
"stake_account": 1,
|
||||
"clock_sysvar": 2,
|
||||
"stake_or_withdraw_authority": 0,
|
||||
"lockup_authority": null
|
||||
},
|
||||
"data": {
|
||||
"instruction_id": 1,
|
||||
"pubkey": "ETxHeBBcuw9Yu4dGuP3oXrD12V5RECvmi8ogQ9PkjyVF",
|
||||
"stake_authorize": 0
|
||||
}
|
||||
}
|
||||
],
|
||||
"luts": []
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"expected_signature": "e1c3a670771b50cb1a503ec46fd5674191753eaeb76c6c38a84417123887374e5873c0d27a0e3bf26b745a591ca540dba79113856441e7f606683aecba5cfa00"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "Delegate",
|
||||
"parameters": {
|
||||
"address": "m/44'/501'/0'/0'",
|
||||
"construct": {
|
||||
"version": null,
|
||||
"header": {
|
||||
"signers": 1,
|
||||
"readonly_signers": 0,
|
||||
"readonly_non_signers": 5
|
||||
},
|
||||
"accounts": [
|
||||
"14CCvQzQzHCVgZM3j9soPnXuJXh1RmCfwLVUcdfbZVBS",
|
||||
"ETxHeBBcuw9Yu4dGuP3oXrD12V5RECvmi8ogQ9PkjyVF",
|
||||
"Stake11111111111111111111111111111111111111",
|
||||
"StakeConfig11111111111111111111111111111111",
|
||||
"SysvarC1ock11111111111111111111111111111111",
|
||||
"SysvarStakeHistory1111111111111111111111111"
|
||||
],
|
||||
"blockhash": "2p4rYZAaFfV5Uk5ugdG5KPNty9Uda9B3b4gWB8qnNqak",
|
||||
"instructions": [
|
||||
{
|
||||
"program_index": 2,
|
||||
"accounts": {
|
||||
"initialized_stake_account": 0,
|
||||
"vote_account": 1,
|
||||
"clock_sysvar": 4,
|
||||
"stake_history_sysvar": 5,
|
||||
"config_account": 3,
|
||||
"stake_authority": 0
|
||||
},
|
||||
"data": {
|
||||
"instruction_id": 2
|
||||
}
|
||||
}
|
||||
],
|
||||
"luts": []
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"expected_signature": "05d5bbece41d3ff7b330e17112a1249f2dee18ce07df8350ca904e64f9f2bab8b3590b91390f9cb773b9b53262663261d7ea734ef688c1c5fcfc6712310b7000"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "Split",
|
||||
"parameters": {
|
||||
"address": "m/44'/501'/0'/0'",
|
||||
"construct": {
|
||||
"version": null,
|
||||
"header": {
|
||||
"signers": 2,
|
||||
"readonly_signers": 0,
|
||||
"readonly_non_signers": 2
|
||||
},
|
||||
"accounts": [
|
||||
"14CCvQzQzHCVgZM3j9soPnXuJXh1RmCfwLVUcdfbZVBS",
|
||||
"ETxHeBBcuw9Yu4dGuP3oXrD12V5RECvmi8ogQ9PkjyVF",
|
||||
"11111111111111111111111111111111",
|
||||
"Stake11111111111111111111111111111111111111"
|
||||
],
|
||||
"blockhash": "2p4rYZAaFfV5Uk5ugdG5KPNty9Uda9B3b4gWB8qnNqak",
|
||||
"instructions": [
|
||||
{
|
||||
"program_index": 2,
|
||||
"accounts": {
|
||||
"funding_account": 0,
|
||||
"new_account": 1
|
||||
},
|
||||
"data": {
|
||||
"instruction_id": 0,
|
||||
"lamports": 0,
|
||||
"space": 200,
|
||||
"owner": "Stake11111111111111111111111111111111111111"
|
||||
}
|
||||
},
|
||||
{
|
||||
"program_index": 3,
|
||||
"accounts": {
|
||||
"stake_account": 0,
|
||||
"uninitialized_stake_account": 1,
|
||||
"stake_authority": 0
|
||||
},
|
||||
"data": {
|
||||
"instruction_id": 3,
|
||||
"lamports": 1000000
|
||||
}
|
||||
}
|
||||
],
|
||||
"luts": []
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"expected_signature": "999ba80a6183a2c99b43880190572e457a0398eb8acfa806d2c284cf2ebf9a0878239e8d1e62ac061a568db866424ccc0175c075536e325cb1f14968c0fbdc05"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "Withdraw",
|
||||
"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",
|
||||
"SysvarStakeHistory1111111111111111111111111"
|
||||
],
|
||||
"blockhash": "2p4rYZAaFfV5Uk5ugdG5KPNty9Uda9B3b4gWB8qnNqak",
|
||||
"instructions": [
|
||||
{
|
||||
"program_index": 2,
|
||||
"accounts": {
|
||||
"stake_account": 1,
|
||||
"recipient_account": 0,
|
||||
"clock_sysvar": 3,
|
||||
"stake_history_sysvar": 4,
|
||||
"withdrawal_authority": 0,
|
||||
"lockup_authority": 0
|
||||
},
|
||||
"data": {
|
||||
"instruction_id": 4,
|
||||
"lamports": 1000000
|
||||
}
|
||||
}
|
||||
],
|
||||
"luts": []
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"expected_signature": "2da1355daca8802daddb33bd79767ca7c4c4f3e79b4949cde10559a1836acbbd409f2227040d6b502d84292e91910ad0f12dc8a151b42e39b130a1dcd165860a"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "Deactivate",
|
||||
"parameters": {
|
||||
"address": "m/44'/501'/0'/0'",
|
||||
"construct": {
|
||||
"version": null,
|
||||
"header": {
|
||||
"signers": 1,
|
||||
"readonly_signers": 0,
|
||||
"readonly_non_signers": 2
|
||||
},
|
||||
"accounts": [
|
||||
"14CCvQzQzHCVgZM3j9soPnXuJXh1RmCfwLVUcdfbZVBS",
|
||||
"ATFXMD5cYiw9yHkvexgx3nf9LNSouEViB5BZBsgwunAv",
|
||||
"Stake11111111111111111111111111111111111111",
|
||||
"SysvarC1ock11111111111111111111111111111111"
|
||||
],
|
||||
"blockhash": "2p4rYZAaFfV5Uk5ugdG5KPNty9Uda9B3b4gWB8qnNqak",
|
||||
"instructions": [
|
||||
{
|
||||
"program_index": 2,
|
||||
"accounts": {
|
||||
"delegated_stake_account": 1,
|
||||
"clock_sysvar": 3,
|
||||
"stake_authority": 0
|
||||
},
|
||||
"data": {
|
||||
"instruction_id": 5
|
||||
}
|
||||
}
|
||||
],
|
||||
"luts": []
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"expected_signature": "6320fa5c4ced21216459f85cc180d9bb69b9f335ba6e9c71ea0482184b41020c0145f72cb0306e7f33967be8828cf4bcbfd960381e87ff0871bf1e4688bef505"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "Set Lockup - with epoch only",
|
||||
"parameters": {
|
||||
"address": "m/44'/501'/0'/0'",
|
||||
"construct": {
|
||||
"version": null,
|
||||
"header": {
|
||||
"signers": 1,
|
||||
"readonly_signers": 0,
|
||||
"readonly_non_signers": 1
|
||||
},
|
||||
"accounts": [
|
||||
"14CCvQzQzHCVgZM3j9soPnXuJXh1RmCfwLVUcdfbZVBS",
|
||||
"ATFXMD5cYiw9yHkvexgx3nf9LNSouEViB5BZBsgwunAv",
|
||||
"Stake11111111111111111111111111111111111111"
|
||||
],
|
||||
"blockhash": "6Tq9obRZkiwPGQv7bX8FbMNHFBVKCXsWd5MJqSWw884Z",
|
||||
"instructions": [
|
||||
{
|
||||
"program_index": 2,
|
||||
"accounts": {
|
||||
"initialized_stake_account": 1,
|
||||
"lockup_or_withdraw_authority": 0
|
||||
},
|
||||
"data": {
|
||||
"instruction_id": 6,
|
||||
"unix_timestamp": {
|
||||
"is_included": 0
|
||||
},
|
||||
"epoch": {
|
||||
"is_included": 1,
|
||||
"value": 20
|
||||
},
|
||||
"custodian": {
|
||||
"is_included": 0
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"luts": []
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"expected_signature": "6b21c7f625ff58ab64d9f3c54169565a1960d1612b2d5d9f51db1e17a23f3ec76955aac25fce636302c0b8db61c932e80d4031fd019a89aa6ad10c59d8a0f00b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "Set Lockup - with all params set",
|
||||
"parameters": {
|
||||
"address": "m/44'/501'/0'/0'",
|
||||
"construct": {
|
||||
"version": null,
|
||||
"header": {
|
||||
"signers": 1,
|
||||
"readonly_signers": 0,
|
||||
"readonly_non_signers": 1
|
||||
},
|
||||
"accounts": [
|
||||
"14CCvQzQzHCVgZM3j9soPnXuJXh1RmCfwLVUcdfbZVBS",
|
||||
"ATFXMD5cYiw9yHkvexgx3nf9LNSouEViB5BZBsgwunAv",
|
||||
"Stake11111111111111111111111111111111111111"
|
||||
],
|
||||
"blockhash": "ENP1bFTWGR7GiPcPg7TB9ekX82xaham8aFkB7vQeoNaZ",
|
||||
"instructions": [
|
||||
{
|
||||
"program_index": 2,
|
||||
"accounts": {
|
||||
"initialized_stake_account": 1,
|
||||
"lockup_or_withdraw_authority": 0
|
||||
},
|
||||
"data": {
|
||||
"instruction_id": 6,
|
||||
"unix_timestamp": {
|
||||
"is_included": 1,
|
||||
"value": 482196050
|
||||
},
|
||||
"epoch": {
|
||||
"is_included": 1,
|
||||
"value": 20
|
||||
},
|
||||
"custodian": {
|
||||
"is_included": 1,
|
||||
"value": "14CCvQzQzHCVgZM3j9soPnXuJXh1RmCfwLVUcdfbZVBS"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"luts": []
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"expected_signature": "b92c3f408965ceee6512ede6dec12b0436eb62e9631b5f9a4eef33384a745f0d57d583cb808ae41f2cfb24ffa768738724269a3f528be491e64162b016cbce03"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "Merge",
|
||||
"parameters": {
|
||||
"address": "m/44'/501'/0'/0'",
|
||||
"construct": {
|
||||
"version": null,
|
||||
"header": {
|
||||
"signers": 1,
|
||||
"readonly_signers": 0,
|
||||
"readonly_non_signers": 3
|
||||
},
|
||||
"accounts": [
|
||||
"14CCvQzQzHCVgZM3j9soPnXuJXh1RmCfwLVUcdfbZVBS",
|
||||
"AeDJ1BqA7ruBbd6mEcS1QNxFbT8FQbiBVuN9NqK94Taq",
|
||||
"ATFXMD5cYiw9yHkvexgx3nf9LNSouEViB5BZBsgwunAv",
|
||||
"Stake11111111111111111111111111111111111111",
|
||||
"SysvarC1ock11111111111111111111111111111111",
|
||||
"SysvarStakeHistory1111111111111111111111111"
|
||||
],
|
||||
"blockhash": "2p4rYZAaFfV5Uk5ugdG5KPNty9Uda9B3b4gWB8qnNqak",
|
||||
"instructions": [
|
||||
{
|
||||
"program_index": 3,
|
||||
"accounts": {
|
||||
"destination_stake_account": 2,
|
||||
"source_stake_account": 1,
|
||||
"clock_sysvar": 4,
|
||||
"stake_history_sysvar": 5,
|
||||
"stake_authority": 0
|
||||
},
|
||||
"data": {
|
||||
"instruction_id": 7
|
||||
}
|
||||
}
|
||||
],
|
||||
"luts": []
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"expected_signature": "e2035c812b38b6524698c1e77fff5470471dc5c0a9a163e6a0d236b41f3ccf5ab0c03b2e5694f3776f5cf8c1838e47b429f4e52389e118665e6d609db4e0d30c"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "Authorize With Seed",
|
||||
"parameters": {
|
||||
"address": "m/44'/501'/0'/0'",
|
||||
"construct": {
|
||||
"version": null,
|
||||
"header": {
|
||||
"signers": 1,
|
||||
"readonly_signers": 0,
|
||||
"readonly_non_signers": 2
|
||||
},
|
||||
"accounts": [
|
||||
"14CCvQzQzHCVgZM3j9soPnXuJXh1RmCfwLVUcdfbZVBS",
|
||||
"ATFXMD5cYiw9yHkvexgx3nf9LNSouEViB5BZBsgwunAv",
|
||||
"Stake11111111111111111111111111111111111111",
|
||||
"SysvarC1ock11111111111111111111111111111111"
|
||||
],
|
||||
"blockhash": "2p4rYZAaFfV5Uk5ugdG5KPNty9Uda9B3b4gWB8qnNqak",
|
||||
"instructions": [
|
||||
{
|
||||
"program_index": 2,
|
||||
"accounts": {
|
||||
"stake_account": 1,
|
||||
"stake_or_withdraw_authority": 0,
|
||||
"clock_sysvar": 3,
|
||||
"lockup_authority": null
|
||||
},
|
||||
"data": {
|
||||
"instruction_id": 8,
|
||||
"new_authorized_pubkey": "ETxHeBBcuw9Yu4dGuP3oXrD12V5RECvmi8ogQ9PkjyVF",
|
||||
"stake_authorize": 1,
|
||||
"authority_seed": {
|
||||
"length": 7,
|
||||
"chars": "stake:0"
|
||||
},
|
||||
"authority_owner": "11111111111111111111111111111111"
|
||||
}
|
||||
}
|
||||
],
|
||||
"luts": []
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"expected_signature": "2cfb0d5ad4e2674d20ee7c5dc64c5d7068ae2a31019662b940239394769843f7df77d596ff8f9dfac78ab0f264bacc9c38b806d210eddd5870d68d923c558c0b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "Initialize Checked",
|
||||
"parameters": {
|
||||
"address": "m/44'/501'/0'/0'",
|
||||
"construct": {
|
||||
"version": null,
|
||||
"header": {
|
||||
"signers": 1,
|
||||
"readonly_signers": 0,
|
||||
"readonly_non_signers": 3
|
||||
},
|
||||
"accounts": [
|
||||
"14CCvQzQzHCVgZM3j9soPnXuJXh1RmCfwLVUcdfbZVBS",
|
||||
"GpX913B4PeKzzukWw4zyqz76smpExLysTTDR4rYUiijM",
|
||||
"11111111111111111111111111111111",
|
||||
"Stake11111111111111111111111111111111111111",
|
||||
"SysvarRent111111111111111111111111111111111"
|
||||
],
|
||||
"blockhash": "2NuqEwZcMwFQyQaKGaLiFSFBpJaW1er26cni1sBDAeKw",
|
||||
"instructions": [
|
||||
{
|
||||
"program_index": 2,
|
||||
"accounts": {
|
||||
"funding_account": 0,
|
||||
"created_account": 1,
|
||||
"base_account": 0
|
||||
},
|
||||
"data": {
|
||||
"instruction_id": 3,
|
||||
"base": "14CCvQzQzHCVgZM3j9soPnXuJXh1RmCfwLVUcdfbZVBS",
|
||||
"seed": {
|
||||
"length": 7,
|
||||
"chars": "stake:1"
|
||||
},
|
||||
"lamports": 3000000,
|
||||
"space": 200,
|
||||
"owner": "Stake11111111111111111111111111111111111111"
|
||||
}
|
||||
},
|
||||
{
|
||||
"program_index": 3,
|
||||
"accounts": {
|
||||
"uninitialized_stake_account": 1,
|
||||
"rent_sysvar": 4,
|
||||
"stake_authority": 0,
|
||||
"withdrawal_authority": 0
|
||||
},
|
||||
"data": {
|
||||
"instruction_id": 9
|
||||
}
|
||||
}
|
||||
],
|
||||
"luts": []
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"expected_signature": "f34b9eb5f586a320b919ad6dcc3f51553d3d08f5a1260279973d9fa4250bc61658a38a51322c0586b0e73b7e66325a46b8f4b60828d35e7da1013e84fa12540e"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "Authorize Checked",
|
||||
"parameters": {
|
||||
"address": "m/44'/501'/0'/0'",
|
||||
"construct": {
|
||||
"version": null,
|
||||
"header": {
|
||||
"signers": 1,
|
||||
"readonly_signers": 0,
|
||||
"readonly_non_signers": 2
|
||||
},
|
||||
"accounts": [
|
||||
"14CCvQzQzHCVgZM3j9soPnXuJXh1RmCfwLVUcdfbZVBS",
|
||||
"ATFXMD5cYiw9yHkvexgx3nf9LNSouEViB5BZBsgwunAv",
|
||||
"Stake11111111111111111111111111111111111111",
|
||||
"SysvarC1ock11111111111111111111111111111111"
|
||||
],
|
||||
"blockhash": "5AMCR1wLcR4nVUn3w6h4cK6UYjkdKc6SXNGP9Hj8vNUc",
|
||||
"instructions": [
|
||||
{
|
||||
"program_index": 2,
|
||||
"accounts": {
|
||||
"stake_account": 1,
|
||||
"clock_sysvar": 3,
|
||||
"stake_or_withdraw_authority": 0,
|
||||
"new_stake_or_withdraw_authority": 0
|
||||
},
|
||||
"data": {
|
||||
"instruction_id": 10,
|
||||
"stake_authorize": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"program_index": 2,
|
||||
"accounts": {
|
||||
"stake_account": 1,
|
||||
"clock_sysvar": 3,
|
||||
"stake_or_withdraw_authority": 0,
|
||||
"new_stake_or_withdraw_authority": 0
|
||||
},
|
||||
"data": {
|
||||
"instruction_id": 10,
|
||||
"stake_authorize": 1
|
||||
}
|
||||
}
|
||||
],
|
||||
"luts": []
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"expected_signature": "fc71a9bb988196ed145373531e9b2bcd590177a398a102779290d665c8cbd5dbc5e8c9144ff1165d98f241ebc0747c0715b1e43056fabf85f15fc594d5460c0b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "Authorize Checked with Seed",
|
||||
"parameters": {
|
||||
"address": "m/44'/501'/0'/0'",
|
||||
"construct": {
|
||||
"version": null,
|
||||
"header": {
|
||||
"signers": 1,
|
||||
"readonly_signers": 0,
|
||||
"readonly_non_signers": 2
|
||||
},
|
||||
"accounts": [
|
||||
"14CCvQzQzHCVgZM3j9soPnXuJXh1RmCfwLVUcdfbZVBS",
|
||||
"ATFXMD5cYiw9yHkvexgx3nf9LNSouEViB5BZBsgwunAv",
|
||||
"Stake11111111111111111111111111111111111111",
|
||||
"SysvarC1ock11111111111111111111111111111111"
|
||||
],
|
||||
"blockhash": "5AMCR1wLcR4nVUn3w6h4cK6UYjkdKc6SXNGP9Hj8vNUc",
|
||||
"instructions": [
|
||||
{
|
||||
"program_index": 2,
|
||||
"accounts": {
|
||||
"stake_account": 1,
|
||||
"stake_or_withdraw_authority": 0,
|
||||
"clock_sysvar": 3,
|
||||
"new_stake_or_withdraw_authority": 0
|
||||
},
|
||||
"data": {
|
||||
"instruction_id": 11,
|
||||
"stake_authorize": 0,
|
||||
"authority_seed": {
|
||||
"length": 11,
|
||||
"chars": "authority:1"
|
||||
},
|
||||
"authority_owner": "14CCvQzQzHCVgZM3j9soPnXuJXh1RmCfwLVUcdfbZVBS"
|
||||
}
|
||||
}
|
||||
],
|
||||
"luts": []
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"expected_signature": "01e7a9a28036b36b8dbe8a68823c03330558dd8c0627fd5f25d2fa1556b43e47e23885cb71790ad444ab8e603dedbe759faa7312d5ff8921025307c42d8a3100"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "Set Lockup Checked",
|
||||
"parameters": {
|
||||
"address": "m/44'/501'/0'/0'",
|
||||
"construct": {
|
||||
"version": null,
|
||||
"header": {
|
||||
"signers": 1,
|
||||
"readonly_signers": 0,
|
||||
"readonly_non_signers": 1
|
||||
},
|
||||
"accounts": [
|
||||
"14CCvQzQzHCVgZM3j9soPnXuJXh1RmCfwLVUcdfbZVBS",
|
||||
"ATFXMD5cYiw9yHkvexgx3nf9LNSouEViB5BZBsgwunAv",
|
||||
"Stake11111111111111111111111111111111111111"
|
||||
],
|
||||
"blockhash": "2UZYH9e662w7SoLiwnGyGZY1Mn5YjEkWEozZGm5ViR6Q",
|
||||
"instructions": [
|
||||
{
|
||||
"program_index": 2,
|
||||
"accounts": {
|
||||
"stake_account": 1,
|
||||
"lockup_or_withdraw_authority": 0,
|
||||
"new_lockup_authority": 0
|
||||
},
|
||||
"data": {
|
||||
"instruction_id": 12,
|
||||
"unix_timestamp": {
|
||||
"is_included": 1,
|
||||
"value": 482196050
|
||||
},
|
||||
"epoch": {
|
||||
"is_included": 1,
|
||||
"value": 20
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"luts": []
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"expected_signature": "42b06682b7cc946143dece29c7014e408d37768d8dcd28c5293c0b13c35000cbf771886dfd4a2f1cad487621b46167d4b32ecc51c605bef0f450da6761952e05"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "Create Stake Account",
|
||||
"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"
|
||||
],
|
||||
"blockhash": "2p4rYZAaFfV5Uk5ugdG5KPNty9Uda9B3b4gWB8qnNqak",
|
||||
"instructions": [
|
||||
{
|
||||
"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": "e99a383ce8f9fcd0ebbb03fce2c47db188734bd36613d226110dfa9d95ba28ad55c4e3ff36d1c4936538350d96d7aeff024c3e6afbb5c45dfe921a18e981ea0c"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
586
common/tests/fixtures/solana/sign_tx.system_program.json
vendored
Normal file
586
common/tests/fixtures/solana/sign_tx.system_program.json
vendored
Normal file
@ -0,0 +1,586 @@
|
||||
{
|
||||
"setup": {
|
||||
"mnemonic": "all all all all all all all all all all all all",
|
||||
"passphrase": ""
|
||||
},
|
||||
"tests": [
|
||||
{
|
||||
"description": "Create Account",
|
||||
"parameters": {
|
||||
"address": "m/44'/501'/0'/0'",
|
||||
"construct": {
|
||||
"version": null,
|
||||
"header": {
|
||||
"signers": 2,
|
||||
"readonly_signers": 0,
|
||||
"readonly_non_signers": 1
|
||||
},
|
||||
"accounts": [
|
||||
"14CCvQzQzHCVgZM3j9soPnXuJXh1RmCfwLVUcdfbZVBS",
|
||||
"AeDJ1BqA7ruBbd6mEcS1QNxFbT8FQbiBVuN9NqK94Taq",
|
||||
"11111111111111111111111111111111"
|
||||
],
|
||||
"blockhash": "2p4rYZAaFfV5Uk5ugdG5KPNty9Uda9B3b4gWB8qnNqak",
|
||||
"instructions": [
|
||||
{
|
||||
"program_index": 2,
|
||||
"accounts": {
|
||||
"funding_account": 0,
|
||||
"new_account": 1
|
||||
},
|
||||
"data": {
|
||||
"instruction_id": 0,
|
||||
"lamports": 20000000,
|
||||
"space": 1000,
|
||||
"owner": "11111111111111111111111111111111"
|
||||
}
|
||||
}
|
||||
],
|
||||
"luts": []
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"expected_signature": "aa5d16f3f67860182ac8170c0a10941c1bf2ae788ea0e9a06f09d8a8be0543bc7d9d1d485f7caed99653a5bb17d9ad70768c2fca14f80c7ab79aad19f6c81a00"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "Assign",
|
||||
"parameters": {
|
||||
"address": "m/44'/501'/0'/0'",
|
||||
"construct": {
|
||||
"version": null,
|
||||
"header": {
|
||||
"signers": 1,
|
||||
"readonly_signers": 0,
|
||||
"readonly_non_signers": 1
|
||||
},
|
||||
"accounts": [
|
||||
"14CCvQzQzHCVgZM3j9soPnXuJXh1RmCfwLVUcdfbZVBS",
|
||||
"11111111111111111111111111111111"
|
||||
],
|
||||
"blockhash": "2p4rYZAaFfV5Uk5ugdG5KPNty9Uda9B3b4gWB8qnNqak",
|
||||
"instructions": [
|
||||
{
|
||||
"program_index": 1,
|
||||
"accounts": {
|
||||
"assigned_account": 0
|
||||
},
|
||||
"data": {
|
||||
"instruction_id": 1,
|
||||
"owner": "11111111111111111111111111111111"
|
||||
}
|
||||
}
|
||||
],
|
||||
"luts": []
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"expected_signature": "d533f38bcc0b302d2353ee1883217f7cdb283b749ca1b7251b365a4e8c8742b49e8847b759ab845abe2d0b37f4cc916a91a566e40559f5679794cb458be1750e"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "Transfer",
|
||||
"parameters": {
|
||||
"address": "m/44'/501'/0'/0'",
|
||||
"construct": {
|
||||
"version": null,
|
||||
"header": {
|
||||
"signers": 1,
|
||||
"readonly_signers": 0,
|
||||
"readonly_non_signers": 1
|
||||
},
|
||||
"accounts": [
|
||||
"14CCvQzQzHCVgZM3j9soPnXuJXh1RmCfwLVUcdfbZVBS",
|
||||
"ETxHeBBcuw9Yu4dGuP3oXrD12V5RECvmi8ogQ9PkjyVF",
|
||||
"11111111111111111111111111111111"
|
||||
],
|
||||
"blockhash": "2p4rYZAaFfV5Uk5ugdG5KPNty9Uda9B3b4gWB8qnNqak",
|
||||
"instructions": [
|
||||
{
|
||||
"program_index": 2,
|
||||
"accounts": {
|
||||
"funding_account": 0,
|
||||
"recipient_account": 1
|
||||
},
|
||||
"data": {
|
||||
"instruction_id": 2,
|
||||
"lamports": 200000
|
||||
}
|
||||
}
|
||||
],
|
||||
"luts": []
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"expected_signature": "7d9b551808a878b6dd6255c7b775b7afcd2edb011a1918611d9b72c3fd2f5fe89d8bf30ea41fa6dc91f33e20e9eb07527aadf1e082eb746880167d102a76270c"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "Create Account With Seed",
|
||||
"parameters": {
|
||||
"address": "m/44'/501'/0'/0'",
|
||||
"construct": {
|
||||
"version": null,
|
||||
"header": {
|
||||
"signers": 1,
|
||||
"readonly_signers": 0,
|
||||
"readonly_non_signers": 1
|
||||
},
|
||||
"accounts": [
|
||||
"14CCvQzQzHCVgZM3j9soPnXuJXh1RmCfwLVUcdfbZVBS",
|
||||
"ByFfsNTE1vJcgfqFmdJz8gXVHbDuNUnKXunSpm1hjKxU",
|
||||
"11111111111111111111111111111111"
|
||||
],
|
||||
"blockhash": "2p4rYZAaFfV5Uk5ugdG5KPNty9Uda9B3b4gWB8qnNqak",
|
||||
"instructions": [
|
||||
{
|
||||
"program_index": 2,
|
||||
"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"
|
||||
}
|
||||
}
|
||||
],
|
||||
"luts": []
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"expected_signature": "7a84a43d6397d8e8ae8fc508c78a02edde84e9a027e74545e9fa338757ffee165adc41c32f56b023fa6e1ce1f0b6e5a2723ddcf84e2bac2bfaccad786d1f310a"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "Advance Nonce Account",
|
||||
"parameters": {
|
||||
"address": "m/44'/501'/0'/0'",
|
||||
"construct": {
|
||||
"version": null,
|
||||
"header": {
|
||||
"signers": 1,
|
||||
"readonly_signers": 0,
|
||||
"readonly_non_signers": 2
|
||||
},
|
||||
"accounts": [
|
||||
"14CCvQzQzHCVgZM3j9soPnXuJXh1RmCfwLVUcdfbZVBS",
|
||||
"AeDJ1BqA7ruBbd6mEcS1QNxFbT8FQbiBVuN9NqK94Taq",
|
||||
"11111111111111111111111111111111",
|
||||
"SysvarRecentB1ockHashes11111111111111111111"
|
||||
],
|
||||
"blockhash": "2p4rYZAaFfV5Uk5ugdG5KPNty9Uda9B3b4gWB8qnNqak",
|
||||
"instructions": [
|
||||
{
|
||||
"program_index": 2,
|
||||
"accounts": {
|
||||
"nonce_account": 1,
|
||||
"recent_blockhashes_sysvar": 3,
|
||||
"nonce_authority": 0
|
||||
},
|
||||
"data": {
|
||||
"instruction_id": 4
|
||||
}
|
||||
}
|
||||
],
|
||||
"luts": []
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"expected_signature": "1e87379f8d601f582c23f84daad03450161c37ab4b64822fa845821e2ed5df5e7c922e8e3a87f51f986252016a5ceef0d443542f0c1ca8479cf4d62aa80cfd09"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "Withdraw Nonce Account",
|
||||
"parameters": {
|
||||
"address": "m/44'/501'/0'/0'",
|
||||
"construct": {
|
||||
"version": null,
|
||||
"header": {
|
||||
"signers": 1,
|
||||
"readonly_signers": 0,
|
||||
"readonly_non_signers": 3
|
||||
},
|
||||
"accounts": [
|
||||
"14CCvQzQzHCVgZM3j9soPnXuJXh1RmCfwLVUcdfbZVBS",
|
||||
"AeDJ1BqA7ruBbd6mEcS1QNxFbT8FQbiBVuN9NqK94Taq",
|
||||
"11111111111111111111111111111111",
|
||||
"SysvarRecentB1ockHashes11111111111111111111",
|
||||
"SysvarRent111111111111111111111111111111111"
|
||||
],
|
||||
"blockhash": "2p4rYZAaFfV5Uk5ugdG5KPNty9Uda9B3b4gWB8qnNqak",
|
||||
"instructions": [
|
||||
{
|
||||
"program_index": 2,
|
||||
"accounts": {
|
||||
"nonce_account": 1,
|
||||
"recipient_account": 0,
|
||||
"recent_blockhashes_sysvar": 3,
|
||||
"rent_sysvar": 4,
|
||||
"nonce_authority": 0
|
||||
},
|
||||
"data": {
|
||||
"instruction_id": 5,
|
||||
"lamports": 200000
|
||||
}
|
||||
}
|
||||
],
|
||||
"luts": []
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"expected_signature": "c43d76dc84a56f5014c7f853a6a7ed41c094cec70c26b602703ec50f5bfe525b96ddcbf8f69eae16d6290f5aca5096e3c5a515d1742d975000883a1c3d04390e"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "Initialize Nonce Account",
|
||||
"parameters": {
|
||||
"address": "m/44'/501'/0'/0'",
|
||||
"construct": {
|
||||
"version": null,
|
||||
"header": {
|
||||
"signers": 1,
|
||||
"readonly_signers": 0,
|
||||
"readonly_non_signers": 3
|
||||
},
|
||||
"accounts": [
|
||||
"14CCvQzQzHCVgZM3j9soPnXuJXh1RmCfwLVUcdfbZVBS",
|
||||
"AeDJ1BqA7ruBbd6mEcS1QNxFbT8FQbiBVuN9NqK94Taq",
|
||||
"11111111111111111111111111111111",
|
||||
"SysvarRecentB1ockHashes11111111111111111111",
|
||||
"SysvarRent111111111111111111111111111111111"
|
||||
],
|
||||
"blockhash": "2p4rYZAaFfV5Uk5ugdG5KPNty9Uda9B3b4gWB8qnNqak",
|
||||
"instructions": [
|
||||
{
|
||||
"program_index": 2,
|
||||
"accounts": {
|
||||
"nonce_account": 1,
|
||||
"recent_blockhashes_sysvar": 3,
|
||||
"rent_sysvar": 4
|
||||
},
|
||||
"data": {
|
||||
"instruction_id": 6,
|
||||
"nonce_authority": "14CCvQzQzHCVgZM3j9soPnXuJXh1RmCfwLVUcdfbZVBS"
|
||||
}
|
||||
}
|
||||
],
|
||||
"luts": []
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"expected_signature": "7dc7f032ee3ca32a52b11c8f66e414058b6d14a5b21799a4e44201a4cc1394ed8e9237b1e9bb81f56ccf4bdef3034d9fccb257e58945fce3f63f2539039f1306"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "Authorize Nonce Account",
|
||||
"parameters": {
|
||||
"address": "m/44'/501'/0'/0'",
|
||||
"construct": {
|
||||
"version": null,
|
||||
"header": {
|
||||
"signers": 1,
|
||||
"readonly_signers": 0,
|
||||
"readonly_non_signers": 1
|
||||
},
|
||||
"accounts": [
|
||||
"14CCvQzQzHCVgZM3j9soPnXuJXh1RmCfwLVUcdfbZVBS",
|
||||
"AeDJ1BqA7ruBbd6mEcS1QNxFbT8FQbiBVuN9NqK94Taq",
|
||||
"11111111111111111111111111111111"
|
||||
],
|
||||
"blockhash": "2p4rYZAaFfV5Uk5ugdG5KPNty9Uda9B3b4gWB8qnNqak",
|
||||
"instructions": [
|
||||
{
|
||||
"program_index": 2,
|
||||
"accounts": {
|
||||
"nonce_account": 1,
|
||||
"nonce_authority": 0
|
||||
},
|
||||
"data": {
|
||||
"instruction_id": 7,
|
||||
"nonce_authority": "ETxHeBBcuw9Yu4dGuP3oXrD12V5RECvmi8ogQ9PkjyVF"
|
||||
}
|
||||
}
|
||||
],
|
||||
"luts": []
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"expected_signature": "cba3c4a5f24c775fc4e39e4e01395caeec0749a6ed0ab1e2beae3db07ba69f22d71cd4c1f11f743d0d394e8d297fc57788a916d1791eb9acae0533e8b125ba03"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "Allocate",
|
||||
"parameters": {
|
||||
"address": "m/44'/501'/0'/0'",
|
||||
"construct": {
|
||||
"version": null,
|
||||
"header": {
|
||||
"signers": 1,
|
||||
"readonly_signers": 0,
|
||||
"readonly_non_signers": 1
|
||||
},
|
||||
"accounts": [
|
||||
"14CCvQzQzHCVgZM3j9soPnXuJXh1RmCfwLVUcdfbZVBS",
|
||||
"11111111111111111111111111111111"
|
||||
],
|
||||
"blockhash": "2p4rYZAaFfV5Uk5ugdG5KPNty9Uda9B3b4gWB8qnNqak",
|
||||
"instructions": [
|
||||
{
|
||||
"program_index": 1,
|
||||
"accounts": {
|
||||
"new_account": 0
|
||||
},
|
||||
"data": {
|
||||
"instruction_id": 8,
|
||||
"space": 200
|
||||
}
|
||||
}
|
||||
],
|
||||
"luts": []
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"expected_signature": "c910c3be30a17014e31e301c24516d44c8d8fc346de9e5e90505ed97c7c62fd1012353d9bb2a24bf254aa7b6627606a28f0e0402547517e506c873bda218a305"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "Allocate With Seed",
|
||||
"parameters": {
|
||||
"address": "m/44'/501'/0'/0'",
|
||||
"construct": {
|
||||
"version": null,
|
||||
"header": {
|
||||
"signers": 1,
|
||||
"readonly_signers": 0,
|
||||
"readonly_non_signers": 1
|
||||
},
|
||||
"accounts": [
|
||||
"14CCvQzQzHCVgZM3j9soPnXuJXh1RmCfwLVUcdfbZVBS",
|
||||
"ByFfsNTE1vJcgfqFmdJz8gXVHbDuNUnKXunSpm1hjKxU",
|
||||
"11111111111111111111111111111111"
|
||||
],
|
||||
"blockhash": "2p4rYZAaFfV5Uk5ugdG5KPNty9Uda9B3b4gWB8qnNqak",
|
||||
"instructions": [
|
||||
{
|
||||
"program_index": 2,
|
||||
"accounts": {
|
||||
"allocated_account": 1,
|
||||
"base_account": 0
|
||||
},
|
||||
"data": {
|
||||
"instruction_id": 9,
|
||||
"base": "14CCvQzQzHCVgZM3j9soPnXuJXh1RmCfwLVUcdfbZVBS",
|
||||
"seed": {
|
||||
"length": 6,
|
||||
"chars": "seed:0"
|
||||
},
|
||||
"space": 22200,
|
||||
"owner": "11111111111111111111111111111111"
|
||||
}
|
||||
}
|
||||
],
|
||||
"luts": []
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"expected_signature": "6beb42dfccb317bae7fa4e8ad09e218d27853686207d25b8462f8760c918a21e44c387a55b6750727305eaa995461eb42a4a17aec8d6d7257b45642ed457da07"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "Assign With Seed",
|
||||
"parameters": {
|
||||
"address": "m/44'/501'/0'/0'",
|
||||
"construct": {
|
||||
"version": null,
|
||||
"header": {
|
||||
"signers": 1,
|
||||
"readonly_signers": 0,
|
||||
"readonly_non_signers": 1
|
||||
},
|
||||
"accounts": [
|
||||
"14CCvQzQzHCVgZM3j9soPnXuJXh1RmCfwLVUcdfbZVBS",
|
||||
"ByFfsNTE1vJcgfqFmdJz8gXVHbDuNUnKXunSpm1hjKxU",
|
||||
"11111111111111111111111111111111"
|
||||
],
|
||||
"blockhash": "2p4rYZAaFfV5Uk5ugdG5KPNty9Uda9B3b4gWB8qnNqak",
|
||||
"instructions": [
|
||||
{
|
||||
"program_index": 2,
|
||||
"accounts": {
|
||||
"assigned_account": 1,
|
||||
"base_account": 0
|
||||
},
|
||||
"data": {
|
||||
"instruction_id": 10,
|
||||
"base": "14CCvQzQzHCVgZM3j9soPnXuJXh1RmCfwLVUcdfbZVBS",
|
||||
"seed": {
|
||||
"length": 6,
|
||||
"chars": "seed:0"
|
||||
},
|
||||
"owner": "11111111111111111111111111111111"
|
||||
}
|
||||
}
|
||||
],
|
||||
"luts": []
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"expected_signature": "3bf731a9508faa94e194c4d0475a266bf19548ac5292a5fc817a62dee2798313a4a8eec118c6648efd7021e684bf3238eda56279af47cbc8567133acfcbfc804"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "Transfer With Seed",
|
||||
"parameters": {
|
||||
"address": "m/44'/501'/0'/0'",
|
||||
"construct": {
|
||||
"version": null,
|
||||
"header": {
|
||||
"signers": 1,
|
||||
"readonly_signers": 0,
|
||||
"readonly_non_signers": 1
|
||||
},
|
||||
"accounts": [
|
||||
"14CCvQzQzHCVgZM3j9soPnXuJXh1RmCfwLVUcdfbZVBS",
|
||||
"ByFfsNTE1vJcgfqFmdJz8gXVHbDuNUnKXunSpm1hjKxU",
|
||||
"11111111111111111111111111111111"
|
||||
],
|
||||
"blockhash": "2p4rYZAaFfV5Uk5ugdG5KPNty9Uda9B3b4gWB8qnNqak",
|
||||
"instructions": [
|
||||
{
|
||||
"program_index": 2,
|
||||
"accounts": {
|
||||
"funding_account": 0,
|
||||
"base_account": 0,
|
||||
"recipient_account": 1
|
||||
},
|
||||
"data": {
|
||||
"instruction_id": 11,
|
||||
"lamports": 200000,
|
||||
"from_seed": {
|
||||
"length": 6,
|
||||
"chars": "seed:0"
|
||||
},
|
||||
"from_owner": "11111111111111111111111111111111"
|
||||
}
|
||||
}
|
||||
],
|
||||
"luts": []
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"expected_signature": "18e6373c7f0374a0901c72957e6931a45bc8572493c591ff0dad975762fb03dafbc1a99e903291bf5c0de665fe961951e43d5fa0c3f48dfdc6e1e2e7c471310b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "Lookup tables",
|
||||
"parameters": {
|
||||
"address": "m/44'/501'/0'/0'",
|
||||
"construct": {
|
||||
"version": 0,
|
||||
"header": {
|
||||
"signers": 1,
|
||||
"readonly_signers": 0,
|
||||
"readonly_non_signers": 1
|
||||
},
|
||||
"accounts": [
|
||||
"14CCvQzQzHCVgZM3j9soPnXuJXh1RmCfwLVUcdfbZVBS",
|
||||
"11111111111111111111111111111111"
|
||||
],
|
||||
"blockhash": "2p4rYZAaFfV5Uk5ugdG5KPNty9Uda9B3b4gWB8qnNqak",
|
||||
"instructions": [
|
||||
{
|
||||
"program_index": 1,
|
||||
"accounts": {
|
||||
"funding_account": 0,
|
||||
"recipient_account": 2
|
||||
},
|
||||
"data": {
|
||||
"instruction_id": 2,
|
||||
"lamports": 20000000
|
||||
}
|
||||
},
|
||||
{
|
||||
"program_index": 1,
|
||||
"accounts": {
|
||||
"funding_account": 0,
|
||||
"recipient_account": 3
|
||||
},
|
||||
"data": {
|
||||
"instruction_id": 2,
|
||||
"lamports": 30000000
|
||||
}
|
||||
},
|
||||
{
|
||||
"program_index": 1,
|
||||
"accounts": {
|
||||
"funding_account": 0,
|
||||
"recipient_account": 4
|
||||
},
|
||||
"data": {
|
||||
"instruction_id": 2,
|
||||
"lamports": 40000000
|
||||
}
|
||||
}
|
||||
],
|
||||
"luts": [
|
||||
{
|
||||
"account": "AeDJ1BqA7ruBbd6mEcS1QNxFbT8FQbiBVuN9NqK94Taq",
|
||||
"readwrite": [0, 1],
|
||||
"readonly": []
|
||||
},
|
||||
{
|
||||
"account": "H8JEG2wjU2LnjXJUVkivEokcK1pmtHXTyoGeDaBtazCy",
|
||||
"readwrite": [0],
|
||||
"readonly": []
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"expected_signature": "18cfc28c0119e9045b3ead4e82cfee79450ecda7e18835d0461278c1df0e6dee4c75ad01fab32c3d395390703fc755e68f8de1832e8b3f8503c0fbc82359af0b"
|
||||
}
|
||||
},
|
||||
{
|
||||
"description": "Upgrade Nonce",
|
||||
"parameters": {
|
||||
"address": "m/44'/501'/0'/0'",
|
||||
"construct": {
|
||||
"version": null,
|
||||
"header": {
|
||||
"signers": 1,
|
||||
"readonly_signers": 0,
|
||||
"readonly_non_signers": 0
|
||||
},
|
||||
"accounts": [
|
||||
"14CCvQzQzHCVgZM3j9soPnXuJXh1RmCfwLVUcdfbZVBS",
|
||||
"11111111111111111111111111111111"
|
||||
],
|
||||
"blockhash": "2p4rYZAaFfV5Uk5ugdG5KPNty9Uda9B3b4gWB8qnNqak",
|
||||
"instructions": [
|
||||
{
|
||||
"program_index": 1,
|
||||
"accounts": {
|
||||
"nonce_account": 0
|
||||
},
|
||||
"data": {
|
||||
"instruction_id": 12
|
||||
}
|
||||
}
|
||||
],
|
||||
"luts": []
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"expected_signature": "94fc370a351e845aae30832ee8101d6859c0fecff4b88cb7ec2faae1f30f930564724093a6ef924f2584898fbf6c3e54101eeaa9a7b04baab421d961341f220f"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
1140
common/tests/fixtures/solana/sign_tx.token_program.json
vendored
Normal file
1140
common/tests/fixtures/solana/sign_tx.token_program.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
39
common/tests/fixtures/solana/sign_tx.unknown_instructions.json
vendored
Normal file
39
common/tests/fixtures/solana/sign_tx.unknown_instructions.json
vendored
Normal file
@ -0,0 +1,39 @@
|
||||
{
|
||||
"setup": {
|
||||
"mnemonic": "all all all all all all all all all all all all",
|
||||
"passphrase": ""
|
||||
},
|
||||
"tests": [
|
||||
{
|
||||
"description": "Unknown instruction",
|
||||
"parameters": {
|
||||
"address": "m/44'/501'/0'/0'",
|
||||
"construct": {
|
||||
"version": null,
|
||||
"header": {
|
||||
"signers": 2,
|
||||
"readonly_signers": 0,
|
||||
"readonly_non_signers": 1
|
||||
},
|
||||
"accounts": [
|
||||
"14CCvQzQzHCVgZM3j9soPnXuJXh1RmCfwLVUcdfbZVBS",
|
||||
"AeDJ1BqA7ruBbd6mEcS1QNxFbT8FQbiBVuN9NqK94Taq",
|
||||
"AeDJ1BqA7ruBbd6mEcS1QNxFbT8FQbiBVuN9NqK94Taq"
|
||||
],
|
||||
"blockhash": "2p4rYZAaFfV5Uk5ugdG5KPNty9Uda9B3b4gWB8qnNqak",
|
||||
"instructions": [
|
||||
{
|
||||
"program_index": 2,
|
||||
"accounts": [0, 1],
|
||||
"data": "04deadbeef"
|
||||
}
|
||||
],
|
||||
"luts": []
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"expected_signature": "90093762546ad274def9b20ca6c441564193f2c7213cac704aefc6b7d65ebb315415fa7528728279a6688e2c99aa572d5af17b21a15a1d06b94e03df4ce53205"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
92
tests/device_tests/solana/construct/custom_constructs.py
Normal file
92
tests/device_tests/solana/construct/custom_constructs.py
Normal file
@ -0,0 +1,92 @@
|
||||
from construct import (
|
||||
AdaptationError,
|
||||
Adapter,
|
||||
Byte,
|
||||
Bytes,
|
||||
Construct,
|
||||
GreedyString,
|
||||
If,
|
||||
Int64ul,
|
||||
Optional,
|
||||
PaddedString,
|
||||
Prefixed,
|
||||
PrefixedArray,
|
||||
Struct,
|
||||
Validator,
|
||||
VarInt,
|
||||
this,
|
||||
)
|
||||
|
||||
from trezorlib.tools import b58decode, b58encode
|
||||
|
||||
|
||||
def _find_in_context(context, key: str):
|
||||
if key in context:
|
||||
return context[key]
|
||||
elif context._ is not None:
|
||||
return _find_in_context(context._, key)
|
||||
else:
|
||||
return None
|
||||
|
||||
|
||||
class VersionEncodingAdapter(Adapter):
|
||||
def _decode(self, obj: int, context, path) -> str | int:
|
||||
if obj & 0x80:
|
||||
return obj - 0x80
|
||||
|
||||
raise AdaptationError
|
||||
|
||||
def _encode(self, obj: int, context, path) -> int:
|
||||
return obj | 0x80
|
||||
|
||||
|
||||
Version = Optional(VersionEncodingAdapter(Byte))
|
||||
|
||||
|
||||
class CompactU16Validator(Validator):
|
||||
def _validate(self, obj: int, context, path) -> bool:
|
||||
return obj < 0x1_0000
|
||||
|
||||
|
||||
CompactU16 = CompactU16Validator(VarInt)
|
||||
|
||||
|
||||
def CompactArray(subcon: Construct):
|
||||
return PrefixedArray(CompactU16, subcon)
|
||||
|
||||
|
||||
def CompactStruct(*subcons, **subconskw):
|
||||
return Prefixed(CompactU16, Struct(*subcons, **subconskw))
|
||||
|
||||
|
||||
class B58Adapter(Adapter):
|
||||
def _decode(self, obj: str, context, path) -> str:
|
||||
# decode/encode is flipped because we are deserializing ("decoding") by representing ("encoding") the bytes in Base58
|
||||
return b58encode(obj)
|
||||
|
||||
def _encode(self, obj: str, context, path) -> bytes:
|
||||
# decode/encode is flipped because we are serializing ("encoding") by parsing ("decoding") the Base58 string
|
||||
return b58decode(obj)
|
||||
|
||||
|
||||
PublicKey = B58Adapter(Bytes(32))
|
||||
|
||||
|
||||
class HexStringAdapter(Adapter):
|
||||
def _decode(self, obj: bytes, context, path) -> str:
|
||||
return obj.hex()
|
||||
|
||||
def _encode(self, obj: str, context, path) -> bytes:
|
||||
return bytes.fromhex(obj)
|
||||
|
||||
|
||||
Memo = GreedyString("utf8")
|
||||
|
||||
String = Struct("length" / Int64ul, "chars" / PaddedString(this.length, "utf-8"))
|
||||
|
||||
|
||||
def OptionalParameter(subcon: Construct):
|
||||
return Struct(
|
||||
"is_included" / Byte,
|
||||
"value" / Optional(If(this.is_included == 1, subcon)),
|
||||
)
|
37
tests/device_tests/solana/construct/transaction.py
Normal file
37
tests/device_tests/solana/construct/transaction.py
Normal file
@ -0,0 +1,37 @@
|
||||
from construct import Byte, GreedyBytes, If, Int8ul, Prefixed, RawCopy, Struct, this
|
||||
|
||||
from .custom_constructs import CompactArray, CompactU16, PublicKey, Version
|
||||
|
||||
Header = Struct(
|
||||
"signers" / Int8ul,
|
||||
"readonly_signers" / Int8ul,
|
||||
"readonly_non_signers" / Int8ul,
|
||||
)
|
||||
|
||||
Accounts = CompactArray(PublicKey)
|
||||
|
||||
|
||||
Lut = Struct(
|
||||
"account" / PublicKey,
|
||||
"readwrite" / CompactArray(Int8ul),
|
||||
"readonly" / CompactArray(Int8ul),
|
||||
)
|
||||
|
||||
Luts = CompactArray(Lut)
|
||||
|
||||
RawInstruction = RawCopy(
|
||||
Struct(
|
||||
"program_id" / Byte,
|
||||
"accounts" / CompactArray(Byte),
|
||||
"data" / Prefixed(CompactU16, GreedyBytes),
|
||||
)
|
||||
)
|
||||
|
||||
Message = Struct(
|
||||
"version" / Version,
|
||||
"header" / Header,
|
||||
"accounts" / Accounts,
|
||||
"blockhash" / PublicKey,
|
||||
"instructions" / CompactArray(RawInstruction),
|
||||
"luts" / If(this.version != None, Luts), # noqa: E711
|
||||
)
|
77
tests/device_tests/solana/test_sign_tx.py
Normal file
77
tests/device_tests/solana/test_sign_tx.py
Normal file
@ -0,0 +1,77 @@
|
||||
# This file is part of the Trezor project.
|
||||
#
|
||||
# Copyright (C) 2012-2023 SatoshiLabs and contributors
|
||||
#
|
||||
# This library is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Lesser General Public License version 3
|
||||
# as published by the Free Software Foundation.
|
||||
#
|
||||
# This library is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Lesser General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the License along with this library.
|
||||
# If not, see <https://www.gnu.org/licenses/lgpl-3.0.html>.
|
||||
|
||||
import pytest
|
||||
|
||||
from trezorlib.debuglink import TrezorClientDebugLink as Client
|
||||
from trezorlib.solana import sign_tx
|
||||
from trezorlib.tools import parse_path
|
||||
|
||||
from ...common import parametrize_using_common_fixtures
|
||||
from .construct.instructions import PROGRAMS, UnknownInstruction
|
||||
from .construct.transaction import Message, RawInstruction
|
||||
|
||||
pytestmark = [
|
||||
pytest.mark.altcoin,
|
||||
pytest.mark.solana,
|
||||
pytest.mark.skip_t1,
|
||||
]
|
||||
|
||||
|
||||
@parametrize_using_common_fixtures(
|
||||
"solana/sign_tx.system_program.json",
|
||||
"solana/sign_tx.stake_program.json",
|
||||
"solana/sign_tx.associated_token_account_program.json",
|
||||
"solana/sign_tx.memo_program.json",
|
||||
"solana/sign_tx.compute_budget_program.json",
|
||||
"solana/sign_tx.token_program.json",
|
||||
"solana/sign_tx.unknown_instructions.json",
|
||||
)
|
||||
def test_solana_sign_tx(client: Client, parameters, result):
|
||||
client.init_device(new_session=True)
|
||||
|
||||
serialized_tx = _serialize_tx(parameters["construct"])
|
||||
|
||||
actual_result = sign_tx(
|
||||
client,
|
||||
address_n=parse_path(parameters["address"]),
|
||||
serialized_tx=serialized_tx,
|
||||
)
|
||||
|
||||
assert actual_result.signature == bytes.fromhex(result["expected_signature"])
|
||||
|
||||
|
||||
def _serialize_tx(tx_construct):
|
||||
serialized_instructions = []
|
||||
for instruction in tx_construct["instructions"]:
|
||||
program = tx_construct["accounts"][instruction["program_index"]]
|
||||
builder = PROGRAMS.get(program, UnknownInstruction)
|
||||
serialized_instruction = builder.build(instruction)
|
||||
raw_instruction = RawInstruction.parse(serialized_instruction)
|
||||
serialized_instructions.append(raw_instruction)
|
||||
|
||||
message_construct = {
|
||||
"version": tx_construct["version"],
|
||||
"header": tx_construct["header"],
|
||||
"accounts": tx_construct["accounts"],
|
||||
"blockhash": tx_construct["blockhash"],
|
||||
"instructions": serialized_instructions,
|
||||
"luts": tx_construct["luts"],
|
||||
}
|
||||
|
||||
return Message.build(
|
||||
message_construct,
|
||||
)
|
Loading…
Reference in New Issue
Block a user