Skip to content
/ ergo Public
forked from ergoplatform/ergo

Ergo protocol description & reference client implementation

License

Notifications You must be signed in to change notification settings

jellymlg/ergo

 
 

Repository files navigation

Ergo

This repository contains the reference implementation of the Ergo Platform protocol, which is an alternative to the Bitcoin protocol.

Ergo Platform website: https://ergoplatform.org/

Differences from Bitcoin

Specifications

A White Paper with a brief description is available. A Yellow Paper with detailed specification is underway and will be available shortly. At the moment, there are drafts of the Yellow Paper available, and currently the reference implementation code should be considered as the specification.

Security assumptions

This client relies on some assumptions in regards with its environment:

  • execution environment is trusted. While seed is stored in encrypted files, and the client's wallet tries to remove secret key from memory as soon as possible when it is not needed, the client has no protection from side-channel attacks, memory scans etc.
  • clocks should be more or less synchronized. If timestamp of a block is more than 20 minutes in future, the block will be temporarily rejected. The client does not use NTP or other time syncing protocols.

Building and Running Node and UI

See documentation

Testing

There are three kinds of tests:

  1. Unit and property tests, run them with sbt test command.
  2. Integration tests, they require for Docker to be installed, then run sudo sbt it:test.
  3. Bootstrapping tests, very slow as they are checking that the node is indeed catching up with the main network in different regimes, they require for Docker too, run as sudo sbt it2:test.

Open project in IDE

Your can use IntelliJ IDEA (Community or Ultimate edition) or VSCode + Metals. Before opening the project in IDE make sure it can be built with sbt. You may need to fix dependency resolution errors first.

After that you can open the project folder in Idea (File / Open) which will run Project Import Wizard. The wizard will use SBT configuration (build.sbt file) to generate Idea's project configuration files. You can open File / Project Structure... dialog to see project configuration. If everything is successful you can compile the project in IDE.

Contributions

Ergo is open-source and open movement, always in need for testers and developers! Please feel free to discuss development in Ergo Discord, #development channel.

FAQ

Frequently Asked Questions

About

Ergo protocol description & reference client implementation

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Scala 82.0%
  • TeX 16.7%
  • Java 0.6%
  • Shell 0.4%
  • HTML 0.2%
  • JavaScript 0.1%