Since early 2016 I have been working on blockchain technology in relation to the Ethereum platform concentrating on the core pieces of the code that allow people to build distributed technologies not necessarily related to the blockchain. Examples of this include:
These are Ethereum projects that are building out long term infrastructures to accomplish different tasks.
The basis for these programs and data structures include the following components.
All of the Ethereum projects have access to the common infrastructure pieces including hex utilities, manipulating of numbers between signed and unsigned ints and many other functions found in the common package.
At the core of Ethereum is Cryptography. The crypto package is used throughout every application. Mission critical to setting up an Ethereum based application is to start off with a P2P handshake. It comes in 2 parts. Part one is the encryption handshake and part two is the protocol handshake as outlined in the P2P package server function named setupConn.
Event is Ethereum’s simple built in homegrown Pub / Sub system which is pretty nice and allows one to publish and subscribe to events on channels. It is an abstraction layer above Go’s core channel infrastructure.
The P2P system is what makes Ethereum tick. Every aspect of Ethereum is based on a distributed set of peers that reside all over the world and communicate seamlessly which one another. A separate post on this topic will outline many of the details associated with the P2P system.
The RLP System, meaning Recursive Length Prefix, is the main way of encoding data in Ethereum. There are many different ways to encode data in Go including:
And Ethereum has chosen to roll their own format which works fine, is compact, and is everywhere in their software.