package lnwire import ( "fmt" "github.com/btcsuite/btcd/btcec" "github.com/btcsuite/btcd/wire" "io" ) type FundingSignComplete struct { ReservationID uint64 TxID *wire.ShaHash FundingTXSigs *[]btcec.Signature } func (c *FundingSignComplete) Decode(r io.Reader, pver uint32) error { //ReservationID (0/8) //TxID //FundingTXSigs // First byte is number of FundingTxSigs // Sorted list of the requester's input signatures // (originally provided in the Funding Request) err := readElements(r, false, &c.ReservationID, &c.TxID, &c.FundingTXSigs) if err != nil { return err } return nil } //Creates a new FundingSignComplete func NewFundingSignComplete() *FundingSignComplete { return &FundingSignComplete{} } //Serializes the item from the FundingSignComplete struct //Writes the data to w func (c *FundingSignComplete) Encode(w io.Writer, pver uint32) error { //ReservationID (8) //CommitSig //FundingTxSigs err := writeElements(w, false, c.ReservationID, c.TxID, c.FundingTXSigs) if err != nil { return err } return nil } func (c *FundingSignComplete) Command() uint32 { return CmdFundingSignComplete } func (c *FundingSignComplete) MaxPayloadLength(uint32) uint32 { //8 (base size) + 32 + (73maxSigSize*127maxInputs) return 9311 } //Makes sure the struct data is valid (e.g. no negatives or invalid pkscripts) func (c *FundingSignComplete) Validate() error { //We're good! return nil } func (c *FundingSignComplete) String() string { var sigs string for i, in := range *c.FundingTXSigs { sigs += fmt.Sprintf("\n Slice\t%d\n", i) sigs += fmt.Sprintf("\tSig\t%x\n", in.Serialize()) } return fmt.Sprintf("\n--- Begin FundingSignComplete ---\n") + fmt.Sprintf("ReservationID:\t\t%d\n", c.ReservationID) + fmt.Sprintf("TxID\t\t%s\n", c.TxID.String()) + fmt.Sprintf("FundingTxSigs:") + sigs + fmt.Sprintf("--- End FundingSignComplete ---\n") }