> For the complete documentation index, see [llms.txt](https://calnix.gitbook.io/aave-book/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://calnix.gitbook.io/aave-book/functions/borrow.md).

# borrow

## Overview

This function is called when the user wishes to take out a loan. Since Aave is an overcollateralized borrowing protocol, users can borrow up to a fraction of their deposited collateral.

{% hint style="info" %}
Before being able to call `borrow`, users must have deposited collateral via `supply`.
{% endhint %}

<img src="https://1829638638-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0k7YXwFGMFZcsyqkM4q1%2Fuploads%2Fl1bzv86Yeuni7J5WH8M4%2Ffile.excalidraw.svg?alt=media&amp;token=892429f6-b548-4aac-b04d-aa43332e4dc4" alt="" class="gitbook-drawing">

* `executeBorrow` contains the core logics of the borrow function

## executeBorrow

<figure><img src="https://1829638638-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0k7YXwFGMFZcsyqkM4q1%2Fuploads%2FMDVQlirN3hX8grOKqy8L%2Fimage.png?alt=media&amp;token=1fd58936-0ff9-474c-b829-f83036f5f75f" alt=""><figcaption></figcaption></figure>

### Execution flow

* [ ] <mark style="color:orange;">cache</mark>
* [ ] <mark style="color:orange;">updateState</mark>
* [ ] getIsolationMode
* [ ] validateBorrow
* [ ] mint debt token
* [ ] setBorrowing&#x20;
* [ ] update IsolationMode debt
* [ ] <mark style="color:orange;">updateInterestRates</mark>
* [ ] transfer underlying to user

We will breakdown and examine the unique sections of logics within **executeBorrow**. Code delineated in orange are common functions and can be explored in that [section](/aave-book/functions/common-functions.md).

## Visual Aid

{% embed url="<https://link.excalidraw.com/readonly/gqyCixD4EOin748pMpq8?darkMode=true>" %}
