diatomix
v0.1.10
Published
This repo contains the contracts and test scripts for the Diatomix Hedged Pool built on Algorand. The contract integrates with Pact.fi and Folks Finance.
Downloads
1
Readme
AVM Diatomix Hedged Pool
This repo contains the contracts and test scripts for the Diatomix Hedged Pool built on Algorand. The contract integrates with Pact.fi and Folks Finance.
Installation
pip3 install -r requirements.txt
npm install
By default this will run on testnet. For this a wallet needs to be setup. The wallet needs to contain the necessary ASA tokens. For AlGO and USDC we use testnet ALGO and Folks v2 testnet usdc (these can be obtained from folks v2 testnet faucet).
As we integrate with Pact.fi and Folks Finance we need to make sure these contracts are available on testnet. Pact.fi needs to be deployed for the folksUSDC/ALGO pool.
Deploy Pact AMM
./deploy-amm.sh
Then set .env file with amm settings .. fe:
Environment file .env
The relevant AppIDs and The mnemonic can be stored in a .env file and sourced with:
For example:
mnemonic="sea vapor taxi direct oppose hand client silly side potato rural ... autumn"
assetAMM1=5837
assetAMM2=5838
poolId=5839
lpTokenId=5842
This file can then be sourced:
source .env && export $(sed '/^#/d' .env | cut -d= -f1)
Deploy Pact AMM to sandbox
cd onchain ./deploy-amm.sh
Then set .env file with amm settings .. fe:
mnemonic="..."
collateralAssetId=1962
poolId=1963
lpTokenId=1966
Deploy diatomix pool and run relevant tests
cd onchain
./run-folks-pact.sh
Notes
Contract Overview
Pool rebalancing
The hedged pool needs to rebalance according to certain conditions. A detailed explanation can be found in the corresponding document on the rebalancing algorithm. It follows the following procedure:
Frontend integration
import getPools from "src/diatomix/getPools";
const pools = getPools("testnet")
Deposit
import depositTxs from "src/algo/ImpernamentLossFP/depositTxs";
const toSign = depositTxs({
params,
sender,
amountAssetADeposit,
pool,
});
Withdraw
import withdrawTxs from "src/algo/ImpernamentLossFP/withdrawTxs";
const toSign = withdrawTxs({
params,
amountAssetDLP,
sender,
pool,
});
Rebalance
import rebalanceTxs from "src/algo/ImpernamentLossFP/rebalanceTxs";
const toSign = rebalanceTxs({
params,
sender,
pool,
});