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.
- 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.
TODO - UPDATE DESCRIPTION
This procedure requires two steps (A1 and -A2 or A3-), all of them described below.
- Go to
docker-build-neo-cli
folder - Execute the script
docker_build_run_copy_stop.sh
- As result, a new
neo-cli-built
will be copied to this folder
-
Clone NeoCompiler Eco(system) and follow the guidelines for installing necessary packages:
-
Adjust the NeoCompiler Eco path at variable
PATH_CSHARP_NODES
in the scriptbuild_neo_csharp_nodes_with_builtNeoCli.sh
andbuild_everything_neocompiler.sh
-
Run
build_everything_neocompiler.sh
or -
Run
build_neo_csharp_nodes_with_builtNeoCli.sh
-
Start the NeoCompiler Eco as usual. Go to the NeoCompiler Eco main folder and execute
build_everything.sh
RUN: python -m SimpleHTTPServer 10000
ACCESS: localhost:10000
Current example is loaded from example-logs.js
, which is parsed automatically.