Contribute

Overview

This section is for developers who wish to contribute to the blockchain ecosystem.

It is broken down into the following sections

  • Developer Setup: examples of setting up a developer environment and some best practices around code contribution.
  • Reference Architecture: uses the Harmony ecosystem as a reference and has links to coebases which make up the ecosystem.
  • Reference Contributions: contains sample pull requests and contributions
  • Reference Grants: grant information and proposals.
  • Reference Tutorials: sample tutorials for smart contract and DApp developers

Developers can contribute to the blockchain ecosystem in a number of ways. For simplicity we've categorized the ecosystem into 4 areas and then broken down the areas into the tools required.

Note all areas may have ecosystem grants associated with them, please refer to the home section for the various platforms offering grants.

Development Areas

The four high level areas are

AreaSample LanguagesSample ToolsOverview
Core Protocolgo, rust, c++, java, pythonpprof, delvebuilt by core protocol developers built using high performant languages
Network Operationsbash scripting, python, rust, gojenkins, travis, grafanatools for validators as well as core protocol developers continuous integration contuous deployment (CICD) pipelines
Toolingjavascript, typescript, react, go, rust, python, solidity, vyperfirebase, ganache, truffle, drizzlethis covers a broad array of components for developers and users.
Applicationsjavascript, typescript, react, go, rust, pythonfirebase, google analytics,User facing applications typically designed for decentralized finance and cross border payments, but can also support various vertical industries.

Tooling Development

As tooling development spans a number of areas it is worth doing a deeper dive here.

Languages leveraged will vary based on the Layer 1 protocol design.

Following are some languges which are typically leveraged

AreaSample LanguagesSample Tools
Developer toolscore protocol (go, rust, c++) and Network Operations (bash scripting)jenkins, travis, grafana, etc
Web based toolsjavascript, go, java, python
Local IDEjavascript, go, java, pythondeployment tools (docker, kubernetes, helm, etc)
Client interface APIcore protocol lanuguages (go, rust, c++)data definitions (openapi, protobuf, json, etc)
Smart contract knowledgebasesmart contract languages ((solidity, vyper, rust)standards (e.g. openzepplin) and knowledgebase (e.g. tutorials, truffleboxes)
DeFi primitivesapi layer (go, rust, c++, nodejs)smart contract protocols stable coins (dai, tusd, usdc, busd, etc), liquidity pools (uniswap, 0x, etc)
Integration primitivesapi layer (go rust, c++ nodejs)integrating with oracles(chainlink), kyc(plaid), fiat on ramps (prime capitlal, wyre), interchain (ibc, layer 1 protocols)
Wallet Toolssigning libarires (c++, go, rust) browser extensions, apps (javascript) and smart contract frameworksphysical devices (ledger, trezor, safepal, etc)

Applications

Applications are typially built on top of layer 1 protocols leveraging the tooling built for these platformts.

They typically consist of

  • Front End (react, vue, etc)
  • Persistence Layer (firebase, mongo, sql db, etc)
  • Integration (API) Layer (go, rust, c++, nodejs, etc)

Reference Ecosystem

The below diagram gives a sample landscape for a layer 1 blockchain ecoystem. This was drafted using Harmony (a performant, sharded, proof of stake platform) as an example. Each layer 1 platform will have it's own nuances. The key differences that will effect what needs to be built include

  • The maturity and funding for the platorm
  • The target audience for the platform
  • Private permissioned vs open platforms
  • How rigorously open source contribution is enforced

emAsset is in the ideation and prototyping phase which is expected to conclude at the end of July 2020.

At that time we will be looking for additional team members, contributors, partners, grants and investors.

Click the diagram below to enter full screen mode

Blockchain ecosystem