Merge pull request #574 from hermeznetwork/feature/apirecommendedfeeuseminfee In API recommended fee, use minFeeUSD as min value
arnau 17317030+arnaucube@users.noreply.github.com
Tue, 23 Feb 2021 17:58:38 +0100
5 files changed,
31 insertions(+),
5 deletions(-)
M
api/api_test.go
→
api/api_test.go
@@ -594,7 +594,7 @@ apiConnConTO := db.NewAPICnnectionController(1, 100*time.Millisecond)
hdbTO := historydb.NewHistoryDB(databaseTO, apiConnConTO) require.NoError(t, err) // L2DB - l2DBTO := l2db.NewL2DB(databaseTO, 10, 1000, 0.0, 24*time.Hour, apiConnConTO) + l2DBTO := l2db.NewL2DB(databaseTO, 10, 1000, 1.0, 24*time.Hour, apiConnConTO) // API apiGinTO := gin.Default()
M
api/state.go
→
api/state.go
@@ -3,6 +3,7 @@
import ( "database/sql" "fmt" + "math" "math/big" "net/http" "time"@@ -297,10 +298,17 @@ feeExistingAccount, err := a.h.GetAvgTxFeeAPI()
if err != nil { return tracerr.Wrap(err) } + var minFeeUSD float64 + if a.l2 != nil { + minFeeUSD = a.l2.MinFeeUSD() + } a.status.Lock() - a.status.RecommendedFee.ExistingAccount = feeExistingAccount - a.status.RecommendedFee.CreatesAccount = createAccountExtraFeePercentage * feeExistingAccount - a.status.RecommendedFee.CreatesAccountAndRegister = createAccountInternalExtraFeePercentage * feeExistingAccount + a.status.RecommendedFee.ExistingAccount = + math.Max(feeExistingAccount, minFeeUSD) + a.status.RecommendedFee.CreatesAccount = + math.Max(createAccountExtraFeePercentage*feeExistingAccount, minFeeUSD) + a.status.RecommendedFee.CreatesAccountAndRegister = + math.Max(createAccountInternalExtraFeePercentage*feeExistingAccount, minFeeUSD) a.status.Unlock() return nil }
M
api/state_test.go
→
api/state_test.go
@@ -149,7 +149,11 @@
func TestUpdateRecommendedFee(t *testing.T) { err := api.UpdateRecommendedFee() assert.NoError(t, err) - assert.Greater(t, api.status.RecommendedFee.ExistingAccount, float64(0)) + var minFeeUSD float64 + if api.l2 != nil { + minFeeUSD = api.l2.MinFeeUSD() + } + assert.Greater(t, api.status.RecommendedFee.ExistingAccount, minFeeUSD) assert.Equal(t, api.status.RecommendedFee.CreatesAccount, api.status.RecommendedFee.ExistingAccount*createAccountExtraFeePercentage) assert.Equal(t, api.status.RecommendedFee.CreatesAccountAndRegister,
M
db/l2db/l2db.go
→
db/l2db/l2db.go
@@ -56,6 +56,12 @@ func (l2db *L2DB) DB() *sqlx.DB {
return l2db.db } +// MinFeeUSD returns the minimum fee in USD that is required to accept txs into +// the pool +func (l2db *L2DB) MinFeeUSD() float64 { + return l2db.minFeeUSD +} + // AddAccountCreationAuth inserts an account creation authorization into the DB func (l2db *L2DB) AddAccountCreationAuth(auth *common.AccountCreationAuth) error { _, err := l2db.db.Exec(
M
node/node.go
→
node/node.go
@@ -649,6 +649,10 @@ }()
n.wg.Add(1) go func() { + // Do an initial update on startup + if err := n.nodeAPI.api.UpdateMetrics(); err != nil { + log.Errorw("API.UpdateMetrics", "err", err) + } for { select { case <-n.ctx.Done():@@ -665,6 +669,10 @@ }()
n.wg.Add(1) go func() { + // Do an initial update on startup + if err := n.nodeAPI.api.UpdateRecommendedFee(); err != nil { + log.Errorw("API.UpdateRecommendedFee", "err", err) + } for { select { case <-n.ctx.Done():