Designing Creditcoin

Cryptocurrency will eventually require a credit network. This is why Creditcoin exists.

Designing Creditcoin
Presenting “Designing Creditcoin” at GluwaCon 2019

As James Rickards, the author of Currency Wars, said, “Currency is not only used to buy goods and services… people should be able to lend and borrow to make it a currency.” Although cryptocurrency already has a significant portion of the market (more than 100 trillion), it is true that the capital market infrastructure it provides is limited to payment. Cryptocurrency will eventually require a credit network.

People say, “If all you have is a hammer, everything looks like a nail.” Just like with any other technology development project, before we get started with a blockchain project, we have to ask ourselves whether it is the best technology for solving the problem.

The problem we are trying to solve is the vicious cycle that unbanked people experience. We set the unbanked as our target group because they are the stratum that has reason to use cryptocurrency — even with some of the inconveniences associated with the premature ecosystem.

Many people can’t get signature loans from the traditional banking system. As a result, they borrow money using other methods, and banks cannot record these transactions. So, credit records do not accumulate in the banks, which means that people cannot build credit — there is no reason for banks to believe the individual files of lenders. Eventually, the vicious cycle of receiving credit loans again in adverse conditions repeats. To summarize, the credit history of the unbanked does not get objectively accumulated.

The solution is to build a system that stores credit records objectively. As I said earlier, a blockchain is a technology specialized in keeping data objectively. The blockchain is the perfect technology to solve this problem.

Once you decide to use the blockchain, you need to make a choice: Are we using a smart contract, or are we building our proprietary blockchain?

A smart contract is enough to store information on the blockchain. We can save much time if we use a blockchain with a well-established ecosystem as a platform such as Bitcoin or Ethereum. Designing and building a proprietary blockchain is very time-consuming.

However, existing blockchain platforms are slow and expensive. A blockchain is a system that runs the same computation repetitively. Therefore, the best performing blockchain is always less efficient compared to a centralized server. Also, multi-purpose systems like Ethereum are less efficient than single-purpose systems like Bitcoin. Platform blockchains will stay relatively slow and expensive for many years to come.

We have experienced the limitations of the existing blockchain platform.

After designing the Creditcoin, we first built the Creditcoin with ERC-20 standard smart contract of Ethereum to make a proof-of-concept of Creditcoin. Something had happened by the time we finished building the smart contract. At that time, Cryptokitty on Ethereum was becoming popular, and transactions began to accumulate without being processed, which caused the cost of using Ethereum to increase considerably, making it economically impossible for the unbanked to use the smart contract. Our partner, Aella Credit, gets over 1,000 loan requests per hour. We concluded that we could not operate Creditcoin as an Ethereum smart contact.

We finally decided to develop a proprietary blockchain. After reviewing the requirements, we found that Hyperledger Sawtooth was the best for our needs. Our blockchain architect, Vlad, will discuss the details in Session 5.

We decided to develop a blockchain with a single purpose. Creditcoin is only intended for recording credit transactions. In the end, users who want to transact Cryptokitty and others who wish to trade file storage space don’t have any reason to compete with each other for limited bandwidth. Blockchains with a single purpose will not interfere with each other’s traffic since they are in different markets. User behaviors will determine the cost and the traffic of each blockchain.

During the design process, we were confronted with endless questions (and answers).

At first, we started by defining what a loan is. A loan is essentially a conditional transaction. There are usually dozens of conditions you can set for a loan, and that means there are thousands of possible types of loans. As Creditcoin is not a smart contract platform, it should not support every kind of loan. Then, what is the most basic loan? It is borrowing money and paying it back with more money. In short, it is a contract saying, “I will repay $110 if you lend me $100.” You will pay interest even if you pay back earlier then the expiry date. More specifically, it is a non-collateralized bullet loan with a prepayment penalty.

