Context
The Universal Popup and Dashboard applications are currently designed around a single enforcer:
ERC20TransferAmountEnforcer.sol
This was done on purpose to limit the complexity of building an initial prototype. Now that a working end-to-end stack is built, it's time to upgrade our backend system to handle the complexity of dynamic enforcers.
Scope
The upgrade will touch numerous applications, packages and will require new taxonomy system for describing delegations.
Delegation Taxonomy System
Universal is focused on the "productization" of the Delegation Framework and as such we care about the classification and grouping of delegations enforcers.
For example the ERC20TransferAmountEnforcer enforcer is classified as a DebitAuthorization in the Universal stack.
And we expect that DebitAuthorization classification to be extended with enforcers like BlockNumberEnforcer.sol and TimestampEnforcer.sol without fundamentally changing the nature of the DebitAuthorization functionality.
In other words an authorization classified as DebitAuthorization requires the ERC20TransferAmountEnforcer enforcer, but can optionally include other enforcers to further constrain the core delegation scope.
Packages
The packages/universal-sdk module should be updated to support the new Universal Delegation Taxonomy System.
- Automatically detect classification by analyzing the enforcer collection.
- Include a warning system for enforcer collections that aren't classified.
- Canonical source for enforcer collection types i.e. DebitAuthorization, DebitAuthorizationWithExpiry, DebitAuthorizationWithNonce, etc...
The packages/universal-delegations-sdk module should be updated to handle encoding/decoding for all supported enforcers.
Applications
The apps/api-delegations application should be updated to support the new taxonomy system, encoding/decoding and possibly updates to delegation search capabilities.
The apps/popup application should be updated to render different delegation classifications and provide users with clear explanations about the expected authorization behaviors.
The apps/wallet application should be updated to support the TimestampEnforcer.sol enforcer in the app/finance/authorizations route view render.
Context
The Universal Popup and Dashboard applications are currently designed around a single enforcer:
ERC20TransferAmountEnforcer.solThis was done on purpose to limit the complexity of building an initial prototype. Now that a working end-to-end stack is built, it's time to upgrade our backend system to handle the complexity of dynamic enforcers.
Scope
The upgrade will touch numerous applications, packages and will require new taxonomy system for describing delegations.
Delegation Taxonomy System
Universal is focused on the "productization" of the Delegation Framework and as such we care about the classification and grouping of delegations enforcers.
For example the
ERC20TransferAmountEnforcerenforcer is classified as aDebitAuthorizationin the Universal stack.And we expect that
DebitAuthorizationclassification to be extended with enforcers like BlockNumberEnforcer.sol and TimestampEnforcer.sol without fundamentally changing the nature of theDebitAuthorizationfunctionality.In other words an authorization classified as
DebitAuthorizationrequires theERC20TransferAmountEnforcerenforcer, but can optionally include other enforcers to further constrain the core delegation scope.Packages
The
packages/universal-sdkmodule should be updated to support the new Universal Delegation Taxonomy System.The
packages/universal-delegations-sdkmodule should be updated to handle encoding/decoding for all supported enforcers.Applications
The
apps/api-delegationsapplication should be updated to support the new taxonomy system, encoding/decoding and possibly updates to delegation search capabilities.The
apps/popupapplication should be updated to render different delegation classifications and provide users with clear explanations about the expected authorization behaviors.The
apps/walletapplication should be updated to support theTimestampEnforcer.solenforcer in theapp/finance/authorizationsroute view render.