From 58900a70333a11a903cf9fe3f29e6a5c309cb000 Mon Sep 17 00:00:00 2001 From: Steven Allen Date: Thu, 9 Mar 2023 13:17:17 -0800 Subject: [PATCH] feat: mempool: Reduce minimum replace fee from 1.25x to 1.1x (#10416) However, we're leaving the default at 1.25x for backwards compatibility, for now. Also: 1. Actually use the configured replace fee ratio. 2. Store said ratios as percentages instead of floats. 1.25, or 1+1/(2^2), can be represented as a float. 1.1, or 1 + 1/(2 * 5), cannot. fixes #10415 --- api/docgen/docgen.go | 4 ++ build/openrpc/full.json.gz | Bin 33618 -> 33620 bytes chain/messagepool/config.go | 14 ++++--- chain/messagepool/messagepool.go | 14 ++++--- chain/types/mpool.go | 2 +- chain/types/percent.go | 39 ++++++++++++++++++++ chain/types/percent_test.go | 34 +++++++++++++++++ cli/mpool.go | 9 ++++- cli/mpool_test.go | 7 +++- documentation/en/api-v0-methods.md | 4 +- documentation/en/api-v1-unstable-methods.md | 4 +- 11 files changed, 112 insertions(+), 19 deletions(-) create mode 100644 chain/types/percent.go create mode 100644 chain/types/percent_test.go diff --git a/api/docgen/docgen.go b/api/docgen/docgen.go index 3793f2fc2..10e9c2fce 100644 --- a/api/docgen/docgen.go +++ b/api/docgen/docgen.go @@ -401,6 +401,10 @@ func init() { FromBlock: pstring("2301220"), Address: []ethtypes.EthAddress{ethaddr}, }) + + percent := types.Percent(123) + addExample(percent) + addExample(&percent) } func GetAPIType(name, pkg string) (i interface{}, t reflect.Type, permStruct []reflect.Type) { diff --git a/build/openrpc/full.json.gz b/build/openrpc/full.json.gz index 0aaef1effe5c0418ff34300bf0984baa65ab8ead..64a555389d85bd25842fb733c6fccda66c10332f 100644 GIT binary patch delta 11263 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 delta 11261 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 1.00). +type Percent int64 + +func (p Percent) String() string { + abs := p + sign := "" + if abs < 0 { + abs = -abs + sign = "-" + } + return fmt.Sprintf(`%s%d.%d`, sign, abs/100, abs%100) +} + +func (p Percent) MarshalJSON() ([]byte, error) { + return []byte(p.String()), nil +} + +func (p *Percent) UnmarshalJSON(b []byte) error { + flt, err := strconv.ParseFloat(string(b)+"e2", 64) + if err != nil { + return xerrors.Errorf("unable to parse ratio %s: %w", string(b), err) + } + if math.Trunc(flt) != flt { + return xerrors.Errorf("ratio may only have two decimals: %s", string(b)) + } + *p = Percent(flt) + return nil +} diff --git a/chain/types/percent_test.go b/chain/types/percent_test.go new file mode 100644 index 000000000..7364c2447 --- /dev/null +++ b/chain/types/percent_test.go @@ -0,0 +1,34 @@ +package types + +import ( + "fmt" + "testing" + + "github.com/stretchr/testify/require" +) + +func TestPercent(t *testing.T) { + for _, tc := range []struct { + p Percent + s string + }{ + {100, "1.0"}, + {111, "1.11"}, + {12, "0.12"}, + {-12, "-0.12"}, + {1012, "10.12"}, + {-1012, "-10.12"}, + {0, "0.0"}, + } { + tc := tc + t.Run(fmt.Sprintf("%d <> %s", tc.p, tc.s), func(t *testing.T) { + m, err := tc.p.MarshalJSON() + require.NoError(t, err) + require.Equal(t, tc.s, string(m)) + var p Percent + require.NoError(t, p.UnmarshalJSON([]byte(tc.s))) + require.Equal(t, tc.p, p) + }) + } + +} diff --git a/cli/mpool.go b/cli/mpool.go index e098806cb..c83fb4b61 100644 --- a/cli/mpool.go +++ b/cli/mpool.go @@ -461,7 +461,12 @@ var MpoolReplaceCmd = &cli.Command{ msg := found.Message if cctx.Bool("auto") { - minRBF := messagepool.ComputeMinRBF(msg.GasPremium) + cfg, err := api.MpoolGetConfig(ctx) + if err != nil { + return xerrors.Errorf("failed to lookup the message pool config: %w", err) + } + + defaultRBF := messagepool.ComputeRBF(msg.GasPremium, cfg.ReplaceByFeeRatio) var mss *lapi.MessageSendSpec if cctx.IsSet("fee-limit") { @@ -482,7 +487,7 @@ var MpoolReplaceCmd = &cli.Command{ return xerrors.Errorf("failed to estimate gas values: %w", err) } - msg.GasPremium = big.Max(retm.GasPremium, minRBF) + msg.GasPremium = big.Max(retm.GasPremium, defaultRBF) msg.GasFeeCap = big.Max(retm.GasFeeCap, msg.GasPremium) mff := func() (abi.TokenAmount, error) { diff --git a/cli/mpool_test.go b/cli/mpool_test.go index 01b49d4b3..0aa055ba3 100644 --- a/cli/mpool_test.go +++ b/cli/mpool_test.go @@ -15,6 +15,7 @@ import ( "github.com/filecoin-project/go-state-types/big" "github.com/filecoin-project/lotus/api" + "github.com/filecoin-project/lotus/chain/messagepool" "github.com/filecoin-project/lotus/chain/types" "github.com/filecoin-project/lotus/chain/types/mock" "github.com/filecoin-project/lotus/chain/wallet" @@ -298,6 +299,7 @@ func TestReplace(t *testing.T) { mockApi.EXPECT().ChainGetMessage(ctx, sm.Cid()).Return(&sm.Message, nil), mockApi.EXPECT().ChainHead(ctx).Return(nil, nil), mockApi.EXPECT().MpoolPending(ctx, types.EmptyTSK).Return([]*types.SignedMessage{sm}, nil), + mockApi.EXPECT().MpoolGetConfig(ctx).Return(messagepool.DefaultConfig(), nil), // use gomock.any to match the message in expected api calls // since the replace function modifies the message between calls, it would be pointless to try to match the exact argument mockApi.EXPECT().GasEstimateMessageGas(ctx, gomock.Any(), &mss, types.EmptyTSK).Return(&sm.Message, nil), @@ -342,6 +344,7 @@ func TestReplace(t *testing.T) { gomock.InOrder( mockApi.EXPECT().ChainHead(ctx).Return(nil, nil), mockApi.EXPECT().MpoolPending(ctx, types.EmptyTSK).Return([]*types.SignedMessage{sm}, nil), + mockApi.EXPECT().MpoolGetConfig(ctx).Return(messagepool.DefaultConfig(), nil), // use gomock.any to match the message in expected api calls // since the replace function modifies the message between calls, it would be pointless to try to match the exact argument mockApi.EXPECT().GasEstimateMessageGas(ctx, gomock.Any(), &mss, types.EmptyTSK).Return(&sm.Message, nil), @@ -538,7 +541,7 @@ func TestConfig(t *testing.T) { t.Fatal(err) } - mpoolCfg := &types.MpoolConfig{PriorityAddrs: []address.Address{senderAddr}, SizeLimitHigh: 1234567, SizeLimitLow: 6, ReplaceByFeeRatio: 0.25} + mpoolCfg := &types.MpoolConfig{PriorityAddrs: []address.Address{senderAddr}, SizeLimitHigh: 1234567, SizeLimitLow: 6, ReplaceByFeeRatio: types.Percent(25)} gomock.InOrder( mockApi.EXPECT().MpoolGetConfig(ctx).Return(mpoolCfg, nil), ) @@ -566,7 +569,7 @@ func TestConfig(t *testing.T) { t.Fatal(err) } - mpoolCfg := &types.MpoolConfig{PriorityAddrs: []address.Address{senderAddr}, SizeLimitHigh: 234567, SizeLimitLow: 3, ReplaceByFeeRatio: 0.33} + mpoolCfg := &types.MpoolConfig{PriorityAddrs: []address.Address{senderAddr}, SizeLimitHigh: 234567, SizeLimitLow: 3, ReplaceByFeeRatio: types.Percent(33)} gomock.InOrder( mockApi.EXPECT().MpoolSetConfig(ctx, mpoolCfg).Return(nil), ) diff --git a/documentation/en/api-v0-methods.md b/documentation/en/api-v0-methods.md index d254c14e7..b73244fa8 100644 --- a/documentation/en/api-v0-methods.md +++ b/documentation/en/api-v0-methods.md @@ -2879,7 +2879,7 @@ Response: ], "SizeLimitHigh": 123, "SizeLimitLow": 123, - "ReplaceByFeeRatio": 12.3, + "ReplaceByFeeRatio": 1.23, "PruneCooldown": 60000000000, "GasLimitOverestimation": 12.3 } @@ -3167,7 +3167,7 @@ Inputs: ], "SizeLimitHigh": 123, "SizeLimitLow": 123, - "ReplaceByFeeRatio": 12.3, + "ReplaceByFeeRatio": 1.23, "PruneCooldown": 60000000000, "GasLimitOverestimation": 12.3 } diff --git a/documentation/en/api-v1-unstable-methods.md b/documentation/en/api-v1-unstable-methods.md index 5516acb44..aedfbfce0 100644 --- a/documentation/en/api-v1-unstable-methods.md +++ b/documentation/en/api-v1-unstable-methods.md @@ -3882,7 +3882,7 @@ Response: ], "SizeLimitHigh": 123, "SizeLimitLow": 123, - "ReplaceByFeeRatio": 12.3, + "ReplaceByFeeRatio": 1.23, "PruneCooldown": 60000000000, "GasLimitOverestimation": 12.3 } @@ -4170,7 +4170,7 @@ Inputs: ], "SizeLimitHigh": 123, "SizeLimitLow": 123, - "ReplaceByFeeRatio": 12.3, + "ReplaceByFeeRatio": 1.23, "PruneCooldown": 60000000000, "GasLimitOverestimation": 12.3 }