expand.network
Search
K

Lend and Borrow

This section explains the integration and usage of lend and borrow protocols for deposit, withdraw and many more functionalities.

Step 1: Check the allowance of the lending pool on the erc20 token the user wants to deposit.

To initiate a swap, first determine if the lending pool has the necessary allowance to access the tokens. This can be done using the following API endpoint:

Sample Request:
https://api.expand.network/fungibletoken/getuserallowance?owner=0x6Fb447Ae94F5180254D436A693907a1f57696900&tokenAddress=0x6b175474e89094c44da98b954eedeac495271d0f&spender=0xBA12222222228d8Ba445958a75a0704d566BF2C8

Sample Response:
{
"status": 200,
"msg": "success",
"data": {
"allowance": "999000000000000000000"
}
}

Step 2: Approve the lending pool from the Token Contract

If the allowance is less than the token amount to deposit, the user must approve the lending pool from the erc20 token contract. This can be done using the following API endpoint:

Sample Request:
{
"from": "0x63056E00436Da25BcF48A40dfBbDcc7089351006",
"tokenAddress":"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
"amount": "1000000000000000000000",
"to": "0x828b154032950c8ff7cf8085d841723db2696056",
"gas": "100000",
"chainId": "1"
}

Sample Response:
{
"status": 200,
"msg": "success",
"data": {
"from": "0x63056E00436Da25BcF48A40dfBbDcc7089351006",
"to": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
"value": "0",
"gas": "100000",
"data": "0x095ea7b3000000000000000000000000828b154032950c8ff7cf8085d841723db269605600000000000000000000000000000000000000000000003635c9adc5dea00000"
}
}

Step 3: Deposit

In a particular lending pool, the user can deposit the token. The user will get the equivalent amount of "aToken" on a token deposit.
This can be done using the following API endpoint:

Sample Request:
{
"lendborrowId": "1000",
"asset": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
"amount": "10000000000000000",
"from": "0x63056E00436Da25BcF48A40dfBbDcc7089351006",
"onBehalfOf": "0x63056E00436Da25BcF48A40dfBbDcc7089351006",
"gas": "408298"
}

Sample Response:
{
"status": 200,
"msg": "success",
"data": {
"from": "0x63056E00436Da25BcF48A40dfBbDcc7089351006",
"to": "0x4bd5643ac6f66a5237E18bfA7d47cF22f1c9F210",
"value": "0",
"gas": "408298",
"data": "0xe8eda9df000000000000000000000000b4fbf271143f4fbf7b91a5ded31805e42b2208d6000000000000000000000000000000000000000000000000002386f26fc1000000000000000000000000000063056e00436da25bcf48a40dfbbdcc70893510060000000000000000000000000000000000000000000000000000000000000000"
}
}
Users can only deposit the token and earn interest upon it. Borrowing is another option for the user.

Step 4: Borrow

The user can borrow the tokens based on the amount of collateral deposited.
This can be done using the following API endpoint:

Sample Request:
{
"lendborrowId": "1000",
"asset": "0xC011a73ee8576Fb46F5E1c5751cA3B9Fe0af2a6F",
"amount": "100",
"from": "0x63056E00436Da25BcF48A40dfBbDcc7089351006",
"onBehalfOf": "0x63056E00436Da25BcF48A40dfBbDcc7089351006",
"interestRateMode": "2",
"gas": "408298"
}

Sample Response:
{
"status": 200,
"msg": "success",
"data": {
"from": "0x63056E00436Da25BcF48A40dfBbDcc7089351006",
"to": "0x4bd5643ac6f66a5237E18bfA7d47cF22f1c9F210",
"value": "0",
"gas": "408298",
"data": "0xa415bcad000000000000000000000000fc1ab0379db4b6ad8bf5bc1382e108a341e2eabb00000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000063056e00436da25bcf48a40dfbbdcc7089351006"
}
}

Step 5: Repay

The user needs to repay the token amount borrowed with interest. To repay the token, the user need to follow step 1 and 2. The token to repay should approve the lending pool.
This can be done using the following API endpoint:

Sample Request:
{
"lendborrowId": "1000",
"asset": "0xdAC17F958D2ee523a2206206994597C13D831ec7",
"amount": "100000",
"from": "0x63056E00436Da25BcF48A40dfBbDcc7089351006",
"onBehalfOf": "0x63056E00436Da25BcF48A40dfBbDcc7089351006",
"interestRateMode": "2",
"gas": "408298"
}

Sample Response:
{
"status": 200,
"msg": "success",
"data": {
"from": "0x63056E00436Da25BcF48A40dfBbDcc7089351006",
"to": "0x4bd5643ac6f66a5237E18bfA7d47cF22f1c9F210",
"value": "0",
"gas": "408298",
"data": "0x573ade81000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec700000000000000000000000000000000000000000000000000000000000186a0000000000000000000000000000000000000000000000000000000000000000200000000000000000000000063056e00436da25bcf48a40dfbbdcc7089351006"
}
}

Step 6: Withdraw

In this step, user withdraws the amount of the token deposited as collateral. To withdraw the token, the user needs to provide the aTokens that the user initially received.
This can be done using the following API endpoint:

Sample Request:
{
"lendborrowId": "1000",
"asset": "0x6B175474E89094C44Da98b954EedeAC495271d0F",
"amount": "1000000000000000000",
"from": "0x63056E00436Da25BcF48A40dfBbDcc7089351006",
"to": "0x63056E00436Da25BcF48A40dfBbDcc7089351006",
"gas": "408298"
}

Sample Response:
{
"status": 200,
"msg": "success",
"data": {
"from": "0x63056E00436Da25BcF48A40dfBbDcc7089351006",
"to": "0x4bd5643ac6f66a5237E18bfA7d47cF22f1c9F210",
"value": "0",
"gas": "408298",
"data": "0x69328dec0000000000000000000000006b175474e89094c44da98b954eedeac495271d0f0000000000000000000000000000000000000000000000000de0b6b3a764000000000000000000000000000063056e00436da25bcf48a40dfbbdcc7089351006"
}
}