Skip to content

Commit

Permalink
add getter for network fee rate
Browse files Browse the repository at this point in the history
  • Loading branch information
buck54321 committed Feb 19, 2024
1 parent 628e2c0 commit 16b674a
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 0 deletions.
9 changes: 9 additions & 0 deletions client/core/core.go
Original file line number Diff line number Diff line change
Expand Up @@ -11132,3 +11132,12 @@ func (c *Core) DisableFundsMixer(assetID uint32) error {
}
return mw.DisableFundsMixer()
}

// NetworkFeeRate generates a network tx fee rate for the specified asset.
// If the wallet implements FeeRater, the wallet will be queried for the
// fee rate. If the wallet is not a FeeRater, local book feed caches are
// checked. If no relevant books are synced, connected DCRDEX servers will be
// queried.
func (c *Core) NetworkFeeRate(assetID uint32) uint64 {
return c.feeSuggestionAny(assetID)
}
39 changes: 39 additions & 0 deletions client/core/core_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -10907,3 +10907,42 @@ func TestFindBond(t *testing.T) {
})
}
}

func TestNetworkFeeRate(t *testing.T) {
rig := newTestRig()
defer rig.shutdown()

assetID := tUTXOAssetA.ID
wallet, tWallet := newTWallet(assetID)
rig.core.wallets[assetID] = wallet

const feeRaterRate = 50
dumbWallet := wallet.Wallet
wallet.Wallet = &TFeeRater{
TXCWallet: tWallet,
feeRate: feeRaterRate,
}
if r := rig.core.NetworkFeeRate(assetID); r != feeRaterRate {
t.Fatalf("FeeRater not working. %d != %d", r, feeRaterRate)
}
wallet.Wallet = dumbWallet

const bookFeedFeeRate = 60
book := newBookie(rig.dc, assetID, tUTXOAssetB.ID, nil, tLogger)
rig.dc.books[tDcrBtcMktName] = book
book.logEpochReport(&msgjson.EpochReportNote{BaseFeeRate: bookFeedFeeRate})
if r := rig.core.NetworkFeeRate(assetID); r != bookFeedFeeRate {
t.Fatalf("Book feed fee rate not working. %d != %d", r, bookFeedFeeRate)
}
delete(rig.dc.books, tDcrBtcMktName)

const serverFeeRate = 70
rig.ws.queueResponse(msgjson.FeeRateRoute, func(msg *msgjson.Message, f msgFunc) error {
resp, _ := msgjson.NewResponse(msg.ID, serverFeeRate, nil)
f(resp)
return nil
})
if r := rig.core.NetworkFeeRate(assetID); r != serverFeeRate {
t.Fatalf("Server fee rate not working. %d != %d", r, serverFeeRate)
}
}

0 comments on commit 16b674a

Please sign in to comment.