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