Coinbase Logo

Language and region

Coinbase Open Source Fund: May and June Update

By Author

Company

, June 29, 2018

, 3 min read time

Today we say goodbye to GDAX and hello to Coinbase Pro and Coinbase Prime. We’re focusing this May and June edition of our Coinbase Open Source Fund on the underlying architecture and OSS that’s helped to make both possible.

For those of you who are just tuning in, the goal of the Coinbase Open Source Fund is to recognize and donate to some of the amazing open source projects that power Coinbase and many other innovative blockchain projects. (If you missed them, our previous updates can be found here.)

Before we dig into the details, let’s take a quick look at how they’re structured. Coinbase Pro and Coinbase Prime are developed using microservice architecture. We expose most of our trading and account management functionality through our REST, FIX and Streaming APIs. In fact, our websites utilize the same REST and Streaming APIs to build out the customer-facing trading experience.

0*tEJKnM CPWDiWJzz

Here’s a quick overview of the abstracted architecture of Coinbase Pro and Coinbase Prime.

The Websites

In the first edition of the Coinbase Open Source Fund, we discussed the stack we use on the frontend. Both of our products are single-page React apps that use Mobx as the data layer, styled-components to apply CSS, and depends on Webpack and Babel as a build toolchain. MobX deserves a shout-out for helping make our page responsive during times of high activity. Its advanced features allow us to minimize the number of DOM updates which provides a smooth user experience while presenting up-to-date information. In May and June, we continued to support MobX, Webpack, Babel and styled-components with a $9,000 grant.

It’s also extremely important that our numbers are accurate and don’t suffer from rounding errors. We depend on Michael McLaughlin’s Big.js to do all of our number crunching, from calculating percentage changes for individual markets to approximating trade prices in our order form. Big.js and its sister libraries Bignumber.js and Decimal.js are projects that have emerged as leaders of their domain, while being maintained by a single individual. Michael is currently working full-time as a hospital porter while finishing his degree. We admire his commitment and gave Michael a $5,000 grant to focus on the development of his open source libraries.

The REST API

All of our user-facing layers are written in JavaScript and rely heavily on Node.js. We are excited to announce that we will contribute $10,000 to the Node.js Foundation. With this donation, we are hopeful to obtain a membership with the foundation. In addition, our REST API uses Express.js under the hood. For testing we rely on the HTTP mocking library nock, which received a $5,000 grant.

The Streaming API

When users want to receive real time updates about market activity, the Streaming API is a good bet. They can connect to it through the Websocket protocol, which is made possible by Alex Hultman’s µWebsockets library. We contributed $6,000 to µWS to aid with future development.

The FIX API

Operating a real time exchange requires us to process a large number of orders in a short, predictable timeframe. Our FIX API was built to meet low latency requirements of our more advance traders. In order to support the performance requirements needed by our FIX API, and data storage needs across all layers, we chose PostgreSql as our datastore. We are glad that we can rely on Postgres to do a lot of the heavy lifting for us. Postgres is a critical centerpiece of our architecture, and therefore we’ve contributed $10,000 to its development.

We’re looking for developers that are excited to work with open source software in a collaborative environment. If this software excites you as much as it excites us, take a look at our current openings at coinbase.com/careers to see where you could fit in, and come help us build an open financial system for the world.

Coinbase logo