Skip to content

Commit

Permalink
upgrade dcrwallet to v4 fixing ticket buying bug
Browse files Browse the repository at this point in the history
  • Loading branch information
dmigwi committed Aug 18, 2023
1 parent 5e1eee9 commit 5f2fb01
Show file tree
Hide file tree
Showing 65 changed files with 973 additions and 2,099 deletions.
6 changes: 3 additions & 3 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ module github.com/crypto-power/cryptopower
go 1.19

require (
decred.org/dcrwallet/v3 v3.0.1
decred.org/dcrwallet/v4 v4.0.0-20230809150859-a87fa843495e
gioui.org v0.1.0
github.com/JohannesKaufmann/html-to-markdown v1.2.1
github.com/PuerkitoBio/goquery v1.6.1
Expand Down Expand Up @@ -37,6 +37,8 @@ require (
github.com/decred/dcrdata/v8 v8.0.0-20230617164141-fa4d8e1b4e8e
github.com/decred/politeia v1.4.0
github.com/decred/slog v1.2.0
github.com/decred/vspd/client/v2 v2.0.0
github.com/decred/vspd/types/v2 v2.0.0
github.com/dgraph-io/badger v1.6.2
github.com/gen2brain/beeep v0.0.0-20220402123239-6a3042f4b71a
github.com/gomarkdown/markdown v0.0.0-20220817224203-2206187d3406
Expand Down Expand Up @@ -100,8 +102,6 @@ require (
github.com/decred/dcrd/txscript/v3 v3.0.0 // indirect
github.com/decred/dcrtime v0.0.0-20191018193024-8d8b4ef0458e // indirect
github.com/decred/go-socks v1.1.0 // indirect
github.com/decred/vspd/client/v2 v2.0.0 // indirect
github.com/decred/vspd/types/v2 v2.0.0 // indirect
github.com/dgraph-io/ristretto v0.0.2 // indirect
github.com/dustin/go-humanize v1.0.1-0.20210705192016-249ff6c91207 // indirect
github.com/fogleman/gg v1.3.0 // indirect
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -79,8 +79,8 @@ decred.org/cspp/v2 v2.1.0 h1:HeHb9+BFqrBaAPc6CsPiUpPFmC1uyBM2mJZUAbUXkRw=
decred.org/cspp/v2 v2.1.0/go.mod h1:9nO3bfvCheOPIFZw5f6sRQ42CjBFB5RKSaJ9Iq6G4MA=
decred.org/dcrwallet v1.7.0 h1:U/ew00YBdUlx3rJAynt2OdKDgGzBKK4O89FijBq8iVg=
decred.org/dcrwallet v1.7.0/go.mod h1:hNOGyvH53gWdgFB601/ubGRzCPfPtWnEVAi9Grs90y4=
decred.org/dcrwallet/v3 v3.0.1 h1:+OLi+u/MvKc3Ubcnf19oyG/a5hJ/qp4OtezdiQZnLIs=
decred.org/dcrwallet/v3 v3.0.1/go.mod h1:a+R8BZIOKVpWVPat5VZoBWNh/cnIciwcRkPtrzfS/tw=
decred.org/dcrwallet/v4 v4.0.0-20230809150859-a87fa843495e h1:Y1f5xYRQi7qMzLYifvAOplMhgHiKxtWWzd1psXqsS6A=
decred.org/dcrwallet/v4 v4.0.0-20230809150859-a87fa843495e/go.mod h1:0+CchVf/baDYJ0tlDjtEzAFsvYcwWRm0eo1+Lf7Z1as=
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
eliasnaur.com/font v0.0.0-20230308162249-dd43949cb42d h1:ARo7NCVvN2NdhLlJE9xAbKweuI9L6UgfTbYb0YwPacY=
gioui.org v0.1.0 h1:fEDY5A4+epOdzjCBYSUC4BzvjWqsjfqf5D6mskbthOs=
Expand Down
2 changes: 1 addition & 1 deletion libwallet/assets/btc/accounts.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import (
"strconv"
"time"

"decred.org/dcrwallet/v3/errors"
"decred.org/dcrwallet/v4/errors"
"github.com/btcsuite/btcd/btcutil"
"github.com/btcsuite/btcd/chaincfg"
"github.com/btcsuite/btcwallet/waddrmgr"
Expand Down
2 changes: 1 addition & 1 deletion libwallet/assets/btc/address.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package btc
import (
"fmt"

"decred.org/dcrwallet/v3/errors"
"decred.org/dcrwallet/v4/errors"
"github.com/btcsuite/btcd/btcutil"
"github.com/crypto-power/cryptopower/libwallet/utils"
)
Expand Down
2 changes: 1 addition & 1 deletion libwallet/assets/btc/feerate.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import (
"strconv"
"sync"

"decred.org/dcrwallet/v3/errors"
"decred.org/dcrwallet/v4/errors"
"github.com/btcsuite/btcd/btcutil"
sharedW "github.com/crypto-power/cryptopower/libwallet/assets/wallet"
"github.com/crypto-power/cryptopower/libwallet/utils"
Expand Down
2 changes: 1 addition & 1 deletion libwallet/assets/btc/rescan.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import (
"sync/atomic"
"time"

"decred.org/dcrwallet/v3/errors"
"decred.org/dcrwallet/v4/errors"
"github.com/btcsuite/btcd/btcutil"
"github.com/btcsuite/btcwallet/chain"
"github.com/btcsuite/btcwallet/waddrmgr"
Expand Down
2 changes: 1 addition & 1 deletion libwallet/assets/btc/sync.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import (
"sync/atomic"
"time"

"decred.org/dcrwallet/v3/errors"
"decred.org/dcrwallet/v4/errors"
"github.com/btcsuite/btcwallet/chain"
sharedW "github.com/crypto-power/cryptopower/libwallet/assets/wallet"
"github.com/crypto-power/cryptopower/libwallet/utils"
Expand Down
2 changes: 1 addition & 1 deletion libwallet/assets/btc/txandblocknotifications.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import (
"encoding/json"
"sync/atomic"

"decred.org/dcrwallet/v3/errors"
"decred.org/dcrwallet/v4/errors"
sharedW "github.com/crypto-power/cryptopower/libwallet/assets/wallet"
"github.com/crypto-power/cryptopower/libwallet/utils"
)
Expand Down
2 changes: 1 addition & 1 deletion libwallet/assets/btc/txauthor.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import (
"sync"
"time"

"decred.org/dcrwallet/v3/errors"
"decred.org/dcrwallet/v4/errors"
"github.com/btcsuite/btcd/btcutil"
"github.com/btcsuite/btcd/chaincfg/chainhash"
"github.com/btcsuite/btcd/txscript"
Expand Down
2 changes: 1 addition & 1 deletion libwallet/assets/btc/wallet.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import (
"sync"
"time"

"decred.org/dcrwallet/v3/errors"
"decred.org/dcrwallet/v4/errors"
"github.com/btcsuite/btcd/btcec/v2/ecdsa"
"github.com/btcsuite/btcd/btcutil"
"github.com/btcsuite/btcd/btcutil/gcs"
Expand Down
6 changes: 3 additions & 3 deletions libwallet/assets/dcr/account_mixer.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ import (
"errors"
"net"

"decred.org/dcrwallet/v3/ticketbuyer"
w "decred.org/dcrwallet/v3/wallet"
"decred.org/dcrwallet/v3/wallet/udb"
"decred.org/dcrwallet/v4/ticketbuyer"
w "decred.org/dcrwallet/v4/wallet"
"decred.org/dcrwallet/v4/wallet/udb"
sharedW "github.com/crypto-power/cryptopower/libwallet/assets/wallet"
"github.com/crypto-power/cryptopower/libwallet/internal/certs"
"github.com/crypto-power/cryptopower/libwallet/utils"
Expand Down
4 changes: 2 additions & 2 deletions libwallet/assets/dcr/accounts.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ import (
"fmt"
"strconv"

"decred.org/dcrwallet/v3/errors"
w "decred.org/dcrwallet/v3/wallet"
"decred.org/dcrwallet/v4/errors"
w "decred.org/dcrwallet/v4/wallet"
"github.com/crypto-power/cryptopower/libwallet/addresshelper"
sharedW "github.com/crypto-power/cryptopower/libwallet/assets/wallet"
"github.com/crypto-power/cryptopower/libwallet/utils"
Expand Down
4 changes: 2 additions & 2 deletions libwallet/assets/dcr/address.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ package dcr
import (
"fmt"

"decred.org/dcrwallet/v3/errors"
w "decred.org/dcrwallet/v3/wallet"
"decred.org/dcrwallet/v4/errors"
w "decred.org/dcrwallet/v4/wallet"
"github.com/crypto-power/cryptopower/libwallet/utils"
"github.com/decred/dcrd/txscript/v4/stdaddr"
)
Expand Down
32 changes: 14 additions & 18 deletions libwallet/assets/dcr/consensus.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,7 @@ import (
"sort"
"strings"

"decred.org/dcrwallet/v3/errors"
w "decred.org/dcrwallet/v3/wallet"
"decred.org/dcrwallet/v4/errors"

"github.com/crypto-power/cryptopower/libwallet/utils"
"github.com/decred/dcrd/chaincfg/chainhash"
Expand Down Expand Up @@ -111,22 +110,19 @@ func (asset *Asset) SetVoteChoice(agendaID, choiceID, hash, passphrase string) e
return err
}

currentChoice := w.AgendaChoice{
AgendaID: agendaID,
ChoiceID: "abstain", // default to abstain as current choice if not found in wallet
choice, ok := choices[agendaID]
if ok && choice == strings.ToLower(choiceID) {
// Do not set the same choice again
return nil
}

for i := range choices {
if choices[i].AgendaID == agendaID {
currentChoice.ChoiceID = choices[i].ChoiceID
break
}
if !ok {
// Default to abstain if no previous choice existed
choice = "abstain"
}

newChoice := w.AgendaChoice{
AgendaID: agendaID,
ChoiceID: strings.ToLower(choiceID),
}
currentChoice := map[string]string{agendaID: choice}
newChoice := map[string]string{agendaID: strings.ToLower(choiceID)}

_, err = asset.Internal().DCR.SetAgendaChoices(ctx, ticketHash, newChoice)
if err != nil {
Expand Down Expand Up @@ -181,7 +177,7 @@ func (asset *Asset) SetVoteChoice(agendaID, choiceID, hash, passphrase string) e
firstErr = err
continue // try next tHash
}
err = vspClient.SetVoteChoice(ctx, tHash, []w.AgendaChoice{newChoice}, nil, nil)
err = vspClient.SetVoteChoice(ctx, tHash, newChoice, nil, nil)
if err != nil && firstErr == nil {
firstErr = err
continue // try next tHash
Expand Down Expand Up @@ -245,9 +241,9 @@ func (asset *Asset) AllVoteAgendas(hash string, newestFirst bool) ([]*Agenda, er
d := &deployments[i]

votingPreference := "abstain" // assume abstain, if we have the saved pref, it'll be updated below
for c := range choices {
if choices[c].AgendaID == d.Vote.Id {
votingPreference = choices[c].ChoiceID
for agendaID, choiceID := range choices {
if agendaID == d.Vote.Id {
votingPreference = choiceID
break
}
}
Expand Down
2 changes: 1 addition & 1 deletion libwallet/assets/dcr/decodetx.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package dcr
import (
"fmt"

w "decred.org/dcrwallet/v3/wallet"
w "decred.org/dcrwallet/v4/wallet"
sharedW "github.com/crypto-power/cryptopower/libwallet/assets/wallet"
"github.com/crypto-power/cryptopower/libwallet/txhelper"
"github.com/decred/dcrd/blockchain/stake/v5"
Expand Down
4 changes: 2 additions & 2 deletions libwallet/assets/dcr/message.go
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package dcr

import (
"decred.org/dcrwallet/v3/errors"
w "decred.org/dcrwallet/v3/wallet"
"decred.org/dcrwallet/v4/errors"
w "decred.org/dcrwallet/v4/wallet"
"github.com/crypto-power/cryptopower/libwallet/utils"
"github.com/decred/dcrd/txscript/v4/stdaddr"
)
Expand Down
4 changes: 2 additions & 2 deletions libwallet/assets/dcr/rescan.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ import (
"math"
"time"

"decred.org/dcrwallet/v3/errors"
w "decred.org/dcrwallet/v3/wallet"
"decred.org/dcrwallet/v4/errors"
w "decred.org/dcrwallet/v4/wallet"
sharedW "github.com/crypto-power/cryptopower/libwallet/assets/wallet"
"github.com/crypto-power/cryptopower/libwallet/utils"
)
Expand Down
8 changes: 4 additions & 4 deletions libwallet/assets/dcr/sync.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@ import (
"strings"
"sync"

"decred.org/dcrwallet/v3/errors"
"decred.org/dcrwallet/v3/p2p"
"decred.org/dcrwallet/v3/spv"
w "decred.org/dcrwallet/v3/wallet"
"decred.org/dcrwallet/v4/errors"
"decred.org/dcrwallet/v4/p2p"
"decred.org/dcrwallet/v4/spv"
w "decred.org/dcrwallet/v4/wallet"
sharedW "github.com/crypto-power/cryptopower/libwallet/assets/wallet"
"github.com/crypto-power/cryptopower/libwallet/utils"
"github.com/decred/dcrd/addrmgr/v2"
Expand Down
2 changes: 1 addition & 1 deletion libwallet/assets/dcr/syncnotification.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import (
"math"
"time"

"decred.org/dcrwallet/v3/spv"
"decred.org/dcrwallet/v4/spv"
sharedW "github.com/crypto-power/cryptopower/libwallet/assets/wallet"
"golang.org/x/sync/errgroup"
)
Expand Down
48 changes: 24 additions & 24 deletions libwallet/assets/dcr/ticket.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,15 @@ import (
"sync"
"time"

"decred.org/dcrwallet/v3/errors"
w "decred.org/dcrwallet/v3/wallet"
"decred.org/dcrwallet/v4/errors"
w "decred.org/dcrwallet/v4/wallet"
sharedW "github.com/crypto-power/cryptopower/libwallet/assets/wallet"
"github.com/crypto-power/cryptopower/libwallet/internal/vsp"
"github.com/crypto-power/cryptopower/libwallet/utils"
"github.com/decred/dcrd/blockchain/stake/v5"
"github.com/decred/dcrd/chaincfg/chainhash"
"github.com/decred/dcrd/dcrutil/v4"
"github.com/decred/dcrd/wire"
"github.com/decred/vspd/types/v2"
)

func (asset *Asset) TotalStakingRewards() (int64, error) {
Expand Down Expand Up @@ -127,9 +128,9 @@ func (asset *Asset) PurchaseTickets(account, numTickets int32, vspHost, passphra
Count: int(numTickets),
SourceAccount: uint32(account),
MinConf: asset.RequiredConfirmations(),
VSPFeeProcess: vspClient.FeePercentage,
VSPFeePercent: vspClient.FeePercentage,
VSPFeePaymentProcess: func(ctx context.Context, ticketHash *chainhash.Hash, feeTx *wire.MsgTx) error {
return vspClient.Process(ctx, ticketHash, feeTx, asset.GetvspPolicy(account))
return vspClient.Process(ctx, ticketHash, feeTx)
},
}

Expand All @@ -152,17 +153,6 @@ func (asset *Asset) PurchaseTickets(account, numTickets int32, vspHost, passphra
return ticketsResponse.TicketHashes, err
}

// GetvspPolicy creates the VSP policy using the account number provided.
// Uses the user-specified instructions for processing fee payments
// on a ticket, rather than some default policy.
func (asset *Asset) GetvspPolicy(account int32) vsp.Policy {
return vsp.Policy{
MaxFee: 0.2e8,
FeeAcct: uint32(account),
ChangeAcct: uint32(account),
}
}

// VSPTicketInfo returns vsp-related info for a given ticket. Returns an error
// if the ticket is not yet assigned to a VSP.
func (asset *Asset) VSPTicketInfo(hash string) (*VSPTicketInfo, error) {
Expand Down Expand Up @@ -204,7 +194,22 @@ func (asset *Asset) VSPTicketInfo(hash string) (*VSPTicketInfo, error) {

ticketInfo.Client = vspClient

vspTicketStatus, err := vspClient.GetTicketStatus(ctx, ticketHash)
txs, _, err := asset.Internal().DCR.GetTransactionsByHashes(ctx, []*chainhash.Hash{ticketHash})
if err != nil {
return nil, err
}

commitmentAddr, err := stake.AddrFromSStxPkScrCommitment(txs[0].TxOut[1].PkScript, asset.chainParams)
if err != nil {
return nil, fmt.Errorf("failed to extract commitment address from %v: %w",
ticketHash, err)
}

req := types.TicketStatusRequest{
TicketHash: ticketHash.String(),
}

vspTicketStatus, err := vspClient.TicketStatus(ctx, req, commitmentAddr)
if err != nil {
log.Warnf("unable to get vsp ticket: %s Error: %v", hash, err)
return ticketInfo, nil
Expand Down Expand Up @@ -452,19 +457,14 @@ func (asset *Asset) buyTicket(ctx context.Context, passphrase string, sdiff dcru
// Count is 1 to prevent combining multiple split outputs in one tx,
// which can be used to link the tickets eventually purchased with the
// split outputs.
vspPolicy := vsp.Policy{
MaxFee: 0.2e8,
FeeAcct: uint32(cfg.PurchaseAccount),
ChangeAcct: uint32(cfg.PurchaseAccount),
}
request := &w.PurchaseTicketsRequest{
Count: 1,
SourceAccount: uint32(cfg.PurchaseAccount),
Expiry: expiry,
MinConf: asset.RequiredConfirmations(),
VSPFeeProcess: cfg.VspClient.FeePercentage,
VSPFeePercent: cfg.VspClient.FeePercentage,
VSPFeePaymentProcess: func(ctx context.Context, ticketHash *chainhash.Hash, feeTx *wire.MsgTx) error {
return cfg.VspClient.Process(ctx, ticketHash, feeTx, vspPolicy)
return cfg.VspClient.Process(ctx, ticketHash, feeTx)
},
}
// Mixed split buying through CoinShuffle++, if configured.
Expand Down
2 changes: 1 addition & 1 deletion libwallet/assets/dcr/treasury.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import (
"encoding/hex"
"fmt"

"decred.org/dcrwallet/v3/errors"
"decred.org/dcrwallet/v4/errors"
"github.com/crypto-power/cryptopower/libwallet/utils"

"github.com/decred/dcrd/blockchain/stake/v5"
Expand Down
2 changes: 1 addition & 1 deletion libwallet/assets/dcr/txandblocknotifications.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package dcr
import (
"encoding/json"

"decred.org/dcrwallet/v3/errors"
"decred.org/dcrwallet/v4/errors"
sharedW "github.com/crypto-power/cryptopower/libwallet/assets/wallet"
"github.com/crypto-power/cryptopower/libwallet/utils"
)
Expand Down
10 changes: 5 additions & 5 deletions libwallet/assets/dcr/txauthor.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@ import (
"fmt"
"time"

"decred.org/dcrwallet/v3/errors"
w "decred.org/dcrwallet/v3/wallet"
"decred.org/dcrwallet/v3/wallet/txauthor"
"decred.org/dcrwallet/v3/wallet/txrules"
"decred.org/dcrwallet/v3/wallet/txsizes"
"decred.org/dcrwallet/v4/errors"
w "decred.org/dcrwallet/v4/wallet"
"decred.org/dcrwallet/v4/wallet/txauthor"
"decred.org/dcrwallet/v4/wallet/txrules"
"decred.org/dcrwallet/v4/wallet/txsizes"
sharedW "github.com/crypto-power/cryptopower/libwallet/assets/wallet"
"github.com/crypto-power/cryptopower/libwallet/txhelper"
"github.com/crypto-power/cryptopower/libwallet/utils"
Expand Down
Loading

0 comments on commit 5f2fb01

Please sign in to comment.