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

Tracking: Non-interactive defaults #382

Closed
4 tasks done
Tracked by #514
evan-forbes opened this issue May 5, 2022 · 4 comments · Fixed by #673
Closed
4 tasks done
Tracked by #514

Tracking: Non-interactive defaults #382

evan-forbes opened this issue May 5, 2022 · 4 comments · Fixed by #673

Comments

@evan-forbes
Copy link
Member

evan-forbes commented May 5, 2022

With our current message inclusion check, we are not checking the location of the messages, only that each message has a corresponding commitment in a MsgPayForData. This works for ensuring that each message was included, but this doesn't actually check that the commitment is actually a subtree root to one of the data availability header row or column roots.

In order to do this, we have to have block producers organize the message layout to follow the non-interactive defaults. This will involve a refactor during the app's PrepareProposal call, along with adding the message starting location to wrapped txs.

Additionally, we need validators and full nodes to check that each share commitment is actually a subtree root to one of the data availability headers. This will require a refactor to the app's ProcessProposal call, and is blocked by the functionality described in the above paragraph.

A huge bonus would be if we would also implement message inclusion fraud proofs, but this does not have to be completed to close this issue

@evan-forbes
Copy link
Member Author

I have this listed as an incentivized testnet feature for now, as I don't think we will have it ready in time for testnet considering our other priorities, BUT we can (and should imho) obviously include this in an upgrade to testnet after we finish.

@rootulp
Copy link
Collaborator

rootulp commented Sep 9, 2022

[Question] I discovered https://github.com/celestiaorg/celestia-core/blob/v0.34.x-celestia/pkg/prove/proof.go#L101-L109 which assumes that there is no padding between compact shares. Does TxInclusion in celestia-core also need to be updated to adhere to non-interactive-defaults behavior?

@evan-forbes
Copy link
Member Author

evan-forbes commented Sep 9, 2022

I discovered https://github.com/celestiaorg/celestia-core/blob/v0.34.x-celestia/pkg/prove/proof.go#L101-L109 which assumes that there is no padding between compact shares. Does TxInclusion in celestia-core also need to be updated to adhere to non-interactive-defaults behavior?

whoops yeah great point, forgot to write this down. it definitely will, as creating proofs requires the entire row, which will likely include message shares.

as mentioned in the audit this morning by Sergio, we should look into how to use the blockstore in the app, we might just be able to move that endpoint there. It might slightly annoying to change in the sdk, but totally doable.

we could also move over the data commitment rpc endpoint if that's the case

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
No open projects
Archived in project
2 participants