{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-apis/rpc/sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["admonition","cards","card"]},"type":"markdown"},"seo":{"title":"gRPC - Blockchain Node Access","projectTitle":"Vilna Docs","description":"Access Tron and other gRPC-based blockchain nodes through a single endpoint with metadata-based chain routing.","siteUrl":"https://docs.vilna.io","keywords":["crypto asset management","blockchain monitoring","digital asset security","cryptocurrency API","wallet tracking","blockchain analytics","enterprise crypto","real-time blockchain","CAIP-19","BIP44"],"lang":"en-US","image":"https://cdn.vilna.io/docs/previews/rpc.png","meta":[{"name":"og:type","content":"website"},{"name":"og:site_name","content":"Vilna Documentation"},{"name":"og:image:width","content":"1200"},{"name":"og:image:height","content":"630"},{"name":"twitter:card","content":"summary_large_image"}],"llmstxt":{"title":"Vilna API Documentation","description":"Vilna is a blockchain monitoring and wallet management platform. It provides a single unified REST API for tracking addresses, transactions, balances, and activity across top blockchains - Bitcoin, Ethereum, Solana, TRON, TON, Cosmos, and others. The API uses CAIP-2/CAIP-19 standards for cross-chain identification, HD wallet management (BIP-32/44) for address derivation, and RFC 7807 for error responses. Authentication is via API key in the X-Api-Key header.\n","excludeFiles":["legal/**/*.md","@l10n/**/*.md"],"sections":[{"title":"Overview","description":"What Vilna is, supported blockchains, and target audience","includeFiles":["overview.md"],"excludeFiles":[]},{"title":"Getting Started","description":"Quickstart guide and core API concepts","includeFiles":["guides/quickstart.md","guides/dashboard.md","guides/core-concepts.md","guides/authentication.md"],"excludeFiles":[]},{"title":"API Reference","description":"Platform API and Management API endpoint documentation","includeFiles":["apis/platform/index.md","apis/mgmt/index.md","apis/rpc/index.md","apis/platform/api.yaml","apis/mgmt/api.yaml"],"excludeFiles":[]},{"title":"Developer Guides","description":"Integration patterns, events, notifications, SDK, and error handling","includeFiles":["guides/events.md","guides/channels.md","guides/integration-patterns.md","guides/sdk.md","guides/mcp.md","guides/errors.md","guides/simulation.md","guides/invoices.md"],"excludeFiles":[]},{"title":"Business","description":"Value proposition, use cases, and onboarding","includeFiles":["business/index.md","business/use-cases.md"],"excludeFiles":[]},{"title":"Optional","description":"Additional reference material","includeFiles":["guides/blockchain-basics.md","guides/faq.md","apis/mgmt/guide.md","guides/widget.md","guides/storage-client.md","apis/platform/caip-standards.md","apis/mgmt/authorization.md"],"excludeFiles":[]}],"hide":false},"priority":0.5,"jsonLd":{"@context":"https://schema.org","@graph":[{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://docs.vilna.io/"},{"@type":"ListItem","position":2,"name":"Blockchain RPC","item":"https://docs.vilna.io/apis/rpc"},{"@type":"ListItem","position":3,"name":"gRPC"}]},{"@type":"TechArticle","headline":"gRPC - Blockchain Node Access via gRPC Protocol","description":"Access Tron and other gRPC-based blockchain nodes through a single endpoint with metadata-based chain routing.","url":"https://docs.vilna.io/apis/rpc/grpc","datePublished":"2025-09-17","dateModified":"2026-04-21","proficiencyLevel":"Intermediate","author":{"@id":"https://vilna.io/#organization"},"publisher":{"@id":"https://vilna.io/#organization"}}]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"grpc","__idx":0},"children":["gRPC"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Access gRPC-based blockchain nodes through a single endpoint with metadata-based chain routing."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"connection","__idx":1},"children":["Connection"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"header":{"controls":{"copy":{}}},"source":"grpc.vilna.io:443\n"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["TLS is required. Authentication and chain identification are passed via gRPC metadata:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Metadata key"},"children":["Metadata key"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Value"},"children":["Value"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["x-api-key"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Your API key"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["x-chain-id"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["CAIP-2 chain ID or alias (e.g., ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tron"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["tron:mainnet"]},")"]}]}]}]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"Explicit port"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Always specify the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":[":443"]}," port. Some clients (including ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["grpcurl"]},") don't assume a default port and will fail with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["missing port in address"]}," if it's omitted."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"tron","__idx":2},"children":["Tron"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Any Tron gRPC service method can be called through Vilna RPC. The request is routed to the Tron node transparently. gRPC reflection is enabled on the upstream, so ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["grpcurl"]}," resolves descriptors automatically."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"get-current-block","__idx":3},"children":["Get current block"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"grpcurl \\\n  -H \"x-api-key: your-api-key\" \\\n  -H \"x-chain-id: tron:mainnet\" \\\n  -d '{}' \\\n  grpc.vilna.io:443 \\\n  protocol.Wallet/GetNowBlock2\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"quick-sanity-check","__idx":4},"children":["Quick sanity check"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"grpcurl \\\n  -H \"x-api-key: your-api-key\" \\\n  -H \"x-chain-id: tron:mainnet\" \\\n  grpc.vilna.io:443 \\\n  protocol.Wallet/TotalTransaction\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"get-a-specific-block-by-number","__idx":5},"children":["Get a specific block by number"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"grpcurl \\\n  -H \"x-api-key: your-api-key\" \\\n  -H \"x-chain-id: tron:mainnet\" \\\n  -d '{\"num\":70000000}' \\\n  grpc.vilna.io:443 \\\n  protocol.Wallet/GetBlockByNum2\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If you don't have ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["grpcurl"]}," installed, the same call works from Docker:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"docker run --rm fullstorydev/grpcurl \\\n  -H \"x-api-key: your-api-key\" \\\n  -H \"x-chain-id: tron:mainnet\" \\\n  -d '{}' \\\n  grpc.vilna.io:443 \\\n  protocol.Wallet/GetNowBlock2\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"available-services","__idx":6},"children":["Available services"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Vilna proxies all standard Tron gRPC services:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Service"},"children":["Service"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Description"},"children":["Description"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["protocol.Wallet"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Account, transaction, and block operations"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["protocol.WalletSolidity"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Read-only queries against confirmed blocks"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["protocol.Database"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Low-level chain data access"]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For the full list of available methods, see the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://developers.tron.network/reference"},"children":["Tron protocol documentation"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"error-handling","__idx":7},"children":["Error handling"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"system-errors","__idx":8},"children":["System errors"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Returned by Vilna RPC when the request cannot reach the blockchain node:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"Situation"},"children":["Situation"]},{"$$mdtype":"Tag","name":"th","attributes":{"data-label":"gRPC status"},"children":["gRPC status"]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Missing API key"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["UNAUTHENTICATED"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Invalid API key"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["UNAUTHENTICATED"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Network not found"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["NOT_FOUND"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Protocol mismatch"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["INVALID_ARGUMENT"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Network unavailable"]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["UNAVAILABLE"]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For common API errors and troubleshooting, see the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/guides/errors"},"children":["Errors guide"]},"."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"blockchain-node-errors","__idx":9},"children":["Blockchain node errors"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If the request reaches the node but the node returns an error, you receive the node's native gRPC error. These errors come directly from the blockchain node."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"next-steps","__idx":10},"children":["Next steps"]},{"$$mdtype":"Tag","name":"Cards","attributes":{"columns":2,"cardMinWidth":240},"children":[{"$$mdtype":"Tag","name":"Card","attributes":{"title":"JSON-RPC","imagePosition":"start","iconPosition":"auto","layout":"vertical","align":"start","variant":"filled","to":"/apis/rpc/json-rpc"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["HTTP requests for Ethereum, Solana, and Bitcoin nodes"]}]},{"$$mdtype":"Tag","name":"Card","attributes":{"title":"RPC Overview","imagePosition":"start","iconPosition":"auto","layout":"vertical","align":"start","variant":"filled","to":"/apis/rpc"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Supported networks, authentication, and health checks"]}]},{"$$mdtype":"Tag","name":"Card","attributes":{"title":"Errors","imagePosition":"start","iconPosition":"auto","layout":"vertical","align":"start","variant":"filled","to":"/guides/errors"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Error handling and troubleshooting guide"]}]}]}]},"headings":[{"value":"gRPC","id":"grpc","depth":1},{"value":"Connection","id":"connection","depth":2},{"value":"Tron","id":"tron","depth":2},{"value":"Get current block","id":"get-current-block","depth":3},{"value":"Quick sanity check","id":"quick-sanity-check","depth":3},{"value":"Get a specific block by number","id":"get-a-specific-block-by-number","depth":3},{"value":"Available services","id":"available-services","depth":3},{"value":"Error handling","id":"error-handling","depth":2},{"value":"System errors","id":"system-errors","depth":3},{"value":"Blockchain node errors","id":"blockchain-node-errors","depth":3},{"value":"Next steps","id":"next-steps","depth":2}],"frontmatter":{"seo":{"title":"gRPC - Blockchain Node Access","description":"Access Tron and other gRPC-based blockchain nodes through a single endpoint with metadata-based chain routing.","priority":0.5,"image":"https://cdn.vilna.io/docs/previews/rpc.png","jsonLd":{"@context":"https://schema.org","@graph":[{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://docs.vilna.io/"},{"@type":"ListItem","position":2,"name":"Blockchain RPC","item":"https://docs.vilna.io/apis/rpc"},{"@type":"ListItem","position":3,"name":"gRPC"}]},{"@type":"TechArticle","headline":"gRPC - Blockchain Node Access via gRPC Protocol","description":"Access Tron and other gRPC-based blockchain nodes through a single endpoint with metadata-based chain routing.","url":"https://docs.vilna.io/apis/rpc/grpc","datePublished":"2025-09-17","dateModified":"2026-04-21","proficiencyLevel":"Intermediate","author":{"@id":"https://vilna.io/#organization"},"publisher":{"@id":"https://vilna.io/#organization"}}]}}},"lastModified":"2026-05-26T20:25:55.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/apis/rpc/grpc","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}