Skip to content

Commit ae020c8

Browse files
committed
Move address definitions to payments package
The wallet.NetworkBackend interface is now able to use dcrwallet's own Address interface rather than using dcrutil in the definition. This required moving the interfaces and several implementations to be moved from the wallet package to a new payments package to avoid a package import cycle. The old wallet.KnownAddress interface is renamed to wallet.Address since it is no longer confused with the previous wallet.Address interface (which becomes a payments interface).
1 parent 7806b30 commit ae020c8

File tree

30 files changed

+1141
-823
lines changed

30 files changed

+1141
-823
lines changed

config.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import (
2222
"decred.org/dcrwallet/errors"
2323
"decred.org/dcrwallet/internal/cfgutil"
2424
"decred.org/dcrwallet/internal/netparams"
25+
"decred.org/dcrwallet/payments"
2526
"decred.org/dcrwallet/version"
2627
"decred.org/dcrwallet/wallet"
2728
"decred.org/dcrwallet/wallet/txrules"
@@ -93,7 +94,7 @@ type config struct {
9394
EnableVoting bool `long:"enablevoting" description:"Automatically create votes and revocations"`
9495
PurchaseAccount string `long:"purchaseaccount" description:"Account to autobuy tickets from"`
9596
PoolAddress *cfgutil.AddressFlag `long:"pooladdress" description:"VSP fee address"`
96-
poolAddress dcrutil.Address
97+
poolAddress payments.Address
9798
PoolFees float64 `long:"poolfees" description:"VSP fee percentage (1.00 equals 1.00% fee)"`
9899
GapLimit uint32 `long:"gaplimit" description:"Allowed unused address gap between used addresses of accounts"`
99100
StakePoolColdExtKey string `long:"stakepoolcoldextkey" description:"xpub:maxindex for fee addresses (VSP-only option)"`
@@ -163,7 +164,7 @@ type config struct {
163164
type ticketBuyerOptions struct {
164165
BalanceToMaintainAbsolute *cfgutil.AmountFlag `long:"balancetomaintainabsolute" description:"Amount of funds to keep in wallet when purchasing tickets"`
165166
VotingAddress *cfgutil.AddressFlag `long:"votingaddress" description:"Purchase tickets with voting rights assigned to this address"`
166-
votingAddress dcrutil.Address
167+
votingAddress payments.Address
167168
Limit uint `long:"limit" description:"Buy no more than specified number of tickets per block (0 disables limit)"`
168169
VotingAccount string `long:"votingaccount" description:"Account used to derive addresses specifying voting rights"`
169170
}
@@ -345,15 +346,15 @@ func loadConfig(ctx context.Context) (*config, []string, error) {
345346
StakePoolColdExtKey: defaultStakePoolColdExtKey,
346347
AllowHighFees: defaultAllowHighFees,
347348
RelayFee: cfgutil.NewAmountFlag(txrules.DefaultRelayFeePerKb),
348-
PoolAddress: cfgutil.NewAddressFlag(),
349+
PoolAddress: new(cfgutil.AddressFlag),
349350
AccountGapLimit: defaultAccountGapLimit,
350351
DisableCoinTypeUpgrades: defaultDisableCoinTypeUpgrades,
351352
CircuitLimit: defaultCircuitLimit,
352353

353354
// Ticket Buyer Options
354355
TBOpts: ticketBuyerOptions{
355356
BalanceToMaintainAbsolute: cfgutil.NewAmountFlag(defaultBalanceToMaintainAbsolute),
356-
VotingAddress: cfgutil.NewAddressFlag(),
357+
VotingAddress: new(cfgutil.AddressFlag),
357358
},
358359
}
359360

@@ -468,7 +469,7 @@ func loadConfig(ctx context.Context) (*config, []string, error) {
468469
// Check that no addresses were created for the wrong network
469470
for _, a := range []struct {
470471
flag *cfgutil.AddressFlag
471-
addr *dcrutil.Address
472+
addr *payments.Address
472473
}{
473474
{cfg.PoolAddress, &cfg.poolAddress},
474475
{cfg.TBOpts.VotingAddress, &cfg.TBOpts.votingAddress},

internal/cfgutil/address.go

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,21 @@
11
// Copyright (c) 2015-2016 The btcsuite developers
2-
// Copyright (c) 2016 The Decred developers
2+
// Copyright (c) 2016-2020 The Decred developers
33
// Use of this source code is governed by an ISC
44
// license that can be found in the LICENSE file.
55

66
package cfgutil
77

88
import (
9+
"decred.org/dcrwallet/payments"
910
"github.com/decred/dcrd/dcrutil/v3"
1011
)
1112

12-
// AddressFlag contains a dcrutil.Address and implements the flags.Marshaler and
13-
// Unmarshaler interfaces so it can be used as a config struct field.
13+
// AddressFlag implements the flags.Marshaler and Unmarshaler interfaces
14+
// and returns parsed addresses from the configured values (if any).
1415
type AddressFlag struct {
1516
str string
1617
}
1718

18-
// NewAddressFlag creates an AddressFlag with a default dcrutil.Address.
19-
func NewAddressFlag() *AddressFlag {
20-
return new(AddressFlag)
21-
}
22-
2319
// MarshalFlag satisfies the flags.Marshaler interface.
2420
func (a *AddressFlag) MarshalFlag() (string, error) {
2521
return a.str, nil
@@ -33,9 +29,9 @@ func (a *AddressFlag) UnmarshalFlag(addr string) error {
3329

3430
// Address decodes the address flag for the network described by params.
3531
// If the flag is the empty string, this returns a nil address.
36-
func (a *AddressFlag) Address(params dcrutil.AddressParams) (dcrutil.Address, error) {
32+
func (a *AddressFlag) Address(params dcrutil.AddressParams) (payments.Address, error) {
3733
if a.str == "" {
3834
return nil, nil
3935
}
40-
return dcrutil.DecodeAddress(a.str, params)
36+
return payments.DecodeAddress(a.str, params)
4137
}

internal/loader/loader.go

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
"sync"
1313

1414
"decred.org/dcrwallet/errors"
15+
"decred.org/dcrwallet/payments"
1516
"decred.org/dcrwallet/wallet"
1617
_ "decred.org/dcrwallet/wallet/drivers/bdb" // driver loaded during init
1718
"github.com/decred/dcrd/chaincfg/v3"
@@ -51,9 +52,8 @@ type Loader struct {
5152
// StakeOptions contains the various options necessary for stake mining.
5253
type StakeOptions struct {
5354
VotingEnabled bool
54-
AddressReuse bool
55-
VotingAddress dcrutil.Address
56-
PoolAddress dcrutil.Address
55+
VotingAddress payments.Address
56+
PoolAddress payments.Address
5757
PoolFees float64
5858
StakePoolColdExtKey string
5959
}
@@ -170,7 +170,6 @@ func (l *Loader) CreateWatchingOnlyWallet(ctx context.Context, extendedPubKey st
170170
DB: db,
171171
PubPassphrase: pubPass,
172172
VotingEnabled: so.VotingEnabled,
173-
AddressReuse: so.AddressReuse,
174173
VotingAddress: so.VotingAddress,
175174
PoolAddress: so.PoolAddress,
176175
PoolFees: so.PoolFees,
@@ -261,7 +260,6 @@ func (l *Loader) CreateNewWallet(ctx context.Context, pubPassphrase, privPassphr
261260
DB: db,
262261
PubPassphrase: pubPassphrase,
263262
VotingEnabled: so.VotingEnabled,
264-
AddressReuse: so.AddressReuse,
265263
VotingAddress: so.VotingAddress,
266264
PoolAddress: so.PoolAddress,
267265
PoolFees: so.PoolFees,
@@ -321,7 +319,6 @@ func (l *Loader) OpenExistingWallet(ctx context.Context, pubPassphrase []byte) (
321319
DB: db,
322320
PubPassphrase: pubPassphrase,
323321
VotingEnabled: so.VotingEnabled,
324-
AddressReuse: so.AddressReuse,
325322
VotingAddress: so.VotingAddress,
326323
PoolAddress: so.PoolAddress,
327324
PoolFees: so.PoolFees,

internal/rpc/jsonrpc/marshaling.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ func addressArrayMarshaler(n int, s func(i int) string) json.Marshaler {
3535
})
3636
}
3737

38-
func knownAddressMarshaler(addrs []wallet.KnownAddress) json.Marshaler {
38+
func walletAddressMarshaler(addrs []wallet.Address) json.Marshaler {
3939
return addressArrayMarshaler(len(addrs), func(i int) string {
4040
return addrs[i].String()
4141
})

0 commit comments

Comments
 (0)