Compound integration roadmap

Moresh Kokane
6 min readNov 20, 2019
The Money Lego

This article is written primarily for the benefit of the internal tech team at Konkrete as well as any stakeholders so that they have an understanding of how all the pieces fit together. This article builds on top of what has been discussed here at

Let’s say you deposit $100 in a fixed deposit in a Bank. In 12 months time your fixed deposit will give you $112 ($1 per month). If however you withdraw it before that period then you would not get the additional return or might even face a penalty. It is in your best interest to not break that fixed deposit before its term is complete.

It is however an asset and you will be able to borrow against it from the bank. Chances are the bank will lend you up to a certain percentage of the original deposit amount. For eg: You may be able to borrow up to 80% (which in this case is $80) against your collateral which is worth $100.

Let's say 6 months in you have a need for money. Your fixed deposit is theoretically worth $106 ($1 per month). But the bank will only return you the principal or even charge you a fee for breaking it. And it will only lend you $80 and you need the entire $106 to cover an unforeseen expense.

Wouldn't it be great if there was a way to transfer your fixed deposit to someone else? Who would pay you $106 and then continue holding the fixed deposit for the remaining 6 months. That way you get the $106 and the other person gets $112 after another 6 months.

As of now there is no simple way to do this.

Enter Compound.

Compound is a decentralized money market which enables these sort of transactions.

Before we do a deep dive of Compound, a bit of terminology.

DAI is a cryptocurrency that is pegged to US Dollars.

1 DAI = 1 USD

cDAI stands for collateralized DAI.

If you take 100 DAI to Compound and deploy it on their money market you would get a certain number of cDAI back that represent your deposit.

The interesting thing here is unlike a bank there is no central party here managing your money. DAI being an ERC20 coin is non custodial. What it means is you hold your DAI in your own wallet. It is best compared to cash.

In a bank account the number you have on the screen as your balance is the amount you have a claim on with the bank. The actual money is in the banks possession. And they may do with it as they please. Generally speaking you will be able to withdraw your money from the bank when you want it, but it is not necessarily a 100% given. A worse case situation could mean the bank goes under and your money is lost.

However a non custodial ERC 20 token means you are in actual possession of the coin. Just like cash you hold it. And no one can take it away (unless of course they offer you compensation that you consent to or they find ways to steal it).

Let's go back to our bank Fixed deposit example. In the olden days, when banks did not have computers and electronic systems they would give you a paper certificate representing your ownership of the fixed deposit. Come maturity you would take the certificate to the bank and redeem it. Some times the certificate would record your name on it, or it would simply say whoever is the bearer is the owner.

This effectively meant that you could theoretically sell your certificate to someone else before it matures and get paid an amount that reflected the current value of the deposit rather than be penalized by the bank for breaking the deposit. This ensured that the bank does not have to find money to cover your request but you were still able to access the money you needed.

The advent of online systems eliminated this (although in theory you could do something similar with a bond and trade it on a liquid secondary market.)

With the advent of defi we are going back to the future.

When you put up your DAI for lending on Compound it links you automatically with someone who wants to borrow that money. The DAI goes to the borrower an your deposit is now represented as cDAI, or collateralized DAI which is also an ERC20 token which means it is in your possession just like a paper certificate.

And just like a paper certificate representing a deposit, the value of cDAI steadily appreciates with time as compared to DAI.

If you end up needing money you can always transfer the cDAI to someone else in return for DAI and get the funds you needed. Or you can now borrow against the cDAI which represents your asset.

The cDAI or cToken represents collateralized assets. In this case it is collateralized DAI, but in theory it can represent any asset as Collateral.

We however will be focusing on only P2P assets not currently recorded elsewhere.

This includes invoices, private loans etc.

You can have multiple cTokens depending on the Asset types, such as cINV for invoices, cFirstReal for first mortgages on real estate, cSecondReal for second mortgages on real estate and so on.

The cTokens should be specific to an Asset type.

In the current Factorium architecture we are creating ERC20 tokens representing the invoice. In our previous article, we talk about the Asset onramping architecture.

Assets that are tokenizable are a “claim against someone”

A contract has the following parameters at a high level

  1. Party A
  2. Party B
  3. Value provided by A to B
  4. Value provided by B to A in return
  5. Date by which the terms need to be fulfilled
  6. Security

The security would refer to the type of charge taken as part of the contract. It could be a receivable, a first mortgage, second mortgage on real estate, unsecured loans etc. It effectively denotes the Asset type.

The Konkrete protocol would allow anyone to onramp P2P contracts onto the Ethereum blockchain in the form of ERC20 tokens.

However each asset gets a unique bunch of ERC20 tokens. For eg: one invoice may be represented by token symbol ABC, while other might be DEF etc. Note that they still represent a specific asset type of invoices which will be reflected in the security field in the ERC20 contract.

Having the asset type field allows assets of similar attributes (yield, security) to be clumped together.

When these ERC20 tokens are plugged into Compound, it would generate cTokens. However instead of generating cABC and cDEF (per specific asset), we would generate a cINV token which has the same yield as the underlying ABC and DEF tokens (per Asset type). We might have to do weighted average yields if there are differences. If it is a different security then it would be a different cToken.

On the Compound application (we build), investors having DAI (or other ERC20 coins which we accept) can deposit their DAI and select which type of cToken they want to deploy their money to. They can select real estate first mortgages, or second mortgages or invoices or unsecured loans etc. Depending on their risk and return appetite.

The value of the cINV or cFirst etc would steadily increase depending on the yield their underlying collateral generates. When an invoice or a loan contract is repaid then Compound automatically reallocates the money to any new invoices if they are available. If none are available then the DAI flows back to the user wallet. Depending or not whether an opportunity to lend is there determines your allocation ratio of how much of your DAI actually ends up getting deployed. All of this portion is automatically handled by Compound.

A user would provide his DAI and get a cINV or cFirst in return. They can always tranfer these cTokens to others directly or go to uniswap or a similar exchange and swap these cTokens for something else giving them liquidity.

cTokens can use any P2P asset such as receivables, loans.

--

--