-
Notifications
You must be signed in to change notification settings - Fork 278
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
Mandatory non-interactive defaults #935
Comments
The original reasoning behind allowing for non-deterministic square layouts was to allow for tighter packing of the square via allowing some form of interaction between the block producer and the users submitting blobs. With recent changes specified in ADR009, and the potential to reduce padding even further with other mechanisms #1161, this might not be needed any more. This would mean that if we wanted to increase the packing efficiency, then it is up to us, and the community, to build such tooling. It also has the benefit of forcing all validators to use an efficient packing algorithm, instead of only the sophisticated ones. Deterministic block layout would allow us to simplify the implementation by not having to wrap PFB transactions with the index when we gossip them. As pointed out by @cmwaters, doing so would significantly simplify the compact blocks implementation, because we would be able to reference the transactions gossiped via its hash. Not only that, but it would also stop block producers from arbitrarily setting the max square size. Notably, deterministic block layouts might limit other features that we have discussed, such as adding priority metadata to specific blobs within the same namespace, or allowing for custom ordering of blobs in the same namespace. Ideally, we would make a decision for this before incentivized testnet, but we might not have the bandwidth. From an implementation point of view, it should be pretty straight forward. |
I would be in favour of mandatory non-interactive default rules, but I do not know the consequences and possible limitations. Custom ordering within the same namespace could still be possible if the deterministic block layout has an ordered set of transactions as an input. The order can be specified in the input. The only downside is that it would follow the non-interactive default rules if that is one. |
I would like to elaborate on some of these points:
|
If we have mandatory non-interactive default rules, then we will get a nice side effect that the square can be recomputed given an ordered list of transactions. This could enable more compact storage requirements for full nodes, in particular archival nodes. Because computation is less expensive than storage. |
Per recent sync discussion, we are moving forward with this! and it will be incorporated before mainnet. |
Discussion
Non-interactive default rules are currently framed as optional.
However, parts of the current implementation assume that non-interactive defaults are mandatory (e.g. inclusion/paths.go). If desired, we can modify the current implementation to support optional non-interactive defaults. Before we do so, I'm wondering why non-interactive defaults are optional rather than mandatory (i.e. a block validity rule)?
The text was updated successfully, but these errors were encountered: