
Aave · Acts onchain
Borrows an asset from an Aave market against collateral you have supplied. The pool lends the amount at the variable rate to the socket, which hands it to the wallet, opening or growing the wallet's variable debt position; it only succeeds while your health factor stays above one afterward. The wallet delegates borrowing power for the amount to its socket in the same confirmation. Reach for it after a supply in the same transaction to build leverage, to fund a swap or deposit elsewhere with borrowed capital, or inside a flash loan block to convert a temporary loan into lasting debt. Pair it with account data so a predicate holds the resulting health factor above your floor.
Aave: Wind or Unwind Position



1·Take
Declaring supply_amount as a caller parameter, this takes the collateral figure supplied at execution time.
2·Take
Taking supply_token from the caller names the collateral asset the flow acts on.
3·Take
Resolving aave_market as a caller parameter binds every Aave action here to one market.
4·Take
Next borrow_amount is declared, the caller-supplied figure sizing the debt leg.
5·Take
Rounding out the assets, borrow_token is taken from the caller, naming the debt asset.
6·Take
Finally is_winding is declared as a caller parameter, the flag that picks between the wind and unwind paths.
7·Predicate
An if opens on is_winding equaling 1 (true), routing into the wind branch only when the caller set the flag.
8·Flash loan
On the wind side, a flash loan pulls the supply_amount of supply_token from aave_market, repaid within this transaction.
9·Set
The repayment obligation returned by that flash loan is saved into wind_loan_owed for the coverage check below.
10·Supply
Supplying the supply_amount of supply_token to aave_market mints aTokens to the socket as collateral.
11·Borrow
Against that collateral, the borrow_amount of borrow_token is borrowed from aave_market.
12·Get address
Holding the solver address as a named value sets the destination for the transfer that follows.
13·Get token balance
Reading the supply_token balance held by 0x4844...3a88 captures the holding before routing begins.
14·Transfer tokens
Sending the borrow_amount of borrow_token to the solver hands the borrowed funds over for routing.
15·Get solution
The solver takes the transferred tokens for routing, then the outcome is verified.
16·Get token balance
After routing, the supply_token balance held by 0x4844...3a88 is read again.
17·Calculate
Subtracting the pre-routing balance from the post-routing balance measures how much supply_token routing produced.
18·Compare two values
Comparing that gain against wind_loan_owed tests whether it is greater than or equal to the loan owed.
19·Predicate
A require enforces that comparison be true, aborting if the gain fails to cover wind_loan_owed.
20·End block
Closing the innermost open block ends the wind coverage check.
21·End block
Ending the next open block closes the wind branch.
22·Else branch
Else opens the path taken when is_winding was not 1, the unwind side.
23·Flash loan
On unwind, a flash loan pulls the borrow_amount of borrow_token from aave_market, repaid within this transaction.
24·Set
The repayment obligation returned by that flash loan is saved into unwind_loan_owed for the coverage check below.
25·Withdraw
Using the flash-loaned funds, the supply_amount of supply_token is withdrawn from aave_market back to the socket.
26·Get address
Holding the solver address as a named value sets the destination for the transfer that follows.
27·Get token balance
Reading the borrow_token balance held by 0x4844...3a88 captures the holding before routing begins.
28·Transfer tokens
Sending the supply_amount of supply_token to the solver hands the withdrawn collateral over for routing.
29·Get solution
The solver takes the transferred tokens for routing, then the outcome is verified.
30·Get token balance
After routing, the borrow_token balance held by 0x4844...3a88 is read again.
31·Calculate
Subtracting the pre-routing balance from the post-routing balance measures how much borrow_token routing produced.
32·Compare two values
Comparing that gain against unwind_loan_owed tests whether it is greater than or equal to the loan owed.
33·Predicate
A require enforces that comparison be true, aborting if the gain fails to cover unwind_loan_owed.
34·End block
Closing the innermost open block ends the unwind coverage check.
35·End block
Ending the next open block closes the else branch.
36·End block
Closing the remaining open block completes the composed wind-or-unwind transaction.
On other protocols · 5