# 配置Yellowstone gRPC插件

Yellowstone gRPC插件数据流服务支持数据订阅和过滤，相比与普通的rpc请求可以更快速的获取链上数据。本文教你如何在自建rpc上安装geyser插件，结合上部分的RPC节点搭建教程，只需要下载和配置geyser文件和在启动参数中添加geyser配置文件路径。

## 下载Yellowstone gRPC插件

根据自己solana-cli的版本在官方仓库找到对应版本，此处的solana-cli版本为2.0.18

```
wget https://github.com/rpcpool/yellowstone-grpc/releases/download/v3.0.0%2Bsolana.2.0.18/yellowstone-grpc-geyser-release22-x86_64-unknown-linux-gnu.tar.bz2

apt-get install bzip2

tar -xvjf yellowstone-grpc-geyser-release22-x86_64-unknown-linux-gnu.tar.bz2
```

## 配置

```
vim yellowstone-config.json
```

```
{
    "libpath": "/root/yellowstone-grpc-geyser-release/lib/libyellowstone_grpc_geyser.so",
    "log": {
        "level": "info"
    },
    "grpc": {
        "address": "0.0.0.0:10001",
        "max_decoding_message_size": "8_388_608",
        "snapshot_plugin_channel_capacity": null,
        "snapshot_client_channel_capacity": "50_000_000",
        "channel_capacity": "200_000",
        "unary_concurrency_limit": 1000,
        "unary_disabled": false,
        "filters": {
            "accounts": {
                "max": 100,
                "any": false,
                "account_max": 100,
                "account_reject": [
                    "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
                ],
                "owner_max": 10,
                "owner_reject": [
                    "11111111111111111111111111111111"
                ]
            },
            "slots": {
                "max": 1
            },
            "transactions": {
                "max": 100,
                "any": false,
                "account_include_max": 100,
                "account_include_reject": [
                    "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
                ],
                "account_exclude_max": 100,
                "account_required_max": 100
            },
            "transactions_status": {
                "max": 100,
                "any": false,
                "account_include_max": 100,
                "account_include_reject": [
                    "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
                ],
                "account_exclude_max": 100,
                "account_required_max": 100
            },
            "blocks": {
                "max": 1,
                "account_include_max": 100,
                "account_include_any": false,
                "account_include_reject": [
                    "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
                ],
                "include_transactions": true,
                "include_accounts": false,
                "include_entries": false
            },
            "blocks_meta": {
                "max": 1
            },
            "entries": {
                "max": 1
            }
        }
    }
}
```

## 检查配置

```
wget https://github.com/rpcpool/yellowstone-grpc/releases/download/v3.0.0%2Bsolana.2.0.18/config-check-ubuntu-22.04

chmod +x config-check-ubuntu-22.04

./config-check-ubuntu-22.04 -c yellowstone-config.json
```

## 启用

参照先前的solana rpc节点启动脚本，需要在脚本中添加配置文件的位置

```
--geyser-plugin-config /root/yellowstone-config.json
```

完整的启动脚本如下

```
#!/bin/bash

exec agave-validator \
	--geyser-plugin-config /root/yellowstone-config.json \
	--ledger /root/sol/ledger \
	--accounts /root/sol/accounts \
	--identity /root/validator-keypair.json \
	--known-validator 7Np41oeYqPefeNQEHSv1UDhYrehxin3NStELsSKCT4K2 \
	--known-validator GdnSyH3YtwcxFvQrVVJMm1JhTS4QVX7MFsX56uJLUfiZ \
	--known-validator DE1bawNcRJB9rVm3buyMVfr8mBEoyyu73NBovf2oXJsJ \
	--known-validator CakcnaRDHka2gXyfbEd2d3xsvkJkqsLw2akB3zsN1D2S \
	--entrypoint entrypoint.mainnet-beta.solana.com:8001 \
	--entrypoint entrypoint2.mainnet-beta.solana.com:8001 \
	--entrypoint entrypoint3.mainnet-beta.solana.com:8001 \
	--entrypoint entrypoint4.mainnet-beta.solana.com:8001 \
	--entrypoint entrypoint5.mainnet-beta.solana.com:8001 \
	--expected-genesis-hash 5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d \
	--full-rpc-api \
	--no-voting \
	--private-rpc \
	--rpc-port 8899 \
	--dynamic-port-range 8000-8020 \
	--wal-recovery-mode skip_any_corrupted_record \
	--limit-ledger-size \
	--account-index program-id \
	--account-index spl-token-mint \
	--account-index spl-token-owner \
	--enable-rpc-transaction-history \
	--log /root/solana-rpc.log
```

## 一些使用教程

1. <https://github.com/rpcpool/yellowstone-grpc/tree/master/examples>
2. <https://docs.triton.one/project-yellowstone/dragons-mouth-grpc-subscriptions>
3. <https://docs.helius.dev/data-streaming/geyser-yellowstone>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://chainbuff.gitbook.io/tutorials/solana/da-jian-ji-chu-she-shi/pei-zhi-yellowstone-grpc-cha-jian.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
