arnaucube
arnaucube/hermez-nodePublic Self-hosted repository
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
commit

11a07077460f523781bfa6c0819464c752f198aa

parent

9d08ec6978c4428e8d988ad8926b7bf287b90b5c

5 files changed, 31 insertions(+), 5 deletions(-)

jump to
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():