### Setup Local PostgreSQL Database for Development Source: https://github.com/aboutcircles/circles-nethermind-plugin/blob/dev/DEVELOPMENT.md Instructions for setting up a local PostgreSQL database, either via Docker Compose or local installation. This is a prerequisite for local development. ```bash # Option 1: Use docker compose (PostgreSQL only) docker compose -f docker/docker-compose.gnosis.yml up -d postgres-gnosis # Option 2: Install PostgreSQL locally # brew install postgresql@15 # macOS # sudo apt install postgresql-15 # Ubuntu # Then create database: createdb circles ``` -------------------------------- ### Quick Start: Partial Table Backfill with docker-backfill.sh Source: https://github.com/aboutcircles/circles-nethermind-plugin/blob/dev/docs/partial-table-reindexing.md This script provides a quick start guide for performing partial table backfills. It involves stopping the indexer, listing available tables, running the backfill for specified tables and a starting block, and then re-enabling the indexer. Ensure the .env file is properly configured. ```bash # 1. Ensure indexer is stopped (set CIRCLES_PLUGIN_DISABLED=true in .env) ./scripts/docker-run.sh gnosis up -d nethermind-gnosis # 2. List available tables ./scripts/docker-backfill.sh list-tables # 3. Run backfill for specific tables ./scripts/docker-backfill.sh backfill \ -t CrcV2_PaymentGateway_GatewayCreated \ CrcV2_PaymentGateway_PaymentReceived \ CrcV2_PaymentGateway_TrustUpdated \ -f 43610000 # 4. Re-enable indexer (set CIRCLES_PLUGIN_DISABLED=false in .env) ./scripts/docker-run.sh gnosis up -d nethermind-gnosis ``` -------------------------------- ### Workflow Customization: Setup .NET Version (YAML) Source: https://github.com/aboutcircles/circles-nethermind-plugin/blob/dev/docs/ci-cd.md Example of how to customize the .NET version used in a GitHub Actions workflow. This snippet shows the 'setup-dotnet' action and how to specify the desired 'dotnet-version'. ```yaml # In workflow files - name: Setup .NET uses: actions/setup-dotnet@v4 with: dotnet-version: '8.0.x' # Change this ``` -------------------------------- ### GitHub Actions CI/CD Pipeline Example Source: https://github.com/aboutcircles/circles-nethermind-plugin/blob/dev/DEVELOPMENT.md An example GitHub Actions workflow for building and testing the project. It checks out the code, sets up the .NET environment, builds and tests all projects, and publishes packages to NuGet if the build is on the main branch. ```yaml name: Build and Test on: [push, pull_request] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-dotnet@v4 with: dotnet-version: '10.0.x' - name: Build and Test run: ./scripts/build-all.sh --all - name: Publish Packages if: github.ref == 'refs/heads/main' env: NUGET_API_KEY: ${{ secrets.NUGET_API_KEY }} run: ./scripts/nuget-push.sh --yes ``` -------------------------------- ### Install Git Hooks Source: https://github.com/aboutcircles/circles-nethermind-plugin/blob/dev/DEVELOPMENT.md Installs pre-push Git hooks to automate linting and build checks before pushing code. This ensures code quality and consistency. ```bash make setup-hooks ``` -------------------------------- ### Get Token Balances (Bash) Source: https://github.com/aboutcircles/circles-nethermind-plugin/blob/dev/src/Cache/README.md Example using curl to fetch all token balances for a given address from the REST API. Assumes the service is running on the default port. ```bash curl http://localhost:5002/api/balances/0xde374ece6fa50e781e81aac78e811b33d16912c7 ``` -------------------------------- ### Local Development Setup for Index Plugin Source: https://github.com/aboutcircles/circles-nethermind-plugin/blob/dev/src/Index/README.md This bash script outlines the steps for setting up and running the Circles Index Plugin in a local development environment. It covers starting PostgreSQL, building and running Nethermind with the plugin, and optionally setting a custom Nethermind source directory. ```bash # 1. Start PostgreSQL docker compose -f docker/docker-compose.gnosis.yml up -d postgres-gnosis # 2. Build and run Nethermind with plugin ./scripts/run-index.sh # Optional: Set custom Nethermind source NETHERMIND_SOURCE=~/path/to/nethermind ./scripts/run-index.sh ``` -------------------------------- ### Configure Local Development Environment Variables Source: https://github.com/aboutcircles/circles-nethermind-plugin/blob/dev/DEVELOPMENT.md Copies the example environment file and allows customization for local development. The `source .env.local` command loads these variables for the current session. ```bash cp .env.example .env.local # Edit .env.local with your settings source .env.local ./scripts/run-pathfinder.sh ``` -------------------------------- ### Example cURL Request for circlesV2_findPath Source: https://github.com/aboutcircles/circles-nethermind-plugin/blob/dev/src/Rpc/Circles.Rpc.Host/README.md Shows a cURL example for the `circlesV2_findPath` method, demonstrating how to specify source, sink, and target flow for pathfinding. ```bash curl -X POST http://localhost:8081 -H 'Content-Type: application/json' -d '{ "jsonrpc": "2.0", "method": "circlesV2_findPath", "params": [{ "source": "0xsource...", "sink": "0xsink...", "targetFlow": "1000000000000000000" }], "id": 1 }' ``` -------------------------------- ### Prometheus Cache Metrics Example (PromQL) Source: https://github.com/aboutcircles/circles-nethermind-plugin/blob/dev/src/Cache/API_REFERENCE.md This example shows Prometheus metrics for the Circles cache service. It includes help text for total cache entries and response time histogram, along with sample data for the response time buckets. ```promql # HELP circles_cache_entries_total Total number of cached entries # HELP circles_cache_response_time_seconds Response time histogram circles_cache_response_time_seconds_bucket{endpoint="/api/balances",le="0.01"} 40000 ``` -------------------------------- ### Start Caddy Services with Docker Compose Source: https://github.com/aboutcircles/circles-nethermind-plugin/blob/dev/docs/reverse-proxy.md This bash script snippet demonstrates how to navigate to the docker directory, set the domain environment variable (or use localhost for local development), and start all services including Caddy using docker compose. ```bash cd docker # Set your domain (or use localhost for local development) export DOMAIN=circles.example.com # Start all services docker compose -f docker-compose.caddy.yml up -d ``` -------------------------------- ### Make Commands Quick Reference (Bash) Source: https://github.com/aboutcircles/circles-nethermind-plugin/blob/dev/docs/ci-cd.md A comprehensive list of available 'make' commands for the project, including descriptions for building, testing, cleaning, Docker operations, NuGet packaging, and release workflows. ```bash make help # Show all commands make build # Build solution make test # Run tests make test-coverage # Run tests with coverage make clean # Clean build artifacts make docker # Build Docker images make docker-up # Start Docker services make docker-down # Stop Docker services make pack # Create NuGet packages make push # Push NuGet packages make all # Build, test, pack make release # Build, test, pack, push ``` -------------------------------- ### Startup Sequence (Text) Source: https://github.com/aboutcircles/circles-nethermind-plugin/blob/dev/src/Cache/README.md Illustrates the sequence of operations performed by the service during startup. This includes loading settings, initializing caches, starting warmup and notification services, and finally marking the service as ready. ```text ┌─────────────────────────────────────────────────────────────┐ │ 1. Load Settings from Environment │ │ 2. Initialize CacheContainer (create all RollbackCaches) │ │ 3. Start CacheWarmupService │ │ ├─ Set warmup target block (current DB head) │ │ ├─ Load V1 Avatars & Token Owners │ │ ├─ Load V1 Balances from database views │ │ ├─ Load V2 Avatars & Groups │ │ ├─ Load V2 Balances from database views │ │ ├─ Load Profile CIDs and Short Names │ │ ├─ Build Secondary Indexes (address → token mappings) │ │ ├─ Initialize BlockRingBuffer with recent blocks │ │ ├─ Process any blocks that arrived during warmup │ │ └─ Mark warmup complete │ │ 4. Start NotificationListenerService │ │ ├─ Wait for warmup to complete │ │ ├─ Connect to PostgreSQL LISTEN channel │ │ └─ Begin processing notification pings │ │ 5. Start MetricsUpdateService │ │ 6. Service Ready (returns 200 on /ready) │ └─────────────────────────────────────────────────────────────┘ ``` -------------------------------- ### Example Log Output During Reindexing Source: https://github.com/aboutcircles/circles-nethermind-plugin/blob/dev/docs/partial-table-reindexing.md This is an example of the expected log output when the reindexing process is active. It shows the start of the reindexing operation from a specific block, the number of rows deleted from various tables, and the completion message indicating that data deletion is finished and synchronization will commence from the specified block. ```text [REINDEX] Reindexing ALL tables from block 43,610,000 Deleted 1234 rows from CrcV2_PaymentGateway_GatewayCreated ... [REINDEX] Data deletion complete. Will resync from specified block. ``` -------------------------------- ### Start Gnosis Mainnet with Docker Compose Source: https://github.com/aboutcircles/circles-nethermind-plugin/blob/dev/DEVELOPMENT.md Starts the Gnosis mainnet services using Docker Compose. This command brings up Nethermind with the Circles plugin, PostgreSQL, and the consensus layer. ```bash docker compose -f docker/docker-compose.gnosis.yml up -d ``` -------------------------------- ### Run Specific Project Tests (Bash) Source: https://github.com/aboutcircles/circles-nethermind-plugin/blob/dev/docs/testing.md Demonstrates how to run tests for a particular project by passing its name as an argument to the test script. Examples include 'pathfinder', 'cache', 'rpc', and 'index'. ```bash ./scripts/test.sh pathfinder ./scripts/test.sh cache ./scripts/test.sh rpc ./scripts/test.sh index ``` -------------------------------- ### Set Up .env File for Node Configuration Source: https://github.com/aboutcircles/circles-nethermind-plugin/blob/dev/README.md Copies the example environment file to `.env` and suggests adjustments for PostgreSQL password and user/group IDs. This file configures node settings. ```bash cp .env.example .env ``` -------------------------------- ### Get Avatar Info (Bash) Source: https://github.com/aboutcircles/circles-nethermind-plugin/blob/dev/src/Cache/README.md Example using curl to fetch avatar information for a given address from the REST API. Assumes the service is running on the default port. ```bash curl http://localhost:5002/api/avatars/0xde374ece6fa50e781e81aac78e811b33d16912c7 ``` -------------------------------- ### Using Cache Service for Pathfinder Balance Lookups Source: https://github.com/aboutcircles/circles-nethermind-plugin/blob/dev/src/Cache/README.md Demonstrates how to use the Cache Service to retrieve source address balances, which can then be used by the Pathfinder service to find optimal transaction paths. ```bash # 1. Get source address balances from cache curl http://localhost:5002/api/balances/0xsource.../ # 2. Use pathfinder to find path curl -X POST http://localhost:8080/flow -d '{ "source": "0xsource...", "sink": "0xsink...", "targetFlow": "1000000000000000000" }' ``` -------------------------------- ### Get Profile Content (Bash) Source: https://github.com/aboutcircles/circles-nethermind-plugin/blob/dev/src/Cache/README.md Example using curl to fetch IPFS profile content (JSON payload) by its CID from the REST API. The content is served from an LRU cache. ```bash GET /api/profiles/content/{cid} ``` -------------------------------- ### Plugin Initialization Steps Source: https://github.com/aboutcircles/circles-nethermind-plugin/blob/dev/src/Index/README.md Outlines the sequence of operations performed during the initialization of the Nethermind plugin. This includes loading settings, establishing database connections, running migrations, initializing parsers, and starting key components like the StateMachine. ```csharp // Plugin.cs - Init() 1. Load settings from environment variables 2. Connect to PostgreSQL database 3. Run database migrations (create tables/indexes) 4. Initialize all log parsers (V1, V2, Safe, etc.) 5. Create Sink for batch writing 6. Start StateMachine 7. Start IPFS profile downloader ``` -------------------------------- ### Get Profile CID (Bash) Source: https://github.com/aboutcircles/circles-nethermind-plugin/blob/dev/src/Cache/README.md Example using curl to retrieve the IPFS CID for a given avatar's profile from the REST API. Assumes the service is running on the default port. ```bash curl http://localhost:5002/api/profiles/0xde374ece6fa50e781e81aac78e811b33d16912c7/cid ``` -------------------------------- ### Quick Reference Commands Source: https://github.com/aboutcircles/circles-nethermind-plugin/blob/dev/src/Index/Circles.Index.Profiles/manual.md A collection of essential command-line tools for operating the Circles Nethermind plugin. Includes commands for starting the application, monitoring throughput, checking the queue status via psql, and gracefully stopping the process. ```bash dotnet run -c Release # start ``` ```bash tail -f logs | grep STATS # throughput snapshot ``` ```bash psql -c "SELECT status, COUNT(*) FROM ipfs_queue GROUP BY 1;" # queue overview ``` ```bash kill -TERM # graceful stop ``` -------------------------------- ### Local Development Build and Test Commands (Make) Source: https://github.com/aboutcircles/circles-nethermind-plugin/blob/dev/docs/ci-cd.md A collection of 'make' commands for local development, including building the project, running tests with and without coverage, cleaning build artifacts, and managing Docker containers. ```bash # Build make build # Test make test make test-coverage # Clean make clean # Docker make docker make docker-up make docker-down make docker-logs # NuGet make pack make push # Full release workflow make release ``` -------------------------------- ### Get Profile CID Batch (Bash) Source: https://github.com/aboutcircles/circles-nethermind-plugin/blob/dev/src/Cache/README.md Example using curl to send a POST request to retrieve IPFS CIDs for multiple addresses in a batch. Limits to 100 addresses per request. ```bash curl -X POST http://localhost:5002/api/profiles/cid/batch \ -H 'Content-Type: application/json' \ -d '{"addresses": ["0xaddr1...", "0xaddr2..."]}' ``` -------------------------------- ### Run Circles Cache Service Locally (Bash) Source: https://github.com/aboutcircles/circles-nethermind-plugin/blob/dev/src/Cache/README.md Instructions to set up environment variables and run the Circles Cache Service locally using dotnet run or a provided script. Assumes PostgreSQL is running. ```bash # Set required environment variables export POSTGRES_CONNECTION_STRING="Host=localhost;Port=5432;Database=postgres;Username=postgres;Password=postgres" export POSTGRES_READONLY_CONNECTION_STRING="${POSTGRES_CONNECTION_STRING}" # Run the service cd src/Cache/Circles.Cache.Service dotnet run # Or use script (if available) ./scripts/run-cache.sh ``` -------------------------------- ### Get Avatar Info Batch (Bash) Source: https://github.com/aboutcircles/circles-nethermind-plugin/blob/dev/src/Cache/README.md Example using curl to send a POST request to fetch avatar information for multiple addresses in a batch. Limits to 100 addresses per request. ```bash curl -X POST http://localhost:5002/api/avatars/batch \ -H 'Content-Type: application/json' \ -d '{"addresses": ["0xde374ece6fa50e781e81aac78e811b33d16912c7", "0x1234567890123456789012345678901234567890"]}' ``` -------------------------------- ### O(1) Balance Query with Secondary Indexes in C# Source: https://github.com/aboutcircles/circles-nethermind-plugin/blob/dev/src/Cache/README.md This C# example demonstrates how to implement O(1) balance queries using primary and secondary indexes. It shows the structure of the cache (address:tokenId -> balance) and the secondary index (address -> set of tokenIds) for efficient lookups. ```csharp // Primary cache: "address:tokenId" → balance V1BalancesByAccountAndToken["0xabc:0xtoken1"] = 100.5m; V2BalancesByAccountAndToken["0xabc:0xtoken2"] = 50.25m; // Secondary index: address → set of tokenIds _v1BalancesByAddress["0xabc"] = {"0xtoken1", "0xtoken3"}; _v2BalancesByAddress["0xabc"] = {"0xtoken2", "0xtoken5"}; // Query: Get all tokens for address (O(1) set lookup) var tokens = GetTokenIdsForAddress("0xabc", isV1: true); // Returns: {"0xtoken1", "0xtoken3"} // Then lookup each balance (O(1) dictionary lookup per token) foreach (var token in tokens) { var balance = V1BalancesByAccountAndToken[$"0xabc:{token}"]; } ``` -------------------------------- ### Get Total Token Balance (Bash) Source: https://github.com/aboutcircles/circles-nethermind-plugin/blob/dev/src/Cache/README.md Example using curl to fetch the total token balance (all versions) for a given address from the REST API. Assumes the service is running on the default port. ```bash curl http://localhost:5002/api/balances/0xde374ece6fa50e781e81aac78e811b33d16912c7/total ``` -------------------------------- ### Run Circles Nethermind Plugin Locally with Docker Source: https://context7.com/aboutcircles/circles-nethermind-plugin/llms.txt This section provides a quick start guide for running the full Circles stack locally using Docker. It covers cloning the repository, setting up a JWT secret for the consensus layer, configuring environment variables, and starting, viewing logs, and stopping the services. ```bash # Clone and setup git clone https://github.com/aboutcircles/circles-nethermind-plugin.git cd circles-nethermind-plugin # Create JWT secret for consensus layer mkdir -p ./.state/jwtsecret-gnosis openssl rand -hex 32 > ./.state/jwtsecret-gnosis/jwt.hex # Setup environment cp .env.example .env # Edit .env with your settings (POSTGRES_PASSWORD, etc.) # Start full stack (Nethermind + PostgreSQL + Lighthouse consensus) docker compose -f docker/docker-compose.gnosis.yml up -d # View logs docker compose -f docker/docker-compose.gnosis.yml logs -f # Or use convenience scripts ./scripts/docker-run.sh gnosis # Start ./scripts/docker-run.sh gnosis logs -f # Follow logs ./scripts/docker-run.sh gnosis down # Stop # Run individual services locally (for development) ./scripts/run-pathfinder.sh # http://localhost:8080 ./scripts/run-rpc.sh # http://localhost:8081 ./scripts/run-cache-service.sh # http://localhost:3001 ``` -------------------------------- ### Build Cache Service (Bash) Source: https://github.com/aboutcircles/circles-nethermind-plugin/blob/dev/src/Cache/README.md Navigates to the cache service directory and builds the .NET project. This command assumes the .NET 9.0 SDK and other prerequisites are installed. ```bash cd src/Cache/Circles.Cache.Service dotnet build ``` -------------------------------- ### Get Total Token Balance V1 (Bash) Source: https://github.com/aboutcircles/circles-nethermind-plugin/blob/dev/src/Cache/README.md Example using curl to fetch the total token balance (V1 only) for a given address from the REST API. Assumes the service is running on the default port. ```bash curl http://localhost:5002/api/balances/0xde374ece6fa50e781e81aac78e811b33d16912c7/total/v1 ``` -------------------------------- ### Get Invitation Origin Request (Bash) Source: https://github.com/aboutcircles/circles-nethermind-plugin/blob/dev/docs/rpc-reference.md Example of how to call the `circles_getInvitationOrigin` RPC method using curl. This demonstrates the request structure, including the method name and parameters. ```bash curl -X POST http://localhost:8081 \ -H "Content-Type: application/json" \ -d '{ "jsonrpc": "2.0", "id": 1, "method": "circles_getInvitationOrigin", "params": ["0xde374ece6fa50e781e81aac78e811b33d16912c7"] }' ``` -------------------------------- ### Readiness Check (Shell) Source: https://github.com/aboutcircles/circles-nethermind-plugin/blob/dev/src/Cache/README.md Checks if the service is ready to handle requests. It returns 200 OK if warmup is complete, the listener is connected, and cache lag is within acceptable limits. Otherwise, it returns 503 Service Unavailable. ```shell curl http://localhost:5002/ready ``` -------------------------------- ### Run Pathfinder and RPC Services Locally Source: https://github.com/aboutcircles/circles-nethermind-plugin/blob/dev/DEVELOPMENT.md Starts the Pathfinder and RPC services in separate terminals. These services are essential for interacting with the blockchain and are typically run during local development. ```bash Terminal 1 - Pathfinder: ./scripts/run-pathfinder.sh # Listening on http://localhost:8080 Terminal 2 - RPC: ./scripts/run-rpc.sh # Listening on http://localhost:8081 ``` -------------------------------- ### Integrate Cache Service with RPC Service (Bash) Source: https://github.com/aboutcircles/circles-nethermind-plugin/blob/dev/src/Cache/API_REFERENCE.md This bash script demonstrates how to set environment variables to enable and configure the cache service for the RPC service. It then starts the RPC service, after which RPC calls will automatically utilize the cache. ```bash # Set environment variables export USE_CACHE_SERVICE=true export CACHE_SERVICE_URL=http://localhost:3001 # Start RPC service ./scripts/run-rpc.sh # RPC calls will automatically use cache curl -X POST http://localhost:8081 \ -H "Content-Type: application/json" \ -d '{ "jsonrpc": "2.0", "id": 1, "method": "circles_getTotalBalance", "params": ["0xde374ece6fa50e781e81aac78e811b33d16912c7", 0] }' ``` -------------------------------- ### Docker Compose Operations Source: https://github.com/aboutcircles/circles-nethermind-plugin/blob/dev/DEVELOPMENT.md Manages the lifecycle of services using Docker Compose. This includes starting networks, following logs, and stopping services. Supports Gnosis mainnet. ```bash ./scripts/docker-run.sh gnosis ./scripts/docker-run.sh gnosis logs -f ./scripts/docker-run.sh gnosis down ``` -------------------------------- ### Comparing RPC Service and Cache Service for Balance Queries Source: https://github.com/aboutcircles/circles-nethermind-plugin/blob/dev/src/Cache/README.md Illustrates the difference between querying balances using the RPC service (database mode) and the Cache Service (in-memory mode). The Cache Service offers faster, near real-time queries suitable for user-facing applications. ```bash # RPC Service (database mode - slower but always current) curl -X POST http://localhost:8081 -H 'Content-Type: application/json' -d '{ "jsonrpc": "2.0", "method": "circles_getTotalBalance", "params": ["0xaddr..."], "id": 1 }' # Cache Service (in-memory - faster, near real-time) curl http://localhost:5002/api/balances/0xaddr.../total ``` -------------------------------- ### Run All Unit Tests (Bash) Source: https://github.com/aboutcircles/circles-nethermind-plugin/blob/dev/docs/testing.md Command to execute all unit tests for the project. This is a fast process as it does not require any external dependencies. ```bash ./scripts/test.sh ``` -------------------------------- ### Test Cache Service Endpoints (Bash) Source: https://github.com/aboutcircles/circles-nethermind-plugin/blob/dev/src/Cache/README.md Demonstrates how to run the cache service and test its API endpoints using `curl`. Includes checks for live, ready, cache stats, and specific balance lookups. ```bash # Run service dotnet run # Test endpoints curl http://localhost:5002/live curl http://localhost:5002/ready curl http://localhost:5002/cache/stats curl http://localhost:5002/api/balances/0xde374ece6fa50e781e81aac78e811b33d16912c7/total ``` -------------------------------- ### Convenience Script for Gnosis Mainnet Docker Operations Source: https://github.com/aboutcircles/circles-nethermind-plugin/blob/dev/DEVELOPMENT.md Provides convenience scripts to manage the Gnosis mainnet Docker environment. Supports starting, viewing logs, and stopping services. ```bash ./scripts/docker-run.sh gnosis # Start ./scripts/docker-run.sh gnosis logs -f # View logs ./scripts/docker-run.sh gnosis down # Stop ``` -------------------------------- ### Find Groups with Optional Filters (JSON-RPC) Source: https://context7.com/aboutcircles/circles-nethermind-plugin/llms.txt This example shows how to find groups using the 'circles_findGroups' method. It demonstrates using optional filters, such as filtering groups by name starting with a specific string. ```bash curl -X POST https://rpc.aboutcircles.com/ \ -H "Content-Type: application/json" \ -d '{ "jsonrpc": "2.0", "id": 1, "method": "circles_findGroups", "params": [25, {"nameStartsWith": "Community"}, null] }' ``` -------------------------------- ### Running IpfsDownloader Worker (Bash) Source: https://github.com/aboutcircles/circles-nethermind-plugin/blob/dev/src/Index/Circles.Index.Profiles/manual.md Example bash commands to build and run the IpfsDownloader .NET application. Demonstrates setting environment variables for configuration before executing the build and run commands. ```bash #!/bin/bash # Set environment variables for configuration export IPFS_MAX_PARALLELISM=256 export IPFS_GATEWAYS="https://gw1.example.com,https://gw2.example.com" export IPFS_PG_CONNECTION_STRING="Host=db;Port=5432;Username=ipfs;Password=secret;Database=ipfs" # Build the application in Release mode dotnet build -c Release # Run the application in Release mode dotnet run -c Release ``` -------------------------------- ### Get Total Circles Balance (V1) Source: https://github.com/aboutcircles/circles-nethermind-plugin/blob/dev/src/Rpc/Circles.Rpc.Host/README.md Retrieves the total V1 Circles balance for a given Ethereum address. The balance can be optionally formatted as TimeCircles. This method is available via a cURL example. ```bash curl -X POST http://localhost:8081 -H 'Content-Type: application/json' -d '{ "jsonrpc": "2.0", "method": "circles_getTotalBalance", "params": ["0xde374ece6fa50e781e81aac78e811b33d16912c7", true], "id": 1 }' ```