Skip to content

Latest commit

 

History

History
217 lines (133 loc) · 14.3 KB

Developers.md

File metadata and controls

217 lines (133 loc) · 14.3 KB
title description published date tags editor dateCreated
Developers
true
2021-05-05 09:36:51 UTC
markdown
2021-02-24 08:19:45 UTC

This site is a community resource website, ergonauts are encouraged to create an account and add to the site. the site is backed up and available to use on Github. Submit pull requests to update this (and other) pages! {.is-info}

Getting Started

The Ergo ecosystem is quickly growing with new design patterns, tools, dApps, and more every single month. This is an exciting point in time for developers to jump in and get started.

That said, while building dApps on top of Ergo, vital infrastructure components to develop and run your dApp might be intimidating to set up for someone who is unfamiliar with the existing tooling. Between an Ergo full node, explorer back end, explorer front end, logging, and metrics, it can become quite overwhelming for a nascent dApp developer entering into the ecosystem.

For this reason, we are introducing ergo-bootstrap, an easy-to-use tool that enables quick and clean Ergo blockchain cluster deployments which supports a variety of useful infrastructure components you will need on your path of dApp development. This was developed by Marek of Five Binaries thanks to a grant given by the Ergo Foundation and their latest push to empower the ecosystem via funding key projects.

Ergo bootstrap tool, build on top of ergo-nix, will help you to quickly deploy an Ergo blockchain cluster with a handful of useful tools you might need to start developing your dApps.

Read more on the blog - Ergo Bootstrap, Streamlining Ergo dApp Infrastructure With One Simple Tool

You can see the currently deployed dApps on sigmaverse.io, and this recent post on the forum on Ergo dApp Ecosystem Development - ergoforum gives some indication to where development is needed.

Hackathon

We are thinking about organizing a hackathon, likely in May. The topic would be "Completing the Basics", so improving basic infrastructure needed for building the DApps, (also, to profit from them)

The following topics will likely be covered

  • Improvements to ErgoScript (not all the ErgoTree features are projected into it)
  • Improvements to Ergo AppKit (basic library for constructing transactions and building offchain logic on top of for Java and JVM languages)
  • Improvements to Ergo Node Interface and - Ergo Headless dApp Framework (basic library for constructing transactions and building offchain logic with Rust)
  • Ergo Crowdfunding apps/UI
  • Visual tool for constructing multi-signatures (could be a good first step for visual tools to construct more complex scripts)
  • Tokenization schemes
  • Tools for NFTs
  • Applications for data notarization and names registration
  • Stealth addresses pool implementation
  • Applications on top of mixer API
  • More data connectors for the oracle pools
  • Private swaps with other chains on Schnorr signature (Bitcoin Cash, Litecoin (?), Komodo (?))

Everyone participating will be rewarded for delivering anything that progresses the current state.

Languages

ErgoScript

Learn Ergoscript by reading example smart contracts powered by the Ergo Playground. Each contract example includes a Ergo Playground link which allows you to instantly edit and run the smart contract code inside of your browser.

Rust

A list of "good first" issues for Sigma-Rust is available on GitHub - @greenhat on Discord is ready to assist anyone who is interested. {.is-info}

Sigma-rust - implementation of ErgoScript cryptocurrency scripting language. To get better understanding on how to use it in your project check out how its being used in the following projects:

Scala

JS/TS

Frameworks

Sigmastate-Interpreter

Interpreter for a family of Sigma-State authentication languages, a list of good first issues is available on Github

Oracle Core

The oracle core is the off-chain component that oracles who are part of an oracle pool run. This oracle core provides a HTTP API interface for reading the current protocol state & another for submitting datapoints. Once a datapoint is submited, the oracle core will automatically generate the required tx and post it as well as any other actions required for the protocol to run. This thereby allows the oracle to participate in the oracle pool protocol without any extra effort for the oracle operator.

Scorex

  • ScoreX, The modular blockchain framework

Tools

Appkit

  • Ergo Appkit (Polyglot library) - Appkit: A Library for Polyglot Development of Ergo Applications using either GraalVM or stock Java 1.7 and above. Read the introduction.
  • Appkit Examples - Examples of using Ergo Appkit for Polyglot Development of Ergo Applications
  • Ergo Android - Example Android application which demonstrates how Ergo Appkit can be used to develop Ergo applications running on Android.

Appkit has idiomatic Java API and is written in Java/Scala. It is a thin wrapper around core components provided by ErgoScript interpreter and Ergo protocol implementations which are written in Scala. It is published on maven repository and cross compiled to both Java 7 and Java 8+ jars.

The Appkit library is compatible with GraalVM - a novel next generation approach to implement software which is reusable across several programming languages and execution environments. For example if Node.js application is run on GraalVM, then it can use Appkit to interact with Ergo Blockchain.

Using Appkit Ergo applications can be written in one of the languages supported by GraalVM (i.e. Java, JavaScript, C/C++, Python, Ruby, R) and using this library applications can communicate with Ergo nodes via unified API and programming model provided by Appkit. In addition Appkit based Ergo applications can be compiled into native code using native-image ahead of time compiler and then executed without Java VM with very fast startup time and lower runtime memory overhead compared to a Java VM. This is attractive option for high-performance low-latency microservices.

In addition Appkit is compatible with Android and can be used from Android applications.

Misc

Ergo Improvement Proposals

Ergo Improvement Proposals (EIPs) specify and/or describe standards for the Ergo Platform, including core protocol specifications, client APIs, dApp/contract standards, and other such things.

Please check out existing EIPs, such as EIP-1, to understand the general expectation of how EIPs are supposed to be formatted.

Number Title
EIP-0001 UTXO-Set Scanning Wallet API
EIP-0002 Ergo Grant Program
EIP-0003 BIP-44 Standard For Ergo Platform
EIP-0004 Assets Standard
EIP-0005 Contract Template
EIP-0006 Informal Smart Contract Protocol Specification Format

Test vectors:

Services

dApps

CLI

  • Ergo notary - simple command-line tool to certificate files on the Ergo blockchain. See also forum topic on a particular example
  • Miner rewards script Simple command-line tool to find miner rewards not spent and form withdrawing transaction requests for them
  • Ergo oracles - simple command-line tool to launch oracles. Inbuilt implementations for USD/ERG, EUR/ERG, BTC/ERG, AUG/ERG (gold) prices delivery. See also a forum topic with example
  • Ergo Crowdfunding CLI Command-line tool which enables participating and interacting with crowdfunding campaigns on Ergo
  • ErgoTool - A Command Line Interface for Ergo based on Appkit and GraalVM

Documentation

ZK Treasury

Proposed Nautilus ZK Treasury

This basic concept is to create a visual programming toolkit to assist developers in learning and developing contracts in the EUTXO model.

This toolkit will initially be built on top of Ergo Playground.

The goal is to take advantage of the free composability offered by EUTXO. Create an open source library of visual, composable tools to onboard new developers.

The “long term” goal is to create a headless central management system for developers, and a front-end UI focused central management system for basic users that are both interoperable with this visual programming toolkit.

The name Nautilus is inspired by the Submarine in Jules Verne 20,000 Leagues Under the Sea. Nautilus is described by Verne as "a masterpiece containing masterpieces", which was built in secrecy, sourcing parts from unnamed sources and roams the seas beyond the reach of land-based governments.