Flow 公链 | Observer 节点说明

Observer 节点
Observer 节点类似于 Access 节点,并提供本机可访问的,持续更新且被验证过的区块链数据副本。它提供了 Access API(包含 gRPC 和 REST),但与 Access 节点不同的是观察者节点不需要进行质押注册,任何人都可以在无需添加进白名单的情况下运行它。
Observer 节点的启动需通过连接到 Access 节点,并成为由 Access 节点和其他 Observer 节点组成的公共网络的一部分。它将持续地从 Access 节点或其他属于该网络中的 Observer 节点 中接收区块信息。
然而它不会对上游 Access 节点或其他 Observer 节点做信任假设,而是在本地验证所接受区块的正确性。例如,在接收到有效区块 A、B 和 C 后,当它收到区块 D 时,它将本地验证区块 D 确实由共识节点签名产生并且为有效区块。
接收到的区块数据将被索引并可以通过 Access API 进行访问。对于 Collection、Transactions 和 Account 的查询,它会将这些请求委托给上游 Access 节点。同样的,发送到 Observer 节点的交易和脚本也被转发到上游的 Access 节点。当然,在未来版本的 Observer 节点也将能够在本地提供这些数据。
由于 Observer 节点是非质押的,它不会产生或执行区块,而是充当非质押接入节点,因此可以在任何具有足够磁盘空间的消费级计算机上轻松运行。

