zkProofs for Substreams guaranteeing the reliability of the data
Substreams is one of the technologies of The Graph protocol. Like most analytics protocols, Substreams operates off-chain.
To reduce centralization, The Graph implements internal competition, where multiple participants, called indexers, can support the same set of triggers. But this is still not a guarantee of high-quality work, since participants in the protocol may experience various impacts, for example, equipment failures or hacker attacks. Fortunately, the active growth of zkProofs technologies allows us to solve this problem.
Technically, data processing in Substreams consists of 2 stages. 1st is extracting data from the blockchain. Substreams has a special high-performance module for this, called Farehose. Stage 2 is triggers. Triggers are written in rust; now there are quite a large number of them for different tasks.
Accordingly, at each stage of data processing we must be sure that the data:
Substreams announced that they will be enabling zkp support in Firehose. Accordingly, we can expect that the output of the module, along with the data, we will contain proofs of its integrity.
In my project I tried to solve the problem of providing proofs at the 2nd stage. To do this, I used the solution from the nil foundation - zkLLVM. The solution allows to automatically implement the construction of a proof system based on the analysis and transformation of rust code.
To build proofs for arbitrary triggers I used the solution from the nil foundation - zkLLVM. The solution allows to automatically implement the construction of a proof system based on the analysis and transformation of rust code. Also I use rust to develop substreams triggers and analyse substreams code. And I realise Node.js app to integrate all parts of my solutions.