1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2025-02-05 04:10:58 +00:00

chore(cardano): update docs, changelog and ui test fixtures

This commit is contained in:
gabrielkerekes 2021-10-06 16:05:07 +02:00 committed by matejcik
parent 1f33ab420d
commit 4aaf6db9a2
4 changed files with 227 additions and 172 deletions

View File

@ -0,0 +1 @@
Support for Cardano multi-sig transactions, token minting, script addresses, multi-sig keys, minting keys and native script verification

View File

@ -26,7 +26,7 @@ REVIEWER = Jan Matejek <jan.matejek@satoshilabs.com>, Tomas Susanka <tomas.susan
## Important notes
Cardano requires a custom `seed.py` file and `Keychain` class. This is because the original Cardano derivation schemes don't separate seed generation from key tree derivation and also because we need to support both Byron (44') and Shelley (1852') purposes. More on this can be found [here](https://github.com/satoshilabs/slips/blob/master/slip-0023.md) and [here](https://github.com/input-output-hk/implementation-decisions/blob/e2d1bed5e617f0907bc5e12cf1c3f3302a4a7c42/text/1852-hd-chimeric.md).
Cardano requires a custom `seed.py` file and `Keychain` class. This is because the original Cardano derivation schemes don't separate seed generation from key tree derivation and also because we need to support Byron (44'), Shelley (1852'), multi-sig ([1854'](https://cips.cardano.org/cips/cip1854/)) and minting ([1855'](https://cips.cardano.org/cips/cip1855/)) purposes. More on this can be found [here](https://github.com/satoshilabs/slips/blob/master/slip-0023.md) and [here](https://github.com/input-output-hk/implementation-decisions/blob/e2d1bed5e617f0907bc5e12cf1c3f3302a4a7c42/text/1852-hd-chimeric.md).
Cardano uses extended public keys. This also means that the transaction signature is built using the `ed25519.sign_ext` function.
@ -42,6 +42,8 @@ _Current mainnet network id:_ 1
In Shelley two types of keys are used. Payment key and staking key. Payment keys are derived from _m/1852'/1815'/x/[0,1]/y_ paths and are used for holding/transferring funds. Staking keys are derived from _m/1852'/1815'/x/2/0_ paths, thus there is only one staking key per account. They are used for staking operations - certificates, withdrawals. Shelley addresses are built from the combination of hashes of these keys.
[Multi-sig paths (1854')](https://cips.cardano.org/cips/cip1854/) are used to generate keys which should be used in native scripts and also to sign multi-sig transactions. [Minting paths (1855')](https://cips.cardano.org/cips/cip1855/) are used for creating minting policies and for witnessing minting transactions.
## Addresses
Since the Shelley era Cardano supports multiple address types. Information about address types added in Shelley can be found [here](https://github.com/input-output-hk/cardano-ledger-specs/blob/460ee17d22cacb3ac4d90536ebe90500a356a1c9/shelley/chain-and-ledger/shelley-spec-ledger-test/cddl-files/shelley.cddl#L68). In short, all Shelley address types contain a header, which is 1 byte long. The header is built as: `((address_type << 4) | networkId)`. Byron address has an address type of `0b1000` but never contains the network id. Instead, protocol magic is included in the address in a different way (more about that [here](https://github.com/input-output-hk/cardano-wallet/wiki/About-Address-Format---Byron)).
@ -60,11 +62,15 @@ Mainnet: `Ae2tdPwUPEZCanmBz5g2GEwFqKTKpNJcGYPKfDxoNeKZ8bRHr8366kseiK2`
Testnet: `2657WMsDfac7BteXkJq5Jzdog4h47fPbkwUM49isuWbYAr2cFRHa3rURP236h9PBe`
#### Credentials
Shelley addresses are built using credentials - `payment_credential` and `staking_credential`. These credentials can either be key hashes or script IDs (hashes). The type of the address (and thus also its header) changes based on which credentials are used. Addresses with key hashes usually represent accounts owned by single users. Addresses with scripts either represent multi-sig (shared) accounts derived from native scripts or they represent Plutus scripts directly.
#### Base address
Introduced in Shelley: `[header] + [payment_key_hash] + [staking_key_hash]`
Introduced in Shelley: `[header] + [payment_credential] + [staking_credential]`
Base address can have staking rights (as it contains a staking key hash), but the staking key has to be registered on the blockchain first. Funds can be received even without the staking key being registered though. It is also possible to own the funds (payment key) but to use a different staking key to build the address. This would transfer the staking rights to the owner of the staking key. This can be useful for staking your funds for a charity.
Base address can have staking rights (as it contains a staking credential), but the staking credential has to be registered on the blockchain first. Funds can be received even without the credential being registered though. It is also possible to own the funds (payment credential) but to use a different staking credential to build the address. This would transfer the staking rights to the owner(s) of the staking credential. This can be useful for staking your funds for a charity.
**Example:**
@ -74,9 +80,9 @@ Testnet: `addr_test1qrv42wjda8r6mpfj40d36znlgfdcqp7jtj03ah8skh6u8wnrqua2vw243tmj
#### Pointer address
Introduced in Shelley: `[header] + [payment_key_hash] + [certificate_pointer]`
Introduced in Shelley: `[header] + [payment_credential] + [certificate_pointer]`
Certificate pointer is a pointer `(block, transaction, certificate)` to the staking key registration certificate on the blockchain. It replaces `staking_key_hash` from base address, but serves the same purpose. Thus pointer address is pretty much the same as base address in function, but is much shorter (~35B vs 57B) thanks to the certificate pointer.
Certificate pointer is a pointer `(block, transaction, certificate)` to the staking credential registration certificate on the blockchain. It replaces `staking_credential` from base address, but serves the same purpose. Thus pointer address is pretty much the same as base address in function, but is much shorter (~35B vs 57B) thanks to the certificate pointer.
**Example:**
@ -86,7 +92,7 @@ Testnet: `addr_test1gzq0nckg3ekgzuqg7w5p9mvgnd9ym28qh5grlph8xd2z925ph3wczvf2ag2x
#### Enterprise address
Introduced in Shelley: `[header] + [payment_key_hash]`
Introduced in Shelley: `[header] + [payment_credential]`
Entreprise address has no staking rights. This is useful for example for exchanges which contain a lot of funds and thus would control too much stake.
@ -98,7 +104,7 @@ Testnet: `addr_test1vzq0nckg3ekgzuqg7w5p9mvgnd9ym28qh5grlph8xd2z92s8k2y47`
#### Reward address
Introduced in Shelley: `[header] + [staking_key_hash]`
Introduced in Shelley: `[header] + [staking_credential]`
Staking rewards are gathered on this address after stake registration and delegation. They can then be withdrawn by a transaction with `withdrawals` filled in. All of the rewards have to be taken out at once.
@ -127,7 +133,7 @@ For security and in some cases UX purposes we use transaction signing mode so th
#### Ordinary transaction
An ordinary transaction cannot contain a pool registration certificate. Otherwise, no special rules currently apply.
An ordinary transaction cannot contain a pool registration certificate. Also multi-sig (1854') witnesses can't be requested.
#### Pool registration as owner
@ -135,11 +141,16 @@ When signing a pool registration transaction as an owner, the transaction cannot
- inputs with path, i.e. payment witness requests
- other certificates
- withdrawals
- token minting
Including inputs with a path would cause the transaction to be signed by such a path without letting the user know. Of course, we could let the user know that the transaction is being signed by the user's payment key, however, a pool owner should never be the one paying for the pool registration anyways so such a witness request doesn't make sense.
Just like a pool registration certificate, other certificates and withdrawals are also signed by the user's staking keys. Allowing other certificates and withdrawals to be included in the transaction might thus cause the user to inadvertently sign a delegation certificate or withdrawal along with the pool registration.
#### Multi-sig transaction
Represents a multi-sig transaction using native scripts. Script credentials must be used in certificates and withdrawals when signing a multi-sig transaction. Ordinary (1852') witness requests are not allowed and all the witness requests are shown. Transaction cannot contain a pool registration certificate.
### Single account model
Change outputs, certificates, withdrawals and witness requests (inputs) are allowed to only contain paths from a single account. The single account is determined by the first encountered element containing a path. Byron and Shelley paths with the same account are considered as separate accounts.
@ -178,6 +189,15 @@ Transaction outputs may include custom tokens on top of ADA tokens:
Please see the transaction below for more details.
#### Token minting/burning
_Token minting/burning support has been added to HW wallets along with multi-sig support_
_Quote from [Cardano docs](https://cardano-ledger.readthedocs.io/en/latest/explanations/policies.html#minting-transactions):_
> To introduce new quantities of new tokens on the ledger (minting) or to remove existing tokens (burning), each transaction features a mint field. The transactions where the mint field is not empty are known as minting transactions. The use of this field needs to be tightly controlled to ensure that the minting and burning of tokens occurs according to the tokens minting policy.
Keys derived from a [minting path (1855')](https://cips.cardano.org/cips/cip1855/) are used to create token minting/burning policies (native scripts). The structure of the mint field can be found in the [CDDL](https://github.com/input-output-hk/cardano-ledger-specs/blob/097890495cbb0e8b62106bcd090a5721c3f4b36f/shelley-ma/shelley-ma-test/cddl-files/shelley-ma.cddl#L255).
### Certificates
Certificates are posted to the blockchain via transactions and they mark a certain action, thus there are multiple certificate types:
@ -213,6 +233,12 @@ The only object currently supported is Catalyst voting key registration. To be i
[Catalyst Registration Transaction Metadata Format](https://github.com/cardano-foundation/CIPs/blob/749f22eccd78e05fcdc4552c49639bb3bbd0a458/CIP-0015/CIP-0015.md)
### Native scripts
Native scripts are used to describe the multi-sig scheme belonging to a script address or the minting/burning policy of native tokens. Native scripts define what keys need to be used to witness a transaction and what condition needs to be fulfilled in order for that transaction to be valid. See [CDDL](https://github.com/input-output-hk/cardano-ledger-specs/blob/3ff2b08c7e094a3b9035fafb170e0e1da9b75401/eras/alonzo/test-suite/cddl-files/alonzo.cddl#L334) and [CIP-1854](https://cips.cardano.org/cips/cip1854/) for more details.
In order for the user to be able to verify native scripts a `get_native_script_hash` is available on Trezor. This enables the user to verify the contents and the final hash of the script.
#### Transaction Explorer
[Cardano explorer](https://explorer.cardano.org/en.html).
@ -224,96 +250,71 @@ You can use a combination of [cardano-node](https://github.com/input-output-hk/c
## Serialization format
Cardano uses [CBOR](https://www.rfc-editor.org/info/rfc7049) as a serialization format. [Here](https://github.com/input-output-hk/cardano-ledger-specs/blob/097890495cbb0e8b62106bcd090a5721c3f4b36f/shelley-ma/shelley-ma-test/cddl-files/shelley-ma.cddl) is the [CDDL](https://tools.ietf.org/html/rfc8610) specification for after Multi Asset support has been added.
#### Raw transaction example
#### Transaction body example
Input for trezorctl to sign the transaction can be found [here](https://gist.github.com/gabrielKerekes/ad6c168b12ebb43b082df5b92d67e276).
```
83a800818258203b40265111d8bb3c3c608d95b3a0bf83461ace32d79336579a1939b3aad1c0b700018282583901eb0baa5e570cffbe2934db29df0b6a3d7c0430ee65d4c3a7ab2fefb91bc428e4720702ebd5dab4fb175324c192dc9bb76cc5da956e3c8dff821904d2a1581c95a292ffee938be03e9bae5657982a74e9014eb4960108c9e23a5b39a14874652474436f696e1910e18258390180f9e2c88e6c817008f3a812ed889b4a4da8e0bd103f86e7335422aa122a946b9ad3d2ddf029d3a828f0468aece76895f15c9efbd69b427719115c02182a030a048182008200581c122a946b9ad3d2ddf029d3a828f0468aece76895f15c9efbd69b427705a1581de1122a946b9ad3d2ddf029d3a828f0468aece76895f15c9efbd69b42771903e80758205410cfffe33d9da8b3ab789068f12e0464fad13f586f92d8c8c2fcac68c1a9c00814a100828258205d010cf16fdeff40955633d6c565f3844a288a24967cf6b76acbeb271b4f13c158406478ca1a1d1bab66688a19e983fbff9e7f9120f0035d9663ae8eb917cf01ce1c4b47834d06f41cf0c7c5218be0224ab1d88de97b20572d6fdc3cb1e40b662300825820bc65be1b0b9d7531778a1317c2aa6de936963c3f9ac7d5ee9e9eda25e0c97c5e584023ddaf5c9f5c9a22fd646f1c1c5a3f1a84c3a43d90d2211e919450c35df53bcded772e0badb33a898c03f3c227765bc21e678d85b716e0055ca9d89274d6660e82a219ef64a4015820cdea4080a301fdfda7a6b9c8b5283273f51af5f34ae587e05c5492f90a2ae54f025820bc65be1b0b9d7531778a1317c2aa6de936963c3f9ac7d5ee9e9eda25e0c97c5e0358390180f9e2c88e6c817008f3a812ed889b4a4da8e0bd103f86e7335422aa122a946b9ad3d2ddf029d3a828f0468aece76895f15c9efbd69b4277041a015d76c419ef65a101584017ed3f6a8ef2d0f1212e3aa49766fcf22b087c6cfa5cf247ecbc6c27069d7c17f189f2ca0acf6f1d54e1999e12fc37ac695c693982df96430896b54e0bcff10780
a900818258203b40265111d8bb3c3c608d95b3a0bf83461ace32d79336579a1939b3aad1c0b700018282583901eb0baa5e570cffbe2934db29df0b6a3d7c0430ee65d4c3a7ab2fefb91bc428e4720702ebd5dab4fb175324c192dc9bb76cc5da956e3c8dff821904d2a1581c95a292ffee938be03e9bae5657982a74e9014eb4960108c9e23a5b39a14874652474436f696e1910e18258390180f9e2c88e6c817008f3a812ed889b4a4da8e0bd103f86e7335422aa122a946b9ad3d2ddf029d3a828f0468aece76895f15c9efbd69b427719115c02182a030a048182008200581c122a946b9ad3d2ddf029d3a828f0468aece76895f15c9efbd69b427705a1581de1122a946b9ad3d2ddf029d3a828f0468aece76895f15c9efbd69b42771903e8075820a943e9166f1bb6d767b175384d3bd7d23645170df36fc1861fbf344135d8e120081409a1581c95a292ffee938be03e9bae5657982a74e9014eb4960108c9e23a5b39a24874652474436f696e1a007838624875652474436f696e3a00783861
```
#### The same transactions with structure description
#### The same transaction body with structure description
```
# transaction
# array(3)
[
# transaction body
# map(6)
{
# inputs [id, index]
# uint(0), array(1), array(2), bytes(32), uint(0)
0: [[h'3B4...', 0]],
# transaction body
# map(6)
{
# inputs [id, index]
# uint(0), array(1), array(2), bytes(32), uint(0)
0: [[h'3B4...', 0]],
# outputs [address, [ada_amount, { policy_id => { asset_name => asset_amount }}]]
# uint(1), array(2)
1: [
# outputs [address, [ada_amount, { policy_id => { asset_name => asset_amount }}]]
# uint(1), array(2)
1: [
# multi asset output
# array(2), bytes(57), uint(1234), map(1), bytes(28), map(1), bytes(8), uint(4321)
[
h'01E...', [
1234, {
h'95A...': {
h'74652474436F696E': 4321
}
}
]
h'01E...', [
1234, {
h'95A...': {
h'74652474436F696E': 4321
}
}
]
],
# output containing only ADA [address, ada_amount]
# array(2), bytes(57), uint(4444)
[h'018...', 4444],
]
]
# fee
# uint(2), uint(42)
2: 42,
# fee
# uint(2), uint(42)
2: 42,
# ttl
# uint(3), uint(10)
3: 10,
# ttl
# uint(3), uint(10)
3: 10,
# certificates [[type, [keyhash/scripthash, keyhash]]]
# uint(4), array(1), array(2), uint(0), array(2), uint(0), bytes(28)
4: [[0,[0, h'122...']]],
# certificates [[type, [keyhash/scripthash, keyhash]]]
# uint(4), array(1), array(2), uint(0), array(2), uint(0), bytes(28)
4: [[0,[0, h'122...']]],
# withdrawal [reward_address: amount]
# uint(5), map(1), bytes(29), uint(7204944340)
5: {h'E11...': 1000},
# withdrawal [reward_address: amount]
# uint(5), map(1), bytes(29), uint(7204944340)
5: {h'E11...': 1000},
# auxiliary data hash
7: h'541...',
# auxiliary data hash
7: h'541...',
# validity_interval_start
# uint(8), uint(20)
8: 20
},
# witnesses
# map(1)
{
# verifying key witnesses [[vkey -> signature]]
# uint(0), array(2)
0: [
# array(2), bytes(32), bytes(64)
[h'5D0...', h'647...'],
# array(2), bytes(32), bytes(64)
[h'BC6...', h'23D...']
]
},
# auxiliary data - catalyst voting key registration
# array(2)
[
# map(2)
{
# uint(61284), map(4), uint(1), bytes(32), uint(2), bytes(32), uint(3), bytes(57), uint(4), uint(22902468)
61284: {
1: h'CDE...',
2: h'BC6...',
3: h'018...',
4: 22902468
},
# uint(61285), map(1), bytes(64)
61285: {
1:h'17E...'
}
},
# array(0)
[]
]
]
# validity_interval_start
# uint(8), uint(20)
8: 20,
# mint
# map(2), bytes(8), "te$tCoin", uint(7878754), bytes(8), "ue$tCoin", int(7878753)
9: {
h'95A2...': {
h'7465...': 7878754,
h'7565...': -7878754
}
}
}
```

View File

@ -0,0 +1 @@
Support for Cardano multi-sig transactions, token minting, script addresses, multi-sig keys, minting keys and native script verification

View File

@ -1,65 +1,92 @@
{
"cardano-test_address_public_key.py::test_cardano_get_address[parameters0-result0]": "5995531c327536448b88d20a78a61d7851e476e2f0c5d20f61365201603c6e7d",
"cardano-test_address_public_key.py::test_cardano_get_address[parameters1-result1]": "232dd38267602a355072ebee8484a5ad2e4d5004341837eb92f1232107e185dd",
"cardano-test_address_public_key.py::test_cardano_get_address[parameters10-result10]": "708dee18b3a5be77165fed060314c704f44d188e5fe442c4ab7c64c91b974051",
"cardano-test_address_public_key.py::test_cardano_get_address[parameters11-result11]": "48cdd4e57be04e64fccf32a811dde864cbdb45733af4feb020e6b3ae65878f5b",
"cardano-test_address_public_key.py::test_cardano_get_address[parameters0-result0]": "e3be7c64097574e795bad1852f3eb7b9d5c4577ed88a845329bacc7350338d74",
"cardano-test_address_public_key.py::test_cardano_get_address[parameters1-result1]": "50b6d3e772e77d6f52c7883f89c3b5f196e43865982c6c5b5171a72546e68164",
"cardano-test_address_public_key.py::test_cardano_get_address[parameters10-result10]": "31b0bb5d4ab8cbd5293cbdc8c44f722e5e39c1f633eaa1db2186cb138d88dd5c",
"cardano-test_address_public_key.py::test_cardano_get_address[parameters11-result11]": "1613d5fad4a1275f2d01ae4a714e796286d36bc7e676fdb434758a83ae728200",
"cardano-test_address_public_key.py::test_cardano_get_address[parameters12-result12]": "6e97bb0c5066a5e1700e509075ad70814e0dfd9bcbd3acc252274fd1bb300a09",
"cardano-test_address_public_key.py::test_cardano_get_address[parameters13-result13]": "00408a67156c3325a989bdd9aa5060d7751a6b5d839ea2f3642cf64cea7fff5f",
"cardano-test_address_public_key.py::test_cardano_get_address[parameters14-result14]": "ecf8e16405f9aca5bdb33f5c953e57240676a3754f096b51efe7ca48e28bb9f2",
"cardano-test_address_public_key.py::test_cardano_get_address[parameters15-result15]": "49fb6dacc7c39338433457f7bd6685a3418604d51cd66093016e3c69c93c5ae8",
"cardano-test_address_public_key.py::test_cardano_get_address[parameters16-result16]": "2ec82a679db9242272902b355f21bcb3a768844328da92527cbcc4a4313726ca",
"cardano-test_address_public_key.py::test_cardano_get_address[parameters17-result17]": "03c8ae7aaa4abad16a377c6a21c576508ddcff0af0d39040720dd46b07bfe499",
"cardano-test_address_public_key.py::test_cardano_get_address[parameters18-result18]": "38d33bb85d1f2ce0a2594bbd7ce37447151271c98420b7d7603204e0e24f53ee",
"cardano-test_address_public_key.py::test_cardano_get_address[parameters19-result19]": "e6d8aef7cc1b2e3fa64a09809259634778a61c746f0f438ba5e253eab3620ed0",
"cardano-test_address_public_key.py::test_cardano_get_address[parameters2-result2]": "20d0981ca9bebb49ce4e0cad49ccebc99de22a5dba39d33b2edab1c072e4cc0f",
"cardano-test_address_public_key.py::test_cardano_get_address[parameters20-result20]": "b91e49daf01f2f3ba399b2d2d104b53e4b4bc7fdee14bd92e32438ceeee6e14d",
"cardano-test_address_public_key.py::test_cardano_get_address[parameters21-result21]": "0b058b0b85e5958b0944ed606569b89cef5925a342a5cd3714ba7b9a395a503d",
"cardano-test_address_public_key.py::test_cardano_get_address[parameters22-result22]": "5a3e25df453f946c4fff925bcdc0c701ec05cfeeb0d2772543fe4089c021a84e",
"cardano-test_address_public_key.py::test_cardano_get_address[parameters23-result23]": "f08bd2389f00c4aff897a823991e9404c1071aecb9114bb7514ceb4bc30cc4af",
"cardano-test_address_public_key.py::test_cardano_get_address[parameters24-result24]": "a547653219695dd2c6f2059b5190b20d014eee75fd7611eca628931837af6ccc",
"cardano-test_address_public_key.py::test_cardano_get_address[parameters3-result3]": "cc40913761fbeb19912ac962203f2a2360c34c7536869b3565bd3dfcc18180ed",
"cardano-test_address_public_key.py::test_cardano_get_address[parameters4-result4]": "e447a8d0ffdc9a63bd7555795026c669c7a14788e0b6f3f80974d04596c736f9",
"cardano-test_address_public_key.py::test_cardano_get_address[parameters5-result5]": "db4d11ddfa135f0d66778279120b1c2443daad8439aaf85e9dec9c53cd0b7860",
"cardano-test_address_public_key.py::test_cardano_get_address[parameters6-result6]": "7f190bfd6a02454bf6aa4958465e8a4fc13a1f213600bcd6e0f342ccde71e729",
"cardano-test_address_public_key.py::test_cardano_get_address[parameters7-result7]": "0b3b8e69f405ad5190c6410deedc827ff88acc78871dc0ea710f07c99343d6b0",
"cardano-test_address_public_key.py::test_cardano_get_address[parameters8-result8]": "be87abd3581d1d72132b551bada3cd431413739cbd6905bbc15dc62a3a202501",
"cardano-test_address_public_key.py::test_cardano_get_address[parameters9-result9]": "ab00e0aadc58bb704f882f0486835f0dbcb452f82744d39e19ab1737d1b1ccc1",
"cardano-test_address_public_key.py::test_cardano_get_address[parameters14-result14]": "1e46ee368014fa788a3dd5c90f21297b032ef98b79250d2cd76bff04476720a8",
"cardano-test_address_public_key.py::test_cardano_get_address[parameters15-result15]": "c1c401bcc939e3f881a90c10cf77727eb78103310fe682be13cccac2d05258a7",
"cardano-test_address_public_key.py::test_cardano_get_address[parameters16-result16]": "78f3aff34efaa4ee92437acdaff8fb441b3a87b243d85f5fe10ba14d1426078d",
"cardano-test_address_public_key.py::test_cardano_get_address[parameters17-result17]": "c19e69a06013022db7341967c39ac9cfbf56f7b83358f6759dc547694196cc0d",
"cardano-test_address_public_key.py::test_cardano_get_address[parameters18-result18]": "dc1d88b3bb0cbaef02e5e570b48aa801e8f9f3bc23a4d8d913b9f93a2f954315",
"cardano-test_address_public_key.py::test_cardano_get_address[parameters19-result19]": "9673a91ee9f24c09f4b8b000a86e972a631a9aee0f788dae23768967a5ff78d2",
"cardano-test_address_public_key.py::test_cardano_get_address[parameters2-result2]": "2c699daec1c0175be308e8ba573cd9960bb137855d4ed7d7e58cc5b9425ff6c8",
"cardano-test_address_public_key.py::test_cardano_get_address[parameters20-result20]": "d7cf306f497f3f8a25dbeb7162d277f6f4a07ded9c1e45f2602011bcb2563a08",
"cardano-test_address_public_key.py::test_cardano_get_address[parameters21-result21]": "83051ecf27bbb4bb3262e1053c727ee065ff5f8912083c42e875a171e424b410",
"cardano-test_address_public_key.py::test_cardano_get_address[parameters22-result22]": "a538aa498f8bcbe047f5de143eaab0703989d25a1452742cb8924daded2106e1",
"cardano-test_address_public_key.py::test_cardano_get_address[parameters23-result23]": "af06ed30be20742e032eb42374e4b5624d9cefa434aa2511156422921bc711ce",
"cardano-test_address_public_key.py::test_cardano_get_address[parameters24-result24]": "2ae9c60b1a8550af6ea0432f269f6ecfefaf16495f264cac6c64b097292bae8d",
"cardano-test_address_public_key.py::test_cardano_get_address[parameters25-result25]": "e81ed52b830188167acb9d282e75313b76eea75a71e1e52ca888b4789869a9af",
"cardano-test_address_public_key.py::test_cardano_get_address[parameters26-result26]": "680e0f8a865197a1dc66eb19032b2b07ddb66a6d7e1be48f5db8762a5b8a21ee",
"cardano-test_address_public_key.py::test_cardano_get_address[parameters27-result27]": "d7b5c96e92f23f8a0da14c11e1fd8e27cd0aaed1d0abf9a488cb2f30b8a79d8c",
"cardano-test_address_public_key.py::test_cardano_get_address[parameters28-result28]": "3dd9ca7364c42eb432f406118cfc21558b58c635348059256ffc6eae4415f351",
"cardano-test_address_public_key.py::test_cardano_get_address[parameters29-result29]": "0496d501f39e8b21ea3379900fecc0ccf1fd064c8c46effc498d9c193202e069",
"cardano-test_address_public_key.py::test_cardano_get_address[parameters3-result3]": "61e5085c2f776b6b6b90566cd7086308700793757b56ed16688e2ae4ef055a4c",
"cardano-test_address_public_key.py::test_cardano_get_address[parameters30-result30]": "8fd03427127b71649aba8623ce4f1cccbce2a8db4467f14f3f99907b703a7b8b",
"cardano-test_address_public_key.py::test_cardano_get_address[parameters31-result31]": "00b4bc32da6235bc5402f3084b3f7815868bccb9f8e002eaab0c23b5514186dc",
"cardano-test_address_public_key.py::test_cardano_get_address[parameters32-result32]": "896e73c87f518eb45e93340e36ff82654b953566dedbcd84869d73955bcd5b25",
"cardano-test_address_public_key.py::test_cardano_get_address[parameters33-result33]": "0cead7b188b4724845d2178061d5c529ba90f6412716d45b98011375442f4cc2",
"cardano-test_address_public_key.py::test_cardano_get_address[parameters34-result34]": "786cbd497fb25b9ac4bf19aa945e75c24e6bf79048a1f7536523906b891ce676",
"cardano-test_address_public_key.py::test_cardano_get_address[parameters35-result35]": "36910fcb52b2cbe6057ff83bb0083c22ac04af1eb2cf00b775e51f59c536a0a2",
"cardano-test_address_public_key.py::test_cardano_get_address[parameters36-result36]": "2416237b3902217c53d68f51161c7affa3f65a9b9ea5aa6f1ac532015e8611a8",
"cardano-test_address_public_key.py::test_cardano_get_address[parameters4-result4]": "7b1d49c03f043bb3abbe17c4f8bdb9c227cf6177cacc353e95f99ca1e3495d32",
"cardano-test_address_public_key.py::test_cardano_get_address[parameters5-result5]": "476a619684555a2f30dd6b8ba89e5c1930d2456c30225240c58450441cb22f86",
"cardano-test_address_public_key.py::test_cardano_get_address[parameters6-result6]": "a7a864aa3ff78ad82172f7605dc92ed3d0c5fdc581241c62562c039bb7656aee",
"cardano-test_address_public_key.py::test_cardano_get_address[parameters7-result7]": "d1e4b84dcafcf246d14f7093694df1e14831387e2fd519150949cbff077b82cd",
"cardano-test_address_public_key.py::test_cardano_get_address[parameters8-result8]": "124fdbdf78ad7cbb4e5bd81abe8d8b5738be7544b7fd939de800df5e3fde71ac",
"cardano-test_address_public_key.py::test_cardano_get_address[parameters9-result9]": "4b12964477d051513257ea78693ca3d0262be7f05d29db54a92398eb7add5ed1",
"cardano-test_address_public_key.py::test_cardano_get_public_key[parameters0-result0]": "095af81ec79e9b510c90d9fa34fed343f3840807190c67bc237af885695ae687",
"cardano-test_address_public_key.py::test_cardano_get_public_key[parameters1-result1]": "095af81ec79e9b510c90d9fa34fed343f3840807190c67bc237af885695ae687",
"cardano-test_address_public_key.py::test_cardano_get_public_key[parameters10-result10]": "095af81ec79e9b510c90d9fa34fed343f3840807190c67bc237af885695ae687",
"cardano-test_address_public_key.py::test_cardano_get_public_key[parameters11-result11]": "095af81ec79e9b510c90d9fa34fed343f3840807190c67bc237af885695ae687",
"cardano-test_address_public_key.py::test_cardano_get_public_key[parameters12-result12]": "095af81ec79e9b510c90d9fa34fed343f3840807190c67bc237af885695ae687",
"cardano-test_address_public_key.py::test_cardano_get_public_key[parameters13-result13]": "095af81ec79e9b510c90d9fa34fed343f3840807190c67bc237af885695ae687",
"cardano-test_address_public_key.py::test_cardano_get_public_key[parameters14-result14]": "54fe7196c39e3f70734be72fc45a121670e891852354057b4d8ab094ced4b493",
"cardano-test_address_public_key.py::test_cardano_get_public_key[parameters15-result15]": "54fe7196c39e3f70734be72fc45a121670e891852354057b4d8ab094ced4b493",
"cardano-test_address_public_key.py::test_cardano_get_public_key[parameters16-result16]": "54fe7196c39e3f70734be72fc45a121670e891852354057b4d8ab094ced4b493",
"cardano-test_address_public_key.py::test_cardano_get_public_key[parameters2-result2]": "095af81ec79e9b510c90d9fa34fed343f3840807190c67bc237af885695ae687",
"cardano-test_address_public_key.py::test_cardano_get_public_key[parameters3-result3]": "095af81ec79e9b510c90d9fa34fed343f3840807190c67bc237af885695ae687",
"cardano-test_address_public_key.py::test_cardano_get_public_key[parameters4-result4]": "095af81ec79e9b510c90d9fa34fed343f3840807190c67bc237af885695ae687",
"cardano-test_address_public_key.py::test_cardano_get_public_key[parameters5-result5]": "095af81ec79e9b510c90d9fa34fed343f3840807190c67bc237af885695ae687",
"cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "54fe7196c39e3f70734be72fc45a121670e891852354057b4d8ab094ced4b493",
"cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "54fe7196c39e3f70734be72fc45a121670e891852354057b4d8ab094ced4b493",
"cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "54fe7196c39e3f70734be72fc45a121670e891852354057b4d8ab094ced4b493",
"cardano-test_address_public_key.py::test_cardano_get_public_key[parameters6-result6]": "095af81ec79e9b510c90d9fa34fed343f3840807190c67bc237af885695ae687",
"cardano-test_address_public_key.py::test_cardano_get_public_key[parameters7-result7]": "095af81ec79e9b510c90d9fa34fed343f3840807190c67bc237af885695ae687",
"cardano-test_address_public_key.py::test_cardano_get_public_key[parameters8-result8]": "095af81ec79e9b510c90d9fa34fed343f3840807190c67bc237af885695ae687",
"cardano-test_address_public_key.py::test_cardano_get_public_key[parameters9-result9]": "095af81ec79e9b510c90d9fa34fed343f3840807190c67bc237af885695ae687",
"cardano-test_sign_tx.py::test_cardano_sign_tx[byron_to_shelley_transfer]": "db4afddea8a453edd9d3e283387463d1e89dd79f4265bd7648d67b0cbc691b91",
"cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "1a7dd5b68780f7d52277b57787e0389db5621e81c45cb10240b659ddcd477ac3",
"cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "ca5195d7a8cc421e324e89abd049596717f7f064fc38f967d01f7730f694bb54",
"cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change0]": "4cfe4bcfd945876cd8268403b2e89f835793ced525bd35e92e74f188ece4ad01",
"cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_change1]": "2a88a1416be6f568ee00f76f65299e8cf127e91ee872df74ef3cc8423d68d5f5",
"cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_with_multiple_inputs]": "e3d617a997d511ebd8b9ab75fbf0c92e980a4de59c0461cb9b7e6916542cbf66",
"cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change0]": "e3d617a997d511ebd8b9ab75fbf0c92e980a4de59c0461cb9b7e6916542cbf66",
"cardano-test_sign_tx.py::test_cardano_sign_tx[mainnet_transaction_without_change1]": "406afb533896d5cf93011adfad70aedae3b896d4c398967173878518df4c84df",
"cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_different_policies_-1dbb1bfb": "bd1689c147c515d1d5248b5ff9440fa97e543ce5cd8f1c2b05f0668346c2c729",
"cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_multiasset_output]": "bcb5fee573bf3880aceb077f8b940915bde8fbd9abd43b7b230ff6a55fa3df83",
"cardano-test_sign_tx.py::test_cardano_sign_tx[mary_era_transaction_with_no_ttl-validity_start]": "06b8e6370c8fc5ec3fbe5b9783e40b62525c9bc0142d2fca2f905f5661b2dbf8",
"cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "2b34565e626924a00ac2c295fe7f7c97f3ff09015795b27b7180eab46432b71e",
"cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "1e4cdd6622e793bdd24a4accbd57b7b412d1546182c0c56bb2a93fdc6be9c306",
"cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "1c478f1990adc6b43d38807d788892d0cb25feb90de907606abc2ae0647d0a75",
"cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "cd1e70b9077523424f44a2fb8d44659e969dfbeaecdf5d86892d063c90f40a6b",
"cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "504202156d4633639d6556bb0178e59d738e253e24d538f629fb19b769443256",
"cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_most_elements_fille-29691455": "738d81a53c5337d05529caf658468dd426ee5605ed00b5f2f6e6336ff1bc557f",
"cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistratio-1ab28f77": "2828529f840affbe276bd6f9502e90b0afd3bc29b44e0670d33f7f022e05e6ae",
"cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_deregistration]": "602b8de27f60ce36af83c1a95e4e134ddd313a50e8cf658dd231848f80f05770",
"cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-a144c34c": "cedcb7a176b44ad62e019f1e5ffd4241d8ed03e0f33299b22032cc84097415f1",
"cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_stake_registration_-bf5f9707": "3f0ff4d4dcaec4d83245fd25ef9fa6fc868295f114bfa245a956b617a7cbdc0c",
"cardano-test_sign_tx.py::test_cardano_sign_tx[multisig_transaction_with_token_minting]": "e9b77b31991b1c97fda7c40dfdcf4f248cd0066ef7dc0c55e6b5adca6982ac68",
"cardano-test_sign_tx.py::test_cardano_sign_tx[ordinary_transaction_with_token_minting]": "d5cf7e72ec95e18484dbc744b278107cd812df17d921654078ff21a80f971a35",
"cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate]": "dca08d913b2d98079cb053722c9abd4f61d516b27a0b43dd9b3a1392d3cbe92c",
"cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-336f4a44": "7c018146acf4afe1f955913d4059583f4794eefe7f9a6f507990f115f5b3c8ea",
"cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_certificate_wi-d3427614": "c159d03da22af9a65a3f7dd09191128f6af22d14c8baae986bd8ffdd56757b3e",
"cardano-test_sign_tx.py::test_cardano_sign_tx[sample_stake_pool_registration_with_zero_margin]": "68499131f00156779ad409b7dd68a30d6d26d453d0d67722626fb2e3fbc56dbe",
"cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_o-0c37e6dc": "b400bba02438c65aaf0436dc01915fbfd038a548f7652b3e6f6ba7ad1e84ca77",
"cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_address_change_output]": "2876b861a405cd6ff81e303ff63daef04c659e20b73e302dc1de08ce1e196a8d",
"cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_base_script_address_c-466ef44c": "ebb11d74e4e3b3cc2f1f2b8cd8e0cf314de9904d2f92a38e0e6d74bc362fdc6f",
"cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "d7efbcecb8e3964c84d3742199923952cf7d9ad1a1c1a4fe7211c2c0ac999062",
"cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "1d3a4b52c715357f38bc298e315b0dc2423b11f77518800882c240c2b4104900",
"cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "63aef65c699540eb105782c5f3f9590c2035db39e62b8f4f0c544f70d2384225",
"cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "a65b72b77d099af859b7f318d845d4c9e92055007ced2a8df312f8f10ae904bd",
"cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "0b7b8894d599a7e7bffedb2b15fbdaf7a2d69307bafe39b60f6e797ea8c23323",
"cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "1d72d3de0ea2f32c22752ce6d824718daf939677d21a175460e346b86acca834",
"cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_enterprise_address_ch-15518a4c": "ab418e68484442f61a40f5ac71170fe10b8e5a74c99b8ad4805c0c18c32c9536",
"cardano-test_sign_tx.py::test_cardano_sign_tx[simple_transaction_with_pointer_address_change_output]": "3a1ee22b6ef8d1a9d8e76ee7c144112a89d168008f022229a1a114ee220259c8",
"cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_certificate_with_no_p-0bbad967": "8714950594c4db4efba94d3117a026ccc1ceff0018f27ac387f8db36886c99fa",
"cardano-test_sign_tx.py::test_cardano_sign_tx[stake_pool_registration_on_testnet]": "845ddd45596a4dadc5a45362347c91f35a87ca1ec727f34ddcf8ab474a4062a5",
"cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction0]": "1684b2733e8836d68239c2c3641a9f32bdee3c6c3302a2b141eb76d1833a3ffd",
"cardano-test_sign_tx.py::test_cardano_sign_tx[testnet_transaction1]": "6981085b1dbe039a8532eee8cf2c02ad573cc71f3654349ff4284981bfdb4c32",
"cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_auxiliary_data_hash]": "fa15088216ea822f7b3fc65883ff42e3218ab934ce743143ffe8392fc621c416",
"cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "e2eb4e6bce1cfa5c0614d2bf4fd29faf93ab4c3c53a5f8d167fa8af99f34c306",
"cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "c13752ed6af3e9b86ff5dd267f43fec9b3ebfd0d95b53d1f67ae13dfb809974f",
"cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_p-3c7243e1": "9b76ea1a1248e9b00fa219c61c739ec6230668930cd6cd64885eef87a09f03ad",
"cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_base_address_change_output_s-20438873": "84a2b7661128b28c9621810d4dd56c88fa35704d801c6ee5460ae1939341ad43",
"cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_catalyst_registration]": "0164e9a89f4fac1cbbeecd141a818fb6fbdb10815266fce8fc9d3713abad5d13",
"cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "dd8bac0a56edef3ee7d70a831fb17c55b48e6b276f34c1c91c617ebb24666987",
"cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_everything_set_except_pool_r-1e1ef130": "44ed0a7b19cece7ee0b156f213e66ac90010d0a1840623c6c759a184fc68e1be",
"cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration]": "4e600955fc01865e21bf7951417a5dcf387186ef41682dac214dc5fa2198983e",
"cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_and_withdrawal]": "dfa6062272f251ca3e2d42b2afe9ae3c732a6c3636e76269ca0510f06882498c",
"cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_deregistration_with_ac-9ca046f0": "93d4d869232708932572af10da267224798c30bf461809681d46ab3fc1e33090",
@ -68,54 +95,79 @@
"cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_stake_registration_certificate]": "7f73905608c313d47b5fa3d57b3486b1edd1b2fc7055ae1029e51e18bed25543",
"cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_ttl_equal_to_0]": "a5c38d52ef785c3080e68a34b47ab17baa3a290486993fc30916528ac4aba5a9",
"cardano-test_sign_tx.py::test_cardano_sign_tx[transaction_with_validity_interval_start_equal_to_0]": "3fa1b80a0791641e08f0939d651c4bb521131b96ba366ee1d2e86bb0e56cf21c",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "497ffc07c7d68107e75abb969591b680195806310d42975cc54334bb43a05a8d",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "a75c11983485530d569fd49cca2c79134e5cca5b08a7b118aa0ae2d4931646ee",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "00ac3a44650209ab0ddab16091b1ff4e7ba3a9eda01f65c3ab64ff317a64bb23",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "de74f7ba6ccfd84e9d340b1439cd586d5142a14d0a66f9bd511e061c06c191af",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "a75c11983485530d569fd49cca2c79134e5cca5b08a7b118aa0ae2d4931646ee",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "a75c11983485530d569fd49cca2c79134e5cca5b08a7b118aa0ae2d4931646ee",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "310fc413e42d02273940b5ba14e9e260036dfdcb2c3aff534d36774397ee4078",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "310fc413e42d02273940b5ba14e9e260036dfdcb2c3aff534d36774397ee4078",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "310fc413e42d02273940b5ba14e9e260036dfdcb2c3aff534d36774397ee4078",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "310fc413e42d02273940b5ba14e9e260036dfdcb2c3aff534d36774397ee4078",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "095af81ec79e9b510c90d9fa34fed343f3840807190c67bc237af885695ae687",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "095af81ec79e9b510c90d9fa34fed343f3840807190c67bc237af885695ae687",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "095af81ec79e9b510c90d9fa34fed343f3840807190c67bc237af885695ae687",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[duplicate_withdrawal]": "9c24001c5f7458e2317737036814b2dc5f7f2354cdffeaeeca396c902c5840ba",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "095af81ec79e9b510c90d9fa34fed343f3840807190c67bc237af885695ae687",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "481c5e57c460efab0649d74b0e1d2cb6955b97ab875b8869f3362f4dd5732254",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "764f9df88a2cc66139eb2bfdf9e2b65a3f5f32b07c32feb5b2670340c58bdd4d",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "191476f17df4625d288e4eba6e2a48121d16893462fb7904d8c1738eccfbba6b",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "095af81ec79e9b510c90d9fa34fed343f3840807190c67bc237af885695ae687",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "095af81ec79e9b510c90d9fa34fed343f3840807190c67bc237af885695ae687",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "095af81ec79e9b510c90d9fa34fed343f3840807190c67bc237af885695ae687",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "095af81ec79e9b510c90d9fa34fed343f3840807190c67bc237af885695ae687",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "f02619de488cf7790066210b000fad75f211aa00379ebcca4eec6db7a24ffa94",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "095af81ec79e9b510c90d9fa34fed343f3840807190c67bc237af885695ae687",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "095af81ec79e9b510c90d9fa34fed343f3840807190c67bc237af885695ae687",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "095af81ec79e9b510c90d9fa34fed343f3840807190c67bc237af885695ae687",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "095af81ec79e9b510c90d9fa34fed343f3840807190c67bc237af885695ae687",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "095af81ec79e9b510c90d9fa34fed343f3840807190c67bc237af885695ae687",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "095af81ec79e9b510c90d9fa34fed343f3840807190c67bc237af885695ae687",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "ca67ab54a2de3ef9ebddf07d323a48ee86da4f62fedf29e67d1c6b6c4077d8e6",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "095af81ec79e9b510c90d9fa34fed343f3840807190c67bc237af885695ae687",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "095af81ec79e9b510c90d9fa34fed343f3840807190c67bc237af885695ae687",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "b8fd687ddaa498390d470bdb6873ce652f99a20cad53b9f3a0613e2308c23d8c",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "b8fd687ddaa498390d470bdb6873ce652f99a20cad53b9f3a0613e2308c23d8c",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "ffde5a1aa421e8484e9dfaf475ea19e6064a2b8730cfc3907c3d53e224f85695",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "095af81ec79e9b510c90d9fa34fed343f3840807190c67bc237af885695ae687",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "095af81ec79e9b510c90d9fa34fed343f3840807190c67bc237af885695ae687",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "310fc413e42d02273940b5ba14e9e260036dfdcb2c3aff534d36774397ee4078",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "a3c3239aea4d6fd5e0b0f4d5abbd74c69620007ebe2ab9c45403fff83b4795ec",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "095af81ec79e9b510c90d9fa34fed343f3840807190c67bc237af885695ae687",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "095af81ec79e9b510c90d9fa34fed343f3840807190c67bc237af885695ae687",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-64274ac4": "310fc413e42d02273940b5ba14e9e260036dfdcb2c3aff534d36774397ee4078",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_catalyst_registration-11533421": "310fc413e42d02273940b5ba14e9e260036dfdcb2c3aff534d36774397ee4078",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "7d874e848ba72a6780c47146e904a234e9ca0bcdcd11f2aff77c1472c0bf1d35",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "095af81ec79e9b510c90d9fa34fed343f3840807190c67bc237af885695ae687",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "310fc413e42d02273940b5ba14e9e260036dfdcb2c3aff534d36774397ee4078",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "a75c11983485530d569fd49cca2c79134e5cca5b08a7b118aa0ae2d4931646ee",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "a75c11983485530d569fd49cca2c79134e5cca5b08a7b118aa0ae2d4931646ee",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_change_output_path_in_ordinary_tr-805f9bd0": "9e1f554bb74f847e8f09201dda808fd1e0cdb68737515f34d6ad435957671c77",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[1854_input_path_in_ordinary_transaction]": "e3d617a997d511ebd8b9ab75fbf0c92e980a4de59c0461cb9b7e6916542cbf66",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[additional_witness_requests_in_ordinar-9c4f94c0": "e3d617a997d511ebd8b9ab75fbf0c92e980a4de59c0461cb9b7e6916542cbf66",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[all_tx_inputs_must_be_external_(without_path)]": "63aef65c699540eb105782c5f3f9590c2035db39e62b8f4f0c544f70d2384225",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[auxiliary_data_hash_has_incorrect_length]": "0a1ce9fbfcead1f0f1f03b98e2ab719f92949a9b72f5da99097edd5f45e91154",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_input_accoun-863fee7d": "db4afddea8a453edd9d3e283387463d1e89dd79f4265bd7648d67b0cbc691b91",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[byron_to_shelley_transfer_output_accou-5a99fb35": "06b8e6370c8fc5ec3fbe5b9783e40b62525c9bc0142d2fca2f905f5661b2dbf8",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_both_path_and_script_hash]": "0a1ce9fbfcead1f0f1f03b98e2ab719f92949a9b72f5da99097edd5f45e91154",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_invalid_pool_size]": "0a1ce9fbfcead1f0f1f03b98e2ab719f92949a9b72f5da99097edd5f45e91154",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_multisig_path]": "0a1ce9fbfcead1f0f1f03b98e2ab719f92949a9b72f5da99097edd5f45e91154",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_non_staking_path]": "0a1ce9fbfcead1f0f1f03b98e2ab719f92949a9b72f5da99097edd5f45e91154",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[certificate_has_script_hash]": "0a1ce9fbfcead1f0f1f03b98e2ab719f92949a9b72f5da99097edd5f45e91154",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_stake_deregistration-e17db500": "b77d0e79de37f1036e6924e9ce742326a95a191629acf12a0494efcb92e46350",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_and_withdrawal_account_mismatch]": "b77d0e79de37f1036e6924e9ce742326a95a191629acf12a0494efcb92e46350",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_path_larger_than_100]": "b77d0e79de37f1036e6924e9ce742326a95a191629acf12a0494efcb92e46350",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_staking_path_larger_than_100]": "b77d0e79de37f1036e6924e9ce742326a95a191629acf12a0494efcb92e46350",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[change_output_with_script_in_payment_part]": "b77d0e79de37f1036e6924e9ce742326a95a191629acf12a0494efcb92e46350",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_a_different_certificate]": "9e1f554bb74f847e8f09201dda808fd1e0cdb68737515f34d6ad435957671c77",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_multiple_pool_registration_ce-3000d4f0": "9e1f554bb74f847e8f09201dda808fd1e0cdb68737515f34d6ad435957671c77",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[contains_withdrawal]": "9e1f554bb74f847e8f09201dda808fd1e0cdb68737515f34d6ad435957671c77",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[duplicate_withdrawal]": "972f103c0adc6b9742a2407c27085d10a91112cb6b672d0fbcebab014a7892d0",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[fee_is_too_high]": "9e1f554bb74f847e8f09201dda808fd1e0cdb68737515f34d6ad435957671c77",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_change_output_account_mismatch]": "f05c877f623ff47868c4c4cac924d91f8aa4670e36847a2f9ff3b0e5f83a8666",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_stake_deregistration_certifi-b3383de2": "07a708b801b1dcf762286813a2d77032197f844a6ee7bb052c51fba252ade2bf",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[input_and_withdrawal_account_mismatch]": "3ee80eb3e55561412017f58ef686aa634771774a84781818ba05860f2ad22a53",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[invalid_pool_id]": "9e1f554bb74f847e8f09201dda808fd1e0cdb68737515f34d6ad435957671c77",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_protocol_magic_with_testnet_network_id]": "9e1f554bb74f847e8f09201dda808fd1e0cdb68737515f34d6ad435957671c77",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[mainnet_transaction_with_testnet_output]": "9e1f554bb74f847e8f09201dda808fd1e0cdb68737515f34d6ad435957671c77",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[margin_higher_than_1]": "9e1f554bb74f847e8f09201dda808fd1e0cdb68737515f34d6ad435957671c77",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[missing_owner_with_path]": "2dede6a914015cb606124904268abc3cb9034a8e716beb380c62dee29e8a48a4",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_1852_multisi-b7679330": "de16c51797b0e28e766553a31c8ad849c7eb247b0101a1996dba2eea1d59ed2d",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_long_token_m-9fb3cfe5": "31f7a5a1d32c997c61649ace37fdf3aab3d7bf1cb7c73ffa777ba03ff52470ec",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_output_conta-e3b36436": "875ec83057c301a416c4ea3e77b931132cef45fafc7272cd95cd04bb6d8c4e86",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_delega-394991f1": "a1f8001a566bd030249ad2d8c0dea7fbfb38ef2aafd0541c359598e3ca4053ff",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_deregi-43da91d4": "a1f8001a566bd030249ad2d8c0dea7fbfb38ef2aafd0541c359598e3ca4053ff",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_with_stake_regist-84b1254e": "a1f8001a566bd030249ad2d8c0dea7fbfb38ef2aafd0541c359598e3ca4053ff",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[multisig_transaction_without_minting_b-da5ba399": "de16c51797b0e28e766553a31c8ad849c7eb247b0101a1996dba2eea1d59ed2d",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_long_token_m-350c65f4": "9457ac3787f4f677a1105dd1edfce5cf9d9ed8005a601f641683f1fbe2a3a1bd",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_with_token_mintin-bc56f145": "81555dbaf931fb3c0e3f2b07c34860725f37f31f564a0ad37397ae766e4bc21b",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[ordinary_transaction_without_token_min-a128d577": "0915ab658c80a3d29cc74aecfbff25f827c4ce8f1952f454ba59e527f1878be1",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_has_invalid_crc]": "9e1f554bb74f847e8f09201dda808fd1e0cdb68737515f34d6ad435957671c77",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_a_valid_cbor_but_inv-ea3da215": "9e1f554bb74f847e8f09201dda808fd1e0cdb68737515f34d6ad435957671c77",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_invalid_cbor]": "9e1f554bb74f847e8f09201dda808fd1e0cdb68737515f34d6ad435957671c77",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_long]": "9e1f554bb74f847e8f09201dda808fd1e0cdb68737515f34d6ad435957671c77",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_address_is_too_short]": "9e1f554bb74f847e8f09201dda808fd1e0cdb68737515f34d6ad435957671c77",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_has_both_address_and_address_pa-2efc280f": "9e1f554bb74f847e8f09201dda808fd1e0cdb68737515f34d6ad435957671c77",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_total_is_too_high]": "9dd1c4c27d653896c8d9037b5c505cdc6e03f99ef2c6382c6958da8db561bad9",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[output_with_reward_address]": "9e1f554bb74f847e8f09201dda808fd1e0cdb68737515f34d6ad435957671c77",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_belongs_to_differe-e79b6855": "9e1f554bb74f847e8f09201dda808fd1e0cdb68737515f34d6ad435957671c77",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[pool_reward_address_is_a_base_address]": "9e1f554bb74f847e8f09201dda808fd1e0cdb68737515f34d6ad435957671c77",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_asset_name_in_multiasset_token_group]": "48b6dabde455dbae1b2e2c7db66d20506e89158759cfbda04119af934b6b6d9b",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[repeated_policyid_in_multiasset_output]": "48b6dabde455dbae1b2e2c7db66d20506e89158759cfbda04119af934b6b6d9b",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-02b129f8": "9e1f554bb74f847e8f09201dda808fd1e0cdb68737515f34d6ad435957671c77",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-11c8b442": "dca08d913b2d98079cb053722c9abd4f61d516b27a0b43dd9b3a1392d3cbe92c",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-3f8170f6": "dca08d913b2d98079cb053722c9abd4f61d516b27a0b43dd9b3a1392d3cbe92c",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-883e81d5": "bb4c421d35cc9e0217ad96759c5e52ce80680c72fa64aba608bbd45c685ab371",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[sample_stake_pool_registration_certifi-f9976ae8": "9e1f554bb74f847e8f09201dda808fd1e0cdb68737515f34d6ad435957671c77",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_mainnet_transaction_with_testn-af110e3e": "9e1f554bb74f847e8f09201dda808fd1e0cdb68737515f34d6ad435957671c77",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[shelley_testnet_transaction_with_mainn-ba78ab8f": "9e1f554bb74f847e8f09201dda808fd1e0cdb68737515f34d6ad435957671c77",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_account_larger_than_100]": "b77d0e79de37f1036e6924e9ce742326a95a191629acf12a0494efcb92e46350",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[stake_deregistration_certificate_and_w-003a1023": "3c86cde472df3a9460dfbac78584f132f9017dd379f71a0098b508686d50a520",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_protocol_magic_with_mainnet_network_id]": "9e1f554bb74f847e8f09201dda808fd1e0cdb68737515f34d6ad435957671c77",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[testnet_transaction_with_mainnet_output]": "9e1f554bb74f847e8f09201dda808fd1e0cdb68737515f34d6ad435957671c77",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_both_auxiliary_data_b-64274ac4": "b77d0e79de37f1036e6924e9ce742326a95a191629acf12a0494efcb92e46350",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[transaction_with_catalyst_registration-11533421": "b77d0e79de37f1036e6924e9ce742326a95a191629acf12a0494efcb92e46350",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[two_owners_with_path]": "13e202aaf27c6395a2fcb7cfdb2dc6cadb613a23cdd9548f860c8e524bb76b98",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[unsupported_address_type]": "9e1f554bb74f847e8f09201dda808fd1e0cdb68737515f34d6ad435957671c77",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[with_ordinary_transaction_signing_mode]": "b77d0e79de37f1036e6924e9ce742326a95a191629acf12a0494efcb92e46350",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_amount_is_too_large]": "0a1ce9fbfcead1f0f1f03b98e2ab719f92949a9b72f5da99097edd5f45e91154",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_contains_both_path_and_script_hash]": "0a1ce9fbfcead1f0f1f03b98e2ab719f92949a9b72f5da99097edd5f45e91154",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_multisig_path]": "0a1ce9fbfcead1f0f1f03b98e2ab719f92949a9b72f5da99097edd5f45e91154",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_non_staking_path]": "0a1ce9fbfcead1f0f1f03b98e2ab719f92949a9b72f5da99097edd5f45e91154",
"cardano-test_sign_tx.py::test_cardano_sign_tx_failed[withdrawal_has_script_hash]": "0a1ce9fbfcead1f0f1f03b98e2ab719f92949a9b72f5da99097edd5f45e91154",
"ethereum-test_getaddress.py::test_getaddress[ETC]": "095af81ec79e9b510c90d9fa34fed343f3840807190c67bc237af885695ae687",
"ethereum-test_getaddress.py::test_getaddress[GoChain]": "095af81ec79e9b510c90d9fa34fed343f3840807190c67bc237af885695ae687",
"ethereum-test_getaddress.py::test_getaddress[Wanchain]": "095af81ec79e9b510c90d9fa34fed343f3840807190c67bc237af885695ae687",