Pocket Network 1.0 Cross Module Integrations

@andrewnguyen22 - Andrew Nguyen @olshansk - Daniel Olshansky @deblasis - Alessandro De Blasis Version 1.0.0

Overview

In this section, we will describe in which way the various modules interact with each other.

Introduction

While we proceed in the R&D of the individual modules, we need to consider that even if we are developing them in a microservice fashion, they still need to communicate with each other so that the application and therefore the Protocol itself can function as expected.

The purpose of this document is not to highlight the capabilities of each model but to focus on the point of contact/interactions with a brief explanation about the motivation behind the integration under discussion.

Integrations

Bus

An application Bus serves as a cross-cutting integration medium. Without going too much into technical details, its main features for the purposes of this document are:

  • acts as a service discovery layer, allowing to get instances of a module from within another

  • provides access to messaging functionality (EventBus)

P2P - Persistence

P2P AddressBook management / Network Churn

Regardless of the underlying algorithm, P2P is a stateful business, there's state that has to be stored in memory (RAM) but there's also state that has to be persisted on the blockchain.

In particular, when it comes Network Churn where Actors such as Validators are involved, joining and leaving the network, P2P has to integrate with Persistence in order to keep track of which actors were part of the network at that point in time (Height in Protocol terms).

The running instance of the P2P module in a node, keeps an in memory "Address List" of the peers that's being constantly updated.

Whenever the Consensus module determines a new Height, an event via the Bus notifies its listeners (P2P included) that the list of the current Actors that are part of the network has to be updated at the Persistence layer.

Essentially, in simple terms, we can now call a function that returns the list of the Validators at a certain Height.

This function is used to deliver messages that are relevant only for a specific Height to the relevant actors.

Last updated