Increase message size limit
Add test Signed-off-by: Jakub Sztandera <kubuxu@protocol.ai>
This commit is contained in:
parent
f0a2e97cb5
commit
0cd0faa6fb
@ -665,7 +665,7 @@ func (mp *MessagePool) Push(ctx context.Context, m *types.SignedMessage) (cid.Ci
|
|||||||
|
|
||||||
func (mp *MessagePool) checkMessage(m *types.SignedMessage) error {
|
func (mp *MessagePool) checkMessage(m *types.SignedMessage) error {
|
||||||
// big messages are bad, anti DOS
|
// big messages are bad, anti DOS
|
||||||
if m.Size() > 32*1024 {
|
if m.Size() > 64*1024 {
|
||||||
return xerrors.Errorf("mpool message too large (%dB): %w", m.Size(), ErrMessageTooBig)
|
return xerrors.Errorf("mpool message too large (%dB): %w", m.Size(), ErrMessageTooBig)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -14,12 +14,14 @@ import (
|
|||||||
|
|
||||||
builtin2 "github.com/filecoin-project/specs-actors/v2/actors/builtin"
|
builtin2 "github.com/filecoin-project/specs-actors/v2/actors/builtin"
|
||||||
|
|
||||||
|
"github.com/filecoin-project/lotus/api"
|
||||||
"github.com/filecoin-project/lotus/chain/messagepool/gasguess"
|
"github.com/filecoin-project/lotus/chain/messagepool/gasguess"
|
||||||
"github.com/filecoin-project/lotus/chain/types"
|
"github.com/filecoin-project/lotus/chain/types"
|
||||||
"github.com/filecoin-project/lotus/chain/types/mock"
|
"github.com/filecoin-project/lotus/chain/types/mock"
|
||||||
"github.com/filecoin-project/lotus/chain/wallet"
|
"github.com/filecoin-project/lotus/chain/wallet"
|
||||||
_ "github.com/filecoin-project/lotus/lib/sigs/bls"
|
_ "github.com/filecoin-project/lotus/lib/sigs/bls"
|
||||||
_ "github.com/filecoin-project/lotus/lib/sigs/secp"
|
_ "github.com/filecoin-project/lotus/lib/sigs/secp"
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
@ -257,6 +259,72 @@ func TestMessagePool(t *testing.T) {
|
|||||||
assertNonce(t, mp, sender, 2)
|
assertNonce(t, mp, sender, 2)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestCheckMessageBig(t *testing.T) {
|
||||||
|
tma := newTestMpoolAPI()
|
||||||
|
|
||||||
|
w, err := wallet.NewWallet(wallet.NewMemKeyStore())
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
from, err := w.WalletNew(context.Background(), types.KTBLS)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
tma.setBalance(from, 1000e9)
|
||||||
|
|
||||||
|
ds := datastore.NewMapDatastore()
|
||||||
|
|
||||||
|
mp, err := New(tma, ds, "mptest", nil)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
to := mock.Address(1001)
|
||||||
|
|
||||||
|
{
|
||||||
|
msg := &types.Message{
|
||||||
|
To: to,
|
||||||
|
From: from,
|
||||||
|
Value: types.NewInt(1),
|
||||||
|
Nonce: 0,
|
||||||
|
GasLimit: 50000000,
|
||||||
|
GasFeeCap: types.NewInt(100),
|
||||||
|
GasPremium: types.NewInt(1),
|
||||||
|
Params: make([]byte, 41<<10), // 41KiB payload
|
||||||
|
}
|
||||||
|
|
||||||
|
sig, err := w.WalletSign(context.TODO(), from, msg.Cid().Bytes(), api.MsgMeta{})
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
sm := &types.SignedMessage{
|
||||||
|
Message: *msg,
|
||||||
|
Signature: *sig,
|
||||||
|
}
|
||||||
|
mustAdd(t, mp, sm)
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
msg := &types.Message{
|
||||||
|
To: to,
|
||||||
|
From: from,
|
||||||
|
Value: types.NewInt(1),
|
||||||
|
Nonce: 0,
|
||||||
|
GasLimit: 50000000,
|
||||||
|
GasFeeCap: types.NewInt(100),
|
||||||
|
GasPremium: types.NewInt(1),
|
||||||
|
Params: make([]byte, 64<<10), // 64KiB payload
|
||||||
|
}
|
||||||
|
|
||||||
|
sig, err := w.WalletSign(context.TODO(), from, msg.Cid().Bytes(), api.MsgMeta{})
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
sm := &types.SignedMessage{
|
||||||
|
Message: *msg,
|
||||||
|
Signature: *sig,
|
||||||
|
}
|
||||||
|
err = mp.Add(context.TODO(), sm)
|
||||||
|
assert.ErrorIs(t, err, ErrMessageTooBig)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestMessagePoolMessagesInEachBlock(t *testing.T) {
|
func TestMessagePoolMessagesInEachBlock(t *testing.T) {
|
||||||
tma := newTestMpoolAPI()
|
tma := newTestMpoolAPI()
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user