unblocked platform documentation

unblocked platform documentation

View the Project on GitHub blockandchainco/documentation

Logo

Architecture

The Unblocked Platform was designed from the ground up to allow application developers to write applications with the following key attributes:

We’ve been developing this platform since the advent of the Blazor project to provide a way to solve some of our challenging technology issues. In January 2019, we decided to release our system as a platform that others can use to develop their own distributed applications.

At the core of unblocked is a distributed ledger, using a technology that we developed purely in .net. Our distributed ledger implements end to end cryptography, merkle trees for speed, epochs for data storage and X509 Certificates for Private and Public key storage.

Diagram Architecture Diagram

The diagram above shows a high level overview of the complete architecture of an application written on the platform. The various components are described below:

User Generated

User Application

Users (or developers) using the platform develop their applications in Visual Studio. The development experience is similar to developing a Razor application or more closely aligned a Microsoft Blazor Client Side application.

As there is no need for servers in this platform implementation, we do not have a concept of a server hosted example.

Note: It may be possible in the future to leverage functionality in the dotnet core server functions but for version 1 of the platform, this is not considered.

To create a new application, developers can install our Visual Studio Extension directly from the Visual Studio Marketplace. Simply search for Unblocked platform in the visual studio marketplace.

Microsoft Provided

Microsoft Blazor

Microsoft’s Blazor framework is a new Single Page Application Framework, written in .Net which takes advantage of WebAssembly. As our platform requires WebAssembly, the Blazor framework makes sense to use.

3rd Party

IndexedDB

IndexedDB is a No-SQL database included in every modern browser which supports html5. It provides a high performance local database.

WebAssembly

WebAssembly is a new technology which allows the compilation of code into a new assembly language which operates at high speed inside a browser virtual machine.

WebRTC

WebRTC is a peer to peer communication system within the browser. Initially designed to support voice and video, WebRTC allows the transmission of data across and through complex networks.

Unblocked Components

BC.DataAccess

The BC.DataAccess Layer provides a public API to support data operations. Using the BC.DataAccess Layer, one can define and manage data models and send and receive data between users of teh application using a simple, accessible programming style.

BC.IndexedDB

The BC.IndexedDB Library provides access for our software to use IndexedDB from Blazor. It provides a number of advanced housekeeping functions to ensure the consistency and performance of IndexedDB whether on a phone, PC or Server.

BC.Node

The BC.Node component manages the distributed ledger. It is responsible for sending data between nodes, managing the chain of secure data blocks, voting on founders and operating the peer to peer network.

BC.PKI.Core

The PKI.Core library provides functions for managing X509 Certificates, for the encryption and decryption of data and for the signing and verification of data.

BC.FileReader

The BC.FileReader component provides access to the local filesystem of the user from Blazor.

BC.Storage

The BC.Storage library provides functions for accessing browser LocalStorage and SessionStorage.

External Functions

Whilst the platform does not require any infrastructure from its developers and users, we use a few central services to keep everything running smoothly.

Payment Portal

The Payment portal is responsible for generating signed X509 Certificates for applications an users.

STUN and TURN Server

The STUN and TURN servers help the nodes negotiate how to communicate through complex NAT environments.

Azure Functions

We have a couple of serverless functions which allow new nodes to find the registered nodes in a network and also a store of the secure ledger for each application.

       
WASM Blazor Html5  
IndexedDB WebRTC UPLogo