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 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:
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:
#!/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:
#!/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
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:
- Check network connectivity: Ensure internet access and HTTPS traffic is allowed
- Verify URLs: Confirm you're using the correct node URLs
- Test manually: Try accessing the URLs in a browser
- Check node status: Verify the node is responding to queries
API Errors
Common API issues:
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/
#!/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)
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:
- Access the private repository:
https://github.com/o1-labs/gitops-infrastructure - Create a new branch for your changes
- Edit:
applications/auto-deployed/mina-rust-standard-bps.yaml - Update the
MINA_RUST_TAGvariable to the desired commit or release tag (must be available as a Docker image on DockerHub) - Create a pull request with your changes
- Ask the platform lead or rust node team lead to review and merge the PR
- Once merged, ArgoCD will automatically deploy the update
Reference Information
Related Documentation
- Plain Nodes - API access nodes
- Seed Nodes - P2P network bootstrap nodes
- Archive Nodes - Historical data access
- Frontend - Web interface deployment
- GraphQL API - Complete API documentation