Next, we’ve defined the types of transactions in the order of creating a loan contract. First, there is a bid, offer, and deal at the stage where both users agree on the conditions of a loan. Then, there are two transactions: an investment transaction for a lender to send money to the borrower and a repayment transaction for a borrower to repay the money to a lender. At this time, if the lender and the borrower have negotiated the reimbursement amount, the lender may receive only a portion of the money and exempt the rest. The lender may also transfer the receivable to another person as a creditor.

A difference between Creditcoin and Bitcoin is that Creditcoin needs to support a variety of different types of transactions.

There has been much discussion about supporting collateral. In reality, many loans have collateral. If security tokens mature, they will play a useful role as collateral for Creditcoins. For example, you can borrow money with the real-estate security tokens as collateral for loans. However, the standard for the security token does not exist yet, and we do not see any substantial traction of security tokens. Therefore, we have decided not to implement this idea until the security token establishes a mature ecosystem.

As a public blockchain, we also had to decide on a consensus algorithm. Currently, the industry is struggling with a variety of consensus algorithms. Proof-of-Work represented by Bitcoin, Proof-of-Stake that Ethereum plans to adopt, and Proof-of-Distribution that we designed were on the list. However, Proof-of-Work is the only battle-proven consensus algorithm. We decided not to reinvent the wheel.

Some people criticize Proof-of-Work, saying that it only handles a limited number of transactions and it is slow. If Creditcoin runs into a scalability problem, it means that Creditcoin is very successful. We hope that we can run into such a problem. If another agreement algorithm turns out to be better for our purposes, then we can go for it and implement it. We need a blockchain that we can use today.

Bitcoin only supports a single type of transaction: transfer. However, Creditcoin needs to support seven types of transactions. Each transaction will have a different value depending on the user, and demand for transactions will also vary. What if users ask for extra fees for certain types of transactions? If miners get the transaction fee as Bitcoin miners do, a transaction with more transaction fee attached to it will be a priority for miners. This might cause bottlenecks. For example, although users have made 100 loan agreements, no investment transactions get processed.

So, we decided to see how the market would respond to a wide range of transactions. The initial release of Creditcoin will have a fixed transaction fee. We will collect live usage data to make decisions for future development.

Ideally, users should be able to get a loan on any blockchain. How would Creditcoin know if investment or repayment transactions are done correctly on other blockchains? We use the transaction ID of other blockchains. Creditcoin node operators run nodes of different blockchains and enter transaction IDs to look up transaction details in other blockchains.

Creditcoin currently supports Bitcoin and Ethereum. Creditcoin can support a blockchain as long as a Creditcoin plug-in is developed.

Now Creditcoin is completed. With Creditcoin, you can get non-collateralized bullet loans with a prepayment penalty, and you can transfer loans as well. If you develop a plug-in, you can connect any blockchain to Creditcoin. Creditcoin matches loan orders in the blockchain and verifies the investment and repayment transactions in other blockchains. It uses a PoW-based consensus algorithm and has a fixed transaction fee.

Here is an example of using Creditcoin:

  • Person A asks to borrow $100 from Creditcoin, saying he/she will pay $150 back.
  • Person B checks the Creditcoin history of Person A and accepts the transaction.
  • Then, Person A borrows $100 from Person B.
  • Person B sells and transfers the loan to Person C.
  • Persons A and C agree to write off $40 of the debt.
  • Person A pays Person C $ 110, and C accepts it.

In another way, you will also be able to use Creditcoin as points in a game:

  • A user pays $ 100 for the game.
  • Creditcoin records $ 100 as a loan from a user to the game.
  • The game gives the user 100 points.
  • The user uses 10 points in the game.
  • This means the user should write off $10 for Creditcoin bonds.
  • The user decides to refund the 90 unused points.
  • The game pays the user $90, and Creditcoin records the transaction as a repayment.

The development of Creditcoin, which has been going on for over a year, is almost finished. A full-featured Creditcoin will be released very soon.

The codebase is currently undergoing a third-party code review for security checks.

A US attorney reviewed Creditcoin in preparation for regulation by the U.S. Securities and Exchange Commission (SEC), and we are confident that Creditcoin is not involved in securities.

As the project initiator, we will continue to contribute to the development of Creditcoin.