From 0b871ae9fda8dd9ba6c7b64a8060507644f92c96 Mon Sep 17 00:00:00 2001 From: Jinsuk Park Date: Wed, 13 Mar 2024 10:49:38 -0700 Subject: [PATCH] Remove AddBundle from api --- miner/builder.go | 12 -- miner/builder_test.go | 192 ++++++++++++++----------------- suave/builder/api/api.go | 1 - suave/builder/api/api_client.go | 6 - suave/builder/api/api_server.go | 5 - suave/builder/api/api_test.go | 12 +- suave/builder/session_manager.go | 8 -- 7 files changed, 95 insertions(+), 141 deletions(-) diff --git a/miner/builder.go b/miner/builder.go index b46c0010db..ab9080be5f 100644 --- a/miner/builder.go +++ b/miner/builder.go @@ -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() diff --git a/miner/builder_test.go b/miner/builder_test.go index 57f6452267..423094cc3b 100644 --- a/miner/builder_test.go +++ b/miner/builder_test.go @@ -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) diff --git a/suave/builder/api/api.go b/suave/builder/api/api.go index ba77ae2700..34da1e2e8a 100644 --- a/suave/builder/api/api.go +++ b/suave/builder/api/api.go @@ -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) diff --git a/suave/builder/api/api_client.go b/suave/builder/api/api_client.go index da99414bed..49e49ad8d8 100644 --- a/suave/builder/api/api_client.go +++ b/suave/builder/api/api_client.go @@ -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) diff --git a/suave/builder/api/api_server.go b/suave/builder/api/api_server.go index ad4aa0a184..9a2204f46d 100644 --- a/suave/builder/api/api_server.go +++ b/suave/builder/api/api_server.go @@ -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) } diff --git a/suave/builder/api/api_test.go b/suave/builder/api/api_test.go index a3041247b9..4c4d263e8e 100644 --- a/suave/builder/api/api_test.go +++ b/suave/builder/api/api_test.go @@ -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 } diff --git a/suave/builder/session_manager.go b/suave/builder/session_manager.go index cf27ae254f..b0495e00ff 100644 --- a/suave/builder/session_manager.go +++ b/suave/builder/session_manager.go @@ -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 {