{"id":30715916,"url":"https://github.com/bryanlabs/icf-nodes","last_synced_at":"2026-07-06T11:31:43.610Z","repository":{"id":308062027,"uuid":"1031016379","full_name":"bryanlabs/icf-nodes","owner":"bryanlabs","description":"Bryanlabs // ICF 1 Month Enterprise Nodes and Monitoring 1 Month Trial","archived":false,"fork":false,"pushed_at":"2025-08-05T16:07:20.000Z","size":137,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-03T07:14:18.751Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://grafana-icf.bryanlabs.net/dashboards/f/aetxpsweyjchse/customer","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bryanlabs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-08-02T20:28:56.000Z","updated_at":"2025-08-05T16:07:23.000Z","dependencies_parsed_at":"2025-08-03T23:31:23.854Z","dependency_job_id":"54e141d1-8df8-4ff0-81a1-deb4a460dbee","html_url":"https://github.com/bryanlabs/icf-nodes","commit_stats":null,"previous_names":["bryanlabs/icf-node-benchmark"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/bryanlabs/icf-nodes","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bryanlabs%2Ficf-nodes","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bryanlabs%2Ficf-nodes/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bryanlabs%2Ficf-nodes/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bryanlabs%2Ficf-nodes/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bryanlabs","download_url":"https://codeload.github.com/bryanlabs/icf-nodes/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bryanlabs%2Ficf-nodes/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35189713,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-06T02:00:07.184Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-09-03T07:09:55.593Z","updated_at":"2026-07-06T11:31:43.580Z","avatar_url":"https://github.com/bryanlabs.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ICF Cosmos Node Infrastructure\n\n\n## 🎉 Welcome to Your Custom Cosmos Infrastructure\n\nYour Cosmos blockchain infrastructure is now live and optimized. We have deployed and fine-tuned three high-performance full nodes (Neutron, dYdX, and Pryzm) specifically configured for your requirements.\n\n\n## 📋 Available Endpoints\n\nAll endpoints are secured with TLS and accessible via:\n\n### 🔗 Neutron\n- **RPC:** [https://neutron-rpc.bryanlabs.net](https://neutron-rpc.bryanlabs.net)\n- **WSS:** [wss://neutron-rpc.bryanlabs.net/websocket](wss://neutron-rpc.bryanlabs.net/websocket)\n- **API:** [https://neutron-api.bryanlabs.net](https://neutron-api.bryanlabs.net)\n- **GRPC:** `neutron-grpc.bryanlabs.net:443`\n\n### 🔗 dYdX\n- **RPC:** [https://dydx-rpc.bryanlabs.net](https://dydx-rpc.bryanlabs.net)\n- **WSS:** [wss://dydx-rpc.bryanlabs.net/websocket](wss://dydx-rpc.bryanlabs.net/websocket)\n- **API:** [https://dydx-api.bryanlabs.net](https://dydx-api.bryanlabs.net)\n- **GRPC:** `dydx-grpc.bryanlabs.net:443`\n\n### 🔗 Pryzm\n- **RPC:** [https://pryzm-rpc.bryanlabs.net](https://pryzm-rpc.bryanlabs.net)\n- **WSS:** [wss://pryzm-rpc.bryanlabs.net/websocket](wss://pryzm-rpc.bryanlabs.net/websocket)\n- **API:** [https://pryzm-api.bryanlabs.net](https://pryzm-api.bryanlabs.net)\n- **GRPC:** `pryzm-grpc.bryanlabs.net:443`\n\n## 🏗️ Infrastructure Overview\n\n### Deployed Chains\n\n| Chain | SDK Version | Block Time | Status |\n|-------|-------------|------------|--------|\n| **Neutron** | v0.50.13-neutron-rpc | 1.1s | ✅ Optimized |\n| **dYdX** | v0.50.6-0.20250708185419 | 1.1s | ✅ Optimized |\n| **Pryzm** | v0.47.17 | 5.6s | ✅ Optimized |\n\n### Enterprise Network Infrastructure\n\nYour infrastructure is backed by enterprise-grade connectivity through our dedicated network infrastructure:\n\n**Network Specifications:**\n- **Autonomous System Number (ASN)**: [401711](https://whois.arin.net/rest/asn/AS401711) (ARIN registered)\n- **Service Level Agreement**: 99.9% uptime guarantee\n- **Port Speeds**: 1 Gbps to 100 Gbps capabilities\n- **Routing**: Multi-path routing for enhanced redundancy\n\n**Geographic Presence:**\n- **Primary Peering Hub**: Ashburn, VA (Equinix IX)\n- **Additional Locations**: Reston, VA • Baltimore, MD • Silver Spring, MD\n- **Operations Center**: 24/7 monitoring from Silver Spring, MD\n\n**Direct Peering Partners:**\n- **Cloud Providers**: AWS, Google Cloud, Microsoft Azure, IBM Cloud\n- **CDN Networks**: Cloudflare, Apple, Netflix, Meta, GitHub, Cisco\n- **Internet Exchanges**: Equinix IX (Ashburn), NYIIX, FCIX\n- **Satellite Connectivity**: SpaceX Starlink integration\n\n**Technical Advantage**: Enterprise-grade connectivity powered by DACS-IX peering fabric ensures optimal performance and redundancy for blockchain infrastructure.\n\n## 📊 Real-Time Monitoring \u0026 Analytics\n\nYour infrastructure includes a comprehensive monitoring stack built on enterprise-grade observability tools, providing complete visibility into node performance, network activity, storage utilization, and service health.\n\n### Monitoring Components\n\n**Core Stack:**\n- **Prometheus** - Metrics collection and time-series database\n- **Grafana** - Interactive dashboards and visualization\n- **Loki** - Log aggregation and search\n- **Node Exporters** - System-level metrics (CPU, memory, disk, network)\n- **CometBFT Exporters** - Blockchain-specific metrics (block height, sync status, peers)\n- **HAProxy Exporter** - Load balancer and service health metrics\n- **TopoLVM Exporter** - Storage volume monitoring\n\n**Key Features:**\n- **Dedicated Instance** - Your own isolated Grafana instance at `grafana-icf.bryanlabs.net`\n- **Real-time Metrics** - 30-second collection intervals for most metrics\n- **Interactive Dashboards** - Filter, search, and drill down into specific data\n- **Historical Data** - Full retention for performance trending analysis\n\n### 🎯 Key Dashboards\n\n#### 1. [HAProxy Services Dashboard](https://grafana-icf.bryanlabs.net/d/haproxy-overview-internal-icf/ha-proxy-overview-internal-icf?orgId=1\u0026from=now-6h\u0026to=now\u0026timezone=browser\u0026var-backend=$__all\u0026refresh=5s) **(Most Important)**\n**Purpose:** Real-time service health monitoring\n- ✅ **Service Status** - Up/down status for all RPC, API, and GRPC endpoints\n- 📊 **Request Activity** - Live traffic and request patterns per service\n- ⚠️ **Error Detection** - HTTP response codes and service issues\n- 👥 **Usage Analytics** - Which endpoints are being used and by whom\n- 🌐 **Session Tracking** - Connection data and bandwidth per service\n\n#### 2. [Node Performance Dashboard](https://grafana-icf.bryanlabs.net/d/cometbft-nodes-internal-icf/cometbft-nodes-dashboard-internal-icf?orgId=1\u0026from=now-6h\u0026to=now\u0026timezone=browser\u0026var-chain_id=pryzm-1\u0026var-instance=$__all\u0026var-search_term=\u0026refresh=30s)\n**Purpose:** Blockchain node health and synchronization\n- 🔄 **Sync Status** - Real-time block synchronization monitoring (positive = ahead, negative = behind)\n- 📊 **Block Monitoring** - Block production, validation, and processing times\n- 🔍 **Interactive Log Search** - Real-time log filtering and search capabilities\n- 👥 **Peer Connectivity** - Network peer status and connection health\n- 💫 **Transaction Monitoring** - Mempool status and transaction processing\n\n**⚠️ Important:** Select only ONE chain ID at a time, or dashboard queries will fail\n\n#### 3. [Storage Dashboard](https://grafana-icf.bryanlabs.net/d/topolvm-pvc-usage-icf/topolvm-and-pvc-usage-icf?orgId=1\u0026from=now-6h\u0026to=now\u0026timezone=browser\u0026var-pvc_filter=$__all\u0026refresh=30s)\n**Purpose:** Storage utilization and capacity planning\n- 💾 **Total Capacity** - 11.6TB total storage across high-performance NVMe drives\n- 📈 **Usage Trends** - Storage growth patterns per chain\n- ⚡ **Performance Metrics** - I/O performance and throughput\n- 📊 **Per-Chain Breakdown** - Storage allocation by blockchain\n\n#### 4. [Network Bandwidth Dashboard](https://grafana-icf.bryanlabs.net/d/k8s-network-dashboard-icf/f09f9a80-kubernetes-network-dashboard-icf?orgId=1\u0026from=now-6h\u0026to=now\u0026timezone=browser\u0026var-namespace=fullnodes\u0026refresh=5s)\n**Purpose:** Network utilization monitoring\n- 🌐 **Per-Chain Bandwidth** - Network usage by each blockchain\n- 📡 **Peer Synchronization** - Data transfer for blockchain synchronization\n- 📊 **Traffic Patterns** - Ingress/egress network patterns\n- ⚡ **Real-time Updates** - 5-second refresh for live network monitoring\n\n### 📈 Monitoring Benefits\n\n**Proactive Issue Detection:**\n- Sync lag alerts\n- Service health monitoring with immediate visibility\n\n**Performance Optimization:**\n- Monitor endpoint performance\n- Track resource utilization trends\n\n**Operational Excellence:**\n- 24/7 monitoring\n- Historical data\n- Complete transparency into infrastructure performance\n\n## 🎯 ICF Application Optimizations\n\nBased on your feedback about needing event indexing, week-long data retention, and heavy usage of `GetTxResponse`, `GetTxResponsesForEvent`, and `BankQueryBalance` endpoints, we've made specific optimizations to ensure optimal performance for your application.\n\n### 1. **Event Indexing Support** ✅\n**Your Need:** \"We rely on event indexing as well\"\n\n**Our Optimization:**\n```toml\n# Targeted event indexing for applications\nindex-events = [\n  \"tx\", \"message.action\", \"message.sender\", \"message.module\",\n  \"transfer.recipient\", \"transfer.sender\", \"transfer.amount\",\n  \"coin_spent.spender\", \"coin_received.receiver\", \"coin_received.amount\"\n]\n```\n\n**Why:** We've specifically configured indexing for the most common type of events applications need most, focusing on transfers, message routing, and balance changes rather than indexing everything. These optimizations can be adjusted as needed - see [Future Optimization Opportunities](#-future-optimization-opportunities) below for additional customization options.\n\n### 2. **Week-Long Data Retention** ✅\n**Your Need:** \"Would be great if we could retain a week of data\"\n\n**Our Optimization:**\n```toml\n# Custom pruning for 1-week retention (chain-specific)\npruning:\n  strategy: custom\n  keepRecent: 604800\n  interval: 5000\n  minRetainBlocks: 604800\n\n# For slower chains (6s blocks):\npruning-keep-recent = 100800   # 1 week at 6s blocks = 100,800 blocks\npruning-interval = 1000        # Less frequent pruning needed\n```\n\n**Why:** We pre-calculated exact block retention by analyzing the last 1000 blocks for each chain to determine average block times. Fast chains (1s blocks) need 604,800 blocks for one week, while slower chains (6s blocks) only need 100,800 blocks. This ensures precise 7-day data retention regardless of chain speed.\n\n### 3. **Optimized for Your Heavy-Use Endpoints** ✅\n**Your Need:** \"We use three endpoints heavily: GetTxResponse, GetTxResponsesForEvent, and BankQueryBalance\"\n\n**Our Optimizations:**\n\n**For GetTxResponse (Transaction Lookups):**\n```toml\n# Faster transaction queries\ninter-block-cache = true\niavl-cache-size = 3000000  # Optimized for 1s blocks\n```\n\n**For GetTxResponsesForEvent (Event-based Queries):**\n```toml\n# Faster event queries with proper indexing\nquery-gas-limit = 2000000000  # Handle complex event queries\n# + Event indexing configuration above\n```\n\n**For BankQueryBalance (Balance Queries):**\n```toml\n# IAVL optimizations for state queries\niavl-disable-fastnode = false  # Keep fastnode for faster balance lookups\niavl-lazy-loading = false      # Immediate loading for faster queries\n```\n\n### 4. **Addressing Performance Issues** ✅\n**Your Problem:** \"We've had issues with lagging nodes and general downtime\"\n\n**Our Optimizations:**\n\n**Mempool Optimization:**\n```toml\n[mempool]\nmax-txs = 15000\nrecheck = true\nkeep-invalid-txs-in-cache = false\nsize = 15000\nmax_txs_bytes = 1073741824\ncache_size = 30000\n```\n\n**Network Performance:**\n```toml\n# Fast chains (1s blocks) - optimized for high throughput\nsend_rate = 5120000\nrecv_rate = 5120000\ntimeout_broadcast_tx_commit = \"10s\"\n\n# Slower chains (6s blocks) - conservative settings\nsend_rate = 2048000\nrecv_rate = 2048000\ntimeout_broadcast_tx_commit = \"60s\"\n```\n\n**Connection Management:**\n```toml\n# Optimized for your current needs with room for growth\nmax_subscription_clients = 100\nmax_open_connections = 100\nexperimental_close_on_slow_client = true\n\n# API optimizations\nmax-open-connections = 1500\nrpc-read-timeout = 15\nrpc-write-timeout = 15\n```\n\n## 🚀 Future Optimization Opportunities\n\n### Range Query Enhancement\n\n**Current Status:** Infrastructure uses optimized exact height queries achieving \u003c50ms response times.\n\n**For Advanced Use Cases:** If applications require range queries (`tx.height\u003eX`), we can implement targeted optimizations. Several strategies available:\n\n1. **IAVL Cache Tuning** - Immediate performance boost\n2. **PostgreSQL Indexer** - Dramatic improvement for range queries\n3. **Selective Event Indexing** - Reduced index size optimization\n4. **Resource Scaling** - Enhanced compute if needed\n\n## 🔄 Continuous Improvement\n\nPlease let us know if you notice any issues or want different tuning - we'll update ASAP. We're confident that our deep knowledge of the Cosmos SDK and ability to iterate fast will ensure you're always able to query the data you need on the node in a timely manner that's always available.\n\n**Key Advantages:**\n- 🎯 **Targeted optimizations** based on your specific endpoints\n- ⚡ **Fast iteration** - changes deployed quickly\n- 📈 **Performance monitoring** via our benchmark tool\n- 🔧 **Resource efficient** - optimized for multi-chain environment\n- 📊 **Measurable results** - clear performance metrics\n\n## 🆘 Support \u0026 Contact\n\n### Getting Help\n\nIf you encounter any issues or have questions:\n\n1. **Telegram**: Contact Dan Bryan directly in our existing Telegram channel\n2. **GitHub Issues**: Create an issue in this repository and tag `@danb` - I'll resolve it promptly\n\n### Response Times\n\n- **Telegram**: Usually within a few hours during business hours\n- **GitHub Issues**: Typically resolved within 24 hours\n- **Critical Issues**: Immediate response via Telegram\n\n---\n\n## 🧪 Benchmark Tool - Validation \u0026 Testing\n\nAs part of your delivery, we've included a custom benchmark tool that validates the performance optimizations and confirms your infrastructure is operating at peak efficiency.\n\n### What the Benchmark Tests\n\nBased on your application requirements:\n\n1. **Data Retention** - Confirms 1+ week of historical blockchain data availability\n2. **GetTxResponse** - Individual transaction lookup latency and functionality\n3. **GetTxResponsesForEvent** - Event-based query performance + indexing verification\n4. **BankQueryBalance** - Account balance query response times\n5. **Event Indexing** - Validates application-relevant events are properly indexed\n6. **Protocol Coverage** - Tests RPC, REST API, and GRPC endpoints\n\n### Using the Benchmark Tool\n\n**Prerequisites:**\n- **Go 1.23+** - [Install Go](https://golang.org/doc/install)\n- **Git** - For cloning the repository\n\n**Installation \u0026 Usage:**\n\n```bash\n# Clone the repository\ngit clone https://github.com/bryanlabs/icf-nodes\ncd icf-nodes\n\n# Build both tools\nmake build\n\n# Test individual chains with benchmark tool\n./benchmark neutron\n./benchmark dydx\n./benchmark pryzm\n\n# Test all enabled chains\n./benchmark all\n\n# Or run directly with Go\ngo run ./cmd/benchmark all\n\n# Run stress tests\n./stress neutron 100 60  # 100 workers for 60 seconds\ngo run ./cmd/stress pryzm 50 30  # Or run directly\n```\n\n**Configuration:**\n\nThe benchmark tool uses the included `config.yaml` file which defines:\n- **Chain endpoints** (RPC, API, GRPC, WebSocket URLs)\n- **Block times** (pre-calculated from chain analysis)\n- **Performance thresholds** (pass/warn/fail criteria)\n- **Chain-specific optimizations** (SDK versions, query styles)\n\n### Development with VS Code\n\nThis repository includes two separate testing tools:\n- **cmd/benchmark/** - Performance benchmarking tool\n- **cmd/stress/** - Aggressive load testing tool\n\nThe tools are organized in separate directories to avoid naming conflicts:\n\n```bash\n# Build both tools\nmake build\n\n# Run the benchmark tool\nmake benchmark ARGS=neutron\n# or directly:\ngo run ./cmd/benchmark neutron\n./benchmark neutron  # If already built\n\n# Run the stress test tool\nmake stress ARGS='neutron 100 60'\n# or directly:\ngo run ./cmd/stress neutron 100 60\n./stress neutron 100 60  # If already built\n```\n\n**Project Structure:**\n```\nicf-nodes/\n├── cmd/\n│   ├── benchmark/\n│   │   └── main.go    # Benchmark tool\n│   └── stress/\n│       └── main.go    # Stress test tool\n├── config.yaml        # Benchmark configuration\n├── stress-config.yaml # Stress test configuration\n└── Makefile          # Build automation\n```\n\n---\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbryanlabs%2Ficf-nodes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbryanlabs%2Ficf-nodes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbryanlabs%2Ficf-nodes/lists"}