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 Dec 1, 2023
1 parent 0e733c7 commit e8bb330
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 @@ -9962,3 +9962,12 @@ func (c *Core) saveDisabledRateSources() {
c.log.Errorf("Unable to save disabled fiat rate source to database: %v", err)
}
}

// 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 @@ -10450,3 +10450,42 @@ func TestUpdateFeesPaid(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 e8bb330

Please sign in to comment.