Testworld Mission 2.0 Protocol Performance Testing
The Testworld Mission 2.0: Protocol Performance Testing program is here. The goal of this program is to stress test the protocol and network with Mina community members to have a high level of confidence for Mina’s upcoming mainnet upgrade that will enable easier zkApps on Mina Mainnet.
The Program gathers experienced node operators to provide the network backbone for the Testworld 2.0 testnet. Participants will perform various node operation testing tasks for different grants. Participants can perform multiple node operation tasks.
The Testworld Mission 2.0 network:
- Chain ID:
332c8cc05ba8de9efc23a011f57015d8c9ec96fac81d5d3f7a06969faf4bce92
- Git SHA-1:
4061884b18137c1182c7fcfa80f52804008a2509
The seeds.txt file
location:
- Seed List:
https://storage.googleapis.com/seed-lists/testworld-2-0_seeds.txt
You must configure the node to restart automatically. Follow the instructions in Start a mina node with auto-restart flows.
Please refer to the Discord testworld-2 channel for questions or to find any configuration options.
Please note that the flag --max-connections 200
has been removed for all types of nodes.
Launching the Nodes
Testworld Mission 2.0 nodes must run with the flags specified here in order to conduct the testing.
For more information about running nodes, see the Node operators docs.
Use the latest Testworld Mission 2.0 release, this release can be found at here, we will announce any future releases on the Discord testworld-2 channel. Releases are located in the GitHub Releases directory.
Block Producer
See the Block Producer hardware requirements.
You must configure the block producer node with the following flags:
--log-json
--itn-max-logs 10000
--log-snark-work-gossip true
--internal-tracing
--insecure-rest-server
--log-level Debug
--file-log-level Debug
--config-directory <path to the mina configuration directory>
--external-ip <external server IP>
--itn-keys f1F38+W3zLcc45fGZcAf9gsZ7o9Rh3ckqZQw6yOJiS4=,6GmWmMYv5oPwQd2xr6YArmU1YXYCAxQAxKH7aYnBdrk=,ZJDkF9EZlhcAU1jyvP3m9GbkhfYa0yPV+UdAqSamr1Q=,NW2Vis7S5G1B9g2l9cKh3shy9qkI1lvhid38763vZDU=,Cg/8l+JleVH8yNwXkoLawbfLHD93Do4KbttyBS7m9hQ=
--itn-graphql-port 3089
--uptime-submitter-key <uptime-keyfile path> (**same key as block producer key**)
--uptime-url https://block-producers-uptime-itn.minaprotocol.tools/v1/submit
--metrics-port 10001 (**This flag is used when using Kubernetes. The port should be closed from external access**)
--enable-peer-exchange true
--libp2p-keypair <keyfile path> (**libp2p keypair pre-generated by the Node Operator**)
--log-precomputed-blocks true
--peer-list-url (**seeds.txt URL will be distributed prior to launch**)
--generate-genesis-proof true
--block-producer-key <keyfile path> (**keys will be distributed prior to launch**)
--node-status-url https://nodestats-itn.minaprotocol.tools/submit/stats
--node-error-url https://nodestats-itn.minaprotocol.tools/submit/stats
--file-log-rotations 500
and the following environment variables:
RAYON_NUM_THREADS=6
UPTIME_PRIVKEY_PASS
MINA_LIBP2P_PASS
MINA_PRIVKEY_PASS
Load Tester
See the Load Testing hardware requirements.
You must configure Load Testing nodes with the following flags:
--log-json
--itn-max-logs 10000
--log-snark-work-gossip true
--internal-tracing
--insecure-rest-server
--log-level Debug
--file-log-level Debug
--config-directory <path to mina config>
--external-ip <external server IP>
--itn-keys f1F38+W3zLcc45fGZcAf9gsZ7o9Rh3ckqZQw6yOJiS4=,6GmWmMYv5oPwQd2xr6YArmU1YXYCAxQAxKH7aYnBdrk=,ZJDkF9EZlhcAU1jyvP3m9GbkhfYa0yPV+UdAqSamr1Q=,NW2Vis7S5G1B9g2l9cKh3shy9qkI1lvhid38763vZDU=,Cg/8l+JleVH8yNwXkoLawbfLHD93Do4KbttyBS7m9hQ=
--itn-graphql-port 3089
--uptime-submitter-key <uptime-keyfile path>
--uptime-url https://block-producers-uptime-itn.minaprotocol.tools/v1/submit
--metrics-port 10001 (**This flag is used when using Kubernetes. The port should be closed from external access**)
--enable-peer-exchange true
--libp2p-keypair <keyfile path> (**libp2p keypair pre-generated by the Node Operator**)
--log-precomputed-blocks true
--peer-list-url (**seeds.txt URL will be distributed prior to launch**)
--generate-genesis-proof true
--node-status-url https://nodestats-itn.minaprotocol.tools/submit/stats
--node-error-url https://nodestats-itn.minaprotocol.tools/submit/stats
--file-log-rotations 500
and the following environment variables:
RAYON_NUM_THREADS=6
UPTIME_PRIVKEY_PASS
MINA_LIBP2P_PASS
MINA_PRIVKEY_PASS
SNARK Workers
See the SNARK Work hardware requirements.
You must configure SNARK workers with the following flags to connect to the SNARK Coordinator nodes:
internal
snark-worker
--proof-level full
--shutdown-on-disconnect false
--daemon-address <snark coordinator IP and port - IP:port>
and the following environment variables:
RAYON_NUM_THREADS:8
SNARK Coordinator
See the SNARK Coordinator hardware requirements.
You must configure the SNARK coordinators with the following flags:
--log-json
--itn-max-logs 10000
--log-snark-work-gossip true
--internal-tracing
--insecure-rest-server
--log-level Debug
--file-log-level Debug
--config-directory <path>
--external-ip <external server IP>
--itn-keys f1F38+W3zLcc45fGZcAf9gsZ7o9Rh3ckqZQw6yOJiS4=,6GmWmMYv5oPwQd2xr6YArmU1YXYCAxQAxKH7aYnBdrk=,ZJDkF9EZlhcAU1jyvP3m9GbkhfYa0yPV+UdAqSamr1Q=,NW2Vis7S5G1B9g2l9cKh3shy9qkI1lvhid38763vZDU=,Cg/8l+JleVH8yNwXkoLawbfLHD93Do4KbttyBS7m9hQ=
--itn-graphql-port 3089
--uptime-submitter-key <uptime-keyfile path>
--uptime-url https://block-producers-uptime-itn.minaprotocol.tools/v1/submit
--metrics-port 10001 (**This flag is used when using Kubernetes. The port should be closed from external access**)
--enable-peer-exchange true
--libp2p-keypair <keyfile path> (**libp2p keypair pre-generated by the Node Operator**)
--log-precomputed-blocks true
--peer-list-url (**seeds.txt URL will be distributed prior to launch**)
--node-status-url https://nodestats-itn.minaprotocol.tools/submit/stats
--node-error-url https://nodestats-itn.minaprotocol.tools/submit/stats
--run-snark-coordinator <public key> (**keys be distributed prior to launch**)
--snark-worker-fee 0.001
--work-selection seq
--file-log-rotations 500
and the following environment variables:
RAYON_NUM_THREADS=6
UPTIME_PRIVKEY_PASS
MINA_LIBP2P_PASS
Archive Node
See the Archive Node hardware requirements.
The archive node requires a non-block producing node and PostgreSQL database. For more information about running archive nodes, see Archive Node.
The PostgreSQL database requires two schemas:
- The PostgreSQL schema used by the Mina archive database: create_schema.sql.
- The PostgreSQL schema extensions to support zkApp commands: zkapp_tables.sql.
The non-block producing node must be configured with the following flags:
--log-json
--itn-max-logs 10000
--internal-tracing
--insecure-rest-server
--log-level Debug
--file-log-level Debug
--config-directory <path to mina config>
--external-ip <external server IP>
--itn-keys (**keys will be distributed prior to launch**)
--itn-graphql-port 3089
--uptime-submitter-key <uptime-keyfile path> (** self-generated private key for uptime service**)
--uptime-url https://block-producers-uptime-itn.minaprotocol.tools/v1/submit
--metrics-port 10001 (**This flag is used when using Kubernetes. The port should be closed from external access**)
--enable-peer-exchange true
--libp2p-keypair <keyfile path> (**libp2p keypair pre-generated by the Node Operator**)
--log-precomputed-blocks true
--peer-list-url (**seeds.txt URL will be distributed prior to launch**)
--generate-genesis-proof true
--node-status-url https://nodestats-itn.minaprotocol.tools/submit/stats
--node-error-url https://nodestats-itn.minaprotocol.tools/submit/stats
--file-log-rotations 500
--archive-address <archive_address>:<archive_port - use 3086>
and the following environment variables:
RAYON_NUM_THREADS=6
UPTIME_PRIVKEY_PASS
MINA_LIBP2P_PASS
MINA_PRIVKEY_PASS
This non-block producing node connects to the archive node with the addresses specificied in the archive-address
flag, using archive port
used by the archive node.
The archive node command is:
mina-archive run --metrics-port <port> --postgres-uri postgres://<postgres user>:<postgres password>@<postgres address>:<postgres port>/<postgres db> --server-port <archive port - use 3086>
Port configuration
Nodes must have the following ports public (accessible with a node’s external ip):
- libp2p port use 8302 by default
- itn-graphql-port configured to 3089
Generation of libp2p keypair
Each node within the network must possess its own distinct libp2p key pair. This requirement extends to block producer nodes as well, despite their utilization of a common block production key. Every node operator must generate a unique libp2p keys locally on their respective machines using the following command:
mina libp2p generate-keypair -privkey-path <path-to-the-key-file>
Node Restarts
All nodes must be set up to restart on crash. See Start a mina node with auto-restart flows.
Feedback and Questions
Thank you for participating.
Use the dedicated Discord #testworld-2 to provide feedback and ask questions related to the Testworld Mission 2.0: Protocol Performance Testing program. We look forward to hearing from you!