diff --git a/pkg/core/rpc_client.go b/pkg/core/rpc_client.go index 968d170b..51309d93 100644 --- a/pkg/core/rpc_client.go +++ b/pkg/core/rpc_client.go @@ -2,12 +2,12 @@ package core import ( "context" - "github.com/ethereum/go-ethereum/rpc" + "github.com/vulcanize/vulcanizedb/pkg/geth/client" ) type RpcClient interface { CallContext(ctx context.Context, result interface{}, method string, args ...interface{}) error - BatchCall(batch []rpc.BatchElem) error + BatchCall(batch []client.BatchElem) error IpcPath() string SupportedModules() (map[string]string, error) } diff --git a/pkg/fakes/mock_eth_client.go b/pkg/fakes/mock_eth_client.go index 6f71b1a1..fd040b58 100644 --- a/pkg/fakes/mock_eth_client.go +++ b/pkg/fakes/mock_eth_client.go @@ -7,8 +7,8 @@ import ( "github.com/ethereum/go-ethereum" "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/rpc" . "github.com/onsi/gomega" + "github.com/vulcanize/vulcanizedb/pkg/geth/client" ) type MockEthClient struct { @@ -33,7 +33,7 @@ type MockEthClient struct { filterLogsReturnLogs []types.Log transactionReceipts map[string]*types.Receipt err error - passedBatch []rpc.BatchElem + passedBatch []client.BatchElem passedMethod string transactionSenderErr error transactionReceiptErr error @@ -122,7 +122,7 @@ func (client *MockEthClient) CallContract(ctx context.Context, msg ethereum.Call return client.callContractReturnBytes, client.callContractErr } -func (client *MockEthClient) BatchCall(batch []rpc.BatchElem) error { +func (client *MockEthClient) BatchCall(batch []client.BatchElem) error { client.passedBatch = batch client.passedMethod = batch[0].Method diff --git a/pkg/fakes/mock_header_repository.go b/pkg/fakes/mock_header_repository.go index bfa4eb54..97fad441 100644 --- a/pkg/fakes/mock_header_repository.go +++ b/pkg/fakes/mock_header_repository.go @@ -2,7 +2,7 @@ package fakes import ( . "github.com/onsi/gomega" - + "github.com/vulcanize/vulcanizedb/pkg/core" ) diff --git a/pkg/fakes/mock_rpc_client.go b/pkg/fakes/mock_rpc_client.go index e57fda50..8f25ef87 100644 --- a/pkg/fakes/mock_rpc_client.go +++ b/pkg/fakes/mock_rpc_client.go @@ -8,8 +8,8 @@ import ( "github.com/ethereum/go-ethereum/p2p" . "github.com/onsi/gomega" - "github.com/ethereum/go-ethereum/rpc" "github.com/vulcanize/vulcanizedb/pkg/core" + "github.com/vulcanize/vulcanizedb/pkg/geth/client" ) type MockRpcClient struct { @@ -19,7 +19,7 @@ type MockRpcClient struct { passedContext context.Context passedMethod string passedResult interface{} - passedBatch []rpc.BatchElem + passedBatch []client.BatchElem lengthOfBatch int returnPOAHeader core.POAHeader returnPOAHeaders []core.POAHeader @@ -35,7 +35,7 @@ func (client *MockRpcClient) SetIpcPath(ipcPath string) { client.ipcPath = ipcPath } -func (client *MockRpcClient) BatchCall(batch []rpc.BatchElem) error { +func (client *MockRpcClient) BatchCall(batch []client.BatchElem) error { client.passedBatch = batch client.passedMethod = batch[0].Method client.lengthOfBatch = len(batch) diff --git a/pkg/geth/blockchain.go b/pkg/geth/blockchain.go index e30b2233..7b9c49dd 100644 --- a/pkg/geth/blockchain.go +++ b/pkg/geth/blockchain.go @@ -8,8 +8,8 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/hexutil" "github.com/ethereum/go-ethereum/core/types" - "github.com/ethereum/go-ethereum/rpc" "github.com/vulcanize/vulcanizedb/pkg/core" + "github.com/vulcanize/vulcanizedb/pkg/geth/client" vulcCommon "github.com/vulcanize/vulcanizedb/pkg/geth/converters/common" "golang.org/x/net/context" "strconv" @@ -68,7 +68,7 @@ func (blockChain *BlockChain) getPOWHeader(blockNumber int64) (header core.Heade } func (blockChain *BlockChain) getPOWHeaders(blockNumbers []int64) (headers []core.Header, err error) { - var batch []rpc.BatchElem + var batch []client.BatchElem var POWHeaders [MAX_BATCH_SIZE]types.Header includeTransactions := false @@ -80,7 +80,7 @@ func (blockChain *BlockChain) getPOWHeaders(blockNumbers []int64) (headers []cor blockNumberArg := hexutil.EncodeBig(big.NewInt(blockNumber)) - batchElem := rpc.BatchElem{ + batchElem := client.BatchElem{ Method: "eth_getBlockByNumber", Result: &POWHeaders[index], Args: []interface{}{blockNumberArg, includeTransactions}, @@ -135,7 +135,7 @@ func (blockChain *BlockChain) getPOAHeader(blockNumber int64) (header core.Heade func (blockChain *BlockChain) getPOAHeaders(blockNumbers []int64) (headers []core.Header, err error) { - var batch []rpc.BatchElem + var batch []client.BatchElem var POAHeaders [MAX_BATCH_SIZE]core.POAHeader includeTransactions := false @@ -147,7 +147,7 @@ func (blockChain *BlockChain) getPOAHeaders(blockNumbers []int64) (headers []cor blockNumberArg := hexutil.EncodeBig(big.NewInt(blockNumber)) - batchElem := rpc.BatchElem{ + batchElem := client.BatchElem{ Method: "eth_getBlockByNumber", Result: &POAHeaders[index], Args: []interface{}{blockNumberArg, includeTransactions}, diff --git a/pkg/geth/client/rpc_client.go b/pkg/geth/client/rpc_client.go index d08b5696..e2adf7c5 100644 --- a/pkg/geth/client/rpc_client.go +++ b/pkg/geth/client/rpc_client.go @@ -10,6 +10,13 @@ type RpcClient struct { ipcPath string } +type BatchElem struct { + Method string + Args []interface{} + Result interface{} + Error error +} + func NewRpcClient(client *rpc.Client, ipcPath string) RpcClient { return RpcClient{ client: client, @@ -36,6 +43,13 @@ func (client RpcClient) SupportedModules() (map[string]string, error) { return client.client.SupportedModules() } -func (client RpcClient) BatchCall(batch []rpc.BatchElem) error { - return client.client.BatchCall(batch) +func (client RpcClient) BatchCall(batch []BatchElem) error { + var rpcBatch []rpc.BatchElem + for index, batchElem := range batch { + rpcBatch[index].Result = batchElem.Result + rpcBatch[index].Method = batchElem.Method + rpcBatch[index].Args = batchElem.Args + rpcBatch[index].Error = batchElem.Error + } + return client.client.BatchCall(rpcBatch) }