|
|
@ -39,24 +39,6 @@ import ( |
|
|
|
"github.com/ethereum/go-ethereum/xeth" |
|
|
|
"github.com/ethereum/go-ethereum/xeth" |
|
|
|
) |
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
func toHex(b []byte) string { |
|
|
|
|
|
|
|
return "0x" + ethutil.Bytes2Hex(b) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
func fromHex(s string) []byte { |
|
|
|
|
|
|
|
if len(s) > 1 { |
|
|
|
|
|
|
|
if s[0:2] == "0x" { |
|
|
|
|
|
|
|
s = s[2:] |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
return ethutil.Hex2Bytes(s) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
return nil |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
type RpcServer interface { |
|
|
|
|
|
|
|
Start() |
|
|
|
|
|
|
|
Stop() |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
type EthereumApi struct { |
|
|
|
type EthereumApi struct { |
|
|
|
xeth *xeth.XEth |
|
|
|
xeth *xeth.XEth |
|
|
|
filterManager *filter.FilterManager |
|
|
|
filterManager *filter.FilterManager |
|
|
@ -91,29 +73,6 @@ func (self *EthereumApi) NewFilter(args *FilterOptions, reply *interface{}) erro |
|
|
|
return nil |
|
|
|
return nil |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
type Log struct { |
|
|
|
|
|
|
|
Address string `json:"address"` |
|
|
|
|
|
|
|
Topics []string `json:"topics"` |
|
|
|
|
|
|
|
Data string `json:"data"` |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
func toLogs(logs state.Logs) (ls []Log) { |
|
|
|
|
|
|
|
ls = make([]Log, len(logs)) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for i, log := range logs { |
|
|
|
|
|
|
|
var l Log |
|
|
|
|
|
|
|
l.Topics = make([]string, len(log.Topics())) |
|
|
|
|
|
|
|
l.Address = toHex(log.Address()) |
|
|
|
|
|
|
|
l.Data = toHex(log.Data()) |
|
|
|
|
|
|
|
for j, topic := range log.Topics() { |
|
|
|
|
|
|
|
l.Topics[j] = toHex(topic) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
ls[i] = l |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
func (self *EthereumApi) FilterChanged(id int, reply *interface{}) error { |
|
|
|
func (self *EthereumApi) FilterChanged(id int, reply *interface{}) error { |
|
|
|
self.mut.RLock() |
|
|
|
self.mut.RLock() |
|
|
|
defer self.mut.RUnlock() |
|
|
|
defer self.mut.RUnlock() |
|
|
|