Skip to content
Elrond Network testnet
Go Other
  1. Go 99.9%
  2. Other 0.1%
Branch: master
Clone or download
Latest commit 450ac81 Aug 20, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
api En 3563 update term ui (#373) Aug 14, 2019
benchmark-broadcast renamed repo to elrond-go Jun 19, 2019
cmd En 3569 fix display of txs from pool and for some metrics (#379) Aug 16, 2019
config Feat/en 3494 add pprof routes (#348) Aug 9, 2019
consensus En 3569 fix display of txs from pool and for some metrics (#379) Aug 16, 2019
core En 3563 update term ui (#373) Aug 14, 2019
crypto Feat/index unsigned tx (#324) Jul 31, 2019
data En 3395 termui console (#356) Aug 14, 2019
dataRetriever Feat/en 3280 improve set of last check point in fork detector (#361) Aug 12, 2019
display display: Apr 8, 2019
docker prepare repo phase 1: created server.toml file, updated docker file, … Jun 20, 2019
facade En 3563 update term ui (#373) Aug 14, 2019
hashing renamed repo to elrond-go Jun 19, 2019
integrationTests fixed failing integration test: node/heartbeat_test Aug 15, 2019
marshal Bug/en 2812 round index int64 (#242) Jul 31, 2019
node En 3569 fix display of txs from pool and for some metrics (#379) Aug 16, 2019
ntp fixed tests for HeaderResolver Jun 20, 2019
p2p En 3569 fix display of txs from pool and for some metrics (#379) Aug 16, 2019
process En 3569 fix display of txs from pool and for some metrics (#379) Aug 16, 2019
sharding Feat/en 2893 session info add other fields (#275) Jul 12, 2019
statusHandler En 3569 fix display of txs from pool and for some metrics (#379) Aug 16, 2019
storage Add error check for leveldb get method (#341) Aug 8, 2019
.env.dist fixed docker image Oct 24, 2018
.gitignore Observer to elasticsearch (#179) Jun 6, 2019
LICENSE Create LICENSE (#218) Jun 20, 2019
Makefile New makefile (#335) Aug 2, 2019 Update Jul 9, 2019
configP2P.json Added p2p package, added ex08BenchmarkSendPackets, added config (from… Sep 12, 2018
docker-compose.yml Observer to elasticsearch (#179) Jun 6, 2019
elrond_logo_01.svg updated logo Jun 20, 2019
go.mod En 3395 termui console (#356) Aug 14, 2019
go.sum En 3395 termui console (#356) Aug 14, 2019
web-server.json Allow CORS Oct 12, 2018

Elrond go

The go implementation for the Elrond Network testnet

Installation and running

In order to join the network as an observer or as a validator, the required steps are explained below:

Step 1: install & configure go:

The installation of go should proceed as shown in official golang installation guide . In order to run the node, minimum golang version should be 1.12.4.

Step 2: clone the repository and build the binaries:

The main branch that will be used is the master branch. Alternatively, an older release tag can be used.

$ mkdir -p $GOPATH/src/
$ cd $GOPATH/src/
$ git clone
$ cd elrond-go && git checkout master
$ GO111MODULE=on go mod vendor
$ cd cmd/node && go build

Step 3: creating the node’s identity:

In order to be registered in the Elrond Network, a node must possess 2 types of (secret key, public key) pairs. One is used to identify the node’s credential used to generate transactions (having the sender field its account address) and the other is used in the process of the block signing. Please note that this is a preliminary mechanism, in the next releases the first (private, public key) pair will be dropped when the staking mechanism will be fully implemented. To build and run the keygenerator, the following commands will need to be run:

$ cd ../keygenerator
$ go build
$ ./keygenerator

Start the node

Step 4a: Join Elrond testnet:

Follow the steps outlined here. This is because in order to join the testnet you need a specific node configuration.


Step 4b: copying credentials and starting a node in a separate network:

The previous generated .pem files needs to be copied in the same directory where the node binary resides in order to start the node.

$  cp initialBalancesSk.pem ./../node/config/
$  cp initialNodesSk.pem ./../node/config/
$  cd ../node && ./node

The node binary has some flags defined (for a brief description, the user can use --help flag). Those flags can be used to directly alter the configuration values defined in .toml/.json files and can be used when launching more than one instance of the binary.

Running the tests

$ go test ./...	



  • Cryptography
    • Schnorr Signature
    • Belare-Neven Signature
    • BLS Signature
    • Modified BLS Multi-signature
  • Datastructures
    • Transaction
    • Block
    • Account
    • Trie
  • Execution
    • Transaction
    • Block
    • State update
    • Synchronization
    • Shard Fork choice
  • Peer2Peer - libp2p
  • Consensus - SPoS
  • Sharding - fixed number
    • Transaction dispatcher
    • Transaction
    • State
    • Network - Message dispatching
  • MetaChain
    • Data Structures
    • Block Processor
    • Interceptors/Resolvers
    • Consensus
  • Block K finality scheme
  • VM - K-Framework
    • K Framework go backend
    • IELE Core
    • IELE Core tests
    • IELE Adapter
  • Smart Contracts on a Sharded Architecture
    • Concept reviewed
    • VM integration
    • SC Deployment
  • Governance
    • Concept reviewed
  • Economics
    • Concept reviewed
  • Optimizations
    • Randomness
    • Consensus
  • Bootstrap from storage
  • Testing
    • Unit tests
    • Integration tests
    • TeamCity continuous integration
    • Manual testing

In progress

  • Epochs
    • Nodes dispatcher (shuffling)
  • Network sharding
    • Optimized wiring protocol
  • VM - K-Framework
    • EVM Core
    • EVM Core tests
    • EVM Adapter
  • Smart Contracts on a Sharded Architecture
    • Dependency checker + SC migration
    • Storage rent + SC backup & restore
    • Request-response fallback
  • Fee structure
  • Adaptive State Sharding
    • Splitting
    • Merging
    • Redundancy
  • Privacy
  • DEX integration
  • Interoperability
  • Optimizations
    • Smart Contract
  • Governance
    • SC for ERD IP
    • Enforced Upgrade mechanism for voted ERD IP
  • Testing
    • Automate tests with AWS
  • Bugfixing


Thank you for considering to help out with the source code! We welcome contributions from anyone on the internet, and are grateful for even the smallest of fixes to Elrond!

If you'd like to contribute to Elrond, please fork, fix, commit and send a pull request for the maintainers to review and merge into the main code base. If you wish to submit more complex changes though, please check up with the core developers first on our riot channel to ensure those changes are in line with the general philosophy of the project and/or get some early feedback which can make both your efforts much lighter as well as our review and merge procedures quick and simple.

Please make sure your contributions adhere to our coding guidelines:

  • Code must adhere to the official Go formatting guidelines.
  • Code must be documented adhering to the official Go commentary guidelines.
  • Pull requests need to be based on and opened against the master branch.
  • Commit messages should be prefixed with the package(s) they modify.
    • E.g. "core/indexer: fixed a typo"

Please see the documentation for more details on the Elrond project.

You can’t perform that action at this time.