These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on how to deploy the project on a live system.
- Gradle
- Docker
- Java 9 or greater
The build jar requiers a config.json in the working dir. The following is an example config used for running test-nets on a local machine.
{
"trustedNodeIP": "172.17.0.2",
"trustedNodePort": 5000,
"keystorePath": ".",
"maxNodes": 10000,
"slotDuration": 10000,
"initialDifficulty": 1000,
"broadcastSpreadPercentage": 5,
"committeeSize": 256,
"influxUrl": "REDACTED",
"influxUsername": "REDACTED",
"influxPassword": "REDACTED",
"dashboardEnabled": true,
"loggingEnabled": false,
"trustedLoggingEnabled": false,
"historyMinuteClearance": 10,
"historyCleaningFrequency": 5,
"nodesPerCluster": 30,
"maxIterations": 5,
"packetSplitSize": 60000,
"useCriu": false
}
After building the executable jar with maven, build a docker container with the example Dockerfile.
docker build --tag node .
Note that testing using docker containers requires the bootstrap node to be booted first. Make sure that both trustedNodeIP, and trustedNodePort are set to the boostrap node. To check the IP of the bootstrap node you can use
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name_or_id
docker run -it node
Note: depending on the operating system, and docker version you might need to pass a memmory limit flag to the container to avoid a problem where JVM assumes it has the entire system memory available. An expected memory usage should be between 300 and 500 MB.
- Kotlinx Serialization (json + protobuf) - Kotlin multiplatform / multi-format reflectionless serialization
- InfluxDb - InfluxDB
- Aleksandar Tošič - Initial Work, Research, Development - Dormage
- Mihael Berčič - Development - MihaelBercic
This project is licensed under the MIT License - see the LICENSE file for details
We would like to acknowledge the collegue dr. Jernej Vičič from the University of Primorska Faculty of Mathematics, Natural Sciences and Information Technologies, and prof. dr. Mihael Mrissa from Innorenew CoE for the theoretical fundations, which are the basis for this implementation.