Links

Registry

Binance Smart Chain Mainnet

xVault (High Yield)
xAuto (High Yield)
Venus Lending Protocol
Fortube
DefiDollar
Contract Name
Contract Address V2 (Recommended)
Contract Addresses V1
Some Functions Used
xvUSDT
deposit,
withdraw,
totalAssets (TVL)
pricePerShare
xvUSDC
deposit,
withdraw,
totalAssets (TVL)
pricePerShare
xvBUSD
deposit,
withdraw,
totalAssets (TVL)
pricePerShare
StrategyUgoHawkVenusUSDTFarm
StrategyUgoHawkVenusUSDCFarm
StrategyUgoHawkVenusBUSDFarm
Contract Name
Contract Address V2 (Recommended)
Contract Addresses V1
Some Functions Used
xBUSD
approve, deposit, withdraw, getPricePerFullShare
xUSDC
deposit, withdraw
xUSDT
deposit, withdraw, getPricePerFullShare
xBNB
approve, deposit, withdraw
APRWithPoolOracle
EarnAPRWithPool
Contract Name
Contract Address
Some Functions Used
Protocol Adapter
0x655ca90baa0936A056eFC5E389Baf97026DfFdA3
Protocol Service
0xd99d68d7d01Af99F3089d0EFBB12C1A02658d436
Group
0x41E95e88c0dCEaCe4159f4118217B67038aaE6F0
getGroupById
createGroup
Cycles (Cooperatives)
0x0884d96d51dDF544865af8eE3fF5a354e815CC32
getCycles
getCycleInfoById
Esusu Service
0x5a32A13770Db90Da7DEA78005Ce110BBBdA8Aac3
CreateEsusu
JoinEsusu
StartEsusuCycle
WithdrawCapitalFromEsusuCycle
WithdrawROIFromEsusuCycle
Esusu Storage
0x2603ba3426aA62d708dbEcf138E04B91e1548A74
GetEsusuCycles
GetEsusuCycle
Esusu Adapter
0xC1C39c7086D1FAFA8a2ffd49d0eA5ECBD37Bf3d1
GetGroupInformationById
Client Record
0x715Adf500E2a5d2a823eec12c9e34b6093Ea7272
getClientRecordByAddress
GetRecords
Xend Finance Individual (Personal Savings)
0x1349236eFfA145CbE2Ad80A20fFee192e35131fa
FixedDeposit
deposit
withdraw
WithdrawFromFixedDeposit
Xend Finance Group (Cooperative Savings)
0x52e343f0E797717195df7858CE8A1080504c4B6d
createGroup
createCycle
endCycle
joinCycle
activateCycle
withdrawFromCycle
withdrawFromCycleWhileItIsOngoing
Xend Token
0x4a080377f83D669D7bB83B3184a8A5E61B500608
BUSD Token
0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56
approve

Deprecated Contracts

Contract Name
Contract Address
Xend Finance Group (Cooperative Savings)
0x902b9E4eCa35A5f504401f713AE14448C948Ca7c 0xB7c715dca5133e88A29c086bEddb2A6075829BE3 0xe9306300b2a685151c03D5b966F8D5Ca143de7B8 0x82B03319887Cf1Ea980637A36b657Aac21620259 0x497899aBed0F5Bdb8A8Dfa15eCA102aEa1933172 0x03e86B21acF54A3d1abbFE600F78B60384C8211f
0x21d635b36F54E70b578eAd19448BFa2bB73F96E2
Xend Finance Individual (Personal Savings)
0xB44367EABfEf9b1BDbF38a56503E0E5E3105B1A4 0xaE8C4E2B9c4A88DfD2aBFEc55fC938Af1bda96d4
0x8776C093CE3a3E0ee6a7C1FE957F666B8084C448
0xe4AA46a344043bBA9cee7172ecc07f861ebe21B2
Contract Name
Address
Some Functions Used
Protocol Adapter
0x5F82328648b4c5dd0fe895CaC650e9bfCcC07844
Protocol Service
0x84801368510d1cfc2A194E118d1FA74e1B8C1472
Groups
0xa6566293CEC8023A5151D785b30695E4Aa58ec41
Cycles
0x405B46E2E9A339F8BBd4520AcD4254E02713E684
Esusu Service
0x181B0A426bf8c71bf0702324d58EB9Ce7314faB6
Esusu Storage
0xf1BF6F94170EEa855eB273F361D1B7A32C2Ea4f5
Esusu Adapter
0x68C9727d1B6df57a9C59901465f458f162E5C58E
Client Record
0xCF666D971E080412b1457846066422CB74De8d14
Individual (Personal Savings)
0x1E24e573bce2A6b6d74231327f20dF511225B931
Cooperative Savings
0xe9B087aA3A4AFA1d7f56BC2d6f59D51155479dcd
BUSD Token
0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56

