mirror of
https://github.com/grassrootseconomics/eth-tracker.git
synced 2026-05-18 10:45:21 +02:00
special: backport old celo geth to latest eth-tracker codebase
This commit is contained in:
@@ -1,121 +0,0 @@
|
||||
package chain
|
||||
|
||||
// import (
|
||||
// "context"
|
||||
// "math/big"
|
||||
// "net/http"
|
||||
// "time"
|
||||
|
||||
// "github.com/ethereum/go-ethereum/common"
|
||||
// "github.com/ethereum/go-ethereum/core/types"
|
||||
// "github.com/ethereum/go-ethereum/rpc"
|
||||
// "github.com/grassrootseconomics/ethutils"
|
||||
// "github.com/lmittmann/w3"
|
||||
// "github.com/lmittmann/w3/module/eth"
|
||||
// "github.com/lmittmann/w3/w3types"
|
||||
// )
|
||||
|
||||
// type (
|
||||
// CeloRPCOpts struct {
|
||||
// RPCEndpoint string
|
||||
// ChainID int64
|
||||
// }
|
||||
|
||||
// CeloRPC struct {
|
||||
// provider *ethutils.Provider
|
||||
// }
|
||||
// )
|
||||
|
||||
// func NewRPCFetcher(o CeloRPCOpts) (Chain, error) {
|
||||
// customRPCClient, err := lowTimeoutRPCClient(o.RPCEndpoint)
|
||||
// if err != nil {
|
||||
// return nil, err
|
||||
// }
|
||||
|
||||
// chainProvider := ethutils.NewProvider(
|
||||
// o.RPCEndpoint,
|
||||
// o.ChainID,
|
||||
// ethutils.WithClient(customRPCClient),
|
||||
// )
|
||||
|
||||
// return &CeloRPC{
|
||||
// provider: chainProvider,
|
||||
// }, nil
|
||||
// }
|
||||
|
||||
// func lowTimeoutRPCClient(rpcEndpoint string) (*w3.Client, error) {
|
||||
// httpClient := &http.Client{
|
||||
// Timeout: 10 * time.Second,
|
||||
// }
|
||||
|
||||
// rpcClient, err := rpc.DialHTTPWithClient(
|
||||
// rpcEndpoint,
|
||||
// httpClient,
|
||||
// )
|
||||
// if err != nil {
|
||||
// return nil, err
|
||||
// }
|
||||
|
||||
// return w3.NewClient(rpcClient), nil
|
||||
// }
|
||||
|
||||
// func (c *CeloRPC) GetBlocks(ctx context.Context, blockNumbers []uint64) ([]types.Block, error) {
|
||||
// blocksCount := len(blockNumbers)
|
||||
// calls := make([]w3types.RPCCaller, blocksCount)
|
||||
// blocks := make([]types.Block, blocksCount)
|
||||
|
||||
// for i, v := range blockNumbers {
|
||||
// calls[i] = eth.BlockByNumber(new(big.Int).SetUint64(v)).Returns(&blocks[i])
|
||||
// }
|
||||
|
||||
// if err := c.provider.Client.CallCtx(ctx, calls...); err != nil {
|
||||
// return nil, err
|
||||
// }
|
||||
|
||||
// return blocks, nil
|
||||
// }
|
||||
|
||||
// func (c *CeloRPC) GetBlock(ctx context.Context, blockNumber uint64) (*types.Block, error) {
|
||||
// var block types.Block
|
||||
// blockCall := eth.BlockByNumber(new(big.Int).SetUint64(blockNumber)).Returns(&block)
|
||||
|
||||
// if err := c.provider.Client.CallCtx(ctx, blockCall); err != nil {
|
||||
// return nil, err
|
||||
// }
|
||||
|
||||
// return &block, nil
|
||||
// }
|
||||
|
||||
// func (c *CeloRPC) GetLatestBlock(ctx context.Context) (uint64, error) {
|
||||
// var latestBlock big.Int
|
||||
// latestBlockCall := eth.BlockNumber().Returns(&latestBlock)
|
||||
|
||||
// if err := c.provider.Client.CallCtx(ctx, latestBlockCall); err != nil {
|
||||
// return 0, err
|
||||
// }
|
||||
|
||||
// return latestBlock.Uint64(), nil
|
||||
// }
|
||||
|
||||
// func (c *CeloRPC) GetTransaction(ctx context.Context, txHash common.Hash) (*types.Transaction, error) {
|
||||
// var transaction types.Transaction
|
||||
// if err := c.provider.Client.CallCtx(ctx, eth.Tx(txHash).Returns(&transaction)); err != nil {
|
||||
// return nil, err
|
||||
// }
|
||||
|
||||
// return &transaction, nil
|
||||
// }
|
||||
|
||||
// func (c *CeloRPC) GetReceipts(ctx context.Context, blockNumber *big.Int) (types.Receipts, error) {
|
||||
// var receipts types.Receipts
|
||||
|
||||
// if err := c.provider.Client.CallCtx(ctx, eth.BlockReceipts(blockNumber).Returns(&receipts)); err != nil {
|
||||
// return nil, err
|
||||
// }
|
||||
|
||||
// return receipts, nil
|
||||
// }
|
||||
|
||||
// func (c *CeloRPC) Provider() *ethutils.Provider {
|
||||
// return c.provider
|
||||
// }
|
||||
@@ -1,98 +0,0 @@
|
||||
package chain
|
||||
|
||||
// import (
|
||||
// "context"
|
||||
// "testing"
|
||||
// "time"
|
||||
|
||||
// "github.com/stretchr/testify/require"
|
||||
// )
|
||||
|
||||
// const (
|
||||
// testRPCEndpoint = "https://celo.archive.grassecon.net"
|
||||
// testChainID = 42220
|
||||
// )
|
||||
|
||||
// func setupCeloRPC() (Chain, error) {
|
||||
// opts := CeloRPCOpts{
|
||||
// RPCEndpoint: testRPCEndpoint,
|
||||
// ChainID: testChainID,
|
||||
// }
|
||||
// return NewRPCFetcher(opts)
|
||||
// }
|
||||
|
||||
// func TestRPC_GetBlocks(t *testing.T) {
|
||||
// rpcFetcher, err := setupCeloRPC()
|
||||
// require.NoError(t, err)
|
||||
|
||||
// blockNumbers := []uint64{
|
||||
// 19_600_000,
|
||||
// 23_000_000,
|
||||
// 27_000_000,
|
||||
// }
|
||||
// ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
|
||||
// defer cancel()
|
||||
|
||||
// blocks, err := rpcFetcher.GetBlocks(ctx, blockNumbers)
|
||||
// require.NoError(t, err)
|
||||
// t.Logf("blocks %+v\n", blocks)
|
||||
// }
|
||||
|
||||
// func TestRPC_GetBlock(t *testing.T) {
|
||||
// rpcFetcher, err := setupCeloRPC()
|
||||
// require.NoError(t, err)
|
||||
|
||||
// var blockNumber uint64 = 19_900_000
|
||||
// ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
|
||||
// defer cancel()
|
||||
|
||||
// block, err := rpcFetcher.GetBlock(ctx, blockNumber)
|
||||
// require.NoError(t, err)
|
||||
// t.Logf("block %+v\n", block)
|
||||
// }
|
||||
|
||||
// func TestRPC_GetLatestBlock(t *testing.T) {
|
||||
// rpcFetcher, err := setupCeloRPC()
|
||||
// require.NoError(t, err)
|
||||
|
||||
// ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
|
||||
// defer cancel()
|
||||
|
||||
// block, err := rpcFetcher.GetLatestBlock(ctx)
|
||||
// require.NoError(t, err)
|
||||
// t.Logf("block %+v\n", block)
|
||||
// }
|
||||
|
||||
// func TestRPC_GetTransaction(t *testing.T) {
|
||||
// rpcFetcher, err := setupCeloRPC()
|
||||
// require.NoError(t, err)
|
||||
|
||||
// var blockNumber uint64 = 19_900_000
|
||||
// ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
|
||||
// defer cancel()
|
||||
|
||||
// block, err := rpcFetcher.GetBlock(ctx, blockNumber)
|
||||
// require.NoError(t, err)
|
||||
// require.NotNil(t, block)
|
||||
|
||||
// transaction, err := rpcFetcher.GetTransaction(ctx, block.Transactions()[0].Hash())
|
||||
// require.NoError(t, err)
|
||||
// t.Logf("transaction %+v\n", transaction)
|
||||
// }
|
||||
|
||||
// func TestRPC_GetReceipts(t *testing.T) {
|
||||
// rpcFetcher, err := setupCeloRPC()
|
||||
// require.NoError(t, err)
|
||||
|
||||
// var blockNumber uint64 = 19_900_000
|
||||
// ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
|
||||
// defer cancel()
|
||||
|
||||
// block, err := rpcFetcher.GetBlock(ctx, blockNumber)
|
||||
// require.NoError(t, err)
|
||||
// require.NotNil(t, block)
|
||||
|
||||
// receipts, err := rpcFetcher.GetReceipts(ctx, block.Number())
|
||||
// require.NoError(t, err)
|
||||
// t.Logf("receipts %+v\n", receipts)
|
||||
// }
|
||||
@@ -4,17 +4,17 @@ import (
|
||||
"context"
|
||||
"math/big"
|
||||
|
||||
"github.com/ethereum/go-ethereum/common"
|
||||
"github.com/ethereum/go-ethereum/core/types"
|
||||
"github.com/grassrootseconomics/ethutils"
|
||||
"github.com/celo-org/celo-blockchain/common"
|
||||
"github.com/celo-org/celo-blockchain/core/types"
|
||||
"github.com/grassrootseconomics/celoutils/v3"
|
||||
)
|
||||
|
||||
type Chain interface {
|
||||
GetBlocks(context.Context, []uint64) ([]*types.Block, error)
|
||||
GetBlocks(context.Context, []uint64) ([]types.Block, error)
|
||||
GetBlock(context.Context, uint64) (*types.Block, error)
|
||||
GetLatestBlock(context.Context) (uint64, error)
|
||||
GetTransaction(context.Context, common.Hash) (*types.Transaction, error)
|
||||
GetReceipts(context.Context, *big.Int) (types.Receipts, error)
|
||||
// Expose provider until we eject from celoutils
|
||||
Provider() *ethutils.Provider
|
||||
Provider() *celoutils.Provider
|
||||
}
|
||||
|
||||
@@ -6,13 +6,13 @@ import (
|
||||
"net/http"
|
||||
"time"
|
||||
|
||||
"github.com/ethereum/go-ethereum/common"
|
||||
"github.com/ethereum/go-ethereum/core/types"
|
||||
"github.com/ethereum/go-ethereum/rpc"
|
||||
"github.com/grassrootseconomics/ethutils"
|
||||
"github.com/lmittmann/w3"
|
||||
"github.com/lmittmann/w3/module/eth"
|
||||
"github.com/lmittmann/w3/w3types"
|
||||
"github.com/celo-org/celo-blockchain/common"
|
||||
"github.com/celo-org/celo-blockchain/core/types"
|
||||
"github.com/celo-org/celo-blockchain/rpc"
|
||||
"github.com/grassrootseconomics/celoutils/v3"
|
||||
"github.com/grassrootseconomics/w3-celo"
|
||||
"github.com/grassrootseconomics/w3-celo/module/eth"
|
||||
"github.com/grassrootseconomics/w3-celo/w3types"
|
||||
)
|
||||
|
||||
type (
|
||||
@@ -22,7 +22,7 @@ type (
|
||||
}
|
||||
|
||||
EthRPC struct {
|
||||
provider *ethutils.Provider
|
||||
provider *celoutils.Provider
|
||||
}
|
||||
)
|
||||
|
||||
@@ -32,10 +32,10 @@ func NewRPCFetcher(o EthRPCOpts) (Chain, error) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
chainProvider := ethutils.NewProvider(
|
||||
chainProvider := celoutils.NewProvider(
|
||||
o.RPCEndpoint,
|
||||
o.ChainID,
|
||||
ethutils.WithClient(customRPCClient),
|
||||
celoutils.WithClient(customRPCClient),
|
||||
)
|
||||
|
||||
return &EthRPC{
|
||||
@@ -48,7 +48,10 @@ func lowTimeoutRPCClient(rpcEndpoint string) (*w3.Client, error) {
|
||||
Timeout: 10 * time.Second,
|
||||
}
|
||||
|
||||
rpcClient, err := rpc.DialOptions(context.Background(), rpcEndpoint, rpc.WithHTTPClient(httpClient))
|
||||
rpcClient, err := rpc.DialHTTPWithClient(
|
||||
rpcEndpoint,
|
||||
httpClient,
|
||||
)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -56,10 +59,10 @@ func lowTimeoutRPCClient(rpcEndpoint string) (*w3.Client, error) {
|
||||
return w3.NewClient(rpcClient), nil
|
||||
}
|
||||
|
||||
func (c *EthRPC) GetBlocks(ctx context.Context, blockNumbers []uint64) ([]*types.Block, error) {
|
||||
func (c *EthRPC) GetBlocks(ctx context.Context, blockNumbers []uint64) ([]types.Block, error) {
|
||||
blocksCount := len(blockNumbers)
|
||||
calls := make([]w3types.RPCCaller, blocksCount)
|
||||
blocks := make([]*types.Block, blocksCount)
|
||||
blocks := make([]types.Block, blocksCount)
|
||||
|
||||
for i, v := range blockNumbers {
|
||||
calls[i] = eth.BlockByNumber(new(big.Int).SetUint64(v)).Returns(&blocks[i])
|
||||
@@ -73,18 +76,18 @@ func (c *EthRPC) GetBlocks(ctx context.Context, blockNumbers []uint64) ([]*types
|
||||
}
|
||||
|
||||
func (c *EthRPC) GetBlock(ctx context.Context, blockNumber uint64) (*types.Block, error) {
|
||||
var block *types.Block
|
||||
var block types.Block
|
||||
blockCall := eth.BlockByNumber(new(big.Int).SetUint64(blockNumber)).Returns(&block)
|
||||
|
||||
if err := c.provider.Client.CallCtx(ctx, blockCall); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return block, nil
|
||||
return &block, nil
|
||||
}
|
||||
|
||||
func (c *EthRPC) GetLatestBlock(ctx context.Context) (uint64, error) {
|
||||
var latestBlock *big.Int
|
||||
var latestBlock big.Int
|
||||
latestBlockCall := eth.BlockNumber().Returns(&latestBlock)
|
||||
|
||||
if err := c.provider.Client.CallCtx(ctx, latestBlockCall); err != nil {
|
||||
@@ -95,12 +98,12 @@ func (c *EthRPC) GetLatestBlock(ctx context.Context) (uint64, error) {
|
||||
}
|
||||
|
||||
func (c *EthRPC) GetTransaction(ctx context.Context, txHash common.Hash) (*types.Transaction, error) {
|
||||
var transaction *types.Transaction
|
||||
var transaction types.Transaction
|
||||
if err := c.provider.Client.CallCtx(ctx, eth.Tx(txHash).Returns(&transaction)); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return transaction, nil
|
||||
return &transaction, nil
|
||||
}
|
||||
|
||||
func (c *EthRPC) GetReceipts(ctx context.Context, blockNumber *big.Int) (types.Receipts, error) {
|
||||
@@ -113,6 +116,6 @@ func (c *EthRPC) GetReceipts(ctx context.Context, blockNumber *big.Int) (types.R
|
||||
return receipts, nil
|
||||
}
|
||||
|
||||
func (c *EthRPC) Provider() *ethutils.Provider {
|
||||
func (c *EthRPC) Provider() *celoutils.Provider {
|
||||
return c.provider
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user