You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
There is a common practical issue with cryptographic building blocks like Spark multi-evaluation in Nova - they operate on a huge amount of data that may come close to or exceed the limit of EVM memory. This complicates the debugging and testing process, since in "best" case it requires preloading this data which, by itself, wastefully consumes a lot of gas, or in "worst" case requires putting the preloading directly into the implementation, making it impractical to use with different data, or just causes OutOfGas exception. To tackle this problem, in #20 we introduce initial integration testing for Spark multi-evaluation which utilises global storage which in practice is limited only by hard-drive of the hardware where the Ethereum node is running.
This approach of utilising the global state for testing requires both infrastructural and development work. Foundry framework that we use for solidity-verifier development already contains software that we need for this, namely the Ethereum node (anvil) and RPC client (cast) used for performing Ethereum API calls (for issuing transactions in particular).
Infra work:
Wrap anvil into Docker and provide it as a self-hosted runner;
Enforce integration testing from Spark multi-evaluation library and contract #20 on CI (most of tooling is ready, but it is necessary to combine everything together into automated pipeline);
Development work:
Populate mentioned integration testing approach using global state to the whole e2e verification;
Implement the utility contract that allows efficient loading the whole public parameters (verifier-key.json) and proof (compressed-snark.json) into the storage considering the requirement of switching to a new format of public parameters / proof.
The text was updated successfully, but these errors were encountered:
There is a common practical issue with cryptographic building blocks like Spark multi-evaluation in Nova - they operate on a huge amount of data that may come close to or exceed the limit of EVM memory. This complicates the debugging and testing process, since in "best" case it requires preloading this data which, by itself, wastefully consumes a lot of gas, or in "worst" case requires putting the preloading directly into the implementation, making it impractical to use with different data, or just causes OutOfGas exception. To tackle this problem, in #20 we introduce initial integration testing for Spark multi-evaluation which utilises global storage which in practice is limited only by hard-drive of the hardware where the Ethereum node is running.
This approach of utilising the global state for testing requires both infrastructural and development work. Foundry framework that we use for solidity-verifier development already contains software that we need for this, namely the Ethereum node (anvil) and RPC client (cast) used for performing Ethereum API calls (for issuing transactions in particular).
Infra work:
anvil
into Docker and provide it as a self-hosted runner;Development work:
The text was updated successfully, but these errors were encountered: