celestia-app icon indicating copy to clipboard operation
celestia-app copied to clipboard

Introduce v2 `Blob` type with verified signer

Open cmwaters opened this issue 10 months ago • 15 comments

Summary

Parent issue: https://github.com/celestiaorg/celestia-app/issues/2977

This proposal is based on my understanding of a feature request from Sovereign Labs and a feature I believe would apply to all enshrined rollups: these are all rollups where one or more addresses are whitelisted and only blobs from those accounts are deemed valid.

Proposal

To implement this we would first need to modify the blob protobuf:

message Blob {
  bytes namespace_id = 1;
  bytes data = 2;
  uint32 share_version = 3;
  uint32 namespace_version = 4;
  string signer = 5;
}

Given proto's backwards compatibility, users could still submit the old Blob type and signer would just be an empty string. The new block validity rule would thus be that if the signer was not empty, then it must match that of the PFB that references it.

However, when decoding the Blobs from the Share format, older versions would ignore the signer regardless if it were filled or not. Thus for backwards compatibility for the read path we would need to ensure that Blobs that use the signer, must use the v2 namespace version. Older software would thus error about not supported namespaces version when trying to read from it but could still support the first blob version without needing to upgrade.

We may want to consider other data that the Celestia validators could verify as an additional service to the rollup. These however don't need to be bundled up with the signer addition and could simply be added later.

cmwaters avatar Apr 15 '24 10:04 cmwaters