Deprecated Contracts

Contract Name
Address
Individual (Personal Savings)
0x21eb8fcfAADDaa2eF664810a63A1720EaF6FD6B8
Contract Name
Address
Protocol Adapter
0xa455edD32a72Ae1A1dc0699C2ED45C25a568d3c0
Protocol Service
0x02a08332Efce731590AbF03e0bC93B39f007a043
Groups
0x2d2cf772b00EEDF1A59549BF4D3C33B7Cf39866c
Cycles
0x3C984F5435f4EA69dCBC6D64cefF794E55916b2f
Esusu Service
0x48Cc703ce6CE9c061F5dC924fB2106953728006E
Esusu Storage
0xC732D07eeC622BAE85A4Fbbd2fac2f4375C21cA6
Esusu Adapter
0xF17f4587D414625Fe51e6543b3d103000e0Fff75
Client Record
0xaa2B817DAb535839AA83991421928599e7df6ffF
Individual (Personal Savings)
0x53bA300b24db88580384aE69C84d0Bf566a894D6
0x538e522ea3d8017a4aBDeC3f3091bD0fB1B3d92c
Cooperative Savings
0xDCC47fE454B17378ff09AA15DA0c6B9D90230fA0
0xeB3177D9b320639D4b09BAd71795103b5ad3D426
BUSD Token
0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56

Deprecated Contracts

Contract Name
Address
Individual (Personal Savings)
0xE2130e88487Edf3a0fd1d715090fB8A8cFeD5F6D

Polygon Mainnet

xAuto (High Yield)
Contract Name
Contract Address V2 (Recommended)
Contract Addresses V1
Some Functions Used
xUSDT
deposit
withdraw
balance
getPricePerFullShare
xUSDC
deposit
withdraw
balance
getPricePerFullShare
xAAVE
deposit
withdraw
balance
getPricePerFullShare
xWBTC
deposit
withdraw
balance
getPricePerFullShare
EarnAPRWithPool
APRWithPoolOracle

Ethereum Mainnet

Yearn Finance
Contract Name
Address
Protocol Adapter
0x083313c94D2ff5756E7c49E8516d813E19bB04B0
Protocol Service
Groups
0x90d26bf93607666ff2beb99556dbf6a379ced9bf
Cycles
0x755322b498d9A007055587760BE2cC8465A3BC2A
Esusu Service
0xc0163F657b48Cd5058b256334c002e4D02Fdc3C4
Esusu Storage
0xD08eA81B20252228329D5EC8Ca1393c86894442c
Esusu Adapter
0x671D3B4cC56C29E3409736a913ba96B4473F15c5
Client Record
0x1c1f9af4d32562c3666930d3988c75ba6a4f9645
Individual (Personal Savings)
0x552260A8F6686430632a5BA6FeAcd066E34b33A2
Cooperative Savings
0xE519545539E35f2704D571a476464d037Bcd32cc
DAI Token
0x6b175474e89094c44da98b954eedeac495271d0f

Function Description

Deposit in xAuto or xVault

To deposit in the xAuto or xVault Protocol, Call the deposit function from the Xend Finance xAuto or xVault Protocols(Layer 2 Aggregator ) contracts.
Parameters
Description
Token Ticker
"BUSD","USDT","USDC"
Amount
Amount to Deposit
const { Personal, xAuto, xVault } = await setupSdk(privateKey, chainId, protocolName);
if (protocolName === 'xAuto') {
const receipt = await xAuto.deposit("BUSD", String(amount))
if (receipt.status) {
return {
block: receipt.blockNumber,
gasUsed: receipt.gasUsed,
tnxHash: receipt.transactionHash
}
}
throw 'failed'
}
else if (protocolName === 'xVault') {
const receipt = await xVault.deposit("BUSD", String(amount))
if (receipt.status) {
return {
block: receipt.blockNumber,
gasUsed: receipt.gasUsed,
tnxHash: receipt.transactionHash
}
}
throw 'failed'
}

Withdraw in xAuto or xVault

To withdraw in the xAuto or xVault Protocol, Call the withdraw function from the Xend Finance xAuto or xVault Protocols(Layer 2 Aggregator ) contracts.
Parameters
Description
Token Ticker
"BUSD","USDT","USDC"
Amount
Amount to Withdraw
const { Personal, xAuto, xVault } = await setupSdk(privateKey, chainId, protocolName);
if (protocolName === 'xAuto') {
const receipt = await xAuto.withdraw("BUSD", totalBUSDAdmount)
if (receipt.status) {
return {
block: receipt.blockNumber,
gasUsed: receipt.gasUsed,
tnxHash: receipt.transactionHash
}
}
}
if (protocolName === 'xVault') {
const receipt = await xVault.withdraw("BUSD", totalBUSDAdmount)
if (receipt.status) {
return {
block: receipt.blockNumber,
gasUsed: receipt.gasUsed,
tnxHash: receipt.transactionHash
}
}
}

