Test Results for hydra-node
Hydra.SnapshotStrategy
New Snapshot Decision
sends ReqSn given is leader and no snapshot in flight and there's a seen tx
always ReqSn given head has 1 member and there's a seen tx
Details
+++ OK, passed 100 tests:
89% ConfirmedSnapshot
11% InitialSnapshotthere's always a leader for every snapsnot number
Details
+++ OK, passed 100 tests; 16 discarded.
do not send ReqSn when we aren't leader
do not send ReqSn when there is a snapshot in flight
do not send ReqSn when there's no seen transactions
Snapshot Emission
- update seenSnapshot state when sending ReqSn
Hydra.Persistence
PersistenceIncremental
can handle empty files
is consistent after multiple append calls in presence of new-lines
Details
+++ OK, passed 400 tests:
70.0% some item contains a new line
4.2% no items stored
Persistence
can handle empty files
is consistent after save/load roundtrip
Details
+++ OK, passed 100 tests.
Hydra.Party
Ord
is transitive
Details
+++ OK, passed 100 tests; 570 discarded.
is reflexive
Details
+++ OK, passed 100 tests.
is antisymmetric
Details
+++ OK, passed 100 tests.
implements Eq and Ord correspondingly
Details
+++ OK, passed 100 tests.
JSON encoding of Party
allows to encode values with aeson and read them back
Details
+++ OK, passed 100 tests.
produces the same JSON as is found in golden/Party.json
Hydra.Options
Hydra Node RunOptions
validateRunOptions: using more than 4 parties should error out
validateRunOptions: loaded cardano keys needs to match with the hydra keys length
parses with default node-id set
parses --host option given valid IPv4 and IPv6 addresses
parses --port option given valid port number
parses --peer
<host>:<port>
optiondoes parse --peer given ipv6 addresses
parses --monitoring-port option given valid port number
parses --version flag as a parse error
parses --hydra-verification-key option as a filepath
parses --hydra-signing-key option as a filepath
parses --testned-magic option as a number
parses --mainnet option
parses --contestation-period option as a number of seconds
parses --mainnet flag
parses --node-socket as a filepath
parses --cardano-signing-key option as a filepath
parses --cardano-verification-key option as a filepath
parses --ledger-genesis-file as a filepath
parses --ledger-protocol-parameters-file as a filepath
parses --start-chain-from as a pair of slot number and block header hash
parses --start-chain-from 0 as starting from genesis
parses --hydra-scripts-tx-id as a tx id
Details
+++ OK, passed 100 tests.
JSON encoding of RunOptions
allows to encode values with aeson and read them back
Details
+++ OK, passed 100 tests.
produces the same JSON as is found in golden/RunOptions.json
roundtrip parsing & printing
Details
+++ OK, passed 100 tests.
publish-scripts sub-command
- does not parse without any options
- does not parse with some missing option (1)
- does not parse with some missing option (2)
- does not parse with some missing option (3)
- should parse using testnet and all options
- should parse using mainnet and all options
Hydra.Node
- emits a single ReqSn and AckSn as leader, even after multiple ReqTxs
- rotates snapshot leaders
- processes out-of-order AckSn
- notifies client when postTx throws PostTxError
Hydra.Network.Heartbeat
- sends a heartbeat message with local host after 500 ms
- sends Connected when Ping received from other peer
- sends Connected when any message received from other party
- do not send Connected on subsequent messages from already Connected party
- sends Disconnected given no messages has been received from known party within twice heartbeat delay
- stop sending heartbeat message given action sends a message
- restart sending heartbeat messages given last message sent is older than heartbeat delay
Hydra.Network
Serialisation
can roundtrip CBOR encoding/decoding of Hydra Message
Details
+++ OK, passed 100 tests.
JSON encoding of (Message SimpleTx)
allows to encode values with aeson and read them back
Details
+++ OK, passed 100 tests.
produces the same JSON as is found in golden/Message SimpleTx.json
Ouroboros Network
- broadcasts messages to single connected peer
- broadcasts messages between 3 connected peers
Hydra.Model
model should not generate 0 Ada UTxO
Details
+++ OK, passed 10000 tests.
model generates consistent traces
Details
+++ OK, passed 10000 tests.
implementation respects model
Details
+++ OK, passed 100 tests.
Actions (1930 in total):
77.10% NewTx
11.87% Commit
4.82% Seed
4.56% Init
1.66% Abort
Transitions (1930 in total):
77.10% Open -> Open
9.48% Initial -> Initial
4.82% Start -> Idle
4.56% Idle -> Initial
2.38% Initial -> Open
1.66% Initial -> Finalcheck conflict-free liveness
Details
+++ OK, passed 100 tests.
Actions (1166 in total):
53.09% NewTx
15.61% Commit
8.58% StopTheWorld
7.80% Seed
6.86% Init
2.92% Abort
2.57% ObserveConfirmedTx
2.57% Wait
Transitions (1166 in total):
60.81% Open -> Open
14.41% Initial -> Initial
7.80% Start -> Idle
6.86% Idle -> Initial
2.92% Final -> Final
2.92% Initial -> Final
2.57% Initial -> Open
0.94% Idle -> Idle
0.77% Start -> Startcheck head opens if all participants commit
Details
+++ OK, passed 100 tests.
Actions (800 in total):
50.0% Commit
12.5% Init
12.5% ObserveHeadIsOpen
12.5% Seed
12.5% Wait
Transitions (800 in total):
37.5% Initial -> Initial
25.0% Open -> Open
12.5% Idle -> Initial
12.5% Initial -> Open
12.5% Start -> Idle
Hydra.Logging.Monitoring
- provides prometheus metrics from traces
Hydra.Logging
dumps logs to stdout in JSON with timestamp
HydraLog
Details
+++ OK, passed 1 test.
Hydra.Ledger.Simple
validates only correctly built transactions
Details
+++ OK, passed 100 tests.
Hydra.Ledger.Cardano
JSON encoding of (Tx BabbageEra)
allows to encode values with aeson and read them back
Details
+++ OK, passed 100 tests.
produces the same JSON as is found in golden/Tx BabbageEra.json
JSON encoding of (UTxO' (TxOut CtxUTxO BabbageEra))
allows to encode values with aeson and read them back
Details
+++ OK, passed 100 tests.
produces the same JSON as is found in golden/UTxO' (TxOut CtxUTxO BabbageEra).json
JSON encoding of AssetName
allows to encode values with aeson and read them back
Details
+++ OK, passed 100 tests.
produces the same JSON as is found in golden/AssetName.json
Same TxId before/after JSON encoding
Details
+++ OK, passed 100 tests.
Roundtrip to and from Ledger
Details
+++ OK, passed 100 tests.
CBOR encoding of Tx
Details
+++ OK, passed 100 tests.
applies valid transaction
Details
+++ OK, passed 100 tests.
applies valid transaction serialised from JSON
Details
+++ OK, passed 100 tests.
should parse a Cardano.UTxO
should parse a Tx
Evaluate helpers
slotNoFromUTCTime . slotNoToUTCTime === id
Details
+++ OK, passed 100 tests.
Generators
arbitrary @TxIn is reasonably collision resistant
Details
+++ OK, passed 100000 tests.
arbitrary @TxId is reasonably collision resistant
Details
+++ OK, passed 100000 tests.
arbitrary @(VerificationKey PaymentKey) is reasonably collision resistant
Details
+++ OK, passed 100000 tests.
arbitrary @(Hash PaymentKey) is reasonably collision resistant
Details
+++ OK, passed 100000 tests.
genUTxOAlonzo does not generate collapsing values
Details
+++ OK, passed 100 tests.
genUTxOAdaOnlyOfSize does not generate collapsing values
Details
+++ OK, passed 100 tests.
genUTxOFor is reasonably collision resistant
Details
+++ OK, passed 100000 tests.
genOneUTxOFor is reasonably collision resistant
Details
+++ OK, passed 100000 tests.
genTxOut
does generate good values
Details
+++ OK, passed 200 tests:
94.5% has multiple assets
69.5% has datum
52.5% is VK output
47.5% is Script output
5.5% has only ADA
Hydra.HeadLogic
Coordinated Head Protocol
- reports if a requested tx is expired
- waits if a requested tx is not (yet) applicable
- confirms snapshot given it receives AckSn from all parties
- rejects last AckSn if one signature was from a different snapshot
- rejects last AckSn if one signature was from a different key
- rejects last AckSn if one signature was from a completely different message
- waits if we receive a snapshot with not-yet-seen transactions
- waits if we receive an AckSn for an unseen snapshot
- rejects if we receive a too far future snapshot
- waits if we receive a future snapshot while collecting signatures
- acks signed snapshot from the constant leader
- does not ack snapshots from non-leaders
- rejects too-old snapshots
- rejects too-old snapshots when collecting signatures
- rejects too-new snapshots from the leader
- rejects overlapping snapshot requests from the leader
- ignores in-flight ReqTx when closed
- notifies client when it receives a ping
- everyone does collect on last commit after collect com
- cannot observe abort after collect com
- cannot observe collect com after abort
- notify user on head closing and when passing the contestation deadline
- contests when detecting close with old snapshot
- re-contests when detecting contest with old snapshot
Types
JSON encoding of (HeadState SimpleTx)
allows to encode values with aeson and read them back
Details
+++ OK, passed 100 tests.
produces the same JSON as is found in golden/HeadState SimpleTx.json
JSON encoding of (Event SimpleTx)
allows to encode values with aeson and read them back
Details
+++ OK, passed 100 tests.
produces the same JSON as is found in golden/Event SimpleTx.json
Hydra.FireForget
- client can send 'Hail Hydra!' to server
Hydra.Crypto
MultiSignature
is sensitive to order
Details
+++ OK, passed 100 tests; 58 discarded.
aggregate/verifyMultiSignature roundtrip
Details
+++ OK, passed 100 tests.
Signature
show includes escaped hex
can sign arbitrary messages
Details
+++ OK, passed 100 tests; 34 discarded.
sign/verify roundtrip
Details
+++ OK, passed 100 tests.
VerificationKey
- show includes escaped hex
JSON encoding of (VerificationKey HydraKey)
allows to encode values with aeson and read them back
Details
+++ OK, passed 100 tests.
produces the same JSON as is found in golden/VerificationKey HydraKey.json
SigningKey
show includes escaped hex
can be generated when seed exceeds the max seed size for algorithm
can be generated
Details
+++ OK, passed 100 tests; 32 discarded.
arbitrary @(SigningKey HydraKey) is reasonably collision resistant
Details
+++ OK, passed 100000 tests.
Hydra.Chain.Direct.Wallet
newTinyWallet
initialises wallet by querying UTxO
Details
+++ OK, passed 100 tests.
re-queries UTxO from the tip, even on reset
Details
+++ OK, passed 100 tests.
coverFee
balances transaction with fees
Details
+++ OK, passed 100 tests.
applyTxs
only reduces the UTXO set when no address is ours
Details
+++ OK, passed 100 tests.
Seen inputs are consumed and not in the resulting UTXO
Details
+++ OK, passed 100 tests.
genTxsSpending / genUTxO
are well-suited for testing
Details
+++ OK, passed 100 tests:
35% has dependent txs
27% has no tx that are ours
Hydra.Chain.Direct.Tx
collectComTx
cover fee correctly handles redeemers
Details
+++ OK, passed 60 tests (100% No fuel UTxO found).
Ignore InitTx with wrong contestation period
Details
+++ OK, passed 60 tests.
Ignore InitTx with wrong cardano keys
Details
+++ OK, passed 60 tests.
Hydra.Chain.Direct.TimeHandle
can roundtrip currentPointInTime
Details
+++ OK, passed 100 tests.
should convert slot within latest/current era
Hydra.Chain.Direct.State
acceptance
can close & fanout every collected head
Details
+++ OK, passed 200 tests:
78.5% collect failed already
21.5% collect, close and fanout passed
fanout
transaction size is below 16kB
Details
+++ OK, passed 100 tests:
56% Fanout size: 40-58
27% Fanout size: 10-40
10% Fanout size: 0
7% Fanout size: 1-10
52% 6kB
29% 5kB
19% 4kBvalidates within maxTxExecutionUnits
Details
+++ OK, passed 100 tests:
56% Fanout size: 40-58
27% Fanout size: 10-40
10% Fanout size: 0
7% Fanout size: 1-10
contest
transaction size is below 16kB
Details
+++ OK, passed 100 tests (100% 1kB).
Close point (slot) (100 in total):
100% > 0
Contestation period (100 in total):
21% > k blocks
20% k blocks on mainnet
16% < k blocks
12% one month
11% one year
10% one day
10% one weekvalidates within maxTxExecutionUnits
Details
+++ OK, passed 100 tests.
Close point (slot) (100 in total):
100% > 0
Contestation period (100 in total):
21% > k blocks
20% k blocks on mainnet
16% < k blocks
12% one month
11% one year
10% one day
10% one week
close
transaction size is below 16kB
Details
+++ OK, passed 100 tests:
89% ConfirmedSnapshot
11% InitialSnapshot
89% 1kB
11% 0kBvalidates within maxTxExecutionUnits
Details
+++ OK, passed 100 tests:
89% ConfirmedSnapshot
11% InitialSnapshot
collectCom
transaction size is below 16kB
Details
+++ OK, passed 100 tests (100% 1kB).
validates within maxTxExecutionUnits
Details
+++ OK, passed 100 tests.
abort
transaction size is below 16kB
Details
+++ OK, passed 100 tests:
63% Abort after some (but not all) commits
19% Abort immediately, after 0 commits
18% Abort after all commits
52% 4kB
48% 5kBvalidates within maxTxExecutionUnits
Details
+++ OK, passed 100 tests:
63% Abort after some (but not all) commits
19% Abort immediately, after 0 commits
18% Abort after all commitsignore aborts of other heads
Details
+++ OK, passed 100 tests.
commit
transaction size is below 16kB
Details
+++ OK, passed 100 tests:
89% Non-empty commit
11% Empty commit
100% 0kBvalidates within maxTxExecutionUnits
Details
+++ OK, passed 100 tests:
89% Non-empty commit
11% Empty commitconsumes all inputs that are committed
Details
+++ OK, passed 100 tests:
89% Non-empty commit
11% Empty commitcan only be applied / observed once
Details
+++ OK, passed 100 tests:
89% Non-empty commit
11% Empty commitreject committing outputs with byron addresses
Details
+++ OK, passed 100 tests.
reject committing outputs with reference scripts
Details
+++ OK, passed 100 tests.
reject Commits with more than maxMainnetLovelace Lovelace
Details
+++ OK, passed 100 tests.
init
transaction size is below 16kB
Details
+++ OK, passed 100 tests:
75% 2+ parties
25% 1 party
61% 5kB
39% 4kBvalidates within maxTxExecutionUnits
Details
+++ OK, passed 100 tests:
75% 2+ parties
25% 1 partyonly proper head is observed
Details
+++ OK, passed 100 tests.
is not observed if not invited
Details
+++ OK, passed 100 tests.
observeTx
All valid transitions for all possible states can be observed.
Details
+++ OK, passed 100 tests.
ChainTransition (100 in total):
22% Init
18% Close
17% Contest
15% Commit
14% Collect
14% Fanout
Plutus.PubKeyHash
JSON encoding of PubKeyHash
allows to encode values with aeson and read them back
Details
+++ OK, passed 100 tests.
produces the same JSON as is found in golden/PubKeyHash.json
ChainState
JSON encoding of ChainState
allows to encode values with aeson and read them back
Details
+++ OK, passed 100 tests.
produces the same JSON as is found in golden/ChainState.json
Hydra.Chain.Direct.ScriptRegistry
newScriptRegistry (registryUTxO r) === Just r
Details
+++ OK, passed 100 tests.
Hydra.Chain.Direct.Handlers
LocalChainState
can resume from chain state
Details
+++ OK, passed 100 tests:
31% Rollback 2 blocks
18% Rollback 3 blocks
16% Rollback 5 blocks
15% Rollback 4 blocks
11% Rollback 1 blocks
9% Rollback 0 blocks
chainSyncHanlder
roll forward results in Tick events
Details
+++ OK, passed 100 tests.
roll forward fails with outdated TimeHandle
Details
+++ OK, passed 100 tests.
observes transactions onRollForward
Details
+++ OK, passed 100 tests:
22% Commit
20% Contest
18% Init
17% Collect
12% Fanout
11% Closerollbacks state onRollBackward
Details
+++ OK, passed 100 tests:
16% Rollback to: ChainSlot 0 / 2
14% Rollback to: ChainSlot 0 / 3
13% Rollback to: ChainSlot 0 / 4
12% Rollback to: ChainSlot 2 / 2
7% Rollback to: ChainSlot 3 / 3
6% Rollback to: ChainSlot 0 / 5
5% Rollback to: ChainSlot 5 / 5
4% Rollback to: ChainSlot 3 / 4
3% Rollback to: ChainSlot 1 / 2
3% Rollback to: ChainSlot 2 / 3
3% Rollback to: ChainSlot 2 / 5
3% Rollback to: ChainSlot 4 / 5
2% Rollback to: ChainSlot 1 / 4
2% Rollback to: ChainSlot 1 / 5
2% Rollback to: ChainSlot 2 / 4
2% Rollback to: ChainSlot 3 / 5
2% Rollback to: ChainSlot 4 / 4
1% Rollback to: ChainSlot 1 / 3
Hydra.Chain.Direct.Contract
Fanout
is healthy
Details
+++ OK, passed 1 test.
does not survive random adversarial mutations
Details
+++ OK, passed 200 tests.
FanoutMutation (200 in total):
38.0% MutateAddUnexpectedOutput
34.0% MutateChangeOutputValue
28.0% MutateValidityBeforeDeadline
Contest
is healthy
Details
+++ OK, passed 1 test.
does not survive random adversarial mutations
Details
+++ OK, passed 200 tests.
ContestMutation (200 in total):
10.5% MutateHeadIdInOutput
7.5% MutateTokenMintingOrBurning
7.5% NotUpdateDeadlineAlthoughItShould
6.5% MutateOutputContestationPeriod
6.5% NotContinueContract
6.0% MutateSignatureButNotSnapshotNumber
5.0% MutateContesters
5.0% MutateInputContesters
5.0% MutateRequiredSigner
5.0% MutateValidityPastDeadline
4.5% MutatePartiesInOutput
4.5% MutateSnapshotNumberButNotSignature
4.0% ContestFromDifferentHead
4.0% MutateMultipleRequiredSigner
4.0% SnapshotNotSignedByAllParties
3.5% MutateValueInOutput
3.0% MutateNoRequiredSigner
3.0% PushDeadlineAlthoughItShouldNot
2.5% MutateContestUTxOHash
2.5% MutateToNonNewerSnapshot
CloseInitial
is healthy
Details
+++ OK, passed 1 test.
does not survive random adversarial mutations
Details
+++ OK, passed 400 tests.
CloseInitialMutation (400 in total):
100.0% MutateCloseContestationDeadline'
Close
is healthy
Details
+++ OK, passed 1 test.
does not survive random adversarial mutations
Details
+++ OK, passed 200 tests.
CloseMutation (200 in total):
9.0% CloseFromDifferentHead
8.0% MutateContestationDeadline
7.0% MutateSignatureButNotSnapshotNumber
6.5% MutateContesters
6.5% NotContinueContract
6.0% MutateInfiniteUpperBound
6.0% MutateValueInOutput
5.5% MutateInfiniteLowerBound
5.5% MutateMultipleRequiredSigner
5.5% SnapshotNotSignedByAllParties
5.0% MutateHeadIdInOutput
4.5% MutateSnapshotNumberToLessThanEqualZero
4.0% MutateCloseUTxOHash
4.0% MutateNoRequiredSigner
4.0% MutateValidityInterval
3.5% MutatePartiesInOutput
3.5% MutateSnapshotNumberButNotSignature
3.0% MutateRequiredSigner
3.0% MutateTokenMintingOrBurning
CollectCom
is healthy
Details
+++ OK, passed 1 test.
does not survive random adversarial mutations
Details
+++ OK, passed 200 tests.
CollectComMutation (200 in total):
16.0% NotContinueContract
15.0% MutateTokenMintingOrBurning
13.0% ExtractSomeValue
13.0% MutateHeadId
12.0% MutateNumberOfParties
11.5% MutateCommitToInitial
11.5% MutateRequiredSigner
8.0% MutateOpenUTxOHash
Commit
is healthy
Details
+++ OK, passed 1 test.
does not survive random adversarial mutations
Details
+++ OK, passed 100 tests.
CommitMutation (100 in total):
22% NonContinuousHeadId
15% MutateRequiredSigner
14% MutateCommitOutputValue
14% MutateCommittedAddress
13% UsePTFromDifferentHead
11% MutateCommittedValue
11% MutateTokenMintingOrBurning
Abort
is healthy
Details
+++ OK, passed 100 tests.
does not survive random adversarial mutations
Details
+++ OK, passed 200 tests.
AbortMutation (200 in total):
12.5% MutateThreadTokenQuantity
11.5% ReorderCommitOutputs
11.0% BurnOneTokenMore
10.5% DropCollectedInput
10.5% MutateParties
10.0% MutateRequiredSigner
9.5% MutateUseDifferentHeadToAbort
8.5% DropOneCommitOutput
8.0% MintOnAbort
8.0% UseInputFromOtherHead
Init
is healthy
Details
+++ OK, passed 1 test.
does not survive random adversarial mutations
Details
+++ OK, passed 100 tests.
InitMutation (100 in total):
22% MintTooManyTokens
15% MutateDropSeedInput
14% MutateAddAnotherPT
14% MutateDropInitialOutput
13% MutateHeadIdInDatum
11% MutateInitialOutputValue
11% MutateSeedInDatum
Serializing commits
deserializeCommit . serializeCommit === id
Details
+++ OK, passed 100 tests.
TxOut hashing
OffChain.hashUTxO == OnChain.hashTxOuts (on sorted tx outs)
Details
+++ OK, passed 20 tests.
OnChain.hashPreSerializedCommits == OnChain.hashTxOuts (on sorted tx outs)
Details
+++ OK, passed 20 tests.
does care about ordering of TxOut
Details
+++ OK, passed 20 tests; 27 discarded.
Signature validator
verifies single signature produced off-chain
Details
+++ OK, passed 100 tests.
verifies snapshot multi-signature for list of parties and signatures
Details
+++ OK, passed 100 tests.
Hydra.Behavior
rolling back & forward does not make the node crash
- does work for rollbacks past init
- does work for rollbacks past open
Hydra Node Logging
- traces processing of events
- traces handling of effects
JSON encoding of (HydraNodeLog SimpleTx)
allows to encode values with aeson and read them back
Details
+++ OK, passed 100 tests.
produces the same JSON as is found in golden/HydraNodeLog SimpleTx.json
Two participant Head
- only opens the head after all nodes committed
- can abort and re-open a head when one party has not committed
- cannot abort head when commits have been collected
- cannot commit twice
- outputs committed utxo when client requests it
in an open head
sees the head closed by other nodes
valid new transactions are seen by all parties
valid new transactions get snapshotted
depending transactions stay pending and are confirmed in order
depending transactions expire if not applicable in time
sending two conflicting transactions should lead one being confirmed and one expired
multiple transactions get snapshotted
outputs utxo from confirmed snapshot when client requests it
can be finalized by all parties after contestation period
contest automatically when detecting closing with old snapshot
Single participant Head
- accepts Init command
- accepts Commit after successful Init
- not accepts commits when the head is open
- can close an open head
- does not fanout automatically
- does finalize head after contestation period upon command
Sanity tests of test suite
- does not delay for real
Hydra.API.ServerOutput
JSON encoding of (ReasonablySized (TimedServerOutput (Tx BabbageEra)))
allows to encode values with aeson and read them back
Details
+++ OK, passed 100 tests.
produces the same JSON as is found in golden/ReasonablySized (TimedServerOutput (Tx BabbageEra)).json
JSON encoding of (ReasonablySized (ServerOutput (Tx BabbageEra)))
allows to encode values with aeson and read them back
Details
+++ OK, passed 100 tests.
produces the same JSON as is found in golden/ReasonablySized (ServerOutput (Tx BabbageEra)).json
JSON encoding of (ReasonablySized (ServerOutput SimpleTx))
allows to encode values with aeson and read them back
Details
+++ OK, passed 100 tests.
produces the same JSON as is found in golden/ReasonablySized (ServerOutput SimpleTx).json
Hydra.API.Server
ServerSpec
should fail on port in use
greets
sends sendOutput to all connected clients
sends all sendOutput history to all connected clients after a restart
echoes history (past outputs) to client upon reconnection
Details
+++ OK, passed 100 tests:
87% more than one message when reconnecting
8% only one message when reconnecting
5% no message when reconnectingdoes not echo history if client says no
Details
+++ OK, passed 100 tests:
87% more than one message when reconnecting
8% only one message when reconnecting
5% no message when reconnectingoutputs tx as cbor or json depending on the client
removes UTXO from snapshot when clients request it
sequence numbers are continuous and strictly monotonically increasing
Details
+++ OK, passed 100 tests.
displays correctly headStatus and snapshotUtxo in a Greeting message
greets with correct head status and snapshot utxo after restart
sends an error when input cannot be decoded
Hydra.API.ClientInput
FromJSON (ValidatedTx era)
accepts transactions produced via cardano-cli
Details
+++ OK, passed 100 tests.
accepts raw CBOR-base16-encoded transactions
Details
+++ OK, passed 100 tests.
JSON encoding of (ReasonablySized (ClientInput (Tx BabbageEra)))
allows to encode values with aeson and read them back
Details
+++ OK, passed 100 tests.
produces the same JSON as is found in golden/ReasonablySized (ClientInput (Tx BabbageEra)).json
JSON encoding of (ReasonablySized (ClientInput SimpleTx))
allows to encode values with aeson and read them back
Details
+++ OK, passed 100 tests.
produces the same JSON as is found in golden/ReasonablySized (ClientInput SimpleTx).json