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
After making incremental decommits possible in #1057, we realized that the original specification is not preventing "empty decommit" requests. That means, that anyone can request to decommit nothing. While this is no safety problem, it can lead to annoying situations where one participant spams the head with empty decrements (on the L1).
What
Instead of detecting the spam, we want to prevent this situation altogether by rejecting ReqDec requests whose transactions don't have any outputs.
This PR adds "incremental decommits" to the Hydra Head protocol, which
allows users to take funds out of an open Head.
- New API endpoint `/decommit` which accepts a "Decommit transaction",
that spends some UTxO and whatever outputs it produces will be made
available on the L1. This can be also done through a new `Decommit`
client input and new server outputs `DecommitRequested`,
`DecommitApproved` and `DecommitFinalized`, as well as `DecommitInvalid`
to inform about status of the decommit.
- Decommits are first approved in a snapshot on L2 via a new network
message `ReqDec`, before a new `decrementTx` can be posted and observed
on-chain.
- Only one decommit can be processed at a given time.
- Update documentation and added how-to about how to use this.
- Acknowledged specification changes by "clearing" of
$\textcolor{red}{\\red}$ areas covered by this implementation in the
specification.
- End-to-end test covering the main scenario of decommitting funds.
- Added mutation tests for Decrement, Close and Contest to cover all
on-chain-verification changes.
- Enhanced `TxTrace` tests to test decrements with various snapshots and
their interaction with close/contest and fanout of a head.
---
* [x] CHANGELOG updated
* [x] Documentation updated
* [x] Haddocks updated
* [x] New TODOs explained hereafter
![image](https://github.com/user-attachments/assets/eed47f06-d519-42cb-a897-98397066fdd9)
- Two FIXMEs covered by #1524
- TODO in HeadLogic coverd by #1502
- TODO in tx-cost how we could improve the benchmark output (not
crucial)
- TODO in head logic about rollbacks .. actually something we need to
consider with #199 too
Follow-up of #1057
Why
After making incremental decommits possible in #1057, we realized that the original specification is not preventing "empty decommit" requests. That means, that anyone can request to decommit nothing. While this is no safety problem, it can lead to annoying situations where one participant spams the head with empty decrements (on the L1).
What
Instead of detecting the spam, we want to prevent this situation altogether by rejecting
ReqDec
requests whose transactions don't have any outputs.How
This is a
BehaviorSpec
test that covers this:We might want to ensure though that also requests of other nodes are rejected.
The text was updated successfully, but these errors were encountered: