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
An authorizing proxy contract is a contract A which provides controlled access (via calls) to a contract B, using any access-control mechanism.
Our experiment with the TerminusControllerFacet showed the difficulty of creating and maintaining custom authorization proxies to other contracts. Doing so especially for upgradable contracts would almost force the proxy itself to be upgradable.
The same constraints that make it difficult to maintain custom hand-written authorization proxy contracts also make it difficult to create and maintain such contracts through code generation.
There are in general two strategies to achieve the kind of abstraction required to create an authorizing proxy wrapper around arbitrary contracts:
Build-time abstractions - e.g. custom hand-written contracts, code generation
Run-time abstractions - e.g. a registry contract for authorization checks on entrypoints to an implementation contract
Our experiments with build-time abstractions indicate that that is the wrong approach to a proxy abstraction.
This issue proposes we implement an authorizing proxy using the same principles as EIP-2535.
Our authorizing proxy contract will map implementation contract entrypoints to Terminus pools (and whether a caller must hold a token or burn it to make a call).
We will also generalize this implementation into an interface which will support arbitrary authorization mechanisms.
The text was updated successfully, but these errors were encountered:
An authorizing proxy contract is a contract
A
which provides controlled access (via calls) to a contractB
, using any access-control mechanism.Our experiment with the
TerminusControllerFacet
showed the difficulty of creating and maintaining custom authorization proxies to other contracts. Doing so especially for upgradable contracts would almost force the proxy itself to be upgradable.The same constraints that make it difficult to maintain custom hand-written authorization proxy contracts also make it difficult to create and maintain such contracts through code generation.
There are in general two strategies to achieve the kind of abstraction required to create an authorizing proxy wrapper around arbitrary contracts:
Our experiments with build-time abstractions indicate that that is the wrong approach to a proxy abstraction.
The EIP-2535 standard for multi-faceted proxy contracts shows the viability of creating such a proxy using run-time abstractions.
This issue proposes we implement an authorizing proxy using the same principles as EIP-2535.
Our authorizing proxy contract will map implementation contract entrypoints to Terminus pools (and whether a caller must hold a token or burn it to make a call).
We will also generalize this implementation into an interface which will support arbitrary authorization mechanisms.
The text was updated successfully, but these errors were encountered: