Introducing Demux — Deterministic Databases Off-Chain Verified by the EOSIO Blockchain

eosio
eosio
Jul 31, 2018 · 3 min read

One of the primary advantages of the EOSIO blockchain platform is in empowering the development of usable, scalable, and flexible decentralized applications. To that end, we at Block.one are excited to announce Demux, a new open-source development tool for the EOSIO community that simplifies complex DAPP development.

Demux draws inspiration from Facebook’s Flux Architecture pattern and Redux, creating a back-end infrastructure pattern for sourcing blockchain events in order to deterministically update queryable databases for applications built on the EOSIO blockchain.

This suggested architecture allows application developers to use traditional Mongo or Postgres SQL databases in a way that means the data stored in them is still verifiable by the blockchain. This enables the best of both worlds: the flexibility and speed of traditional databases, coupled with the trust and immutable properties of a blockchain.

Storing and retrieving indexed data is something that developers have commonly utilized for decades. The ability to search, sort, filter etc. are all easily done in traditional database environments, but is something that is missed when working directly with the inherently limited query interface of blockchain nodes.

When building more complex DAPPs, you run into a few problems when retrieving data directly from the blockchain:

  1. The query interface used to retrieve the indexed data is limited. Complex data requirements can mean you either have to make an excess number of queries and process the data in your DAPP, or you must store additional sorted data on the blockchain itself.
  2. Additionally, scaling your query load means requiring more blockchain endpoint nodes, which can be expensive.

Demux solves these problems by off-loading storage and queries to your preferred database (MongoDB, Postgres etc). As blockchain events happen, your chosen database is updated by Updater functions, which deterministically process an array of Action objects. The database can then be queried by your front-end DAPP through a suitable API (for example, REST or GraphQL), reducing the amount of direct interaction with the blockchain in order to retrieve data for your application. This also can help developers to limit the amount of data that needs to be stored in RAM, lowering applications’ operating costs whilst also improving their architectural efficiency.

The full details of the release can be viewed on the official GitHub repository. The example library demux-js serves as a reference NodeJS implementation of Demux architecture.

Developer Relations will continue to bring you updates highlighting the features our development teams at Block.one are working on to improve the developer experience on EOSIO. As always, stay tuned for more updates by following EOSIO on our social channels and be sure to subscribe to our mailing list on the EOSIO Developer Portal.

Thanks,
Block.one Developer Relations

Read disclaimer

eosio

Published by block.one,

eosio

Written by

eosio

eosio

eosio

Published by block.one, EOS.IO is a blockchain protocol that enables horizontal scaling of decentralized applications, allowing developers to efficiently create high performance distributed applications.

eosio

Written by

eosio

eosio

eosio

Published by block.one, EOS.IO is a blockchain protocol that enables horizontal scaling of decentralized applications, allowing developers to efficiently create high performance distributed applications.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store