diatomix
TypeScript icon, indicating that this package has built-in type declarations

0.1.10 • Public • Published

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

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:

schematic

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,
});

Readme

Keywords

none

Package Sidebar

Install

npm i diatomix

Weekly Downloads

0

Version

0.1.10

License

MIT

Unpacked Size

308 kB

Total Files

246

Last publish

Collaborators

  • scholtz