mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-20 10:52:25 +00:00
Remove AddBundle from api
This commit is contained in:
parent
80d21f6c44
commit
0b871ae9fd
7 changed files with 95 additions and 141 deletions
|
|
@ -156,18 +156,6 @@ func (b *Builder) addBundle(bundle *suavextypes.Bundle, env *environment) (*suav
|
||||||
}, nil
|
}, 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) {
|
func (b *Builder) AddBundles(bundles []*suavextypes.Bundle) ([]*suavextypes.SimulateBundleResult, error) {
|
||||||
var results []*suavextypes.SimulateBundleResult
|
var results []*suavextypes.SimulateBundleResult
|
||||||
snap := b.env.copy()
|
snap := b.env.copy()
|
||||||
|
|
|
||||||
|
|
@ -74,114 +74,10 @@ func TestBuilder_AddTxns_Simple(t *testing.T) {
|
||||||
require.Equal(t, big.NewInt(2000), builder.env.state.GetBalance(testUserAddress))
|
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) {
|
func TestBuilder_AddBundles_Simple(t *testing.T) {
|
||||||
t.Parallel()
|
t.Parallel()
|
||||||
config, backend := newMockBuilderConfig(t)
|
config, backend := newMockBuilderConfig(t)
|
||||||
builder, err := NewBuilder(config, &BuilderArgs{
|
builder, err := NewBuilder(config, &BuilderArgs{})
|
||||||
Slot: 10,
|
|
||||||
})
|
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
tx1 := backend.newRandomTx(false)
|
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))
|
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) {
|
func TestBuilder_FillTransactions(t *testing.T) {
|
||||||
t.Parallel()
|
t.Parallel()
|
||||||
config, backend := newMockBuilderConfig(t)
|
config, backend := newMockBuilderConfig(t)
|
||||||
|
|
|
||||||
|
|
@ -93,7 +93,6 @@ type API interface {
|
||||||
NewSession(ctx context.Context, args *BuildBlockArgs) (string, error)
|
NewSession(ctx context.Context, args *BuildBlockArgs) (string, error)
|
||||||
AddTransaction(ctx context.Context, sessionId string, tx *types.Transaction) (*SimulateTransactionResult, error)
|
AddTransaction(ctx context.Context, sessionId string, tx *types.Transaction) (*SimulateTransactionResult, error)
|
||||||
AddTransactions(ctx context.Context, sessionId string, txs types.Transactions) ([]*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)
|
AddBundles(ctx context.Context, sessionId string, bundles []*Bundle) ([]*SimulateBundleResult, error)
|
||||||
BuildBlock(ctx context.Context, sessionId string) error
|
BuildBlock(ctx context.Context, sessionId string) error
|
||||||
Bid(ctx context.Context, sessioId string, blsPubKey phase0.BLSPubKey) (*SubmitBlockRequest, error)
|
Bid(ctx context.Context, sessioId string, blsPubKey phase0.BLSPubKey) (*SubmitBlockRequest, error)
|
||||||
|
|
|
||||||
|
|
@ -48,12 +48,6 @@ func (a *APIClient) AddTransactions(ctx context.Context, sessionId string, txs t
|
||||||
return receipt, err
|
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) {
|
func (a *APIClient) AddBundles(ctx context.Context, sessionId string, bundles []*Bundle) ([]*SimulateBundleResult, error) {
|
||||||
var receipt []*SimulateBundleResult
|
var receipt []*SimulateBundleResult
|
||||||
err := a.rpc.CallContext(ctx, &receipt, "suavex_addBundles", sessionId, bundles)
|
err := a.rpc.CallContext(ctx, &receipt, "suavex_addBundles", sessionId, bundles)
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,6 @@ type SessionManager interface {
|
||||||
NewSession(context.Context, *BuildBlockArgs) (string, error)
|
NewSession(context.Context, *BuildBlockArgs) (string, error)
|
||||||
AddTransaction(sessionId string, tx *types.Transaction) (*SimulateTransactionResult, error)
|
AddTransaction(sessionId string, tx *types.Transaction) (*SimulateTransactionResult, error)
|
||||||
AddTransactions(sessionId string, txs types.Transactions) ([]*SimulateTransactionResult, error)
|
AddTransactions(sessionId string, txs types.Transactions) ([]*SimulateTransactionResult, error)
|
||||||
AddBundle(sessionId string, bundle *Bundle) (*SimulateBundleResult, error)
|
|
||||||
AddBundles(sessionId string, bundles []*Bundle) ([]*SimulateBundleResult, error)
|
AddBundles(sessionId string, bundles []*Bundle) ([]*SimulateBundleResult, error)
|
||||||
BuildBlock(sessionId string) error
|
BuildBlock(sessionId string) error
|
||||||
Bid(sessionId string, blsPubKey phase0.BLSPubKey) (*SubmitBlockRequest, 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)
|
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) {
|
func (s *Server) AddBundles(ctx context.Context, sessionId string, bundles []*Bundle) ([]*SimulateBundleResult, error) {
|
||||||
return s.sessionMngr.AddBundles(sessionId, bundles)
|
return s.sessionMngr.AddBundles(sessionId, bundles)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -27,6 +27,14 @@ func TestAPI(t *testing.T) {
|
||||||
txn := types.NewTransaction(0, common.Address{}, big.NewInt(1), 1, big.NewInt(1), []byte{})
|
txn := types.NewTransaction(0, common.Address{}, big.NewInt(1), 1, big.NewInt(1), []byte{})
|
||||||
_, err = c.AddTransaction(context.Background(), "1", txn)
|
_, err = c.AddTransaction(context.Background(), "1", txn)
|
||||||
require.NoError(t, err)
|
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{}
|
type nullSessionManager struct{}
|
||||||
|
|
@ -43,10 +51,6 @@ func (nullSessionManager) AddTransactions(sessionId string, txs types.Transactio
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (nullSessionManager) AddBundle(sessionId string, bundle *Bundle) (*SimulateBundleResult, error) {
|
|
||||||
return nil, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (nullSessionManager) AddBundles(sessionId string, bundles []*Bundle) ([]*SimulateBundleResult, error) {
|
func (nullSessionManager) AddBundles(sessionId string, bundles []*Bundle) ([]*SimulateBundleResult, error) {
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -158,14 +158,6 @@ func (s *SessionManager) AddTransactions(sessionId string, txs types.Transaction
|
||||||
return builder.AddTransactions(txs)
|
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) {
|
func (s *SessionManager) AddBundles(sessionId string, bundles []*api.Bundle) ([]*api.SimulateBundleResult, error) {
|
||||||
builder, err := s.getSession(sessionId)
|
builder, err := s.getSession(sessionId)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue