The dApp Design Pattern

Mike Roth
6 min readJun 14, 2018

At Radar we consider dApps to be an application design pattern that augments modern web applications by distributing critical components across a network of peers or nodes.

Radar has a clear vision. If you keep up with our content, you are probably sick of hearing it: onboard the world to the token economy. The difficulty with this vision is that it requires a way for the world to interface with the token economy.

Currently, we believe the best interface to the token economy is through the dApp ecosystem. This is why we are focused on building dApps and using the lessons we learn during the process to contribute to the ecosystem in a meaningful way.

What is a dApp?

The definition of a dApp is dynamic and will continue to change as the decentralized ecosystem matures and naming conventions and definitions solidify.

At Radar we consider dApps to be an application design pattern that augments modern web applications by distributing critical components across a network of peers or nodes.

Decentralization isn’t binary, it’s on a spectrum . A well designed dApp leverages the existing web application foundation AND distributes critical components of the application to mitigate risk while ensuring an excellent user experience.

Radar Relay Infrastructure

In the specific use case of Radar Relay, we rely on the 0x protocol and web3 to store a user’s intent to trade without having access to a user’s personal information or tokens. Simultaneously we utilize modern web application infrastructure, such as Kubernetes, for reliable web server infrastructure. This architecture mitigates the risks of storing sensitive information on our private servers while maintaining the efficiency and user experience of a modern web application.

Learn more about Radar Relay’s technical architecture in a previous post.

Modern Web Applications

Modern Web App Infrastructure

To understand where dApps are going it’s important to understand where modern web applications have been.

Decades of technological advancement led to innovations like the Internet Protocol Suite, web service providers (AWS, GCP, Azure), markup and programming languages (HTML, CSS, Javascript), and many more. All of this foundational technology allows applications to load in seconds or less, have beautiful user interfaces, and provides users with unprecedented access to information and tools.

Modern applications are capable of solving a lot of problems for humanity, but they don’t solve every problem and have some potential downsides which we explore below. The dApp design pattern is the reaction to these shortcomings and it has a few primary goals that intend to augment the current web application infrastructure.

A dApp’s Primary Goals

Mitigate Single Points of Failure (SPOF)

Distributed Data (SPOF Mitigation)

Modern web applications are reliant on infrastructure where single points of failure are inherently present. These single points of failure include things like server infrastructure, code bases, databases, etc. There has been significant advancement to mitigate SPOF with the advent of HA (high availability) and reliable infrastructure providers like GCP and AWS, but even with these technology behemoths it’s difficult to avoid downtime like Amazon’s outage in early 2018.

dApps aim to mitigate these issues by distributing critical components that store data or pieces of infrastructure across a number of peers or nodes. Data loss is difficult if every participant in the network holds a copy of the data.

Reduce Reliance on Central Authorities

“In software, business logic is the part of the program that encodes the real-world business rules that determine how data can be created, stored, and changed.”

Business logic is essentially a set of contracts that prescribe how business objects interact with one another and define how objects are accessed and updated by users or other objects.

In traditional web applications, these business logic contracts are implemented in mutable software — software that can be modified after it’s initial creation — and are executed on private servers that cannot guarantee their own tamper-resistance and auditability.

Distributed ledger technologies (blockchains) now provide a way to construct and execute business logic in a tamperproof, immutable, fully auditable program — a “smart contract.” Any user of a dApp that uses smart contracts can verify the logic implemented in the contract. This includes inspecting the inputs, execution states, and outputs of every interaction with this logic. Smart contracts can be trusted to run as-written and cannot be modified arbitrarily, reducing the need to trust a central authority.

Improve Security

Given the combination of the above two points, security in an application can be improved by mitigating common risks in current application architecture. More specifically, by introducing client-side encryption, dApps secure or encrypt certain types of information before it is sent to an application’s servers. This data can then be accessed directly by a user using their encryption key without having to go through a data gateway (such as a company’s servers or APIs).

Take Advantage of Network Effects

Modern web applications are capable of taking advantage of network effects by creating a sticky service and attempting to grab as large of a piece of the market share pie as possible. A good example of this is OAuth or “Login with X”. Google and Facebook can provide a cohesive cross-product service, but are limited by the scope of their individual user base and information stored in their private servers.

dApps aim to utilize a public distributed ledger and/or distributed storage as a source of truth. Eventually this could provide identity/authentication, permission rules, and data access proportional to all of the resource participants in the network.

Cryptography and Distributed Ledgers

There are a few pieces of technology currently in use which make up some of the foundational building blocks for the dApp ecosystem and enable a dApp to accomplish its primary goals.

dApp Technologies

Distributed Data Storage

Trustless Data Storage

Data storage solutions such as distributed ledgers (blockchains), IPFS (Interplanetary File System), or Swarm enable storing persistent data on multiple nodes.

Distributed Business Logic

Executing Trustless Business Logic

Technologies such as the previously mentioned Ethereum Smart Contract enable the execution of business logic on a distributed Ledger. Other blockchains also refer to this technology as Chain Code.

Client Side Encryption

Encryption for the End User

Blockchain Wallets, the Ethereum Clef, and Parity-UI move encryption capabilities to the client side. This enables users to encrypt or sign data before it is sent to an application’s servers. It also enables interactions with distributed storage solutions and ledgers.

At Radar, we think of dApps as a new design pattern. This pattern uses the best modern day application designs and reinforces them with blockchain and peer-to-peer technologies. As new ideas, resources, and innovations enter the space it will become one of the most vibrant ecosystems in history causing the token economy to take shape.

If you are an engineer with a passion for distributed systems, web application development, or blockchain and want to contribute to the future of the dApp ecosystem, get in touch with us. Head to radarrelay.com/team and join us in onboarding the world to the token economy!

--

--

Mike Roth

Building products & tools for Web3 gaming at CR3 Labs. Built one of the first DEX's in 2017, Radar Relay.