The specification for the Sigma Layer Protocol and Various Components
View the Sigma Layer Protocol Spec Overview for a high level overview of the protocol and its components.
- The "Data Structures" section is not complete and needs to be filled out in more detail, although a lot of the code for them has already been written and played around with.
- Archive Nodes at a full 1mtps realization is not sustainable (like 3petabytes of data per year or more). A better eventual solution is to enable archiving on a per domain basis. This way, Apps can run their own archive nodes for catastrophic recovery.
- The process of node reading data out of the "Sequencer Hash Chain Buffer" is clunky since it requires calls to "eth_getStorageAt" (used in "Building State From Proofs"). This could be improved with a more formal getter, but dealing with manual storage slots for this is also a thing in the "Sequence Block Finalization Proof" section. Perhaps it shouldn't be a formal solidity array and instead a pure assembly solution where we are reading/writing to specific storage slots directly?
- "Block Duration" may be able to be increased to 1 second or more. It was originally kept short because the Nodes RPC API only supports communicating on a per block basis. Obviously this induces a direct lag on applications, so it was kept small. However, we could introduce a way for apps to stream Data Entries from a Node on a per Domain Basis. With that as a solution, we could increase the blocktime and cut down on some of the processing and storage overhead. The only place this 1 second lag would be felt is during the proving process (block finalization and conditional proving to app contracts).