
Boolean · Acts onchain
Steers control flow by comparing two values: branch, loop, or require the condition holds. The verb decides the shape. if, if not, and else if open a branch; for and until open a loop that re-evaluates the comparison every iteration; require reverts the whole transaction when the condition is false. Operators cover equal, not equal, greater, greater or equal, less, less or equal, and, and or. Reach for it to guard a write behind a read, such as requiring a health factor stays above a floor, to branch between two strategies on a price, or to repeat a step until a balance target is met. Use the comparison action when you need the boolean as a value.
Aave: Wind or Unwind Position



1·Take
Opens by declaring supply_amount, a caller parameter set at execution time to size the collateral leg.
2·Take
Declaring supply_token next, a caller parameter, names the collateral asset the flow moves.
3·Take
Taking aave_market as a caller parameter resolves every Aave action in this plug to one market.
4·Take
Following that, borrow_amount is declared, the caller-supplied figure sizing the debt leg.
5·Take
A parameter borrow_token is taken from the caller, naming the debt asset.
6·Take
Rounding out the inputs, is_winding is declared, the caller flag selecting the wind or unwind path.
7·Predicate
An if opens on the is_winding flag equalling 1, entering the wind path only when that holds.
8·Flash loan
On the wind path, a flash loan pulls the supply_amount of supply_token from the market, repaid within this transaction.
9·Set
The repayment obligation from that flash loan is saved into wind_loan_owed for the coverage check below.
10·Supply
Supplying the supply_amount of supply_token to the market mints aTokens to the socket as collateral.
11·Borrow
Against that collateral, the borrow_amount of borrow_token is borrowed from the market.
12·Get address
The Solver is held here as a named value, standing as 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
Testing that gain against wind_loan_owed returns whether it is greater than or equal to the loan owed.
19·Predicate
A require enforces that comparison equal 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
Closing the next open block closes the wind branch.
22·Else branch
An else opens for the unwind path, when the is_winding flag was not 1.
23·Flash loan
On this path, a flash loan pulls the borrow_amount of borrow_token from the market, repaid within this transaction.
24·Set
The repayment obligation from that flash loan is saved into unwind_loan_owed for the coverage check below.
25·Withdraw
Withdrawing the supply_amount of supply_token from the market pulls the collateral back to the socket.
26·Get address
The Solver is held here again as a named value, 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
Testing that gain against unwind_loan_owed returns whether it is greater than or equal to the loan owed.
33·Predicate
A require enforces that comparison equal 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
Closing the next open block closes the unwind branch.
36·End block
Closing the remaining open block completes the composed transaction.