Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time


Connecting, integrating, testing and analyzing

This project has its main focus on establishing a set of parameters that will be subjected to optimization and statistical analyses in order to check Neo Consensus and Blockchain capabilities. The current C# client is used as the main tool for interacting with the Blockchain and Run the Consensus. In this sense, the private blockchain created using the tools available here is created with new modified characteristics from neo blockchain, with assist of the procedures inside folder docker-build-neo-cli. Thus, this repository comprises a set of scripts and docker containers to build a modified neo-cli client and integrate it with different tools from the Neo Ecosystem, perhaps, those that are already integrated in the NeoCompiler Eco(system).


It posses the potential of:

  • Improve performance of the Neo Blockchain;
  • Find optimization opportunities;
  • Promote didactic tools for developers to comprehend core concepts of the Neo Blockchain.

Possible improvements

  • Identify parameters that could be optimized and their impact on consensus behavior:
    • Check bottlenecks: on opcodes (.avm) readings execution; decoding transactions; communicating; changing view; broadcasting; among other.
    • Verify robustness: check the possibility of executing a graph optimization problem (using mathematical programming models of metaheuristics inspired procedures), described on the ongoing project ODBFT, which would balance find a consensus that balance efficiency and risk.
  • Create an automatic procedure for easily set these variables and report characteristics of the network:
    • Automatic CPU time reporting on the aforementioned points;
    • Automatic reports on the interaction with different interfaces of Neo ecosystem.
  • Run several batches of experiments:
    • Involve different Neo developers in order to execute this containers and report their results;
    • Possible, design a competition and co-working scheme for granting prizes to those that performed outstanding reports.
  • Integrate this project into a self-adaptive TestNet:
    • Testnet would be reset sporadically and nodes would get new parameters;
    • All nodes would receive necessary amount of Neo and GAS for serving as consensus or acting in the network as normal users.
    • In this sense, neo-cli nodes would automatically synchronize and try to find the most suitable set of parameters.
  • As mentioned in the original project:
    • Investigate using docker compose and improve the image build process so it's more suitable for CI;
    • Improve speed of build process, suspect we can use cache a little more for our containers.

How to build and Run


Simple and easy - Build everything and generated a personalized NeoCompiler Ecosystem

This procedure requires two steps (A1 and -A2 or A3-), all of them described below.

A1 - Create a modified neo-cli with modified neo-blockchain or neo-cli files

  1. Go to docker-build-neo-cli folder
  2. Execute the script
  • As result, a new neo-cli-built will be copied to this folder

A2 - Run a private net with a modified neo-cli csharp nodes

  1. Clone NeoCompiler Eco(system) and follow the guidelines for installing necessary packages:

  2. Adjust the NeoCompiler Eco path at variable PATH_CSHARP_NODES in the script and

  3. Run or

  4. Run

  5. Start the NeoCompiler Eco as usual. Go to the NeoCompiler Eco main folder and execute

Drawing messages from NEO Consensus: consensus-draw

How to use

RUN: python -m SimpleHTTPServer 10000

ACCESS: localhost:10000


Current example is loaded from example-logs.js, which is parsed automatically.

NeoResearch 2018


This project includes building and testing techniques for validating NEO nodes and Smart Contracts








No packages published