Explorar o código

Added optional address slice. Closes #326

obscuren %!s(int64=10) %!d(string=hai) anos
pai
achega
547788b1b0
Modificáronse 1 ficheiros con 16 adicións e 2 borrados
  1. 16 2
      rpc/args.go

+ 16 - 2
rpc/args.go

@@ -1,6 +1,7 @@
 package rpc
 
 import "encoding/json"
+
 import "github.com/ethereum/go-ethereum/core"
 
 type GetBlockArgs struct {
@@ -203,7 +204,7 @@ func (obj *Sha3Args) UnmarshalJSON(b []byte) (err error) {
 type FilterOptions struct {
 	Earliest int64
 	Latest   int64
-	Address  string
+	Address  interface{}
 	Topic    []string
 	Skip     int
 	Max      int
@@ -211,9 +212,22 @@ type FilterOptions struct {
 
 func toFilterOptions(options *FilterOptions) core.FilterOptions {
 	var opts core.FilterOptions
+
+	// Convert optional address slice/string to byte slice
+	if str, ok := options.Address.(string); ok {
+		opts.Address = [][]byte{fromHex(str)}
+	} else if slice, ok := options.Address.([]interface{}); ok {
+		bslice := make([][]byte, len(slice))
+		for i, addr := range slice {
+			if saddr, ok := addr.(string); ok {
+				bslice[i] = fromHex(saddr)
+			}
+		}
+		opts.Address = bslice
+	}
+
 	opts.Earliest = options.Earliest
 	opts.Latest = options.Latest
-	opts.Address = fromHex(options.Address)
 	opts.Topics = make([][]byte, len(options.Topic))
 	for i, topic := range options.Topic {
 		opts.Topics[i] = fromHex(topic)