Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[EPIC] Rollups fraud proofs using QGB #142

Closed
5 tasks done
rach-id opened this issue Mar 27, 2023 · 6 comments
Closed
5 tasks done

[EPIC] Rollups fraud proofs using QGB #142

rach-id opened this issue Mar 27, 2023 · 6 comments
Assignees
Labels
contracts enhancement New feature or request

Comments

@rach-id
Copy link
Member

rach-id commented Mar 27, 2023

As part of the efforts dedicated towards having an example of a Celestium, we will need to implement the following:

@rach-id rach-id added enhancement New feature or request contracts labels Mar 27, 2023
@adlerjohn
Copy link
Member

Hmmm. What's the need for decoding the PFB transaction itself? The point of posting the data root was so that the blobs can be used without looking at transactions. An alternative would be to revert to using (potentially in addition to the data root) tuple roots and have each tuple include addition metadata.

@rach-id
Copy link
Member Author

rach-id commented Mar 27, 2023

Thats to prove that a transaction, which has a specific commitment, was posted to Celestia.

We could use the blobs directly, but the proofs will be significantly bigger since we will need to send the whole rollup block to the solidity smart contract to be verified, as opposed to sending only the PFB.

Also, using the blobs or the subtree root doesn't allow us to check whether the blobs were posted to the provided shareIndex. Since, we can prove that some data was posted on some block, but we can't prove its position.

@adlerjohn
Copy link
Member

I'm trying to find where the current scheme was first proposed but I'm drawing a blank. IIRC @musalbas suggested it.

Basically, in the current scheme rollup block producers post a new block to Ethereum and claim it uses a certain range or ranges of shares. The fun thing is those shares don't actually have to be a complete blob, or even from a single blob!

The fraud proof would then prove that a single tx in the rollup is 1) in the data root (only requires proving the tx, not the whole block), and 2) is in the range(s) claimed (trivial).

@rach-id
Copy link
Member Author

rach-id commented Mar 30, 2023

@adlerjohn

  1. in the data root

We can prove that a transaction was posted in the block, but how would we prove that that transaction is the right transaction? We will need to parse it to verify if the commitment and share index is the same as the one in the rollup header.

  1. is in the range(s) claimed (trivial)

This means proving its position in the block? How would we do that?

@adlerjohn
Copy link
Member

how would we prove that that transaction is the right transaction

image

You don't actually need to prove anything about transactions, or blobs. That's the neat part. The rollup block producer just claims "here's this range in the Celestia block, that's the rollup block." That range could be anything. Doesn't have to be a transaction or a blob.

This means proving its position in the block? How would we do that?

Something along the lines of celestiaorg/nmt#49

@musalbas
Copy link
Member

musalbas commented Mar 31, 2023

Even if you wanted to prove the commitment of the blob (without using a range), can't you also do that by using a blob inclusion proof - not a pfb proof? It would be less efficient than proving PFBs though.

rach-id added a commit that referenced this issue May 1, 2023
<!--
Please read and fill out this form before submitting your PR.

Please make sure you have reviewed our contributors guide before
submitting your
first PR.
-->

## Overview

As per the decision in
#142, we
need to add the block size to the data root tuple.


<!-- 
Please provide an explanation of the PR, including the appropriate
context,
background, goal, and rationale. If there is an issue with this
information,
please provide a tl;dr and link the issue. 
-->

## Checklist

<!-- 
Please complete the checklist to ensure that the PR is ready to be
reviewed.

IMPORTANT:
PRs should be left in Draft until the below checklist is completed.
-->

- [ ] New and updated code has appropriate documentation
- [ ] New and updated code has new and/or updated testing
- [ ] Required CI checks are passing
- [ ] Visual proof for any user facing features like CLI or
documentation updates
- [ ] Linked issues closed with keywords

---------

Co-authored-by: Rootul P <rootulp@gmail.com>
@rach-id rach-id self-assigned this Jul 26, 2023
@rach-id rach-id closed this as completed Oct 16, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
contracts enhancement New feature or request
Projects
Development

No branches or pull requests

3 participants