Block Producer Sidecar
PLEASE READ: This affects the submission of uptime data and the Performance Score results for receiving a delegation.
The current sidecar tracking system is being phased out to be replaced by the SNARK-work-based uptime tracking system. Until further notice, please continue running the sidecar AND SNARK-based tracking system on the SAME node.
Please follow the latest updates and post questions in the #delegation-program channel on Mina Protocol Discord.
In order to maintain eligibility for various grants and the Mina Foundation Delegation Program, you must run a sidecar with your daemon to report node uptime.
If you are required to keep your node online for a grant or specific program, you must run a small sidecar program that will report your daemon's uptime. This tutorial will walk you through the process of installing, configuring and running the sidecar program.
Installation
The sidecar is a separate package that can be installed on Debian/Ubuntu or run along side a Docker solution.
Debian / Ubuntu
Install the sidecar package using the apt package manager.
sudo apt-get install -y mina-bp-stats-sidecar=1.3.0-9b0369c
This will install the following files:
/usr/local/bin/mina-bp-stats-sidecar
(the mina sidecar program)/etc/mina-sidecar.json
(the config file for the mina sidecar)/etc/systemd/system/mina-bp-stats-sidecar.service
(the systemd config to run it as a service)
We will need to update the config file with the correct parameters. So use your preferred editor to replace the contents of /etc/mina-sidecar.json
with the following:
{
"uploadURL": "https://us-central1-mina-mainnet-303900.cloudfunctions.net/block-producer-stats-ingest/?token=72941420a9595e1f4006e2f3565881b5",
"nodeURL": "http://127.0.0.1:3095"
}
Docker
If you are using docker, you can simply pull the latest image which we will run in the next section.
docker pull minaprotocol/mina-bp-stats-sidecar:latest
Next we will need to setup the config file, for this tutorial we will assume you are on a Linux based host system.
We will need to create a config file with the correct parameters. So use your preferred editor to replace the contents of ~/mina-sidecar-config.json
with the following:
{
"uploadURL": "https://us-central1-mina-mainnet-303900.cloudfunctions.net/block-producer-stats-ingest/?token=72941420a9595e1f4006e2f3565881b5",
"nodeURL": "http://mina:3095"
}
We will pass this file into the Docker container in the next step.
Usage
This sidecar will need to communicate with a running daemon, so you will first need to start your daemon. You will need to run the daemon with the flag --limited-graphql-port 3095
in order for the sidecar to be able to communicate with the daemon. Further instructions can be found on the connecting page.
Debian / Ubuntu
First ensure the daemon is running on the same machine with the flag --limited-graphql-port 3095
.
To (optionally) enable the sidecar service to run on reboot you can use:
sudo systemctl enable mina-bp-stats-sidecar
Then to manually start the sidecar service, use this command:
sudo service mina-bp-stats-sidecar start
From there you can check that it's running and see the most recent logs with service mina-bp-stats-sidecar status
If you want to get logs from the sidecar service, you can use journalctl
:
journalctl -f -u mina-bp-stats-sidecar.service
Docker
First you will need to create a network for the daemon and sidecar containers:
docker network create mina-network
Next you will need to start the daemon with --network mina-network
passed to docker, and some new flags --open-limited-graphql-port --limited-graphql-port 3095
passed to the daemon.
To start the sidecar container, simply use the following command:
docker run \
--name mina-sidecar \
--network mina-network \
--restart=always -d \
-v $(pwd)/mina-sidecar-config.json:/etc/mina-sidecar.json \
minaprotocol/mina-bp-stats-sidecar:latest
You can check the logs using the docker logs
command:
docker logs -f mina-sidecar
Troubleshooting
If you get a 400 while running your sidecar:
INFO:root:Fetching block 2136...
INFO:root:Got block data
ERROR:root:HTTP Error 400: Bad Request
-- TRACEBACK --
ERROR:root:Sleeping for 30s and trying again
It likely means you're shipping off data to the ingest pipeline without any block producer key configured on your Mina node - since your BP key is your identity we can't accept node data since we don't know who is submitting it!
Relevant Links
- Latest Release Notes for Mina Protocol
- Mina Foundation Delegation Policy
- O(1) Labs Delegation Policy
- Mina Docs: Mina Foundation Delegation Program
- Mina Docs: SNARK-based Uptime System
Need any help?
Post your questions in the #Delegation-Program channel on Mina Protocol Discord.