Standardization for aggregation module #14
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR aims to implement a standard mechanism to reuse & aggregate in logic expressions multiple external contracts ("verifiers") using standard built-in Solidity language to optimize gas consumption and checks, leaving max freedom of implementation to the developer to advanced tricks (e.g., short circuit). These contracts have logic that is NOT controlled by the specific
Checker
or any Excubiae contract, but are managed externally by someone else. TheChecker
uses these contracts to verify specific verifiable attributes defined on thecheck()
. These attributes verify evidence that is enforced by the `policy' that will use them. This diagram exemplifies what is the terminology relationship.To avoid creating an over-engineered parser of logical expressions or new types of abstract
Checker' contracts, we have abstracted at a high level taking it as inherent and necessary to any contract, implementing things directly in the core contracts. This way, any
Base/AdvancedChecker' has a standard mechanism to handle multiple external contracts without having to code them manually (e.g., specifying a set of addresses and extending the current core), and the ability to specify a single encoded `evidence' for each one.More details will be released in the documentation, which will be updated prior to release. This example
[AdvancedVoting](https://github.com/privacy-scaling-explorations/excubiae/blob/main/packages/contracts/contracts/src/test/advanced/AdvancedVoting.sol)
will be updated to demonstrate the new functionality.TODO