fix(pools): correct CallContract API usage in pool discovery

- Update go.mod to Go 1.21 (from invalid 1.25)
- Add missing dependencies: gorilla/websocket, stretchr/testify
- Fix CallContract calls to use ethereum.CallMsg instead of map
- Import ethereum package for CallMsg type

These fixes resolve compilation errors in the pool discovery
service that would prevent the application from building.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Administrator
2025-11-10 18:56:15 +01:00
parent 65c1005d91
commit e9c24a65e5
2 changed files with 17 additions and 15 deletions

5
go.mod
View File

@@ -1,10 +1,12 @@
module github.com/your-org/mev-bot module github.com/your-org/mev-bot
go 1.25 go 1.21
require ( require (
github.com/ethereum/go-ethereum v1.13.15 github.com/ethereum/go-ethereum v1.13.15
github.com/gorilla/websocket v1.5.3
github.com/prometheus/client_golang v1.20.5 github.com/prometheus/client_golang v1.20.5
github.com/stretchr/testify v1.8.4
) )
require ( require (
@@ -14,7 +16,6 @@ require (
github.com/deckarep/golang-set/v2 v2.6.0 // indirect github.com/deckarep/golang-set/v2 v2.6.0 // indirect
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 // indirect
github.com/go-stack/stack v1.8.1 // indirect github.com/go-stack/stack v1.8.1 // indirect
github.com/gorilla/websocket v1.5.3 // indirect
github.com/holiman/uint256 v1.3.1 // indirect github.com/holiman/uint256 v1.3.1 // indirect
github.com/klauspost/compress v1.17.11 // indirect github.com/klauspost/compress v1.17.11 // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect

View File

@@ -7,7 +7,7 @@ import (
"math/big" "math/big"
"sync" "sync"
"github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum"
"github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/ethclient" "github.com/ethereum/go-ethereum/ethclient"
@@ -202,9 +202,9 @@ func (d *Discovery) getUniswapV2Pool(ctx context.Context, factory common.Address
calldata := append([]byte{0xe6, 0xa4, 0x39, 0x05}, // getPair selector calldata := append([]byte{0xe6, 0xa4, 0x39, 0x05}, // getPair selector
append(padLeft(token0.Bytes(), 32), padLeft(token1.Bytes(), 32)...)...) append(padLeft(token0.Bytes(), 32), padLeft(token1.Bytes(), 32)...)...)
result, err := d.client.CallContract(ctx, map[string]interface{}{ result, err := d.client.CallContract(ctx, ethereum.CallMsg{
"to": factory, To: &factory,
"data": common.Bytes2Hex(calldata), Data: calldata,
}, nil) }, nil)
if err != nil { if err != nil {
return common.Address{}, err return common.Address{}, err
@@ -223,9 +223,9 @@ func (d *Discovery) fetchUniswapV2PoolInfo(ctx context.Context, poolAddr, token0
// Simplified - in production use generated bindings // Simplified - in production use generated bindings
calldata := []byte{0x09, 0x02, 0xf1, 0xac} // getReserves selector calldata := []byte{0x09, 0x02, 0xf1, 0xac} // getReserves selector
result, err := d.client.CallContract(ctx, map[string]interface{}{ result, err := d.client.CallContract(ctx, ethereum.CallMsg{
"to": poolAddr, To: &poolAddr,
"data": common.Bytes2Hex(calldata), Data: calldata,
}, nil) }, nil)
if err != nil { if err != nil {
return nil, err return nil, err
@@ -328,9 +328,10 @@ func (d *Discovery) getUniswapV3Pool(ctx context.Context, token0, token1 common.
calldata := append([]byte{0x17, 0x79, 0x05, 0x7a}, // getPool selector calldata := append([]byte{0x17, 0x79, 0x05, 0x7a}, // getPool selector
append(append(padLeft(token0.Bytes(), 32), padLeft(token1.Bytes(), 32)...), feeBytes...)...) append(append(padLeft(token0.Bytes(), 32), padLeft(token1.Bytes(), 32)...), feeBytes...)...)
result, err := d.client.CallContract(ctx, map[string]interface{}{ factoryAddr := UniswapV3FactoryAddress
"to": UniswapV3FactoryAddress, result, err := d.client.CallContract(ctx, ethereum.CallMsg{
"data": common.Bytes2Hex(calldata), To: &factoryAddr,
Data: calldata,
}, nil) }, nil)
if err != nil { if err != nil {
return common.Address{}, err return common.Address{}, err
@@ -349,9 +350,9 @@ func (d *Discovery) fetchUniswapV3PoolInfo(ctx context.Context, poolAddr, token0
// Simplified - in production use generated bindings // Simplified - in production use generated bindings
calldata := []byte{0x1a, 0x68, 0x65, 0x02} // liquidity selector calldata := []byte{0x1a, 0x68, 0x65, 0x02} // liquidity selector
result, err := d.client.CallContract(ctx, map[string]interface{}{ result, err := d.client.CallContract(ctx, ethereum.CallMsg{
"to": poolAddr, To: &poolAddr,
"data": common.Bytes2Hex(calldata), Data: calldata,
}, nil) }, nil)
if err != nil { if err != nil {
return nil, err return nil, err