lnwallet: remove p2pkh as an address type, wallet is now pure segwit
In this commit, we modify the mechanics of the wallet to only allow derivation of segwit-like addresses. Additionally, the ConfirmedBalance method on the WalletController now only has a single argument, as it’s assumed that the wallet is itself only concerned with segwit outputs.
This commit is contained in:
parent
4b20e805fe
commit
a144018e98
@ -206,28 +206,17 @@ func (b *BtcWallet) Stop() error {
|
|||||||
// final sum.
|
// final sum.
|
||||||
//
|
//
|
||||||
// This is a part of the WalletController interface.
|
// This is a part of the WalletController interface.
|
||||||
func (b *BtcWallet) ConfirmedBalance(confs int32, witness bool) (btcutil.Amount, error) {
|
func (b *BtcWallet) ConfirmedBalance(confs int32) (btcutil.Amount, error) {
|
||||||
var balance btcutil.Amount
|
var balance btcutil.Amount
|
||||||
|
|
||||||
if witness {
|
witnessOutputs, err := b.ListUnspentWitness(confs)
|
||||||
witnessOutputs, err := b.ListUnspentWitness(confs)
|
if err != nil {
|
||||||
if err != nil {
|
return 0, err
|
||||||
return 0, err
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, witnessOutput := range witnessOutputs {
|
|
||||||
balance += witnessOutput.Value
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
outputSum, err := b.wallet.CalculateBalance(confs)
|
|
||||||
if err != nil {
|
|
||||||
return 0, err
|
|
||||||
}
|
|
||||||
|
|
||||||
balance = outputSum
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO(roasbeef): remove witness only distinction?
|
for _, witnessOutput := range witnessOutputs {
|
||||||
|
balance += witnessOutput.Value
|
||||||
|
}
|
||||||
|
|
||||||
return balance, nil
|
return balance, nil
|
||||||
}
|
}
|
||||||
|
@ -20,19 +20,16 @@ var ErrNotMine = errors.New("the passed output doesn't belong to the wallet")
|
|||||||
type AddressType uint8
|
type AddressType uint8
|
||||||
|
|
||||||
const (
|
const (
|
||||||
// UnknownAddressType represents an output with an unknown or non-standard
|
|
||||||
// script.
|
|
||||||
UnknownAddressType AddressType = iota
|
|
||||||
|
|
||||||
// WitnessPubKey represents a p2wkh address.
|
// WitnessPubKey represents a p2wkh address.
|
||||||
WitnessPubKey
|
WitnessPubKey AddressType = iota
|
||||||
|
|
||||||
// NestedWitnessPubKey represents a p2sh output which is itself a
|
// NestedWitnessPubKey represents a p2sh output which is itself a
|
||||||
// nested p2wkh output.
|
// nested p2wkh output.
|
||||||
NestedWitnessPubKey
|
NestedWitnessPubKey
|
||||||
|
|
||||||
// PubKeyHash represents a regular p2pkh output.
|
// UnknownAddressType represents an output with an unknown or non-standard
|
||||||
PubKeyHash
|
// script.
|
||||||
|
UnknownAddressType
|
||||||
)
|
)
|
||||||
|
|
||||||
// ErrDoubleSpend is returned from PublishTransaction in case the
|
// ErrDoubleSpend is returned from PublishTransaction in case the
|
||||||
@ -127,14 +124,18 @@ type WalletController interface {
|
|||||||
// that have at least confs confirmations. If confs is set to zero,
|
// that have at least confs confirmations. If confs is set to zero,
|
||||||
// then all unspent outputs, including those currently in the mempool
|
// then all unspent outputs, including those currently in the mempool
|
||||||
// will be included in the final sum.
|
// will be included in the final sum.
|
||||||
ConfirmedBalance(confs int32, witness bool) (btcutil.Amount, error)
|
//
|
||||||
|
// NOTE: Only witness outputs should be included in the computation of
|
||||||
|
// the total spendable balance of the wallet. We require this as only
|
||||||
|
// witness inputs can be used for funding channels.
|
||||||
|
ConfirmedBalance(confs int32) (btcutil.Amount, error)
|
||||||
|
|
||||||
// NewAddress returns the next external or internal address for the
|
// NewAddress returns the next external or internal address for the
|
||||||
// wallet dictated by the value of the `change` parameter. If change is
|
// wallet dictated by the value of the `change` parameter. If change is
|
||||||
// true, then an internal address should be used, otherwise an external
|
// true, then an internal address should be used, otherwise an external
|
||||||
// address should be returned. The type of address returned is dictated
|
// address should be returned. The type of address returned is dictated
|
||||||
// by the wallet's capabilities, and may be of type: p2sh, p2pkh,
|
// by the wallet's capabilities, and may be of type: p2sh, p2wkh,
|
||||||
// p2wkh, p2wsh, etc.
|
// p2wsh, etc.
|
||||||
NewAddress(addrType AddressType, change bool) (btcutil.Address, error)
|
NewAddress(addrType AddressType, change bool) (btcutil.Address, error)
|
||||||
|
|
||||||
// GetPrivKey retrieves the underlying private key associated with the
|
// GetPrivKey retrieves the underlying private key associated with the
|
||||||
|
Loading…
Reference in New Issue
Block a user