The Road to Mainnet Release

November 6, 2018

It has been six weeks since the code for Multi-Collateral Dai was publishedand its contracts deployed to the Kovan testnet. People are eagerly looking forward to the mainnet release, and have (understandably) been asking us: what are we waiting for?

Our main focus until recently was the development of the MCD core contracts. In this blog post, we give the bigger picture of what we are working on to prepare the full MCD release and clarify the scope of what will be delivered.

A continued commitment to quality and security

The first thing that can be expected, is that Maker will once again not compromise on the quality of the code, in particular with regards to security.

While the community now has the time to scrutinize the smart contracts that we have published, two more initiatives are running in parallel to ensure that potential bugs & vulnerabilities are discovered before release.

The previously announced audit by Trail of Bits has been started and the results are expected in a few weeks. At the same time, Maker continues its effort to write more formal verification proofs, drastically expanding coverage since we first released to Kovan.

Once any potential issues raised by the Trail of Bits audit have been resolved, a new version of the MCD contracts may be deployed to the testnet. After this, a significant bug bounty will be started to further incentivize the community to join Maker’s own bug-hunting efforts.

Keep an eye on our blog and twitter account for updates about the audit report and the bug bounty program.

First-class support for one-off and additional features

In the spirit of “if it hurts, do it more often,” another team at Maker will be testing critical elements: emergency shutdown, price feed freezing, collateral claims processing, and other rare events in the MCD lifecycle; exactly the kind of events that should be prevented from happening once the system is live.

Precisely because these events are so rare, we found that they are harder to test during development and QA. For this reason, Maker has been working on a test environment that facilitates simulation of emergency and black swan events. This, in turn, will allow us to give these features the attention that they deserve.

This attention will range from additional test coverage, to process improvements, to the implementation of specialized user interfaces. These user interfaces will allow anyone to access the system even in exceptional circumstances, for example in the case of the emergency shutdown.

The same goes for additional features, most notably Savings Dai. The MCD release will include a user interface that allows for switching Dai into Savings mode. Check out this blog post for more info on Savings Dai.

Better price feed oracles

First-class support for freezing price signals in the case of an emergency is not the only love that our Oracle infrastructure will receive. While Single-Collateral Dai feeds have been working without fault the entire time, for MCD we’re making some important improvements. These will enable our Oracle architecture to scale cost-effectively and meet the needs of the additional price feeds required by MCD.

The first generation price feeds each publish their own prices to the blockchain, each one sending a costly transaction for every update. The MCD version, however, will use the Secure Scuttlebutt to communicate prices between each other first, before submitting the combined result to the blockchain in a single transaction. A combination of Scuttlebutt and signing price data with Ethereum keys ensures that the correctness of this aggregated signal can still be verified independently.

MCD Oracles Flow Diagram

Read more about the Scuttlebutt protocol here.

Integration Layer

As should be clear by now, the MCD release will indeed contain much more than only the smart contracts. In fact, the scope includes three different abstraction layers through which the MCD functionality can be accessed:

  1. the smart contracts,
  2. the integration layer including API, SDK & services,
  3. and the application layer with end-user UIs

While the smart contracts have received most of the attention until now, another big change since the development of Single-Collateral Dai is the approach to the middle layer. This layer is essential for automation and integration of MCD with other systems; it consists of a GraphQL API, a JavaScript SDK, and an upgrade of our keeper framework.

The MCD release will include the first production-ready GraphQL API service that is backed by VulcanizeDB. This is a service that continuously collects MCD-related data from the Ethereum blockchain as new transactions are being mined. It then makes this data readily available in the form of read models for clients that require high-performance read access; an essential building block for real-world applications on top of the MCD platform.

Next to this, the team is working on the release of a new version of our JavaScript SDK, the dai.js library. This version will cover all functionality of the MCD contracts and is indeed being used in our own web applications. It has a range of features that are available out-of-the-box, which would otherwise require a lot of duplicated work: hardware wallet support, transaction lifecycle management, a push event pipeline, and so on.

Another key ingredient for the MCD system are the so-called keepers; the services typically run by profit-seeking agents that are bidding on collateral auctions, and that are providing liquidity for the debt auctions selling off MKR, and the reverse buy-and-burn auctions to handle surplus in the system. While our keeper framework was already available for Single-Collateral Dai, our team is now working to finalize the next version for MCD.

Better usability

One of the main challenges that Maker, and blockchain in general, faces, has little to do with finance or engineering. To get better adoption, ultimately, usability is key.

  • Some time ago, the governance website was the first one that Maker designed based on rigorous user interviews and feedback, even before release.
  • Just a few days ago, a new CDP portal for Single-Collateral Dai was launched. With the new user interface and design, Maker is further committing not only to technical quality but also to an improved and consistent user experience.

The Multi-Collateral Dai release will include upgrades of the CDP Portal, as well as the governance website with improvements based on the user feedback that we received.

MCD CDP Portal in the Maker design system. Featuring placeholder collateral types.

A smooth upgrade process

Launched less than a year ago, Single-Collateral Dai has already reached a supply of more than 65 million. For the many end-users and partners alike, a smooth upgrade path to MCD is crucial.

There will be two services to facilitate this by the launch of Multi-Collateral Dai:

  • Dai Redeemer service will allow users to exchange their Single-Collateral Dai for Multi-Collateral Dai. This redeemer will be available on all three abstraction levels: smart contract layer, integration layer, and user interface.
  • The Maker team will actively reach out and work with partners to ensure smooth upgrading of existing integrations and infrastructure.

After the launch, Single-Collateral Dai will remain available for at least 6 months before Emergency Shutdown might be initiated. This transition period will allow Dai holders and CDP owners to migrate to MCD without a problem, and Maker will publish the necessary guides and tools to further support this process.

More information about the upgrade process for particular integrations can be asked through our rocket.chat or by sending an e-mail to [email protected].

Multiple collateral types

Last but not least, Multi-Collateral Dai will (unsurprisingly) launch with not one, but multiple types of collateral.

The Maker team has been busy with the assessment of feasible candidates for this within the previously announced risk framework, but the confirmation of this list will be acquired through a governance vote. It is important to note that the voting process will start sometime before the mainnet launch of MCD.

Because this vote will be the next thing that happens on our road to MCD mainnet release, we will write up a more detailed post about this soon. Keep an eye out here on our blog, and telegram and twitter to stay up-to-date!

November 6, 2018