> For the complete documentation index, see [llms.txt](https://chainbuff.gitbook.io/tutorials/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://chainbuff.gitbook.io/tutorials/solana/da-jian-ji-chu-she-shi/pei-zhi-yellowstone-grpc-cha-jian.md).

# 配置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>
