|
|
|
@ -6,7 +6,6 @@ import ( |
|
|
|
|
"sync" |
|
|
|
|
|
|
|
|
|
"github.com/ethereum/go-ethereum/common" |
|
|
|
|
"github.com/ethereum/go-ethereum/core" |
|
|
|
|
"github.com/ethereum/go-ethereum/crypto" |
|
|
|
|
"github.com/ethereum/go-ethereum/xeth" |
|
|
|
|
) |
|
|
|
@ -277,8 +276,7 @@ func (api *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) err |
|
|
|
|
return err |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
opts := toFilterOptions(args) |
|
|
|
|
id := api.xeth().RegisterFilter(opts) |
|
|
|
|
id := api.xeth().RegisterFilter(args.Earliest, args.Latest, args.Skip, args.Max, args.Address, args.Topics) |
|
|
|
|
*reply = common.ToHex(big.NewInt(int64(id)).Bytes()) |
|
|
|
|
case "eth_newBlockFilter": |
|
|
|
|
args := new(FilterStringArgs) |
|
|
|
@ -310,8 +308,7 @@ func (api *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) err |
|
|
|
|
if err := json.Unmarshal(req.Params, &args); err != nil { |
|
|
|
|
return err |
|
|
|
|
} |
|
|
|
|
opts := toFilterOptions(args) |
|
|
|
|
*reply = NewLogsRes(api.xeth().AllLogs(opts)) |
|
|
|
|
*reply = NewLogsRes(api.xeth().AllLogs(args.Earliest, args.Latest, args.Skip, args.Max, args.Address, args.Topics)) |
|
|
|
|
case "eth_getWork": |
|
|
|
|
api.xeth().SetMining(true) |
|
|
|
|
*reply = api.xeth().RemoteMining().GetWork() |
|
|
|
@ -456,33 +453,3 @@ func (api *EthereumApi) GetRequestReply(req *RpcRequest, reply *interface{}) err |
|
|
|
|
rpclogger.DebugDetailf("Reply: %T %s", reply, reply) |
|
|
|
|
return nil |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func toFilterOptions(options *BlockFilterArgs) *core.FilterOptions { |
|
|
|
|
var opts core.FilterOptions |
|
|
|
|
|
|
|
|
|
opts.Address = cAddress(options.Address) |
|
|
|
|
opts.Topics = cTopics(options.Topics) |
|
|
|
|
|
|
|
|
|
opts.Earliest = options.Earliest |
|
|
|
|
opts.Latest = options.Latest |
|
|
|
|
|
|
|
|
|
return &opts |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func cAddress(a []string) []common.Address { |
|
|
|
|
bslice := make([]common.Address, len(a)) |
|
|
|
|
for i, addr := range a { |
|
|
|
|
bslice[i] = common.HexToAddress(addr) |
|
|
|
|
} |
|
|
|
|
return bslice |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func cTopics(t [][]string) [][]common.Hash { |
|
|
|
|
topics := make([][]common.Hash, len(t)) |
|
|
|
|
for i, iv := range t { |
|
|
|
|
for j, jv := range iv { |
|
|
|
|
topics[i][j] = common.HexToHash(jv) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return topics |
|
|
|
|
} |
|
|
|
|