Router
State Variables
PERMIT2
IPermit2 public immutable PERMIT2;
Functions
constructor
constructor(IPermit2 permit2);
depositWithPermit2
Deposits amount
of lender.asset()
to lender
using {nonce
, deadline
, signature
} for Permit2,
and gives courierId
a cut of future interest earned by msg.sender
. v
, r
, and s
are used with
lender.permit
in order to (a) achieve 0 balance if necessary and (b) set the courier.
This innoculates Lender
against a potential courier frontrunning attack by redeeming all shares (if any
are present) before assigning the new courierId
. Lender
then clears the permit
ed allowance in deposit
,
meaning this contract is left with no special permissions.
function depositWithPermit2(
Lender lender,
uint256 amount,
uint16 transmittance,
uint256 nonce,
uint256 deadline,
bytes calldata signature,
uint32 courierId,
uint8 v,
bytes32 r,
bytes32 s
) external payable returns (uint256 shares);
depositWithPermit2
function depositWithPermit2(
Lender lender,
uint256 amount,
uint16 transmittance,
uint256 nonce,
uint256 deadline,
bytes calldata signature
) external payable returns (uint256 shares);
repayWithPermit2
function repayWithPermit2(
Lender lender,
bool max,
uint256 amount,
address beneficiary,
uint256 nonce,
uint256 deadline,
bytes calldata signature
) external returns (uint256 units);