You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When a Hydra head is opened, a part of the underlying ledger state gets locked up and made available off-chain to a small group of participants. While this is already quite a "small world" to process transactions, we encountered use cases where it would make sense to even open further heads with different/even smaller groups of participants on parts of the L2 state into L3 heads. Hydra doom is one of those use cases where fragmentation of ledger state is not a problem as the Head ledger is merely used to off-chain check transactions of game sessions.
There are still some liveness caveats about opening a Head in another head, but this would not be scope of this feature.
Implement a new Hydra.Chain.Inception component that uses hydra-client
Make prepareTxToPost re-usable by generalizing concepts like ChainContext, ScriptRegistry and TimeHandle to work for both, Direct and Inception (cardano) chain backends
This could mean that we unify the concept of IsChainTx (or so) which is instantiated using hydra-tx tx construction for Cardano Tx
Re-organize Hydra.Options to be able to re-use --hydra-scripts-tx-id, --cardano-signing-key etc. between Direct and Inception chain backends
TBD
We had a Tick server output at some point - what happened?
What should happen with /POST/cardano-transactionsendpoint on an inception node? (i.e. if it can't send a tx to L1 at all)
What happens if the L2 hydra-node disconnects from L3 hydra-node; how should it catch up? Can it catch up? For any L3 Head closures on L2 Idea: Use the API history?
The text was updated successfully, but these errors were encountered:
Updates `SnapshotConfirmed` server output to contain full transactions
(instead of only transaction ids). This also updates TxValid to only
include the transaction id, such that transactions are only submitted
once per client still. Hence, this will not change the overall bandwidth
requirement on websocket clients, but will make their implementation
significantly easier.
Before, if clients wanted to act on transactions this was a lot easier
to do upon seing `TxValid`. However, this was only confirming local
ledger application and not consensus / enforcability of this transaction
onto the L1.
The new API suggests to do the right thing by making it straight-forward
to act upon seeing a transaction in a `SnapshotConfirmed`.
**TBD:** Changed `ServerOutput` field name `snapshotNumber` -> `number`
to be consistent with `version` (and the internal Haskell data type
names). Does anyone like `version` -> `snapshotVersion` better as an
alternative?
**TBD:** The field holding the transaction id in `TxValid` is called
`transactionId` now. The transaction (envelop) itself though contains
`txId`. This feels a bit inconsistent, which of the two should be
renamed?
This will also make #1612 easier (is mentioned as a sub-task there).
---
* [x] CHANGELOG updated
* [x] Documentation updated
* [x] Haddocks updated
* [x] No new TODOs introduced
Why
When a Hydra head is opened, a part of the underlying ledger state gets locked up and made available off-chain to a small group of participants. While this is already quite a "small world" to process transactions, we encountered use cases where it would make sense to even open further heads with different/even smaller groups of participants on parts of the L2 state into L3 heads. Hydra doom is one of those use cases where fragmentation of ledger state is not a problem as the Head ledger is merely used to off-chain check transactions of game sessions.
There are still some liveness caveats about opening a Head in another head, but this would not be scope of this feature.
What
This is a follow-up to a previous spike #1590
hydra-node
can be pointed to anotherhydra-node
API endpoint instead of--node-socket
of a directly connectedcardano-node
SnapshotConfirmed
server outputs of the underlying nodehydra-tui
can commit into such a head by using thehydra-node
API of the underlying node.How
Tick
server output to inform clients of time evolutionSnapshotConfirmed
contains fullconfirmed
transactions, whileTxValid
only contains atxId
API: Full transaction in SnapshotConfirmed #1685hydra-client
package that allows for/protocol-parameters
,/snapshot/utxo
using Haskell typesClientInput
messages, receive and subscribe to someServerOutput
messagesHydra.Chain.Direct
(see early commits of Spike / Not merge: Inception chain component #1603)Hydra.Chain.Inception
component that useshydra-client
prepareTxToPost
re-usable by generalizing concepts likeChainContext
,ScriptRegistry
andTimeHandle
to work for both,Direct
andInception
(cardano) chain backendsIsChainTx
(or so) which is instantiated usinghydra-tx
tx construction for CardanoTx
Hydra.Options
to be able to re-use--hydra-scripts-tx-id
,--cardano-signing-key
etc. betweenDirect
andInception
chain backendsTBD
Tick
server output at some point - what happened?SnapshotConfirmed
fine? We moved away from it when we also did ReqSn only sends transaction ids #728NewTx
, we could create a synchronous tx submission API.hydra-doom
/POST/cardano-transactions
endpoint on an inception node? (i.e. if it can't send a tx to L1 at all)The text was updated successfully, but these errors were encountered: