diff --git a/app/[locale]/(home)/_pages/page.en.tsx b/app/[locale]/(home)/_pages/page.en.tsx index 15a5699e2..d27ba4a93 100644 --- a/app/[locale]/(home)/_pages/page.en.tsx +++ b/app/[locale]/(home)/_pages/page.en.tsx @@ -1,7 +1,7 @@ import { ImageZoom } from 'fumadocs-ui/components/image-zoom'; import { Braces, Database, Play } from 'lucide-react'; import { Card, Cards, SmallCard } from '@/components/card'; -import { API, Chainhook, Hiro, Ordinals, Runes, StacksIcon } from '@/components/ui/icon'; +import { API, Chainhook, Hiro, StacksIcon } from '@/components/ui/icon'; import heroImage from '@/public/stacks-hero.svg'; export default function HomePage() { @@ -68,12 +68,6 @@ export default function HomePage() { title="Contract Monitoring" description="Monitor and track smart contract activity and performance metrics." /> - } - href="/tools/bitcoin-indexer" - title="Bitcoin Indexer" - description="Index and query Bitcoin blockchain data with high-performance indexing." - />
@@ -115,18 +109,6 @@ export default function HomePage() { title="Platform API" description="Programmatically manage devnets and chainhooks via REST interface." /> - } - href="/apis/ordinals-api" - title="Ordinals API" - description="Complete Bitcoin ordinals and BRC-20 token data with caching optimization." - /> - } - href="/apis/runes-api" - title="Runes API" - description="Fast, reliable data for Bitcoin Runes via an easy-to-use REST interface." - /> } href="/apis/signer-metrics-api" diff --git a/app/[locale]/(home)/_pages/page.es.tsx b/app/[locale]/(home)/_pages/page.es.tsx index 98e3397c1..a8580728d 100644 --- a/app/[locale]/(home)/_pages/page.es.tsx +++ b/app/[locale]/(home)/_pages/page.es.tsx @@ -1,7 +1,7 @@ import { ImageZoom } from 'fumadocs-ui/components/image-zoom'; import { Braces, Database, Play } from 'lucide-react'; import { Card, Cards, SmallCard } from '@/components/card'; -import { API, Chainhook, Hiro, Ordinals, Runes, StacksIcon } from '@/components/ui/icon'; +import { API, Chainhook, Hiro, StacksIcon } from '@/components/ui/icon'; import heroImage from '@/public/stacks-hero.svg'; export default function HomePage() { @@ -70,13 +70,6 @@ export default function HomePage() { title="Monitoreo de Contratos" description="Monitorear y rastrear la actividad de contratos inteligentes y las métricas de rendimiento." /> - - } - href="/tools/bitcoin-indexer" - title="Indexador de Bitcoin" - description="Indexa y consulta datos de la cadena de bloques de Bitcoin con indexación de alto rendimiento." - />
@@ -118,18 +111,6 @@ export default function HomePage() { title="API de la plataforma" description="Administre programáticamente devnets y chainhooks a través de la interfaz REST." /> - } - href="/apis/ordinals-api" - title="API de Ordinales" - description="Datos completos de ordinales de Bitcoin y tokens BRC-20 con optimización de caché." - /> - } - href="/apis/runes-api" - title="API de Runas" - description="Datos rápidos y confiables para Bitcoin Runes a través de una interfaz REST fácil de usar." - /> } href="/apis/signer-metrics-api" diff --git a/app/[locale]/(home)/apis/_pages/page.en.tsx b/app/[locale]/(home)/apis/_pages/page.en.tsx index bad1d189a..20dc58f8a 100644 --- a/app/[locale]/(home)/apis/_pages/page.en.tsx +++ b/app/[locale]/(home)/apis/_pages/page.en.tsx @@ -1,5 +1,5 @@ import { Cards, IndexCard } from '@/components/card'; -import { API, Chainhook, Hiro, Ordinals, Runes, StacksIcon } from '@/components/ui/icon'; +import { API, Chainhook, Hiro, StacksIcon } from '@/components/ui/icon'; export default function APIsPage() { return ( @@ -42,20 +42,6 @@ export default function APIsPage() { title="Platform API" description="Programmatically manage devnets and chainhooks via REST interface." /> - } - href="/apis/ordinals-api" - title="Ordinals API" - tag="Bitcoin L1" - description="Complete Bitcoin ordinals and BRC-20 token data with caching optimization." - /> - } - href="/apis/runes-api" - title="Runes API" - tag="Bitcoin L1" - description="Fast, reliable data for Bitcoin Runes via an easy-to-use REST interface." - /> } href="/apis/signer-metrics-api" diff --git a/app/[locale]/(home)/apis/_pages/page.es.tsx b/app/[locale]/(home)/apis/_pages/page.es.tsx index d4f88f177..b15c77f99 100644 --- a/app/[locale]/(home)/apis/_pages/page.es.tsx +++ b/app/[locale]/(home)/apis/_pages/page.es.tsx @@ -1,5 +1,5 @@ import { Cards, IndexCard } from '@/components/card'; -import { API, Chainhook, Hiro, Ordinals, Runes, StacksIcon } from '@/components/ui/icon'; +import { API, Chainhook, Hiro, StacksIcon } from '@/components/ui/icon'; export default function APIsPage() { return ( @@ -42,20 +42,6 @@ export default function APIsPage() { title="API de la plataforma" description="Gestione programáticamente devnets y chainhooks a través de la interfaz REST." /> - } - href="/apis/ordinals-api" - title="API de Ordinals" - tag="Bitcoin L1" - description="Datos completos de ordinales de Bitcoin y tokens BRC-20 con optimización de caché." - /> - } - href="/apis/runes-api" - title="API de Runas" - tag="Bitcoin L1" - description="Datos rápidos y confiables para Bitcoin Runes a través de una interfaz REST fácil de usar." - /> } href="/apis/signer-metrics-api" diff --git a/app/[locale]/(home)/tools/_pages/page.en.tsx b/app/[locale]/(home)/tools/_pages/page.en.tsx index 8914139a8..3efedf7b6 100644 --- a/app/[locale]/(home)/tools/_pages/page.en.tsx +++ b/app/[locale]/(home)/tools/_pages/page.en.tsx @@ -1,4 +1,4 @@ -import { Brackets, Database } from 'lucide-react'; +import { Brackets } from 'lucide-react'; import { Cards, IndexCard } from '@/components/card'; import { Chainhook } from '@/components/ui/icon'; @@ -27,13 +27,6 @@ export default function ToolsPage() { tag="Stacks" description="Monitor and track smart contract activity and performance metrics." /> - } - tag="Bitcoin L1" - description="Index and query Bitcoin blockchain data with high-performance indexing." - />
diff --git a/app/[locale]/(home)/tools/_pages/page.es.tsx b/app/[locale]/(home)/tools/_pages/page.es.tsx index ad910159f..14ea3d8ae 100644 --- a/app/[locale]/(home)/tools/_pages/page.es.tsx +++ b/app/[locale]/(home)/tools/_pages/page.es.tsx @@ -1,4 +1,4 @@ -import { Brackets, Database } from 'lucide-react'; +import { Brackets } from 'lucide-react'; import { Cards, IndexCard } from '@/components/card'; import { Chainhook } from '@/components/ui/icon'; @@ -29,13 +29,6 @@ export default function ToolsPage() { description="Monitorea y rastrea la actividad de contratos inteligentes y las métricas de rendimiento." /> - } - tag="Bitcoin L1" - description="Indexa y consulta datos de la cadena de bloques de Bitcoin con indexación de alto rendimiento." - /> diff --git a/app/layout.config.tsx b/app/layout.config.tsx index 3c70eb4a6..935af2380 100644 --- a/app/layout.config.tsx +++ b/app/layout.config.tsx @@ -32,11 +32,6 @@ export const baseOptions: BaseLayoutProps = { description: 'Monitor and analyze Clarity smart contract activity.', url: '/tools/contract-monitoring', }, - { - text: 'Bitcoin Indexer', - description: 'Indexer for Bitcoin blockchain data.', - url: '/tools/bitcoin-indexer', - }, ], }, { @@ -80,16 +75,6 @@ export const baseOptions: BaseLayoutProps = { description: 'API for accessing Hiro Platform data and functionality.', url: '/apis/platform-api', }, - { - text: 'Ordinals API', - description: 'API for Bitcoin Ordinals and inscriptions data.', - url: '/apis/ordinals-api', - }, - { - text: 'Runes API', - description: 'API for Bitcoin Runes data.', - url: '/apis/runes-api', - }, { text: 'Signer Metrics API', description: 'API for accessing Signer metrics data and functionality.', diff --git a/app/layout.tsx b/app/layout.tsx index 5c2d20b26..1a5a5d3e5 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -5,7 +5,6 @@ import { aeonik, aeonikFono, aeonikMono, inter } from '@/fonts'; import { KeyboardShortcutsProvider } from '@/hooks/use-keyboard-shortcuts'; import { ApiCredentialsProvider } from '@/providers/api-credentials-provider'; import { QueryProvider } from '@/providers/query-provider'; -import { Banner } from '@/components/ui/banner'; export default function RootLayout({ children }: { children: ReactNode }) { return ( @@ -15,9 +14,6 @@ export default function RootLayout({ children }: { children: ReactNode }) { suppressHydrationWarning > - - Hosted Chainhooks v1 and L1 APIs (Ordinals, Runes, BRC20) deprecated March 9th, please migrate now! - diff --git a/components/layout/mobile-navigation.tsx b/components/layout/mobile-navigation.tsx index 1e693b10c..2a084f614 100644 --- a/components/layout/mobile-navigation.tsx +++ b/components/layout/mobile-navigation.tsx @@ -83,8 +83,6 @@ export function MobileNavigation({ isOpen = false, onClose, tree }: MobileNaviga 'stacks-blockchain-api': 'Stacks Blockchain API', 'token-metadata-api': 'Token Metadata API', 'platform-api': 'Platform API', - 'ordinals-api': 'Ordinals API', - 'runes-api': 'Runes API', 'signer-metrics-api': 'Signer Metrics API', }; @@ -95,7 +93,6 @@ export function MobileNavigation({ isOpen = false, onClose, tree }: MobileNaviga if (index === 1 && displaySegments[0] === 'Tools') { const toolMappings: { [key: string]: string } = { - 'bitcoin-indexer': 'Bitcoin Indexer', 'contract-monitoring': 'Contract Monitoring', }; diff --git a/components/search-dialog.tsx b/components/search-dialog.tsx index 5b8adca45..43fa22b11 100644 --- a/components/search-dialog.tsx +++ b/components/search-dialog.tsx @@ -7,7 +7,6 @@ import { ExternalLink, Eye, File, - Layers, Package, Search, Webhook, @@ -222,7 +221,7 @@ interface DocIndexEntry { const predefinedDocQueries = [ { id: 'q1', text: 'how to create a chainhook on the hiro platform' }, { id: 'q2', text: 'how can i query a list of the latest transactions' }, - { id: 'q3', text: 'how do i bootstrap the bitcoin indexer' }, + { id: 'q3', text: 'how do i monitor contract activity' }, { id: 'q4', text: 'how do i manage api keys' }, ]; @@ -251,12 +250,6 @@ const navigateItems = [ icon: Webhook, href: '/tools/chainhooks', }, - { - id: 'bitcoin-indexer', - title: 'Bitcoin Indexer', - icon: Layers, - href: '/tools/bitcoin-indexer', - }, { id: 'apis', title: 'APIs', diff --git a/content/docs/en/apis/ordinals-api/index.mdx b/content/docs/en/apis/ordinals-api/index.mdx deleted file mode 100644 index 57c758ec7..000000000 --- a/content/docs/en/apis/ordinals-api/index.mdx +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: Ordinals API -sidebarTitle: Overview -description: Fast, reliable data for Bitcoin ordinals and BRC-20 tokens via REST. -llm: false ---- - -## Overview - -The Ordinals API provides comprehensive inscription data for Bitcoin ordinals through a high-performance REST interface. Built with cached responses and optimized indexing, it delivers inscription metadata, trading activity, BRC-20 token information, and satoshi-level data with minimal latency. - -:::callout -### Deprecation Notice -The Ordinals API will be deprecated on March 9th, 2026. Refer to the [migration guide](/apis/ordinals-api/migration) to migrate your application to using Xverse's Ordinals API instead. -::: - -## Key features - -- **Complete inscription data** - Metadata, content, and ownership for all ordinals -- **BRC-20 token support** - Full token metadata, balances, and holder information -- **Satoshi-level tracking** - Inscription data tied to specific satoshis - -## Usage - -```terminal -$ curl -L 'https://api.hiro.so/ordinals/v1/inscriptions' -H 'Accept: application/json' -``` - -For more usage examples, click [here](/apis/ordinals-api/usage). - -:::callout -All Ordinals API responses include [rate limit headers](/resources/guides/response-headers) that help you monitor your API usage with Bitcoin-specific quota information. -::: - -:::callout -type: help -### Need help building with the Ordinals API? -Reach out to us on the #ordinals channel on [Discord](https://stacks.chat/) under the Hiro Developer Tools section. There's also a [weekly office hours](https://www.addevent.com/event/kI22007085) call every Wednesday at 1pm ET. -::: diff --git a/content/docs/en/apis/ordinals-api/meta.json b/content/docs/en/apis/ordinals-api/meta.json deleted file mode 100644 index 657e6fc73..000000000 --- a/content/docs/en/apis/ordinals-api/meta.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "title": "Ordinals API", - "root": true, - "pages": ["---Ordinals API---", "index", "migration", "usage", "---Reference---", "...reference"] -} diff --git a/content/docs/en/apis/ordinals-api/migration.mdx b/content/docs/en/apis/ordinals-api/migration.mdx deleted file mode 100644 index 105b36887..000000000 --- a/content/docs/en/apis/ordinals-api/migration.mdx +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: Migration guide -description: Guide for migrating to using the L1 APIs from Xverse -llm: true ---- - -As part of the deprecation of Hiro’s L1 APIs for Ordinals, Runes, BRC-20, Ordhooks, and Runehooks, we’re recommending developers move to using the L1 APIs from Xverse, who have built a robust set of tooling for Bitcoin metaprotocols. We’ve put together this guide for developers on how to migrate your applications to using their APIs. - -## Timeline -- Announcement date: Feburary 6th, 2026 -- Deprecation effective: March 9th, 2026 - -## What you'll learn - -:::objectives -- Capture and analyze all existing Ordinals and BRC-20 API endpoints. -- Maps the API endpoint equivalent to the applicable endpoint with Xverse. -- Note any differences and changes you'll need to be aware of. -::: - -## Ordinals endpoint mappings - -### List of endpoints and its Xverse endpoint equivalent -| Hiro Endpoint | Description (Hiro) | Key Parameters (Hiro) | Xverse Equivalent Endpoint | Description (Xverse Equivalent) | Key Parameters (Xverse) | Migration Notes | -| --- | --- | --- | --- | --- | --- | --- | -| `GET /inscriptions` | Retrieves a paginated list of all inscriptions. | `limit` (default: 20, max: 100), `offset` (for pagination), `after` (inscription ID for cursor-based pagination), `before` (inscription ID for cursor-based pagination), `sat_ordinal_range` (filter by satoshi ordinal range, e.g., “23-34”), `content_type` (filter by MIME type, e.g., “image/png”), `content_length_range` (filter by byte range, e.g., “100-500”), `tag` (filter by inscription tag). | `GET /inscriptions` | Retrieves a paginated list of inscriptions. | `limit` (default: 20, max: 100), `offset` (for pagination), `after` (inscription ID), `content_type` (MIME type filter). | Direct mapping possible. Xverse supports core pagination and content_type filtering but omits `sat_ordinal_range`, `content_length_range`, and `tag`. Use Xverse’s `after` for cursor pagination. Response fields (e.g., `id`, `content_type`, `content_length`) are compatible. | -| `GET /inscriptions/{inscriptionId}` | Fetches details for a specific inscription by ID. | Path param: `inscriptionId` (string). | `GET /inscriptions/{inscriptionId}` | Fetches details for a specific inscription by ID. | Path param: `inscriptionId` (string). | Direct mapping. Both return inscription metadata (e.g., `id`, `content_type`, `genesis_fee`, `sat_ordinal`). No changes required. | -| `GET /inscriptions/{inscriptionId}/content` | Retrieves the raw content (e.g., image or text) of a specific inscription. | Path param: `inscriptionId` (string). | `GET /inscriptions/{inscriptionId}/content` | Retrieves the raw content of a specific inscription. | Path param: `inscriptionId` (string). | Direct mapping. Supports binary content retrieval; ensure handling of MIME types in responses. | -| `GET /inscriptions/{inscriptionId}/sat` | Retrieves the satoshi details associated with a specific inscription. | Path param: `inscriptionId` (string). | None | N/A | N/A | No direct equivalent in Xverse. Workaround: Use `GET /inscriptions/{inscriptionId}` which includes `sat_ordinal` in the response, or query satoshi details via Xverse’s broader inscription endpoint if available. This is a Hiro-specific feature for granular satoshi-inscription linkage. | -| `GET /inscriptions/block-height/{blockHeight}` | Retrieves all inscriptions in a specific block by height. | Path param: `blockHeight` (integer). | `GET /inscriptions/block/{blockHeight}` | Retrieves inscriptions for a specific block by height. | Path param: `blockHeight` (integer). | Near-direct mapping; note the path difference (`/block-height/` vs. `/block/`). Both support pagination via `limit` and `offset`. | -| `GET /inscriptions/block-hash/{blockHash}` | Retrieves all inscriptions in a specific block by hash. | Path param: `blockHash` (string). | `GET /inscriptions/block/{blockHash}` | Retrieves inscriptions for a specific block by hash. | Path param: `blockHash` (string). | Near-direct mapping; path uses `/block/` in Xverse. Pagination supported. | -| `GET /collections` | Retrieves a paginated list of all collections. | `limit` (default: 20, max: 100), `offset` (for pagination). | `GET /collections` | Retrieves a paginated list of collections. | `limit` (default: 20, max: 100), `offset` (for pagination). | Direct mapping. Responses include collection metadata (e.g., `id`, `name`, `inscription_count`). | -| `GET /collections/{collectionId}` | Fetches details for a specific collection by ID. | Path param: `collectionId` (string). | `GET /collections/{collectionId}` | Fetches details for a specific collection by ID. | Path param: `collectionId` (string). | Direct mapping. Includes fields like `inscription_count` and `total_supply`. | -| `GET /collections/{collectionId}/inscriptions` | Retrieves paginated inscriptions within a specific collection. | Path param: `collectionId` (string); `limit`, `offset`. | `GET /collections/{collectionId}/inscriptions` | Retrieves paginated inscriptions in a specific collection. | Path param: `collectionId` (string); `limit`, `offset`. | Direct mapping. Supports standard pagination. | -| `GET /stats` | Retrieves global Ordinals statistics (e.g., total inscriptions, blocks). | None. | `GET /stats` | Retrieves global Ordinals statistics. | None. | Direct mapping. Both provide aggregates like `total_inscriptions` and `total_size`. | - -For more details, check out the [Xverse Ordinals](https://docs.xverse.app/api/ordinals) reference. - -## Hiro-Specific Functionality for Ordinals Not Available in Xverse - -- `GET /inscriptions/{inscriptionId}/sat`: Dedicated satoshi retrieval for an inscription. Xverse includes basic sat_ordinal in inscription details but not full satoshi metadata. -- Advanced filtering in `GET /inscriptions`: - - `sat_ordinal_range`: Filter by satoshi ordinal range. - - `content_length_range`: Filter by content size range. - - `tag`: Filter by inscription tags. -- No Xverse support for inscription tagging or content-length-based queries, which may necessitate client-side filtering post-retrieval. - -## BRC-20 endpoint mappings - -### List of endpoints and its Xverse endpoint equivalent -| Hiro Endpoint | Description (Hiro) | Key Parameters (Hiro) | Xverse Equivalent Endpoint | Description (Xverse Equivalent) | Key Parameters (Xverse) | Migration Notes | -| --- | --- | --- | --- | --- | --- | --- | -| `GET /ordinals/brc-20/tokens` | Retrieves a paginated list of all BRC-20 tokens. | `limit` (default: 20, max: 100), `offset` (for pagination). | None (partial via address balances) | N/A | N/A | No direct global token list in Xverse. Workaround: Query multiple address balances or use external explorers for token discovery. Responses in Hiro include `ticker`, `max`, `limit`, `supply`; replicate via aggregated address queries if needed. | -| `GET /ordinals/brc-20/tokens/{ticker}` | Fetches detailed information for a specific BRC-20 token by ticker. | Path param: `ticker` (string). | `GET /v1/brc20/ticker/ {ticker}` | Get data and price info for a specific BRC20 by ticker. | Path param: `ticker` (string) token ticker | Xverse includes extra price data | -| `GET /ordinals/brc-20/tokens/{ticker}/holders` | Retrieves a paginated list of holders and their balances for a specific token. | Path param: `ticker` (string); `limit`, `offset`. | None | N/A | N/A | No holder list in Xverse. Workaround: Requires custom indexing of transfer events or third-party tools; Xverse lacks global holder aggregation. | -| `GET /ordinals/brc-20/tokens/{ticker}/events` | Returns the event history (deploys, mints, transfers) for a specific token. | Path param: `ticker` (string); `limit`, `offset`, optional filters like `event_type` (deploy, mint, transfer). | None (partial via address history) | N/A | N/A | No token-specific event history in Xverse. Workaround: Use address-specific transaction history and filter client-side by ticker. | -| `GET /ordinals/brc-20/balances/{address}` | Retrieves BRC-20 token balances for a specific address. | Path param: `address` (string); optional `ticker` filter. | `GET /v1/ordinals/address/{address}/brc20` | Fetches confirmed BRC-20 balances for an address. | Path param: `address` (string); supports `limit` and `offset` (currently ignored, returns full list). | Strong mapping. Both return balances per ticker (e.g., `balance`, `available`). Update path and base URL; test pagination as Xverse may evolve to enforce limits. | - -For more details, check out the [Xverse BRC-20](https://docs.xverse.app/api/brc-20) reference. - -## Hiro-Specific Functionality for BRC-20 Not Available in Xverse - -- Global token listing (`/ordinals/brc-20/tokens`): No equivalent; Xverse prioritizes per-address or per-user data. -- Token holder lists (`/ordinals/brc-20/tokens/{ticker}/holders`): Absent; requires aggregation from balances or external sources. -- Token event history (`/ordinals/brc-20/tokens/{ticker}/events`): No dedicated endpoint; use address history with filtering. -- Xverse offers unique extensions like minting (`/v1/brc20/mint/estimate`, `/v1/brc20/mint/order`, `/v1/brc20/mint/execute`) and deployment (`/v1/brc20/deploy/estimate`, etc.), plus swaps (`/v1/brc20/swaps/quotes`), which Hiro lacks. For full event history, consider supplementing Xverse with Hiro temporarily or custom Bitcoin RPC parsing. \ No newline at end of file diff --git a/content/docs/en/apis/ordinals-api/reference/brc20/get-brc20-activity.mdx b/content/docs/en/apis/ordinals-api/reference/brc20/get-brc20-activity.mdx deleted file mode 100644 index d40234918..000000000 --- a/content/docs/en/apis/ordinals-api/reference/brc20/get-brc20-activity.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Get BRC-20 activity -sidebarTitle: BRC-20 activity -description: Retrieves BRC-20 activity filtered by ticker, address, operation, or block height. -full: true ---- - - diff --git a/content/docs/en/apis/ordinals-api/reference/brc20/get-brc20-balances.mdx b/content/docs/en/apis/ordinals-api/reference/brc20/get-brc20-balances.mdx deleted file mode 100644 index a46807f96..000000000 --- a/content/docs/en/apis/ordinals-api/reference/brc20/get-brc20-balances.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Get BRC-20 balances -sidebarTitle: BRC-20 balances -description: Retrieves BRC-20 token balances for a Bitcoin address. -full: true ---- - - \ No newline at end of file diff --git a/content/docs/en/apis/ordinals-api/reference/brc20/get-brc20-token-details.mdx b/content/docs/en/apis/ordinals-api/reference/brc20/get-brc20-token-details.mdx deleted file mode 100644 index f083c9eb1..000000000 --- a/content/docs/en/apis/ordinals-api/reference/brc20/get-brc20-token-details.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Get BRC-20 token details -sidebarTitle: BRC-20 token details -description: Retrieves information for a BRC-20 token, including supply and holders. -full: true ---- - - \ No newline at end of file diff --git a/content/docs/en/apis/ordinals-api/reference/brc20/get-brc20-token-holders.mdx b/content/docs/en/apis/ordinals-api/reference/brc20/get-brc20-token-holders.mdx deleted file mode 100644 index c33e8acbb..000000000 --- a/content/docs/en/apis/ordinals-api/reference/brc20/get-brc20-token-holders.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Get BRC-20 token holders -sidebarTitle: BRC-20 token holders -description: Retrieves a list of holders and their balances for a particular BRC-20 token. -full: true ---- - - \ No newline at end of file diff --git a/content/docs/en/apis/ordinals-api/reference/brc20/get-brc20-tokens.mdx b/content/docs/en/apis/ordinals-api/reference/brc20/get-brc20-tokens.mdx deleted file mode 100644 index 3ac4d54ca..000000000 --- a/content/docs/en/apis/ordinals-api/reference/brc20/get-brc20-tokens.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Get BRC-20 tokens -sidebarTitle: BRC-20 tokens -description: Retrieves information for BRC-20 tokens. -full: true ---- - - \ No newline at end of file diff --git a/content/docs/en/apis/ordinals-api/reference/brc20/index.mdx b/content/docs/en/apis/ordinals-api/reference/brc20/index.mdx deleted file mode 100644 index bb0d24b2a..000000000 --- a/content/docs/en/apis/ordinals-api/reference/brc20/index.mdx +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: BRC-20 -index: true -full: true -description: Retrieves information about BRC-20 tokens. ---- diff --git a/content/docs/en/apis/ordinals-api/reference/brc20/meta.json b/content/docs/en/apis/ordinals-api/reference/brc20/meta.json deleted file mode 100644 index ef5b997bb..000000000 --- a/content/docs/en/apis/ordinals-api/reference/brc20/meta.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "title": "BRC-20", - "pages": ["..."], - "defaultOpen": false -} diff --git a/content/docs/en/apis/ordinals-api/reference/info/index.mdx b/content/docs/en/apis/ordinals-api/reference/info/index.mdx deleted file mode 100644 index 3062e329e..000000000 --- a/content/docs/en/apis/ordinals-api/reference/info/index.mdx +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: Status -index: true -full: true -description: Retrieves information about the Ordinals API status, including the server version. ---- diff --git a/content/docs/en/apis/ordinals-api/reference/info/meta.json b/content/docs/en/apis/ordinals-api/reference/info/meta.json deleted file mode 100644 index c86ed6663..000000000 --- a/content/docs/en/apis/ordinals-api/reference/info/meta.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "title": "Status", - "pages": ["..."], - "defaultOpen": false -} diff --git a/content/docs/en/apis/ordinals-api/reference/info/status.mdx b/content/docs/en/apis/ordinals-api/reference/info/status.mdx deleted file mode 100644 index cd20fa58e..000000000 --- a/content/docs/en/apis/ordinals-api/reference/info/status.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Get API status -sidebarTitle: API status -description: Retrieves the running status of the Ordinals API. -full: true ---- - - \ No newline at end of file diff --git a/content/docs/en/apis/ordinals-api/reference/inscriptions/get-inscription-content.mdx b/content/docs/en/apis/ordinals-api/reference/inscriptions/get-inscription-content.mdx deleted file mode 100644 index 6d629ea0b..000000000 --- a/content/docs/en/apis/ordinals-api/reference/inscriptions/get-inscription-content.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Get inscription content -sidebarTitle: Inscription content -description: Retrieves the content of a single inscription. -full: true ---- - - \ No newline at end of file diff --git a/content/docs/en/apis/ordinals-api/reference/inscriptions/get-inscription-transfers.mdx b/content/docs/en/apis/ordinals-api/reference/inscriptions/get-inscription-transfers.mdx deleted file mode 100644 index 8745ebc43..000000000 --- a/content/docs/en/apis/ordinals-api/reference/inscriptions/get-inscription-transfers.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Get inscription transfers -sidebarTitle: Inscription transfers -description: Retrieves all transfers for a single inscription. -full: true ---- - - \ No newline at end of file diff --git a/content/docs/en/apis/ordinals-api/reference/inscriptions/get-inscription.mdx b/content/docs/en/apis/ordinals-api/reference/inscriptions/get-inscription.mdx deleted file mode 100644 index 203294c59..000000000 --- a/content/docs/en/apis/ordinals-api/reference/inscriptions/get-inscription.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Get inscription -sidebarTitle: Inscription -description: Retrieves a single inscription. -full: true ---- - - \ No newline at end of file diff --git a/content/docs/en/apis/ordinals-api/reference/inscriptions/get-inscriptions.mdx b/content/docs/en/apis/ordinals-api/reference/inscriptions/get-inscriptions.mdx deleted file mode 100644 index c5af78fd3..000000000 --- a/content/docs/en/apis/ordinals-api/reference/inscriptions/get-inscriptions.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Get inscriptions -sidebarTitle: Inscriptions -description: Retrieves a list of inscriptions with options to filter and sort results. -full: true ---- - - \ No newline at end of file diff --git a/content/docs/en/apis/ordinals-api/reference/inscriptions/get-transfers-per-block.mdx b/content/docs/en/apis/ordinals-api/reference/inscriptions/get-transfers-per-block.mdx deleted file mode 100644 index 82792dcb6..000000000 --- a/content/docs/en/apis/ordinals-api/reference/inscriptions/get-transfers-per-block.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Get transfers per block -sidebarTitle: Transfers per block -description: Retrieves a list of inscription transfers that ocurred at a specific Bitcoin block. -full: true ---- - - \ No newline at end of file diff --git a/content/docs/en/apis/ordinals-api/reference/inscriptions/index.mdx b/content/docs/en/apis/ordinals-api/reference/inscriptions/index.mdx deleted file mode 100644 index 0d9f50aec..000000000 --- a/content/docs/en/apis/ordinals-api/reference/inscriptions/index.mdx +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: Inscriptions -index: true -full: true -description: Retrieves information about Ordinals inscriptions. ---- diff --git a/content/docs/en/apis/ordinals-api/reference/inscriptions/meta.json b/content/docs/en/apis/ordinals-api/reference/inscriptions/meta.json deleted file mode 100644 index 55f1889b0..000000000 --- a/content/docs/en/apis/ordinals-api/reference/inscriptions/meta.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "title": "Inscriptions", - "pages": ["..."], - "defaultOpen": false -} diff --git a/content/docs/en/apis/ordinals-api/reference/satoshis/get-satoshi-inscriptions.mdx b/content/docs/en/apis/ordinals-api/reference/satoshis/get-satoshi-inscriptions.mdx deleted file mode 100644 index eb0390448..000000000 --- a/content/docs/en/apis/ordinals-api/reference/satoshis/get-satoshi-inscriptions.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Get satoshi inscriptions -sidebarTitle: Satoshi inscriptions -description: Retrieves all inscriptions associated with a single satoshi. -full: true ---- - - diff --git a/content/docs/en/apis/ordinals-api/reference/satoshis/get-satoshi.mdx b/content/docs/en/apis/ordinals-api/reference/satoshis/get-satoshi.mdx deleted file mode 100644 index ac83eb207..000000000 --- a/content/docs/en/apis/ordinals-api/reference/satoshis/get-satoshi.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Get satoshi ordinal -sidebarTitle: Satoshi ordinal -description: Retrieves ordinal information for a single satoshi. -full: true ---- - - \ No newline at end of file diff --git a/content/docs/en/apis/ordinals-api/reference/satoshis/index.mdx b/content/docs/en/apis/ordinals-api/reference/satoshis/index.mdx deleted file mode 100644 index d1053cf27..000000000 --- a/content/docs/en/apis/ordinals-api/reference/satoshis/index.mdx +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: Satoshis -index: true -full: true -description: Retrieves ordinal information for satoshis. ---- diff --git a/content/docs/en/apis/ordinals-api/reference/satoshis/meta.json b/content/docs/en/apis/ordinals-api/reference/satoshis/meta.json deleted file mode 100644 index 706b4c9b6..000000000 --- a/content/docs/en/apis/ordinals-api/reference/satoshis/meta.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "title": "Satoshis", - "pages": ["..."], - "defaultOpen": false -} diff --git a/content/docs/en/apis/ordinals-api/reference/statistics/get-stats-inscription-count.mdx b/content/docs/en/apis/ordinals-api/reference/statistics/get-stats-inscription-count.mdx deleted file mode 100644 index 1c7c2285f..000000000 --- a/content/docs/en/apis/ordinals-api/reference/statistics/get-stats-inscription-count.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Get inscription count per block -sidebarTitle: Inscription count per block -description: Retrieves statistics on the number of inscriptions revealed per block. -full: true ---- - - \ No newline at end of file diff --git a/content/docs/en/apis/ordinals-api/reference/statistics/index.mdx b/content/docs/en/apis/ordinals-api/reference/statistics/index.mdx deleted file mode 100644 index 11a0a94e4..000000000 --- a/content/docs/en/apis/ordinals-api/reference/statistics/index.mdx +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: Statistics -index: true -full: true -description: Retrieves stats on the number of inscriptions per block. ---- diff --git a/content/docs/en/apis/ordinals-api/reference/statistics/meta.json b/content/docs/en/apis/ordinals-api/reference/statistics/meta.json deleted file mode 100644 index 2bceeb316..000000000 --- a/content/docs/en/apis/ordinals-api/reference/statistics/meta.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "title": "Statistics", - "pages": ["..."], - "defaultOpen": false -} diff --git a/content/docs/en/apis/ordinals-api/usage.mdx b/content/docs/en/apis/ordinals-api/usage.mdx deleted file mode 100644 index 2346c3286..000000000 --- a/content/docs/en/apis/ordinals-api/usage.mdx +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: Basic usage -sidebarTitle: Usage -description: Learn the basics of using the Ordinals API. ---- - -## Usage - -The Ordinals API is built on REST principles, enforcing HTTPS for all requests to ensure data security, integrity, and privacy. - -### Base URL - -```console -c -https://api.hiro.so -``` - -### Making requests - -To make a request to the Ordinals API, you can paste the curl command below in your terminal. - -```terminal -$ curl -L 'https://api.hiro.so/ordinals/v1/inscriptions' \ - -H 'Accept: application/json' -``` - -### Authentication - -If you are using an api-key, replace `$HIRO_API_KEY` with your secret API key. - -```terminal -$ curl -L 'https://api.hiro.so/ordinals/v1/inscriptions' \ - -H 'Accept: application/json' \ - -H 'x-api-key: $HIRO_API_KEY' -``` - -## Response codes - -The Ordinals API uses standard HTTP response codes to indicate request success or failure. - -| Code | Description | -|------|-------------| -| `200` | Successful request | -| `400` | Check that the parameters were correct | -| `401` | Missing API key | -| `403` | Invalid API key | -| `404` | Resource not found | -| `429` | Rate limit exceeded | -| `5xx` | Server errors | diff --git a/content/docs/en/apis/runes-api/index.mdx b/content/docs/en/apis/runes-api/index.mdx deleted file mode 100644 index 78c306649..000000000 --- a/content/docs/en/apis/runes-api/index.mdx +++ /dev/null @@ -1,39 +0,0 @@ ---- -title: Runes API -sidebarTitle: Overview -description: Fast, reliable data for Bitcoin Runes via REST. -llm: false ---- - -## Overview - -The Runes API provides comprehensive data for Bitcoin Runes through a high-performance REST interface. Built with cached responses and optimized indexing, it delivers rune metadata, trading activity, holder information, and etching details with minimal latency. - -:::callout -### Deprecation Notice -The Runes API will be deprecated on March 9th, 2026. Refer to the [migration guide](/apis/runes-api/migration) to migrate your application to using Xverse's Runes API instead. -::: - -## Key features - -- **Complete runes coverage** - Metadata for all etchings and rune activity -- **Holder tracking** - Balances and ownership data for rune holders -- **Activity monitoring** - Real-time tracking of rune transfers and operations - -## Usage - -```terminal -$ curl -L 'https://api.hiro.so/runes/v1/etchings' -H 'Accept: application/json' -``` - -For more usage examples, click [here](/apis/runes-api/usage). - -:::callout -All Runes API responses include [rate limit headers](/resources/guides/response-headers) that help you monitor your API usage with Bitcoin-specific quota information. -::: - -:::callout -type: help -### Need help building with the Runes API? -Reach out to us on the #ordinals channel on [Discord](https://stacks.chat/) under the Hiro Developer Tools section. There's also a [weekly office hours](https://www.addevent.com/event/kI22007085) call every Wednesday at 1pm ET. -::: diff --git a/content/docs/en/apis/runes-api/meta.json b/content/docs/en/apis/runes-api/meta.json deleted file mode 100644 index 0252592b9..000000000 --- a/content/docs/en/apis/runes-api/meta.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "title": "Runes API", - "root": true, - "pages": ["---Runes API---", "index", "migration", "usage", "---Reference---", "...reference"] -} diff --git a/content/docs/en/apis/runes-api/migration.mdx b/content/docs/en/apis/runes-api/migration.mdx deleted file mode 100644 index 857133087..000000000 --- a/content/docs/en/apis/runes-api/migration.mdx +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: Migration guide -description: Guide for migrating to using the L1 APIs from Xverse -llm: true ---- - -As part of the deprecation of Hiro’s L1 APIs for Ordinals, Runes, BRC-20, Ordhooks, and Runehooks, we’re recommending developers move to using the L1 APIs from Xverse, who have built a robust set of tooling for Bitcoin metaprotocols. We’ve put together this guide for developers on how to migrate your applications to using their APIs. - -## Timeline -- Announcement date: Feburary 6th, 2026 -- Deprecation effective: March 9th, 2026 - -## What you'll learn - -:::objectives -- Capture and analyze all existing Runes API endpoints. -- Maps the API endpoint equivalent to the applicable endpoint with Xverse. -- Note any differences and changes you'll need to make. -::: - -## Endpoint mappings - -### List of endpoints and its Xverse endpoint equivalent -| Hiro Endpoint | Description (Hiro) | Key Parameters (Hiro) | Xverse Equivalent Endpoint | Description (Xverse Equivalent) | Key Parameters (Xverse) | Migration Notes | -| --- | --- | --- | --- | --- | --- | --- | -| `GET /etchings` | Retrieves a paginated list of all rune etchings. | `limit` (default: 20, max: 100), `offset` (for pagination). | None | N/A | N/A | No direct global etchings list in Xverse. Workaround: Use market data endpoints (e.g., for popular runes) or external explorers to identify etchings, then query individual details via rune-specific calls. Hiro responses include etching metadata like name, supply, and terms. | -| `GET /etchings/{runeId}` | Fetches detailed metadata for a specific rune etching. | Path param: `runeId` (string, e.g., rune identifier). | `GET /v1/runes/{runeId}` (inferred from balances/metadata support) | Retrieves rune metadata and details for a specific rune. | Path param: `runeId` (string). | Strong mapping. Both provide fields like name, divisibility, supply, and etching terms. Update base URL; Xverse may include additional market data (e.g., price). | -| `GET /balances/{address}` | Retrieves rune balances for a specific address. | Path param: `address` (string); optional filters like `runeId`. | `GET /v1/runes/balances/{address}` (via Sats Connect: `runes_getBalance`) | Fetches all rune balances for an address, including amounts and divisibility. | Path param: `address` (string); network (e.g., ‘Mainnet’). | Direct mapping for core functionality. Xverse returns spendable/available balances per rune; supports wallet integration. No explicit pagination, but full lists are provided. | -| `GET /activity/address/{address}` | Retrieves rune activity (transfers, etches) for a specific address. | Path param: `address` (string); `limit`, `offset`, optional `runeId` or event type filters. | `GET /v1/runes/transactions/{address}` (inferred from transaction parsing) | Queries transaction history including rune transfers and activity. | Path param: `address` (string); optional filters for confirmed/unconfirmed. | Partial mapping. Xverse supports rune-inclusive transaction history; filter client-side for rune-specific events. Includes mempool data. | -| `GET /activity/block/{blockHeight}` | Retrieves rune activity within a specific block. | Path param: `blockHeight` (integer). | None | N/A | N/A | No block-specific rune activity in Xverse. Workaround: Use general transaction history endpoints with block filters if available, or aggregate from address queries. | -| `GET /holders/{runeId}` | Lists holders and balances for a specific rune. | Path param: `runeId` (string); `limit`, `offset`. | None | N/A | N/A | No global holder listing in Xverse. Workaround: Requires custom aggregation from multiple balance queries or third-party tools. | - -For more details, check out the [Xverse Runes](https://docs.xverse.app/api/runes) reference. - -## Hiro-Specific Functionality for Runes Not Available in Xverse - -- Global etchings list (`/etchings`): Absent; Xverse focuses on per-rune or per-address data. -- Block-level activity (`/activity/block/{blockHeight}`): No equivalent; use Xverse’s transaction endpoints with block parameters if extended. -- Rune holder aggregation (`/holders/{runeId}`): Not supported; implement via batched balance calls. -- Xverse provides unique capabilities like mint/etch order management (e.g., `runes_estimateMint`, `runes_mint`, `runes_getOrder` via Sats Connect) and rune swaps (e.g., `/v1/swaps/runes/quotes`), which Hiro lacks. For comprehensive activity tracking, supplement Xverse with Bitcoin RPC or Hiro during transition. \ No newline at end of file diff --git a/content/docs/en/apis/runes-api/reference/activities/activity.mdx b/content/docs/en/apis/runes-api/reference/activities/activity.mdx deleted file mode 100644 index 8e70743f2..000000000 --- a/content/docs/en/apis/runes-api/reference/activities/activity.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Get all activity -sidebarTitle: All activity -description: Retrieves all activity for a Rune. -full: true ---- - - \ No newline at end of file diff --git a/content/docs/en/apis/runes-api/reference/activities/for-address.mdx b/content/docs/en/apis/runes-api/reference/activities/for-address.mdx deleted file mode 100644 index 4240e5d4e..000000000 --- a/content/docs/en/apis/runes-api/reference/activities/for-address.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Get activity for an address -sidebarTitle: Activity for an address -description: Retrieves all Rune activity for a Bitcoin address. -full: true ---- - - \ No newline at end of file diff --git a/content/docs/en/apis/runes-api/reference/activities/for-block.mdx b/content/docs/en/apis/runes-api/reference/activities/for-block.mdx deleted file mode 100644 index 36428caea..000000000 --- a/content/docs/en/apis/runes-api/reference/activities/for-block.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Get activity for a block -sidebarTitle: Activity for a block -description: Retrieves a paginated list of rune activity for a block. -full: true ---- - - \ No newline at end of file diff --git a/content/docs/en/apis/runes-api/reference/activities/for-transaction.mdx b/content/docs/en/apis/runes-api/reference/activities/for-transaction.mdx deleted file mode 100644 index cc5c258ad..000000000 --- a/content/docs/en/apis/runes-api/reference/activities/for-transaction.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Get activity for a transaction -sidebarTitle: Activity for a transaction -description: Retrieves a paginated list of rune activity for a transaction. -full: true ---- - - \ No newline at end of file diff --git a/content/docs/en/apis/runes-api/reference/activities/index.mdx b/content/docs/en/apis/runes-api/reference/activities/index.mdx deleted file mode 100644 index bfdc06ca7..000000000 --- a/content/docs/en/apis/runes-api/reference/activities/index.mdx +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: Activities -index: true -full: true -description: Retrieves information about Rune activities. ---- diff --git a/content/docs/en/apis/runes-api/reference/activities/meta.json b/content/docs/en/apis/runes-api/reference/activities/meta.json deleted file mode 100644 index 5c22f1eb1..000000000 --- a/content/docs/en/apis/runes-api/reference/activities/meta.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "title": "Activities", - "pages": ["..."], - "defaultOpen": false -} diff --git a/content/docs/en/apis/runes-api/reference/balances/address.mdx b/content/docs/en/apis/runes-api/reference/balances/address.mdx deleted file mode 100644 index ec8a7bb18..000000000 --- a/content/docs/en/apis/runes-api/reference/balances/address.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Get address balances -sidebarTitle: Address balances -description: Retrieves a paginated list of address balances. -full: true ---- - - \ No newline at end of file diff --git a/content/docs/en/apis/runes-api/reference/balances/holder-balance.mdx b/content/docs/en/apis/runes-api/reference/balances/holder-balance.mdx deleted file mode 100644 index 754e803f5..000000000 --- a/content/docs/en/apis/runes-api/reference/balances/holder-balance.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Get holder balance -sidebarTitle: Holder balance -description: Retrieves holder balance for a specific Rune. -full: true ---- - - \ No newline at end of file diff --git a/content/docs/en/apis/runes-api/reference/balances/holders.mdx b/content/docs/en/apis/runes-api/reference/balances/holders.mdx deleted file mode 100644 index 2e327d232..000000000 --- a/content/docs/en/apis/runes-api/reference/balances/holders.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Get rune holders -sidebarTitle: Rune holders -description: Retrieves a paginated list of holders for a Rune. -full: true ---- - - \ No newline at end of file diff --git a/content/docs/en/apis/runes-api/reference/balances/index.mdx b/content/docs/en/apis/runes-api/reference/balances/index.mdx deleted file mode 100644 index bb73ce112..000000000 --- a/content/docs/en/apis/runes-api/reference/balances/index.mdx +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: Balances -index: true -full: true -description: Retrieves information about Rune balances. ---- diff --git a/content/docs/en/apis/runes-api/reference/balances/meta.json b/content/docs/en/apis/runes-api/reference/balances/meta.json deleted file mode 100644 index c17f19d2e..000000000 --- a/content/docs/en/apis/runes-api/reference/balances/meta.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "title": "Balances", - "pages": ["..."], - "defaultOpen": false -} diff --git a/content/docs/en/apis/runes-api/reference/etchings/get-etching.mdx b/content/docs/en/apis/runes-api/reference/etchings/get-etching.mdx deleted file mode 100644 index 679b861a1..000000000 --- a/content/docs/en/apis/runes-api/reference/etchings/get-etching.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Get etching -sidebarTitle: Etching -description: Retrieves information for a Rune etching. -full: true ---- - - \ No newline at end of file diff --git a/content/docs/en/apis/runes-api/reference/etchings/get-etchings.mdx b/content/docs/en/apis/runes-api/reference/etchings/get-etchings.mdx deleted file mode 100644 index 36dbf81d9..000000000 --- a/content/docs/en/apis/runes-api/reference/etchings/get-etchings.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Get etchings -sidebarTitle: Etchings -description: Retrieves a paginated list of rune etchings. -full: true ---- - - \ No newline at end of file diff --git a/content/docs/en/apis/runes-api/reference/etchings/index.mdx b/content/docs/en/apis/runes-api/reference/etchings/index.mdx deleted file mode 100644 index b967d8712..000000000 --- a/content/docs/en/apis/runes-api/reference/etchings/index.mdx +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: Etchings -index: true -full: true -description: Retrieves information about Rune etchings. ---- diff --git a/content/docs/en/apis/runes-api/reference/etchings/meta.json b/content/docs/en/apis/runes-api/reference/etchings/meta.json deleted file mode 100644 index 2a4b99f34..000000000 --- a/content/docs/en/apis/runes-api/reference/etchings/meta.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "title": "Etchings", - "pages": ["..."], - "defaultOpen": false -} diff --git a/content/docs/en/apis/runes-api/reference/info/index.mdx b/content/docs/en/apis/runes-api/reference/info/index.mdx deleted file mode 100644 index 294c0490a..000000000 --- a/content/docs/en/apis/runes-api/reference/info/index.mdx +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: Status -index: true -full: true -description: Retrieves information about the Rune API status. ---- diff --git a/content/docs/en/apis/runes-api/reference/info/meta.json b/content/docs/en/apis/runes-api/reference/info/meta.json deleted file mode 100644 index c86ed6663..000000000 --- a/content/docs/en/apis/runes-api/reference/info/meta.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "title": "Status", - "pages": ["..."], - "defaultOpen": false -} diff --git a/content/docs/en/apis/runes-api/reference/info/status.mdx b/content/docs/en/apis/runes-api/reference/info/status.mdx deleted file mode 100644 index 4b07e8769..000000000 --- a/content/docs/en/apis/runes-api/reference/info/status.mdx +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: Get API Status -sidebarTitle: API Status -description: Retrieves the status of the API. -full: true ---- - - \ No newline at end of file diff --git a/content/docs/en/apis/runes-api/usage.mdx b/content/docs/en/apis/runes-api/usage.mdx deleted file mode 100644 index ba055e454..000000000 --- a/content/docs/en/apis/runes-api/usage.mdx +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: Basic usage -sidebarTitle: Usage -description: Learn the basics of using the Runes API. ---- - -## Usage - -The Runes API is built on REST principles, enforcing HTTPS for all requests to ensure data security, integrity, and privacy. - -### Base URL - -```console -c -https://api.hiro.so -``` - -### Making requests - -To make a request to the Runes API, you can paste the curl command below in your terminal. - -```terminal -$ curl -L 'https://api.hiro.so/runes/v1/etchings' \ - -H 'Accept: application/json' -``` - -### Authentication - -If you are using an api-key, replace `$HIRO_API_KEY` with your secret API key. - -```terminal -$ curl -L 'https://api.hiro.so/runes/v1/etchings' \ - -H 'Accept: application/json' \ - -H 'x-api-key: $HIRO_API_KEY' -``` - -## Response codes - -The Runes API uses standard HTTP response codes to indicate request success or failure. - -| Code | Description | -|------|-------------| -| `200` | Successful request | -| `400` | Check that the parameters were correct | -| `401` | Missing API key | -| `403` | Invalid API key | -| `404` | Resource not found | -| `429` | Rate limit exceeded | -| `5xx` | Server errors | diff --git a/content/docs/en/resources/guides/rate-limits.mdx b/content/docs/en/resources/guides/rate-limits.mdx index 79ea0c36b..4142cd676 100644 --- a/content/docs/en/resources/guides/rate-limits.mdx +++ b/content/docs/en/resources/guides/rate-limits.mdx @@ -13,7 +13,7 @@ The following rate-limits (in requests per minute, or RPM) are applicable for [a | Yes | 500 requests per minute (RPM), regardless of origin IP, with an authenticated API key | Rate limits are split between two service types based on the API path: -- **Bitcoin services** (`/ordinals/*` and `/runes/*` paths): [Ordinals API](/apis/ordinals-api) and [Runes API](/apis/runes-api) +- **Bitcoin services** (`/ordinals/*` and `/runes/*` paths) - **Stacks services** (all other paths): [Stacks Blockchain API](/apis/stacks-blockchain-api), [Token Metadata API](/apis/token-metadata-api), [Signer Metrics API](/apis/signer-metrics-api), Explorer endpoints, and other Hiro services Each service type has its own independent quota, allowing you to use both Stacks and Bitcoin APIs without one affecting the other's rate limits. For more details, see our guide on [response headers](/resources/guides/response-headers). diff --git a/content/docs/en/resources/guides/response-headers.mdx b/content/docs/en/resources/guides/response-headers.mdx index 0a65ef2c4..56f6e4af3 100644 --- a/content/docs/en/resources/guides/response-headers.mdx +++ b/content/docs/en/resources/guides/response-headers.mdx @@ -52,7 +52,7 @@ console.log(response) ### Bitcoin service headers -When calling Bitcoin-related endpoints (Ordinals API, Runes API), you'll receive: +When calling Bitcoin-related endpoints, you'll receive: ```typescript // Example: Fetching inscription data @@ -102,8 +102,8 @@ APIs are classified into service types based on their URL path: | Service Type | Path Pattern | Examples | |:-------------|:-------------|:---------| -| Bitcoin | `/ordinals/*` | Ordinals API endpoints | -| Bitcoin | `/runes/*` | Runes API endpoints | +| Bitcoin | `/ordinals/*` | Bitcoin service endpoints | +| Bitcoin | `/runes/*` | Bitcoin service endpoints | | Stacks | All other paths | Stacks Blockchain API, Token Metadata API, Signer Metrics API, Explorer, and other services | :::callout diff --git a/content/docs/en/tools/bitcoin-indexer/(indexer)/archive-bootstrap.mdx b/content/docs/en/tools/bitcoin-indexer/(indexer)/archive-bootstrap.mdx deleted file mode 100644 index 9a496d127..000000000 --- a/content/docs/en/tools/bitcoin-indexer/(indexer)/archive-bootstrap.mdx +++ /dev/null @@ -1,166 +0,0 @@ ---- -title: Archive bootstrap -description: Skip weeks of indexing by bootstrapping from Hiro's pre-indexed archives. ---- - -## Overview - -Instead of indexing from the genesis block, you can bootstrap your indexer using Hiro's regularly updated archives. This reduces initial sync time from weeks to hours. - -## Available archives - -Hiro provides archives for different configurations: - -| Archive Type | Metaprotocols | Size | Sync Time | -|--------------|---------------|------|-----------| -| Full | Ordinals, Runes, BRC-20 | ~800 GB | 2-4 hours | -| Ordinals only | Ordinals | ~450 GB | 1-2 hours | -| Runes only | Runes | ~80 GB | 30 mins | -| BRC-20 only | BRC-20 | ~120 GB | 45 mins | - -## Download archives - -### Create archive directory - -```terminal -$ mkdir -p ~/bitcoin-indexer/archives -$ cd ~/bitcoin-indexer/archives -``` - -### Download required archives - -Download the archives for the metaprotocols you want to index: - -```terminal -$ curl -O -C - https://archive.hiro.so/mainnet/bitcoin-indexer-adhoc/mainnet-bitcoin-indexer-ordinals-pg-latest.tar -$ curl -O -C - https://archive.hiro.so/mainnet/bitcoin-indexer-adhoc/mainnet-bitcoin-indexer-brc20-pg-latest.tar -$ curl -O -C - https://archive.hiro.so/mainnet/bitcoin-indexer-adhoc/mainnet-bitcoin-indexer-rocksdb-latest.tar.gz -$ curl -O -C - https://archive.hiro.so/mainnet/bitcoin-indexer-adhoc/mainnet-bitcoin-indexer-runes-pg-latest.tar -``` - -:::callout -### Download time -Archives are large (100-800GB). Use `-C -` flag to enable resume on interruption. Download times vary from 2-8 hours depending on connection speed. -::: - -### Extract archives - -```terminal -$ tar -xzf mainnet-bitcoin-indexer-rocksdb-latest.tar.gz -$ tar -xf mainnet-bitcoin-indexer-ordinals-pg-latest.tar -$ tar -xf mainnet-bitcoin-indexer-brc20-pg-latest.tar -$ tar -xf mainnet-bitcoin-indexer-runes-pg-latest.tar -``` - -### Move RocksDB data - -```terminal -$ mv rocksdb ~/bitcoin-indexer/rocksdb-chainstate -``` - -## Restore PostgreSQL databases - -### Set permissions - -```terminal -$ sudo chown -R postgres:postgres ~/bitcoin-indexer/archives/brc20.dump -$ sudo chown -R postgres:postgres ~/bitcoin-indexer/archives/ordinals.dump -$ sudo chown -R postgres:postgres ~/bitcoin-indexer/archives/runes.dump -``` - -### Import database dumps - -Restore the PostgreSQL archives to your databases: - -```terminal -$ sudo -u postgres pg_restore --verbose --jobs=6 -d ordinals -c --if-exists ~/bitcoin-indexer/archives/ordinals.dump - -$ # Restore Runes database (if downloaded) -$ sudo -u postgres pg_restore --verbose --jobs=6 -d runes -c --if-exists ~/bitcoin-indexer/archives/runes.dump -``` - -:::callout -### Restore time -Database restoration takes 1-4 hours depending on archive size and disk speed. The `--jobs=6` flag uses parallel processing to speed up the restore. -::: - -### Verify restoration - -Check that data was imported successfully: - -```terminal -$ sudo -u postgres psql -d ordinals -c "SELECT COUNT(*) FROM inscriptions;" -$ sudo -u postgres psql -d brc20 -c "SELECT COUNT(DISTINCT ticker) FROM tokens;" -``` - -## Check archive block height - -Find the block height of your restored archive: - -```terminal -$ ls -la ~/bitcoin-indexer/rocksdb-chainstate/rocksdb/ | grep -i manifest -``` - -## Configuration for archive bootstrap - -No special configuration needed! The indexer automatically detects the archive state and continues from where it left off. Just ensure your paths match: - -```toml title="bitcoin-indexer-config.toml" -[storage] -working_dir = "/home/bitcoin-indexer/bitcoin-indexer/rocksdb-chainstate" - -# ... rest of your configuration -``` - -## Start indexing - -With the archive in place, start the indexer: - -```terminal -$ bitcoin-indexer runes service start --config-path=bitcoin-indexer.toml -$ bitcoin-indexer ordinals service start --config-path=bitcoin-indexer.toml -``` - -The indexer will: -1. Load the archive state -2. Connect to your Bitcoin node -3. Process new blocks since the archive height -4. Catch up to the chain tip - -## Creating custom archives - -Export your own archives for backup or migration: - -```terminal -$ bitcoin-indexer export \ - --data-dir /data/bitcoin-indexer \ - --output /backups/indexer-backup.tar.gz \ - --compress -``` - -## Troubleshooting - -### Archive extraction fails - -Ensure sufficient disk space - archives extract to 2x their compressed size temporarily. - -### Verification errors - -```terminal -$ tar -tzf bitcoin-indexer-full-latest.tar.gz | wc -l -``` - -### Slow download speeds - -Use a download manager with resume support: - -```terminal -$ aria2c -x 16 -s 16 https://archive.hiro.so/bitcoin-indexer/mainnet/bitcoin-indexer-full-latest.tar.gz -``` - -## Next steps - -:::next-steps -- [Configure the indexer](/tools/bitcoin-indexer/configuration): Fine-tune settings for your use case -- [Start using the Ordinals API](/tools/bitcoin-indexer/ordinals-api): Run queries on your indexed data -::: \ No newline at end of file diff --git a/content/docs/en/tools/bitcoin-indexer/(indexer)/configuration.mdx b/content/docs/en/tools/bitcoin-indexer/(indexer)/configuration.mdx deleted file mode 100644 index 4a750e413..000000000 --- a/content/docs/en/tools/bitcoin-indexer/(indexer)/configuration.mdx +++ /dev/null @@ -1,286 +0,0 @@ ---- -title: Configuration -description: Configure the Bitcoin Indexer for optimal performance and customize metaprotocol settings. ---- - -## Configuration file - -The Bitcoin Indexer uses a TOML configuration file to control all aspects of operation. Create the configuration file: - -```terminal -$ nano ~/bitcoin-indexer/bitcoin-indexer/bitcoin-indexer-config.toml -``` - -## Full configuration example - -```toml title="bitcoin-indexer-config.toml" -[storage] -# Path to RocksDB data directory -working_dir = "/home/bitcoin-indexer/bitcoin-indexer/rocksdb-chainstate" - -[metrics] -# Enable Prometheus metrics -enabled = true -prometheus_port = 9153 - -[ordinals.db] -# PostgreSQL connection for Ordinals data -database = "ordinals" -host = "localhost" -port = 5432 -username = "postgres" -password = "postgres" - -[ordinals.meta_protocols.brc20] -# Enable BRC-20 indexing within Ordinals -enabled = true -lru_cache_size = 10000 - -[ordinals.meta_protocols.brc20.db] -# Separate database for BRC-20 data -database = "brc20" -host = "localhost" -port = 5432 -username = "postgres" -password = "postgres" - -[runes] -# LRU cache for Runes performance -lru_cache_size = 10000 - -[runes.db] -# PostgreSQL connection for Runes data -database = "runes" -host = "localhost" -port = 5432 -username = "postgres" -password = "postgres" - -[bitcoind] -# Bitcoin Core connection settings -network = "mainnet" -rpc_url = "http://127.0.0.1:8332" -rpc_username = "user" -rpc_password = "password" -zmq_url = "tcp://0.0.0.0:18543" - -[resources] -# Resource allocation -ulimit = 2048 -cpu_core_available = 6 -memory_available = 16 -bitcoind_rpc_threads = 6 -bitcoind_rpc_timeout = 15 -``` - -## Configuration sections - -### Storage configuration - -Controls where the indexer stores blockchain state: - -```toml -[storage] -working_dir = "/path/to/rocksdb-chainstate" -# Optional: Set RocksDB specific options -rocksdb_max_open_files = 10000 -rocksdb_cache_size = "8GB" -``` - -:::callout -### Storage performance -Use fast NVMe storage for the working directory. The indexer performs many random reads/writes during operation. -::: - -### Database connections - -Each metaprotocol can use a separate database for isolation: - -```toml -[ordinals.db] -database = "ordinals" -host = "localhost" -port = 5432 -username = "postgres" -password = "postgres" -# Optional connection pool settings -max_connections = 50 -min_connections = 10 -connection_timeout = 30 -``` - -### Bitcoin node connection - -Configure how the indexer connects to your Bitcoin node: - -```toml -[bitcoind] -network = "mainnet" # or "testnet", "regtest" -rpc_url = "http://127.0.0.1:8332" -rpc_username = "user" -rpc_password = "password" -zmq_url = "tcp://0.0.0.0:18543" -# Optional: Custom RPC timeout -rpc_timeout = 30 -``` - -### Resource allocation - -Optimize performance based on your hardware: - -```toml -[resources] -# File descriptor limit -ulimit = 2048 - -# CPU cores to use for indexing -cpu_core_available = 6 - -# Memory in GB -memory_available = 16 - -# Bitcoin RPC connection pool -bitcoind_rpc_threads = 6 -bitcoind_rpc_timeout = 15 -``` - -### Metaprotocol-specific settings - -#### Ordinals configuration - -```toml -[ordinals] -# Start indexing from specific height (optional) -start_block = 767430 - -# Enable inscription number calculation -track_numbers = true - -# Cursed inscription handling -index_cursed = true - -[ordinals.meta_protocols.brc20] -enabled = true -# Cache size for BRC-20 balance calculations -lru_cache_size = 10000 -# Track all operations or just valid ones -index_invalid_operations = false -``` - -#### Runes configuration - -```toml -[runes] -# LRU cache for rune entries -lru_cache_size = 10000 - -# Start block for runes (mainnet activation) -start_block = 840000 - -# Index unspendable runes -index_unspendable = true -``` - -### API configuration - -Configure the REST API server: - -```toml -[api] -# API server settings -enabled = true -port = 3000 -host = "0.0.0.0" - -# CORS settings -cors_enabled = true -cors_origins = ["*"] - -# Rate limiting -rate_limit_enabled = true -rate_limit_requests_per_minute = 60 - -# API key authentication -require_auth = false -api_keys = ["your-api-key-here"] -``` - -### Monitoring configuration - -Enable metrics and monitoring: - -```toml -[metrics] -enabled = true -prometheus_port = 9153 - -# Log settings -[logging] -level = "info" # debug, info, warn, error -format = "json" # json or pretty -directory = "/home/bitcoin-indexer/bitcoin-indexer/logs" -max_size = "100MB" -max_backups = 10 -``` - -## Performance tuning - -### For high-throughput indexing - -```toml -[resources] -cpu_core_available = 16 -memory_available = 32 -bitcoind_rpc_threads = 16 - -[storage] -rocksdb_cache_size = "16GB" -rocksdb_max_open_files = 20000 - -[ordinals.db] -max_connections = 100 -``` - -### For limited resources - -```toml -[resources] -cpu_core_available = 4 -memory_available = 8 -bitcoind_rpc_threads = 4 - -[storage] -rocksdb_cache_size = "2GB" -rocksdb_max_open_files = 5000 - -[ordinals.db] -max_connections = 20 -``` - -## Environment variables - -Configuration values can be overridden with environment variables: - -```bash -# Override database password -export BITCOIN_INDEXER_ORDINALS_DB_PASSWORD="secure_password" - -# Override RPC credentials -export BITCOIN_INDEXER_BITCOIND_RPC_USERNAME="myuser" -export BITCOIN_INDEXER_BITCOIND_RPC_PASSWORD="mypass" - -# Override API port -export BITCOIN_INDEXER_API_PORT="8080" -``` - -## Validate configuration - -Test your configuration before starting: - -```terminal -$ bitcoin-indexer validate --config-path=~/bitcoin-indexer/bitcoin-indexer/bitcoin-indexer-config.toml -[32m✓[0m Configuration valid -[32m✓[0m Bitcoin node reachable -[32m✓[0m PostgreSQL databases accessible -[32m✓[0m Storage directory writable -``` diff --git a/content/docs/en/tools/bitcoin-indexer/(indexer)/full-sync.mdx b/content/docs/en/tools/bitcoin-indexer/(indexer)/full-sync.mdx deleted file mode 100644 index dcba7f8a9..000000000 --- a/content/docs/en/tools/bitcoin-indexer/(indexer)/full-sync.mdx +++ /dev/null @@ -1,190 +0,0 @@ ---- -title: Full sync -sidebarTitle: Full sync -description: Run the Bitcoin Indexer from scratch. -isNew: true ---- - -import { ArrowRight, Check } from 'lucide-react'; - -## What you'll learn - -:::objectives -- Set up and configure the Bitcoin Indexer -- Run the indexer from scratch -- Monitor indexing progress effectively -::: - -## Prerequisites - -:::prerequisites -- Bitcoin Core node running with `txindex=1` -- PostgreSQL running with databases created -- Sufficient storage space -::: - -:::callout -### Archive bootstrap recommended -If you haven't already, consider [bootstrapping from archives](/tools/bitcoin-indexer/archive-bootstrap) to save days of indexing time. -::: - -## Start indexing services - -The Bitcoin Indexer runs separate services for each metaprotocol. Navigate to your indexer directory: - -```terminal -$ cd ~/bitcoin-indexer/bitcoin-indexer -``` - -### Index Ordinals (includes BRC-20) - -```terminal -$ ./target/release/bitcoin-indexer ordinals service start --config-path=bitcoin-indexer-config.toml -``` - -### Index Runes - -In a separate terminal: - -```terminal -$ ./target/release/bitcoin-indexer runes service start --config-path=bitcoin-indexer-config.toml -``` - -:::callout -type: info -### Building from source -If you are downloading a release from our end, run `cargo build --release` after navigating to the folder to compile the project. This step is necessary to use `/target/release/bitcoin-indexer` for starting services. -::: - -## Monitor indexing progress - -### Check service logs - -The indexer outputs detailed progress information: - -```terminal -$ tail -f ~/bitcoin-indexer/bitcoin-indexer/ordinals.log -``` - -### Query indexer status via API - -Once the API server starts (usually after a few blocks): - -```terminal -$ curl http://localhost:3000/ordinals/v1/status -{ - "block_height": 819600, - "inscriptions_indexed": 52342567, - "latest_inscription_number": 52342567, - "sync_percentage": 99.93, - "blocks_behind": 523 -} -``` - -## Service management - -### Stop services gracefully - -```terminal -$ ps aux | grep bitcoin-indexer -``` - -### Restart after interruption - -The indexer automatically resumes from the last processed block: - -```terminal -$ ./target/release/bitcoin-indexer ordinals service start --config-path=bitcoin-indexer-config.toml -``` - -## Systemd service setup - -For production deployments, use systemd to manage services: - -### Create Ordinals service - -```bash title="/etc/systemd/system/bitcoin-indexer-ordinals.service" -[Unit] -Description=Bitcoin Indexer - Ordinals Service -After=network.target postgresql.service bitcoind.service - -[Service] -Type=simple -User=bitcoin-indexer -WorkingDirectory=/home/bitcoin-indexer/bitcoin-indexer -ExecStart=/home/bitcoin-indexer/bitcoin-indexer/target/release/bitcoin-indexer ordinals service start --config-path=bitcoin-indexer-config.toml -Restart=on-failure -RestartSec=30 - -[Install] -WantedBy=multi-user.target -``` - -### Create Runes service - -```bash title="/etc/systemd/system/bitcoin-indexer-runes.service" -[Unit] -Description=Bitcoin Indexer - Runes Service -After=network.target postgresql.service bitcoind.service - -[Service] -Type=simple -User=bitcoin-indexer -WorkingDirectory=/home/bitcoin-indexer/bitcoin-indexer -ExecStart=/home/bitcoin-indexer/bitcoin-indexer/target/release/bitcoin-indexer runes service start --config-path=bitcoin-indexer-config.toml -Restart=on-failure -RestartSec=30 - -[Install] -WantedBy=multi-user.target -``` - -### Enable and start services - -```terminal -$ sudo systemctl daemon-reload -$ sudo systemctl enable bitcoin-indexer-ordinals bitcoin-indexer-runes -$ sudo systemctl start bitcoin-indexer-ordinals bitcoin-indexer-runes -$ sudo systemctl status bitcoin-indexer-ordinals -``` - -## Performance optimization - -### During initial sync - -Optimize for throughput during catch-up: - -```toml title="bitcoin-indexer-config.toml" -[resources] -# Use more cores during initial sync -cpu_core_available = 12 -bitcoind_rpc_threads = 10 -``` - -### After reaching chain tip - -Reduce resource usage for steady-state operation: - -```toml -[resources] -# Reduce for normal operation -cpu_core_available = 4 -bitcoind_rpc_threads = 4 -``` - -## Verify successful indexing - -### Check API endpoints - -Test that APIs are returning data: - -```terminal -o -$ curl http://localhost:3000/ordinals/v1/inscriptions/0 -``` - -## Next steps - -:::next-steps -- [Hiro Archives](/tools/bitcoin-indexer/archive-bootstrap): Skip weeks of indexing by bootstrapping from Hiro's pre-indexed archives. -- [Advanced configuration](/tools/bitcoin-indexer/configuration): Configure the Bitcoin Indexer for optimal performance and customize metaprotocol settings. -::: diff --git a/content/docs/en/tools/bitcoin-indexer/(indexer)/installation.mdx b/content/docs/en/tools/bitcoin-indexer/(indexer)/installation.mdx deleted file mode 100644 index 96ea1ca22..000000000 --- a/content/docs/en/tools/bitcoin-indexer/(indexer)/installation.mdx +++ /dev/null @@ -1,220 +0,0 @@ ---- -title: Installation -description: Install PostgreSQL and build the Bitcoin Indexer from source on Linux systems. ---- - -## Prerequisites - -Before installing the Bitcoin Indexer, ensure you have: -- A fully synced Bitcoin node (see [Bitcoin node setup](/tools/bitcoin-indexer/full-sync)) -- Ubuntu 20.04+ or Debian 11+ -- At least 32GB RAM -- 2TB+ of fast NVMe storage - -Install required system packages: - -```terminal -$ sudo apt update -$ sudo apt install -y build-essential git curl pkg-config libssl-dev -``` - -## Install PostgreSQL - -The Bitcoin Indexer requires PostgreSQL 14 or higher for storing metaprotocol data. - -### Add PostgreSQL repository - -```terminal -$ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list' -$ curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg -$ sudo apt update -``` - -### Install PostgreSQL 17 - -```terminal -$ sudo apt install postgresql-17 -$ echo 'export PATH=/usr/lib/postgresql/17/bin:$PATH' >> ~/.bashrc -$ source ~/.bashrc -``` - -### Configure PostgreSQL data directory - -Create a custom data directory for PostgreSQL: - -```terminal -$ mkdir -p ~/bitcoin-indexer/pgdata -$ sudo chown -R postgres:postgres ~/bitcoin-indexer/pgdata -``` - -Initialize the database cluster: - -```terminal -$ sudo -u postgres env "PATH=$PATH" initdb -D ~/bitcoin-indexer/pgdata -[32mThe files belonging to this database system will be owned by user "postgres".[0m -[32mThis user must also own the server process.[0m -``` - -### Start PostgreSQL server - -```terminal -$ sudo -u postgres env "PATH=$PATH" pg_ctl -D ~/bitcoin-indexer/pgdata start -[32mserver starting[0m -``` - -Verify PostgreSQL is running: - -```terminal -$ sudo -u postgres psql -c "SELECT version();" -``` - -### Create databases - -Create separate databases for each metaprotocol: - -```terminal -$ sudo -u postgres createdb -p 5432 ordinals -$ sudo -u postgres createdb -p 5432 brc20 -$ sudo -u postgres createdb -p 5432 runes -``` - -Set the postgres user password: - -```terminal -$ sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD 'postgres';" -[32mALTER ROLE[0m -``` - -:::callout -type: warn -### Security note -Use a strong password in production. The default 'postgres' password is for development only. -::: - -## Install Rust - -The Bitcoin Indexer is written in Rust. Install the latest stable version: - -```terminal -$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -$ source $HOME/.cargo/env -$ rustc --version -rustc 1.75.0 (82e1608df 2023-12-21) -``` - -## Build Bitcoin Indexer - -### Clone the repository - -```terminal -$ cd ~/bitcoin-indexer -$ git clone https://github.com/hirosystems/bitcoin-indexer.git -$ cd bitcoin-indexer -``` - -### Build from source - -```terminal -$ cargo build --release - [32mCompiling[0m bitcoin-indexer v0.1.0 - [32mFinished[0m release [optimized] target(s) in 4m 23s -``` - -The compiled binary will be at `target/release/bitcoin-indexer`. - -:::callout -### Build time -Initial compilation takes 5-10 minutes. Subsequent builds are much faster due to caching. -::: - -### Create symlink for global access - -```terminal -$ sudo ln -s ~/bitcoin-indexer/bitcoin-indexer/target/release/bitcoin-indexer /usr/local/bin/bitcoin-indexer -``` - -Verify installation: - -```terminal -$ bitcoin-indexer --version -bitcoin-indexer 0.1.0 -``` - -## Create directory structure - -Set up the required directories for the indexer: - -```terminal -$ mkdir -p ~/bitcoin-indexer/{rocksdb-chainstate,archives,logs} -``` - -Directory purposes: -- `rocksdb-chainstate/` - Stores the indexed blockchain state -- `archives/` - Downloaded archive files for bootstrap -- `logs/` - Application and error logs - -## Configure systemd service - -Create a systemd service for automatic startup: - -```bash title="/etc/systemd/system/bitcoin-indexer.service" -[Unit] -Description=Bitcoin Metaprotocol Indexer -After=network.target postgresql.service bitcoind.service - -[Service] -Type=simple -User=bitcoin-indexer -Group=bitcoin-indexer -WorkingDirectory=/home/bitcoin-indexer/bitcoin-indexer - -ExecStart=/usr/local/bin/bitcoin-indexer ordinals service start --config-path=/home/bitcoin-indexer/bitcoin-indexer/bitcoin-indexer-config.toml -Restart=on-failure -RestartSec=30 - -# Process management -KillMode=mixed -KillSignal=SIGTERM -TimeoutStopSec=300 - -# Security -NoNewPrivileges=true -PrivateTmp=true - -[Install] -WantedBy=multi-user.target -``` - -Enable the service: - -```terminal -$ sudo systemctl daemon-reload -$ sudo systemctl enable bitcoin-indexer -``` - -## Verify installation - -Check all components are properly installed: - -```terminal -$ # Check Bitcoin node -$ bitcoin-cli getblockcount -820000 - -$ # Check PostgreSQL -$ sudo -u postgres psql -l | grep -E "ordinals|brc20|runes" - ordinals | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | - brc20 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | - runes | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | - -$ # Check indexer binary -$ bitcoin-indexer --help -Bitcoin Indexer - High-performance metaprotocol indexing engine -``` - -## Next steps - -:::next-steps -- [Configure the indexer](/tools/bitcoin-indexer/configuration): Set up bitcoin-indexer-config.toml -- [Bootstrap from archives](/tools/bitcoin-indexer/archive-bootstrap): Speed up initial sync with pre-indexed data -::: \ No newline at end of file diff --git a/content/docs/en/tools/bitcoin-indexer/(indexer)/meta.json b/content/docs/en/tools/bitcoin-indexer/(indexer)/meta.json deleted file mode 100644 index cad27b0b2..000000000 --- a/content/docs/en/tools/bitcoin-indexer/(indexer)/meta.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "title": "Run the indexer", - "pages": ["node-installation", "full-sync", "archive-bootstrap", "configuration"] -} diff --git a/content/docs/en/tools/bitcoin-indexer/(indexer)/node-installation.mdx b/content/docs/en/tools/bitcoin-indexer/(indexer)/node-installation.mdx deleted file mode 100644 index fb0d56828..000000000 --- a/content/docs/en/tools/bitcoin-indexer/(indexer)/node-installation.mdx +++ /dev/null @@ -1,214 +0,0 @@ ---- -title: Node installation -description: Configure and sync a Bitcoin Core node optimized for the Bitcoin Indexer. ---- - -## Overview - -The Bitcoin Indexer requires a fully synced Bitcoin Core node with transaction indexing enabled. This guide walks through setting up a node specifically configured for indexer operation. - -## Download Bitcoin Core - -Download Bitcoin Core version 25.0 or higher. Choose the correct version for your processor architecture. - -### Create Bitcoin directory - -```terminal -$ mkdir -p ~/bitcoin-indexer/bitcoin -$ cd ~/bitcoin-indexer/bitcoin -``` - -### Download and extract - - - - - For x86_64 (Intel/AMD) - - - For ARM64 - - - Install globally with symlinks - - - - ```terminal - $ curl -O https://bitcoincore.org/bin/bitcoin-core-25.1/bitcoin-25.1-x86_64-linux-gnu.tar.gz - $ tar -xzf bitcoin-25.1-x86_64-linux-gnu.tar.gz - ``` - - - ```terminal - $ curl -O https://bitcoincore.org/bin/bitcoin-core-25.1/bitcoin-25.1-aarch64-linux-gnu.tar.gz - $ tar -xzf bitcoin-25.1-aarch64-linux-gnu.tar.gz - ``` - - - ```terminal - $ sudo ln -s ~/bitcoin-indexer/bitcoin/bitcoin-25.1/bin/bitcoind /usr/local/bin/bitcoind - $ sudo ln -s ~/bitcoin-indexer/bitcoin/bitcoin-25.1/bin/bitcoin-cli /usr/local/bin/bitcoin-cli - ``` - - - -Verify installation: - -```terminal -$ bitcoind --version -Bitcoin Core version v25.1.0 -``` - -## Configure for indexing - -### Create data directory - -```terminal -$ mkdir -p ~/bitcoin-indexer/bitcoin/chainstate -``` - -### Create configuration file - -```terminal -$ nano ~/bitcoin-indexer/bitcoin/bitcoin.conf -``` - -Add the following configuration: - -```console ~/bitcoin-indexer/bitcoin/bitcoin.conf -# Data directory -datadir=/home/$USER/bitcoin-indexer/bitcoin/chainstate - -# Core settings -server=1 -txindex=1 -daemon=1 - -# RPC settings -rpcuser=user -rpcpassword=password -rpcport=8332 -rpcallowip=127.0.0.1 -rpcthreads=16 - -# ZeroMQ settings (required for indexer) -zmqpubrawblock=tcp://0.0.0.0:18543 -zmqpubrawtx=tcp://0.0.0.0:18544 -zmqpubhashtx=tcp://0.0.0.0:18545 -zmqpubhashblock=tcp://0.0.0.0:18546 - -# Performance settings -# Set to 16384 (16GB) during initial sync, reduce to 2048 after -dbcache=16384 -maxmempool=1000 -mempoolexpiry=72 - -# Network settings -listen=1 -maxconnections=125 - -# Deprecated RPC -deprecatedrpc=warnings -``` - -:::callout -type: warn -### Security note -Always use a strong, unique password for RPC access. The indexer will use these credentials to communicate with your node. -::: - -## Initial blockchain sync - -Start Bitcoin Core with your configuration: - -```terminal -$ bitcoind -conf=$HOME/bitcoin-indexer/bitcoin/bitcoin.conf -``` - -:::callout -### Initial sync time -Initial blockchain sync takes 1-3 days depending on hardware and network speed. The node will download ~600GB of data. -::: - -Monitor sync progress in another terminal: - -```terminal -$ bitcoin-cli -conf=$HOME/bitcoin-indexer/bitcoin/bitcoin.conf getblockchaininfo | jq '{blocks, headers, verificationprogress}' -``` - -You can also monitor detailed sync status: - -```terminal -$ bitcoin-cli -conf=$HOME/bitcoin-indexer/bitcoin/bitcoin.conf getblockchaininfo | jq '{chain, blocks, headers, bestblockhash, verificationprogress, size_on_disk}' -``` - -## Verify indexer compatibility - -Once synced, verify the node is properly configured: - -```terminal -o -$ bitcoin-cli -conf=$HOME/bitcoin-indexer/bitcoin/bitcoin.conf getindexinfo -{ - "txindex": { - "synced": true, - "best_block_height": 820000 - } -} -$ bitcoin-cli -conf=$HOME/bitcoin-indexer/bitcoin/bitcoin.conf getzmqnotifications -[ - { - "type": "pubrawblock", - "address": "tcp://0.0.0.0:18543", - "hwm": 1000 - }, - { - "type": "pubrawtx", - "address": "tcp://0.0.0.0:18544", - "hwm": 1000 - } -] -``` - -## systemd service setup - -Create a systemd service for automatic startup: - -```console /etc/systemd/system/bitcoind.service -[Unit] -Description=Bitcoin Core Daemon -After=network.target - -[Service] -Type=notify -ExecStart=/usr/local/bin/bitcoind -conf=/home/bitcoin-indexer/bitcoin/bitcoin.conf -User=bitcoin-indexer -Group=bitcoin-indexer -Restart=on-failure -RestartSec=30 - -# Security hardening -NoNewPrivileges=true -PrivateTmp=true -ProtectSystem=strict -ReadWritePaths=/home/bitcoin-indexer/bitcoin/chainstate - -[Install] -WantedBy=multi-user.target -``` - -Enable and start the service: - -```terminal -$ sudo systemctl enable bitcoind -$ sudo systemctl start bitcoind -$ sudo systemctl status bitcoind -[32m●[0m bitcoind.service - Bitcoin Core Daemon - Active: [32mactive (running)[0m -``` - -## Next steps - -:::next-steps -- [Configure the indexer](/tools/bitcoin-indexer/configuration): Set up the Bitcoin Indexer to connect to your node -- [Bootstrap from archive](/tools/bitcoin-indexer/archive-bootstrap): Skip the wait with pre-synced archives -::: \ No newline at end of file diff --git a/content/docs/en/tools/bitcoin-indexer/(integrations)/meta.json b/content/docs/en/tools/bitcoin-indexer/(integrations)/meta.json deleted file mode 100644 index 5444aea91..000000000 --- a/content/docs/en/tools/bitcoin-indexer/(integrations)/meta.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "title": "Integrations", - "pages": ["ordinals-api", "runes-api"] -} diff --git a/content/docs/en/tools/bitcoin-indexer/(integrations)/ordinals-api.mdx b/content/docs/en/tools/bitcoin-indexer/(integrations)/ordinals-api.mdx deleted file mode 100644 index 10e870566..000000000 --- a/content/docs/en/tools/bitcoin-indexer/(integrations)/ordinals-api.mdx +++ /dev/null @@ -1,234 +0,0 @@ ---- -title: Running your own Ordinals API -sidebarTitle: Ordinals API integration -description: REST API endpoints for querying Ordinals inscriptions, collections, and satoshi rarity. ---- - -## Overview - -The Ordinals API provides comprehensive access to inscription data, digital artifacts, and satoshi tracking. All endpoints return JSON and support pagination for large result sets. - -Base URL: `http://localhost:3000/ordinals/v1` - -## Authentication - -The API is open by default. For production deployments, configure API keys: - -```bash title="bitcoin-indexer.toml" -[api] -require_auth = true -api_keys = ["your-api-key-here"] -``` - -Include the API key in requests: - -```bash -Authorization: Bearer your-api-key-here -``` - -## Inscription endpoints - -### Get inscription [#get-inscription] - -`GET /inscriptions/{inscription_id}` retrieves inscription details by ID or number. - -```terminal -$ curl http://localhost:3000/ordinals/v1/inscriptions/0 -``` - -```json -{ - "id": "6fb976ab49dcec017f1e201e84395983204ae1a7c2abf7ced0a85d692e442799i0", - "number": 0, - "address": "bc1pxaneaf3w4d27hl2y93fuft2xk6m4u3wc4rafevc6slgd7f5tq2dqynekta", - "genesis_address": "bc1pxaneaf3w4d27hl2y93fuft2xk6m4u3wc4rafevc6slgd7f5tq2dqynekta", - "genesis_block_height": 767430, - "genesis_block_hash": "00000000000000000002a90330a99f67e3f01eb2ce070b45930581e82fb7ddad", - "genesis_tx_id": "6fb976ab49dcec017f1e201e84395983204ae1a7c2abf7ced0a85d692e442799", - "genesis_fee": "0", - "genesis_timestamp": 1670913723, - "content_type": "text/plain;charset=utf-8", - "content_length": 793, - "sat_ordinal": "1252201400444387", - "sat_rarity": "common", - "sat_coinbase_height": 59291 -} -``` - -### List inscriptions [#list-inscriptions] - -`GET /inscriptions` returns paginated inscription list. - -| Parameter | Type | Description | -|-----------|------|-------------| -| `limit` | number | Results per page (max 100) | -| `offset` | number | Number of results to skip | -| `address` | string | Filter by owner address | -| `mime_type` | string | Filter by MIME type | -| `from_block` | number | Start block height | -| `to_block` | number | End block height | - -```terminal -$ curl "http://localhost:3000/ordinals/v1/inscriptions?limit=5&mime_type=image/png" -``` - -### Get inscription content [#get-content] - -`GET /inscriptions/{inscription_id}/content` returns raw inscription content. - -```terminal -$ curl http://localhost:3000/ordinals/v1/inscriptions/0/content -hello world -``` - -For binary content (images, etc.), appropriate Content-Type headers are set. - -## Collection endpoints - -### List collections [#list-collections] - -`GET /collections` returns recognized Ordinals collections. - -```terminal -$ curl http://localhost:3000/ordinals/v1/collections -``` - -```json -{ - "results": [ - { - "id": "bitcoin-punks", - "name": "Bitcoin Punks", - "inscription_count": 10000, - "holder_count": 3847, - "floor_price": 15000000, - "volume_24h": 580000000 - } - ], - "total": 156 -} -``` - -### Get collection details [#get-collection] - -`GET /collections/{collection_id}` returns collection metadata and stats. - -## Satoshi endpoints - -### Get satoshi info [#get-satoshi] - -`GET /sats/{ordinal}` returns details about a specific satoshi. - -```terminal -$ curl http://localhost:3000/ordinals/v1/sats/1252201400444387 -``` - -```json -{ - "ordinal": "1252201400444387", - "decimal": "59291.444387", - "rarity": "common", - "name": "ntwmwqcqfcb", - "block_height": 59291, - "offset": 444387, - "inscriptions": ["6fb976...42799i0"] -} -``` - -### List satoshi rarities [#list-rarities] - -`GET /sats/rarities` returns satoshis by rarity class. - -| Rarity | Description | -|--------|-------------| -| `mythic` | First sat of genesis block | -| `legendary` | First sat of first tx in block | -| `epic` | First sat after halving | -| `rare` | First sat after difficulty adjustment | -| `uncommon` | First sat of each block | -| `common` | All other sats | - -## Activity endpoints - -### Get recent activity [#recent-activity] - -`GET /activity` returns recent inscription transfers and sales. - -```terminal -$ curl "http://localhost:3000/ordinals/v1/activity?type=transfer&limit=10" -``` - -### Get address activity [#address-activity] - -`GET /addresses/{address}/activity` returns activity for specific address. - -## Statistics endpoints - -### Get global stats [#global-stats] - -`GET /stats` returns aggregate Ordinals statistics. - -```terminal -$ curl http://localhost:3000/ordinals/v1/stats -``` - -```json -{ - "total_inscriptions": 52342891, - "total_fees_paid": "4821.23", - "unique_mime_types": 847, - "holder_addresses": 892341, - "inscriptions_24h": 45123, - "volume_24h": "18.5" -} -``` - -## Websocket subscriptions - -Subscribe to real-time inscription events: - -```javascript -const ws = new WebSocket('ws://localhost:3000/ordinals/v1/subscribe'); - -ws.on('message', (data) => { - const event = JSON.parse(data); - // Handle inscription_revealed, inscription_transferred, etc. -}); - -// Subscribe to specific events -ws.send(JSON.stringify({ - type: 'subscribe', - events: ['inscription_revealed'], - filters: { mime_type: 'image/*' } -})); -``` - -## Error responses - -All errors return consistent JSON structure: - -```json -{ - "error": { - "code": "NOT_FOUND", - "message": "Inscription not found", - "details": { - "inscription_id": "invalid123" - } - } -} -``` - -| Code | HTTP Status | Description | -|------|-------------|-------------| -| `NOT_FOUND` | 404 | Resource not found | -| `INVALID_REQUEST` | 400 | Malformed request | -| `RATE_LIMITED` | 429 | Too many requests | -| `INTERNAL_ERROR` | 500 | Server error | - -## Next steps - -:::next-steps -- [Runes API](/tools/bitcoin-indexer/runes-api): Query Runes tokens and balances -- [Ordinals API](/tools/bitcoin-indexer/ordinals-api): Access Ordinals data -::: \ No newline at end of file diff --git a/content/docs/en/tools/bitcoin-indexer/(integrations)/runes-api.mdx b/content/docs/en/tools/bitcoin-indexer/(integrations)/runes-api.mdx deleted file mode 100644 index bd6015d0c..000000000 --- a/content/docs/en/tools/bitcoin-indexer/(integrations)/runes-api.mdx +++ /dev/null @@ -1,234 +0,0 @@ ---- -title: Running your own Runes API -sidebarTitle: Runes API integration -description: REST API endpoints for querying Runes etchings ---- - -## Overview - -The Runes API provides comprehensive access to inscription data, digital artifacts, and satoshi tracking. All endpoints return JSON and support pagination for large result sets. - -Base URL: `http://localhost:3000/runes/v1` - -## Authentication - -The API is open by default. For production deployments, configure API keys: - -```bash title="bitcoin-indexer.toml" -[api] -require_auth = true -api_keys = ["your-api-key-here"] -``` - -Include the API key in requests: - -```bash -Authorization: Bearer your-api-key-here -``` - -## Inscription endpoints - -### Get inscription [#get-inscription] - -`GET /inscriptions/{inscription_id}` retrieves inscription details by ID or number. - -```terminal -$ curl http://localhost:3000/runes/v1/inscriptions/0 -``` - -```json -{ - "id": "6fb976ab49dcec017f1e201e84395983204ae1a7c2abf7ced0a85d692e442799i0", - "number": 0, - "address": "bc1pxaneaf3w4d27hl2y93fuft2xk6m4u3wc4rafevc6slgd7f5tq2dqynekta", - "genesis_address": "bc1pxaneaf3w4d27hl2y93fuft2xk6m4u3wc4rafevc6slgd7f5tq2dqynekta", - "genesis_block_height": 767430, - "genesis_block_hash": "00000000000000000002a90330a99f67e3f01eb2ce070b45930581e82fb7ddad", - "genesis_tx_id": "6fb976ab49dcec017f1e201e84395983204ae1a7c2abf7ced0a85d692e442799", - "genesis_fee": "0", - "genesis_timestamp": 1670913723, - "content_type": "text/plain;charset=utf-8", - "content_length": 793, - "sat_ordinal": "1252201400444387", - "sat_rarity": "common", - "sat_coinbase_height": 59291 -} -``` - -### List inscriptions [#list-inscriptions] - -`GET /inscriptions` returns paginated inscription list. - -| Parameter | Type | Description | -|-----------|------|-------------| -| `limit` | number | Results per page (max 100) | -| `offset` | number | Number of results to skip | -| `address` | string | Filter by owner address | -| `mime_type` | string | Filter by MIME type | -| `from_block` | number | Start block height | -| `to_block` | number | End block height | - -```terminal -$ curl "http://localhost:3000/runes/v1/inscriptions?limit=5&mime_type=image/png" -``` - -### Get inscription content [#get-content] - -`GET /inscriptions/{inscription_id}/content` returns raw inscription content. - -```terminal -$ curl http://localhost:3000/runes/v1/inscriptions/0/content -hello world -``` - -For binary content (images, etc.), appropriate Content-Type headers are set. - -## Collection endpoints - -### List collections [#list-collections] - -`GET /collections` returns recognized Ordinals collections. - -```terminal -$ curl http://localhost:3000/runes/v1/collections -``` - -```json -{ - "results": [ - { - "id": "bitcoin-punks", - "name": "Bitcoin Punks", - "inscription_count": 10000, - "holder_count": 3847, - "floor_price": 15000000, - "volume_24h": 580000000 - } - ], - "total": 156 -} -``` - -### Get collection details [#get-collection] - -`GET /collections/{collection_id}` returns collection metadata and stats. - -## Satoshi endpoints - -### Get satoshi info [#get-satoshi] - -`GET /sats/{ordinal}` returns details about a specific satoshi. - -```terminal -$ curl http://localhost:3000/runes/v1/sats/1252201400444387 -``` - -```json -{ - "ordinal": "1252201400444387", - "decimal": "59291.444387", - "rarity": "common", - "name": "ntwmwqcqfcb", - "block_height": 59291, - "offset": 444387, - "inscriptions": ["6fb976...42799i0"] -} -``` - -### List satoshi rarities [#list-rarities] - -`GET /sats/rarities` returns satoshis by rarity class. - -| Rarity | Description | -|--------|-------------| -| `mythic` | First sat of genesis block | -| `legendary` | First sat of first tx in block | -| `epic` | First sat after halving | -| `rare` | First sat after difficulty adjustment | -| `uncommon` | First sat of each block | -| `common` | All other sats | - -## Activity endpoints - -### Get recent activity [#recent-activity] - -`GET /activity` returns recent inscription transfers and sales. - -```terminal -$ curl "http://localhost:3000/runes/v1/activity?type=transfer&limit=10" -``` - -### Get address activity [#address-activity] - -`GET /addresses/{address}/activity` returns activity for specific address. - -## Statistics endpoints - -### Get global stats [#global-stats] - -`GET /stats` returns aggregate Ordinals statistics. - -```terminal -$ curl http://localhost:3000/runes/v1/stats -``` - -```json -{ - "total_inscriptions": 52342891, - "total_fees_paid": "4821.23", - "unique_mime_types": 847, - "holder_addresses": 892341, - "inscriptions_24h": 45123, - "volume_24h": "18.5" -} -``` - -## Websocket subscriptions - -Subscribe to real-time inscription events: - -```javascript -const ws = new WebSocket('ws://localhost:3000/runes/v1/subscribe'); - -ws.on('message', (data) => { - const event = JSON.parse(data); - // Handle inscription_revealed, inscription_transferred, etc. -}); - -// Subscribe to specific events -ws.send(JSON.stringify({ - type: 'subscribe', - events: ['inscription_revealed'], - filters: { mime_type: 'image/*' } -})); -``` - -## Error responses - -All errors return consistent JSON structure: - -```json -{ - "error": { - "code": "NOT_FOUND", - "message": "Inscription not found", - "details": { - "inscription_id": "invalid123" - } - } -} -``` - -| Code | HTTP Status | Description | -|------|-------------|-------------| -| `NOT_FOUND` | 404 | Resource not found | -| `INVALID_REQUEST` | 400 | Malformed request | -| `RATE_LIMITED` | 429 | Too many requests | -| `INTERNAL_ERROR` | 500 | Server error | - -## Next steps - -:::next-steps -- [Runes API](/tools/bitcoin-indexer/runes-api): Query Runes tokens and balances -- [Ordinals API](/tools/bitcoin-indexer/ordinals-api): Access Ordinals data -::: \ No newline at end of file diff --git a/content/docs/en/tools/bitcoin-indexer/(overview)/meta.json b/content/docs/en/tools/bitcoin-indexer/(overview)/meta.json deleted file mode 100644 index 846f185e5..000000000 --- a/content/docs/en/tools/bitcoin-indexer/(overview)/meta.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "title": "Overview", - "pages": [] -} diff --git a/content/docs/en/tools/bitcoin-indexer/index.mdx b/content/docs/en/tools/bitcoin-indexer/index.mdx deleted file mode 100644 index 40d6eb281..000000000 --- a/content/docs/en/tools/bitcoin-indexer/index.mdx +++ /dev/null @@ -1,48 +0,0 @@ ---- -title: Bitcoin Indexer -sidebarTitle: Overview -description: The Bitcoin Indexer is a high-performance, reorg-aware indexing engine that tracks Bitcoin metaprotocols and serves API endpoints for Ordinals, Runes, and BRC-20 tokens. -llm: false ---- - -## Overview - -The Bitcoin Indexer connects to your Bitcoin node, processes blocks in real-time, stores metaprotocol data in PostgreSQL, and serves REST APIs for each protocol. - -:::callout -### Deprecation Notice -Ongoing maintainence and updates to the Bitcoin Indexer will stop on March 9th, 2026. The [Bitcoin Indexer repo](https://github.com/hirosystems/bitcoin-indexer) will continue to be open-sourced. -::: - -## Key features - -- **Metaprotocol indexing** - Built-in support for Ordinals, Runes, and BRC-20 with extensible architecture -- **Reorg-aware processing** - Automatically handles chain forks and reorganizations -- **REST API endpoints** - Production-ready APIs for Ordinals and Runes -- **Archive bootstrapping** - Quick sync from Hiro archives instead of full indexing - -## Installation - -```terminal -$ git clone https://github.com/hirosystems/bitcoin-indexer.git -$ cd bitcoin-indexer && cargo build --release -``` - -Docker images are also available: - -```terminal -$ docker pull hirosystems/bitcoin-indexer:latest -``` - -## Next steps - -:::next-steps -- [Node installation](/tools/bitcoin-indexer/node-installation): Configure and sync a Bitcoin Core node optimized for the Bitcoin Indexer. -- [Full sync](/tools/bitcoin-indexer/full-sync): Run the indexer from scratch -::: - -:::callout -type: help -### Need help with the Bitcoin Indexer? -Reach out to us on the #ordinals channel on [Discord](https://stacks.chat/) under the Hiro Developer Tools section. There's also a [weekly office hours](https://www.addevent.com/event/kI22007085) call every Wednesday at 1pm ET. -::: diff --git a/content/docs/en/tools/bitcoin-indexer/meta.json b/content/docs/en/tools/bitcoin-indexer/meta.json deleted file mode 100644 index 68985c084..000000000 --- a/content/docs/en/tools/bitcoin-indexer/meta.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "title": "Bitcoin Indexer", - "root": true, - "pages": ["---Bitcoin Indexer---", "index", "...(overview)", "...(indexer)"] -} diff --git a/content/docs/es/apis/ordinals-api/index.mdx b/content/docs/es/apis/ordinals-api/index.mdx deleted file mode 100644 index 0b0a932aa..000000000 --- a/content/docs/es/apis/ordinals-api/index.mdx +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: API de Ordinales -sidebarTitle: Visión general -description: Datos rápidos y confiables para ordinales de Bitcoin y tokens BRC-20 a través de REST. -llm: false ---- -## Visión general - -La API de Ordinals proporciona datos completos de inscripciones para ordinales de Bitcoin a través de una interfaz REST de alto rendimiento. Construida con respuestas en caché e indexación optimizada, ofrece metadatos de inscripciones, actividad de trading, información de tokens BRC-20 y datos a nivel de satoshi con latencia mínima. - -## Características principales - -* **Datos completos de inscripción** - Metadatos, contenido y propiedad de todos los ordinales -* **Soporte para tokens BRC-20** - Metadatos completos de tokens, saldos e información del titular -* **Seguimiento a nivel Satoshi** - Datos de inscripción vinculados a satoshis específicos - -## Uso - -```terminal -$ curl -L 'https://api.hiro.so/ordinals/v1/inscriptions' -H 'Accept: application/json' -``` - -Para más ejemplos de uso, haga clic [aquí](/apis/ordinals-api/usage). - -:::callout -Todas las respuestas de la API de Ordinals incluyen [límites de tasa de encabezados](/resources/guides/response-headers) que te ayudan a monitorear el uso de tu API con información de cuota específica de Bitcoin. -::: - -:::callout -type: help - -### ¿Necesitas ayuda para construir con la API de Ordinals? - -Contáctanos en el #ordinales canal activado [Discord](https://stacks.chat/) bajo la sección de Herramientas para Desarrolladores de Hiro. También hay una [horas de oficina semanales](https://www.addevent.com/event/kI22007085) llamada todos los miércoles a la 1 pm ET. -::: diff --git a/content/docs/es/apis/ordinals-api/meta.json b/content/docs/es/apis/ordinals-api/meta.json deleted file mode 100644 index ec20236a6..000000000 --- a/content/docs/es/apis/ordinals-api/meta.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "title": "Ordinals API", - "root": true, - "pages": ["---Ordinals API---", "index", "usage", "---Reference---", "...reference"] -} diff --git a/content/docs/es/apis/ordinals-api/reference/brc20/get-brc20-activity.mdx b/content/docs/es/apis/ordinals-api/reference/brc20/get-brc20-activity.mdx deleted file mode 100644 index 032c10f6a..000000000 --- a/content/docs/es/apis/ordinals-api/reference/brc20/get-brc20-activity.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Obtener actividad BRC-20 -sidebarTitle: Actividad BRC-20 -description: Recupera la actividad BRC-20 filtrada por ticker, dirección, operación o altura de bloque. -full: true ---- - diff --git a/content/docs/es/apis/ordinals-api/reference/brc20/get-brc20-balances.mdx b/content/docs/es/apis/ordinals-api/reference/brc20/get-brc20-balances.mdx deleted file mode 100644 index 8fd65852d..000000000 --- a/content/docs/es/apis/ordinals-api/reference/brc20/get-brc20-balances.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Obtener saldos BRC-20 -sidebarTitle: Saldos BRC-20 -description: Recupera los saldos de tokens BRC-20 para una dirección de Bitcoin. -full: true ---- - diff --git a/content/docs/es/apis/ordinals-api/reference/brc20/get-brc20-token-details.mdx b/content/docs/es/apis/ordinals-api/reference/brc20/get-brc20-token-details.mdx deleted file mode 100644 index 30ac6cd62..000000000 --- a/content/docs/es/apis/ordinals-api/reference/brc20/get-brc20-token-details.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Obtener detalles del token BRC-20 -sidebarTitle: Detalles del token BRC-20 -description: Recupera información de un token BRC-20, incluyendo suministro y titulares. -full: true ---- - diff --git a/content/docs/es/apis/ordinals-api/reference/brc20/get-brc20-token-holders.mdx b/content/docs/es/apis/ordinals-api/reference/brc20/get-brc20-token-holders.mdx deleted file mode 100644 index 13d371cb8..000000000 --- a/content/docs/es/apis/ordinals-api/reference/brc20/get-brc20-token-holders.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Obtener titulares de tokens BRC-20 -sidebarTitle: Titulares de tokens BRC-20 -description: Recupera una lista de titulares y sus saldos para un token BRC-20 específico. -full: true ---- - diff --git a/content/docs/es/apis/ordinals-api/reference/brc20/get-brc20-tokens.mdx b/content/docs/es/apis/ordinals-api/reference/brc20/get-brc20-tokens.mdx deleted file mode 100644 index a6780c475..000000000 --- a/content/docs/es/apis/ordinals-api/reference/brc20/get-brc20-tokens.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Obtén tokens BRC-20 -sidebarTitle: Tokens BRC-20 -description: Recupera información para tokens BRC-20. -full: true ---- - diff --git a/content/docs/es/apis/ordinals-api/reference/brc20/index.mdx b/content/docs/es/apis/ordinals-api/reference/brc20/index.mdx deleted file mode 100644 index 5a38b58c5..000000000 --- a/content/docs/es/apis/ordinals-api/reference/brc20/index.mdx +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: BRC-20 -index: true -full: true -description: Recupera información sobre tokens BRC-20. ---- diff --git a/content/docs/es/apis/ordinals-api/reference/info/index.mdx b/content/docs/es/apis/ordinals-api/reference/info/index.mdx deleted file mode 100644 index cffa47cb7..000000000 --- a/content/docs/es/apis/ordinals-api/reference/info/index.mdx +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: Estado -index: true -full: true -description: Recupera información sobre el estado de la API de Ordinals, incluyendo la versión del servidor. ---- diff --git a/content/docs/es/apis/ordinals-api/reference/info/status.mdx b/content/docs/es/apis/ordinals-api/reference/info/status.mdx deleted file mode 100644 index bb179d3af..000000000 --- a/content/docs/es/apis/ordinals-api/reference/info/status.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Obtener estado de la API -sidebarTitle: Estado de la API -description: Recupera el estado de funcionamiento de la API de Ordinals. -full: true ---- - diff --git a/content/docs/es/apis/ordinals-api/reference/inscriptions/get-inscription-content.mdx b/content/docs/es/apis/ordinals-api/reference/inscriptions/get-inscription-content.mdx deleted file mode 100644 index 736048147..000000000 --- a/content/docs/es/apis/ordinals-api/reference/inscriptions/get-inscription-content.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Obtener contenido de inscripción -sidebarTitle: Contenido de la inscripción -description: Recupera el contenido de una sola inscripción. -full: true ---- - diff --git a/content/docs/es/apis/ordinals-api/reference/inscriptions/get-inscription-transfers.mdx b/content/docs/es/apis/ordinals-api/reference/inscriptions/get-inscription-transfers.mdx deleted file mode 100644 index 2757ee19c..000000000 --- a/content/docs/es/apis/ordinals-api/reference/inscriptions/get-inscription-transfers.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Obtener transferencias de inscripciones -sidebarTitle: Transferencias de inscripciones -description: Recupera todas las transferencias de una única inscripción. -full: true ---- - diff --git a/content/docs/es/apis/ordinals-api/reference/inscriptions/get-inscription.mdx b/content/docs/es/apis/ordinals-api/reference/inscriptions/get-inscription.mdx deleted file mode 100644 index 4cf8c8d82..000000000 --- a/content/docs/es/apis/ordinals-api/reference/inscriptions/get-inscription.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Obtener inscripción -sidebarTitle: Inscripción -description: Recupera una única inscripción. -full: true ---- - diff --git a/content/docs/es/apis/ordinals-api/reference/inscriptions/get-inscriptions.mdx b/content/docs/es/apis/ordinals-api/reference/inscriptions/get-inscriptions.mdx deleted file mode 100644 index 3d8187b42..000000000 --- a/content/docs/es/apis/ordinals-api/reference/inscriptions/get-inscriptions.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Obtener inscripciones -sidebarTitle: Inscripciones -description: Recupera una lista de inscripciones con opciones para filtrar y ordenar los resultados. -full: true ---- - diff --git a/content/docs/es/apis/ordinals-api/reference/inscriptions/get-transfers-per-block.mdx b/content/docs/es/apis/ordinals-api/reference/inscriptions/get-transfers-per-block.mdx deleted file mode 100644 index 72a230999..000000000 --- a/content/docs/es/apis/ordinals-api/reference/inscriptions/get-transfers-per-block.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Obtener transferencias por bloque -sidebarTitle: Transferencias por bloque -description: Obtiene una lista de transferencias de inscripciones que ocurrieron en un bloque específico de Bitcoin. -full: true ---- - diff --git a/content/docs/es/apis/ordinals-api/reference/inscriptions/index.mdx b/content/docs/es/apis/ordinals-api/reference/inscriptions/index.mdx deleted file mode 100644 index bdb92d14f..000000000 --- a/content/docs/es/apis/ordinals-api/reference/inscriptions/index.mdx +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: Inscripciones -index: true -full: true -description: Recupera información sobre inscripciones de Ordinals. ---- diff --git a/content/docs/es/apis/ordinals-api/reference/satoshis/get-satoshi-inscriptions.mdx b/content/docs/es/apis/ordinals-api/reference/satoshis/get-satoshi-inscriptions.mdx deleted file mode 100644 index 97bfbea88..000000000 --- a/content/docs/es/apis/ordinals-api/reference/satoshis/get-satoshi-inscriptions.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Obtén inscripciones satoshi -sidebarTitle: Inscripciones Satoshi -description: Recupera todas las inscripciones asociadas a un solo satoshi. -full: true ---- - diff --git a/content/docs/es/apis/ordinals-api/reference/satoshis/get-satoshi.mdx b/content/docs/es/apis/ordinals-api/reference/satoshis/get-satoshi.mdx deleted file mode 100644 index 5a05aba03..000000000 --- a/content/docs/es/apis/ordinals-api/reference/satoshis/get-satoshi.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Obtener ordinal de satoshi -sidebarTitle: Ordinal de Satoshi -description: Recupera información ordinal para un solo satoshi. -full: true ---- - diff --git a/content/docs/es/apis/ordinals-api/reference/satoshis/index.mdx b/content/docs/es/apis/ordinals-api/reference/satoshis/index.mdx deleted file mode 100644 index dfcdcb99f..000000000 --- a/content/docs/es/apis/ordinals-api/reference/satoshis/index.mdx +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: Satoshis -index: true -full: true -description: Recupera información ordinal para satoshis. ---- diff --git a/content/docs/es/apis/ordinals-api/reference/statistics/get-stats-inscription-count.mdx b/content/docs/es/apis/ordinals-api/reference/statistics/get-stats-inscription-count.mdx deleted file mode 100644 index 446d3aca0..000000000 --- a/content/docs/es/apis/ordinals-api/reference/statistics/get-stats-inscription-count.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Obtener el recuento de inscripciones por bloque -sidebarTitle: Recuento de inscripciones por bloque -description: Recupera estadísticas sobre el número de inscripciones reveladas por bloque. -full: true ---- - diff --git a/content/docs/es/apis/ordinals-api/reference/statistics/index.mdx b/content/docs/es/apis/ordinals-api/reference/statistics/index.mdx deleted file mode 100644 index 5044bef3d..000000000 --- a/content/docs/es/apis/ordinals-api/reference/statistics/index.mdx +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: Estadísticas -index: true -full: true -description: Recupera estadísticas sobre el número de inscripciones por bloque. ---- diff --git a/content/docs/es/apis/ordinals-api/usage.mdx b/content/docs/es/apis/ordinals-api/usage.mdx deleted file mode 100644 index 05ea81c87..000000000 --- a/content/docs/es/apis/ordinals-api/usage.mdx +++ /dev/null @@ -1,47 +0,0 @@ ---- -title: Uso básico -sidebarTitle: Uso -description: Aprende los conceptos básicos del uso de la API de Ordinals. ---- -## Uso - -La API de Ordinals está construida sobre principios REST, imponiendo HTTPS para todas las solicitudes para garantizar la seguridad, integridad y privacidad de los datos. - -### URL base - -```console -c -https://api.hiro.so -``` - -### Realizando solicitudes - -Para hacer una solicitud a la API de Ordinals, puedes pegar el comando curl a continuación en tu terminal. - -```terminal -$ curl -L 'https://api.hiro.so/ordinals/v1/inscriptions' \ - -H 'Accept: application/json' -``` - -### Autenticación - -Si estás utilizando una api-key, reemplaza `$HIRO_API_KEY` con tu clave API secreta. - -```terminal -$ curl -L 'https://api.hiro.so/ordinals/v1/inscriptions' \ - -H 'Accept: application/json' \ - -H 'x-api-key: $HIRO_API_KEY' -``` - -## Códigos de respuesta - -La API de Ordinals utiliza códigos de respuesta HTTP estándar para indicar el éxito o fracaso de la solicitud. - -| Código | Descripción | -|--------|-------------| -| `200` | Solicitud exitosa | -| `400` | Verifique que los parámetros fueran correctos | -| `401` | Clave de API faltante | -| `403` | Clave API inválida | -| `404` | Recurso no encontrado | -| `429` | Límite de tasa excedido | -| `5xx` | Errores del servidor | diff --git a/content/docs/es/apis/runes-api/index.mdx b/content/docs/es/apis/runes-api/index.mdx deleted file mode 100644 index c0370c7e3..000000000 --- a/content/docs/es/apis/runes-api/index.mdx +++ /dev/null @@ -1,35 +0,0 @@ ---- -title: API de Runas -sidebarTitle: Visión general -description: Datos rápidos y confiables para Bitcoin Runes a través de REST. -llm: false ---- -## Visión general - -La API de Runes proporciona datos completos para Bitcoin Runes a través de una interfaz REST de alto rendimiento. Construida con respuestas en caché e indexación optimizada, ofrece metadatos de runas, actividad comercial, información de titulares y detalles de grabado con una latencia mínima. - -## Características principales - -* **Cobertura completa de runas** - Metadatos para todos los grabados y actividad rúnica -* **Seguimiento de titulares** - Saldos y datos de propiedad para los poseedores de rune -* **Monitoreo de actividad** - Seguimiento en tiempo real de transferencias y operaciones de runas - -## Uso - -```terminal -$ curl -L 'https://api.hiro.so/runes/v1/etchings' -H 'Accept: application/json' -``` - -Para más ejemplos de uso, haga clic [aquí](/apis/runes-api/usage). - -:::callout -Todas las respuestas de la API de Runes incluyen [límites de tasa de encabezados](/resources/guides/response-headers) que te ayudan a monitorear el uso de tu API con información de cuota específica de Bitcoin. -::: - -:::callout -type: help - -### ¿Necesitas ayuda para construir con la API de Runes? - -Contáctanos en el #ordinales canal encendido [Discord](https://stacks.chat/) bajo la sección de Herramientas para Desarrolladores de Hiro. También hay una [horas de oficina semanales](https://www.addevent.com/event/kI22007085) llamada todos los miércoles a la 1 pm ET. -::: diff --git a/content/docs/es/apis/runes-api/meta.json b/content/docs/es/apis/runes-api/meta.json deleted file mode 100644 index ea8e3a6eb..000000000 --- a/content/docs/es/apis/runes-api/meta.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "title": "Runes API", - "root": true, - "pages": ["---Runes API---", "index", "usage", "---Reference---", "...reference"] -} diff --git a/content/docs/es/apis/runes-api/reference/activities/activity.mdx b/content/docs/es/apis/runes-api/reference/activities/activity.mdx deleted file mode 100644 index 73a60609a..000000000 --- a/content/docs/es/apis/runes-api/reference/activities/activity.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Obtener toda la actividad -sidebarTitle: Toda la actividad -description: Recupera toda la actividad de una Runa. -full: true ---- - diff --git a/content/docs/es/apis/runes-api/reference/activities/for-address.mdx b/content/docs/es/apis/runes-api/reference/activities/for-address.mdx deleted file mode 100644 index 764c01a82..000000000 --- a/content/docs/es/apis/runes-api/reference/activities/for-address.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Obtener actividad para una dirección -sidebarTitle: Actividad de una dirección -description: Recupera toda la actividad de Rune para una dirección de Bitcoin. -full: true ---- - diff --git a/content/docs/es/apis/runes-api/reference/activities/for-block.mdx b/content/docs/es/apis/runes-api/reference/activities/for-block.mdx deleted file mode 100644 index d9f5901b1..000000000 --- a/content/docs/es/apis/runes-api/reference/activities/for-block.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Obtener actividad para un bloque -sidebarTitle: Actividad para un bloque -description: Obtiene una lista paginada de actividad de runas para un bloque. -full: true ---- - diff --git a/content/docs/es/apis/runes-api/reference/activities/for-transaction.mdx b/content/docs/es/apis/runes-api/reference/activities/for-transaction.mdx deleted file mode 100644 index 84c98ca08..000000000 --- a/content/docs/es/apis/runes-api/reference/activities/for-transaction.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Obtener actividad para una transacción -sidebarTitle: Actividad de una transacción -description: Obtiene una lista paginada de actividad de runas para una transacción. -full: true ---- - diff --git a/content/docs/es/apis/runes-api/reference/activities/index.mdx b/content/docs/es/apis/runes-api/reference/activities/index.mdx deleted file mode 100644 index 9019b8b64..000000000 --- a/content/docs/es/apis/runes-api/reference/activities/index.mdx +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: Actividades -index: true -full: true -description: Recupera información sobre actividades de Runa. ---- diff --git a/content/docs/es/apis/runes-api/reference/balances/address.mdx b/content/docs/es/apis/runes-api/reference/balances/address.mdx deleted file mode 100644 index 002c080d8..000000000 --- a/content/docs/es/apis/runes-api/reference/balances/address.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Obtener saldos de direcciones -sidebarTitle: Saldos de direcciones -description: Recupera una lista paginada de saldos de direcciones. -full: true ---- - diff --git a/content/docs/es/apis/runes-api/reference/balances/holder-balance.mdx b/content/docs/es/apis/runes-api/reference/balances/holder-balance.mdx deleted file mode 100644 index b06b360e9..000000000 --- a/content/docs/es/apis/runes-api/reference/balances/holder-balance.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Obtener saldo del titular -sidebarTitle: Saldo del titular -description: Recupera el saldo del titular para una Runa específica. -full: true ---- - diff --git a/content/docs/es/apis/runes-api/reference/balances/holders.mdx b/content/docs/es/apis/runes-api/reference/balances/holders.mdx deleted file mode 100644 index 573182af5..000000000 --- a/content/docs/es/apis/runes-api/reference/balances/holders.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Obtener portadores de runas -sidebarTitle: Portadores de runas -description: Recupera una lista paginada de poseedores de una Runa. -full: true ---- - diff --git a/content/docs/es/apis/runes-api/reference/balances/index.mdx b/content/docs/es/apis/runes-api/reference/balances/index.mdx deleted file mode 100644 index f1b5542f4..000000000 --- a/content/docs/es/apis/runes-api/reference/balances/index.mdx +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: Saldos -index: true -full: true -description: Recupera información sobre los saldos de Rune. ---- diff --git a/content/docs/es/apis/runes-api/reference/etchings/get-etching.mdx b/content/docs/es/apis/runes-api/reference/etchings/get-etching.mdx deleted file mode 100644 index 08c8ac562..000000000 --- a/content/docs/es/apis/runes-api/reference/etchings/get-etching.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Ponte a grabar -sidebarTitle: Grabado -description: Recupera información para un grabado de Runa. -full: true ---- - diff --git a/content/docs/es/apis/runes-api/reference/etchings/get-etchings.mdx b/content/docs/es/apis/runes-api/reference/etchings/get-etchings.mdx deleted file mode 100644 index b9c7d2635..000000000 --- a/content/docs/es/apis/runes-api/reference/etchings/get-etchings.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Obtener grabados -sidebarTitle: Grabados -description: Recupera una lista paginada de grabados rúnicos. -full: true ---- - diff --git a/content/docs/es/apis/runes-api/reference/etchings/index.mdx b/content/docs/es/apis/runes-api/reference/etchings/index.mdx deleted file mode 100644 index 399ddfd38..000000000 --- a/content/docs/es/apis/runes-api/reference/etchings/index.mdx +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: Grabados -index: true -full: true -description: Recupera información sobre grabados rúnicos. ---- diff --git a/content/docs/es/apis/runes-api/reference/info/index.mdx b/content/docs/es/apis/runes-api/reference/info/index.mdx deleted file mode 100644 index 486da5675..000000000 --- a/content/docs/es/apis/runes-api/reference/info/index.mdx +++ /dev/null @@ -1,6 +0,0 @@ ---- -title: Estado -index: true -full: true -description: Recupera información sobre el estado de la API de Rune. ---- diff --git a/content/docs/es/apis/runes-api/reference/info/status.mdx b/content/docs/es/apis/runes-api/reference/info/status.mdx deleted file mode 100644 index ac9e8221e..000000000 --- a/content/docs/es/apis/runes-api/reference/info/status.mdx +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Obtener Estado de la API -sidebarTitle: Estado de la API -description: Recupera el estado de la API. -full: true ---- - diff --git a/content/docs/es/apis/runes-api/usage.mdx b/content/docs/es/apis/runes-api/usage.mdx deleted file mode 100644 index 74df85e2e..000000000 --- a/content/docs/es/apis/runes-api/usage.mdx +++ /dev/null @@ -1,47 +0,0 @@ ---- -title: Uso básico -sidebarTitle: Uso -description: Aprende los conceptos básicos del uso de la API de Runes. ---- -## Uso - -La API de Runes está construida sobre principios REST, imponiendo HTTPS para todas las solicitudes para garantizar la seguridad, integridad y privacidad de los datos. - -### URL base - -```console -c -https://api.hiro.so -``` - -### Realizando solicitudes - -Para hacer una solicitud a la API de Runes, puedes pegar el comando curl a continuación en tu terminal. - -```terminal -$ curl -L 'https://api.hiro.so/runes/v1/etchings' \ - -H 'Accept: application/json' -``` - -### Autenticación - -Si estás utilizando una api-key, reemplaza `$HIRO_API_KEY` con tu clave API secreta. - -```terminal -$ curl -L 'https://api.hiro.so/runes/v1/etchings' \ - -H 'Accept: application/json' \ - -H 'x-api-key: $HIRO_API_KEY' -``` - -## Códigos de respuesta - -La API de Runes utiliza códigos de respuesta HTTP estándar para indicar el éxito o fracaso de la solicitud. - -| Código | Descripción | -|--------|-------------| -| `200` | Solicitud exitosa | -| `400` | Verifique que los parámetros fueran correctos | -| `401` | Clave de API faltante | -| `403` | Clave API inválida | -| `404` | Recurso no encontrado | -| `429` | Límite de tasa excedido | -| `5xx` | Errores del servidor | diff --git a/content/docs/es/resources/guides/rate-limits.mdx b/content/docs/es/resources/guides/rate-limits.mdx index 5d769a8f4..d741a78d7 100644 --- a/content/docs/es/resources/guides/rate-limits.mdx +++ b/content/docs/es/resources/guides/rate-limits.mdx @@ -13,7 +13,7 @@ Los siguientes límites de tasa (en solicitudes por minuto, o RPM) son aplicable Los límites de tasa se dividen entre dos tipos de servicio según la ruta de la API: -* **Servicios de Bitcoin** (`/ordinals/*` y `/runes/*` caminos): [API de Ordinales](/apis/ordinals-api) y [API de Runas](/apis/runes-api) +* **Servicios de Bitcoin** (`/ordinals/*` y `/runes/*` caminos) * **Servicios de Stacks** (todos los demás caminos): [API de Blockchain de Stacks](/apis/stacks-blockchain-api), [API de Metadatos de Tokens](/apis/token-metadata-api), [API de métricas de firmantes](/apis/signer-metrics-api), puntos finales de Explorer y otros servicios de Hiro Cada tipo de servicio tiene su propia cuota independiente, lo que te permite utilizar tanto las APIs de Stacks como las de Bitcoin sin que una afecte los límites de velocidad de la otra. Para más detalles, consulta nuestra guía sobre [encabezados de respuesta](/resources/guides/response-headers). diff --git a/content/docs/es/resources/guides/response-headers.mdx b/content/docs/es/resources/guides/response-headers.mdx index e653c5472..e4b92fa91 100644 --- a/content/docs/es/resources/guides/response-headers.mdx +++ b/content/docs/es/resources/guides/response-headers.mdx @@ -51,7 +51,7 @@ console.log(response) ### Encabezados de servicio de Bitcoin -Al llamar a los endpoints relacionados con Bitcoin (API de Ordinales, API de Runas), recibirás: +Al llamar a los endpoints relacionados con Bitcoin, recibirás: ```typescript // Example: Fetching inscription data @@ -101,8 +101,8 @@ Las API se clasifican en tipos de servicio según su ruta URL: | Tipo de Servicio | Patrón de Ruta | Ejemplos | |:-------------|:-------------|:---------| -| Bitcoin | `/ordinals/*` | Puntos finales de la API de Ordinales | -| Bitcoin | `/runes/*` | Puntos finales de la API de Runas | +| Bitcoin | `/ordinals/*` | Puntos finales del servicio de Bitcoin | +| Bitcoin | `/runes/*` | Puntos finales del servicio de Bitcoin | | Stacks | Todas las demás rutas | API de Blockchain de Stacks, API de Metadatos de Tokens, API de Métricas de Firmante, Explorador y otros servicios | :::callout diff --git a/content/docs/es/tools/bitcoin-indexer/(indexer)/archive-bootstrap.mdx b/content/docs/es/tools/bitcoin-indexer/(indexer)/archive-bootstrap.mdx deleted file mode 100644 index 56cdee1b1..000000000 --- a/content/docs/es/tools/bitcoin-indexer/(indexer)/archive-bootstrap.mdx +++ /dev/null @@ -1,168 +0,0 @@ ---- -title: Archivo bootstrap -description: Sáltese semanas de indexación mediante el arranque desde los archivos preindexados de Hiro. ---- -## Resumen - -En lugar de indexar desde el bloque génesis, puedes iniciar tu indexador utilizando los archivos actualizados regularmente de Hiro. Esto reduce el tiempo de sincronización inicial de semanas a horas. - -## Archivos disponibles - -Hiro proporciona archivos para diferentes configuraciones: - -| Tipo de Archivo | Metaprotocolos | Tamaño | Tiempo de Sincronización | -|--------------|---------------|------|-----------| -| Completo | Ordinals, Runes, BRC-20 | ~800 GB | 2-4 horas | -| Solo Ordinals | Ordinals | ~450 GB | 1-2 horas | -| Solo Runes | Runes | ~80 GB | 30 minutos | -| Solo BRC-20 | BRC-20 | ~120 GB | 45 minutos | - -## Descargar archivos - -### Crear directorio de archivo - -```terminal -$ mkdir -p ~/bitcoin-indexer/archives -$ cd ~/bitcoin-indexer/archives -``` - -### Descargar archivos requeridos - -Descarga los archivos para los metaprotocolos que deseas indexar: - -```terminal -$ curl -O -C - https://archive.hiro.so/mainnet/bitcoin-indexer-adhoc/mainnet-bitcoin-indexer-ordinals-pg-latest.tar -$ curl -O -C - https://archive.hiro.so/mainnet/bitcoin-indexer-adhoc/mainnet-bitcoin-indexer-brc20-pg-latest.tar -$ curl -O -C - https://archive.hiro.so/mainnet/bitcoin-indexer-adhoc/mainnet-bitcoin-indexer-rocksdb-latest.tar.gz -$ curl -O -C - https://archive.hiro.so/mainnet/bitcoin-indexer-adhoc/mainnet-bitcoin-indexer-runes-pg-latest.tar -``` - -:::callout -### Tiempo de descarga - -Los archivos son grandes (100-800GB). Usar `-C -` bandera para habilitar la reanudación en caso de interrupción. Los tiempos de descarga varían de 2 a 8 horas dependiendo de la velocidad de conexión. -::: - -### Extraer archivos - -```terminal -$ tar -xzf mainnet-bitcoin-indexer-rocksdb-latest.tar.gz -$ tar -xf mainnet-bitcoin-indexer-ordinals-pg-latest.tar -$ tar -xf mainnet-bitcoin-indexer-brc20-pg-latest.tar -$ tar -xf mainnet-bitcoin-indexer-runes-pg-latest.tar -``` - -### Mover datos de RocksDB - -```terminal -$ mv rocksdb ~/bitcoin-indexer/rocksdb-chainstate -``` - -## Restaurar bases de datos PostgreSQL - -### Establecer permisos - -```terminal -$ sudo chown -R postgres:postgres ~/bitcoin-indexer/archives/brc20.dump -$ sudo chown -R postgres:postgres ~/bitcoin-indexer/archives/ordinals.dump -$ sudo chown -R postgres:postgres ~/bitcoin-indexer/archives/runes.dump -``` - -### Importar volcados de base de datos - -Restaure los archivos de PostgreSQL en sus bases de datos: - -```terminal -$ sudo -u postgres pg_restore --verbose --jobs=6 -d ordinals -c --if-exists ~/bitcoin-indexer/archives/ordinals.dump - -$ # Restore Runes database (if downloaded) -$ sudo -u postgres pg_restore --verbose --jobs=6 -d runes -c --if-exists ~/bitcoin-indexer/archives/runes.dump -``` - -:::callout -### Tiempo de restauración - -La restauración de la base de datos tarda entre 1 y 4 horas dependiendo del tamaño del archivo y la velocidad del disco. El `--jobs=6` flag utiliza procesamiento paralelo para acelerar la restauración. -::: - -### Verificar restauración - -Verifique que los datos se hayan importado correctamente: - -```terminal -$ sudo -u postgres psql -d ordinals -c "SELECT COUNT(*) FROM inscriptions;" -$ sudo -u postgres psql -d brc20 -c "SELECT COUNT(DISTINCT ticker) FROM tokens;" -``` - -## Verificar la altura del bloque de archivo - -Encuentra la altura del bloque de tu archivo restaurado: - -```terminal -$ ls -la ~/bitcoin-indexer/rocksdb-chainstate/rocksdb/ | grep -i manifest -``` - -## Configuración para el arranque del archivo - -¡No se necesita configuración especial! El indexador detecta automáticamente el estado del archivo y continúa desde donde se quedó. Solo asegúrate de que tus rutas coincidan: - -```toml title="bitcoin-indexer-config.toml" -[storage] -working_dir = "/home/bitcoin-indexer/bitcoin-indexer/rocksdb-chainstate" - -# ... rest of your configuration -``` - -## Comenzar indexación - -Con el archivo en su lugar, inicie el indexador: - -```terminal -$ bitcoin-indexer runes service start --config-path=bitcoin-indexer.toml -$ bitcoin-indexer ordinals service start --config-path=bitcoin-indexer.toml -``` - -El indexador: - -1. Cargar el estado del archivo -2. Conéctese a su nodo de Bitcoin -3. Procesar nuevos bloques desde la altura del archivo -4. Alcanzar la punta de la cadena - -## Creando archivos personalizados - -Exporte sus propios archivos para respaldo o migración: - -```terminal -$ bitcoin-indexer export \ - --data-dir /data/bitcoin-indexer \ - --output /backups/indexer-backup.tar.gz \ - --compress -``` - -## Solución de problemas - -### Error al extraer el archivo - -Asegúrese de tener suficiente espacio en disco - los archivos se extraen temporalmente al doble de su tamaño comprimido. - -### Errores de verificación - -```terminal -$ tar -tzf bitcoin-indexer-full-latest.tar.gz | wc -l -``` - -### Velocidades de descarga lentas - -Utilice un gestor de descargas con soporte de reanudación: - -```terminal -$ aria2c -x 16 -s 16 https://archive.hiro.so/bitcoin-indexer/mainnet/bitcoin-indexer-full-latest.tar.gz -``` - -## Próximos pasos - -:::next-steps -* [Configurar el indexador](/tools/bitcoin-indexer/configuration): Ajusta la configuración para tu caso de uso -* [Comience a usar la API de Ordinals](/tools/bitcoin-indexer/ordinals-api): Ejecutar consultas en sus datos indexados -::: diff --git a/content/docs/es/tools/bitcoin-indexer/(indexer)/configuration.mdx b/content/docs/es/tools/bitcoin-indexer/(indexer)/configuration.mdx deleted file mode 100644 index e2ea5834a..000000000 --- a/content/docs/es/tools/bitcoin-indexer/(indexer)/configuration.mdx +++ /dev/null @@ -1,286 +0,0 @@ ---- -title: Configuración -description: Configura el Indexador de Bitcoin para un rendimiento óptimo y personaliza la configuración del metaprotocolo. ---- -## Archivo de configuración - -El Indexador de Bitcoin utiliza un archivo de configuración TOML para controlar todos los aspectos de la operación. Cree el archivo de configuración: - -```terminal -$ nano ~/bitcoin-indexer/bitcoin-indexer/bitcoin-indexer-config.toml -``` - -## Ejemplo de configuración completa - -```toml title="bitcoin-indexer-config.toml" -[storage] -# Path to RocksDB data directory -working_dir = "/home/bitcoin-indexer/bitcoin-indexer/rocksdb-chainstate" - -[metrics] -# Enable Prometheus metrics -enabled = true -prometheus_port = 9153 - -[ordinals.db] -# PostgreSQL connection for Ordinals data -database = "ordinals" -host = "localhost" -port = 5432 -username = "postgres" -password = "postgres" - -[ordinals.meta_protocols.brc20] -# Enable BRC-20 indexing within Ordinals -enabled = true -lru_cache_size = 10000 - -[ordinals.meta_protocols.brc20.db] -# Separate database for BRC-20 data -database = "brc20" -host = "localhost" -port = 5432 -username = "postgres" -password = "postgres" - -[runes] -# LRU cache for Runes performance -lru_cache_size = 10000 - -[runes.db] -# PostgreSQL connection for Runes data -database = "runes" -host = "localhost" -port = 5432 -username = "postgres" -password = "postgres" - -[bitcoind] -# Bitcoin Core connection settings -network = "mainnet" -rpc_url = "http://127.0.0.1:8332" -rpc_username = "user" -rpc_password = "password" -zmq_url = "tcp://0.0.0.0:18543" - -[resources] -# Resource allocation -ulimit = 2048 -cpu_core_available = 6 -memory_available = 16 -bitcoind_rpc_threads = 6 -bitcoind_rpc_timeout = 15 -``` - -## Secciones de configuración - -### Configuración de almacenamiento - -Controla dónde el indexador almacena el estado de la blockchain: - -```toml -[storage] -working_dir = "/path/to/rocksdb-chainstate" -# Optional: Set RocksDB specific options -rocksdb_max_open_files = 10000 -rocksdb_cache_size = "8GB" -``` - -:::callout -### Rendimiento del almacenamiento - -Utilice almacenamiento NVMe rápido para el directorio de trabajo. El indexador realiza muchas lecturas/escrituras aleatorias durante la operación. -::: - -### Conexiones de base de datos - -Cada metaprotocolo puede usar una base de datos separada para aislamiento: - -```toml -[ordinals.db] -database = "ordinals" -host = "localhost" -port = 5432 -username = "postgres" -password = "postgres" -# Optional connection pool settings -max_connections = 50 -min_connections = 10 -connection_timeout = 30 -``` - -### Conexión de nodo Bitcoin - -Configura cómo el indexador se conecta a tu nodo de Bitcoin: - -```toml -[bitcoind] -network = "mainnet" # or "testnet", "regtest" -rpc_url = "http://127.0.0.1:8332" -rpc_username = "user" -rpc_password = "password" -zmq_url = "tcp://0.0.0.0:18543" -# Optional: Custom RPC timeout -rpc_timeout = 30 -``` - -### Asignación de recursos - -Optimiza el rendimiento según tu hardware: - -```toml -[resources] -# File descriptor limit -ulimit = 2048 - -# CPU cores to use for indexing -cpu_core_available = 6 - -# Memory in GB -memory_available = 16 - -# Bitcoin RPC connection pool -bitcoind_rpc_threads = 6 -bitcoind_rpc_timeout = 15 -``` - -### Configuración específica del metaprotocolo - -#### Configuración de ordinales - -```toml -[ordinals] -# Start indexing from specific height (optional) -start_block = 767430 - -# Enable inscription number calculation -track_numbers = true - -# Cursed inscription handling -index_cursed = true - -[ordinals.meta_protocols.brc20] -enabled = true -# Cache size for BRC-20 balance calculations -lru_cache_size = 10000 -# Track all operations or just valid ones -index_invalid_operations = false -``` - -#### Configuración de runas - -```toml -[runes] -# LRU cache for rune entries -lru_cache_size = 10000 - -# Start block for runes (mainnet activation) -start_block = 840000 - -# Index unspendable runes -index_unspendable = true -``` - -### Configuración de API - -Configurar el servidor de API REST: - -```toml -[api] -# API server settings -enabled = true -port = 3000 -host = "0.0.0.0" - -# CORS settings -cors_enabled = true -cors_origins = ["*"] - -# Rate limiting -rate_limit_enabled = true -rate_limit_requests_per_minute = 60 - -# API key authentication -require_auth = false -api_keys = ["your-api-key-here"] -``` - -### Configuración de monitoreo - -Habilitar métricas y monitoreo: - -```toml -[metrics] -enabled = true -prometheus_port = 9153 - -# Log settings -[logging] -level = "info" # debug, info, warn, error -format = "json" # json or pretty -directory = "/home/bitcoin-indexer/bitcoin-indexer/logs" -max_size = "100MB" -max_backups = 10 -``` - -## Ajuste de rendimiento - -### Para indexación de alto rendimiento - -```toml -[resources] -cpu_core_available = 16 -memory_available = 32 -bitcoind_rpc_threads = 16 - -[storage] -rocksdb_cache_size = "16GB" -rocksdb_max_open_files = 20000 - -[ordinals.db] -max_connections = 100 -``` - -### Para recursos limitados - -```toml -[resources] -cpu_core_available = 4 -memory_available = 8 -bitcoind_rpc_threads = 4 - -[storage] -rocksdb_cache_size = "2GB" -rocksdb_max_open_files = 5000 - -[ordinals.db] -max_connections = 20 -``` - -## Variables de entorno - -Los valores de configuración pueden ser anulados con variables de entorno: - -```bash -# Override database password -export BITCOIN_INDEXER_ORDINALS_DB_PASSWORD="secure_password" - -# Override RPC credentials -export BITCOIN_INDEXER_BITCOIND_RPC_USERNAME="myuser" -export BITCOIN_INDEXER_BITCOIND_RPC_PASSWORD="mypass" - -# Override API port -export BITCOIN_INDEXER_API_PORT="8080" -``` - -## Validar configuración - -Prueba tu configuración antes de comenzar: - -```terminal -$ bitcoin-indexer validate --config-path=~/bitcoin-indexer/bitcoin-indexer/bitcoin-indexer-config.toml -[32m✓[0m Configuration valid -[32m✓[0m Bitcoin node reachable -[32m✓[0m PostgreSQL databases accessible -[32m✓[0m Storage directory writable -``` diff --git a/content/docs/es/tools/bitcoin-indexer/(indexer)/full-sync.mdx b/content/docs/es/tools/bitcoin-indexer/(indexer)/full-sync.mdx deleted file mode 100644 index 01f452085..000000000 --- a/content/docs/es/tools/bitcoin-indexer/(indexer)/full-sync.mdx +++ /dev/null @@ -1,192 +0,0 @@ ---- -title: Sincronización completa -sidebarTitle: Sincronización completa -description: Ejecuta el Indexador de Bitcoin desde cero. -isNew: true ---- -import { ArrowRight, Check } from 'lucide-react'; - -## Lo que aprenderás - -:::objectives -* Configurar y configurar el Indexador de Bitcoin -* Ejecutar el indexador desde cero -* Monitorear el progreso de indexación de manera efectiva -::: - -## Requisitos previos - -:::prerequisites -* nodo Bitcoin Core ejecutándose con `txindex=1` -* PostgreSQL ejecutándose con bases de datos creadas -* Espacio de almacenamiento suficiente -::: - -:::callout -### Archivo bootstrap recomendado - -Si aún no lo has hecho, considera [inicialización desde archivos](/tools/bitcoin-indexer/archive-bootstrap) para ahorrar días de tiempo de indexación. -::: - -## Iniciar servicios de indexación - -El Bitcoin Indexer ejecuta servicios separados para cada metaprotocolo. Navega a tu directorio del indexer: - -```terminal -$ cd ~/bitcoin-indexer/bitcoin-indexer -``` - -### Ordinales de Índice (incluye BRC-20) - -```terminal -$ ./target/release/bitcoin-indexer ordinals service start --config-path=bitcoin-indexer-config.toml -``` - -### Runas de Índice - -En un terminal separado: - -```terminal -$ ./target/release/bitcoin-indexer runes service start --config-path=bitcoin-indexer-config.toml -``` - -:::callout -type: info - -### Construcción desde el código fuente - -Si estás descargando una versión desde nuestro lado, ejecuta `cargo build --release` después de navegar a la carpeta para compilar el proyecto. Este paso es necesario para usar `/target/release/bitcoin-indexer` para iniciar servicios. -::: - -## Monitorear el progreso de indexación - -### Verificar registros del servicio - -El indexador produce información detallada del progreso: - -```terminal -$ tail -f ~/bitcoin-indexer/bitcoin-indexer/ordinals.log -``` - -### Consultar estado del indexador vía API - -Una vez que el servidor API se inicia (generalmente después de unos pocos bloques): - -```terminal -$ curl http://localhost:3000/ordinals/v1/status -{ - "block_height": 819600, - "inscriptions_indexed": 52342567, - "latest_inscription_number": 52342567, - "sync_percentage": 99.93, - "blocks_behind": 523 -} -``` - -## Gestión de servicios - -### Detener servicios de forma elegante - -```terminal -$ ps aux | grep bitcoin-indexer -``` - -### Reiniciar después de la interrupción - -El indexador reanuda automáticamente desde el último bloque procesado: - -```terminal -$ ./target/release/bitcoin-indexer ordinals service start --config-path=bitcoin-indexer-config.toml -``` - -## Configuración del servicio Systemd - -Para despliegues de producción, usa systemd para gestionar servicios: - -### Crear servicio de Ordinals - -```bash title="/etc/systemd/system/bitcoin-indexer-ordinals.service" -[Unit] -Description=Bitcoin Indexer - Ordinals Service -After=network.target postgresql.service bitcoind.service - -[Service] -Type=simple -User=bitcoin-indexer -WorkingDirectory=/home/bitcoin-indexer/bitcoin-indexer -ExecStart=/home/bitcoin-indexer/bitcoin-indexer/target/release/bitcoin-indexer ordinals service start --config-path=bitcoin-indexer-config.toml -Restart=on-failure -RestartSec=30 - -[Install] -WantedBy=multi-user.target -``` - -### Crear servicio de Runas - -```bash title="/etc/systemd/system/bitcoin-indexer-runes.service" -[Unit] -Description=Bitcoin Indexer - Runes Service -After=network.target postgresql.service bitcoind.service - -[Service] -Type=simple -User=bitcoin-indexer -WorkingDirectory=/home/bitcoin-indexer/bitcoin-indexer -ExecStart=/home/bitcoin-indexer/bitcoin-indexer/target/release/bitcoin-indexer runes service start --config-path=bitcoin-indexer-config.toml -Restart=on-failure -RestartSec=30 - -[Install] -WantedBy=multi-user.target -``` - -### Habilitar e iniciar servicios - -```terminal -$ sudo systemctl daemon-reload -$ sudo systemctl enable bitcoin-indexer-ordinals bitcoin-indexer-runes -$ sudo systemctl start bitcoin-indexer-ordinals bitcoin-indexer-runes -$ sudo systemctl status bitcoin-indexer-ordinals -``` - -## Optimización de rendimiento - -### Durante la sincronización inicial - -Optimizar para el rendimiento durante la puesta al día: - -```toml title="bitcoin-indexer-config.toml" -[resources] -# Use more cores during initial sync -cpu_core_available = 12 -bitcoind_rpc_threads = 10 -``` - -### Después de alcanzar la punta de la cadena - -Reducir el uso de recursos para operación en estado estacionario: - -```toml -[resources] -# Reduce for normal operation -cpu_core_available = 4 -bitcoind_rpc_threads = 4 -``` - -## Verificar indexación exitosa - -### Verificar endpoints de API - -Prueba que las APIs están devolviendo datos: - -```terminal -o -$ curl http://localhost:3000/ordinals/v1/inscriptions/0 -``` - -## Próximos pasos - -:::next-steps -* [Archivos Hiro](/tools/bitcoin-indexer/archive-bootstrap): Omite semanas de indexación iniciando desde los archivos pre-indexados de Hiro. -* [Configuración avanzada](/tools/bitcoin-indexer/configuration): Configura el Indexer de Bitcoin para un rendimiento óptimo y personaliza la configuración de metaprotocolo. -::: diff --git a/content/docs/es/tools/bitcoin-indexer/(indexer)/installation.mdx b/content/docs/es/tools/bitcoin-indexer/(indexer)/installation.mdx deleted file mode 100644 index cda02d783..000000000 --- a/content/docs/es/tools/bitcoin-indexer/(indexer)/installation.mdx +++ /dev/null @@ -1,224 +0,0 @@ ---- -title: Instalación -description: Instale PostgreSQL y compile el Indexador de Bitcoin desde el código fuente en sistemas Linux. ---- -## Requisitos previos - -Antes de instalar el Indexador de Bitcoin, asegúrese de tener: - -* Un nodo de Bitcoin completamente sincronizado (ver [Configuración de nodo de Bitcoin](/tools/bitcoin-indexer/full-sync)) -* Ubuntu 20.04+ o Debian 11+ -* Al menos 32GB de RAM -* 2TB+ de almacenamiento NVMe rápido - -Instalar los paquetes del sistema requeridos: - -```terminal -$ sudo apt update -$ sudo apt install -y build-essential git curl pkg-config libssl-dev -``` - -## Instalar PostgreSQL - -El Indexador de Bitcoin requiere PostgreSQL 14 o superior para almacenar datos de metaprotocolo. - -### Agregar repositorio de PostgreSQL - -```terminal -$ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list' -$ curl -fsSL https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/postgresql.gpg -$ sudo apt update -``` - -### Instalar PostgreSQL 17 - -```terminal -$ sudo apt install postgresql-17 -$ echo 'export PATH=/usr/lib/postgresql/17/bin:$PATH' >> ~/.bashrc -$ source ~/.bashrc -``` - -### Configurar el directorio de datos de PostgreSQL - -Crear un directorio de datos personalizado para PostgreSQL: - -```terminal -$ mkdir -p ~/bitcoin-indexer/pgdata -$ sudo chown -R postgres:postgres ~/bitcoin-indexer/pgdata -``` - -Inicializar el clúster de base de datos: - -```terminal -$ sudo -u postgres env "PATH=$PATH" initdb -D ~/bitcoin-indexer/pgdata -[32mThe files belonging to this database system will be owned by user "postgres".[0m -[32mThis user must also own the server process.[0m -``` - -### Iniciar servidor PostgreSQL - -```terminal -$ sudo -u postgres env "PATH=$PATH" pg_ctl -D ~/bitcoin-indexer/pgdata start -[32mserver starting[0m -``` - -Verifique que PostgreSQL esté en ejecución: - -```terminal -$ sudo -u postgres psql -c "SELECT version();" -``` - -### Crear bases de datos - -Crear bases de datos separadas para cada metaprotocolo: - -```terminal -$ sudo -u postgres createdb -p 5432 ordinals -$ sudo -u postgres createdb -p 5432 brc20 -$ sudo -u postgres createdb -p 5432 runes -``` - -Establece la contraseña del usuario postgres: - -```terminal -$ sudo -u postgres psql -c "ALTER USER postgres WITH PASSWORD 'postgres';" -[32mALTER ROLE[0m -``` - -:::callout -type: warn - -### Nota de seguridad - -Utilice una contraseña fuerte en producción. La contraseña predeterminada 'postgres' es solo para desarrollo. -::: - -## Instalar Rust - -El Indexador de Bitcoin está escrito en Rust. Instale la última versión estable: - -```terminal -$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -$ source $HOME/.cargo/env -$ rustc --version -rustc 1.75.0 (82e1608df 2023-12-21) -``` - -## Construir Indexador de Bitcoin - -### Clonar el repositorio - -```terminal -$ cd ~/bitcoin-indexer -$ git clone https://github.com/hirosystems/bitcoin-indexer.git -$ cd bitcoin-indexer -``` - -### Compilar desde el código fuente - -```terminal -$ cargo build --release - [32mCompiling[0m bitcoin-indexer v0.1.0 - [32mFinished[0m release [optimized] target(s) in 4m 23s -``` - -El binario compilado estará en `target/release/bitcoin-indexer`. - -:::callout -### Tiempo de compilación - -La compilación inicial tarda entre 5 y 10 minutos. Las compilaciones posteriores son mucho más rápidas debido al almacenamiento en caché. -::: - -### Crear enlace simbólico para acceso global - -```terminal -$ sudo ln -s ~/bitcoin-indexer/bitcoin-indexer/target/release/bitcoin-indexer /usr/local/bin/bitcoin-indexer -``` - -Verificar instalación: - -```terminal -$ bitcoin-indexer --version -bitcoin-indexer 0.1.0 -``` - -## Crear estructura de directorios - -Configura los directorios necesarios para el indexador: - -```terminal -$ mkdir -p ~/bitcoin-indexer/{rocksdb-chainstate,archives,logs} -``` - -Propósitos del directorio: - -* `rocksdb-chainstate/` - Almacena el estado indexado de la cadena de bloques -* `archives/` - Archivos descargados del archivo comprimido para bootstrap -* `logs/` - Registros de aplicación y errores - -## Configurar servicio systemd - -Crear un servicio systemd para inicio automático: - -```bash title="/etc/systemd/system/bitcoin-indexer.service" -[Unit] -Description=Bitcoin Metaprotocol Indexer -After=network.target postgresql.service bitcoind.service - -[Service] -Type=simple -User=bitcoin-indexer -Group=bitcoin-indexer -WorkingDirectory=/home/bitcoin-indexer/bitcoin-indexer - -ExecStart=/usr/local/bin/bitcoin-indexer ordinals service start --config-path=/home/bitcoin-indexer/bitcoin-indexer/bitcoin-indexer-config.toml -Restart=on-failure -RestartSec=30 - -# Process management -KillMode=mixed -KillSignal=SIGTERM -TimeoutStopSec=300 - -# Security -NoNewPrivileges=true -PrivateTmp=true - -[Install] -WantedBy=multi-user.target -``` - -Habilitar el servicio: - -```terminal -$ sudo systemctl daemon-reload -$ sudo systemctl enable bitcoin-indexer -``` - -## Verificar instalación - -Verifique que todos los componentes estén instalados correctamente: - -```terminal -$ # Check Bitcoin node -$ bitcoin-cli getblockcount -820000 - -$ # Check PostgreSQL -$ sudo -u postgres psql -l | grep -E "ordinals|brc20|runes" - ordinals | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | - brc20 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | - runes | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | - -$ # Check indexer binary -$ bitcoin-indexer --help -Bitcoin Indexer - High-performance metaprotocol indexing engine -``` - -## Próximos pasos - -:::next-steps -* [Configurar el indexador](/tools/bitcoin-indexer/configuration): Configurar bitcoin-indexer-config.toml -* [Arranque desde archivos](/tools/bitcoin-indexer/archive-bootstrap): Acelerar la sincronización inicial con datos preindexados -::: diff --git a/content/docs/es/tools/bitcoin-indexer/(indexer)/node-installation.mdx b/content/docs/es/tools/bitcoin-indexer/(indexer)/node-installation.mdx deleted file mode 100644 index 55c3e6a50..000000000 --- a/content/docs/es/tools/bitcoin-indexer/(indexer)/node-installation.mdx +++ /dev/null @@ -1,221 +0,0 @@ ---- -title: Instalación de Node -description: Configurar y sincronizar un nodo de Bitcoin Core optimizado para el Indexador de Bitcoin. ---- -## Visión general - -El Indexador de Bitcoin requiere un nodo de Bitcoin Core completamente sincronizado con la indexación de transacciones habilitada. Esta guía explica cómo configurar un nodo específicamente configurado para la operación del indexador. - -## Descargar Bitcoin Core - -Descargue Bitcoin Core versión 25.0 o superior. Elija la versión correcta para la arquitectura de su procesador. - -### Crear directorio de Bitcoin - -```terminal -$ mkdir -p ~/bitcoin-indexer/bitcoin -$ cd ~/bitcoin-indexer/bitcoin -``` - -### Descargar y extraer - - - - - Para x86\_64 (Intel/AMD) - - - - Para ARM64 - - - - Instalar globalmente con enlaces simbólicos - - - - - ```terminal - $ curl -O https://bitcoincore.org/bin/bitcoin-core-25.1/bitcoin-25.1-x86_64-linux-gnu.tar.gz - $ tar -xzf bitcoin-25.1-x86_64-linux-gnu.tar.gz - ``` - - - - ```terminal - $ curl -O https://bitcoincore.org/bin/bitcoin-core-25.1/bitcoin-25.1-aarch64-linux-gnu.tar.gz - $ tar -xzf bitcoin-25.1-aarch64-linux-gnu.tar.gz - ``` - - - - ```terminal - $ sudo ln -s ~/bitcoin-indexer/bitcoin/bitcoin-25.1/bin/bitcoind /usr/local/bin/bitcoind - $ sudo ln -s ~/bitcoin-indexer/bitcoin/bitcoin-25.1/bin/bitcoin-cli /usr/local/bin/bitcoin-cli - ``` - - - -Verificar instalación: - -```terminal -$ bitcoind --version -Bitcoin Core version v25.1.0 -``` - -## Configurar para indexación - -### Crear directorio de datos - -```terminal -$ mkdir -p ~/bitcoin-indexer/bitcoin/chainstate -``` - -### Crear archivo de configuración - -```terminal -$ nano ~/bitcoin-indexer/bitcoin/bitcoin.conf -``` - -Agregue la siguiente configuración: - -```console ~/bitcoin-indexer/bitcoin/bitcoin.conf -# Data directory -datadir=/home/$USER/bitcoin-indexer/bitcoin/chainstate - -# Core settings -server=1 -txindex=1 -daemon=1 - -# RPC settings -rpcuser=user -rpcpassword=password -rpcport=8332 -rpcallowip=127.0.0.1 -rpcthreads=16 - -# ZeroMQ settings (required for indexer) -zmqpubrawblock=tcp://0.0.0.0:18543 -zmqpubrawtx=tcp://0.0.0.0:18544 -zmqpubhashtx=tcp://0.0.0.0:18545 -zmqpubhashblock=tcp://0.0.0.0:18546 - -# Performance settings -# Set to 16384 (16GB) during initial sync, reduce to 2048 after -dbcache=16384 -maxmempool=1000 -mempoolexpiry=72 - -# Network settings -listen=1 -maxconnections=125 - -# Deprecated RPC -deprecatedrpc=warnings -``` - -:::callout -type: warn - -### Nota de seguridad - -Utilice siempre una contraseña fuerte y única para el acceso RPC. El indexador utilizará estas credenciales para comunicarse con su nodo. -::: - -## Sincronización inicial de la cadena de bloques - -Inicie Bitcoin Core con su configuración: - -```terminal -$ bitcoind -conf=$HOME/bitcoin-indexer/bitcoin/bitcoin.conf -``` - -:::callout -### Tiempo de sincronización inicial - -La sincronización inicial de la cadena de bloques tarda de 1 a 3 días dependiendo del hardware y la velocidad de la red. El nodo descargará aproximadamente 600GB de datos. -::: - -Monitorear el progreso de sincronización en otra terminal: - -```terminal -$ bitcoin-cli -conf=$HOME/bitcoin-indexer/bitcoin/bitcoin.conf getblockchaininfo | jq '{blocks, headers, verificationprogress}' -``` - -También puedes monitorear el estado detallado de sincronización: - -```terminal -$ bitcoin-cli -conf=$HOME/bitcoin-indexer/bitcoin/bitcoin.conf getblockchaininfo | jq '{chain, blocks, headers, bestblockhash, verificationprogress, size_on_disk}' -``` - -## Verificar la compatibilidad del indexador - -Una vez sincronizado, verifique que el nodo esté configurado correctamente: - -```terminal -o -$ bitcoin-cli -conf=$HOME/bitcoin-indexer/bitcoin/bitcoin.conf getindexinfo -{ - "txindex": { - "synced": true, - "best_block_height": 820000 - } -} -$ bitcoin-cli -conf=$HOME/bitcoin-indexer/bitcoin/bitcoin.conf getzmqnotifications -[ - { - "type": "pubrawblock", - "address": "tcp://0.0.0.0:18543", - "hwm": 1000 - }, - { - "type": "pubrawtx", - "address": "tcp://0.0.0.0:18544", - "hwm": 1000 - } -] -``` - -## Configuración del servicio systemd - -Crear un servicio systemd para inicio automático: - -```console /etc/systemd/system/bitcoind.service -[Unit] -Description=Bitcoin Core Daemon -After=network.target - -[Service] -Type=notify -ExecStart=/usr/local/bin/bitcoind -conf=/home/bitcoin-indexer/bitcoin/bitcoin.conf -User=bitcoin-indexer -Group=bitcoin-indexer -Restart=on-failure -RestartSec=30 - -# Security hardening -NoNewPrivileges=true -PrivateTmp=true -ProtectSystem=strict -ReadWritePaths=/home/bitcoin-indexer/bitcoin/chainstate - -[Install] -WantedBy=multi-user.target -``` - -Habilite e inicie el servicio: - -```terminal -$ sudo systemctl enable bitcoind -$ sudo systemctl start bitcoind -$ sudo systemctl status bitcoind -[32m●[0m bitcoind.service - Bitcoin Core Daemon - Active: [32mactive (running)[0m -``` - -## Próximos pasos - -:::next-steps -* [Configurar el indexador](/tools/bitcoin-indexer/configuration): Configurar el Indexador de Bitcoin para conectarse a tu nodo -* [Arrancar desde archivo](/tools/bitcoin-indexer/archive-bootstrap): Salta la espera con archivos pre-sincronizados -::: diff --git a/content/docs/es/tools/bitcoin-indexer/(integrations)/ordinals-api.mdx b/content/docs/es/tools/bitcoin-indexer/(integrations)/ordinals-api.mdx deleted file mode 100644 index f68726c0a..000000000 --- a/content/docs/es/tools/bitcoin-indexer/(integrations)/ordinals-api.mdx +++ /dev/null @@ -1,233 +0,0 @@ ---- -title: Ejecutando tu propia API de Ordinals -sidebarTitle: Integración de API de Ordinales -description: Puntos finales de la API REST para consultar inscripciones de Ordinals, colecciones y rareza de satoshis. ---- -## Resumen - -La API de Ordinals proporciona acceso integral a datos de inscripciones, artefactos digitales y seguimiento de satoshis. Todos los puntos de acceso devuelven JSON y admiten paginación para conjuntos de resultados grandes. - -URL base: `http://localhost:3000/ordinals/v1` - -## Autenticación - -La API está abierta por defecto. Para implementaciones en producción, configure claves de API: - -```bash title="bitcoin-indexer.toml" -[api] -require_auth = true -api_keys = ["your-api-key-here"] -``` - -Incluya la clave API en las solicitudes: - -```bash -Authorization: Bearer your-api-key-here -``` - -## Puntos finales de inscripción - -### Obtener inscripción \[#get-inscription] - -`GET /inscriptions/{inscription_id}` recupera detalles de inscripción por ID o número. - -```terminal -$ curl http://localhost:3000/ordinals/v1/inscriptions/0 -``` - -```json -{ - "id": "6fb976ab49dcec017f1e201e84395983204ae1a7c2abf7ced0a85d692e442799i0", - "number": 0, - "address": "bc1pxaneaf3w4d27hl2y93fuft2xk6m4u3wc4rafevc6slgd7f5tq2dqynekta", - "genesis_address": "bc1pxaneaf3w4d27hl2y93fuft2xk6m4u3wc4rafevc6slgd7f5tq2dqynekta", - "genesis_block_height": 767430, - "genesis_block_hash": "00000000000000000002a90330a99f67e3f01eb2ce070b45930581e82fb7ddad", - "genesis_tx_id": "6fb976ab49dcec017f1e201e84395983204ae1a7c2abf7ced0a85d692e442799", - "genesis_fee": "0", - "genesis_timestamp": 1670913723, - "content_type": "text/plain;charset=utf-8", - "content_length": 793, - "sat_ordinal": "1252201400444387", - "sat_rarity": "common", - "sat_coinbase_height": 59291 -} -``` - -### Lista de inscripciones \[#list-inscriptions] - -`GET /inscriptions` devuelve una lista paginada de inscripciones. - -| Parámetro | Tipo | Descripción | -|-----------|------|-------------| -| `limit` | número | Resultados por página (máx. 100) | -| `offset` | número | Número de resultados a omitir | -| `address` | string | Filtrar por dirección del propietario | -| `mime_type` | string | Filtrar por tipo MIME | -| `from_block` | número | Altura del bloque inicial | -| `to_block` | número | Altura final del bloque | - -```terminal -$ curl "http://localhost:3000/ordinals/v1/inscriptions?limit=5&mime_type=image/png" -``` - -### Obtener contenido de inscripción \[#get-content] - -`GET /inscriptions/{inscription_id}/content` devuelve el contenido bruto de la inscripción. - -```terminal -$ curl http://localhost:3000/ordinals/v1/inscriptions/0/content -hello world -``` - -Para contenido binario (imágenes, etc.), se establecen los encabezados Content-Type apropiados. - -## Puntos finales de colección - -### Listar colecciones \[#list-collections] - -`GET /collections` devuelve colecciones de Ordinals reconocidas. - -```terminal -$ curl http://localhost:3000/ordinals/v1/collections -``` - -```json -{ - "results": [ - { - "id": "bitcoin-punks", - "name": "Bitcoin Punks", - "inscription_count": 10000, - "holder_count": 3847, - "floor_price": 15000000, - "volume_24h": 580000000 - } - ], - "total": 156 -} -``` - -### Obtener detalles de la colección \[#get-collection] - -`GET /collections/{collection_id}` devuelve metadatos y estadísticas de la colección. - -## Puntos finales de Satoshi - -### Obtener información de satoshi \[#get-satoshi] - -`GET /sats/{ordinal}` devuelve detalles sobre un satoshi específico. - -```terminal -$ curl http://localhost:3000/ordinals/v1/sats/1252201400444387 -``` - -```json -{ - "ordinal": "1252201400444387", - "decimal": "59291.444387", - "rarity": "common", - "name": "ntwmwqcqfcb", - "block_height": 59291, - "offset": 444387, - "inscriptions": ["6fb976...42799i0"] -} -``` - -### Lista de rarezas de satoshi \[#list-rarities] - -`GET /sats/rarities` devuelve satoshis por clase de rareza. - -| Rareza | Descripción | -|--------|-------------| -| `mythic` | Primer bloque de génesis | -| `legendary` | Primer sat de la primera tx en el bloque | -| `epic` | Primer sábado después del halving | -| `rare` | Primer sábado después del ajuste de dificultad | -| `uncommon` | Primer sábado de cada bloque | -| `common` | Todos los demás sats | - -## Puntos finales de actividad - -### Obtener actividad reciente \[#recent-activity] - -`GET /activity` devuelve transferencias y ventas de inscripciones recientes. - -```terminal -$ curl "http://localhost:3000/ordinals/v1/activity?type=transfer&limit=10" -``` - -### Obtener actividad de dirección \[#address-activity] - -`GET /addresses/{address}/activity` devuelve la actividad para una dirección específica. - -## Puntos finales de estadísticas - -### Obtener estadísticas globales \[#global-stats] - -`GET /stats` devuelve estadísticas agregadas de Ordinals. - -```terminal -$ curl http://localhost:3000/ordinals/v1/stats -``` - -```json -{ - "total_inscriptions": 52342891, - "total_fees_paid": "4821.23", - "unique_mime_types": 847, - "holder_addresses": 892341, - "inscriptions_24h": 45123, - "volume_24h": "18.5" -} -``` - -## Suscripciones de Websocket - -Suscríbete a eventos de inscripción en tiempo real: - -```javascript -const ws = new WebSocket('ws://localhost:3000/ordinals/v1/subscribe'); - -ws.on('message', (data) => { - const event = JSON.parse(data); - // Handle inscription_revealed, inscription_transferred, etc. -}); - -// Subscribe to specific events -ws.send(JSON.stringify({ - type: 'subscribe', - events: ['inscription_revealed'], - filters: { mime_type: 'image/*' } -})); -``` - -## Respuestas de error - -Todos los errores devuelven una estructura JSON consistente: - -```json -{ - "error": { - "code": "NOT_FOUND", - "message": "Inscription not found", - "details": { - "inscription_id": "invalid123" - } - } -} -``` - -| Código | Estado HTTP | Descripción | -|------|-------------|-------------| -| `NOT_FOUND` | 404 | Recurso no encontrado | -| `INVALID_REQUEST` | 400 | Solicitud mal formada | -| `RATE_LIMITED` | 429 | Demasiadas solicitudes | -| `INTERNAL_ERROR` | 500 | Error del servidor | - -## Próximos pasos - -:::next-steps -* [API de Runas](/tools/bitcoin-indexer/runes-api): Consultar tokens y saldos de Runes -* [API de Ordinales](/tools/bitcoin-indexer/ordinals-api): Acceder a datos de Ordinales -::: diff --git a/content/docs/es/tools/bitcoin-indexer/(integrations)/runes-api.mdx b/content/docs/es/tools/bitcoin-indexer/(integrations)/runes-api.mdx deleted file mode 100644 index b96daed24..000000000 --- a/content/docs/es/tools/bitcoin-indexer/(integrations)/runes-api.mdx +++ /dev/null @@ -1,233 +0,0 @@ ---- -title: Ejecutando tu propia API de Runas -sidebarTitle: Integración de API de runas -description: Puntos finales de la API REST para consultar grabados de Runas ---- -## Visión general - -La API de Runes proporciona acceso integral a datos de inscripciones, artefactos digitales y seguimiento de satoshis. Todos los puntos finales devuelven JSON y admiten paginación para conjuntos de resultados grandes. - -URL base: `http://localhost:3000/runes/v1` - -## Autenticación - -La API está abierta por defecto. Para implementaciones en producción, configure claves de API: - -```bash title="bitcoin-indexer.toml" -[api] -require_auth = true -api_keys = ["your-api-key-here"] -``` - -Incluya la clave API en las solicitudes: - -```bash -Authorization: Bearer your-api-key-here -``` - -## Puntos finales de inscripción - -### Obtener inscripción \[#get-inscription] - -`GET /inscriptions/{inscription_id}` recupera detalles de inscripción por ID o número. - -```terminal -$ curl http://localhost:3000/runes/v1/inscriptions/0 -``` - -```json -{ - "id": "6fb976ab49dcec017f1e201e84395983204ae1a7c2abf7ced0a85d692e442799i0", - "number": 0, - "address": "bc1pxaneaf3w4d27hl2y93fuft2xk6m4u3wc4rafevc6slgd7f5tq2dqynekta", - "genesis_address": "bc1pxaneaf3w4d27hl2y93fuft2xk6m4u3wc4rafevc6slgd7f5tq2dqynekta", - "genesis_block_height": 767430, - "genesis_block_hash": "00000000000000000002a90330a99f67e3f01eb2ce070b45930581e82fb7ddad", - "genesis_tx_id": "6fb976ab49dcec017f1e201e84395983204ae1a7c2abf7ced0a85d692e442799", - "genesis_fee": "0", - "genesis_timestamp": 1670913723, - "content_type": "text/plain;charset=utf-8", - "content_length": 793, - "sat_ordinal": "1252201400444387", - "sat_rarity": "common", - "sat_coinbase_height": 59291 -} -``` - -### Lista de inscripciones \[#list-inscriptions] - -`GET /inscriptions` devuelve una lista paginada de inscripciones. - -| Parámetro | Tipo | Descripción | -|-----------|------|-------------| -| `limit` | número | Resultados por página (máx. 100) | -| `offset` | número | Número de resultados a omitir | -| `address` | string | Filtrar por dirección del propietario | -| `mime_type` | string | Filtrar por tipo MIME | -| `from_block` | número | Altura del bloque inicial | -| `to_block` | número | Altura final del bloque | - -```terminal -$ curl "http://localhost:3000/runes/v1/inscriptions?limit=5&mime_type=image/png" -``` - -### Obtener contenido de inscripción \[#get-content] - -`GET /inscriptions/{inscription_id}/content` devuelve el contenido bruto de la inscripción. - -```terminal -$ curl http://localhost:3000/runes/v1/inscriptions/0/content -hello world -``` - -Para contenido binario (imágenes, etc.), se establecen los encabezados Content-Type apropiados. - -## Puntos finales de colección - -### Listar colecciones \[#list-collections] - -`GET /collections` devuelve colecciones de Ordinals reconocidas. - -```terminal -$ curl http://localhost:3000/runes/v1/collections -``` - -```json -{ - "results": [ - { - "id": "bitcoin-punks", - "name": "Bitcoin Punks", - "inscription_count": 10000, - "holder_count": 3847, - "floor_price": 15000000, - "volume_24h": 580000000 - } - ], - "total": 156 -} -``` - -### Obtener detalles de la colección \[#get-collection] - -`GET /collections/{collection_id}` devuelve metadatos y estadísticas de la colección. - -## Puntos finales de Satoshi - -### Obtener información de satoshi \[#get-satoshi] - -`GET /sats/{ordinal}` devuelve detalles sobre un satoshi específico. - -```terminal -$ curl http://localhost:3000/runes/v1/sats/1252201400444387 -``` - -```json -{ - "ordinal": "1252201400444387", - "decimal": "59291.444387", - "rarity": "common", - "name": "ntwmwqcqfcb", - "block_height": 59291, - "offset": 444387, - "inscriptions": ["6fb976...42799i0"] -} -``` - -### Lista de rarezas de satoshi \[#list-rarities] - -`GET /sats/rarities` devuelve satoshis por clase de rareza. - -| Rareza | Descripción | -|--------|-------------| -| `mythic` | Primer sat del bloque génesis | -| `legendary` | Primer sat de la primera tx en el bloque | -| `epic` | Primer sábado después del halving | -| `rare` | Primer sábado después del ajuste de dificultad | -| `uncommon` | Primer sábado de cada bloque | -| `common` | Todos los demás sats | - -## Puntos finales de actividad - -### Obtener actividad reciente \[#recent-activity] - -`GET /activity` devuelve transferencias y ventas de inscripciones recientes. - -```terminal -$ curl "http://localhost:3000/runes/v1/activity?type=transfer&limit=10" -``` - -### Obtener actividad de la dirección \[#address-activity] - -`GET /addresses/{address}/activity` devuelve la actividad para una dirección específica. - -## Puntos finales de estadísticas - -### Obtener estadísticas globales \[#global-stats] - -`GET /stats` devuelve estadísticas agregadas de Ordinals. - -```terminal -$ curl http://localhost:3000/runes/v1/stats -``` - -```json -{ - "total_inscriptions": 52342891, - "total_fees_paid": "4821.23", - "unique_mime_types": 847, - "holder_addresses": 892341, - "inscriptions_24h": 45123, - "volume_24h": "18.5" -} -``` - -## Suscripciones de Websocket - -Suscríbete a eventos de inscripción en tiempo real: - -```javascript -const ws = new WebSocket('ws://localhost:3000/runes/v1/subscribe'); - -ws.on('message', (data) => { - const event = JSON.parse(data); - // Handle inscription_revealed, inscription_transferred, etc. -}); - -// Subscribe to specific events -ws.send(JSON.stringify({ - type: 'subscribe', - events: ['inscription_revealed'], - filters: { mime_type: 'image/*' } -})); -``` - -## Respuestas de error - -Todos los errores devuelven una estructura JSON consistente: - -```json -{ - "error": { - "code": "NOT_FOUND", - "message": "Inscription not found", - "details": { - "inscription_id": "invalid123" - } - } -} -``` - -| Código | Estado HTTP | Descripción | -|------|-------------|-------------| -| `NOT_FOUND` | 404 | Recurso no encontrado | -| `INVALID_REQUEST` | 400 | Solicitud mal formada | -| `RATE_LIMITED` | 429 | Demasiadas solicitudes | -| `INTERNAL_ERROR` | 500 | Error del servidor | - -## Próximos pasos - -:::next-steps -* [API de Runas](/tools/bitcoin-indexer/runes-api): Consultar tokens y saldos de Runes -* [API de Ordinales](/tools/bitcoin-indexer/ordinals-api): Acceder a datos de Ordinales -::: diff --git a/content/docs/es/tools/bitcoin-indexer/index.mdx b/content/docs/es/tools/bitcoin-indexer/index.mdx deleted file mode 100644 index d15e15f32..000000000 --- a/content/docs/es/tools/bitcoin-indexer/index.mdx +++ /dev/null @@ -1,44 +0,0 @@ ---- -title: Indexador de Bitcoin -sidebarTitle: Visión general -description: El Indexador de Bitcoin es un motor de indexación de alto rendimiento, consciente de las reorganizaciones, que rastrea los metaprotocolos de Bitcoin y proporciona puntos finales de API para Ordinals, Runes y tokens BRC-20. -llm: false ---- -## Visión general - -El Indexador de Bitcoin se conecta a tu nodo de Bitcoin, procesa bloques en tiempo real, almacena datos de metaprotocolos en PostgreSQL y proporciona APIs REST para cada protocolo. - -## Características principales - -* **Indexación de metaprotocolo** - Soporte integrado para Ordinals, Runes y BRC-20 con arquitectura extensible -* **Procesamiento consciente de la reorganización** - Maneja automáticamente las bifurcaciones y reorganizaciones de la cadena -* **Puntos finales de la API REST** - APIs listas para producción para Ordinals y Runes -* **Arranque inicial del archivo** - Sincronización rápida desde los archivos de Hiro en lugar de indexación completa - -## Instalación - -```terminal -$ git clone https://github.com/hirosystems/bitcoin-indexer.git -$ cd bitcoin-indexer && cargo build --release -``` - -Las imágenes de Docker también están disponibles: - -```terminal -$ docker pull hirosystems/bitcoin-indexer:latest -``` - -## Próximos pasos - -:::next-steps -* [Instalación de Node](/tools/bitcoin-indexer/node-installation): Configurar y sincronizar un nodo de Bitcoin Core optimizado para el Indexador de Bitcoin. -* [Sincronización completa](/tools/bitcoin-indexer/full-sync): Ejecutar el indexador desde cero -::: - -:::callout -type: help - -### ¿Necesitas ayuda con el Indexador de Bitcoin? - -Contáctenos en el #ordinales canal encendido [Discord](https://stacks.chat/) bajo la sección de Herramientas para Desarrolladores de Hiro. También hay una [horario de oficina semanal](https://www.addevent.com/event/kI22007085) llamada todos los miércoles a la 1 pm ET. -::: diff --git a/content/docs/es/tools/bitcoin-indexer/meta.json b/content/docs/es/tools/bitcoin-indexer/meta.json deleted file mode 100644 index 68985c084..000000000 --- a/content/docs/es/tools/bitcoin-indexer/meta.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "title": "Bitcoin Indexer", - "root": true, - "pages": ["---Bitcoin Indexer---", "index", "...(overview)", "...(indexer)"] -} diff --git a/hooks/use-localized-navigation.tsx b/hooks/use-localized-navigation.tsx index 7a9b7b08d..8916d5ec9 100644 --- a/hooks/use-localized-navigation.tsx +++ b/hooks/use-localized-navigation.tsx @@ -31,7 +31,6 @@ export function useLocalizedNavigation(): BaseLayoutProps['links'] { >([ ['/tools/chainhooks', t.tools.chainhook], ['/tools/contract-monitoring', t.tools.contractMonitoring], - ['/tools/bitcoin-indexer', t.tools.bitcoinIndexer], ['/resources/guides/api-keys', t.apis.apiKeys], ['/resources/guides/rate-limits', t.apis.rateLimits], ['/apis/stacks-blockchain-api', t.apis.stacksApi], @@ -39,8 +38,6 @@ export function useLocalizedNavigation(): BaseLayoutProps['links'] { ['/apis/token-metadata-api', t.apis.tokenMetadata], ['/apis/chainhooks-api', t.apis.chainhook], ['/apis/platform-api', t.apis.platform], - ['/apis/ordinals-api', t.apis.ordinals], - ['/apis/runes-api', t.apis.runes], ['/apis/signer-metrics-api', t.apis.signerMetrics], ['/resources/guides', t.resources.guides], ['/resources/archive', t.resources.archive], diff --git a/idioma.lock b/idioma.lock index a6f329e79..3a1fcfde1 100644 --- a/idioma.lock +++ b/idioma.lock @@ -12,10 +12,6 @@ files: content: 267c0e5edfb16ba5a22d68564718d7a1 translations: es: true - content/docs/en/tools/bitcoin-indexer/index.mdx: - content: e0e6fae95b0cde6724695ea676a50993 - translations: - es: true content/docs/en/resources/templates/index.mdx: content: 9098e08cf3996068116244ee0bc1aa4e translations: @@ -196,34 +192,6 @@ files: content: 11bacf870dcb86c65eb37cd0f7df05bc translations: es: true - content/docs/en/tools/bitcoin-indexer/(indexer)/node-installation.mdx: - content: 94fae442ea20991dfeac5649dc4e2ce1 - translations: - es: true - content/docs/en/tools/bitcoin-indexer/(indexer)/installation.mdx: - content: 8a39c91de862d7a5efed88f4e5d5a876 - translations: - es: true - content/docs/en/tools/bitcoin-indexer/(indexer)/full-sync.mdx: - content: 62f80fcdec2c44b2136a101c9c6d3047 - translations: - es: true - content/docs/en/tools/bitcoin-indexer/(indexer)/configuration.mdx: - content: 41784cdfcfb764a763ca5e6c08f17eb9 - translations: - es: true - content/docs/en/tools/bitcoin-indexer/(indexer)/archive-bootstrap.mdx: - content: 12eaf0811027fc98a2ea5f39eaf0651c - translations: - es: true - content/docs/en/tools/bitcoin-indexer/(integrations)/runes-api.mdx: - content: 326ce76f4db69ab02c71b48dae0e02f5 - translations: - es: true - content/docs/en/tools/bitcoin-indexer/(integrations)/ordinals-api.mdx: - content: 44c9029c1427ac773ed48752a144c2fa - translations: - es: true content/docs/en/resources/clarity/reference/types.mdx: content: 0a92f483db02bdc001dd30ad3c03dce1 translations: diff --git a/lib/metadata.ts b/lib/metadata.ts index bea0e9512..601bfe302 100644 --- a/lib/metadata.ts +++ b/lib/metadata.ts @@ -101,21 +101,6 @@ const guidesMetadata: Partial = { }, }; -const ordinalsApiMetadata: Partial = { - title: 'Ordinals API', - description: "Interact with Bitcoin Ordinals using Hiro's Ordinals API.", - openGraph: { - title: 'Ordinals API', - description: "Interact with Bitcoin Ordinals using Hiro's Ordinals API.", - images: [{ url: '/images/ordinals-api-og.jpg', width: 800, height: 600 }], - }, - twitter: { - title: 'Ordinals API', - description: "Interact with Bitcoin Ordinals using Hiro's Ordinals API.", - images: ['/images/ordinals-api-og.jpg'], - }, -}; - const platformApiMetadata: Partial = { title: 'Platform API', description: "Build applications with Hiro's Platform API services.", @@ -131,21 +116,6 @@ const platformApiMetadata: Partial = { }, }; -const runesApiMetadata: Partial = { - title: 'Runes API', - description: "Interact with Bitcoin Runes using Hiro's Runes API.", - openGraph: { - title: 'Runes API', - description: "Interact with Bitcoin Runes using Hiro's Runes API.", - images: [{ url: '/images/runes-api-og.jpg', width: 800, height: 600 }], - }, - twitter: { - title: 'Runes API', - description: "Interact with Bitcoin Runes using Hiro's Runes API.", - images: ['/images/runes-api-og.jpg'], - }, -}; - const signerMetricsApiMetadata: Partial = { title: 'Signer Metrics API', description: 'Monitor and analyze Stacks signing metrics with the Signer Metrics API.', @@ -197,21 +167,6 @@ const tokenMetadataApiMetadata: Partial = { }, }; -const bitcoinIndexerMetadata: Partial = { - title: 'Bitcoin Indexer', - description: 'Build accurate, lightweight databases with the Bitcoin Indexer.', - openGraph: { - title: 'Bitcoin Indexer', - description: 'Build accurate, lightweight databases with the Bitcoin Indexer.', - images: [{ url: '/images/bitcoin-indexer-og.jpg', width: 800, height: 600 }], - }, - twitter: { - title: 'Bitcoin Indexer', - description: 'Build accurate, lightweight databases with the Bitcoin Indexer.', - images: ['/images/bitcoin-indexer-og.jpg'], - }, -}; - export function createMetadata(override: Partial): Metadata { return { ...defaultMetadata, @@ -239,12 +194,9 @@ export function getRouteMetadata(path: string): Partial { if (path.startsWith('/stacks/hacks')) return hiroHacksMetadata; if (path.startsWith('/tools/chainhooks')) return chainhookMetadata; if (path.startsWith('/resources/guides')) return guidesMetadata; - if (path.startsWith('/apis/ordinals')) return ordinalsApiMetadata; if (path.startsWith('/apis/platform')) return platformApiMetadata; - if (path.startsWith('/apis/runes')) return runesApiMetadata; if (path.startsWith('/apis/signer-metrics')) return signerMetricsApiMetadata; if (path.startsWith('/apis/stacks-blockchain')) return stacksApiMetadata; if (path.startsWith('/apis/token-metadata')) return tokenMetadataApiMetadata; - if (path.startsWith('/tools/bitcoin-indexer')) return bitcoinIndexerMetadata; return {}; } diff --git a/lib/translations/en.ts b/lib/translations/en.ts index a3f1baa85..2ccb9edea 100644 --- a/lib/translations/en.ts +++ b/lib/translations/en.ts @@ -67,10 +67,6 @@ export const en: Translations = { title: 'Contract Monitoring', description: 'Monitor and analyze Clarity smart contract activity.', }, - bitcoinIndexer: { - title: 'Bitcoin Indexer', - description: 'Indexer for Bitcoin blockchain data.', - }, }, apis: { apiKeys: { @@ -102,14 +98,6 @@ export const en: Translations = { title: 'Platform API', description: 'API for accessing Hiro Platform data and functionality.', }, - ordinals: { - title: 'Ordinals API', - description: 'API for Bitcoin Ordinals and inscriptions data.', - }, - runes: { - title: 'Runes API', - description: 'API for Bitcoin Runes data.', - }, signerMetrics: { title: 'Signer Metrics API', description: 'API for accessing Signer metrics data and functionality.', diff --git a/lib/translations/es.ts b/lib/translations/es.ts index b9d7347a2..c6448fc78 100644 --- a/lib/translations/es.ts +++ b/lib/translations/es.ts @@ -67,10 +67,6 @@ export const es: Translations = { title: 'Monitoreo de Contratos', description: 'Monitorear y analizar la actividad de contratos inteligentes Clarity.', }, - bitcoinIndexer: { - title: 'Indexador de Bitcoin', - description: 'Indexador para datos de la blockchain de Bitcoin.', - }, }, apis: { apiKeys: { @@ -102,14 +98,6 @@ export const es: Translations = { title: 'API de Plataforma', description: 'API para acceder a datos y funcionalidad de la Plataforma Hiro.', }, - ordinals: { - title: 'API de Ordinales', - description: 'API para datos de Ordinales de Bitcoin e inscripciones.', - }, - runes: { - title: 'API de Runas', - description: 'API para datos de Runas de Bitcoin.', - }, signerMetrics: { title: 'API de Métricas de Firmante', description: 'API para acceder a datos y funcionalidad de métricas de Firmante.', diff --git a/lib/translations/types.ts b/lib/translations/types.ts index 7e9ee4054..89f57c57f 100644 --- a/lib/translations/types.ts +++ b/lib/translations/types.ts @@ -65,10 +65,6 @@ export interface Translations { title: string; description: string; }; - bitcoinIndexer: { - title: string; - description: string; - }; }; apis: { apiKeys: { @@ -99,14 +95,6 @@ export interface Translations { title: string; description: string; }; - ordinals: { - title: string; - description: string; - }; - runes: { - title: string; - description: string; - }; signerMetrics: { title: string; description: string; diff --git a/public/images/tools/bitcoin-indexer/overview.svg b/public/images/tools/bitcoin-indexer/overview.svg deleted file mode 100644 index 078b3b1b3..000000000 --- a/public/images/tools/bitcoin-indexer/overview.svg +++ /dev/null @@ -1,104 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/scripts/fetch-openapi-specs.mts b/scripts/fetch-openapi-specs.mts index 264a3b1ae..77819827c 100644 --- a/scripts/fetch-openapi-specs.mts +++ b/scripts/fetch-openapi-specs.mts @@ -23,22 +23,6 @@ interface GitHubApiSpec { } const API_SPECS: ApiSpec[] = [ - { - name: 'token-metadata', - url: 'https://token-metadata-api.vercel.app/openapi.json', - }, - { - name: 'signer-metrics', - url: 'https://signer-metrics-api.vercel.app/openapi.json', - }, - { - name: 'ordinals', - url: 'https://ordinals-api.vercel.app/openapi.json', - }, - { - name: 'runes', - url: 'https://runes-api.vercel.app/openapi.json', - }, { name: 'chainhook', url: 'https://chainhooks-api.vercel.app/openapi.json', @@ -60,6 +44,20 @@ const GITHUB_API_SPECS: GitHubApiSpec[] = [ branch: 'master', filePath: 'openapi.yaml', }, + { + name: 'token-metadata', + type: 'github', + repo: 'stx-labs/token-metadata-api', + branch: 'master', + filePath: 'openapi.yaml', + }, + { + name: 'signer-metrics', + type: 'github', + repo: 'stx-labs/signer-metrics-api', + branch: 'main', + filePath: 'openapi.yaml', + } ]; async function generatePlatformApiSpec(): Promise { diff --git a/vercel.json b/vercel.json index 81bf70afb..e0f05ae6b 100644 --- a/vercel.json +++ b/vercel.json @@ -79,11 +79,6 @@ "destination": "/apis/stacks-blockchain-api", "permanent": true }, - { - "source": "/bitcoin/ordinals/:path*", - "destination": "/apis/ordinals-api", - "permanent": true - }, { "source": "/clarinet", "destination": "https://docs.stacks.co/reference", @@ -104,7 +99,6 @@ "destination": "/apis/token-metadata-api", "permanent": true }, - { "source": "/bitcoin/runes/:path*", "destination": "/apis/runes-api", "permanent": true }, { "source": "/stacks/:path*", "destination": "/", "permanent": true }, { "source": "/bitcoin/:path*", "destination": "/", "permanent": true }, { "source": "/cookbook/:path*", "destination": "/resources", "permanent": true }