Limits and Performance
Brevis is built as a highly performant and highly scalable ZK Coprocessor. As Brevis is currently running in Alpha mainnet with a low-capacity prover infrastructure, there are some limits in the public version worth mentioning here. However, note that our developer partners have implemented use cases handling more than 100X more scale than the public version. Therefore, we suggest developers to use the public version as a testbed for now and talk to us about your production launch.
We also provide a brief overview of some performance benchmarks.
Data Access Limits in Public Alpha
The limits below are set up in a data-driven way according to Ethereum historical trace, which should cover >99% use cases.
If your project requests higher limits, please reach out to us. Brevis can support much higher data limits on a partner-request basis.
Transaction
Only transactions of type 0 (legacy) and type 2 (dynamic fee) are supported.
Storage
The maximum length of a storage value is 32 bytes.
Application Circuit Size Limit
Circuit size is described by a metric called "constraints". The constraints number is printed to console whenever you compile your circuit. Your circuits will have a constraints upper limit of 2^26.
Application Circuit Output Limit
There is no artificially imposed upper limit for the amount of circuit outputs you can have, but the more outputs you have, the bigger your circuit will be. The amount of outputs will be bound by the circuit size limit described above.
Performance Benchmarks
Brevis will give you the lowest operation overhead, cost and the best user experience for your dApps. Brevis is highly horizontally scalable and can easily support much higher scalability than the current publicly available version. Please contact us if you have large-scale use cases.
The current public deployment is supported by a tiny cluster of 2 AWS servers with low-cost commodity hardware. In this deployment, Brevis achieves 5-10X faster proving performance than other solutions with comparable configuration of limits. See below benchmarks to get an idea.
Data Type | Number of Data Points | End-to-end Coprocessing Time* |
---|---|---|
Transaction Receipt | 64 | 58s |
Transaction Receipt | 256 | 68s |
Transaction Receipt | 1024 | 127s |
Transaction Receipt | 4096 | 344s |
Storage Slot | 64 | 69s |
Storage Slot | 256 | 81s |
Storage Slot | 1024 | 142s |
Storage Slot | 4096 | 350s |
Transaction | 64 | 65s |
Transaction | 256 | 77s |
Transaction | 1024 | 144s |
Transaction | 4096 | 323s |
*End-to-end time here account for the time from the query to the App Service to the completion of aggregated application and data access proof generation.
Last updated