# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
This site has an agentic ask interface you may use to query the documentation dynamically by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.replete.fi/index.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

---

# About Replete

## What is Replete?

Replete is a chain abstracted money market protocol that enables users to borrow and lend various digital assets from any connected blockchain.

To borrow users need to supply crypto assets as collateral. Suppliers earn yield on crypto assets provided as liquidity. Borrowers pay a dynamic interest rate while liquidity suppliers earn interest on assets provided.

<figure><img src="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2FZVOLxgRbUsGdWjh4tVBW%2FChain%20abstracted%20for%20users.jpg?alt=media&amp;token=5d29b451-5a08-4d14-b184-92b4c13a9ae8" alt=""><figcaption></figcaption></figure>

Replete is governed by the community as a [Decentralized Autonomous Organization (DAO)](/governance/replete-dao).

***

## How to interact with Replete?

The easiest way to interact with the protocol is through the user interface (dApp). For both suppliers and borrowers the first step, after learning about the protocol, is supplying a supported token.

<table data-column-title-hidden data-view="cards" data-full-width="false"><thead><tr><th></th><th></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden></th><th data-hidden></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>For users</strong></td><td>Learn how to supply and use the protocol.</td><td><a href="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2FWq4Mf2UJhw8T3BTvWEmu%2Fusers-gb.jpg?alt=media&amp;token=b22de335-a20c-4dfc-b148-0bd6acb79a6c">users-gb.jpg</a></td><td></td><td></td><td><a href="/core-functions/supply">Core Functions</a></td></tr><tr><td><strong>Developer docs</strong></td><td>Interact with the protocol on-chain.</td><td><a href="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2Fs3Ox9yYaAAxsa5nLFCPd%2Fcode-gb.jpg?alt=media&amp;token=b5993696-1c81-432a-85ca-a647b6580864">code-gb.jpg</a></td><td></td><td></td><td><a href="/developers/how-to-supply">Developers</a></td></tr><tr><td><strong>Learn more</strong></td><td>Discover protocol features on connected chains.</td><td><a href="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2FKExHunaRyrWipt31clc0%2Flearn-gb.jpg?alt=media&amp;token=af4c13db-b54d-4c37-a8b6-9b204f54408b">learn-gb.jpg</a></td><td></td><td></td><td><a href="/intro/about-replete/why-replete">Why Replete?</a></td></tr></tbody></table>

Suppliers earn yield based on the borrowing demand of assets supplied. While borrowers interest rate fluctuate depending on the utilization rate of the liquidity pool.

When a supplier deposits assets in the protocol they can borrow against the deposited collateral unless opted out.

{% hint style="info" %}
Note that users can offset the borrowing interest rate by the interest generated on supplied assets but need to manage it actively.
{% endhint %}

***

## Wen Replete?

