Delegable Actions
Last updated
Last updated
Delegable Actions allow third-party contracts (plugins) to perform specific operations on behalf of users within the Curvance ecosystem. This delegation system offers a more flexible and powerful alternative to standard ERC20 approvals, enabling opportunities for automation, complex strategies, and improved user experiences.
Any Curvance contract that inherits from PluginDelegable
can support delegate-triggered operations through functions that typically end with a for postfix (e.g., borrowFor
, withdrawFor
, leverageFor
). This pattern ensures consistent delegate authorization checks across the protocol.
The delegation system provides several security advantages over traditional approaches:
Granular control: Users can grant and revoke specific action permissions to different addresses
Emergency revocation: Users can revoke all delegations at once by incrementing their approval index
Time-lock protection: Optional delegation lockdown with a cooldown period
Delegations exist across all Curvance contracts simultaneously, using the Central Registry to track and validate delegation permissions throughout the protocol.
Description: Determines whether a delegate address has permission to act on behalf of a specified user.
Contract: CentralRegistry
Function signature:
address
user
The address to check whether delegate has delegation permissions for
address
delegate
The address to check delegation permissions of user
Return data:
bool
Returns true if delegate is authorized to act on behalf of user
Description: Approves or restricts a delegate's authority to operate on the caller's behalf. This is the primary method for users to control their delegation permissions.
Function signature:
address
delegate
The address that will be approved or restricted from delegated actions
bool
isApproved
Whether delegate is being approved (true) or restricted (false)
Description: Retrieves a user's current approval index from the Central Registry. This index is incremented when a user wants to revoke all delegations.
Function signature:
address
user
The user to check delegated approval index for
Return data:
address
user
The user to check delegated approval index for
Description: Checks whether delegation is temporarily or permanently disabled for a specified user.
Function signature:
address
user
The user to check delegation status for
Return data:
bool
Returns true if user has delegation disabled or if their cooldown period has not expired
Description: Returns a user's approval index, which is used to authorize delegates across the entire protocol.
Function signature:
address
user
The user to check delegated approval index for
Return data:
uint256
Current approval index for the specified user
Description: Increments a caller's approval index, immediately revoking all delegate permissions across all Curvance contracts.
Function signature:
Description: Determines whether a user has delegation disabled, either intentionally or due to a cooldown period.
Function signature:
address
user
The user to check delegation status for
Return data:
bool
Returns true if user has delegation disabled or if their cooldown period has not expired
Description: Sets a caller's status for whether to allow new delegations or not. When re-enabling delegation, the user's configured cooldown period applies.
Function signature:
Parameters:
bool
delegationDisabled
true to disable delegation, false to enable delegation (after cooldown)