Accept tx_init_rbf after the peer sent splice_locked
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Idoneità per principianti
- 62/100
Direzione di ricerca
Start with the SpliceLocked handler, which calls updateRemoteFundingStatus(), and the TxInitRbf handler, which checks getSpliceRbfContext() and the other RBF gates. Check whether d.commitments.lastRemoteLocked_opt holds the latest fundingTxIndex at that point, then reject tx_init_rbf with a Warning and disconnect. Done means a test shows an RBF after the peer's splice_locked is rejected and the normal RBF path still works.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
BOLT 2 requires the receiver of tx_init_rbf to reject it when the sender has already sent splice_locked:
The receiving node:
- ...
- If the sender previously sent
splice_locked:
- MUST send a
warningand close the connection or send anerror
and fail the channel.
Eclair does not enforce this. When the peer sends splice_locked for a pending splice and then tx_init_rbf, Eclair logs setting remoteFundingStatus=Locked for fundingTxId=<splice txid> fundingTxIndex=1, then accepting rbf, replies tx_ack_rbf and starts a new interactive-tx session.
Where
The SpliceLocked handler records the peer's splice_locked via updateRemoteFundingStatus(), which sets remoteFundingStatus = RemoteFundingStatus.Locked on the splice commitment.
The TxInitRbf handler gates the RBF only on: the channel being quiescent, getSpliceRbfContext() finding an unconfirmed, non zero-conf latest funding tx, the feerate being at least minNextFeerate, the liquidity purchase being kept, the attempt limit and spacing, and the liquidity ads request. It never consults remoteFundingStatus, so an RBF that arrives after the peer's splice_locked is accepted.
Impact
Low. No funds at risk: the RBF still runs through InteractiveTxBuilder and the normal signing flow, and nothing invalid is signed. The peer is contradicting itself (it said a splice was locked, then asked to replace it), which a correct receiver rejects up front; Eclair instead proceeds, wasting a round trip and leaving the channel quiesced longer. This is a spec-compliance / robustness gap.
Fix
In the TxInitRbf handler, if d.commitments.lastRemoteLocked_opt has the latest fundingTxIndex, send a Warning and disconnect instead of proceeding.
Discovery
Found while fuzzing splicing with smite.
- Lingua principale
- Scala
- Stelle
- 1.3k
- Fork
- 285
- Merge medio
- 20h 22m
- PR unite (30g)
- 28
Preparare l'ambiente
- Include un Dockerfile o un file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di ACINQ/eclair
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di ACINQ/eclair
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
lichess-org/lila#22324 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
area:ci enhancement priority:low requires-triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
apache/datafusion-comet#7319 · 1 commento ·
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 73/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
canton-network/splice#8087 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
I maintainer di solito rispondono entro 1 giorno