mirror of
https://github.com/lightningnetwork/lnd.git
synced 2026-08-13 12:32:48 +02:00
Migrate all btcd dependencies to the new per-package v2 modules (wire/v2, txscript/v2, chaincfg/v2, chainhash/v2, btcutil/v2, psbt/v2, btcec/v2) introduced by btcd v0.26.0, and pin the tagged ecosystem versions: btcwallet v0.17.0, neutrino v0.18.0 and lightning-onion v1.4.0. The bulk of the import rewrite was produced by the scripted diff from https://github.com/btcsuite/btcd/pull/2547 (followed by 'make rpc'). The address symbols that moved out of btcutil into the new address package are imported as btcaddr where a local "address" variable would otherwise shadow them. The go.mod/go.sum updates and the remaining manual compilation fixes are folded into this single commit so it builds on its own (the migration was previously split into a reproducible scripted-diff plus follow-ups, intended to be squashed on merge).
80 lines
1.8 KiB
Go
80 lines
1.8 KiB
Go
package migration1
|
|
|
|
import (
|
|
"encoding/binary"
|
|
"fmt"
|
|
"image/color"
|
|
"io"
|
|
"strconv"
|
|
|
|
"github.com/btcsuite/btcd/wire/v2"
|
|
)
|
|
|
|
var (
|
|
// byteOrder defines the preferred byte order, which is Big Endian.
|
|
byteOrder = binary.BigEndian
|
|
)
|
|
|
|
// WriteOutpoint writes an outpoint to the passed writer using the minimal
|
|
// amount of bytes possible.
|
|
func WriteOutpoint(w io.Writer, o *wire.OutPoint) error {
|
|
if _, err := w.Write(o.Hash[:]); err != nil {
|
|
return err
|
|
}
|
|
if err := binary.Write(w, byteOrder, o.Index); err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
// ReadOutpoint reads an outpoint from the passed reader that was previously
|
|
// written using the WriteOutpoint struct.
|
|
func ReadOutpoint(r io.Reader, o *wire.OutPoint) error {
|
|
if _, err := io.ReadFull(r, o.Hash[:]); err != nil {
|
|
return err
|
|
}
|
|
if err := binary.Read(r, byteOrder, &o.Index); err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
// EncodeHexColor takes a color and returns it in hex code format.
|
|
func EncodeHexColor(color color.RGBA) string {
|
|
return fmt.Sprintf("#%02x%02x%02x", color.R, color.G, color.B)
|
|
}
|
|
|
|
// DecodeHexColor takes a hex color string like "#rrggbb" and returns a
|
|
// color.RGBA.
|
|
func DecodeHexColor(hex string) (color.RGBA, error) {
|
|
if len(hex) != 7 || hex[0] != '#' {
|
|
return color.RGBA{}, fmt.Errorf("invalid hex color string: %s",
|
|
hex)
|
|
}
|
|
|
|
r, err := strconv.ParseUint(hex[1:3], 16, 8)
|
|
if err != nil {
|
|
return color.RGBA{}, fmt.Errorf("invalid red component: %w",
|
|
err)
|
|
}
|
|
|
|
g, err := strconv.ParseUint(hex[3:5], 16, 8)
|
|
if err != nil {
|
|
return color.RGBA{}, fmt.Errorf("invalid green component: %w",
|
|
err)
|
|
}
|
|
|
|
b, err := strconv.ParseUint(hex[5:7], 16, 8)
|
|
if err != nil {
|
|
return color.RGBA{}, fmt.Errorf("invalid blue component: %w",
|
|
err)
|
|
}
|
|
|
|
return color.RGBA{
|
|
R: uint8(r),
|
|
G: uint8(g),
|
|
B: uint8(b),
|
|
}, nil
|
|
}
|