Skip to content

Commit

Permalink
dump: include close tx and related fields
Browse files Browse the repository at this point in the history
Include fields closetx, commit sig, commit height, tapscript root.

That will add the new data to the output of chantools dumpbackup.
  • Loading branch information
guggero authored and starius committed Oct 2, 2024
1 parent 2cae7af commit a386bde
Showing 1 changed file with 43 additions and 0 deletions.
43 changes: 43 additions & 0 deletions dump/dump.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,16 @@ type BackupSingle struct {
LocalChanCfg ChannelConfig
RemoteChanCfg ChannelConfig
ShaChainRootDesc KeyDescriptor
CloseTxInputs *CloseTxInputs
}

// CloseTxInputs is a struct that contains data needed to produce a force close
// transaction from a channel backup as a last resort recovery method.
type CloseTxInputs struct {
CommitTx string
CommitSig string
CommitHeight uint64
TapscriptRoot string
}

// OpenChannel is the information we want to dump from an open channel in lnd's
Expand Down Expand Up @@ -406,7 +416,40 @@ func BackupDump(multi *chanbackup.Multi,
params, single.ShaChainRootDesc,
),
}

single.CloseTxInputs.WhenSome(
func(inputs chanbackup.CloseTxInputs) {
// Serialize unsigned transaction.
var buf bytes.Buffer
err := inputs.CommitTx.Serialize(&buf)
if err != nil {
buf.WriteString("error serializing " +
"commit tx: " + err.Error())
}
tx := buf.Bytes()

// Serialize TapscriptRoot if present.
var tapscriptRoot string
inputs.TapscriptRoot.WhenSome(
func(tr chainhash.Hash) {
tapscriptRoot = tr.String()
},
)

// Put all CloseTxInputs to dump in human
// readable form.
dumpSingles[idx].CloseTxInputs = &CloseTxInputs{
CommitTx: hex.EncodeToString(tx),
CommitSig: hex.EncodeToString(
inputs.CommitSig,
),
CommitHeight: inputs.CommitHeight,
TapscriptRoot: tapscriptRoot,
}
},
)
}

return dumpSingles
}

Expand Down

0 comments on commit a386bde

Please sign in to comment.