### Compile Binaries Source: https://docs.cid.contact/running-indexer-node/setup Compiles the storetheindex binaries from the source code. ```bash make build ``` -------------------------------- ### Start Indexer Node Daemon Source: https://docs.cid.contact/running-indexer-node/setup Starts the Indexer node daemon after initialization and configuration. ```bash ./storetheindex daemon ``` -------------------------------- ### Clone storetheindex Repository Source: https://docs.cid.contact/running-indexer-node/setup Clones the storetheindex repository from GitHub to the local machine. ```bash git clone https://github.com/filecoin-project/storetheindex.git ``` -------------------------------- ### Checkout Latest Stable Release Source: https://docs.cid.contact/running-indexer-node/setup Checks out the latest stable release tag of the storetheindex repository. Replace `` with the actual tag, e.g., v0.4.17. ```bash git checkout ``` ```bash Example: git checkout v0.4.17 ``` -------------------------------- ### Indexer Init Command Documentation Source: https://docs.cid.contact/running-indexer-node/setup Provides detailed information and options for initializing the indexer node configuration. This includes setting cache size, listen addresses for various APIs, Lotus gateway connection, bootstrap peers, pubsub topic, and value store type. ```APIDOC indexer init --help NAME: indexer init - Initialize or upgrade indexer node config file USAGE: indexer init [command options] [arguments...] OPTIONS: --cachesize value Maximum number of multihashes that result cache can hold, -1 to disable cache (default: 0) --listen-admin value Admin HTTP API listen address [$STORETHEINDEX_LISTEN_ADMIN] --listen-finder value Finder HTTP API listen address [$STORETHEINDEX_LISTEN_FINDER] --listen-ingest value Ingestion and discovery HTTP API listen address [$STORETHEINDEX_LISTEN_INGEST] --lotus-gateway value Address for a lotus gateway to collect chain information [$STORETHEINDEX_LOTUS_GATEWAY] --no-bootstrap Do not configure bootstrap peers (default: false) [$NO_BOOTSTRAP] --pubsub-topic value Subscribe to this pubsub topic to receive advertisement notification [$STORETHEINDE_PUBSUB_TOPIC] --store value, -s value Type of value store (sth, pogreb). Default is "sth" [$STORETHEINDEX_VALUE_STORE] --upgrade, -u Upgrade the config file to the current version, saving the old config as config.prev, and ignoring other flags (default: false) indexer init --cachesize 1000 --listen-admin :8080 --listen-finder :8081 --listen-ingest :8082 --lotus-gateway "http://127.0.0.1:1234" Initializing indexer node at /home/indexer/.storetheindex generating ED25519 keypair...done peer identity: 12D3KooWQZewrcDawxTVrDXWTncbLjUvZdmCr9gfommdiiiY3J4P ``` -------------------------------- ### Initialize DagStore Shards Source: https://docs.cid.contact/index-provider/usage Starts the initialization process for DagStore shards. The `--concurrency` parameter controls the number of concurrent initializations, impacting system load. This step is crucial for re-indexing data blocks. ```shell lotus-miner dagstore initialize-all --concurrency=N # or if using a split market subsystem: lotus-miner --call-on-market dagstore initialize-all --concurrency=N ``` -------------------------------- ### Run Indexer Daemon Source: https://docs.cid.contact/index-provider/install Starts the `storetheindex` indexer service in the background. This daemon is responsible for syncing and querying data from providers. ```bash storetheindex daemon ``` -------------------------------- ### Indexer Advertisement Policy Example Source: https://docs.cid.contact/ingestion/overview Provides an example of policies an indexer might maintain to validate provider advertisements, including availability, dialability, and advertisement chain freshness. ```APIDOC Indexer Advertisement Policy Examples: - Provider Availability: Advertisements from a provider are valid only after it has been available for at least 2 days. - Provider Dialability Timeout: If a provider cannot be dialed for 3 days, its advertisements are no longer returned to clients. - Advertisement Chain Freshness: Previous advertisements no longer referenced by a new chain are not returned after 1 day of not being referenced. - Data Garbage Collection: If a provider cannot be dialed for 2 weeks, downloaded advertisements are garbage collected and require re-syncing. ``` -------------------------------- ### Build Indexer Binaries Source: https://docs.cid.contact/running-indexer-node/setup/kubernetes Compiles the storetheindex binaries using the 'make build' command. This step generates the executable files required to run the indexer node. ```shell make build ``` -------------------------------- ### Indexer Provider API Endpoints Source: https://docs.cid.contact/query-and-retrieve/querying-indexer-provider Provides details on querying an indexer node via HTTP for payload CIDs and multihashes. Includes GET and POST request formats. ```APIDOC GET /cid/ Description: Retrieves data associated with a payload CID. Example: GET /cid/bafybeigvgzoolc3drupxhlevdp2ugqcrbcsqfmcek2zxiw5wctk3xjpjwy GET /mh/ Description: Retrieves data associated with a multihash. Example: GET /mh/QmcgwdNjFQVhKt6aWWtSPgdLbNvULRoFMU6CCYwHsN3EEH POST /mh Description: Submits data for indexing or querying using a multihash. Requires a JSON body. Body: JSON payload structure can be found at https://github.com/filecoin-project/storetheindex/blob/f824c7f1f08c606bdc069e9454dfcf157680841e/api/v0/finder/model/model.go#L14-L16 ``` -------------------------------- ### Go libp2p Index Provider Publisher Source: https://docs.cid.contact/index-provider/install Demonstrates the usage of the `go-legs` library in Go to set up a libp2p Index Provider. It shows how to initialize a publisher and update the root advertisement CID, which triggers gossipsub messages. ```Go package main import ( "context" "fmt" "log" // Assuming these imports for go-legs and related components "github.com/filecoin-project/go-legs/dtsync" "github.com/ipfs/go-cid" // Other necessary imports like host, datastore, linksys, etc. ) func main() { ctx := context.Background() // Placeholder variables for dependencies // pubLibp2pHost := ... // Initialize your libp2p host // datastore := ... // Initialize your datastore // linksys := ... // Initialize your IPFS linksys topicName := "your-topic-name" // Example: Initialize a go-legs Publisher // pub, err := dtsync.NewPublisher(pubLibp2pHost, datastore, linksys, topicName) // if err != nil { // log.Fatalf("Failed to create publisher: %v", err) // } // Example: CID of a new Advertisement // newAdCid, err := cid.Parse("Qm...") // Replace with actual CID // if err != nil { // log.Fatalf("Failed to parse CID: %v", err) // } // Example: Update the root advertisement CID // err = pub.UpdateRoot(ctx, newAdCid) // if err != nil { // log.Fatalf("Failed to update root: %v", err) // } fmt.Println("Publisher initialized and root updated (example).") // The go-legs publisher handles datatransfer requests and gossipsub messages automatically. } ``` -------------------------------- ### Clone storetheindex Repository Source: https://docs.cid.contact/running-indexer-node/setup/kubernetes Clones the storetheindex repository from GitHub. This is the first step to obtain the necessary files and configurations for deploying the indexer. Ensure you are on a Linux machine. ```shell git clone https://github.com/filecoin-project/storetheindex.git ``` -------------------------------- ### Verify Lotus Miner Readiness Source: https://docs.cid.contact/index-provider/usage Commands to check if the lotus-miner and lotus-market processes are ready after deployment. These commands confirm that the miner is operational and can list storage deals and sectors. ```shell lotus-miner storage-deals list lotus-miner sectors list ``` -------------------------------- ### Initialize Indexer Node Source: https://docs.cid.contact/running-indexer-node/setup/kubernetes Initializes the storetheindex node, which generates libp2p keys (PeerID and Privkey) necessary for node operation and networking. The configuration is typically stored in `~/.storetheindex/config`. ```shell ./storetheindex init ``` -------------------------------- ### Checkout Latest Stable Release Source: https://docs.cid.contact/running-indexer-node/setup/kubernetes Checks out the latest stable release tag of the storetheindex repository. This ensures you are working with a tested and stable version of the code. Replace `` with the actual tag, e.g., v0.4.17. ```shell git checkout Example: git checkout v0.4.17 ``` -------------------------------- ### View Indexer Configuration Source: https://docs.cid.contact/running-indexer-node/setup/kubernetes Displays the content of the indexer configuration file, located at `~/.storetheindex/config`. This file contains essential information like the generated PeerID and Privkey, which are needed for Kubernetes deployment. ```shell cat ~/.storetheindex/config ``` -------------------------------- ### Go Client Library for Indexer Source: https://docs.cid.contact/query-and-retrieve/querying-indexer-provider References the Go client library available in the storetheindex repository for interacting with indexer nodes over HTTP and libp2p. ```Go // The storetheindex repository provides a client library for querying indexer nodes. // It supports both HTTP and libp2p connections. // Example usage can be found in the 'find' command implementation: // https://github.com/filecoin-project/storetheindex/tree/main/api/v0/finder/client ``` -------------------------------- ### Verify Index Ingestion with provider CLI Source: https://docs.cid.contact/index-provider/usage This script iterates through DagStore index files, samples multihashes, and verifies their ingestion by indexer nodes. It requires miner ID and DagStore repository path as arguments. ```shell #!/usr/bin/env sh MINER_ID="${1:?miner peer ID must be specified as the first argument}" DAGSTORE_REPO="${2:?dagstore repo location must be specified as the second argument}" SAMPLING_PROB="${3-0.05}" echo "MINER_ID: ${MINER_ID}" echo "DAGSTORE_REPO: ${DAGSTORE_REPO}" echo "SAMPLING_PROB: ${SAMPLING_PROB}" echo "" for idx in ${DAGSTORE_REPO}/index/*.full.idx doit echo "Verifying ${idx}" provider verify-ingest \ --to cid.contact:80 \ --print-unindexed-mhs \ --provider-id "${MINER_ID}" \ --from-car-index "${idx}" \ --sampling-prob "${SAMPLING_PROB}" echo "" done ``` -------------------------------- ### Build Local Docker Image Source: https://docs.cid.contact/running-indexer-node/setup/kubernetes Builds a local Docker image for the storetheindex node. This is an alternative to using pre-built images from Docker Hub, allowing for custom builds. It requires cloning the repository and checking out a specific tag first. ```shell git clone https://github.com/filecoin-project/storetheindex.git git checkout Example: git checkout v0.4.17 make docker ``` -------------------------------- ### Indexer CLI Find Command Source: https://docs.cid.contact/query-and-retrieve/querying-indexer-provider Shows how to use the 'find' command from indexer binaries like 'storetheindex' and 'index-provider' to query indexer nodes. ```bash provider find --help ``` ```bash storetheindex find --help ``` -------------------------------- ### Configure Logging Subsystems Source: https://docs.cid.contact/index-provider/usage Sets the log level for specific subsystems within the Lotus market node to 'INFO'. This command helps in debugging by ensuring relevant logs are captured during the upgrade process. ```shell lotus-miner --call-on-markets log set-level --system provider/engine --system go-legs-gpubsub --system dagstore info ``` -------------------------------- ### List Provider Entries Source: https://docs.cid.contact/index-provider/install Uses the index provider's command-line interface (CLI) to list all multihashes and related metadata that the provider is advertising. This is useful for identifying multihashes to test queries against. ```bash provider list -e -p "/ip4/127.0.0.1/tcp/8070/http/p2p/12D3KooWGVwcVphAgpXjJWHoWyKZUrZsXyc34jeuUmG5nSRZyuQq" ``` -------------------------------- ### Libp2p Graphsync Advertisement Transfer Source: https://docs.cid.contact/ingestion/overview Describes how advertisement chains are provided over libp2p using Graphsync. It details the configuration on a libp2p host, the identification of index advertisement requests via Legs vouchers and CIDs, and the use of selectors. It also mentions the custom 'head' multiprotocol for querying the latest advertisement. ```APIDOC Libp2p Graphsync Advertisement Provider: - Configured on the common graphsync multiprotocol of the libp2p host. - Request Identification: - Uses a ['Legs'](https://github.com/filecoin-project/go-legs/blob/main/dtsync/voucher.go#L17-L24) voucher in the request. - Requires a CID of either the most recent advertisement or a specific Entries pointer. - Utilizes a selector for the advertisement chain or an entries list. - Related Implementations: - Core graphsync provider: [go-legs](https://github.com/filecoin-project/go-legs) - Full provider integration: [index-provider](https://github.com/filecoin-project/index-provider) Libp2p Head Protocol: - Exposes a custom 'head' multiprotocol on the libp2p host. - Protocol Name: `/legs/head//` - Implementation: HTTP TCP stream. - Request: GET /head - Response Body: String representation of the root CID. ``` -------------------------------- ### Identity Configuration Parameters Source: https://docs.cid.contact/running-indexer-node/configuration Defines parameters for setting the peer identity of the indexer. Includes PeerID for matching the indexer to its PrivKey and PrivKey itself, which can be loaded from a file if unset. ```APIDOC Identity: PeerID: 12D3KooWJZSPZN7cudwBJ6UdTm8V5FmgWhAd2oVa8qFagU7bZSm1 - PeerID is the peer ID of the indexer that must match the given PrivKey. If unspecified, it is automatically generated from the PrivKey. There is no default value. This is generated during initialization. PrivKey: CAESQKP70L69Q7An97xPH6g3PgSypws6mHYcAZ77t9pC2a0/geY+Kh3gaSzfPqHpSyjy7Fd3hQPweU+BNbhhKHSHrJw= - PrivKey represents the peer identity of the indexer. If unset, the key is loaded from the file at the path specified via STORETHEINDEX_PRIV_KEY_PATH environment variable. There is no default value. This is generated during initialization. ``` -------------------------------- ### Discovery Configuration Parameters Source: https://docs.cid.contact/running-indexer-node/configuration Configuration settings for the discovery process, including gateway URLs, provider policies, polling intervals, retry logic, and timeouts. These parameters control how the system interacts with and monitors providers on the blockchain. ```APIDOC Discovery Configuration: LotusGateway: The host or host:port for a lotus gateway used to verify providers on the blockchain. Example: "https://api.chain.love" Policy: Configures which providers are allowed and blocked, rate-limited, and allow to publish on behalf of others. Reference: #discovery.policy PollInterval: The amount of time to wait without getting any updates for a provider before sending a request for the latest advertisement. Values are a number ending in "s", "m", "h" for seconds, minutes, hours. Example: "24h0m0s" PollRetryAfter: The amount of time from one poll attempt, without a response, to the next poll attempt, and is also the time between checks for providers to poll. This value must be smaller than PollStopAfter for there to be more than one poll attempt for a provider. Example: "5h0m0s" PollStopAfter: The amount of time, from the start of polling, to continuing polling for the latest advertisement without getting a response. Example: "168h0m0s" PollOverrides: Configures polling for specific providers. Reference: #discovery.polloverrides RediscoverWait: The amount of time that must pass before a provider can be discovered following a previous discovery attempt. A value of 0 means there is no wait time. Example: "5m0s" Timeout: The maximum amount of time that the indexer will spend trying to discover and verify a new provider. Example: "2m0s" ``` -------------------------------- ### Logging Configuration Parameters Source: https://docs.cid.contact/running-indexer-node/configuration Defines parameters for setting log levels within the storetheindex daemon. The 'Level' parameter sets a global default, while 'Loggers' allows fine-grained control for specific components. ```APIDOC Logging: Level: info - Sets the default log level for all loggers. - Default value: "info" Loggers: {"basichost": "warn", "bootstrap": "warn", "dt-impl": "warn", "dt_graphsync": "warn", "graphsync": "warn"} - Sets log levels for individual loggers. - Example structure: "Loggers": { "logger_name": "level" } ``` -------------------------------- ### IndexProvider Configuration Options Source: https://docs.cid.contact/index-provider/usage Configuration settings for the IndexProvider component, controlling cache size, chunking, and gossipsub topics for advertisement publishing. ```toml [IndexProvider] # The maximum number of multihash chunk links that index provider cache can store before # LRU eviction. If chunks belonging to a single advertisement are larger than the cache can # hold, the cache is resized to be able to hold all links. The actual disk usage depends on # LinkedChunkSize and the length of multihashes. For example, for 128-bit long multihashes # with the default LinkedChunkSize, and LinkCacheSize the cache size can grow to 256MiB. # # type int # env var: LOTUS_INDEXPROVIDER_LINKCACHESIZE #LinkCacheSize = 1024 # The number of multihashes in each chunk of the # advertised multihash entries linked list. If multihashes are 128-bit, then # setting LinkedChunkSize = 16384 will result in blocks of 0.25MiB when # full. # # type int # env var: LOTUS_INDEXPROVIDER_LINKEDCHUNKSIZE #LinkedChunkSize = 16384 # The gossipsub topic name used to publish change to the advertised content. # # env var: LOTUS_INDEXPROVIDER_PUBSUBTOPIC #PubSubTopic = "/indexer/ingest/mainnet" # Whether to purge all cached entries on start-up. # # env var: LOTUS_INDEXPROVIDER_PURGELINKCACHE ``` -------------------------------- ### Indexer Configuration Parameters Source: https://docs.cid.contact/running-indexer-node/configuration Details the configurable parameters for the indexer, including cache size, update check intervals, garbage collection, shutdown timeouts, and value store settings. ```APIDOC Indexer Configuration Parameters: CacheSize: - Description: Maximum number of CIDs that cache can hold. Setting to -1 disables the cache. - Example: 300000 - Type: integer ConfigCheckInterval: - Description: ConfigCheckInterval is the time between config file update checks. - Example: 30s - Type: duration GCInterval: - Description: GCInterval configures the garbage collection interval for valuestores that support it. - Example: 30m0s - Type: duration ShutdownTimeout: - Description: ShutdownTimeout is the duration that a graceful shutdown has to complete before the daemon process is terminated. - Example: 10s - Type: duration ValueStoreDir: - Description: Directory where value store is kept. If this is not an absolute path then the location is relative to the indexer repo directory. - Example: valuestore - Type: string ValueStoreType: - Description: Type of valuestore to use, such as "sth" or "pogreb". - Example: sth - Type: string ``` -------------------------------- ### Sync Provider with Indexer Source: https://docs.cid.contact/index-provider/install Instructs the local `storetheindex` indexer to synchronize data from a specified index provider. Requires the provider's peer ID and network address. ```bash storetheindex admin sync -p 12D3KooWGVwcVphAgpXjJWHoWyKZUrZsXyc34jeuUmG5nSRZyuQq --addr "/ip4/127.0.0.1/tcp/8070/http/p2p/12D3KooWGVwcVphAgpXjJWHoWyKZUrZsXyc34jeuUmG5nSRZyuQq" ``` -------------------------------- ### Runtime Reloadable Configuration Items Source: https://docs.cid.contact/running-indexer-node/configuration Details configuration items that can be reloaded by the storetheindex daemon without a full restart. It also describes methods to trigger these reloads, including administrative commands, signals, and automatic watching mechanisms. ```APIDOC Runtime Reloadable Configuration: Reload Trigger Methods: 1. Admin Sub-command: `storetheindex reload-config` 2. Signal: Send `SIGHUP` to the daemon process. 3. Automatic Watch (when enabled): - `--watch-config` flag when running the daemon. - Environment variable `STORETHEINDEX_WATCH_CONFIG=true`. - Daemon automatically reloads edited config after 30 seconds. Reloadable Configuration Sections: - Discovery.Policy - Indexer.ConfigCheckInterval - Indexer.ShutdownTimeout - Ingest.IngestWorkerCount - Ingest.RateLimit - Ingest.StoreBatchSize - Logging - Peering ``` -------------------------------- ### Metadata Formats for Protocols Source: https://docs.cid.contact/ingestion/overview Specifies the expected metadata formats for different protocols, including Bitswap, Filecoin graphsync, and HTTP. Metadata must begin with a uvarint identifying the protocol, followed by protocol-specific data. ```APIDOC Metadata Structure: Starts with a uvarint identifying the protocol, followed by protocol-specific metadata. Can be repeated for multiple protocols, ordered by increasing protocol ID. Supported Protocols: 1. Bitswap: - Protocol ID: 0x0900 (TransportBitswap) - Metadata: None following the protocol ID. 2. Filecoin Graphsync: - Protocol ID: 0x0910 (TransportGraphsyncFilecoinv1) - Metadata: CBOR encoded struct containing: - PieceCID: Link - VerifiedDeal: Boolean - FastRetrieval: Boolean 3. HTTP: - Protocol ID: 0x3D0000 (Proposed) - Metadata: Not yet defined. ``` -------------------------------- ### Fetch and Convert Block Data Source: https://docs.cid.contact/index-provider/install Fetches block data from an HTTP provider using its Content Identifier (CID) and then uses `dagconv` to convert the dagcbor format into a more readable dagjson format for inspection. ```bash curl http://localhost:8070/bafy2bzaceaceibjf5pottpm4ghfnu7jo7sjcqjom4vhzm5jmq7domxun5vor4 | dagconv ``` -------------------------------- ### Ingest.RateLimit Configuration Parameters Source: https://docs.cid.contact/running-indexer-node/configuration Configures rate limiting for data ingestion. It includes settings to apply rate limiting globally, specify exceptions, define the number of blocks transferable per second, and set the burst size for receiving blocks. Setting BlocksPerSecond to 0 disables rate limiting. ```config Ingest.RateLimit: Apply: false Except: ["12D3KooWCwevHg1yLCvktf2nvLu7L9894mcrJR4MsBCcm4syShVc", "12D3KooWKhgq8c7NQ9iGjbyK7v7phXvG6492HQfiDaGHLHLQjk7R"] BlocksPerSecond: 100 BurstSize: 500 ``` -------------------------------- ### Querying Indexer Provider with Curl Source: https://docs.cid.contact/query-and-retrieve/querying-indexer-provider Demonstrates how to query indexer nodes using the curl command-line tool for both payload CIDs and multihashes. ```curl curl https://cid.contact/cid/bafybeigvgzoolc3drupxhlevdp2ugqcrbcsqfmcek2zxiw5wctk3xjpjwy ``` ```curl curl https://cid.contact/multihash/QmcgwdNjFQVhKt6aWWtSPgdLbNvULRoFMU6CCYwHsN3EEH ``` -------------------------------- ### Announce Indices to Indexers Source: https://docs.cid.contact/index-provider/usage Bulk announces all indices to the indexers. This command ensures that the newly indexed data is made available to the network. It can be run on a monolith miner or a split market subsystem. ```shell lotus-miner index announce-all # or if using a split market subsystem: lotus-miner --call-on-market index announce-all ``` -------------------------------- ### Fetch Index Provider Head Source: https://docs.cid.contact/index-provider/install Retrieves the head information from an HTTP index provider to verify its current state. This is a crucial first step in testing provider functionality. ```bash curl http://localhost:8070/head ``` -------------------------------- ### CID Contact LLM Configuration Settings Source: https://docs.cid.contact/running-indexer-node/configuration This section details the configurable parameters for the CID Contact LLM project. Each parameter controls a specific aspect of the system's behavior, such as network timeouts, concurrency, data handling, and synchronization. ```APIDOC HttpSyncTimeout: Description: Sets the time limit for HTTP sync requests. Default Value: 10s IngestWorkerCount: Description: Sets how many ingest worker goroutines to spawn. This controls how many concurrent ingest from different providers we can handle. Default Value: 10 PubSubTopic: Description: Sets the topic name to which to subscribe for ingestion announcements. Default Value: /indexer/ingest/mainnet RateLimit: Description: Contains rate-limiting configuration. Refer to #ingest.ratelimit for details. Default Value: [#ingest.ratelimit](#ingest.ratelimit "mention") ResendDirectAnnounce: Description: Controls whether direct announcements are resent. Default Value: false StoreBatchSize: Description: The number of entries in each write to the value store. Specifying a value less than 2 disables batching. This should be smaller than the maximum number of multihashes in an entry block to write concurrently to the value store. Default Value: 4096 SyncSegmentDepthLimit: Description: The depth limit of a single sync in a series of calls that collectively sync advertisements or their entries. The value -1 disables the segmentation where the sync will be done in a single call and zero means use the default value. Default Value: 2000 ``` -------------------------------- ### Datastore Configuration Source: https://docs.cid.contact/running-indexer-node/configuration Defines settings for the datastore, including the directory path where it is stored and the type of datastore to be used. ```APIDOC Datastore: Dir: datastore - Dir is the directory where the datastore is kept. If this is not an absolute path then the location is relative to the indexer repo directory. Type: levelds - Type is the type of datastore. ``` -------------------------------- ### Advertisement and EntryChunk IPLD Schema Source: https://docs.cid.contact/index-provider/overview Defines the IPLD schema for Advertisement and EntryChunk structures. EntryChunk represents a segment of multihashes with optional chaining, while Advertisement signals content availability to indexers, including provider details and links to multihash chains. ```APIDOC # EntryChunk captures a chunk in a chain of entries that collectively contain the multihashes # advertised by an Advertisement. type EntryChunk struct { # Entries represent the list of multihashes in this chunk. Entries [Bytes] # Next is an optional link to the next entry chunk. Next optional Link } # Advertisement signals availability of content to the indexer nodes in form of a chunked list of ``` -------------------------------- ### Query Indexer for Multihash Source: https://docs.cid.contact/index-provider/install Queries the local indexer to retrieve results associated with a specific multihash. This verifies if the indexer has successfully ingested and indexed the content from the provider. ```bash curl http://localhost:3000/multihash/QmSPbSLo26Lt3SZ5r9ccqtoM6zjuxobLxc7JM4VivCMCmB ```