Remove AddBundle from api

This commit is contained in:
Jinsuk Park 2024-03-13 10:49:38 -07:00
parent 80d21f6c44
commit 0b871ae9fd
No known key found for this signature in database
GPG key ID: 55BC6A66FEF320E4
7 changed files with 95 additions and 141 deletions

View file

@ -156,18 +156,6 @@ func (b *Builder) addBundle(bundle *suavextypes.Bundle, env *environment) (*suav
}, nil
}
func (b *Builder) AddBundle(bundle *suavextypes.Bundle) (*suavextypes.SimulateBundleResult, error) {
snap := b.env.copy()
result, err := b.addBundle(bundle, snap)
if err != nil {
return result, nil
}
b.env = snap
return result, nil
}
func (b *Builder) AddBundles(bundles []*suavextypes.Bundle) ([]*suavextypes.SimulateBundleResult, error) {
var results []*suavextypes.SimulateBundleResult
snap := b.env.copy()

View file

@ -74,114 +74,10 @@ func TestBuilder_AddTxns_Simple(t *testing.T) {
require.Equal(t, big.NewInt(2000), builder.env.state.GetBalance(testUserAddress))
}
func TestBuilder_AddBundle_Simple(t *testing.T) {
t.Parallel()
config, backend := newMockBuilderConfig(t)
builder, err := NewBuilder(config, &BuilderArgs{})
require.NoError(t, err)
tx1 := backend.newRandomTx(false)
tx2 := backend.newRandomTxWithNonce(1)
bundle := &suavextypes.Bundle{
Txs: []*types.Transaction{tx1, tx2},
}
res, err := builder.AddBundle(bundle)
require.NoError(t, err)
require.True(t, res.Success)
require.Len(t, res.SimulateTransactionResults, 2)
require.Equal(t, big.NewInt(2000), builder.env.state.GetBalance(testUserAddress))
}
func TestBuilder_AddBundle_RevertHashes(t *testing.T) {
t.Parallel()
config, backend := newMockBuilderConfig(t)
builder, err := NewBuilder(config, &BuilderArgs{})
require.NoError(t, err)
tx1 := backend.newRandomTx(false)
tx2 := backend.newRandomTxWithNonce(3) // fails with nonce too high
bundle := &suavextypes.Bundle{
Txs: []*types.Transaction{tx1, tx2},
}
res, err := builder.AddBundle(bundle)
require.NoError(t, err)
require.False(t, res.Success)
require.Len(t, res.SimulateTransactionResults, 2)
require.True(t, res.SimulateTransactionResults[0].Success)
require.False(t, res.SimulateTransactionResults[1].Success)
require.Equal(t, big.NewInt(0), builder.env.state.GetBalance(testUserAddress))
bundle.RevertingHashes = []common.Hash{tx2.Hash()}
res, err = builder.AddBundle(bundle)
require.NoError(t, err)
require.True(t, res.Success)
require.Len(t, res.SimulateTransactionResults, 2)
require.True(t, res.SimulateTransactionResults[0].Success)
require.False(t, res.SimulateTransactionResults[1].Success)
require.Equal(t, big.NewInt(1000), builder.env.state.GetBalance(testUserAddress))
}
func TestBuilder_AddBundle_InvalidParams(t *testing.T) {
t.Parallel()
config, backend := newMockBuilderConfig(t)
// set builder target block number to 10
backend.insertRandomBlocks(9)
builder, err := NewBuilder(config, &BuilderArgs{})
require.Equal(t, uint64(10), builder.env.header.Number.Uint64())
require.NoError(t, err)
tx1 := backend.newRandomTx(false)
tx2 := backend.newRandomTx(false)
bundle := &suavextypes.Bundle{
Txs: []*types.Transaction{tx1, tx2},
BlockNumber: big.NewInt(20),
}
res, err := builder.AddBundle(bundle)
require.NoError(t, err)
require.False(t, res.Success)
require.Equal(t, ErrInvalidBlockNumber.Error(), res.Error)
require.Len(t, res.SimulateTransactionResults, 0)
require.Equal(t, big.NewInt(0), builder.env.state.GetBalance(testUserAddress))
bundle = &suavextypes.Bundle{
Txs: []*types.Transaction{tx1, tx2},
BlockNumber: big.NewInt(5),
MaxBlock: big.NewInt(6),
}
res, err = builder.AddBundle(bundle)
require.NoError(t, err)
require.False(t, res.Success)
require.Equal(t, ErrExceedsMaxBlock.Error(), res.Error)
require.Len(t, res.SimulateTransactionResults, 0)
require.Equal(t, big.NewInt(0), builder.env.state.GetBalance(testUserAddress))
bundle = &suavextypes.Bundle{
Txs: []*types.Transaction{},
}
res, err = builder.AddBundle(bundle)
require.NoError(t, err)
require.False(t, res.Success)
require.Equal(t, ErrEmptyTxs.Error(), res.Error)
require.Len(t, res.SimulateTransactionResults, 0)
require.Equal(t, big.NewInt(0), builder.env.state.GetBalance(testUserAddress))
}
func TestBuilder_AddBundles_Simple(t *testing.T) {
t.Parallel()
config, backend := newMockBuilderConfig(t)
builder, err := NewBuilder(config, &BuilderArgs{
Slot: 10,
})
builder, err := NewBuilder(config, &BuilderArgs{})
require.NoError(t, err)
tx1 := backend.newRandomTx(false)
@ -206,6 +102,92 @@ func TestBuilder_AddBundles_Simple(t *testing.T) {
require.Equal(t, big.NewInt(4000), builder.env.state.GetBalance(testUserAddress))
}
func TestBuilder_AddBundles_RevertHashes(t *testing.T) {
t.Parallel()
config, backend := newMockBuilderConfig(t)
builder, err := NewBuilder(config, &BuilderArgs{})
require.NoError(t, err)
tx1 := backend.newRandomTx(false)
tx2 := backend.newRandomTxWithNonce(3) // fails with nonce too high
bundle := &suavextypes.Bundle{
Txs: []*types.Transaction{tx1, tx2},
}
res, err := builder.AddBundles([]*suavextypes.Bundle{bundle})
require.NoError(t, err)
require.Len(t, res, 1)
require.False(t, res[0].Success)
require.Len(t, res[0].SimulateTransactionResults, 2)
require.True(t, res[0].SimulateTransactionResults[0].Success)
require.False(t, res[0].SimulateTransactionResults[1].Success)
require.Equal(t, big.NewInt(0), builder.env.state.GetBalance(testUserAddress))
bundle.RevertingHashes = []common.Hash{tx2.Hash()}
res, err = builder.AddBundles([]*suavextypes.Bundle{bundle})
require.NoError(t, err)
require.Len(t, res, 1)
require.True(t, res[0].Success)
require.Len(t, res[0].SimulateTransactionResults, 2)
require.True(t, res[0].SimulateTransactionResults[0].Success)
require.False(t, res[0].SimulateTransactionResults[1].Success)
require.Equal(t, big.NewInt(1000), builder.env.state.GetBalance(testUserAddress))
}
func TestBuilder_AddBundles_InvalidParams(t *testing.T) {
t.Parallel()
config, backend := newMockBuilderConfig(t)
// set builder target block number to 10
backend.insertRandomBlocks(9)
builder, err := NewBuilder(config, &BuilderArgs{})
require.Equal(t, uint64(10), builder.env.header.Number.Uint64())
require.NoError(t, err)
tx1 := backend.newRandomTx(false)
tx2 := backend.newRandomTx(false)
bundle := &suavextypes.Bundle{
Txs: []*types.Transaction{tx1, tx2},
BlockNumber: big.NewInt(20),
}
res, err := builder.AddBundles([]*suavextypes.Bundle{bundle})
require.NoError(t, err)
require.Len(t, res, 1)
require.False(t, res[0].Success)
require.Equal(t, ErrInvalidBlockNumber.Error(), res[0].Error)
require.Len(t, res[0].SimulateTransactionResults, 0)
require.Equal(t, big.NewInt(0), builder.env.state.GetBalance(testUserAddress))
bundle = &suavextypes.Bundle{
Txs: []*types.Transaction{tx1, tx2},
BlockNumber: big.NewInt(5),
MaxBlock: big.NewInt(6),
}
res, err = builder.AddBundles([]*suavextypes.Bundle{bundle})
require.NoError(t, err)
require.Len(t, res, 1)
require.False(t, res[0].Success)
require.Equal(t, ErrExceedsMaxBlock.Error(), res[0].Error)
require.Len(t, res[0].SimulateTransactionResults, 0)
require.Equal(t, big.NewInt(0), builder.env.state.GetBalance(testUserAddress))
bundle = &suavextypes.Bundle{
Txs: []*types.Transaction{},
}
res, err = builder.AddBundles([]*suavextypes.Bundle{bundle})
require.NoError(t, err)
require.False(t, res[0].Success)
require.Equal(t, ErrEmptyTxs.Error(), res[0].Error)
require.Len(t, res[0].SimulateTransactionResults, 0)
require.Equal(t, big.NewInt(0), builder.env.state.GetBalance(testUserAddress))
}
func TestBuilder_FillTransactions(t *testing.T) {
t.Parallel()
config, backend := newMockBuilderConfig(t)

View file

@ -93,7 +93,6 @@ type API interface {
NewSession(ctx context.Context, args *BuildBlockArgs) (string, error)
AddTransaction(ctx context.Context, sessionId string, tx *types.Transaction) (*SimulateTransactionResult, error)
AddTransactions(ctx context.Context, sessionId string, txs types.Transactions) ([]*SimulateTransactionResult, error)
AddBundle(ctx context.Context, sessionId string, bundle *Bundle) (*SimulateBundleResult, error)
AddBundles(ctx context.Context, sessionId string, bundles []*Bundle) ([]*SimulateBundleResult, error)
BuildBlock(ctx context.Context, sessionId string) error
Bid(ctx context.Context, sessioId string, blsPubKey phase0.BLSPubKey) (*SubmitBlockRequest, error)

View file

@ -48,12 +48,6 @@ func (a *APIClient) AddTransactions(ctx context.Context, sessionId string, txs t
return receipt, err
}
func (a *APIClient) AddBundle(ctx context.Context, sessionId string, bundle *Bundle) (*SimulateBundleResult, error) {
var receipt *SimulateBundleResult
err := a.rpc.CallContext(ctx, &receipt, "suavex_addBundle", sessionId, bundle)
return receipt, err
}
func (a *APIClient) AddBundles(ctx context.Context, sessionId string, bundles []*Bundle) ([]*SimulateBundleResult, error) {
var receipt []*SimulateBundleResult
err := a.rpc.CallContext(ctx, &receipt, "suavex_addBundles", sessionId, bundles)

View file

@ -14,7 +14,6 @@ type SessionManager interface {
NewSession(context.Context, *BuildBlockArgs) (string, error)
AddTransaction(sessionId string, tx *types.Transaction) (*SimulateTransactionResult, error)
AddTransactions(sessionId string, txs types.Transactions) ([]*SimulateTransactionResult, error)
AddBundle(sessionId string, bundle *Bundle) (*SimulateBundleResult, error)
AddBundles(sessionId string, bundles []*Bundle) ([]*SimulateBundleResult, error)
BuildBlock(sessionId string) error
Bid(sessionId string, blsPubKey phase0.BLSPubKey) (*SubmitBlockRequest, error)
@ -43,10 +42,6 @@ func (s *Server) AddTransactions(ctx context.Context, sessionId string, txs type
return s.sessionMngr.AddTransactions(sessionId, txs)
}
func (s *Server) AddBundle(ctx context.Context, sessionId string, bundle *Bundle) (*SimulateBundleResult, error) {
return s.sessionMngr.AddBundle(sessionId, bundle)
}
func (s *Server) AddBundles(ctx context.Context, sessionId string, bundles []*Bundle) ([]*SimulateBundleResult, error) {
return s.sessionMngr.AddBundles(sessionId, bundles)
}

View file

@ -27,6 +27,14 @@ func TestAPI(t *testing.T) {
txn := types.NewTransaction(0, common.Address{}, big.NewInt(1), 1, big.NewInt(1), []byte{})
_, err = c.AddTransaction(context.Background(), "1", txn)
require.NoError(t, err)
_, err = c.AddTransactions(context.Background(), "1", []*types.Transaction{txn})
require.NoError(t, err)
bundle := &Bundle{
Txs: []*types.Transaction{txn},
}
_, err = c.AddBundles(context.Background(), "1", []*Bundle{bundle})
require.NoError(t, err)
}
type nullSessionManager struct{}
@ -43,10 +51,6 @@ func (nullSessionManager) AddTransactions(sessionId string, txs types.Transactio
return nil, nil
}
func (nullSessionManager) AddBundle(sessionId string, bundle *Bundle) (*SimulateBundleResult, error) {
return nil, nil
}
func (nullSessionManager) AddBundles(sessionId string, bundles []*Bundle) ([]*SimulateBundleResult, error) {
return nil, nil
}

View file

@ -158,14 +158,6 @@ func (s *SessionManager) AddTransactions(sessionId string, txs types.Transaction
return builder.AddTransactions(txs)
}
func (s *SessionManager) AddBundle(sessionId string, bundle *api.Bundle) (*api.SimulateBundleResult, error) {
builder, err := s.getSession(sessionId)
if err != nil {
return nil, err
}
return builder.AddBundle(bundle)
}
func (s *SessionManager) AddBundles(sessionId string, bundles []*api.Bundle) ([]*api.SimulateBundleResult, error) {
builder, err := s.getSession(sessionId)
if err != nil {