Skip to main content

Block Producers

o1Labs maintains block producer node infrastructure that actively participates in the Mina Rust network consensus. These nodes provide HTTP endpoints for network interaction.

Block Production Under Development

Block production functionality is currently under development and pending testing and release. These nodes currently operate as network participants with GraphQL API access.

Available Block Producer Nodes

The following block producer nodes are officially maintained by o1Labs:

website/docs/developers/scripts/infrastructure/block-producer-nodes.txt
https://mina-rust-bp-1.gcp.o1test.net/
https://mina-rust-bp-2.gcp.o1test.net/

Node Information

  • Availability: Maintained 24/7 by o1Labs
  • Purpose: Network consensus participation (block production under development)
  • Location: Google Cloud Platform (GCP)
  • Additional Features: GraphQL API access for network queries

Using Block Producer Nodes

Latest canonical block information

Query the latest canonical block to get block height, state hash, and block creator:

website/docs/developers/scripts/infrastructure/query-best-chain-block.sh
#!/bin/bash
# Usage: $0 GRAPHQL_ENDPOINT
# GRAPHQL_ENDPOINT: GraphQL endpoint URL (required, must end with /graphql)
# Example: https://mina-rust-bp-1.gcp.o1test.net/graphql

if [ -z "$1" ]; then
echo "Error: GRAPHQL_ENDPOINT is required"
echo "Usage: $0 GRAPHQL_ENDPOINT"
exit 1
fi

GRAPHQL_ENDPOINT="$1"

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# Read the query and create JSON payload using jq for proper escaping
QUERY=$(< "$SCRIPT_DIR/queries/best-chain-block.graphql")
JSON_PAYLOAD=$(echo "{}" | jq --arg query "$QUERY" '.query = $query')
curl -s -X POST "$GRAPHQL_ENDPOINT" \
-H "Content-Type: application/json" \
-d "$JSON_PAYLOAD"

Transaction information

Check transactions in the latest block:

website/docs/developers/scripts/infrastructure/query-best-chain-transactions.sh
#!/bin/bash
# Usage: $0 GRAPHQL_ENDPOINT
# GRAPHQL_ENDPOINT: GraphQL endpoint URL (required, must end with /graphql)
# Example: https://mina-rust-bp-1.gcp.o1test.net/graphql

if [ -z "$1" ]; then
echo "Error: GRAPHQL_ENDPOINT is required"
echo "Usage: $0 GRAPHQL_ENDPOINT"
exit 1
fi

GRAPHQL_ENDPOINT="$1"

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# Read the query and create JSON payload using jq for proper escaping
QUERY=$(< "$SCRIPT_DIR/queries/best-chain-transactions.graphql")
JSON_PAYLOAD=$(echo "{}" | jq --arg query "$QUERY" '.query = $query')
curl -s -X POST "$GRAPHQL_ENDPOINT" \
-H "Content-Type: application/json" \
-d "$JSON_PAYLOAD"

API Capabilities

Blockchain Queries

  • Block information: Current and historical blocks
  • Transaction data: Transaction status and history
  • Account balances: Account information and balances
  • Network state: Consensus and sync status

Network Monitoring

  • Peer connections: Current peer list and status
  • Sync progress: Blockchain synchronization state
  • Protocol information: Network protocol version and chain ID
API Documentation

For complete API documentation, see the GraphQL API documentation which provides detailed information about available queries and mutations.

Troubleshooting

Connection Issues

If you cannot connect to block producer nodes:

  1. Check network connectivity: Ensure internet access and HTTPS traffic is allowed
  2. Verify URLs: Confirm you're using the correct node URLs
  3. Test manually: Try accessing the URLs in a browser
  4. Check node status: Verify the node is responding to queries

API Errors

Common API issues:

GraphQL Endpoint URL Format

When using block producer node endpoints, always include /graphql at the end of the URL. The endpoint will return "HTTP method not allowed" if you omit the /graphql path.

Correct: https://mina-rust-bp-1.gcp.o1test.net/graphql

Incorrect: https://mina-rust-bp-1.gcp.o1test.net/

website/docs/developers/scripts/infrastructure/test-graphql-endpoint.sh
#!/bin/bash
# Usage: $0 GRAPHQL_ENDPOINT
# GRAPHQL_ENDPOINT: GraphQL endpoint URL (required, must end with /graphql)
# Example: https://mina-rust-plain-2.gcp.o1test.net/graphql

if [ -z "$1" ]; then
echo "Error: GRAPHQL_ENDPOINT is required"
echo "Usage: $0 GRAPHQL_ENDPOINT"
exit 1
fi

GRAPHQL_ENDPOINT="$1"

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# Read the query and create JSON payload using jq for proper escaping
QUERY=$(< "$SCRIPT_DIR/queries/schema-introspection.graphql")
JSON_PAYLOAD=$(echo "{}" | jq --arg query "$QUERY" '.query = $query')
curl -s -X POST "$GRAPHQL_ENDPOINT" \
-H "Content-Type: application/json" \
-d "$JSON_PAYLOAD"

Updates and Maintenance

Infrastructure Updates

o1Labs maintains these block producer nodes with:

  • Regular updates: Nodes are kept current with latest releases
  • Monitoring: 24/7 health monitoring and alerting
  • Load balancing: Multiple nodes ensure continuous availability
  • Performance optimization: Regular performance tuning

Communication

Infrastructure maintenance and updates are communicated through:

  • GitHub release notes
  • Project documentation updates
  • Community announcements

Deployment (o1Labs Employees Only)

o1Labs Employees Only

This section is for o1Labs employees only. If you do not have access to the required repositories, contact the platform lead.

o1Labs uses ArgoCD to maintain the infrastructure through GitOps.

To update the block producer nodes infrastructure:

  1. Access the private repository: https://github.com/o1-labs/gitops-infrastructure
  2. Create a new branch for your changes
  3. Edit: applications/auto-deployed/mina-rust-standard-bps.yaml
  4. Update the MINA_RUST_TAG variable to the desired commit or release tag (must be available as a Docker image on DockerHub)
  5. Create a pull request with your changes
  6. Ask the platform lead or rust node team lead to review and merge the PR
  7. Once merged, ArgoCD will automatically deploy the update

Reference Information