Home

ResilientDB - PBFT Commit Algorithm

Allow this article to be a comprehensive introduction into the Practical Byzantine Fault Tolerance Consensus Protocol (PBFT) through the lens of the ResilientDB codebase. We will detail the sequences and algorithms which encompass the protocol and encourage the readers to explore the rigorous math proofs afterwards. The true power of this proto...

Read more

SOLID Principles

In Robert C. Martin’s Design Principles and Design Patterns, he details four signs of a poor architecture1: The first of which is rigidity where one change results in a cascade of subsequent changes in dependent modules. He argues that this design deficiency results in reluctance to fix non-critical fixes due to not knowing when these f...

Read more

ResilientDB - Passing Custom Messages

If you are interested in sending new types of messages from replica -> replica, then do this: Defining Your Message Here will be an example of of new type of message called SCAN_MSG. Each message must be inherited from the class Message. We must define the following pure virtual functions: class ScanMessage : public Message { public: ...

Read more

Virtual Memory

DDR4 Memory [“Courtesy PremiumBeat”]. Have you ever wondered why 32-bit and 64-bit get thrown around and not know what it meant? So too did I. Well the simple answer is that these refer to the amount of memory addressable to a program or more accurately, the computer architectures bit width i.r.t registers and address busses. Now le...

Read more

Pipelining CPU

What is pipelining We segment the datapath into seperate sections and partially execute instructions by adding registers to save partial instruction states in between these stages. Reasons for Pipeline We notice that hardware is not being utilized completely, this is especially true in a Complex Instruction Set. This is wasteful. Additionally...

Read more

Concurrency

Assembly Workers [“Courtesy Manufacturing.NET]. First lets begin by defining a piece of system software called the Operating System (OS), which is responsible for orchastrating the sophisticated resource management of a given machine’s hardware as well as providing an abstracted interface for software to be built above. At the time ...

Read more

Web services

Socket Programming Sockets enable Interprocess Communication on same or different machines using TCP/IP protocol suite provided by the operating system. Together, TCP and IP ensure that messages are routed to their correct destination, get from source to destination reliably in the face of failure. Most of the application-level protocols like F...

Read more

ResilientDB - Getting Started

ResilientDB is a permissioned blockchain fabric developed by the developers at the Exploratory Systems Lab at UC Davis. It makes use of the Practical Byzantine Fault Tolerant Consensus Protocol (PBFT) and as a result follows a primary-backup model where each participant identity is known a priori. Clients are to send their requests to the design...

Read more