beginning work on method polling; first need to generate list of token holder address in a completely generic/contratc agnostic fashion. Created address retriever that can iterate through any given contract's watched events, finding the inputs/arguments with address type, and generate a list from those values. Edit: Contract objects now cache every event emitted address as its event logs are transformed into the repo to grow a list of contract associated addresses as we go

This commit is contained in:
Ian Norden
2018-11-04 21:37:31 -06:00
parent e9dbd771e5
commit b459cf35ed
23 changed files with 889 additions and 265 deletions
+12 -4
View File
@@ -60,13 +60,14 @@ Requires a .toml config file:
}
func omniWatcher() {
ticker := time.NewTicker(5 * time.Second)
defer ticker.Stop()
if contractAddress == "" && len(contractAddresses) == 0 {
log.Fatal("Contract address required")
}
if !methodsOn && !eventsOn {
log.Fatal("Method polling and event watching turned off- nothing to do!")
}
if len(contractEvents) == 0 || len(contractMethods) == 0 {
var str string
for str != "y" {
@@ -90,6 +91,9 @@ func omniWatcher() {
}
}
ticker := time.NewTicker(5 * time.Second)
defer ticker.Stop()
rawRpcClient, err := rpc.Dial(ipc)
if err != nil {
log.Fatal(fmt.Sprintf("Failed to initialize rpc client\r\nerr: %v\r\n", err))
@@ -116,7 +120,8 @@ func omniWatcher() {
contractAddresses = append(contractAddresses, contractAddress)
for _, addr := range contractAddresses {
t.Set(addr, contractEvents)
t.SetEvents(addr, contractEvents)
t.SetMethods(addr, contractMethods)
}
err = t.Init()
@@ -137,6 +142,9 @@ func init() {
omniWatcherCmd.Flags().StringVarP(&contractAddress, "contract-address", "a", "", "Single address to generate watchers for")
omniWatcherCmd.Flags().StringArrayVarP(&contractAddresses, "contract-addresses", "l", []string{}, "List of addresses to generate watchers for")
omniWatcherCmd.Flags().BoolVarP(&eventsOn, "events-on", "o", true, "Set to false to turn off watching of any event")
omniWatcherCmd.Flags().BoolVarP(&methodsOn, "methods-on", "p", true, "Set to false to turn off polling of any method")
omniWatcherCmd.Flags().StringVarP(&contractAddress, "methods-off", "a", "", "Single address to generate watchers for")
omniWatcherCmd.Flags().StringArrayVarP(&contractEvents, "contract-events", "e", []string{}, "Subset of events to watch; by default all events are watched")
omniWatcherCmd.Flags().StringArrayVarP(&contractEvents, "contract-methods", "m", []string{}, "Subset of methods to watch; by default all methods are watched")
omniWatcherCmd.Flags().StringVarP(&network, "network", "n", "", `Network the contract is deployed on; options: "ropsten", "kovan", and "rinkeby"; default is mainnet"`)
+2
View File
@@ -35,6 +35,8 @@ var (
network string
contractAddress string
contractAddresses []string
eventsOn bool
methodsOn bool
contractEvents []string
contractMethods []string
)