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.
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
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.