Skip to content

Latest commit

 

History

History
99 lines (69 loc) · 5.44 KB

README.md

File metadata and controls

99 lines (69 loc) · 5.44 KB

Header

DeFi Adapter Kit

Starter kit for defi adapter development compatible with Opty-Fi's earn-protocol

Prerequisites

And passion for financial freedom...

Getting started

Development Setup

  • Create a .env file and set a BIP-39 compatible mnemonic as an environment variable. Follow the example in .env.example. If you don't already have a mnemonic, use this website to generate one.
  • You will require access to archive Node URL for forking the mainnet.

Proceed with installing dependencies:

yarn install

What is a DeFiAdapter

  • DeFi adapter is a vital building block for executing opty.fi's network of strategies.
  • Specifications for DeFi adapter help perform :
    • transactions like deposit, withdraw, staking, un-staking, adding liquidity, claim reward and harvesting of the reward.
    • read calls for liquidity pool token contract address, liquidity pool token balance, staked token balance, balance in underlying token of both staked and non-staked liquidity pool token, unclaimed reward tokens and reward token contract address
  • A DeFi Adapter smart contract requires implementation of following interfaces :

Pro Tip : Inherit IAdapterFull interface from IAdapterFull.sol to Adapter Contract if the protocol you choose required implementation of all the above interfaces.

Developing DeFiAdapter

Step #1 - Use this template

  • This is a GitHub template, so click on green button "Use this template" on the top-right corner of the page to create new defi adapter.

Step #2 - Pool, LP token and underlying token(s) address gathering

Step #3 - Implementing IAdapter interface

Step #4 - Unit Tests

  • Write unit tests for all the functions across all the pool contracts gathered in Step 1.
  • You might want to use a test utility contract like TestDeFiAdapter for creating a sandbox environment to execute the transaction based on function signature and target address returned from getCodes()-style functions from DeFiAdapter.
  • All other functions can be directly tested from the DeFiAdapter contract.
  • The unit test for HarvestFinanceAdapter.sol can be found in HarvestFinanceAdapter.ts

Useful commands

Usage Command
Compile the smart contracts with Hardhat $ yarn compile
Compile the smart contracts and generate TypeChain artifacts $ yarn typechain
Lint the Solidity Code $ yarn lint:sol
Lint the TypeScript Code $ yarn lint:ts
Run the Mocha tests $ yarn test
Generate the code coverage report $ yarn coverage
Delete the smart contract artifacts, the coverage reports and the Hardhat cache $ yarn clean
Deploy the adapter to Hardhat Network $ yarn deploy

Syntax Highlighting

If you use VSCode, you can enjoy syntax highlighting for your Solidity code via the vscode-solidity extension. The recommended approach to set the compiler version is to add the following fields to your VSCode user settings:

{
  "solidity.compileUsingRemoteVersion": "v0.6.12+commit.27d51765",
  "solidity.defaultCompiler": "remote"
}

Where of course v0.6.12+commit.27d51765 can be replaced with any other version.

References