feat(core): implement core MEV bot functionality with market scanning and Uniswap V3 pricing
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
This commit is contained in:
@@ -5,13 +5,13 @@ import (
|
||||
"math/big"
|
||||
"time"
|
||||
|
||||
"github.com/ethereum/go-ethereum/common"
|
||||
"github.com/ethereum/go-ethereum/core/types"
|
||||
"github.com/fraktal/mev-beta/internal/config"
|
||||
"github.com/fraktal/mev-beta/internal/logger"
|
||||
"github.com/fraktal/mev-beta/pkg/events"
|
||||
"github.com/fraktal/mev-beta/pkg/market"
|
||||
"github.com/fraktal/mev-beta/pkg/scanner"
|
||||
"github.com/ethereum/go-ethereum/common"
|
||||
"github.com/ethereum/go-ethereum/core/types"
|
||||
"github.com/holiman/uint256"
|
||||
)
|
||||
|
||||
@@ -28,13 +28,13 @@ func CreateTestConfig() *config.Config {
|
||||
},
|
||||
},
|
||||
Bot: config.BotConfig{
|
||||
Enabled: true,
|
||||
PollingInterval: 1,
|
||||
MinProfitThreshold: 10.0,
|
||||
GasPriceMultiplier: 1.2,
|
||||
MaxWorkers: 10,
|
||||
ChannelBufferSize: 100,
|
||||
RPCTimeout: 30,
|
||||
Enabled: true,
|
||||
PollingInterval: 1,
|
||||
MinProfitThreshold: 10.0,
|
||||
GasPriceMultiplier: 1.2,
|
||||
MaxWorkers: 10,
|
||||
ChannelBufferSize: 100,
|
||||
RPCTimeout: 30,
|
||||
},
|
||||
Uniswap: config.UniswapConfig{
|
||||
FactoryAddress: "0x1F98431c8aD98523631AE4a59f267346ea31F984",
|
||||
@@ -52,9 +52,9 @@ func CreateTestConfig() *config.Config {
|
||||
File: "",
|
||||
},
|
||||
Database: config.DatabaseConfig{
|
||||
File: "mev-bot.db",
|
||||
MaxOpenConnections: 10,
|
||||
MaxIdleConnections: 5,
|
||||
File: "mev-bot.db",
|
||||
MaxOpenConnections: 10,
|
||||
MaxIdleConnections: 5,
|
||||
},
|
||||
}
|
||||
}
|
||||
@@ -67,19 +67,19 @@ func CreateTestLogger() *logger.Logger {
|
||||
// CreateTestEvent creates a test event
|
||||
func CreateTestEvent() *events.Event {
|
||||
return &events.Event{
|
||||
Type: events.Swap,
|
||||
Protocol: "UniswapV3",
|
||||
PoolAddress: common.HexToAddress("0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640"),
|
||||
Token0: common.HexToAddress("0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"),
|
||||
Token1: common.HexToAddress("0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"),
|
||||
Amount0: big.NewInt(1000000000),
|
||||
Amount1: big.NewInt(500000000000000000),
|
||||
SqrtPriceX96: uint256.NewInt(2505414483750470000),
|
||||
Liquidity: uint256.NewInt(1000000000000000000),
|
||||
Tick: 200000,
|
||||
Timestamp: uint64(time.Now().Unix()),
|
||||
Type: events.Swap,
|
||||
Protocol: "UniswapV3",
|
||||
PoolAddress: common.HexToAddress("0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640"),
|
||||
Token0: common.HexToAddress("0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"),
|
||||
Token1: common.HexToAddress("0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"),
|
||||
Amount0: big.NewInt(1000000000),
|
||||
Amount1: big.NewInt(500000000000000000),
|
||||
SqrtPriceX96: uint256.NewInt(2505414483750470000),
|
||||
Liquidity: uint256.NewInt(1000000000000000000),
|
||||
Tick: 200000,
|
||||
Timestamp: uint64(time.Now().Unix()),
|
||||
TransactionHash: common.HexToHash("0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"),
|
||||
BlockNumber: 12345,
|
||||
BlockNumber: 12345,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -104,9 +104,9 @@ func CreateTestMarketManager() *market.MarketManager {
|
||||
// CreateTestScanner creates a test market scanner
|
||||
func CreateTestScanner() *scanner.MarketScanner {
|
||||
cfg := &config.BotConfig{
|
||||
MaxWorkers: 5,
|
||||
ChannelBufferSize: 10,
|
||||
RPCTimeout: 30,
|
||||
MaxWorkers: 5,
|
||||
ChannelBufferSize: 10,
|
||||
RPCTimeout: 30,
|
||||
MinProfitThreshold: 10.0,
|
||||
}
|
||||
logger := CreateTestLogger()
|
||||
@@ -128,4 +128,4 @@ func CreateTestPipeline() *market.Pipeline {
|
||||
// CreateTestContext creates a test context
|
||||
func CreateTestContext() context.Context {
|
||||
return context.Background()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user