Manage Warp Route Limits on xERC20 and FiatToken
xERC20 Deployments
Warp Routes support xERC20
tokens. Follow these steps to configure xERC20
for Warp Route usage:
- Ownership Transfer:
- Ensure that the ownership of the
xERC20
contract is transferred to a secure multisig for security purposes. This step is crucial to prevent unauthorized changes. - The
xERC20
contract uses OpenZeppelin'sOwnable
interface. Use thetransferOwnership
function to complete this step.
- Mint Limit Configuration:
- The minting and burning limits for the Warp Route contract are managed through the
setLimits
function in thexERC20
contract. This function must be called by the contract owner.- The
xERC20
contract uses a 24-hour window to manage limits. This is defined by the_DURATION
variable, which is set to 1 days (24 hours). The current available limits are calculated dynamically using the_getCurrentLimit
function. - If 24 hours (
_DURATION
) have passed since the last use, the limit will automatically restore to the fullmaxLimit
.
- The
- Ensure limits are appropriate for the expected volume to prevent disruptions. Review and adjust the limits based on transaction volumes and expected usage patterns.
FiatToken Deployments
Warp Routes support Circle's Bridged USDC in the form of a minter for FiatToken
(See more on the repo for documentation). There are three roles that are relevant on the FiatToken
and MasterMinter
contracts:
MasterMinter
owner is the account that can set controllers and minters.MasterMinter
controller is the account that can set the mint limits for its assigned minters.MasterMinter
minter is the account that can actually callmint
onFiatToken
.
The owner and controller should typically be set to a Safe multisig for enhanced security, the minter is the Warp Route contract address on the local chain. Mint limits for FiatToken
are absolute, meaning they do not reset automatically and must be updated if required.
There are three actions that should be set on the MasterMinter
contract to be ready for usage:
- Remove the previous test controller::
- As the owner, remove the previous test controller via the
removeController(address _controller)
function
- Set the controller and minter:
- As the owner, you should set the controller and minter via the
configureController(address controller, address worker)
funcition. The controller can be the same as the owner, the minter should be the warp route address.
- Set the mint limit for the minter:
- As the controller, you should set the mint limit for the minter via the
configureMinter(uint256 _newAllowance)
function. This limit is not being continuously reset, so either set it to a sufficiently large value (likecast max-uint
) or monitor the usage and adjust accordingly.