Deposit in Flexible Personal Savings

To deposit in the flexible savings, we'll first call the approve function to allow the Xend Finance contract to take the approved amount. Call the approve function from the BUSD Token contract, and the deposit function from the Xend Finance Individual (Personal Savings) contract.
Parameters
Description
amount
//1. first approve contract to spend amount
await contract.methods.approve(conractAddress, amount).send({from: clientAddress})
//2. call deposit
await contract.methods.deposit().send({from: clientAddress})

Withdraw from Flexible Personal Savings

Call withdraw function from Xend Finance Individual (Personal Savings) contract
Parameters
Description
amount
await contract.methods.withdraw(amount).send({from: clientAddress})

Deposit in Fixed Personal Savings

To deposit in the flexible savings, we'll first call the approve function to allow the Xend Finance contract to take the approved amount. Call the approve function from the BUSD Token contract, and the FixedDeposit function from the Xend Finance Individual (Personal Savings) contract.
Parameters
Description
amount
lockPeriod
//1. first approve contract to spend amount
await contract.methods.approve(conractAddress, amount).send({from: clientAddress})
// 2. call FixedDeposit with lock period
await contract.methods.FixedDeposit(lockPeriod).send({from: clientAddress})

Withdraw from Fixed Personal Savings

Call the WithdrawFromFixedDeposit function from Xend Finance Individual (Personal Savings) contract
Parameters
Description
recordId
await contract.methods.WithdrawFromFixedDeposit(recordId).send({from: clientAddress})

Create a Group

A group needs to be created to be able to create an Esusu or Cooperative cycle.
Contract: Group
Parameters
Type
Description
name
string
every group has a unique name
symbol
string
await contract.methods.createGroup(name, symbol).send({from:clientAddress})

Get Group using ID

Retrieves the details of a group using its id.
Contract: Group
await contract.methods.getGroupById(groupId).call()

Create Esusu Cycle

Create an Esusu cycle to enable potential members to join and start saving.
Contract: Esusu Service
Parameters
Type
Description
groupId
depositAmount
the deposit amount should be a big number
payoutIntervalInSeconds
startTimeInSeconds
maxMembers
maximum number of addresses that would be able to join this cycle
await contract.methods.CreateEsusu(groupId, depositAmount, payoutIntervalInSeconds, startTimeInSeconds, maxMembers).send({from:clientAddress})

Join Esusu Cycle

Adds an address as a member of an Esusu cycle if the address has sufficient balance.
Contract: Esusu Service
Parameter
Type
Description
cycleId
await contract.methods.JoinEsusu(cycleId).send({from:clientAddress})

Start Esusu

Contract: Esusu Service
Parameters
Description
cycleId
await contract.methods.StartEsusuCycle(cycleId).send({from: clientAddress})

Withdraw Esusu ROI

Call this function to withdraw gained ROI from being part of an Esusu cycle.
Contract: Esusu Service
Parameters
Description
cycleId
await contract.methods.WithdrawROIFromEsusuCycle(cycleId).send({from: clientAddress})

Withdraw Esusu Capital

Withdraw the deposit amount used to join the cycle.
Contract: Esusu Service
Parameters
Description
cycleId
await contract.methods.WithdrawROIFromEsusuCycle(cycleId).send({from: clientAddress})

Create Cooperative Cycle

Contract: Xend Finance Group (Cooperative Savings)
Parameters
Description
groupId
startTimeInSeconds
payoutIntervalInSeconds
maxMembers
hasMaximumSlots
boolean
stakeAmount
await contract.methods.createCycle(groupId, startTimeInSeconds, payoutIntervalInSeconds, maxMembers, hasMaximumSlots, stakeAmount).send({from: clientAddress})

Join Cooperative Cycle

Contract: Xend Finance Group (Cooperative Savings)
Parameters
Description
cycleId
numberOfStake
members can have one or more stakes in a cooperative cycle
await contract.methods.joinCycle(cycleId, numberOfStake).send({from: clientAddress})

Start Cycles

Contract: Xend Finance Group (Cooperative Savings)
Parameters
Description
cycleId
await contract.methods.activateCycle(cycleId).send({from: clientAddress})

Withdraw From Cooperative Cycle

In the cooperative cycles, there's a provision to withdraw from the cycle before the end date and time and also to withdraw when the cycle duration ends. Withdrawing while the cycle is ongoing incurs a severance fee on the member that withdraws.
Contract: Xend Finance Group (Cooperative Savings)
Parameters
Description
cycleId
// withdrawing while cycle is ongoing
await contracts.methods.withdrawFromCycleWhileItIsOngoing(cycleId).send({from: clientAddress})
// withdrawing after cycle is completed
await contracts.methods.withdrawFromCycle(cycleId).send({from: clientAddress})