Processing DDEX messages using EIP4844 BLOB transactions and ZK proofs #46
Replies: 3 comments 2 replies
-
Re TBD points:
|
Beta Was this translation helpful? Give feedback.
-
I’m writing this post to share the design decisions and the reasoning behind the features we’ve implemented in the Protocol. As we work towards refining the system, we faced several challenges, particularly in ensuring the integrity of data passed between Data Providers, Validators, and the Risc0 guest code. In this post, I’ll walk through the solutions we considered, the trade-offs involved, and how we plan to address potential risks as we continue to improve the protocol. Input Integrity in ZK ProofsThe protocol aim to be a decentralized platform that creates a secure and queryable registry of DDEX messages. The process involves Data Providers uploading blobs to the blockchain, along with cryptographic proofs of their validity. Validators download these blobs, process them using verifiable computation (Risc0 guest code), and generate receipts that are validated on-chain. To ensure the integrity of this process, we must prove that both Data Providers and Validators are referencing the same blob without introducing inefficiencies or vulnerabilities. The problemA key challenge we faced was tying a blob’s entry in the Solution 1: KZG Proof Verification in Risc0In this solution, the Risc0 guest code input includes three elements: Workflow:
This solution provides strong cryptographic guarantees but has a significant drawback: verifying KZG proofs within the Risc0 guest code is computationally expensive, leading to very long processing times for each blob. Solution 2: Using SHA-2 for Cross-VerificationIn this approach, the Data Provider calculates both the Workflow:
Potential Risk: Malicious Data ProviderA Data Provider may attempt to act maliciously by passing a Potential Risk: Malicious ValidatorA Validator may try to submit dishonest input to the guest code. For example, the Validator might use a blob stored locally on their device. In this case, the Potential Risk: Collusion Between Data Provider and ValidatorA Data Provider may calculate a Third Solution: Proof of EquivalenceInspired by Vitalik Buterin's post on equivalence between polynomial commitment schemes, this solution avoids verifying KZG proofs inside the guest code. Instead, the guest code only evaluates the blob's polynomial at a specific point Workflow:
Benefits: This approach reduces computational overhead in the guest code while maintaining robust validation. |
Beta Was this translation helpful? Give feedback.
-
The first version published, until further notice will be run by white-listed nodes and need to assume $OWN tokens are staked and ignore the issuance, as the $OWN token will only be deployed at a later stage |
Beta Was this translation helpful? Give feedback.
-
Overview of the idea:
Block scheme with the flow:
https://miro.com/app/board/uXjVKthq2gc=/
There are three types of participants in the network:
Data Providers
Data Provider SDK
to send packed DDEX messages as a BLOB using type 3EIP4844
transactionValidators
Validator Node
on their servers/cloudsValidator Node
runs ZK circuit that checks if all messages in the BLOB are compatible with the schema:DDEX MESSAGE SEQUENCER
contractDDEX MESSAGE SEQUENCER
validates the proof and emit extracted data as eventsREGISTRY
DDEX MESSAGE SEQUENCER
contractOWN Protocol Administrators
TBD:
Beta Was this translation helpful? Give feedback.
All reactions