AbstractRouter
AbstractRouterβ
Partial implementation and requirements for liquidity routers.
boundMakerContractsβ
mapping(address => bool) boundMakerContracts
the bound maker contracts which are allowed to call this router.
onlyBoundβ
modifier onlyBound()
This modifier verifies that msg.sender
an allowed caller of this router.
boundOrAdminβ
modifier boundOrAdmin()
This modifier verifies that msg.sender
is the admin or an allowed caller of this router.
MakerBindβ
event MakerBind(address maker)
logging bound maker contract by emitting this data, an indexer will be able to keep track of what maker contracts are allowed to call this router.
Parametersβ
Name | Type | Description |
---|---|---|
maker | address | the maker address. This is indexed, so that RPC calls can filter on it. |
MakerUnbindβ
event MakerUnbind(address maker)
logging unbound maker contract by emitting this data, an indexer will be able to keep track of what maker contracts are allowed to call this router.
Parametersβ
Name | Type | Description |
---|---|---|
maker | address | the maker address. This is indexed, so that RPC calls can filter on it. |
isBoundβ
function isBound(address mkr) public view returns (bool)
getter for the makers: addr => bool
mapping
Parametersβ
Name | Type | Description |
---|---|---|
mkr | address | the address of a maker contract |
Return Valuesβ
Name | Type | Description |
---|---|---|
[0] | bool | true if mkr is authorized to call this router. |
pullβ
function pull(contract IERC20 token, address reserveId, uint256 amount, bool strict) external returns (uint256 pulled)
pulls liquidity from the reserve and sends it to the calling maker contract.
Parametersβ
Name | Type | Description |
---|---|---|
token | contract IERC20 | is the ERC20 managing the pulled asset |
reserveId | address | identifies the fund owner (router implementation dependent). |
amount | uint256 | of token the maker contract wishes to pull from its reserve |
strict | bool | when the calling maker contract accepts to receive more funds from reserve than required (this may happen for gas optimization) |
Return Valuesβ
Name | Type | Description |
---|---|---|
pulled | uint256 | the amount that was successfully pulled. |
pullβ
function __pull__(contract IERC20 token, address reserveId, uint256 amount, bool strict) internal virtual returns (uint256)
router-dependent implementation of the pull
function
Parametersβ
Name | Type | Description |
---|---|---|
token | contract IERC20 | Token to be transferred |
reserveId | address | determines the location of the reserve (router implementation dependent). |
amount | uint256 | The amount of tokens to be transferred |
strict | bool | wether the caller maker contract wishes to pull at most amount tokens of owner. |
Return Valuesβ
Name | Type | Description |
---|---|---|
[0] | uint256 | pulled The amount pulled if successful; otherwise, 0. |
pushβ
function push(contract IERC20 token, address reserveId, uint256 amount) external returns (uint256 pushed)
pushes assets from calling's maker contract to a reserve
Parametersβ
Name | Type | Description |
---|---|---|
token | contract IERC20 | is the asset the maker is pushing |
reserveId | address | determines the location of the reserve (router implementation dependent). |
amount | uint256 | is the amount of asset that should be transferred from the calling maker contract |
Return Valuesβ
Name | Type | Description |
---|---|---|
pushed | uint256 | fraction of amount that was successfully pushed to reserve. |
pushβ
function __push__(contract IERC20 token, address reserveId, uint256 amount) internal virtual returns (uint256 pushed)
router-dependent implementation of the push
function
Parametersβ
Name | Type | Description |
---|---|---|
token | contract IERC20 | Token to be transferred |
reserveId | address | determines the location of the reserve (router implementation dependent). |
amount | uint256 | The amount of tokens to be transferred |
Return Valuesβ
Name | Type | Description |
---|---|---|
pushed | uint256 | The amount pushed if successful; otherwise, 0. |
flushβ
function flush(contract IERC20[] tokens, address reserveId) external
iterative push
for the whole balance in a single call
Parametersβ
Name | Type | Description |
---|---|---|
tokens | contract IERC20[] | to flush |
reserveId | address | determines the location of the reserve (router implementation dependent). |
bindβ
function bind(address makerContract) public
adds a maker contract address to the allowed makers of this router
this function is callable by router's admin to bootstrap, but later on an allowed maker contract can add another address
Parametersβ
Name | Type | Description |
---|---|---|
makerContract | address | the maker contract address |
_unbindβ
function _unbind(address makerContract) internal
removes a maker contract address from the allowed makers of this router
Parametersβ
Name | Type | Description |
---|---|---|
makerContract | address | the maker contract address |
unbindβ
function unbind() external
removes msg.sender
from the allowed makers of this router
unbindβ
function unbind(address makerContract) external
removes a makerContract from the allowed makers of this router
Parametersβ
Name | Type | Description |
---|---|---|
makerContract | address | the maker contract address |
checkListβ
function checkList(contract IERC20 token, address reserveId) external view
allows a makerContract to verify it is ready to use this
router for a particular reserve
checkList
returns normally if all needed approval are strictly positive. It reverts otherwise with a reason.
Parametersβ
Name | Type | Description |
---|---|---|
token | contract IERC20 | is the asset (and possibly its overlyings) whose approval must be checked |
reserveId | address | of the tokens that are being pulled |
checkListβ
function __checkList__(contract IERC20 token, address reserveId) internal view virtual
router-dependent additional checks
Parametersβ
Name | Type | Description |
---|---|---|
token | contract IERC20 | is the asset (and possibly its overlyings) whose approval must be checked |
reserveId | address | of the tokens that are being pulled |
activateβ
function activate(contract IERC20 token) external
performs necessary approval to activate router function on a particular asset
Parametersβ
Name | Type | Description |
---|---|---|
token | contract IERC20 | the asset one wishes to use the router for |
activateβ
function __activate__(contract IERC20 token) internal virtual
router-dependent implementation of the activate
function
Parametersβ
Name | Type | Description |
---|---|---|
token | contract IERC20 | the asset one wishes to use the router for |
balanceOfReserveβ
function balanceOfReserve(contract IERC20 token, address reserveId) public view virtual returns (uint256)
Balance of a reserve
Parametersβ
Name | Type | Description |
---|---|---|
token | contract IERC20 | the asset one wishes to know the balance of |
reserveId | address | the identifier of the reserve |
Return Valuesβ
Name | Type | Description |
---|---|---|
[0] | uint256 | the balance of the reserve |