We’re thrilled to introduce Ocelloids, our multi-chain monitoring SDK tailored for Substrate networks and smart contracts. Explore it here: Ocelloids GitHub.
The highlights of Ocelloids SDK:
Composable Reactive Streams — Easily filter blockchain data and react to occurrences of interest using composable reactive streams.
Data Sources — Retrieve data from extrinsics, blocks, events and storage.
Powerful Query Operators — Filter data using integrated operators that support complex queries in the Mongo query language. Includes support for big numbers and advanced features such as dynamic queries.
Flexible Type Conversions — Seamlessly convert data into a terse queryable format.
Extended Context Types — Extend base generic events and extrinsics with contextual information such as block number, block position, extrinsic position, etc.
Abstraction of Common Patterns — Simplify development and reduce boilerplate code by abstracting common patterns such as utility batch calls.
Multi-Chain Support — Interact with multiple networks.
Pallet-Specific Modules — Modules designed to handle use cases related to a particular pallet, such as tracking calls and events from the contracts pallet.
We have some example applications that you can find here of some use cases that include:
Use with Smoldot
Monitor ink! contract messages
Track account balance fluctuations
Oversee sovereign accounts across parachains
Ocelloids SDK’s development was generously supported by the Web3 Foundation. At SO/DA zone, we’re dedicated to enhancing Ocelloids, envisioning a user-friendly monitoring portal for running and managing agents.
Our journey involves continuous enhancements and additions. Please drop us any feedback, suggestions, and criticisms that would help us to build a robust monitoring solution for the Substrate ecosystem.
Glad to hear this and thank you for sharing your project and write-up. We will definitely take it into account in our next development plans.
Precisely we are working on a proposal for a next W3F grant that matches nicely with your questions.
The overall vision is to build an open-source system, that you can self-host or make use of a hosted version, for running and managing monitoring agents. We plan to have it integrated with standard platforms like Prometheus and Grafana for time series of events of interest and alerting. We also have the plans for an open marketplace for monitoring programs and data which could be a decentralised network.
Here we have a PDF of some mock-ups of the monitoring portal:
We would appreciate any feedback or suggestions that you may have!
BTW, with regards to your write-up on a Polkadot native DApp for monitoring, we are super keen to build our monitoring service decentralised and have been thinking about how this could be done. We’ve checked how Forta works and they rely on “centralised” components to monitor the SLA of the bots. We envision a similar solution, but we’re still exploring how it could be made more decentralised while preserving the uptime and reliability of the agents. If you know of some project that we can get inspiration from, or if you have some ideas we would love to hear about them!
Our SDK is not limited to just relaying events. You can express complex monitoring logic for events, extrinsics, states, smart contract calls and mix it up with other capabilities like creating account graphs, following addresses etc. There are some examples in the repo.
The agents will bundle vertical business logic ready to be used, e.g. anomaly detection over extracted events of interest. Note that these events are not just onchain events but curated or extracted data points (we call it events of interest). Think of it as complex events processing. Ref Complex event processing - Wikipedia
Our primary focus will be on providing logic for security and compliance
We separate the data from the alerting, akin to Prometheus. This will allow us to offer interesting curated data sets.
We aim to make it easy to integrate with existing monitoring and incident response systems
Adding actuator to the agents is something that we have in mind, but we want to first tackle the sensing part