More information will be shared in due time. Feel free to follow us on [Twitter](https://twitter.com/repletefinance) for updates or come and say *gm* on [Discord](https://discord.gg/rD9GjQVd).

{% hint style="danger" %}
Currently there are **no** tokens in circulation.
{% endhint %}

{% embed url="<https://drive.google.com/file/d/13rK9o_ify2Q7WfC4Y9ceA1IUvzCY8qc1/view?usp=sharing>" %}
Live recording of first Replete AMA.
{% endembed %}


# Why Replete?

Some Replete protocol features

The emergence of blockchain technology has culminated in the deployment of hundreds of chains. Each chain with unique characteristics and features, compete to acquire and onboard users to their chain. To do so, chain isolated applications are often deployed for users to use, these range in the type of utility, yet are generally only accessible to users that are active on the chain.

The reality is that this has hurt user experience and has fragmented availability of liquidity to be exclusive to the chain they call home. User versed in cross chain transactions know too well how difficult and time consuming it can be to operate on a different chain.

> With Replete, users can earn yield, borrow, withdraw and repay to all connected chains from one interface.

Replete aims to help users by abstracting the entirety of the cross-chain process. So users can focus on what they care about. Replete is a universal liquidity protocol where users can manage positions across all connected chains as they wish, from within one interface.

<figure><img src="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2F0OoZJShiRtrepmxZPcLg%2Fprotocol%20features.jpg?alt=media&amp;token=d4d9e27b-4fb1-4b2f-82cb-79ffdd108ce7" alt=""><figcaption><p>Some of the features in a nutshell.</p></figcaption></figure>

### User centric and chain agnostic DeFi

Replete Finance is a non-custodial money market designed and engineered to execute smart contract logic natively cross-chain. The protocol leverages cross-chain infrastructure to be available on various networks.

For users it signifies a true chain abstracted money market experience, minimizing the need for users to care about which chain they are on but about what they can do. Users can seamlessly interact with the protocol from any connected chain without having to leave the UI.

***

### Lending on *all* blockchains

Replete has been built to deploy to any chain without requiring supply side liquidity on destination chain. It is able to do so by leveraging LayerZero's messaging infrastructure, OFT standard, various bridging routes (such as Stargate) and concentrating liquidity and logic on a host chain.

Repletes architecture helps in essence suppliers to earn more by making their assets available on more markets. Borrowers can execute their strategy seamlessly on connected blockchains even on low liquidity chains. Suppliers and protocol earn fees on market demand. Protocol fees can be used to fund operations and community initiatives.

***

### Assets with demand

Replete is positioned to function as the go-to money market for assets being used on destination chain. Supporting blue-chip assets that are crucial for network growth and helping users to experience a flexible money market without vendor locking.

Delivering and empowering real borrow and liquidity volumes to staple, nascent and tail-end networks and ecosystems with assets that have utility and value on destination.

***

### Supporting any OFT standards

Replete has been built to cater to a chain abstracted future. Supporting at launch all OFT standards and empowering protocols adopting the token standard to open a cross-chain money market.

Opening a money market on Replete requires to meet a minimum liquidity and trading volume requirement and is not exclusively limited to OFT standard.

***

### Transact on any chain

Cross-chain transactions require gas on the destination chain for successful delivery. Equally, users require gas on the destination chain to be able to participate in the network. When using Replete, a user receives a standard amount of native gas to the destination wallet.&#x20;

Users can opt a priori to receive a larger native gas airdrop on destination chain. Helping users to receive a larger non-standard amount of gas to conduct more transactions on the network without having to swap for more native gas.&#x20;

***

### Beyond V1

The primordial focus at launch is to expand the surface area of the protocol to more chains, becoming in the process a universal lending protocol for users by covering more chains. Next is helping partners to open a money market for supported tokens, increasing the network effect for the protocols and generating fees for suppliers and treasury.

Both important requirements and bed stone for Replete V2.


# What are use cases for Replete?

Replete is developed for users to execute their strategies as they want beyond the protocol.

#### Some examples users may decide to use Replete for

1. A user may decide to supply collateral on an asset they believe it will appreciate but do not want to sell; borrowing against the collateral allows the user to gain working capital (liquid) at the cost of interest;
2. A user may want to supply to earn yield, but wants to use its assets as collateral to arbitrage opportunities across connected chains;
3. A user may decide to borrow to increase their margin trading position or to hedge against market downturns;
4. A user may decide to borrow instead of selling an asset to circumvent taxable events (capital gains taxes) in certain jurisdictions (country specific).

The decision on how to use Replete is for the user to make. As more functionalities are added, users can expect further utility.


# Are there risks?

Web3 is a nascent industry that has shown that no platform or protocol is truly safe. In the case of Replete, or any DeFi application, there are many risks: liquidation, front end, governance, smart contract, bridging, network and more. Make sure you understand these risks appropriately before engaging with any blockchain application, including Replete.

At a later stage the DAO intends to launch and formalize a bug-bounty program for clarity and transparency on various risk vectors. In the event you have spotted a risk or bug, please reach out to core contributors on [Discord](https://discord.gg/E3NVGCeEvX).

As a general rule of thumb in web3, **do not supply more assets than you can afford to lose**.&#x20;

### Audits

Before deploying to mainnet Replete will undergo security audits. The goal of the audits is to prioritize user funds, community safety and protocol architecture. Upon launch to mainnet more details about security audits will be disclosed.

{% hint style="info" %}
Note that for testnet no security audits have been conducted.
{% endhint %}

Remember that no protocol is truly safe and that as the industry and Replete continues to mature, so will the different risk assessments as well.


# Design Philosophies

Replete has been developed based on several design philosophies, which can be distilled into six pillars. These pillars serve as guiding principles for protocol contributions and act as a crucial reference point when improving any aspect related to the protocol.

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden></th><th data-hidden data-card-cover data-type="files"></th></tr></thead><tbody><tr><td><strong>Product</strong></td><td>Building products that people use. Product first.</td><td></td><td><a href="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2FfCA9wdM4yjOOZPQu8N7a%2Fproduct-gb.jpg?alt=media&amp;token=627596c5-e72a-4be1-8b35-ba40c1f1fb0f">product-gb.jpg</a></td></tr><tr><td><strong>Technology</strong></td><td>Ideas that matter built with technology that scales.</td><td></td><td><a href="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2FFTBlu2dRoaGW2hRIgF6T%2Ftechnology-gb.jpg?alt=media&amp;token=1bdb684b-d9a9-4a46-abdc-3eab53bb51e7">technology-gb.jpg</a></td></tr><tr><td><strong>Security</strong></td><td>Secure development, battle tested code.</td><td></td><td><a href="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2FO766Eqozmb7m2vW8VMa1%2Fsecurity-gb.jpg?alt=media&amp;token=643ba4e2-f4f2-428b-b7ff-520c19b92677">security-gb.jpg</a></td></tr><tr><td><strong>Simple</strong></td><td>Easy user experience for a chain abstracted future.</td><td></td><td><a href="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2FxMth45I8m2lCC7U6aISS%2Fsimple-gb.jpg?alt=media&amp;token=1ad74bfa-dc1e-44a3-9d6d-8aa959a1f37a">simple-gb.jpg</a></td></tr><tr><td><strong>Grounded</strong></td><td>Contributing in service of the protocol and DAO.</td><td></td><td><a href="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2FnIjhk6j1ORZNSa5yM4bT%2Fgrounded-gb.jpg?alt=media&amp;token=655b0147-b182-44a7-9eed-65f097e4e581">grounded-gb.jpg</a></td></tr><tr><td><strong>Memes</strong></td><td>Meme relief for web3 challenges.</td><td></td><td><a href="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2FnErLSnkbpAUkAZJ1kNnS%2Fmemes-gb.jpg?alt=media&amp;token=a9a46a2e-fe80-40ec-89c2-82a062915650">memes-gb.jpg</a></td></tr></tbody></table>

## Design philosophies in practice

### More chains, more volume

Replete Finance is designed to be available on a diverse range of markets (chains) for blue-chip assets, bolstering opportunities for blue-chip asset holders.\
\
Connecting more chains allows protocol stakeholders to participate in more markets. In turn, by integrating additional chains, liquidity providers get to benefit as the liquidity is available on a broader spectrum of the market.

Offering liquidity on one chain, yet earning from all.

### Abstracting cross-chain complexity for regular users

The cross-chain functionality is seamlessly abstracted away for end-users. Abstracting the multi chain complexity for users, is necessary for a more streamlined interchain future.

Suppliers can effortlessly provide liquidity to any of the connected chains using the dApp on their preferred blockchain. Likewise, borrowers can supply collateral to any connected chain and borrow to any destination chain. Repayment occurs in a similar streamlined manner.

### Concentrating liquidity, lower slippage

Rather than requiring deployment a pool on every chain, Replete maintains a unified pool where all liquidity is consolidated. This results in a level of depth that surpasses conventional cross-chain money market reducing slippage and attaining a higher efficiency rate benefitting all participants.

Concentrating collateral on a single chain provides more competitive rates for all stakeholders, benefitting stakeholders on every connected blockchain.&#x20;

### No stables

Replete is intentionally designed to not issue its own stablecoin. While these options have their merits, users benefit from borrowing assets with established use cases in DeFi, enhancing the viability of their strategies. It's about empowering users, not restricting them.


# Under the hood

Replete is a chain abstracted money market that utilizes various technology stacks to operate in a cross-chain environment. The architecture of Replete is designed and engineered by core contributors whilst the lending protocol is based as a fork from Aave V3. Aave has a strong security history with various audits, providing a strong foundation for Replete to base the smart contracts on.

For messaging, Replete leverages cross-chain infrastructure built by LayerZero to support cross-chain transactions. Whilst Stargate is integrated as the main bridge to facilitate transactions for users across connected chains.

<figure><img src="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2FhpOdtjT5Kjg6Ak81qJt2%2FUser%20Supply%20%2B%20Borrow.jpg?alt=media&amp;token=f507a239-dfe6-4b70-89cd-832e3fb33e67" alt=""><figcaption><p>Replete architecture in a nutshell</p></figcaption></figure>

We do take inspirations to improve the protocol for its users. If you have suggestions or ideas, feel free to share them with us on [Discord](https://discord.com/invite/E3NVGCeEvX).

&#x20;


# Supply

Supply liquidity to a Replete empowered market to earn yield from connected chains.

Users can easily supply a supported asset to Replete protocol from any supported chain. This enables the user to earn yield on the asset provided from any chain the market is connected to.

Providing liquidity allows user to participate further in the protocol: either to borrow, withdraw or repay.

### Learn more

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th><th data-hidden></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>For users</strong></td><td>How to <strong>supply</strong> assets to the protocol.</td><td></td><td><a href="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2FtATtdbDFGxe1l0UkLxbs%2Fsupply-gb.jpg?alt=media&amp;token=7bd85c20-01d0-4f68-81de-68f841ae1b26">supply-gb.jpg</a></td><td><a href="/core-functions/supply/how-to-supply">How to supply?</a></td></tr><tr><td><strong>For devs</strong></td><td>How to <strong>supply</strong> to the protocol using code.</td><td></td><td><a href="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2FlzQBV23zGeIQxOSE5tL0%2Fdev-gb.jpg?alt=media&amp;token=9d3da45b-fc4b-4fcd-80e4-625d265eaa7d">dev-gb.jpg</a></td><td><a href="/developers/how-to-supply">How to Supply</a></td></tr></tbody></table>

***

## Supply architecture

In order for user to be able to earn across all chains, Replete utilizes a supply architecture where the protocol logic, liquidity and accounting is hosted on one chain. To chain abstract the supply process, Replete utilizes a combination of messaging, interoperable token standards (such as OFT's) and bridges to maintain unified liquidity on a host chain.&#x20;

From the host chain, the connected blockchains are served with the various [features the protocol has to offer](/intro/about-replete/why-replete). Each transaction to connected chains follow a similar logic as the supply architecture under.

<figure><img src="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2F6rHxEOt2QKUgypxtONBb%2FReplete_Schematics_2.png?alt=media&amp;token=6240d0f8-4ad1-48e1-806e-0a9e9c39a2fa" alt=""><figcaption><p>Simplified supply architecture schematic from connected chains.</p></figcaption></figure>

It is important for users to understand that since the <mark style="color:blue;">host chain for Replete is Arbitrum</mark>, assets supplied to Replete are transferred to the Arbitrum network. Similarly, the receipt of supplied liquidity (rToken) is at present solely available on Arbitrum.

Therefore it is important for users to make sure they control the wallet address on Arbitrum before interacting with Replete.

{% hint style="warning" %}
Note that Arbitrum is the host chain for Replete. Make sure you control the wallet address on Arbitrum before interacting with the protocol.
{% endhint %}

A benefit of this approach is that it allows Replete to scale to numerous blockchains while keeping the state of the protocol atomically correct without exposing the protocol to synchronicity risk that can occur when deploying to multiple chains.

### Learn about

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Withdraw</strong></td><td>Learn more about withdrawing to any chain.</td><td></td><td><a href="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2Ff5wFmnUfkpccca4TDbxo%2Fwithdraw-gb.jpg?alt=media&amp;token=0c9347d4-6234-4e06-9319-2de5f5774a5b">withdraw-gb.jpg</a></td><td><a href="/core-functions/withdraw">Withdraw</a></td></tr><tr><td><strong>Borrow</strong></td><td>Learn more about borrowing to any chain.</td><td></td><td><a href="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2FsJEYQ0yhTGo5k65CFJBk%2Fborrow-gb.jpg?alt=media&amp;token=ba8511e9-896c-4bbf-9220-adcfa61dc771">borrow-gb.jpg</a></td><td><a href="/core-functions/borrow">Borrow</a></td></tr><tr><td><strong>Repay</strong></td><td>Learn more about repaying interest and debt.</td><td></td><td><a href="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2FvtKejtcPZSaNy04MkI39%2Frepay-gb.jpg?alt=media&amp;token=9a7a825e-7ced-417e-83fe-730df978ddf0">repay-gb.jpg</a></td><td></td></tr></tbody></table>


# How to supply?

Supplying liquidity to Replete markets

To **supply** to the protocol the **fastest** and **easiest** way is to navigate to the **web interface (dApp)**. Select the assets and the amount you wish to supply and submit the transaction. Once confirmed, your assets are supplied and you get to earn yield.

Most supply instances on the user application triggers the Chain Abstracted Liquidity Widget interface, where major protocol features are displayed.

<figure><img src="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2FsLzi7u4EXVnWYQW7otO8%2Fimage.png?alt=media&amp;token=ce0e1ad0-915d-4eef-befa-d4100c597230" alt=""><figcaption><p>Liquidity Widget Supply tab.</p></figcaption></figure>

***

### Connect your wallet

First connect your wallet through the UI, this can either be done through the Liquidity Widget or top right corner of the navigation bar.

<figure><img src="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2FXPUjB43ZPpGDTZ4IvWx4%2Fimage.png?alt=media&amp;token=ae9742c6-f3c1-44e5-9d9c-dc949b23fe6c" alt=""><figcaption><p>Connecting your wallet</p></figcaption></figure>

{% hint style="success" %}
Connecting from any network will automatically switch the application to that network if supported.
{% endhint %}

#### Connecting to a different chain

There are a few easy ways to connect to a different networks:

1. Select a different network through your browser wallet;
2. Select a different chain ***from*** the dropdown bar;
3. Change the network through the wallet button.

<figure><img src="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2FEcyKa76pOEaOTHTgRVO2%2Fimage.png?alt=media&amp;token=33fc1193-9614-433e-9694-f6382b06a7ae" alt=""><figcaption><p>Selecting a network example.</p></figcaption></figure>

When you select a different network through the application, this will prompt your browser wallet to switch network and switches the application to operate from the network selected.

***

### Select supported asset to supply

Due to the quantity of assets Replete is compatible with, there are different ways to select an asset to supply. The easiest method to do so is through the App page and there are two easy ways to select an asset to supply.&#x20;

1. Select an asset on the asset dropdown menu on the Liquidity Widget;
2. Select an asset through the Asset Widget, prompting the Liquidity Widget to change.

{% hint style="danger" %}
If no asset appears as compatible, you do not have assets that are compatible with Replete.
{% endhint %}

<figure><img src="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2FWVXGa1IGvQXAaEBU3kRl%2Fimage.png?alt=media&amp;token=1e55e03a-71d6-4486-b82f-cfba6323918b" alt=""><figcaption><p>Asset Widget (left) and Liquidity Widget (right) example.</p></figcaption></figure>

The Asset Widget will only display assets that are available to supply to Replete. The information displayed is based on the connected wallet and available assets per chain.

{% hint style="info" %}
**Note** that selecting an asset that is available on a different chain will prompt to switch networks.
{% endhint %}

### Supply asset

Once an asset has been selected enter the desired amount you wish to supply. There is no minimum amount to supply instated.

In the following example we selected Arbitrum as the supply chain and USDC as the token to supply.

<figure><img src="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2Faq3KaaHSwKxPl8Go8ubd%2Fimage.png?alt=media&amp;token=137b87e2-22cd-4cb4-848d-036f255d4d67" alt=""><figcaption><p>Approving a transaction.</p></figcaption></figure>

Once you are happy with the parameters you can submit the transaction. This will prompt your wallet to approve and/or submit the transaction, after the final check you can submit and a few moments later you have supplied.

After your transaction has reached finality, the dashboard will display the information.&#x20;

#### Receive rTokens

Once you have successfully supplied the asset of your choice, you will receive a receipt in the form of a rToken. The rToken value is pegged to the value of the corresponding asset at a 1:1 ratio. rTokens function as a normal token and can be transferred, traded or stored.

{% hint style="warning" %}
Note that rToken is an arbitrary name for Replete interest-bearing tokens, they are displayed on your wallet as r + ticker of asset supplied.&#x20;
{% endhint %}

All yield collected by the rTokens' reserves are distributed to rToken holders directly by continuously increasing their wallet balance. Please note that rTokens are currently only available on Arbitrum.

{% hint style="info" %}
rTokens are minted upon supply and burned upon withdrawal.
{% endhint %}

***

### Tool tips & settings

If you are well versed in web3, you can also toggle the settings button to have additional features to write and execute the contracts.

<figure><img src="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2FPiwR0I4Z9dKPkyCzEV89%2Fsettings-gb-smol.png?alt=media&amp;token=12b26983-dc7f-4d47-b493-cb6c7687927c" alt=""><figcaption><p>Settings and tooltips example.</p></figcaption></figure>

Utilize the tooltips to get a better understanding of what they do. Some settings are best left as is, as they can result in the loss of funds if they are not properly used.

***

### Learn more

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th><th data-hidden></th><th data-hidden data-card-cover data-type="files"></th></tr></thead><tbody><tr><td><strong>Withdrawing</strong></td><td>Learn more about withdrawing to any connected chain.</td><td><a href="/core-functions/withdraw">Withdraw</a></td><td></td><td><a href="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2Ff5wFmnUfkpccca4TDbxo%2Fwithdraw-gb.jpg?alt=media&amp;token=0c9347d4-6234-4e06-9319-2de5f5774a5b">withdraw-gb.jpg</a></td></tr><tr><td><strong>Borrowing</strong></td><td>Learn more about borrowing to any connected chain.</td><td><a href="/core-functions/borrow">Borrow</a></td><td></td><td><a href="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2FsJEYQ0yhTGo5k65CFJBk%2Fborrow-gb.jpg?alt=media&amp;token=ba8511e9-896c-4bbf-9220-adcfa61dc771">borrow-gb.jpg</a></td></tr></tbody></table>


# How much can I earn?

## Supply APY

The amount earned on supplied assets is based on the borrow demand.

Borrowers pay interest which is shared with suppliers. The amount of interest generated corresponds to the utilization rate times average borrow rate time. Meaning that how higher the utilization is the higher the yield is for suppliers.

Since Replete operates natively cross-chain, users that supply have exposure to markets on connected blockchains. On the dApp an estimation is made for users how much Annual Percentage Yield (APY) is made from the last thirty days.

<figure><img src="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2FXyHUIlkAc3ApFGIw2zEw%2FInterest%20rate%20architecture.jpg?alt=media&amp;token=173ddb61-b612-4bc7-abf0-1a5904055170" alt=""><figcaption><p>Example of interest rate flows from supplied and borrowed assets.</p></figcaption></figure>

{% hint style="success" %}
Repletes interest rates are dynamic, it is a function of supply and demand and thus variable.
{% endhint %}

### Additional rewards

Apart from the APY on assets supplied, some markets or actions within the protocol may receive additional rewards. This is on top the standard supply interest rate paid by borrowers. Rewards can be given by ecosystem incentivization, bridging to a network, incentives from partnering protocols or in Replete's governance token.


# Supply Limit

During testnet, a user can supply as much or little as wanted. During mainnet some markets may be limited for security reasons.&#x20;

The intention is to monitor developments and adapt as needed. Some of these limitations may include but is not limited to limiting the amount users can supply to a pool, change emission for the pools and so forth. We do so to limit risks for protocol stakeholders.

At a later stage Replete DAO may contract a service provider for on-chain risk solutions.

### Supply cap

For assets that are deemed volatile either due to availability of trading liquidity, shortage of trading volume or little borrowing demand, a supply cap may be implemented. The supply cap limits the total amount of a particular asset that can be supplied to the liquidity pool.


# Collateral opt-out

A user may decide to supply an asset to lend but not utilize it as part of their collateralization position.

In order for a user to opt-out of using their assets as collateral, navigate to the dashboard and within the supply section, you can toggle on or off the asset you supplied as collateral.

<figure><img src="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2FlygToubcRHuRV1jAWHIi%2Fcollateralization-gb.png?alt=media&amp;token=01d809ca-b928-43db-aef2-bb4ee18df77c" alt=""><figcaption><p>Example on where to opting-out toggle is.</p></figcaption></figure>

When supplying to Replete through the user interface the collateralization of assets is set to on.&#x20;

{% hint style="danger" %}
Opting out of using a position for collateral can influence your borrow position and health factor, which may trigger liquidation.
{% endhint %}


# Borrow

Borrow across connected chains through Replete.

Borrowing requires a user to supply assets as collateral. User can easily supply to the protocol through the user interface, please refer to [Supply](/core-functions/supply) section to get started.

The easiest way for a user to borrow is through the user interface (dApp). Once you have a position as collateral, you can navigate to the borrow section.

From the borrow section, chose the chain you wish to borrow to, select the asset, the quantity you wish to borrow and submit your transaction. After the transaction is confirmed and has reached finality, the borrowed assets becomes available on the destination chain.

### Learn more

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th><th data-hidden></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>For users</strong></td><td>How to <strong>borrow</strong> assets to supported chains.</td><td></td><td><a href="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2FtATtdbDFGxe1l0UkLxbs%2Fsupply-gb.jpg?alt=media&amp;token=7bd85c20-01d0-4f68-81de-68f841ae1b26">supply-gb.jpg</a></td><td><a href="broken://pages/IpuFj3fwSxyvmRe9YFeN">Broken link</a></td></tr><tr><td><strong>For devs</strong></td><td><strong>Borrowing t</strong>o connected chains through code.</td><td></td><td><a href="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2FlzQBV23zGeIQxOSE5tL0%2Fdev-gb.jpg?alt=media&amp;token=9d3da45b-fc4b-4fcd-80e4-625d265eaa7d">dev-gb.jpg</a></td><td><a href="/developers/how-to-borrow">How to Borrow</a></td></tr></tbody></table>

***

## Borrow architecture

In order for user to be able to borrow across connected chains, Replete utilizes a borrow architecture where the protocol logic, liquidity and accounting is hosted on one chain. The architecture is similar to supplying, please refer to [Supply](/core-functions/supply) to learn more.

A user that has supplied to Replete can open a borrow position from any connected chain. When the users interacts with the protocol, through a chain that is not the pool chain, a borrow message is sent to the pool chain. The message instruct on behalf (delegate) of the user to borrow an asset. If the asset requires bridging, it will submit the transaction and send the requested borrowed asset to the user including a standard amount of native gas airdrop.&#x20;

<figure><img src="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2FZDOzH3AACIeqOUxXJpPB%2Fborrowmsgbridgetxn-gb.png?alt=media&amp;token=e22bc5cd-c95f-4281-bc2d-ea414797462e" alt=""><figcaption><p>Borrow example from Ethereum to BNB Chain for USDT.</p></figcaption></figure>

This method upholds a singular truth state on a single chain, enabling collateral positions to be accessible across chains. Collateral supplied on one chain can be utilized to borrow assets on the same or any other supported chain, eliminating the need to monitor states across multiple blockchains and reducing the risk of sequencing errors.

Moreover, by adjusting loan interest rates dynamically and maintaining liquidity within a pooled chain, it becomes feasible for users to stabilize rates more flexibly as there is a single pool chain.

When a borrowing transaction is submitted and completed, the user commences to accrue interest on their debt position. There is no time limit for the user to repay the debt, as long as the Health Factor does not drop below 1.

In the event the Health Factor drops below 1, it can trigger liquidation for the supplied collateral.

{% hint style="danger" %}
It is important to maintain a Health Factor above 1, otherwise liquidation may be triggered.&#x20;
{% endhint %}

For users looking to improve their Health Factor the only options are to either supply more collateral or to repay (partially) the accrued debt. A benefit of the architecture is that apart from borrowing, users can supply or repay their debt from connected chains to improve the Health Factor.

### Learn about

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Repay</strong></td><td>Learn more about repaying from any chain.</td><td></td><td><a href="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2FvtKejtcPZSaNy04MkI39%2Frepay-gb.jpg?alt=media&amp;token=9a7a825e-7ced-417e-83fe-730df978ddf0">repay-gb.jpg</a></td><td><a href="/core-functions/repay">Repay</a></td></tr><tr><td><strong>Withdraw</strong></td><td>Learn more about withdrawing to any chain.</td><td></td><td><a href="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2Ff5wFmnUfkpccca4TDbxo%2Fwithdraw-gb.jpg?alt=media&amp;token=0c9347d4-6234-4e06-9319-2de5f5774a5b">withdraw-gb.jpg</a></td><td><a href="/core-functions/withdraw">Withdraw</a></td></tr><tr><td><strong>Supply</strong></td><td>Learn more about supplying from any chain.</td><td></td><td><a href="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2F7xsKBU6YvOhtwTUBMLfV%2Fsupply-gb%20(1).jpg?alt=media&amp;token=0b4d511d-38b2-44ea-901f-1808ffe6e6a8">supply-gb (1).jpg</a></td><td><a href="/core-functions/supply">Supply</a></td></tr></tbody></table>


# How to borrow?

Borrow from connected chains to a connected chain.

To **borrow** the **fastest** and **easiest** way is to navigate to the **web interface (dApp)**. Select the assets and the amount you wish to borrow and submit the transaction.

Once finality is confirmed, your borrowed assets are available on the destination chain. From the moment the borrow transaction is confirmed on the pool chain, you start accruing debt in the form of interest.

Most borrow instances on the UI triggers the Chain Abstracted Liquidity Widget displayed below.

<figure><img src="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2FkxGXdxk33BoAznpQEnz9%2Fborrow-gb.png?alt=media&amp;token=aea5a630-8976-4279-ae18-28d32b8abf82" alt=""><figcaption><p>Liquidity Widget Borrow tab.</p></figcaption></figure>

{% hint style="info" %}
In order to borrow you must first supply to the protocol. Learn more on [Supply](/core-functions/supply).
{% endhint %}

***

### Connect your wallet

In the same way you supplied, you must first connect your wallet through the UI, this can either be done through the Liquidity Widget or top right corner of the navigation bar.&#x20;

<figure><img src="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2FXPUjB43ZPpGDTZ4IvWx4%2Fimage.png?alt=media&amp;token=ae9742c6-f3c1-44e5-9d9c-dc949b23fe6c" alt=""><figcaption><p>Connecting your wallet</p></figcaption></figure>

{% hint style="success" %}
Connecting from any network will automatically switch the application to that network if supported.
{% endhint %}

#### Connecting to a different chain

There are a few easy ways to connect to a different networks:

1. Select a different network through your browser wallet;
2. Select a different chain ***from*** the dropdown bar;
3. Change the network through the wallet button.

<figure><img src="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2FEcyKa76pOEaOTHTgRVO2%2Fimage.png?alt=media&amp;token=33fc1193-9614-433e-9694-f6382b06a7ae" alt=""><figcaption><p>Selecting a network.</p></figcaption></figure>

When you select a different network through the application, this will prompt your browser wallet to switch network and switches the application to operate from the network selected.

***

### Select supported asset to borrow

Replete is compatible with many different assets and there are different ways to select an asset to borrow. The easiest method to do so is either through the App page or through the Markets page.

1. Select an asset on the asset dropdown menu on the Liquidity Widget;
   * Alternatively, if you have interacted on a supported remote chain, the Asset Widget can also display borrowable assets.
2. Select to borrow an asset through the Markets page, prompting the Liquidity Widget to trigger.

<figure><img src="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2FyqOFnj47pRjXYaf6cWqh%2Fimage.png?alt=media&amp;token=8a2a99b7-dfb1-43db-84b9-d97190814990" alt=""><figcaption><p>Asset Widget (left) and Chain Abstracted Widget (right) borrow example (1.)</p></figcaption></figure>

<figure><img src="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2FoRfR71pElGVW5EkQurNJ%2Fmarkets-borrow-1-gb.png?alt=media&amp;token=e8828882-496c-4825-af81-32ead04aba81" alt=""><figcaption><p>Selecting borrowable assets through the Markets page (2.)</p></figcaption></figure>

{% hint style="info" %}
**Note** that selecting an asset that is available on a different chain will prompt your browser wallet to switch networks.
{% endhint %}

### Borrowing an asset

Once an asset has been selected enter the desired amount you wish to borrow. There is a maximum amount a user can borrow, this is limited by the users Health Factor.

In the example below Ethereum is selected as the chain to borrow to and USDC as the asset.

<figure><img src="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2FwXtXmPVnjTCPVJ9JRcMd%2Fimage.png?alt=media&amp;token=371c4bd4-a70d-4aa2-8383-e1a4d213807d" alt=""><figcaption><p>Submitting a transaction.</p></figcaption></figure>

Once you are happy with the parameters you can submit the transaction. This will prompt your browser wallet to sign and submit the transaction. A few moments later, after reaching finality, the borrowed assets appear on the destination wallet.

***

### Eligibility, LTV and Health Factor

The maximum amount available to borrow depends on the value of the collateral supplied and the available liquidity for the asset on both the pool chain and destination chain.

{% hint style="info" %}
Once your borrow transaction goes through, you start accruing debt on the borrowed assets.&#x20;
{% endhint %}

The borrowing limit is determined by several factors, including the value of collateral deposited and the available liquidity for the asset. You won't be able to borrow an asset if there is not enough liquidity or if your Health Factor is too low, as borrowing limits are constrained by the Health Factor. The assets supplied by users directly influence the maximum allowable loan value.

Exceeding the maximum Loan-to-Value (LTV) ratio means your collateral will start being sold to cover the debt. For instance, with a max LTV of 70%, users can borrow up to 70% of their collateral's value. If the collateral is valued at $100, the user can borrow up to $70. Therefore, it's crucial to manage borrowing within the specified LTV limits to avoid triggering collateral liquidation. More information specific to any assets LTV ratio can be found on the Market page.

{% hint style="warning" %}
Note that as the value of the collateral fluctuates, so does your Health Factor, which could deteriorate or improve your Health Factor.&#x20;
{% endhint %}

***

### Tool tips & settings

If you are well versed in web3, you can also toggle the settings button to have additional features to write and execute the contracts.

<figure><img src="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2FPiwR0I4Z9dKPkyCzEV89%2Fsettings-gb-smol.png?alt=media&amp;token=12b26983-dc7f-4d47-b493-cb6c7687927c" alt=""><figcaption><p>Settings and tooltips example.</p></figcaption></figure>

Utilize the tooltips to get a better understanding of what they do. Some settings are best left as is, as they can result in the loss of funds if they are not properly used.

***

### Learn more

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th><th data-hidden></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Supply</strong></td><td>Learn more about withdrawing to any connected chain.</td><td></td><td><a href="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2F7xsKBU6YvOhtwTUBMLfV%2Fsupply-gb%20(1).jpg?alt=media&amp;token=0b4d511d-38b2-44ea-901f-1808ffe6e6a8">supply-gb (1).jpg</a></td><td><a href="/core-functions/supply">Supply</a></td></tr><tr><td><strong>Repay</strong></td><td>Learn more about borrowing to any connected chain.</td><td></td><td><a href="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2FvtKejtcPZSaNy04MkI39%2Frepay-gb.jpg?alt=media&amp;token=9a7a825e-7ced-417e-83fe-730df978ddf0">repay-gb.jpg</a></td><td></td></tr></tbody></table>


# How much interest to pay?

Users pay interest on the borrowed amount. The interest rate varies per asset and the available capital in the pools (utilization rate). Utilization rate is calculated as follow:

$$
U = \frac{TotalBorrowed}{TotalLiquidity}
$$

Supplied assets (pools) that have a low utilization rate bear a lower interest for users to borrow. Pools that have a high utilization rate bare a higher interest rate.&#x20;

The variable interest rate is designed so that it either encourages to borrow or to repay and/or provide liquidity for users as those pools will naturally yield higher returns. Keep in mind that when the utilization rate of a pool is high, the protocol can experience liquidity-crunches and can result in volatile interest rate.

{% hint style="info" %}
Interest rates for both borrowing and supplying vary on the utilization rate.
{% endhint %}

To mitigate this, the interest rate curve is split in two parts, one where the utilization rate is optimal and another that is sub-optimal. Before reaching the sub-optimal threshold, interest rates increase slowly with utilization. Once it reaches a sub-optimal utilization rate, the borrow rates increase sharply.

When the utilization rate is less than or equal to the optimal utilization rate follows:

$$
if\~U≤U optimal : Rt=R0​

* \frac{Ut}{Uoptimal}Rslope
  1
  ​
  $$

When the utilization rate is above the optimal utilization rate, then:

$$
if\~U>Uoptimal : Rt=R0​

* Rslope1 + \frac{Ut -Uoptimal}{1 -Uoptimal}Rslope
  2
  $$

- $$U$$: Utilization rate;
- $$Uoptimal$$: Target utilization rate;
- $$Rt$$: Interest rate at a certain time;
- $$R  0$$: Base or starting interest rate;
- $$Ut$$: Current utilization
- $$Rslope1$$: Interest rate slope equal or below $$Uoptimal$$;
- $$Rslope2$$: Interest rate slope beyond $$Uoptimal$$.

This means that up-until an optimal utilization rate interest rates increase non-linearly (read: small) curve until a sub-optimal utilization rate is reached, during which the interest rate raises sharply to accommodate more optimal supply and demand.

{% embed url="<https://docs.aave.com/risk/liquidity-risk/borrow-interest-rate>" %}
Learn more about interest rate models
{% endembed %}

### Borrow rates

You can review the current borrowing rate at any time in the Markets and Dashboard section. Moreover, to learn more about the utilization rate and interest rate of supported assets, navigate to the details page on the Replete user interface. In short it depends on two factors:

* Utilization rate that is derived from market supply and demand;
* Asset interest rate curve, that is uniqued and different per asset.

<figure><img src="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2Fz9GMcq2YJjlwstvALavP%2Fimage.png?alt=media&amp;token=53bc9b9f-cf86-4c3d-ab00-0af878144fd4" alt=""><figcaption><p>Example of interest rate model </p></figcaption></figure>


# Borrow Limit

The amount you can borrow is tied to the dollar value of supplied assets and liquidity of the assets you wish to borrow. Moreover, each asset has different Loan-to-Value (LTV) ratios, which influences the maximum amount a user can borrow against deposited collateral.

{% hint style="warning" %}
A user is not able to borrow more than the liquidity than is available on the pool.
{% endhint %}

### Loan-to-Value Ratio

Each asset features a Loan-to-Value (LTV) ratio determining how much a user can borrow against the dollar value of the collateral. For example, a user supplying an asset with a 75% LTV, can only borrow up until 75% of value of that value. Information about the LTV per asset can be found on the **Markets** page.

When a user exceed the LTV ratio, the collateral supplied to borrow against, will start being sold to cover the debt and maintain optimal levels.

Additionally, borrow limits are also constrained by the Health Factor, when the Health Factor is too low borrowing assets becomes restricted.  For example if the collateral deposited raises in value you can borrow more as the underlying asset has appreciated and your Health Factor has improved. Learn more about [Health Factor](/core-functions/borrow/health-factor).

### Borrow Cap

Borrow caps are the highest allowable borrowing limit for an asset. They serve as a protective measure to deter both regular and flash borrowing that could be exploit price vulnerabilities, potentially causing a protocol to become insolvent. The inclusion of a borrow cap is discretionary, with its specific value contingent upon the asset's liquidity and the total volume of borrowed assets in the pool.


# Health Factor

The Health Factor determines in a numerical value how healthy your collateral position is against the borrowed assets. The numerical value represents the safety of the deposited assets weighted against any borrowed assets and their underlying value. The numerical value of the Health Factor must be kept <mark style="color:green;">above</mark> <mark style="color:green;"></mark><mark style="color:green;">**1**</mark> to avoid triggering liquidation.

{% hint style="danger" %}
When Health Factor drops <mark style="color:red;">below 1</mark>, the collateral is at risk of liquidation.
{% endhint %}

To determine the Health Factor of your position, the easiest way is to navigate to the dApp and check what your Health Factor is of your position. A user's Health Factor is displayed on various places on the user interface.

<figure><img src="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2FdGhwpDJ975GbMQjUThhN%2Fimage.png?alt=media&amp;token=5aade42a-cb92-4193-9130-31d8b7ad907f" alt=""><figcaption><p>Example screen of Health Factor.</p></figcaption></figure>

Important to note is that the Health Factor varies and can increase and decrease based on the fluctuations in value of the assets supplied as collateral.

For example, if you deposit ETH as collateral and borrow USDT with it, a drop in value of ETH will decrease your Health Factor and increase the risk of liquidation. Similarly if ETH appreciates in value, your Health Factor will improve, allowing a user to borrow more.

For assets supported on the protocol that fluctuate, it's important for users to manage the Health Factor as market volatility on tail-end assets can cause liquidations.

{% hint style="success" %}
Assets fluctuate in value, manage your Health Factor and keep above 1
{% endhint %}

### How to improve Health Factor?

Borrowers seeking to improve their Health Factor, can do so in two different ways.

* Repaying off (part) the debt;
* Supply more assets.

Of which repaying the loan would increase the Health Factor more.

#### Learn more

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th><th data-hidden></th><th data-hidden data-card-cover data-type="files"></th></tr></thead><tbody><tr><td><strong>Repaying</strong></td><td>Learn more about repaying from any connected chain.</td><td></td><td><a href="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2FvtKejtcPZSaNy04MkI39%2Frepay-gb.jpg?alt=media&amp;token=9a7a825e-7ced-417e-83fe-730df978ddf0">repay-gb.jpg</a></td></tr><tr><td><strong>Supplying</strong></td><td>Learn more about supplying from any connected chain.</td><td></td><td><a href="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2F7xsKBU6YvOhtwTUBMLfV%2Fsupply-gb%20(1).jpg?alt=media&amp;token=0b4d511d-38b2-44ea-901f-1808ffe6e6a8">supply-gb (1).jpg</a></td></tr></tbody></table>


# Avoiding liquidation

To avoid liquidation a borrower must have a Health Factor above 1. The Health Factor varies on the value of the underlying asset, value of borrowed assets and accrued interest rate. Repaying the loan or depositing more collateral are the two methods available to improve your Health Factor.

Learn more

{% content-ref url="/pages/sFhACS5rYrhr4CxeOxaO" %}
[Health Factor](/core-functions/borrow/health-factor)
{% endcontent-ref %}

A higher Health Factor gives a user more margin to avoid liquidation and using tools to track variations in price of the underlying assets can help in avoiding liquidations and paying a Liquidation fee.

Please be mindful that all assets fluctuate in price action due to market conditions. For example a stablecoin can depeg in an open market, resulting in fluctuation in USD value (e.g. from 1 USD to 0.99 USD in value) impacting your Health Factor and thus increase the possibility of liquidation.

{% hint style="danger" %}
Reduce the risk of liquidation by repaying any outstanding loans or deposit additional collateral to increase your Health Factor.
{% endhint %}


# Liquidation

When a borrowers collateral position drops below a [Health Factor](/core-functions/borrow/health-factor) of 1, the position of the borrower can be liquidated. This happens when the deposited collateral does not cover the loan/debt value, resulting in the position being liquidated.

Managing your Health Factor is important to avoid the possibility to be liquidated. A user can do so by repaying outstanding loans or depositing more collateral to keep a Health Factor above 1.

The process of liquidation is covered by Liquidators.

## Liquidators

Liquidators are protocol participants that monitor collateralized position and seek positions that are eligible for liquidation. These participants have developed and deployed automated systems (c.q. Bots) that interact with the protocol's pool contract to initiate a liquidation call.

{% hint style="info" %}
Any external actor can purchase part of the collateral when the Health Factor drops below 1.
{% endhint %}

The liquidation call enables Liquidators to pay back (part) of the debt owned and receive a liquidation bonus in the form of discounted collateral. This mechanism incentivizes Liquidators to keep the protocol healthy by participating in the liquidation process and ensure that borrow positions are sufficiently collateralized across the protocol.

## Liquidation penalty

In order to sufficiently motivate Liquidators to participate in the protocol an additional bonus is granted to them. Half of the Liquidation Penalty is offered to liquidators, while the other half is earmarked towards the Replete DAO treasury. The Liquidation Penalty across the protocol is 15%.

{% hint style="danger" %}
Liquidation penalty is currently set as 15% across all markets.
{% endhint %}

This liquidation method motivates external parties to engage in maintaining the protocol's health by pursuing their own benefit (to obtain discounted collateral), thereby ensuring that borrows are sufficiently collateralized throughout the protocol.

Each asset within Replete Finance has specific values related to risk, which influences how they are supplied and borrowed.

***

## Liquidation example

When a liquidation call contract is executed, any actor can purchase part of the collateral at a discounted price. In case of a liquidation event, a maximum of 50% of the loan can be liquidated, bringing the health factor above 1 again.

<figure><img src="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2F7bh0FEtYjW47oUmMVRah%2Fliquidation-example-gb-01-01.png?alt=media&amp;token=14ee0eb8-03f3-45b1-85d3-bed5c59b023d" alt=""><figcaption><p>Simplified liquidation call example, with a liquidation penalty of 15%.</p></figcaption></figure>

* Alice supplies 10 BTC.b and borrows 4 BTC.b worth of USDT;
* If Alice’s Health Factor drops below 1, her loan becomes eligible for liquidation;
* A liquidator can repay up to 50% of a single borrowed amount (2 BTC.b worth of USDT in this case);
* In this scenario, the liquidator claims 2 BTC.b plus an additional 0.15 BTC.b as a liquidation bonus (7.5%) for repaying Alice's debt;
* The protocol also claims 0.15 BTC.b as a 7.5% penalty fee;
* After liquidation, Alice retains 7.7 BTC.b (10 - 2 - 0.15 - 0.15 BTC.b) of supplied BTC.b and 2 BTC.b worth of USDT borrowed.


# Repay

Repaying back your loans from connected chains

Users can easily **repay** their loans and accrued interest through the dApp. Loans and any accrued debt must be repaid back with the same asset that was borrowed.

Repaying a loan improves the Health Factor of a user's portfolio. Decreasing the likelihood of liquidation and/or improving the borrow eligibility. After repaying, a user can chose to withdraw the supplied assets partially or fully as long as there is no outstanding loan.

{% hint style="warning" %}
There is no fixed time to repay a loan, as long as your Health Factor remains above 1.
{% endhint %}

### Learn more

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th><th data-hidden></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>For users</strong></td><td>How to <strong>repay</strong> your loan from any chain.</td><td></td><td><a href="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2FtATtdbDFGxe1l0UkLxbs%2Fsupply-gb.jpg?alt=media&amp;token=7bd85c20-01d0-4f68-81de-68f841ae1b26">supply-gb.jpg</a></td><td><a href="/core-functions/repay/how-to-repay">How to repay?</a></td></tr><tr><td><strong>For devs</strong></td><td>How to <strong>repay</strong> your loan using code.</td><td></td><td><a href="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2FlzQBV23zGeIQxOSE5tL0%2Fdev-gb.jpg?alt=media&amp;token=9d3da45b-fc4b-4fcd-80e4-625d265eaa7d">dev-gb.jpg</a></td><td><a href="/developers/how-to-repay">How to Repay</a></td></tr></tbody></table>

***

## Repay architecture

Repaying debt positions in a cross-chain domain is slightly different to a single chain counterpart. If the borrow transaction are on Repletes pool chain, repaying the loan functions similar to a chain isolated money market.

For cross-chain however, a user may find themselves that payments of loans vary slightly depending on the asset that was borrowed. For assets requiring bridging, for example, a user depositing excess tokens (i.e. due to slippage), the standard course of action after settling the debt is to provide the surplus as liquidity to the protocol. This is similar for assets that follow a omnichain token standard.

<figure><img src="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2F7vWXbw6HxhfsoUCNzATH%2Frepaying-excess-gb-01.png?alt=media&amp;token=3486a7b9-99f9-4747-b650-2033879ddba8" alt=""><figcaption><p>Example of how excess tokens are supplied to the protocol, enabling users to accrue interest.</p></figcaption></figure>

A user can decide in a follow-up transaction where to withdraw the surplus while accruing in the meantime interest for the supplied excess assets.

{% hint style="info" %}
Note that withdraws can affect your Health Factor for outstanding loans.
{% endhint %}

### Learn about

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Withdraw</strong></td><td>Learn more about withdrawing to any chain.</td><td></td><td><a href="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2Ff5wFmnUfkpccca4TDbxo%2Fwithdraw-gb.jpg?alt=media&amp;token=0c9347d4-6234-4e06-9319-2de5f5774a5b">withdraw-gb.jpg</a></td><td><a href="/core-functions/withdraw">Withdraw</a></td></tr><tr><td><strong>Borrow</strong></td><td>Learn more about borrowing to any chain.</td><td></td><td><a href="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2FsJEYQ0yhTGo5k65CFJBk%2Fborrow-gb.jpg?alt=media&amp;token=ba8511e9-896c-4bbf-9220-adcfa61dc771">borrow-gb.jpg</a></td><td><a href="/core-functions/borrow">Borrow</a></td></tr><tr><td><strong>Supply</strong></td><td>Learn more about supplying from any chain.</td><td></td><td><a href="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2F7xsKBU6YvOhtwTUBMLfV%2Fsupply-gb%20(1).jpg?alt=media&amp;token=0b4d511d-38b2-44ea-901f-1808ffe6e6a8">supply-gb (1).jpg</a></td><td><a href="/core-functions/supply">Supply</a></td></tr></tbody></table>


# How to repay?

Repaying loans and settling debts

To **repay** any outstanding loan the **fastest** and **easiest** way is to navigate to the **web interface (dApp)**. Select the assets you wish to repay, the amount and submit the transaction.

A debt position can only be settled with the borrowed asset, thus a user must ensure that the correct asset is used for repayment. There is no fixed time period to repay a loan as long as the collateral position does not drop below a Health Factor of 1.&#x20;

{% hint style="danger" %}
Note that accrued interest of the debt gradually decreases the Health Factor, potentially leading to liquidation.
{% endhint %}

Most repay instances on the user application triggers the Chain Abstracted Liquidity Widget interface, where major protocol features are displayed.

<figure><img src="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2FFnX94No9kS4WJp4wQveE%2Fimage.png?alt=media&amp;token=b2036e56-252f-4141-83ad-45e761e31d03" alt=""><figcaption><p>Liquidity Widget Repay tab.</p></figcaption></figure>

***

### Connecting wallet and selecting network

To learn how to connect your wallet and selecting a network please either refer to [How to supply?](/core-functions/supply/how-to-supply) or [How to borrow?](/core-functions/borrow/how-to-borrow)

***

### Select borrowed position to repay

Users wishing to repay their debt positions must do so with the same asset they borrowed with. The Dashboard page offers users an interface to manage their collateral and debt positions.

<figure><img src="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2FI4MaApa3ygh0pgnV4Wlm%2Fimage.png?alt=media&amp;token=f57133ab-ac2c-4eda-a8ea-488ec49d5fff" alt=""><figcaption><p>Example of Dashboard borrow section.</p></figcaption></figure>

In order to repay, a user can click on the repay button on the borrows section, this will trigger the Liquidity Widget to the Repay tab with the assets selected for repayment.

<figure><img src="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2F5sZboYoAau53OvaGoSQc%2Fimage.png?alt=media&amp;token=a1ac7cde-22e2-4744-b941-f33bea69ec79" alt=""><figcaption><p>Example of Liquidity Widget Repay Tab.</p></figcaption></figure>

Enter the amount you want to repay then click repay. This will prompt your browser wallet to approve and/or submit the transaction, after the final check you can submit and a few moments later you have repaid for that amount the debt.

After your transaction has reached finality, the dashboard will display the information accordingly.&#x20;

***

### Cross-chain and excess tokens

Replete allows users to repay their debts for any connected chain as long as the same assets are used that were borrowed. On occasions this requires bridging, which can lead to excess tokens being supplied to settle the debt.&#x20;

The standard function for excess tokens in this scenario is to supply to the protocol. User wishing to withdraw the excess tokens or collateral after settling the debt, can do so with a withdraw transaction.

The excess tokens in the meantime accrues yield in the form of interest and influences the Health Factor. A strong Health Factor brings flexibility by decreasing the likelihood of liquidation and improving borrow capacity.

#### Learn more

{% content-ref url="/pages/A8Kt18cWJNc1RSCyQphV" %}
[Repay](/core-functions/repay)
{% endcontent-ref %}

***

### Tool tips & settings

If you are well versed in web3, you can also toggle the settings button to have additional features to write and execute the contracts.

<figure><img src="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2FPiwR0I4Z9dKPkyCzEV89%2Fsettings-gb-smol.png?alt=media&amp;token=12b26983-dc7f-4d47-b493-cb6c7687927c" alt=""><figcaption><p>Settings and tooltips example.</p></figcaption></figure>

Utilize the tooltips to get a better understanding of what they do. Some settings are best left as is, as they can result in the loss of funds if they are not properly used.

***

### Learn more

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th><th data-hidden></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Withdrawing</strong></td><td>Learn more about withdrawing to any connected chain.</td><td></td><td><a href="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2Ff5wFmnUfkpccca4TDbxo%2Fwithdraw-gb.jpg?alt=media&amp;token=0c9347d4-6234-4e06-9319-2de5f5774a5b">withdraw-gb.jpg</a></td><td><a href="/core-functions/withdraw">Withdraw</a></td></tr><tr><td><strong>Borrowing</strong></td><td>Learn more about borrowing to any connected chain.</td><td></td><td><a href="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2FsJEYQ0yhTGo5k65CFJBk%2Fborrow-gb.jpg?alt=media&amp;token=ba8511e9-896c-4bbf-9220-adcfa61dc771">borrow-gb.jpg</a></td><td><a href="/core-functions/borrow">Borrow</a></td></tr></tbody></table>


# Withdraw

Withdraw eligible assets to supported chains

Users can easily **withdraw** their collateral-enabled assets in full if there is no outstanding debt and the collateral is not actively used for borrowing. If a user has incurred debt, they can withdraw collateral above a threshold that would trigger liquidation, indicated by the Health Factor dropping below 1.

{% hint style="warning" %}
Withdrawing lowers your health factor, raising the risk of liquidation.
{% endhint %}

When no sufficient liquidity is available within the protocol to facilitate a withdrawal, a user may need to wait for additional liquidity from either suppliers or repayments from borrowers to be able to withdraw.&#x20;

Additionally, when a user wants to withdraw to a chain other than the pool chain, the size of the withdrawal can be limited to the available liquidity on the destination network.

### Learn more

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th><th data-hidden></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>For users</strong></td><td>How to <strong>withdraw</strong> your assets to any chain.</td><td></td><td><a href="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2FtATtdbDFGxe1l0UkLxbs%2Fsupply-gb.jpg?alt=media&amp;token=7bd85c20-01d0-4f68-81de-68f841ae1b26">supply-gb.jpg</a></td><td><a href="/core-functions/withdraw/how-to-withdraw">How to withdraw?</a></td></tr><tr><td><strong>For devs</strong></td><td>How to <strong>withdraw</strong> your assets using code.</td><td></td><td><a href="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2FlzQBV23zGeIQxOSE5tL0%2Fdev-gb.jpg?alt=media&amp;token=9d3da45b-fc4b-4fcd-80e4-625d265eaa7d">dev-gb.jpg</a></td><td><a href="/developers/how-to-withdraw">How to Withdraw</a></td></tr></tbody></table>

***

## Withdraw architecture

In order for user to withdraw to connected chains, Replete utilizes a similar architecture to supplying, please refer to [Supply](/core-functions/supply) to learn more.

Major difference revolves around when a user initiates a withdrawal, an additional signature from the user is required to authorize Replete Protocol to withdraw on their behalf. This measure is essential to mitigate smart contract risks during the withdrawal process, allowing the protocol to execute withdrawals on behalf of users within the specified allowance.

<figure><img src="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2FlFU5cVLOqLgaynisAsTM%2Fsupplying-example-01.png?alt=media&amp;token=57a64ffb-cc9d-4a8e-a023-c07eede58cdd" alt=""><figcaption><p>Example of a withdrawal call the withdrawal architecture</p></figcaption></figure>

{% hint style="danger" %}
Withdrawals are contingent to collateral not being used for debt and the user not being at immediate risk of liquidation (Health Factor below 1)
{% endhint %}

#### rToken

When a user deposits assets in the protocol [rTokens](/core-functions/supply/how-to-supply#receive-rtokens) are minted. The value of the rTokens are pegged to the corresponding deposited asset at a 1:1 ratio.

When withdrawing assets, the rTokens are burned and the underlying assets are redeemed plus accrued fees.

### Learn about

<table data-view="cards"><thead><tr><th></th><th></th><th data-hidden></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Supply</strong></td><td>Learn more about supplying from any chain.</td><td></td><td><a href="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2F7xsKBU6YvOhtwTUBMLfV%2Fsupply-gb%20(1).jpg?alt=media&amp;token=0b4d511d-38b2-44ea-901f-1808ffe6e6a8">supply-gb (1).jpg</a></td><td><a href="/core-functions/supply">Supply</a></td></tr><tr><td><strong>Borrow</strong></td><td>Learn more about borrowing to any chain.</td><td></td><td><a href="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2FsJEYQ0yhTGo5k65CFJBk%2Fborrow-gb.jpg?alt=media&amp;token=ba8511e9-896c-4bbf-9220-adcfa61dc771">borrow-gb.jpg</a></td><td><a href="/core-functions/borrow">Borrow</a></td></tr><tr><td><strong>Repay</strong></td><td>Learn more about repaying from any chain.</td><td></td><td><a href="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2FvtKejtcPZSaNy04MkI39%2Frepay-gb.jpg?alt=media&amp;token=9a7a825e-7ced-417e-83fe-730df978ddf0">repay-gb.jpg</a></td><td><a href="/core-functions/repay">Repay</a></td></tr></tbody></table>


# How to withdraw?

Withdraw supplied assets to any supported chain

To **withdraw** supplied assets the **fastest and easiest** way is to navigate to the **web interface (dApp)**. Select the assets you wish to withdraw, the amount and submit the transaction.

Withdrawing all supplied assets requires a user to settle all their debts and accrued interest. For collateral-enabled assets the withdraw transaction will fail if the Health Factor drops below 1.

{% hint style="warning" %}
If you have active borrow positions, withdrawing can cause your Health Factor to drop.
{% endhint %}

Most withdraw instances on the dApp triggers the Chain Abstracted Liquidity Widget interface, where major protocol features are displayed.

<figure><img src="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2FAlkBlqDs7Bo2EKYgIa5b%2Fimage.png?alt=media&amp;token=5b3003c3-272d-44fa-bd83-20c45f239801" alt=""><figcaption><p>Liquidity Widget Repay tab.</p></figcaption></figure>

***

### Connecting wallet and selecting network

To learn how to connect your wallet and selecting a network please either refer to [How to supply?](/core-functions/supply/how-to-supply) or [How to borrow?](/core-functions/borrow/how-to-borrow)

***

### Select assets to withdraw

Users wishing to withdraw their supplied collateral can do so either through the Liquidity Widget directly or by navigating to the Dashboard. The Dashboard offers an overview of assets supplied, helping users to manage their supplied positions.

<figure><img src="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2FwB5j1A9acAfc8uqV0m01%2Fimage.png?alt=media&amp;token=4b3aceeb-41be-447a-965b-e0e87486f310" alt=""><figcaption><p>Example of Dashboard supply section.</p></figcaption></figure>

In order to withdraw, a user can click on the withdraw button on the supply section, this will trigger the Liquidity Widget to the withdraw tab with the assets selected to withdraw.

<figure><img src="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2FUyTXHCyeRBBYiuuuZhHU%2Fimage.png?alt=media&amp;token=93b7d02a-7b40-4ecd-afbd-ef46c9d82535" alt=""><figcaption><p>Example of Liquidity Widget Withdraw Tab.</p></figcaption></figure>

Enter the amount you wish to withdraw and click withdraw. This will prompt your browser wallet to sign a withdraw permit after which a withdraw transaction can be submitted.

{% hint style="warning" %}
While signing the permit message, do not permit more than you wish to withdraw.
{% endhint %}

After your transaction has reached finality, the dashboard will display the information accordingly.

With collateral-enabled assets, withdrawing can impact your Health Factor. [Opting out](/core-functions/supply/collateral-opt-out) of using your supplied assets as collateral is an option if you prefer to keep them separate from your debt positions.

***

### Tool tips & settings

If you are well versed in web3, you can also toggle the settings button to have additional features to write and execute the contracts.

<figure><img src="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2FPiwR0I4Z9dKPkyCzEV89%2Fsettings-gb-smol.png?alt=media&amp;token=12b26983-dc7f-4d47-b493-cb6c7687927c" alt=""><figcaption><p>Settings and tooltips example.</p></figcaption></figure>

Utilize the tooltips to get a better understanding of what they do. Some settings are best left as is, as they can result in the loss of funds if they are not properly used.

***

### Learn more

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th></th><th data-hidden></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Supplying</strong></td><td>Learn more about supplying from any connected chain.</td><td></td><td><a href="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2F7xsKBU6YvOhtwTUBMLfV%2Fsupply-gb%20(1).jpg?alt=media&amp;token=0b4d511d-38b2-44ea-901f-1808ffe6e6a8">supply-gb (1).jpg</a></td><td><a href="/core-functions/supply">Supply</a></td></tr><tr><td><strong>Borrowing</strong></td><td>Learn more about borrowing to any connected chain.</td><td></td><td><a href="https://3823826527-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FB0KKjjsMVHo3F4YUhKt3%2Fuploads%2FsJEYQ0yhTGo5k65CFJBk%2Fborrow-gb.jpg?alt=media&amp;token=ba8511e9-896c-4bbf-9220-adcfa61dc771">borrow-gb.jpg</a></td><td><a href="/core-functions/borrow">Borrow</a></td></tr></tbody></table>


# Replete DAO

Replete Finance is governed by a Decentralized Autonomous Organization (DAO), or Replete DAO. The token associated with Replete Finance grants the user voting rights in how the protocol is to be governed. One token equals one vote.

Until the token generation event (TGE), there is no option to conduct voting for Replete DAO. More information on the exact process and procedures will follow after TGE.


# Governance Procedure

Replete Improvement Proposal (RIPs)

Any Replete holder can put forward proposals for the Replete DAO to vote on. For a proposal, a user must have a yet to be defined amount of tokens to initiate a vote. For a vote to pass it needs to meet the minimum quorum (more information to follow), gather a higher percentage than 50% of the votes in favor and be active for the Replete DAO to vote on for at least seven days.

## Governance Procedure

The only step that is realistically required for a vote to pass and warrant action is initiating a proposal to vote on. However, in an effort to streamline the process, and before the launch of the governance, ideally the governance process would be as follow:

1. Discord: Initial discussions on the Governance page. Allowing Replete DAO members to discuss in a casual setting how a proposal would be shaped prior Forum discussion. This allows members to gauge whether there is enough interest to continue in a formal setting like the Forum.
2. Forum: Forum serves as a platform to have in-depth discourse, on a high-level how the proposal would affect the protocol. Ideally, Forum proposals receive feedback that can be reviewed for the creator to adapt the proposal prior putting it for vote.
3. Voting: When a proposal is ready to be put forth for voting, the Replete DAO can initiate and begin voting. Ideally, the proposals are not abstract in the requested outcome but has specific action points for contributors to execute on.

At a later stage this process will be more formalized and have a structures procedure to clarify for Replete DAO.

{% hint style="info" %}
Note that the Governance will adapt prior TGE.
{% endhint %}


# \[RIP-1] Replete Labs Proposal

Replete Labs will put forth a proposal In order to formalize various aspects relating to the Replete DAO. More information on the proposal will be revealed and put out for voting shortly after TGE.


# Token

At this stage there are no tokens in circulation for Replete Finance. On the token generation event (TGE) more information will be shared here.

If you spot anything that alludes to a token for Replete Finance, please assume it is unsavory and not tied in any shape or form to Replete Finance. Additionally, if you spot or suspect anyone from impersonating Replete Finance, please contact contributors through [Discord](https://discord.com/invite/E3NVGCeEvX).

{% hint style="danger" %}

#### Please be aware that, as of now, there are no tokens in circulation for Replete Finance.

{% endhint %}

## When TGE?

Soon :tm:.


# How to Supply

{% hint style="danger" %}
When supplying take care to input the correct data. Make sure you are supplying to a wallet you can control on Pool Chain (Arbitrum).
{% endhint %}

You can supply any supported asset and earn interest across any chain through Replete by interacting with [RepletePool](/contracts/repletepool) . After supplying collateral, you are able to create borrow positions with supported assets or withdraw to a different chain.

{% hint style="warning" %}
The provided `onBehalfOf` will receive [rTokens](https://docs.aave.com/developers/tokens/atoken) on Pool Chain and requires no user interaction.
{% endhint %}

### From Any Chain

{% hint style="warning" %}
When supplying, ensure the [RepletePool](/contracts/repletepool) contract has enough allowance to spend funds on behalf of `msg.sender` for the amount being supplied.
{% endhint %}

To supply native token (if supported) through [RepletePool](/contracts/repletepool), set the `asset` parameter as `RepletePool.ETH_ADDRESS()` and set `amount` as the intended supply amount. Ensure that `msg.value` covers the bridge transfer fee too. `msg.value` should equal `amount` + `bridgeFee`.

If supplying native is not supported, the function will revert with error `Replete_UnsupportedAsset(address asset)`

#### Interface

#### Stargate v1

{% code fullWidth="true" %}

```solidity
 /**
  * @notice Supplies an `amount` of `asset` into the reserve, receiving in return overlying rTokens.
  * - E.g. User supplies 100 USDC and gets in return 100 rUSDC
  * @dev Ensure that this contract has enough allowance to spend `asset` locally
  * @param asset The local underlying asset to supply
  * @param amount The amount to be supplied in local asset decimals
  * @param onBehalfOf The address that will receive the rTokens on Pool Chain.
  *  Even if you will not transact on Pool Chain, it is recommended to set this
  *  to an address you can control.
  * @param referralCode Referral code for integrators -- can safely set to 0
  * @param stgParams Stargate v1 related bridge parameters
  */
function supply(
   address asset,
   uint256 amount,
   address onBehalfOf,
   uint16 referralCode,
   StargateSupplyParams calldata stgParams
) external payable;
```

{% endcode %}

#### Stargate v2

{% code fullWidth="true" %}

```solidity
 /**
  * @notice Supplies an `amount` of `asset` into the reserve, receiving in return overlying rTokens.
  * - E.g. User supplies 100 USDC and gets in return 100 rUSDC
  * @dev Ensure that this contract has enough allowance to spend `asset` locally
  * @param asset The local underlying asset to supply
  * @param amount The amount to be supplied in local asset decimals
  * @param onBehalfOf The address that will receive the rTokens on Pool Chain.
  *  Even if you will not transact on Pool Chain, it is recommended to set this
  *  to an address you can control.
  * @param referralCode Referral code for integrators -- can safely set to 0
  * @param stgParams Stargate v2 related bridge parameters
  */
 function supply(
     address asset,
     uint256 amount,
     address onBehalfOf,
     uint16 referralCode,
     StargateV2SupplyParams calldata stgParams
 ) external payable returns (Ticket memory);
```

{% endcode %}

#### Example

#### Stargate v1

{% code fullWidth="true" %}

```solidity
RepletePool.supply{value: bridgeFee}({
    asset: address(DAI),                           // local chain DAI address
    amount: 1337 * 1e18,                           // supply 1337 DAI
    onBehalfOf: msg.sender,                        // who is this supply for
    referralCode: 0,                               // referral code; you can safely set to 0
    stgParams: StargateSupplyParams({              // ~~ Stargate v1 related parameters ~~
        dstGasForCall: 500_000,                    // 500k gas for the destination tx
        dstNativeAmount: 0,                        // native gas airdrop in the destination tx
        dstNativeAddr: RepletePool.destAddress(),  // {BridgeReceiver} address on Pool Chain
        srcPoolId: srcPoolId,                      // source Stargate v1 pool ID
        dstPoolId: dstPoolId,                      // destination Stargate v1 pool ID
        refundAddress: payable(msg.sender),        // refund address
        minAmountLD: 1337 * 1e18                   // set max slippage amount
    })
});
```

{% endcode %}

#### Stargate v2

{% code fullWidth="true" %}

```solidity
RepletePool.supply{value: bridgeFee}({
    asset: address(DAI),                     // local chain DAI address
    amount: 1337 * 1e18,                     // supply 1337 DAI
    onBehalfOf: msg.sender,                  // who is this supply for
    referralCode: 0,                         // referral code; you can safely set to 0
    stgParams: StargateV2SupplyParams({      // ~~ Stargate v2 related parameters ~~
        router: stargateDAIPool,             // Stargate v2 DAI pool address
        extraOptions: extraOptions,          // LZv2 composed message execution options
        oftCmd: "",                          // unused for Stargate taxi transactions 
        refundAddress: payable(msg.sender),  // refund address
        minAmountLD: 1337 * 1e18             // set max slippage amount  
    })
});
```

{% endcode %}


# How to Borrow

{% hint style="danger" %}
When borrowing and bridging take care to input the correct data. Make sure you are bridging to a wallet you can control on that chain.
{% endhint %}

Chain abstracted borrowing has slightly different behaviors compared to a typical borrow. In the case that there is an issue, whether due to the bridge, there are excess tokens, or invalid parameters were supplied, when bridging the asset from Pool Chain (Arbitrum) to another chain there are a few things to note:

* The default behavior is that unbridged assets are supplied to the pool on behalf of `onBehalfOf`. Allows for the user to withdraw the asset on any chain in another transaction.
* `transferExtraAssets` is an option to allow for transferring the unbridged assets to `onBehalfOf` on Arbitrum instead of doing the default behavior above.

### Borrowing Security

To minimize smart contract risk when Replete borrows assets on behalf of users, Replete utilizes [credit delegation signatures](https://docs.aave.com/developers/guides/credit-delegation#approving-the-delegation). This means all borrowing functions will have an extra parameter called `delegationData` which contain an [EIP712 signature](https://eips.ethereum.org/EIPS/eip-712) allowing Replete to borrow a particular debt token on behalf of the user via the `delegation` function, up to the allowance provided. This is because the caller for `borrow()` will be `BridgeReceiver` on Arbitrum. Essentially, you are delegating credit to the `BridgeReceiver` contract.

The following function is called on the particular debt token:

`function delegationWithSig(address delegator, address delegatee, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s)`

{% hint style="danger" %}
Do not delegate more credit than you require
{% endhint %}

It is also fine to not provide a valid `delegationData` (set it as empty bytes), as long as `BridgeReceiver` has enough allowance with the debt token. This can be achieved either through calling [`approveDelegation()`](/tokenomics/token), or calling [`delegationWithSig()`](https://docs.aave.com/developers/tokens/debttoken#delegationwithsig) on the debt token on Arbitrum.

{% hint style="info" %}
Read more about credit delegation [here](https://docs.aave.com/developers/guides/credit-delegation#).
{% endhint %}

### Native Asset

The native asset on Pool Chain is ETH. To create a borrow position of ETH from any chain set `asset` as `BridgeReceiver.ETH_ADDRESS()`. You can still create a borrow position even if ETH is not the native token of the chain, for example you can still borrow ETH from Avalanche even though the native token is AVAX.

### Any Chain to Pool Chain

You can borrow any supported asset, assuming you have sufficient collateral, across any chain through Replete.

#### Interface

{% code fullWidth="true" %}

```solidity
/**
 * @notice Borrows `amount` of `asset` with a given `interestRateMode`, provided that there
 * is sufficient collateral provided, or credit has been delegated to the user on the
 * corresponding debt token (StableDebtToken or VariableDebtToken)
 * - E.g. User borrows 100 USDC passing as `onBehalfOf` to their debtor, receiving the
 *   100 USDC in `to` address.
 * @dev The borrowed assets will be received on Pool Chain
 * @param asset The remote address of the underlying asset to borrow
 * @param amount The amount to be borrowed in remote asset decimals
 * @param interestRateMode The interest rate mode at which the user wants to borrow: 1 for Stable, 2 for Variable
 * @param referralCode Referral code for integrators -- can safely set to 0
 * @param onBehalfOf The remote address of the user who will receive the debt on Pool Chain
 * @param to The address to send `amount` of `asset` to on Pool Chain
 * @param lzOptions LayerZero v2 related bridge message options
 * @param bridgeDelegationData Credit delegation signature approved for `BridgeReceiver`
 *  encoded as: abi.encode(delegator, address(bridgeReceiver), value, deadline, v, r, s)
 */
function borrow(
    address asset,
    uint256 amount,
    uint8 interestRateMode,
    uint16 referralCode,
    address onBehalfOf,
    address to,
    bytes calldata lzOptions,
    bytes memory bridgeDelegationData
) external payable;
```

{% endcode %}

#### Example

<pre class="language-solidity" data-full-width="true"><code class="lang-solidity"><strong>RepletePool.borrow{value: bridgeFee}({
</strong>    asset: address(DAI),             // DAI address on Pool Chain
    amount: 1337 * 1e18,             // borrow 1337 DAI
    interestRateMode: 2,             // variable borrow mode
    referralCode: 0,                 // referral code; you can safely set to 0
    onBehalfOf: msg.sender,          // the address containing the collateral for this borrow
    to: msg.sender,                  // receiving address on Pool Chain
    lzOptions: lzOptions,            // LayerZero v2 composed message execution options
    bridgeDelegationData: signature  // bridge delegation signature
});
</code></pre>

### Any to Any Chain

Currently, Replete is configured to work with either Stargate or LayerZero to allow bridging support for multiple assets. Borrow the Replete way.

#### Interface

#### Stargate v1

{% code fullWidth="true" %}

```solidity
 /**
  * @notice Borrows `amount` of `asset` with a given `interestRateMode`, provided that there
  * is sufficient collateral provided, or credit has been delegated to the user on the
  * corresponding debt token (StableDebtToken or VariableDebtToken)
  * - E.g. User borrows 100 USDC passing as `onBehalfOf` to their debtor, receiving the
  *   100 USDC in `to` address.
  * @dev The borrowed assets will be received on `chainId` chain
  * @param asset The remote address of the underlying asset to borrow
  * @param amount The amount to be borrowed in remote asset decimals
  * @param interestRateMode The interest rate mode at which the user wants to borrow: 1 for Stable, 2 for Variable
  * @param referralCode Referral code for integrators -- can safely set to 0
  * @param onBehalfOf The remote address of the user who will receive the debt on Pool Chain
  * @param lzOptions LayerZero v2 related bridge message options
  * @param bridgeDelegationData Credit delegation signature approved for `BridgeReceiver`
  *  encoded as: abi.encode(delegator, address(bridgeReceiver), value, deadline, v, r, s)
  * @param transferExtraAssets Enable transferring unbridged assets to `onBehalfOf` on Pool Chain
  * @param chainId Destination Stargate v1 chain id
  * @param bridgeParams Stargate v1 related bridge parameters to use when bridging from
  *  Pool Chain --> `chainId` chain
  */
 function borrowAndBridgeViaStargate(
     address asset,
     uint256 amount,
     uint8 interestRateMode,
     uint16 referralCode,
     address onBehalfOf,
     bytes calldata lzOptions,
     bytes memory bridgeDelegationData,
     bool transferExtraAssets,
     uint16 chainId,
     PoolMessageLib.StargateParams calldata bridgeParams
 ) external payable;
```

{% endcode %}

#### Stargate v2

{% code fullWidth="true" %}

```solidity
 /**
  * @notice Borrows `amount` of `asset` with a given `interestRateMode`, provided that there
  * is sufficient collateral provided, or credit has been delegated to the user on the
  * corresponding debt token (StableDebtToken or VariableDebtToken)
  * - E.g. User borrows 100 USDC passing as `onBehalfOf` to their debtor, receiving the
  *   100 USDC in `to` address.
  * @dev The borrowed assets will be received on `chainId` chain
  * @param asset The remote address of the underlying asset to borrow
  * @param amount The amount to be borrowed in remote asset decimals
  * @param interestRateMode The interest rate mode at which the user wants to borrow: 1 for Stable, 2 for Variable
  * @param referralCode Referral code for integrators -- can safely set to 0
  * @param onBehalfOf The remote address of the user who will receive the debt on Pool Chain
  * @param lzOptions LayerZero v2 related bridge message options
  * @param bridgeDelegationData Credit delegation signature approved for `BridgeReceiver`
  *  encoded as: abi.encode(delegator, address(bridgeReceiver), value, deadline, v, r, s)
  * @param transferExtraAssets Enable transferring unbridged assets to `onBehalfOf` on Pool Chain
  * @param chainId Destination Stargate v2 chain id
  * @param bridgeParams Stargate v2 related bridge parameters to use when bridging from
  *  Pool Chain --> `chainId` chain
  */
 function borrowAndBridgeViaStargate(
     address asset,
     uint256 amount,
     uint8 interestRateMode,
     uint16 referralCode,
     address onBehalfOf,
     bytes calldata lzOptions,
     bytes memory bridgeDelegationData,
     bool transferExtraAssets,
     uint32 chainId,
     PoolMessageLib.StargateV2Params calldata bridgeParams
 ) external payable;
```

{% endcode %}

#### LayerZero

{% code fullWidth="true" %}

```solidity
 /**
  * @notice Borrows `amount` of `asset` with a given `interestRateMode`, provided that there
  * is sufficient collateral provided, or credit has been delegated to the user on the
  * corresponding debt token (StableDebtToken or VariableDebtToken)
  * - E.g. User borrows 100 USDC passing as `onBehalfOf` to their debtor, receiving the
  *   100 USDC in `to` address.
  * @dev The borrowed assets will be received on `chainId` chain
  * @param asset The remote address of the underlying asset to borrow
  * @param amount The amount to be borrowed in remote asset decimals
  * @param interestRateMode The interest rate mode at which the user wants to borrow: 1 for Stable, 2 for Variable
  * @param referralCode Referral code for integrators -- can safely set to 0
  * @param onBehalfOf The remote address of the user who will receive the debt on Pool Chain
  * @param lzOptions LayerZero v2 related bridge message options
  * @param bridgeDelegationData Credit delegation signature approved for `BridgeReceiver`
  *  encoded as: abi.encode(delegator, address(bridgeReceiver), value, deadline, v, r, s)
  * @param transferExtraAssets Enable transferring unbridged assets to `onBehalfOf` on Pool Chain
  * @param chainId Destination LayerZero chain id
  * @param bridgeParams LayerZero related bridge parameters to use when bridging from
  *  Pool Chain --> `chainId` chain
  */
 function borrowAndBridgeViaLayerZero(
     address asset,
     uint256 amount,
     uint8 interestRateMode,
     uint16 referralCode,
     address onBehalfOf,
     bytes calldata lzOptions,
     bytes memory bridgeDelegationData,
     bool transferExtraAssets,
     uint32 chainId,
     PoolMessageLib.LayerZeroParams calldata bridgeParams
 ) external payable;
```

{% endcode %}

#### Example

#### Stargate v1

<pre class="language-solidity" data-full-width="true"><code class="lang-solidity"><strong>RepletePool.borrowAndBridgeViaStargate{value: bridgeFee}({
</strong>    asset: address(DAI),             // DAI address on Pool Chain
    amount: 1337 * 1e18,             // borrow 1337 DAI
    interestRateMode: 2,             // variable borrow mode
    referralCode: 0,                 // referral code; you can safely set to 0
    onBehalfOf: msg.sender,          // the address containing the collateral for this borrow
    lzOptions: lzOptions,            // LayerZero v2 composed message execution options
    bridgeDelegationData: signature  // bridge delegation signature
    transferExtraAssets: false,      // disable the "transferExtraAssets" option
    chainId: destChainId             // the Stargate v1 destination chain id
    bridgeParams: PoolMessageLib.StargateParams({ // ~~ Stargate v1 related parameters ~~
        to: abi.encodePacked(msg.sender),   // address that will receive DAI on `chainId`
        amount: 1337 * 1e18,                // amount to bridge from Pool Chain to `chainId`
        minAmount: 1337 * 1e18,             // set max slippage amount
        dstGasForCall: 500_000,             // 500k gas for the destination tx
        dstNativeAmount: 0,                 // native gas airdrop in the destination tx
        dstNativeAddr: dstNativeAddr,       // destination address to receive gas airdrop
        srcPoolId: srcPoolId,               // source Stargate v1 pool ID on Pool Chain
        dstPoolId: dstPoolId,               // destination Stargate v1 pool ID from Pool Chain
        refundAddress: payable(msg.sender), // refund address
        payload: payload                    // bytes data to send to `to` on `chainId`
    })
});
</code></pre>

#### Stargate v2

{% code fullWidth="true" %}

```solidity
RepletePool.borrowAndBridgeViaStargate{value: bridgeFee}({
    asset: address(DAI),             // DAI address on Pool Chain
    amount: 1337 * 1e18,             // borrow 1337 DAI
    interestRateMode: 2,             // variable borrow mode
    referralCode: 0,                 // referral code; you can safely set to 0
    onBehalfOf: msg.sender,          // the address containing the collateral for this borrow
    lzOptions: lzOptions,            // LayerZero v2 composed message execution options
    bridgeDelegationData: signature  // bridge delegation signature
    transferExtraAssets: false,      // disable the "transferExtraAssets" option
    chainId: destChainId             // the Stargate v2 destination chain id
    bridgeParams: PoolMessageLib.StargateV2Params({ // ~~ Stargate v2 related parameters ~~
        router: stargateDAIPool,                   // Stargate v2 DAI pool address on Pool Chain
        to: bytes32(uint256(uint160(msg.sender))), // address that will receive DAI on `chainId`
        amount: 1337 * 1e18,                       // amount to bridge from Pool Chain to `chainId`
        minAmount: 1337 * 1e18,                    // set max slippage amount
        extraOptions: extraOptions,                // LZv2 composed message execution options
        refundAddress: payable(msg.sender),        // refund address
        payload: payload,                          // bytes data to send to `to` on `chainId`
        oftCmd: oftCmd                             // unused for Stargate taxi transactions
    })
});
```

{% endcode %}

#### LayerZero

{% code fullWidth="true" %}

```solidity
RepletePool.borrowAndBridgeViaLayerZero{value: bridgeFee}({
    asset: address(BTC_B),           // BTC.b address on Pool Chain
    amount: 4.20 * 1e18,             // borrow 4.20 BTC.b
    interestRateMode: 2,             // variable borrow mode
    referralCode: 0,                 // referral code; you can safely set to 0
    onBehalfOf: msg.sender,          // the address containing the collateral for this borrow
    lzOptions: lzOptions,            // LayerZero v2 composed message execution options
    bridgeDelegationData: signature  // bridge delegation signature
    transferExtraAssets: false,      // disable the "transferExtraAssets" option
    chainId: destChainId,           // the LayerZero destination chain id
    bridgeParams: PoolMessageLib.LayerZeroParams({ // ~~ LayerZero related parameters ~~
        to: bytes32(uint256(uint160(msg.sender))), // address that will receive BTC.b on `chainId`
        amount: 4.20 * 1e18,                       // amount to bridge from Pool Chain to `chainId`
        refundAddress: payable(msg.sender),        // refund address
        payload: payload,                          // bytes data to send to `to` on `chainId`
        // either used for bridging OFTv1 (LZv1), OFTv2 (LZv1) or OFT (LZv2)
        // to provide LZv1 params: abi.encode(address,uint64,bytes)
        //     where the params are: (zroPaymentAddress, dstGasForCall, adapterParams)
        // to provide LZv2 params: abi.encode(uint256,bytes,bytes)
        //     where the params are: (minAmount, extraOptions, oftCmd)
        params: params
    })
});
```

{% endcode %}


# How to Repay

{% hint style="danger" %}
When repaying take care to input the correct data. Make sure you are repaying for the correct wallet.
{% endhint %}

You can repay any supported asset and close borrow positions across any chain through Replete by interacting with [RepletePool](/contracts/repletepool).

Repaying an asset is often straight forward, where you supply the borrowed asset to repay debt positions. However, if interacting with [RepletePool](/contracts/repletepool), there are a few things to note, for example if there are excess assets provided for the repayment:

* The default behavior is that excess assets are supplied to the pool on behalf of `onBehalfOf`. Allows for the user to withdraw the asset on any chain in another transaction.
* `transferExtraAssets` is an option to allow for transferring the excess supplied assets to `onBehalfOf` on Arbitrum instead of doing the default behavior above.

### From Any Chain

{% hint style="warning" %}
When repaying, ensure the [RepletePool](/contracts/repletepool) contract has enough allowance to spend funds on behalf of `msg.sender` for the amount being repaid.
{% endhint %}

To repay native token (if supported) through [RepletePool](/contracts/repletepool), set the `asset` parameter as `RepletePool.ETH_ADDRESS()` and set `amount` as the intended repay amount. Ensure that `msg.value` covers the bridge transfer fee too. `msg.value` should equal `amount` + `bridgeFee`.

If supplying native is not supported, the function will revert with error `Replete_UnsupportedAsset(address asset)`

#### Interface

#### Stargate v1

{% code fullWidth="true" %}

```solidity
 /**
  * @notice Repays a borrowed `amount` on a specific reserve, burning the equivalent debt tokens owned
  * - E.g. User repays 100 USDC, burning 100 variable/stable debt tokens of the `onBehalfOf` address
  * @param asset The local address of the borrowed underlying asset
  * @param amount The amount to repay in local asset decimals
  * @param interestRateMode The interest rate mode at of the debt the user wants to repay: 1 for Stable, 2 for Variable
  * @param onBehalfOf The remote address of the user to repay for on Pool Chain
  * @param transferExtraAssets Option to enable transferring the unbridged assets to `onBehalfOf`
  *  on Pool Chain instead of doing the default behavior (extra assets are supplied to `onBehalOf`).
  * @param stgParams Stargate v1 related bridge parameters
  */
 function repay(
     address asset,
     uint256 amount,
     uint8 interestRateMode,
     address onBehalfOf,
     bool transferExtraAssets,
     StargateSupplyParams calldata stgParams
 ) external payable;
```

{% endcode %}

#### Stargate v2

{% code fullWidth="true" %}

```solidity
 /**
  * @notice Repays a borrowed `amount` on a specific reserve, burning the equivalent debt tokens owned
  * - E.g. User repays 100 USDC, burning 100 variable/stable debt tokens of the `onBehalfOf` address
  * @param asset The local address of the borrowed underlying asset
  * @param amount The amount to repay in local asset decimals
  * @param interestRateMode The interest rate mode at of the debt the user wants to repay: 1 for Stable, 2 for Variable
  * @param onBehalfOf The remote address of the user to repay for on Pool Chain
  * @param transferExtraAssets Option to enable transferring the unbridged assets to `onBehalfOf`
  *  on Pool Chain instead of doing the default behavior (extra assets are supplied to `onBehalOf`).
  * @param stgParams Stargate v2 related bridge parameters
  */
 function repay(
     address asset,
     uint256 amount,
     uint8 interestRateMode,
     address onBehalfOf,
     bool transferExtraAssets,
     StargateV2SupplyParams calldata stgParams
 ) external payable returns (Ticket memory);
```

{% endcode %}

#### Example

#### Stargate v1

{% code fullWidth="true" %}

```solidity
RepletePool.repay{value: bridgeFee}({
    asset: address(DAI),                           // local chain DAI address
    amount: 1337 * 1e18,                           // repay 1337 DAI
    interestRateMode: 2,                           // variable debt is being repaid
    onBehalfOf: msg.sender,                        // who is this repayment for
    transferExtraAssets: false,                    // disable the "transferExtraAssets" option
    referralCode: 0,                               // referral code; you can safely set to 0
    stgParams: StargateSupplyParams({              // ~~ Stargate v1 related parameters ~~
        dstGasForCall: 500_000,                    // 500k gas for the destination tx
        dstNativeAmount: 0,                        // native gas airdrop in the destination tx
        dstNativeAddr: RepletePool.destAddress(),  // {BridgeReceiver} address on Pool Chain
        srcPoolId: srcPoolId,                      // source Stargate v1 pool ID
        dstPoolId: dstPoolId,                      // destination Stargate v1 pool ID
        refundAddress: payable(msg.sender),        // refund address
        minAmountLD: 1337 * 1e18                   // set max slippage amount
    })
});
```

{% endcode %}

#### Stargate v2

{% code fullWidth="true" %}

```solidity
RepletePool.repay{value: bridgeFee}({
    asset: address(DAI),                     // local chain DAI address
    amount: 1337 * 1e18,                     // repay 1337 DAI
    interestRateMode: 2,                     // variable debt is being repaid
    onBehalfOf: msg.sender,                  // who is this repayment for
    transferExtraAssets: false,              // disable the "transferExtraAssets" option
    referralCode: 0,                         // referral code; you can safely set to 0
    stgParams: StargateV2SupplyParams({      // ~~ Stargate v2 related parameters ~~
        router: stargateDAIPool,             // Stargate v2 DAI pool address
        extraOptions: extraOptions,          // LZv2 composed message execution options
        oftCmd: "",                          // unused for Stargate taxi transactions 
        refundAddress: payable(msg.sender),  // refund address
        minAmountLD: 1337 * 1e18             // set max slippage amount  
    })
});
```

{% endcode %}


# How to Withdraw

{% hint style="danger" %}
When withdrawing take care to input the correct data. Make sure you are withdrawing to a wallet you have access to on that chain.
{% endhint %}

Chain abstracted withdrawing has slightly different behaviors compared to a typical withdraw. In the case that there is an issue, whether due to the bridge, there are excess tokens, or invalid parameters were supplied, when bridging the asset from Pool Chain (Arbitrum) to another chain there are a few things to note:

* The default behavior is that unbridged assets are supplied to the pool on behalf of `onBehalfOf`. Allows for the user to withdraw the asset on any chain in another transaction.
* `transferExtraAssets` is an option to allow for transferring the unbridged assets to `onBehalfOf` on Arbitrum instead of doing the default behavior above.

### Withdrawing Security

To minimize smart contract risk when Replete withdraws assets on behalf of users, Replete utilizes [permit signatures](https://eips.ethereum.org/EIPS/eip-2612). This means all withdrawing functions will have an extra parameter called `permitSignature` allowing Replete to withdraw a particular asset on behalf of the user via the `permit` function, up to the allowance provided. This is because the caller for `withdraw()` will be `BridgeReceiver` on Arbitrum. Essentially, you are delegating token approval to the `BridgeReceiver` contract.

The following function is called on the particular rToken:

`function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s)`

{% hint style="danger" %}
Do not permit more value than you require
{% endhint %}

It is also fine to not provide a valid `permitSignature` (set it as empty bytes), as long as `BridgeReceiver` has enough allowance with the rToken. This can be achieved through calling [`approve()`](https://ethereum.org/en/developers/docs/standards/tokens/erc-20#methods) on the rToken on Arbitrum.

### Native Asset

The native asset on Pool Chain is ETH. To withdraw ETH from any chain set `asset` as `BridgeReceiver.ETH_ADDRESS()`. You can still withdraw even if ETH is not the native token of the chain, for example you can still withdraw ETH from Avalanche even though the native token is AVAX, as long as there is a bridge route for ETH from Pool Chain to Avalanche.

### Any Chain to Pool Chain

You can withdraw any supported asset, assuming you have sufficient collateral, across any chain through Replete.

#### Interface

{% code fullWidth="true" %}

```solidity
 /**
  * @notice Withdraws an `amount` of underlying asset from the reserve, burning the equivalent rTokens owned
  * E.g. User has 100 rUSDC, calls withdraw() and receives 100 USDC, burning the 100 rUSDC
  * @dev The withdrawn assets will be received on Pool Chain
  * @param asset The remote address of the underlying asset to withdraw
  * @param amount The amount to be borrowed in remote asset decimals
  *   - Send the value `type(uint256).max` in order to withdraw the whole rToken balance
  * @param to The remote address that will receive the withdrawn asset on Pool Chain
  * @param permitSignature rToken Permit signature approved for `BridgeReceiver`
  *  encoded as: abi.encode(owner, address(bridgeReceiver), value, deadline, v, r, s)
  * @param lzOptions LayerZero v2 related bridge message options
  */
 function withdraw(
     address asset,
     uint256 amount,
     address to,
     bytes calldata permitSignature,
     bytes calldata lzOptions
 ) external payable;
```

{% endcode %}

#### Example

{% code fullWidth="true" %}

```solidity
RepletePool.withdraw{value: bridgeFee}(
    asset: address(DAI),        // DAI address on Pool Chain
    amount: 1337 * 1e18,        // withdraw 1337 DAI
    to: msg.sender,             // receiving address on Pool Chain
    permitSignature: signature, // rDAI permit signature
    lzOptions: lzOptions        // LayerZero v2 composed message execution options
});
```

{% endcode %}

### Any Chain to Any Chain

Currently, Replete is configured to work with either Stargate or LayerZero to allow bridging support for multiple assets. Withdraw the Replete way.

#### Interface

#### Stargate v1

{% code fullWidth="true" %}

```solidity
 /**
  * @notice Withdraws an `amount` of underlying asset from the reserve, burning the equivalent rTokens owned
  * E.g. User has 100 rUSDC, calls withdraw() and receives 100 USDC, burning the 100 rUSDC
  * @dev The withdrawn assets will be received on `chainId` chain
  * @param asset The remote address of the underlying asset to withdraw
  * @param amount The amount to be borrowed in remote asset decimals
  *   - Send the value type(uint256).max in order to withdraw the whole rToken balance
  * @param fallbackTo The remote address that will receive the withdrawn asset on Pool Chain.
  *  Used only if `transferExtraAssets` is enabled and there are unbridged assets.
  * @param permitSignature rToken Permit signature approved for `BridgeReceiver`
  *  encoded as: abi.encode(owner, address(bridgeReceiver), value, deadline, v, r, s)
  * @param lzOptions LayerZero v2 related bridge message options
  * @param transferExtraAssets Enable transferring unbridged assets to `onBehalfOf` on Pool Chain
  * @param chainId Destination Stargate v1 chain id
  * @param bridgeParams Stargate v1 related bridge parameters to use when bridging from
  *  Pool Chain --> `chainId` chain
  */
 function withdrawAndBridgeViaStargate(
     address asset,
     uint256 amount,
     address fallbackTo,
     bytes calldata permitSignature,
     bytes calldata lzOptions,
     bool transferExtraAssets,
     uint16 chainId,
     PoolMessageLib.StargateParams calldata bridgeParams
 ) external payable;
```

{% endcode %}

#### Stargate v2

{% code fullWidth="true" %}

```solidity
 /**
  * @notice Withdraws an `amount` of underlying asset from the reserve, burning the equivalent rTokens owned
  * E.g. User has 100 aUSDC, calls withdraw() and receives 100 USDC, burning the 100 aUSDC
  * @dev The withdrawn assets will be received on `chainId` chain
  * @param asset The remote address of the underlying asset to withdraw
  * @param amount The amount to be borrowed in remote asset decimals
  *   - Send the value type(uint256).max in order to withdraw the whole rToken balance
  * @param fallbackTo The remote address that will receive the withdrawn asset on Pool Chain.
  *  Used only if `transferExtraAssets` is enabled and there are unbridged assets.
  * @param permitSignature rToken Permit signature approved for `BridgeReceiver`
  *  encoded as: abi.encode(owner, address(bridgeReceiver), value, deadline, v, r, s)
  * @param lzOptions LayerZero v2 related bridge message options
  * @param transferExtraAssets Enable transferring unbridged assets to `onBehalfOf` on Pool Chain
  * @param chainId Destination Stargate v2 chain id
  * @param bridgeParams Stargate v2 related bridge parameters to use when bridging from
  *  Pool Chain --> `chainId` chain
  */
 function withdrawAndBridgeViaStargate(
     address asset,
     uint256 amount,
     address fallbackTo,
     bytes calldata permitSignature,
     bytes calldata lzOptions,
     bool transferExtraAssets,
     uint32 chainId,
     PoolMessageLib.StargateV2Params calldata bridgeParams
 ) external payable;
```

{% endcode %}

#### LayerZero

{% code fullWidth="true" %}

```solidity
 /**
  * @notice Withdraws an `amount` of underlying asset from the reserve, burning the equivalent rTokens owned
  * E.g. User has 100 aUSDC, calls withdraw() and receives 100 USDC, burning the 100 aUSDC
  * @dev The withdrawn assets will be received on `chainId` chain
  * @param asset The remote address of the underlying asset to withdraw
  * @param amount The amount to be borrowed in remote asset decimals
  *   - Send the value type(uint256).max in order to withdraw the whole rToken balance
  * @param fallbackTo The remote address that will receive the withdrawn asset on Pool Chain.
  *  Used only if `transferExtraAssets` is enabled and there are unbridged assets.
  * @param permitSignature rToken Permit signature approved for `BridgeReceiver`
  *  encoded as: abi.encode(owner, address(bridgeReceiver), value, deadline, v, r, s)
  * @param lzOptions LayerZero v2 related bridge message options
  * @param transferExtraAssets Enable transferring unbridged assets to `fallbackTo` on Pool Chain
  * @param chainId Destination LayerZero chain id
  * @param bridgeParams LayerZero related bridge parameters to use when bridging from
  *  Pool Chain --> `chainId` chain
  */
 function withdrawAndBridgeViaLayerZero(
     address asset,
     uint256 amount,
     address fallbackTo,
     bytes calldata permitSignature,
     bytes calldata lzOptions,
     bool transferExtraAssets,
     uint32 chainId,
     PoolMessageLib.LayerZeroParams calldata bridgeParams
 ) external payable;
```

{% endcode %}

#### Example

#### Stargate v1

{% code fullWidth="true" %}

```solidity
RepletePool.withdrawAndBridgeViaStargate{value: bridgeFee}(
    asset: address(DAI),        // DAI address on Pool Chain
    amount: 1337 * 1e18,        // withdraw 1337 DAI
    to: msg.sender,             // receiving address on Pool Chain
    permitSignature: signature, // rDAI permit signature
    lzOptions: lzOptions        // LayerZero v2 composed message execution options
    transferExtraAssets: false, // disable the "transferExtraAssets" option
    chainId: destChainId,       // the Stargate v1 destination chain id
    bridgeParams: PoolMessageLib.StargateParams({ // ~~ Stargate v1 related parameters ~~
        to: abi.encodePacked(msg.sender),   // address that will receive DAI on `chainId`
        amount: 1337 * 1e18,                // amount to bridge from Pool Chain to `chainId`
        minAmount: 1337 * 1e18,             // set max slippage amount
        dstGasForCall: 500_000,             // 500k gas for the destination tx
        dstNativeAmount: 0,                 // native gas airdrop in the destination tx
        dstNativeAddr: dstNativeAddr,       // destination address to receive gas airdrop
        srcPoolId: srcPoolId,               // source Stargate v1 pool ID on Pool Chain
        dstPoolId: dstPoolId,               // destination Stargate v1 pool ID from Pool Chain
        refundAddress: payable(msg.sender), // refund address
        payload: payload                    // bytes data to send to `to` on `chainId`
    })
});
```

{% endcode %}

#### Stargate v2

{% code fullWidth="true" %}

```solidity
RepletePool.withdrawAndBridgeViaStargate{value: bridgeFee}({
    amount: 1337 * 1e18,        // withdraw 1337 DAI
    to: msg.sender,             // receiving address on Pool Chain
    permitSignature: signature, // rDAI permit signature
    lzOptions: lzOptions        // LayerZero v2 composed message execution options
    transferExtraAssets: false, // disable the "transferExtraAssets" option
    chainId: destChainId,       // the Stargate v2 destination chain id
    bridgeParams: PoolMessageLib.StargateV2Params({ // ~~ Stargate v2 related parameters ~~
        router: stargateDAIPool,                   // Stargate v2 DAI pool address on Pool Chain
        to: bytes32(uint256(uint160(msg.sender))), // address that will receive DAI on `chainId`
        amount: 1337 * 1e18,                       // amount to bridge from Pool Chain to `chainId`
        minAmount: 1337 * 1e18,                    // set max slippage amount
        extraOptions: extraOptions,                // LZv2 composed message execution options
        refundAddress: payable(msg.sender),        // refund address
        payload: payload,                          // bytes data to send to `to` on `chainId`
        oftCmd: oftCmd                             // unused for Stargate taxi transactions
    })
});
```

{% endcode %}

#### LayerZero

{% code fullWidth="true" %}

```solidity
RepletePool.withdrawAndBridgeViaLayerZero{value: bridgeFee}({
    amount: 4.20 * 1e18,        // withdraw 4.20 BTC.b
    to: msg.sender,             // receiving address on Pool Chain
    permitSignature: signature, // rBTCb permit signature
    lzOptions: lzOptions        // LayerZero v2 composed message execution options
    transferExtraAssets: false, // disable the "transferExtraAssets" option
    chainId: destChainId,       // the LayerZero destination chain id
    bridgeParams: PoolMessageLib.LayerZeroParams({ // ~~ LayerZero related parameters ~~
        to: bytes32(uint256(uint160(msg.sender))), // address that will receive BTC.b on `chainId`
        amount: 4.20 * 1e18,                       // amount to bridge from Pool Chain to `chainId`
        refundAddress: payable(msg.sender),        // refund address
        payload: payload,                          // bytes data to send to `to` on `chainId`
        // either used for bridging OFTv1 (LZv1), OFTv2 (LZv1) or OFT (LZv2)
        // to provide LZv1 params: abi.encode(address,uint64,bytes)
        //     where the params are: (zroPaymentAddress, dstGasForCall, adapterParams)
        // to provide LZv2 params: abi.encode(uint256,bytes,bytes)
        //     where the params are: (minAmount, extraOptions, oftCmd)
        params: params
    })
})
```

{% endcode %}


# RepletePool

Main entrypoint for all user actions, enabling chain abstraction.

Uses cross chain messaging services and liquidity bridges to communicate and bridge funds to, and from, the Pool Chain (Arbitrum).

***

If interacting on Pool Chain then interact with [`HostedRepletePool`](https://github.com/RepleteFinance/replete-protocol/blob/main/src/hosted/RepletePool.sol) which is an ABI compatible [RepletePool](https://github.com/RepleteFinance/replete-protocol/blob/main/src/crosschain/RepletePool.sol) contract. This contract interacts with the pool directly, rather than using any messaging services, and is just a proxy contract for [`Pool`](https://github.com/RepleteFinance/replete-protocol/blob/main/src/interfaces/IPool.sol) and is ABI compatible with [`IRepletePoolCore`](https://github.com/RepleteFinance/replete-protocol/blob/main/src/interfaces/IRepletePoolCore.sol)

If interacting on any other chain then interact with [`RepletePool`](https://github.com/RepleteFinance/replete-protocol/blob/main/src/crosschain/RepletePool.sol)


# BridgeReceiver

Receives and handles all cross chain messages. Exists only on Pool Chain (Arbitrum).

Currently integrated with LayerZero v1, v2 and Stargate v1, v2.

***

An internal Replete contract which proxies all communications from [RepletePool](/contracts/repletepool) to the Pool contract on Pool Chain. A mapping of `bridgeModules` are stored in the contract which are [IBridgeModule](https://github.com/RepleteFinance/replete-protocol/blob/main/src/interfaces/IBridgeModule.sol) adapters, allowing to bridge assets from Pool Chain to any remote chain, most likely used by `{*AndBridgeVia*}` methods on [RepletePool](/contracts/repletepool).

Whilst the [BridgeReceiver](https://github.com/RepleteFinance/replete-protocol/blob/main/src/hosted/BridgeReceiver.sol) performs actions on behalf of the user, some safety features exist to protect user funds. All assets are supplied on behalf of the user, rather than the [BridgeReceiver](https://github.com/RepleteFinance/replete-protocol/blob/main/src/hosted/BridgeReceiver.sol) contract, so users are able to withdraw assets, in the case of an emergency, by withdrawing directly on the Pool contract. This also means that Replete is unable to directly create a borrow position on your behalf or withdraw your assets.

When you borrow through [RepletePool](/contracts/repletepool), you sign a credit delegation signature `bridgeDelegationData` which allows the [BridgeReceiver](https://github.com/RepleteFinance/replete-protocol/blob/main/src/hosted/BridgeReceiver.sol) contract to create a borrow position from your collateral for the amount you allowed. These signatures are one time use and expire if unused. This also prevents replay attacks if the underlying cross chain messaging service is compromised. Read more about [Borrowing Security](/developers/how-to-borrow#borrowing-security).

When you withdraw through [RepletePool](/contracts/repletepool), you sign a permit signature `permitSignature` which allows the [BridgeReceiver](https://github.com/RepleteFinance/replete-protocol/blob/main/src/hosted/BridgeReceiver.sol) contract to withdraw your assets for up to the amount you allowed. These signatures are one time use and expire if unused. This also prevents replay attacks if the underlying cross chain messaging service is compromised. Read more about [Withdrawing Security](/developers/how-to-withdraw#withdrawing-security).


# Privacy Policy

The Replete Protocol operates in a decentralized and permissionless manner. Although we may collect and process information about users of Replete.fi or the Interface in accordance with this Privacy Policy, we do not have information about all protocol users beyond what is already publicly available and recorded on the blockchain.

This Privacy Policy (the "Privacy Policy") explains how Replete Finance ("we," "our," or "us") collects, uses, and shares information in connection with our Services as well as your rights and choices regarding such information. These terms apply to Replete.fi and the Interface and any other online location that links to this Privacy Policy (collectively, the "Services").

By using the Services, you also agree to our collection, use, and sharing of your information as described in this Privacy Policy. If you do not agree with the Terms of Use, you should not use or access the Interface or the Services.

This Privacy Policy may be modified from time to time. Your use of the Site is at all times subject to the Terms of Service, which incorporates this Privacy Policy.

## 1. Information Collection

We may collect your name, contact information, and message content when you communicate with us, such as providing feedback or asking for support. If you voluntarily share additional information with us, you are solely responsible for it.

We may collect your wallet address you use to connect to the Interface to bloc wallets and for security purposes. Additionally, we may collect details about the device you use to access the Site and Interface to optimize and troubleshoot any technical issues. Moreover, we may collect details on how you interact with the interface and Services. Analyzing this data helps us improve the user experience.

## 2. Use of Information

We may collect and use information for business purposes in accordance with the practices described in this Privacy Policy. Our business purposes for collecting and using information including:

#### Operating and Managing Services

* Providing, maintaining, and supporting the Services;
* Detecting and preventing fraud, breaches, and harm.

#### Improving Services

* To monitor the Services and fulfil legitimate business purposes.

#### Security and Compliance

* Ensuring Interface security and integrity.
* Investigating and preventing wrongdoing.

#### Fulfilling Requests

* Carrying out your specific instructions.

#### Consent-Based Use

* Utilizing information based on your consent.

Additionally, non-identifiable information may be used as allowed by law. For details on your rights and choices regarding information usage, please refer to the "Analytics" section below.

## 3. Sharing and Disclosure of Information

We may share or disclose collected information as described in this Privacy Policy and for the purposes outlined in the "Use of Information" section above. We may share information with:

* Affiliates: Including when they act as service providers or for their internal use;
* Professional Advisors: For audits and legal compliance;
* Service Providers: For business purposes like fraud prevention, security, data analytics, and more bound by this Privacy Policy.

Additionally, non-identifiable information may be shared (including aggregated or de-identified data) as allowed by law.

## &#x20;4. Third-Party Services

We may also integrate technologies operated or controlled by other parties into parts of the Services. For example, the Services may include links that hyperlink to websites, platforms, and other services not operated or controlled by us.

Please note that when you interact with other parties, including when you leave the Interface, those parties may independently collect information about you and solicit information from you. The information collected and stored by those parties remains subject to their own policies and practices, including what information they share with us, your rights and choices on their services and devices, and whether they store information in the U.S. or elsewhere. We encourage you to familiarize yourself with and consult their privacy policies and terms of use.

For example, by using a third-party wallet to engage in transactions on public blockchains, your interactions with any third-party wallet provider are governed by the applicable terms of service and privacy policy of that wallet provider.

## 5. Cookies Policy

We value your privacy and aim to be transparent about our use of technologies. This policy explains how and when we utilize cookies on our Services.

**What types of cookies do we use?**

Strictly Necessary Cookies: Essential for basic functionality, like page navigation and secure access and  They do not collect personal information.

Analytical/Performance Cookies: Allow us to analyze how visitors use the Interface, enhancing functionality and performance.

Functional Cookies: Enable enhanced functionality and personalization. They may remember your preferences, such as your previously used wallet.

**How to disable cookies?**

Most web browsers offer the option to enable or disable cookies. For detailed guidance on controlling, disabling, or deleting cookies, visit aboutcookies.org.

## 6. Data Security

We implement reasonable administrative, physical, and technical security safeguards to help protect information about you from loss, theft, misuse, unauthorized access, disclosure, alteration, and destruction. Nevertheless, transmission via the Internet is not completely secure and we cannot guarantee the security of information about you in any capacity.

## 7. Data Retention

We retain collected information for as long as necessary to fulfil the purpose it was collected for, as stated in this Privacy Policy, and in compliance with applicable legal requirements.

## 8. International Transfers

Your information may be transferred, processed, and stored in different jurisdictions, including the European Economic Area and the United Kingdom. Data protection laws in these areas may differ from your home country. Using our Services or providing information signifies your consent to these transfers, as outlined in this Privacy Policy.

## 9. Minors

Our Services are intended for general audiences, not children. To use them, you must be legally able to enter into an agreement.

## 10. Additional Disclosures for California Residents

This section applies solely to California residents. The CCPA grants additional rights related to knowing, deleting, and opting out of personal information usage. It also mandates businesses to provide notices and means for exercising these rights.

For further details, review the "Information Collection" and "Sharing and Disclosure of Information" sections. We don't sell personal information. To exercise your rights, email us at <info@replete.fi>. Be specific about the right you're invoking. We'll confirm receipt within thirty (30) days.

## 12. Additional Disclosures for Data Subjects in the EU/UK

**A. Roles**

We act as a controller for the personal data you interact with on our Services.

**B. Lawful Basis for Processing**

We process data based on lawful bases including consent, contractual necessity, legal obligation, and legitimate interests.

**C. Your Data Subject Rights**

If you're in the EU/UK, you have rights including access, rectification, erasure, and portability of your personal data. You can also withdraw consent. Note, we can't modify or delete information stored on a blockchain.

To exercise these rights, contact us via the provided email or postal address. We'll respond within thirty (30) days. We may need specific information to confirm your identity. We retain information for legitimate interests, legal compliance, and dispute resolution.

If you have concerns about our compliance, contact us or your local data protection regulator.

## 13. Changes to this Privacy Policy

We reserve the right to revise and reissue this Privacy Policy at any time. Any changes will be effective immediately upon our posting of the revised Privacy Policy. For the avoidance of doubt, your continued use of the Services indicates your consent to the revised Privacy Policy then posted.

## 14. Contact Us

If you have any questions or comments about this Privacy Policy, our data practices, or our compliance with applicable law, please contact us by email: <info@replete.fi>.


# Terms of use

## 1. Welcome to Replete Finance

Our most cordial greetings and welcome to Replete Finance, an open-source website-hosted software platform operated by the \[Replete Foundation] (the "Replete Finance" or "DAO"). These Terms of Use ("Terms") govern your access to and use of both the Replete.fi website (referred to as or "Site") and App.replete.fi interface (referred to as the “Interface") collectively referred to as the "Services." The Services are brought to you by Replete Finance ("we," "us," or "our") a decentralized, community-governed protocol deployed on public blockchain networks and systems.

**Replete.fi** and its subdomains provide information and resources about the decentralized non-custodial liquidity protocol called Replete Finance, comprised of open-source self-executing smart contracts that are deployed on various permissionless public blockchains, such as Ethereum or Arbitrum (the "Replete Protocol" or the "Protocol"), as well as access points to independent front-end Interface providing one of the available applications through which users, via their self-custodial wallets, interact with the Replete Protocol.

Please note that these Terms are subject to **mandatory arbitration**. You agree that any disputes relating to the Services will be resolved by mandatory binding individual arbitration and that you waive any right to a trial by jury or to participate in a class-action lawsuit or class-wide arbitration.

By accessing, browsing, using our Services, various websites, including, without limitation, Replete.fi and App.replete.fi (and any respective subdomains); applications, and other services that link to these Terms, as well as any information, text, links, graphics, video or other materials stored, whether accessed to the site or otherwise, you signify that you have read, understand, and agree to be bound by these Terms in their entirety and other policies referenced herein (collectively, the "Agreement"). If you do not agree, you are not authorized to access nor use the Services.

This information, nor any information&#x20;

## 2. Modification of Terms

We may change, update or modify the Services, the Agreement, and any part of the Terms at any time, for any reason, at our sole discretion. Once any part of the Agreement is updated and in effect, you will be bound by the Terms, and your continued access and use of the Service serves as confirmation of your acceptance of those modification. We may, at any time, and without liability to you, modify or discontinue all or part of the Services (including access to the Services via any third-party links). If you do not agree with any modifications to these Terms, you must immediately stop accessing and using the Services.

## 3. Eligibility

To access or use the Services, Interface or any aspect related to Replete Finance, you must be able to form a legally binding contract. Accordingly, you represent that you are at least the age of majority in your jurisdiction and have the full right, power, and authority to enter into and comply with the Terms on behalf of yourself and any company or legal entity for which you may access or use the Services.

You represent that your access and use of the Services will fully comply with all applicable laws and regulations, and that you will not access or use the Services to conduct, promote, or otherwise facilitate any illegal activity. Furthermore you represent that you are not subject of economic or trade sanctions enforced by any governmental authority or otherwise designated on any list of prohibited or restricted parties. Additionally, you are not a citizen, resident, or organized in a jurisdiction or territory that is the subject of comprehensive country-wide, territory-wide, or regional economic sanctions such as Myanmar, Côte D'Ivoire, Cuba, Crimea and Sevastopol, the so-called Donetsk People’s Republic, Democratic Republic of Congo, Iran, Iraq, Libya, the so-called Luhansk People’s Republic, Mali, Nicaragua, Democratic People’s Republic of Korea (North Korea), Somalia, Sudan, Syria, Yemen, Zimbabwe or any other country to which Canada, the United States, the United Kingdom or the European Union embargoes goods or imposes similar sanctions.

Our Interface are NOT offered to persons or entities who reside in, are citizens of, are incorporated in, or have a registered office in the United States of America or any Prohibited Localities. If you are a Restricted Person, then do not attempt to access or use the Interface.

We make no representations or warranties that the information, products, or services provided through our Interface, are appropriate for access or use in other jurisdictions. You are not permitted to access or use our Interface in any jurisdiction or country if it would be contrary to the law or regulation of that jurisdiction or if it would subject us to the laws of, or any registration requirement with, such jurisdiction. While the Interface does not custody or hold any assets of users, rendering Replete Finance incapable of “blocking” assets, we reserve the right to limit the availability of our Interface to any person, geographic area, or jurisdiction, at any time and at our sole and absolute discretion. We are under no obligation to make restrictions, or the rationale underlying such restrictions, public.

You must not use any software or networking techniques, including use of a Virtual Private Network (VPN) to modify your internet protocol address or otherwise circumvent or attempt to circumvent this prohibition.

## 4. About the Services

### Services

Replete Finance is an informational resource about the Protocol; however, it is not the exclusive or sole source. All information provided in connection with your access and use of the Services is intended for informational purposes only. While we strive to provide accurate and reliable information, we cannot guarantee the accuracy, completeness, or timeliness of the information provided. It is possible that the information may be outdated or subject to errors or omissions. You should not take, or refrain from taking, any action based on any information contained on Replete.fi or any sub-domain including, without limitation, the docs.replete.fi or any other information that we make available at any time, including blog posts, data, articles, links to third-party content, discord content, news feeds, tutorials, tweets, and videos. You further acknowledge and agree that we will not be responsible or liable, directly or indirectly, for any damage or loss caused or alleged to be caused by or in connection with the use of or reliance on any such content, goods, or services available on or through any such site or resource.

### Online platform, your assets

You acknowledge and agree that Replete Finance is an online platform provider and not a broker-dealer or a Lender. It is important to understand that neither we nor any affiliated entity is a party to any transaction on the blockchain networks underlying the Replete Protocol; we do not have possession, custody or control over any digital assets, or any user’s funds. You understand that when you interact with Replete Protocol, you retain control over your digital assets.

### Assets in your custody

Users use third-party self-custodial wallets to interact with the Replete Protocol; we have no control or guarantee over the wallets. To interact with the Replete Protocol using the Interface, you will need to connect and engage with it through your self-custodial wallet. It is essential to understand that your self-custodial wallet is provided by a third-party entity and is generally governed by separate terms and conditions set by the respective third-party service provider. These terms and conditions may involve additional fees, disclaimers, or risk warnings regarding the accuracy and reliance on the provided information. Reviewing and comprehending the terms and conditions associated with your chosen self-custodial wallet provider to ensure compliance and to be aware of any applicable charges or risks is your sole responsibility.

### No intermediaries in transaction

We are not intermediaries to the Replete Protocol transactions. Due to the non-custodial and decentralized nature of the technology, we are not intermediaries, agents, advisors, or custodians, and we do not have a fiduciary relationship or obligation to you regarding any other decisions or activities that you affect when using our Services. By using the Services, you acknowledge and agree that we are not responsible for the operation of the blockchain-based software and networks underlying the Protocol, that there exists no guarantee of the functionality, security, or availability of that software and networks, and that the underlying blockchain-based networks are subject to sudden changes in operating rules.

### Publicly on blockchains

We have no information about all Protocol transactions beyond what is publicly available via the blockchain. The Protocol is deployed on multiple blockchain-based networks, and we are not responsible for the operation nor information of such networks. You acknowledge that we do not have information regarding all Replete Protocol transactions beyond what is available or obtainable publicly via the blockchain.

### Blockchain fees

Transactions using blockchains may require the payment of gas fees, which are essentially network transaction fees paid on every transaction that occurs on the selected blockchain network. Please note that gas fees are non-refundable. We do not provide any services to users or deliver, hold, and/or receive payment for digital assets.

### Liquidation

Borrowers may lose some or all of their collateral in certain circumstances, including if their collateral value does not properly cover their loan/debt value. Upon Liquidation, Borrowers may also incur a penalty fee. Users may seek out loans that are eligible for Liquidation and pay back part of the debt owed in exchange for receiving discounted collateral.

### Communication

You may elect to receive notifications or other communications from Replete Finance in connection with the Services. If you elect receive communications in connection with your positions, you agree and acknowledge that Replete Finance is under no obligation to send any emails or communicate with you regarding such positions and that Replete DAO will not be responsible or liable to you for any loss and takes no responsibility for and will not be liable to you for in the case of failure of such email or communication.

### No solicitation

You acknowledge and comprehend that any transfers, pools, staking, or other transactions you undertake using transaction data supplied by the Site are deemed unsolicited. This signifies that you have not received any investment guidance in relation to such actions, and that we do not conduct a suitability assessment for any such transaction.

### No investment advice

You agree and understand that the information provided by the Site is solely for informational purposes and should not be interpreted as investment advice. It is your sole responsibility to assess whether any investment, investment strategy, or associated transaction aligns with your individual investment goals, financial situation, and risk tolerance. We do not provide investment recommendations on the viability of any investment transaction or opportunity and neither do we invite you to deal in digital assets.

## Assumptions of Risk

### Nascent technology

You assume the risks of engaging in novel and experimental technology. Technologies such as smart contracts on various blockchains, cryptographic tokens generated by the smart contracts, and other nascent software, applications, and systems that interact with blockchain-based networks are experimental, speculative, inherently risky, and subject to change. Among other risks, bugs, malfunctions, cyberattacks, or changes to the applicable blockchain could disrupt these technologies and even result in a total loss of digital assets, their market value, or digital funds. We assume no liability or responsibility for any such risks. If you are not comfortable assuming these risks, you should not access or engage in transactions using blockchain-based technology. You recognize and assume the risk of potential loss of some or all of the value of your digital assets.

### Third-party liability

We are not liable nor responsible for the content or services of any third-party, including, without limitation, any network or apps like Telegram, Twitter, Discord or MetaMask, and we make no representations regarding the content or accuracy of any third-party services or materials. The use and access of any third-party products or services, including through the Services, are at your own risk. Please note that we do not have control over third-party services. Consequently, we cannot guarantee, endorse, or recommend such content or services to users of the Interface, nor can we endorse their use for any specific purpose.

### Automated immutable smart contracts

You acknowledge and agree that all transactions accessed through the blockchain-based networks will be automatically processed using one or more smart contracts. By engaging in transactions using the Services, you acknowledge and consent to the automatic processing of all transactions in connection with using the Services, whether collection or disbursement of proceeds or something else. You further acknowledge and agree that the applicable smart contract will dictate how the funds of a transaction and ownership of digital assets are distributed.

### Risks of using the Services

You acknowledge and bear sole responsibility for evaluating the Services and risks before using them, and all transactions on the blockchain are irreversible, final, and without refunds. The Services may be disabled, disrupted, or adversely impacted as a result of sophisticated cyber-attacks, surges in activity, computer viruses, and/or other operational or technical challenges, among other things. We disclaim any ongoing obligation to notify you of all the potential risks of using and accessing our Services. You agree to accept these risks and agree that you will not seek to hold any Replete Finance stakeholder Indemnified Party responsible for any consequent losses.

### Responsibility of your self-custodial wallet

You understand and agree that you are solely responsible for maintaining the security of your self-custodial wallet. You alone are responsible for securing your private keys. We do not have access to your private keys. Any unauthorized access to your self-custodial wallet by third parties could result in the loss or theft of any digital asset or funds held in your account and any associated accounts. You understand and agree that we have no involvement in, and you will not hold us responsible for managing and maintaining the security of your self-custodial wallet. The private key associated with the self-custodial wallet address from which you transfer digital assets or the private key associated is the only private key that can control the digital assets you transfer into the smart contracts.

### Right to restrict access

You agree that we have the right to restrict your access to the Services via any technically available methods if we suspect, in our sole discretion, that you are not Eligible to use the Interface or Services.

### Risk of accessibility

As a condition to accessing or using the Services, you acknowledge, understand, and agree that from time to time, the Services may be inaccessible or inoperable for any reason, including, but not limited to equipment malfunctions, periodic maintenance procedures or repairs, causes beyond our control or that we could not reasonably foresee, disruptions and temporary or permanent unavailability of underlying blockchain infrastructure or unavailability of third-party service providers or external partners for any reason.

You acknowledge and agree that you will access and use the Services at your own risk. You should not engage in blockchain-based transactions unless it is suitable given your circumstances and financial resources. By using the Services, you represent that you have been, are, and will be solely responsible for conducting your own due diligence into the risks of a transaction and the underlying smart contracts and digital assets.

### Risk of taxation

You are responsible for your taxes and duties. Users bear sole responsibility for paying any and all taxes, duties, and assessments now or hereafter claimed or imposed by any governmental authority associated with their use of the Services and/or payable as a result of using and/or exploiting any digital assets and interacting with smart contracts. Blockchain-based transactions are novel, and their tax treatment is uncertain.

## 6. Proprietary Rights

Replete Finance and its related entities own all intellectual property and other rights in the Services and its contents, including (but not limited to) software, text, images, trademarks, service marks, copyrights, patents, and designs. The Replete Protocol is comprised of source-available software running on public distributed blockchains.

Replete Finance reserves the rights to modify, substitute, eliminate, add, disable, delete, remove any and all content pertaining to the Services. Use of or access to the Services does not grant you any ownership or other rights therein.

## 7. Prohibited Activities

You may only use the Services if you comply with this Agreement (including, without limitation, these Terms), applicable third-party policies, and all applicable laws, rules, regulations, and related guidance. The following activities are prohibited:

Activity that infringes on or violates any copyright, trademark, service mark, patent, right of publicity, right of privacy, or other proprietary or intellectual property rights under the law.

Activity that seeks to interfere with or compromise the integrity, security, or proper functioning of any computer, server, network, personal device, or other information technology system, including (but not limited to) the deployment of viruses and denial of service attacks.

Activity that seeks to defraud us or any other person or entity, including (but not limited to) providing any false, inaccurate, or misleading information in order to unlawfully obtain the property of another, and impersonating any person or entity or otherwise misrepresenting your affiliation with a person or entity.

The use of any means, including masking your IP address or using a proxy IP address or virtual private network, to bypass or circumvent any security and/or compliance measures taken by Interoperability with respect to Services access.

Violate any applicable federal, state, local, national, or international law, or any regulations having the force of law, including any laws or regulations concerning the integrity of trading markets (e.g., manipulative tactics commonly known as spoofing and wash trading) or trading of securities or derivatives and furthering or promoting any criminal activity or enterprise or providing instructional information about illegal activities.

You agree and acknowledge that if you use the Services to engage in conduct prohibited by applicable law, we permanently reserve the right to completely or partially restrict or revoke your access to the Services, either completely or for a period of time, at our sole discretion. We reserve the right to amend, rectify, edit, or otherwise alter transaction data to remediate or mitigate any damage caused either to us or to any other person as a result of a user’s violation of this Agreement or applicable law.

We reserve the right to investigate and prosecute any suspected breaches of this Agreement, including the Terms. We may disclose any information as necessary to satisfy any law, regulation, legal process, or governmental request.

## 8. Warranty Disclaimer

THE SERVICES ARE PROVIDED ON AN “AS IS” AND “AS AVAILABLE” BASIS WITHOUT WARRANTY OF ANY KIND. WE AND OUR PARENTS, SUBSIDIARIES, AFFILIATES, RELATED COMPANIES, OFFICERS, DIRECTORS, EMPLOYEES, AGENTS, REPRESENTATIVES, PARTNERS, AND LICENSORS (COLLECTIVELY, THE “REPLETE FINANCE INDEMNIFIED PARTIES”) MAKE NO GUARANTEES OF ANY KIND IN CONNECTION WITH THE SERVICES. TO THE MAXIMUM EXTENT PERMITTED UNDER APPLICABLE LAW, THE REPLETE FINANCE INDEMNIFIED PARTIES DISCLAIM ALL WARRANTIES AND CONDITIONS, WHETHER EXPRESS OR IMPLIED, OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT AND DISCLAIM ALL RESPONSIBILITY AND LIABILITY FOR:

THE SERVICES BEING ACCURATE, COMPLETE, CURRENT, RELIABLE, UNINTERRUPTED, TIMELY, SECURE, OR ERROR-FREE. INFORMATION (INCLUDING, WITHOUT LIMITATION, THE VALUE OR OUTCOME OF ANY TRANSACTION) AVAILABLE THROUGH THE SERVICE IS PROVIDED FOR GENERAL INFORMATION ONLY AND SHOULD NOT BE RELIED UPON OR USED AS THE SOLE BASIS FOR MAKING DECISIONS. ANY RELIANCE ON THE SERVICES IS AT YOUR OWN RISK.

INJURY OR DAMAGE RESULTING FROM THE SERVICES. FOR EXAMPLE, YOU EXPRESSLY ACKNOWLEDGE, UNDERSTAND, AND AGREE THAT THE SERVICES MAY CONTAIN AUDIO-VISUAL EFFECTS, STROBE LIGHTS, OR OTHER MATERIALS THAT MAY AFFECT YOUR PHYSICAL SENSES AND/OR PHYSICAL CONDITION. FURTHER, YOU EXPRESSLY ACKNOWLEDGE THAT THE REPLETE FINANCE INDEMNIFIED PARTIES ARE NOT RESPONSIBLE FOR LOSS OR DAMAGE CAUSED BY ANOTHER USER’S CONDUCT, UNAUTHORIZED ACTORS, OR ANY UNAUTHORIZED ACCESS TO OR USE OF THE SERVICES.

VIRUSES, WORMS, TROJAN HORSES, TIME BOMBS, CANCEL BOTS, SPIDERS, MALWARE, OR OTHER TYPE OF MALICIOUS CODE THAT MAY BE USED IN ANY WAY TO AFFECT THE FUNCTIONALITY OR OPERATION OF THE SERVICES.

## 9. Limitation of Liability

TO THE MAXIMUM EXTENT PERMITTED BY LAW, IN NO EVENT SHALL ANY REPLETE FINANCE INDEMNIFIED PARTY BE LIABLE TO YOU FOR ANY LOSS, DAMAGE, OR INJURY OF ANY KIND INCLUDING ANY DIRECT, INDIRECT, SPECIAL, INCIDENTAL, EXEMPLARY, CONSEQUENTIAL, OR PUNITIVE LOSSES OR DAMAGES, OR DAMAGES FOR SYSTEM FAILURE OR MALFUNCTION OR LOSS OF PROFITS, DATA, USE, BUSINESS OR GOOD-WILL OR OTHER INTANGIBLE LOSSES, ARISING OUT OF OR IN CONNECTION WITH:

* THE SERVICES OR YOUR INABILITY TO USE OR ACCESS THE SERVICES;
* MISUSE OF THE SERVICES (INCLUDING WITHOUT LIMITATION, UNAUTHORIZED ACCESS OF THE SERVICES);
* ANY USER CONDUCT ON THE SERVICES;
* TERMINATION, SUSPENSION OR RESTRICTION OF ACCESS TO ANY THE SERVICES.

IN ADDITION TO THE FOREGOING, NO REPLETE FINANCE INDEMNIFIED PARTY SHALL BE LIABLE FOR ANY DAMAGES CAUSED IN WHOLE OR IN PART BY:

* USER ERROR, SUCH AS FORGOTTEN PASSWORDS OR INCORRECTLY CONSTRUCTED SMART CONTRACTS OR OTHER TRANSACTIONS;
* SERVER FAILURE OR DATA LOSS;
* THE MALFUNCTION, UNEXPECTED FUNCTION OR UNINTENDED FUNCTION OF THE BLOCKCHAIN, ANY COMPUTER OR CRYPTOASSET NETWORK (INCLUDING ANY WALLET PROVIDER), INCLUDING WITHOUT LIMITATION LOSSES ASSOCIATED WITH NETWORK FORKS, REPLAY ATTACKS, DOUBLE-SPEND ATTACKS, SYBIL ATTACKS, 51% ATTACKS, GOVERNANCE DISPUTES, MINING DIFFICULTY, CHANGES IN CRYPTOGRAPHY OR CONSENSUS RULES, HACKING, OR CYBERSECURITY BREACHES;
* ANY CHANGE IN VALUE OF ANY CRYPTOASSET;
* ANY CHANGE IN LAW, REGULATION, OR POLICY;
* EVENTS OF FORCE MAJEURE;
* ANY THIRD PARTY.

THIS LIMITATION OF LIABILITY IS INTENDED TO APPLY WITHOUT REGARD TO WHETHER OTHER PROVISIONS OF THESE TERMS HAVE BEEN BREACHED OR HAVE PROVEN INEFFECTIVE. THE LIMITATIONS SET FORTH IN THIS SECTION SHALL APPLY REGARDLESS OF THE FORM OF ACTION, WHETHER THE ASSERTED LIABILITY OR DAMAGES ARE BASED ON CONTRACT, INDEMNIFICATION, TORT (INCLUDING NEGLIGENCE), PRODUCT LIABILITY, STRICT LIABILITY, STATUTE, OR ANY OTHER LEGAL OR EQUITABLE THEORY, AND WHETHER OR NOT THE REPLETE FINANCE INDEMNIFIED PARTIES HAVE BEEN INFORMED OF THE POSSIBILITY OF ANY SUCH DAMAGE.

IN NO EVENT WILL THE REPLETE FINANCE INDEMNIFIED PARTIES’ CUMULATIVE LIABILITY TO YOU OR ANY OTHER USER, FROM ALL CAUSES OF ACTION AND ALL THEORIES OF LIABILITY EXCEED FIFTY U.S. DOLLARS (U.S. $50.00).

UNDER NO CIRCUMSTANCES SHALL ANY REPLETE FINANCE INDEMNIFIED PARTY BE REQUIRED TO DELIVER TO YOU ANY VIRTUAL CURRENCY AS DAMAGES, MAKE SPECIFIC PERFORMANCE, OR ANY OTHER REMEDY. IF YOU WOULD BASE YOUR CALCULATIONS OF DAMAGES IN ANY WAY ON THE VALUE OF VIRTUAL CURRENCY, YOU AND WE AGREE THAT THE CALCULATION SHALL BE BASED ON THE LOWEST VALUE OF THE VIRTUAL CURRENCY DURING THE PERIOD BETWEEN THE ACCRUAL OF THE CLAIM AND THE AWARD OF DAMAGES.

Some jurisdictions do not allow the exclusion or limitation of certain warranties and liabilities provided in this section; accordingly, some of the above limitations and disclaimers may not apply to you. To the extent applicable law does not permit Replete Finance Indemnified Parties to disclaim certain warranties or limit certain liabilities, the extent of Replete Finance Indemnified Parties’ liability and the scope of any such warranties will be as permitted under applicable law.

## 10. Indemnification

You agree to indemnify, defend, and hold harmless the Replete Finance Indemnified Parties from any claim or demand, including reasonable attorneys’ fees, made by any third party due to or arising out of:

1. Your breach or alleged breach of the Agreement (including, without limitation, these Terms);
2. Anything you contribute to the Services;
3. Your misuse of the Services, or any smart contract and/or script related thereto
4. Your violation of any laws, rules, regulations, codes, statutes, ordinances, or orders of any governmental or quasi-governmental authorities;
5. Your violation of the rights of any third party, including any intellectual property right, publicity, confidentiality, property, or privacy right;
6. Your use of a third-party product, service, and/or website;
7. Any misrepresentation made by you.

We reserve the right to assume, at your expense, the exclusive defense and control of any matter subject to indemnification by you. You agree to cooperate with our defense of any claim. You will not in any event settle any claim without our prior written consent.

## 11. Dispute Resolution

The terms of this Section shall apply to all Disputes between you and Replete DAO. For the purposes of this Section, “Dispute” shall mean any dispute, claim, or action between you and Replete Finance arising under or relating to your access or use of the Services, these Terms, or any other transaction involving you and Replete Finance, whether in contract, warranty, misrepresentation, fraud, tort, intentional tort, statute, regulation, ordinance, or any other legal or equitable basis, and shall be interpreted to be given the broadest meaning allowable under law.

Prior to commencing any legal proceeding against us of any kind in any jurisdiction, including an arbitration as set forth below, you will attempt to resolve the Dispute in good faith negotiations.

Such good faith negotiations require, at a minimum, that you provide us with a written notice via email to specify the nature and details of the Dispute. We shall have thirty (30) days to respond to the notice. Within sixty (60) days after you sent the initial notice, the parties shall meet and confer in good faith by videoconference, or by telephone, to try to resolve the Dispute. If the parties are unable to resolve the Dispute within ninety (90) days after you sent the initial notice, the parties may agree to mediate their Dispute, or either party may submit the Dispute to arbitration as set forth below.

### Agreement to Arbitrage

You and we agree that any Dispute that cannot be resolved through the procedures set forth above will be resolved through binding arbitration in accordance with the International Arbitration Rules of the International Centre for Dispute Resolution.

The place of arbitration shall be the British Virgin Islands. The language of the arbitration shall be English. The arbitrator(s) shall have experience adjudicating matters involving Internet technology, software applications, financial transactions, and, ideally, blockchain technology. The arbitrator’s award of damages must be consistent with the terms of the “Limitation of Liability” subsection of these Terms as to the types and amounts of damages for which a party may be held liable. The prevailing party will be entitled to an award of their reasonable attorney’s fees and costs.

You agree that this arbitration provision applies not just to disputes with Replete Finance but also to disputes with any other party named or added as a co-defendant along with Replete Finance at any time during a court action. Any such co-defendant or defendant is a third-party beneficiary entitled to enforce this arbitration provision.

You agree to keep any arbitration strictly confidential.

YOU ACKNOWLEDGE AND AGREE THAT YOU AND WE ARE EACH WAIVING THE RIGHT TO A TRIAL BY JURY OR TO PARTICIPATE AS A PLAINTIFF OR CLASS MEMBER IN ANY PURPORTED CLASS ACTION OR REPRESENTATIVE PROCEEDING. FURTHER, UNLESS BOTH YOU AND WE OTHERWISE AGREE IN WRITING, THE ARBITRATOR MAY NOT CONSOLIDATE MORE THAN ONE PERSON’S CLAIMS AND MAY NOT OTHERWISE PRESIDE OVER ANY FORM OF ANY CLASS OR REPRESENTATIVE PROCEEDING.

### Changes

By rejecting any changes to these Terms, you agree that you will arbitrate any Dispute between you and us in accordance with the provisions of this section as of the date you first accepted these Terms (or accepted any subsequent changes to these Terms).

## 12. Waiver of Injunctive or Other Equitable Relief

TO THE MAXIMUM EXTENT PERMITTED BY LAW, YOU AGREE THAT YOU WILL NOT BE PERMITTED TO OBTAIN AN INJUNCTION OR OTHER EQUITABLE RELIEF OF ANY KIND, SUCH AS ANY COURT OR OTHER ACTION THAT MAY INTERFERE WITH OR PREVENT THE DEVELOPMENT OR EXPLOITATION OF THE SERVICES, OR ANY OTHER WEBSITE, APPLICATION, CONTENT, SUBMISSION, PRODUCT, SERVICE, OR INTELLECTUAL PROPERTY OWNED, LICENSED, USED OR CONTROLLED BY ANY REPLETE FINANCE INDEMNIFIED PARTY.

## 13. Termination; Cancellation

This Agreement is effective unless and until terminated by either you or us. You may terminate your Agreement with us at any time by ceasing all access to the Services. If, in our sole judgment, you fail, or we suspect that you have failed, to comply with any term or provision of the Agreement (including without limitation any provision of these Terms), we reserve the right to terminate our Agreement with you and deny you access to the Services. We further reserve the right to restrict your access to the Services or to stop providing you with all or a part of the Services at any time and for no reason, including, without limitation, if we reasonably believe: (a) your use of the Services exposes us to risk or liability; (b) you are using the Services for unlawful purposes; or (c) it is not commercially viable to continue providing you with our Services. All of these are in addition to any other rights and remedies that may be available to us, whether in equity or at law, all of which we expressly reserve.

WE RESERVE THE RIGHT TO MODIFY THE SERVICES AT ANY TIME, BUT WE HAVE NO OBLIGATION TO UPDATE THE SERVICES. YOU AGREE THAT IT IS YOUR RESPONSIBILITY TO MONITOR CHANGES TO THE SERVICES THAT MAY AFFECT YOU. YOU AGREE THAT WE MAY REMOVE THE SERVICES AND/OR ANY CONTENT THEREON FOR INDEFINITE PERIODS OF TIME OR CANCEL THE SERVICES AT ANY TIME, WITHOUT NOTICE TO YOU.

## 14. Severability

If any provision of the Agreement (including, without limitation, these Terms) is determined to be unlawful, void, or unenforceable, such provision shall nonetheless be enforceable to the fullest extent permitted by applicable law, and the unenforceable portion shall be deemed to be severed from the Agreement. Such determination shall not affect the validity and enforceability of any other remaining provisions.

## 15. Assignment

The Agreement (including, without limitation, these Terms) may be assigned without your prior consent to any Replete Finance Indemnified Party, or to its successors in the interest of any business associated with the Services provided by us. You may not assign or transfer any rights or obligations under the Agreement without our prior written consent.

## 16. Entire Agreement

The Agreement (including, without limitation, these Terms, and the Privacy Policy) and any policies or operating rules posted by us on the Services constitute the entire agreement and understanding between you and us and govern your use of the Services, superseding any prior or contemporaneous agreements, communications, and proposals, whether oral or written, between you and us (including, but not limited to, any prior versions of these Terms). Any failure by us to exercise or enforce any right or provision of the Agreement (including, without limitation, these Terms) shall not constitute a waiver of such right or provision.

## 17. Governing Law

All actions arising out of the Terms of this Agreement or relating to the Terms of this Agreement shall be governed by the laws of Panama. These Terms and any separate agreements whereby we provide you Services shall be governed by and construed in accordance with the laws of Panama.

## 18. Contact Us

You may contact us with questions about your use of the Services at <info@replete.fi>.