■ 谁适合运行一个 Observer 节点?
Observer 节点提供了 Access 节点的替代方案。因此,它非常适合需要本地访问最新可用区块数据的 DApp,例如需要跟踪最新区块的钱包应用。
除此之外,若 Access Node 的运营者若想要在地理上扩展其节点的接入点,可以通过地理上多个分散的 Observer 节点来完成,这些 Observer 节点可以与其 Access 节点 保持彼此通信。
■ 硬件需求
一般来说,任何具有良好网络连接和足够磁盘空间的消费级计算机都应该能够运行 Observer 节点。
最低要求
2+ 核 CPU
至少 4 GB 内存
300 GB SSD 硬盘空间
10Mbps 网络带宽
运行 Observer 节点的步骤
点击链接,浏览节点运营步骤的全流程视频👇🏻:
https://www.loom.com/share/990a725531754106b91d8ccec6244219
■ 第 1 步 - 生成节点目录
Observer 节点需要以下目录结构
$ tree flow_observerflow_observer/├── bootstrap│ ├── network.key (file containing the node private network key)│ └── public-root-information│ └── root-protocol-state-snapshot.json (the genesis data of the current spork)└── data (directory used by the observer node to store block data)
可以通过以下命令创建目录结构
mkdir -p flow_observer/bootstrap/public-root-informationmkdir flow_observer/data
■ 第 2 步 - 生成网络密钥
和其他类型的 Flow 节点一样,Observer 节点需要一个网络的 ECDSA 密钥 用来与网络交互。需下载启动工具并生成该密钥。
curl -sL -O storage.googleapis.com/flow-genesis-bootstrap/boot-tools.tartar -xvf boot-tools.tar./boot-tools/bootstrap observer-network-key --output-file ./flow_observer/bootstrap/network.key
如果你在 mac 上运行,需要下载 mac 专用工具来生成密钥
# For M1curl -sL -O storage.googleapis.com/flow-genesis-bootstrap/boot-tools-m1.tar# For Intel Maccurl -sL -O storage.googleapis.com/flow-genesis-bootstrap/boot-tools-intel-mac.tar
■ 第 3 步 - 下载当前 Spork 的 root-protocol-state-snapshot.json 文件
root-protocol-state-snapshot.json 文件是在每个 Spork 生成的,包含了该 Spork 的创世数据。它将在每次 Spork 后发布生效。下载地址在 这里 的 rootProtocolStateSnapshot 字段下 (https://github.com/onflow/flow/blob/master/sporks.json)。
例如我们可以这样下载:
用于 mainnet-19
wget -P ./flow_observer/bootstrap/public-root-information https://storage.googleapis.com/flow-genesis-bootstrap/mainnet-19-execution/public-root-information/root-protocol-state-snapshot.jsonwget -P ./flow_observer/bootstrap/public-root-information https://storage.googleapis.com/flow-genesis-bootstrap/mainnet-19-execution/public-root-information/root-protocol-state-snapshot.json.asc
用于 testnet-37
wget -P ./flow_observer/bootstrap/public-root-information https://storage.googleapis.com/flow-genesis-bootstrap/testnet-37/public-root-information/root-protocol-state-snapshot.jsonwget -P ./flow_observer/bootstrap/public-root-information https://storage.googleapis.com/flow-genesis-bootstrap/testnet-37/public-root-information/root-protocol-state-snapshot.json.asc
验证 PGP 签名
添加 flow-signer@onflow.org 的公钥
gpg --keyserver keys.openpgp.org --search-keys flow-signer@onflow.orggpg: data source: http://keys.openpgp.org:11371(1) Flow Team (Flow Full Observer node snapshot verification master key) <256 bit ECDSA key CB5264F7FD4CDD27, created: 2021-09-15Keys 1-1 of 1 for "flow-signer@onflow.org". Enter number(s), N)ext, or Q)uit > 1
验证 root-snapshot 文件
gpg --verify ./flow_observer/bootstrap/public-root-information/root-protocol-state-snapshot.json.ascgpg: assuming signed data in 'bootstrap/public-root-information/root-protocol-state-snapshot.json'gpg: Signature made Wed Sep 15 11:34:33 2021 PDTgpg: using ECDSA key 40CD95717AC463E61EE3B285B718CA310EDB542Fgpg: Good signature from "Flow Team (Flow Full Observer node snapshot verification master key) <flow-signer@onflow.org>" [unknown]gpg: WARNING: This key is not certified with a trusted signature!gpg: There is no indication that the signature belongs to the owner.Primary key fingerprint: 7D23 8D1A E6D3 2A71 8ECD 8611 CB52 64F7 FD4C DD27Subkey fingerprint: 40CD 9571 7AC4 63E6 1EE3 B285 B718 CA31 0EDB 542F
另一方面,如果你不在乎当前之前的区块,那你可以通过 Flow CLI (https://developers.flow.com/tools/flow-cli) 请求当前的 root-snapshot 文件。
用于 mainnet
flow snapshot save ./flow_observer/bootstrap/public-root-information/root-protocol-state-snapshot.json --host access-008.mainnet19.nodes.onflow.org:9001 --network-key 11742552d21ac93da37ccda09661792977e2ca548a3b26d05f22a51ae1d99b9b75c8a9b3b40b38206b38951e98e4d145f0010f8942fd82ddf0fb1d670202264a用于 testnet
flow snapshot save ./flow_observer/bootstrap/public-root-information/root-protocol-state-snapshot.json --host access-003.devnet37.nodes.onflow.org:9001 --network-key b662102f4184fc1caeb2933cf87bba75cdd37758926584c0ce8a90549bb12ee0f9115111bbbb6acc2b889461208533369a91e8321eaf6bcb871a788ddd6bfbf7■ 第 4 步 - 启动节点
可以以 Docker 容器的方式启动 Observer 节点。
用于主网的 Observer 节点
docker run --rm \-v $PWD/flow_observer/bootstrap:/bootstrap:ro \-v $PWD/flow_observer/data:/data:rw \--name flow_observer \-p 8071:8071 \-p 3569:3569 \-p 9000:9000 \-p 9001:9001 \gcr.io/flow-container-registry/observer:v0.27.2 \--bootstrapdir=/bootstrap \--datadir=/data/protocol \--bind 0.0.0.0:3569 \--rest-addr=0.0.0.0:8071 \--loglevel=error \--secretsdir=/data/secrets \--upstream-node-addresses=access-008.mainnet19.nodes.onflow.org:9001 \--upstream-node-public-keys=11742552d21ac93da37ccda09661792977e2ca548a3b26d05f22a51ae1d99b9b75c8a9b3b40b38206b38951e98e4d145f0010f8942fd82ddf0fb1d670202264a \--bootstrap-node-addresses=access-008.mainnet19.nodes.onflow.org:3570 \--bootstrap-node-public-keys=11742552d21ac93da37ccda09661792977e2ca548a3b26d05f22a51ae1d99b9b75c8a9b3b40b38206b38951e98e4d145f0010f8942fd82ddf0fb1d670202264a \--observer-networking-key-path=/bootstrap/network.key
用于测试网的 Observer 节点
docker run --rm \-v $PWD/flow_observer/bootstrap:/bootstrap:ro \-v $PWD/flow_observer/data:/data:rw \--name flow_observer \-p 8071:8071 \-p 3569:3569 \-p 9000:9000 \-p 9001:9001 \gcr.io/flow-container-registry/observer:v0.27.2 \--bootstrapdir=/bootstrap \--datadir=/data/protocol \--bind 0.0.0.0:3569 \--rest-addr=0.0.0.0:8071 \--loglevel=error \--secretsdir=/data/secrets \--upstream-node-addresses=access-003.devnet37.nodes.onflow.org:9001 \--upstream-node-public-keys=b662102f4184fc1caeb2933cf87bba75cdd37758926584c0ce8a90549bb12ee0f9115111bbbb6acc2b889461208533369a91e8321eaf6bcb871a788ddd6bfbf7 \--bootstrap-node-addresses=access-003.devnet37.nodes.onflow.org:3570 \--bootstrap-node-public-keys=b662102f4184fc1caeb2933cf87bba75cdd37758926584c0ce8a90549bb12ee0f9115111bbbb6acc2b889461208533369a91e8321eaf6bcb871a788ddd6bfbf7 \--observer-networking-key-path=/bootstrap/network.key
Observer 节点可以充当 DHT 客户端,并由运行 DHT 服务的上游 Access 节点引导启动。上游引导服务器可以使用 bootstrap-node-addresses 指定,它是 Access 节点主机名的逗号分隔列表。bootstrap-node-public-keys 是这些节点对应的网络公钥的列表。
Observer 节点会将许多 API 调用代理发送给上游 Access 节点。upstream-node-addresses 是该 Observer 节点可以委托给的 Access 节点主机名列表。该列表可以不同于引导启动的节点列表。bootstrap-node-public-key 是这些节点对应的网络公钥的列表。
💡在上述 docker 命令中,Flow 社区 Access 节点被用作上游 Access 节点。但是,可以使用任何其他支持 Observer 节点的 Flow Access 节点
🚀 现在节点应该启动了
您现在可以查询节点中的区块、交易等,类似于查询 Access 节点的方式。
例如:使用 Flow CLI 调用 gRPC API
flow blocks get latest --host localhost:9000例如:通过 curl 查询 REST API
curl "localhost:8071/v1/blocks?height=final"与其他类型的 Flow 节点一样,Observer 节点也会生成可用于监控节点健康状况的 Prometheus 指标。更多信息可以查看这里。
(https://developers.flow.com/nodes/node-operation/node-setup#monitoring-and-metrics)
常见问题
FAQ
Observer 节点是否需要质押?
不需要,observer 节点是非质押节点。
FAQ
任何一个 Access 节点都可以用来引导 Observer 节点嘛?
并不是,只有显式启用了 Observer 节点支持功能的 Access 节点才能为它们提供引导。
下文中列出了支持 Observer 节点的公共 Access 节点。除此之外,由 Dapper Labs 以外的节点运营商运行的其他公共 Access 节点也可能会选择支持 Observer 节点。
FAQ
如何为一个 Access 节点启用 Observer 节点的支持功能?
Access 节点可以通过在启动时加入下列两个参数来对 Observer 节点提供支持。
--supports-observer=true --public-network-address=0.0.0.0:3570public-network-address 是指可以让来自哪些地址的 observer 接入。
FAQ
Observer 节点是否受到访问速率限制?
Observer 节点将通过本地数据库提供全部 区块相关查询 服务。这部分内容没有任何访问速率限制。
但它将所有其他类型的请求代理转发到了 Access 节点,所以这些请求将遵循该 Access 节点上定义的访问速率限制。
支持 Observer 节点连接的 Flow 社区 Access 节点列表
■ 用于主网 Mainnet
Access-007:
Host: access-007.[current mainnet spork].nodes.onflow.org
Public Key:
28a0d9edd0de3f15866dfe4aea1560c4504fe313fc6ca3f63a63e4f98d0e295144692a58ebe7f7894349198613f65b2d960abf99ec2625e247b1c78ba5bf2eae
Access-008:
Host: access-008.[current mainnet spork].nodes.onflow.org
Public Key:
11742552d21ac93da37ccda09661792977e2ca548a3b26d05f22a51ae1d99b9b75c8a9b3b40b38206b38951e98e4d145f0010f8942fd82ddf0fb1d670202264a
■ 用于测试网 Testnet
Access-003:
Host: access-003.[current devnet spork].nodes.onflow.org
Public Key:
b662102f4184fc1caeb2933cf87bba75cdd37758926584c0ce8a90549bb12ee0f9115111bbbb6acc2b889461208533369a91e8321eaf6bcb871a788ddd6bfbf7
Access-004:
Host: access-004.[current devnet spork].nodes.onflow.org
Public Key:
0d1523612be854638b985fc658740fa55f009f3cd49b739961ab082dc91b178ed781ef5f66878613b4d34672039150abfd9c8cfdfe48c565bca053fa4db30bec
虽然公钥保持不变,但主机名会根据当前 spork 更改 url 中的 spork 名称。将 [current mainnet spork] 和 [current devnet spork] 替换为适当的 spork 名称(例如 mainnet19)即可。关于各网络的当前 Spork 名称,请参阅 Past Sporks (https://developers.flow.com/nodes/node-operation/past-sporks)
关注 Flow
什么是 Flow 福洛链?
Flow 福洛链是一个快速,去中心化,且对开发者友好的区块链,旨在为新一代游戏、娱乐应用程序提供动力的数字资产的基础。Flow 是唯一一个由始至终为消费者提供出色体验的 Layer-1 区块链团队。其团队创造的 dApp 包括:CryptoKitties、Dapper Wallets、NBA Top shot。
CrytoKitties 于 2017 年推出时便快速成为加密市场最受欢迎的 dApp,因其成功而导致以太坊堵塞。在 Flow 上运营的 NBA Top shot 也已成为增长最快的 dApp,在公开发布后的 6 个月创造了 7 亿美金销量。正因为 Flow 公链的可扩展性和消费者友好的体验,让这一切成为可能。目前有 1000 多个项目正在 Flow 链上筹备中,我们期待看到一个伟大的生态系统蓬勃发展。
关于 Dapper Labs
Dapper Labs 是一家位于加拿大的全球顶尖区块链服务商,在 2017 年年底通过 CryptoKitties 收藏游戏成功进入⽤户视野,并且因为加密猫的爆⽕导致以太坊拥堵,从而推出 Flow 公链以及全新的开发语言—— Cadence,旨在吸引更多的开发者在 Flow 上开发应⽤。
Flow 的合作伙伴们:








我们欢迎越来越多的小伙伴加入 Flow 星球,为星球增添色彩!
Flow 官网:https://zh.onflow.org/
Flow 论坛: https://forum.onflow.org/
Flow Discord:
https://discord.com/invite/flow
Flow CN Telegram: https://t.me/flow_zh
Flow B 站:https://space.bilibili.com/1002168058
Flow 微博:
https://weibo.com/7610419699
Flow CSDN:
https://blog.csdn.net/weixin_57551966?spm=1010.2135.3001.5343

扫码添加 Flow 官方账号微信号,加入 Flow 生态群
微信号 : FlowChainOfficial
【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。
来源链接

