You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
As part of efforts to separate indexing logic from agents, we've built (scribe #114) and (omnirpc #135). The final step here to making the off-chain agents invulnerable to chain-watching induced errors is configuring the indexer at a domain level. Currently, for notary (#77) we start an indexer to sync messages. This performs getLogs on the contracts and ignores every event from origin except for dispatch. Leaving starting this loop up to the notary will create the need to seperate dbs at an agent level despite these agents performing the same requests and makes testing harder.
Additionally, storing both agent level and indexer level data in the MessageDB interface creates the potential for logic errors in future work. Instead, we can do the following.
funcNewIndexer(configDomainConfig, db ){}
DomainConfigstruct {
// Standard domain config (e.g. rpc, chain id, etc)DestinationAddress common.AddressOriginAddress common.AddressConfirmationThresholduintStartHeightuint32AttestationCollector common.Address
}
The indexer can then sync all events whichever of these contracts is not blank common.Adress{} != domainConfig.x and any agent can pull from that. Crucially, the IndexerDB exposes two types IndexWriter which is only used by the indexer and IndexReader which all agents use.
Each Notary, Broadcaster, Guard etc each have their own seperate db stores with the prefix based off the id speficied in the config.
The text was updated successfully, but these errors were encountered:
As part of efforts to separate indexing logic from agents, we've built (scribe #114) and (omnirpc #135). The final step here to making the off-chain agents invulnerable to chain-watching induced errors is configuring the indexer at a domain level. Currently, for notary (#77) we start an indexer to sync messages. This performs getLogs on the contracts and ignores every event from
origin
except for dispatch. Leaving starting this loop up to the notary will create the need to seperate dbs at an agent level despite these agents performing the same requests and makes testing harder.Additionally, storing both agent level and indexer level data in the
MessageDB
interface creates the potential for logic errors in future work. Instead, we can do the following.The indexer can then sync all events whichever of these contracts is not blank
common.Adress{} != domainConfig.x
and any agent can pull from that. Crucially, theIndexerDB
exposes two typesIndexWriter
which is only used by the indexer andIndexReader
which all agents use.Each
Notary
,Broadcaster
,Guard
etc each have their own seperate db stores with the prefix based off the id speficied in the config.The text was updated successfully, but these errors were encountered: