Plain Nodes
o1Labs maintains plain node infrastructure that provides HTTP endpoints for interacting with the Mina Rust network. These nodes offer API access and network information without requiring direct peer-to-peer connections.
Available Plain Nodes
The following plain nodes are officially maintained by o1Labs:
http://mina-rust-plain-1.gcp.o1test.net/
http://mina-rust-plain-2.gcp.o1test.net/
http://mina-rust-plain-3.gcp.o1test.net/
Node Information
- Availability: Maintained 24/7 by o1Labs
- Purpose: API access and network queries
- Location: Google Cloud Platform (GCP)
Using Plain Nodes
GraphQL API Access
Plain nodes provide GraphQL API endpoints for querying network state:
#!/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/daemon-status.graphql")
JSON_PAYLOAD=$(echo "{}" | jq --arg query "$QUERY" '.query = $query')
curl -s -X POST "$GRAPHQL_ENDPOINT" \
-H "Content-Type: application/json" \
-d "$JSON_PAYLOAD"
Network Information
You can query various network information:
#!/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/block-height.graphql")
JSON_PAYLOAD=$(echo "{}" | jq --arg query "$QUERY" '.query = $query')
curl -s -X POST "$GRAPHQL_ENDPOINT" \
-H "Content-Type: application/json" \
-d "$JSON_PAYLOAD"
#!/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/peers.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 plain nodes:
- Check network connectivity: Ensure internet access and HTTP 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 plain 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-plain-2.gcp.o1test.net/graphql
Incorrect: https://mina-rust-plain-2.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 plain 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 plain 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-seeds.yaml
- Update the
MINA_RUST_TAG
variable 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
- Seed Nodes - P2P network bootstrap nodes
- Archive Nodes - Historical data access
- Frontend - Web interface deployment
- GraphQL API - Complete API documentation