If you're like me, you have a hard time turning down free money. So why just let your crypto sit around and gather dust instead of putting it to work?

This guide will show you how to earn interest on your DAI with only a few lines of code in your terminal. You'll instantly start accumulating interest on your DAI by supplying it to the Compound protocol for others to borrow. We won't go deep into the Compound protocol, but you can learn more about it here.

Overview

Use the DAI & Compound ethPM packages

Approve the cDAI contract to transfer your DAI

Exchange your DAI for cDAI (aka supply your DAI to the Compound liquidity pool)

Prerequisites

The private key for an account that owns DAI

​ ethpm-cli installed & environment setup​

General understanding of web3.py contract API​

Setup

First, let's get the two packages we'll need to supply our DAI to the Compound protocol.

​DAI​ package name: dai-dai

version: 1.0.0

located on: erc20.snakecharmers.eth ​ ​Compound package name: compound

version: 1.0.0

located on: defi.snakecharmers.eth ​

from ethpm_cli . config import setup_w3 ​ w3 = setup_w3 ( 1 , 'PRIVATE_KEY' ) ​ w3 . enable_unstable_package_management_api ( ) ​ w3 . pm . set_registry ( 'erc20.snakecharmers.eth' ) dai_pkg = w3 . pm . get_package ( 'dai-dai' , '1.0.0' ) dai = dai_pkg . deployments . get_instance ( 'DSToken' ) ​ dai . functions . name ( ) . call ( ) > b 'Dai Stablecoin v1.0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' ​ w3 . pm . set_registry ( 'defi.snakecharmers.eth' ) compound_pkg = w3 . pm . get_package ( 'compound' , '1.0.0' ) cDai = compound_pkg . deployments . get_instance ( 'cDAI' ) ​ cDai . functions . name ( ) . call ( ) > 'Compound Dai'

Approve

Before we can supply our DAI to the Compound protocol, we have to approve the cDAI contract to transfer our DAI tokens and convert them into cDAI. This is a standard procedure with many erc20-based systems. We'll use our cDAI contract instance for the address.

dai . functions . approve ( cDai . address , w3 . toWei ( 100 , 'ether' ) . transact ( ) > 0x123 . . .

Supply

In the Compound v2 protocol, "minting" is analogous for supplying your DAI to the liquidity pool. Here we'll specify how many DAI we want to supply, and we start earning interest on the very next block after this tx is mined. Neato!

cDai . functions . mint ( w3 . toWei ( 1 , 'ether' ) ) . transact ( ) > 0xabc . . .

Check your stacks!

Give this a couple blocks before you accrue interest. But check daily to see the accumulated rewards of your DAI's hard work!

cDai . functions . balanceOfUnderlying ( w3 . eth . defaultAccount ) . call ( ) > 1000000000000000001