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
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.
- 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
TODO - UPDATE DESCRIPTION
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
- Go to
- Execute the script
- As result, a new
neo-cli-builtwill be copied to this folder
A2 - Run a private net with a modified neo-cli csharp nodes
Clone NeoCompiler Eco(system) and follow the guidelines for installing necessary packages:
Adjust the NeoCompiler Eco path at variable
PATH_CSHARP_NODESin the script
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
python -m SimpleHTTPServer 10000
Current example is loaded from
example-logs.js, which is parsed automatically.