Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/gr0vity-dev/nano-local
Spin up your own local nano network with a genesis account and multiple reps
https://github.com/gr0vity-dev/nano-local
Last synced: 2 months ago
JSON representation
Spin up your own local nano network with a genesis account and multiple reps
- Host: GitHub
- URL: https://github.com/gr0vity-dev/nano-local
- Owner: gr0vity-dev
- License: apache-2.0
- Created: 2021-11-28T19:20:49.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2023-02-28T07:11:05.000Z (almost 2 years ago)
- Last Synced: 2023-03-05T23:26:30.555Z (almost 2 years ago)
- Language: Python
- Size: 733 KB
- Stars: 11
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# nano-local
This project aims to easily spin up custom [nano-currency](https://nano.org) network on your local computer.
The default config spins up a network 4 node : 1 genesis and 3 voting nodes of which each holds 33.3% of the total vote weight.
Each node comes with their rpc and websocket endpoint enabled.All configuration is done inside the config file : `nanolocal/nl_config.toml`
Many additional services can be enabled :
- nanolooker
- nanoNodeMonitor
- nano-vote-visualizer
- nanoticker
A test-suite with some basic network- and block propagation checks can be run after having initialised the network.## prerequisites
* python3.7
* docker
* docker-compose (if you use docker-compose v1.xx try adding--compose_version=1
flag)## Quickstart :
#### Create a virtual python environment with all dependencies :
$ ./setup_python_venv.sh
#### Spin up a network :
| Action | Code | Description |
| :---------- |:--------------------------------------------- | -----|
| create |$ ./nl_run.py create
| Create folders and node config |
| start |$ ./nl_run.py start
| Start all nodes and services (optional flag--build = true
rebuilds docker containers)|
| init |$ ./nl_run.py init
| Create Epochs Canary Burn and Vote weight distribution |
| test |$ ./nl_run.py test
| runs tests from[testcase]
section ofnl_config.toml
|
| pytest |$ ./nl_run.py pytest
| runs tests from[testcase]
section ofnl_config.toml
|
| stop |$ ./nl_run.py stop
| Stop all nodes and services |
| stop_nodes |$ ./nl_run.py stop_nodes
| Stop nodes only |
| restart |$ ./nl_run.py restart
| Restart nodes only |
| restart_wait_sync |$ ./nl_run.py restart_wait_sync
| Restart nodes until 100% of blocks are confirmed |
| reset |$ ./nl_run.py reset
| Delete all blocks except genesis block by removing data.ldb from all nodes |
| destroy |$ ./nl_run.py destroy
| Remove all nodes and delte virtaul environment |#### Query nodes :
Each node can be queried via RPC (see the [official documentation](https://docs.nano.org/commands/rpc-protocol/) )
| Node | RPC | Websocket |
| :---------- |:-------------------------- | -----------------------|
| nl_genesis |http://127.0.0.1:45000 | ws://127.0.0.1:47000 |
| nl_pr1 |http://127.0.0.1:45001 | ws://127.0.0.1:47001 |
| nl_pr2 |http://127.0.0.1:45002 | ws://127.0.0.1:47002 |
| nl_pr3 |http://127.0.0.1:45003 | ws://127.0.0.1:47003 |#### Optional : Configure the network :
nl_config.toml
define all aspects of the network : genesis account, burn_amount, number of nodes, versions,...You can enable various services :
| Service | Code | Description |
| :----------- |:----------| -----|
| remote_address |remote_address='127.0.0.1'
| server address inside your LAN (localhost by default) |
| [nanolooker](https://github.com/running-coder/nanolooker) |nanolooker_enable = true
| Available at http://{remote_address}:42000 |
| [nano-vote-visualizer](https://github.com/numsu/nano-vote-visualizer) |nanovotevisu_enable = true
| Available at http://{remote_address}:42001 |
| [nanoticker](https://github.com/Joohansson/nanoticker) |nanoticker_enable = true
| Available at http://{remote_address}:42002 |
| [nano-node-monitor](https://github.com/nanotools/nanoNodeMonitor)|nanomonitor_enable = true
| Available at http://{remote_address}:46000, 46001, 46002, ... |#### Optional : Run Tests :
All tests are configured in the
[testcase]
section ofnl_config.toml
$ ./nl_run.py test
runs the configured tests| Module | Test | Code | Description |
| :--- | :------------------------- |:-----------------------------------------------| -------------|
|basic |>NetworkChecks |
|basic |rpc_online |test_rpc_online
| all nodes online|
|basic |peer_count |test_peer_count
| all nodes interconnected|
|basic |equal_block_count |test_equal_block_count
| all nodes have same blocks|
|basic |equal_online_stake_total |test_equal_online_stake_total
| all nodes see same online weight|
|basic |equal_confirmation_quorum |test_equal_confirmation_quorum
|all nodes have equal network view |
|basic |equal_peers_stake_total |test_equal_peers_stake_total
| all nodes have equal peer weight|
|basic |equal_representatives_online |test_equal_representatives_online
| all nodes have same online representatives|
|basic |>BlockPropagation |
|basic |account_split_10 |test_1_account_split_10
| Create 10 accounts by splitting each account into 2 new accounts|
|basic |account_split_1000 |test_1_account_split_1000
| Create 1000 accounts by splitting each account into 2 new accounts|#### Optional : Delete virtual python environment
To remove your virtual python environment$ ./setup_venv.sh delete