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

View File

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