urbit/sur/eth-watcher.hoon
2019-02-25 20:33:16 +01:00

40 lines
835 B
Plaintext

:: watcher: ethereum event log collector
::
|%
++ name @tas
::
++ config
$: node=purl:eyre
from-block=@ud
to-block=(unit @ud)
contracts=(list address:ethereum)
topics=(list $@(@ux (list @ux)))
==
::
++ action
$% [%watch =name =config]
::TODO support modifying existing config for future polling
[%clear =name]
==
::
++ update
$% :: %snap: all known-good logs, sent on-subscribe and on-reorg
::TODO there's probably a way to be more nuanced about what we forgot
:: to cope with a reorg
::
[%snap =snapshot]
:: %vent: newly added logs
::
[%logs =loglist]
==
::
++ snapshot
$: last-heard-block=@ud
heard=(set event-id:ethereum)
logs=loglist
==
::
++ loglist
(list event-log:rpc:ethereum) :: newest first
--