• Stars
    star
    790
  • Rank 57,622 (Top 2 %)
  • Language
    Solidity
  • License
    GNU Lesser Genera...
  • Created almost 5 years ago
  • Updated 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

DeFi SDK Makes Money Lego Work

Build status Test status Coverage status Lint status License Discord Twitter Follow

DeFi SDK is an open-source system of smart contracts that allows you to execute trades with ERC20 tokens and track balances on different protocols.

If you have any questions about DeFi SDK, feel free to reach out to us on our Discord server.

Features

💸Trade any ERC20 tokens on L2 chains using single Router contract

See How to swap ERC20 tokens using DeFi SDK Router

💥Query user assets and debt deposited in DeFi protocols like Maker, Aave, dYdX, etc.

How much debt does 0xdead..beef have on Compound?

📊Get the underlying components of complex derivative ERC20 tokens

How much cUSDC vs ETH does ETHMACOAPY have?

✨Interact with multiple DeFi protocols in a unified way

See How to interact with DeFi SDK contracts

Trading Features

  • Trade any ERC20 token
  • Two types of amounts: absolute (usual amount) and relative (percentage of balance)
  • Three types of permit() functions for approving tokens in the same transaction (EIP2612, DAI-like, Yearn-like)
  • Two types of swaps: with fixed input amount or fixed output amount
  • Two types of fees:
    • protocol fee managed by the Router contract owner with possibility of one-time discounts requiring signature of an address with the special role
    • marketplace fee managed by the transaction creator
  • Relayed transactions requiring just an EIP712 signature of the user

How to Add Your Adapter

Read-only and interactive adapters are maintained in master and interactive-updates branches of defi-sdk repo respectively.

The full instructions on how to add a custom adapters may be found in our docs.

If you have questions and/or want to add your adapter to Zerion reach out to us on our Discord server.

Addresses

All the deployed contracts' addresses are available here.

Security Vulnerabilities 🛡

If you discover a security vulnerability within DeFi SDK, please send us an e-mail at [email protected]. All security vulnerabilities will be promptly addressed.

The project uses Slither for security analysis. It should be previously installed (e.g. via pip).

Run npm run slither to run security checks.

Dev Notes

We use Hardhat, which runs tests extremely fast!

Also, we use Truffle Dashboard for secure deployment.

Installation

Run npm install to install all the dependencies.

Deployment

Run npm run truffle-dashboard to start the Truffle Dashboard.

Run npm run deploy:router:truffle-dashboard to deploy the Router contract. Sign deployment transaction in your browser at http://localhost:24012/.

Fill in address of newly deployed contract to scripts/deployment.js.

The same instruction applies to the SimpleCaller contract with deploy:sc:truffle-dashboard command.

After filling in fee beneficiary for the chosen network in scripts/deployment.js, initialize:router:truffle-dashboard command may be run.

Run npm run verify to verify contract on any block explorer. The respective <BLOCK_EXPLORER>_API_KEY filled in .env file is required for this step. See the hardhat.config.ts file for the details (etherscan field of config variable uses these API keys).

Testing & Coverage

The Router contract and its dependencies is fully covered with tests.

Run npm run test and npm run coverage to run tests or coverage respectively. INFURA_API_KEY filled in .env file is required for this step. REPORT_GAS filled in .env file enables/disables gas reports during tests.

Linting

Run npm run lint for both JS and Solidity linters.

Run npm run lint:eslint and npm run lint:solhint to run linter for JS and Solidity separately.

Serve docs

npm run docs:serve

License

All smart contracts are released under GNU LGPLv3 license.

More Repositories

1

Tokenary

Swift
130
star
2

Web3Swift

Ethereum Web3 library implementation for Swift
Swift
108
star
3

zerion-wallet-extension

Your crypto wallet for everything onchain.
TypeScript
56
star
4

defi-sdk-js

JavaScript/TypeScript wrapper for DeFi SDK
TypeScript
48
star
5

tokenbox-ico-website

TokenBox ICO website. https://tokenbox.io
HTML
30
star
6

socialite-zerion

Social OAuth Authentication for Laravel 5. Driver Zerion SSO
PHP
23
star
7

Tokenary-P2P-Exchange

Instantly trade your favorite NFTs and ERC20s with friends nearby
Swift
19
star
8

defi-sdk-examples

Examples of DeFi SDK usage in different languages
JavaScript
16
star
9

defi-sdk-py

Python wrapper for DeFi SDK
Python
15
star
10

DTX

Decentralized Token eXchange (DTX) is platform for p2p token trading on Ethereum
JavaScript
13
star
11

defi-sdk-go

Go wrapper for DeFi SDK
Go
11
star
12

the-token-fund-smart-contracts

JavaScript
10
star
13

the-token-fund-asset-parser

Python
8
star
14

wallet-core-ios

This repository contains Wallet Core used by Zerion iOS and macOS apps.
Swift
7
star
15

zerion-analytics

TypeScript
7
star
16

defi-sdk-demo

TypeScript
6
star
17

api-docs

5
star
18

Tokenary-Web

Tokenary Web Wallet for ETH, ERC-20
Vue
5
star
19

yc2019

Swift
5
star
20

0x.swift

Swift Library for 0x protocol
Swift
4
star
21

wallet-core-android

This repository contains Wallet Core used by Zerion Android.
Kotlin
4
star
22

contract-template

Clean contract template with right environment
Shell
4
star
23

waves-presale

Python
3
star
24

nexo-token-smart-contracts

JavaScript
2
star
25

simple-web3-provider

A web3 provider with retries under the hood
TypeScript
2
star
26

genesis-collection-contracts

Zerion Genesis Collection contracts
JavaScript
1
star
27

tokenbox-smart-contracts

JavaScript
1
star