You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* docs: always pull latest guardian image to run a spy
* doc: how to run the guardian node behind a NAT
Shoutout to @0xshipthecode and the RockawayX Infra team for helping test
and develop the patch for this in wormhole-foundation#3786.
* docs: add section to the ops docs on telemetry
This shows new guardians how to enable telemetry.
* docs: update wording on bootstrap peers
* docs: remove terra light client daemon comment
The lcd was built directly into the terra binary a long time ago and no
longer requires a separate service for the lcd. This happened more than
a year ago.
* docs: wh dashboard and the fly healthcheck
* mention the wormhole-dashboard github hosted instance
* mention how to run the fly healthcheck to verify a guardian
* docs: evm node requirements for archive nodes
* docs: section on cosmos / ibc connected chains
So that guardians know which nodes they need to run and which they can
rely on wormchain for.
* docs: split out the per-chain bits for terra
* Since wormhole supports 30+ chains now and not just 5 chains, the
solana, eth, terra, bsc bits were removed
* The solana and terra content had the urls updated to reflect reality
and moved into their own sections.
* Made a reference to docs.wormhole.com's constants reference for chains
* docs: clarify guardiand wormchain URL and ports
Also mention threshold signing via horcrux and using the sentry node
architecture to protect the validator from volumetric attacks.
* docs: adding wormchain useful commands
* docs: minor updates and ntt accountant enablement
* high level overview of how to enable the NTT Accountant
* emphasize all guardians need to run wormchain validators
* remove the reference to checking out a v2.x branch as the main branch
is for wormholev2 now and has been for some time.
* docs: add section on ccq
* docs: cspell updates
* docs: remove default ccq port from operations.md
Review feedback from: @bruce-riley
* docs: review feedback
Co-authored-by: @evan-gray
* docs: operations wording clarification
* docs: update header in operations doc
Try to make things consistent for @evan-gray.
* docs: fix a small tyop
In addition to Wormhole itself, you need to run your own verifying node for every chain that Wormhole connects to:
8
-
9
-
-**Solana**. There is no light client for Solana yet, so you'll have to run a full solana-validator node. It does not
10
-
have to actually be a validator - you can run solana-validator in non-validating mode if you are not a validator.
11
-
12
-
Refer to the [Solana documentation](https://docs.solana.com/running-validator) on how to run a validator. The validator
13
-
requirements as stated in their docs are excessive - for the current iteration for mainnet-beta, the "low end" config
14
-
with no GPU is perfectly adequate, and will have enough spare capacity.
15
-
[Solana's Discord server](https://solana.com/community) is a great resource for questions regarding validator ops.
16
-
17
-
-**Ethereum**. See below - you need at least a light client. For stability reasons, a full node is recommended.
18
-
19
-
-**Terra** requires a full node and an [LCD server](https://docs.terra.money/terracli/lcd.html#light-client-daemon)
20
-
pointing to your full node. Refer to the [Terra documentation](https://docs.terra.money/node/join-network.html)
21
-
on how to run a full node. From a security point of view, running only an LCD server with `--trust-node=false` pointed
22
-
to somebody else's full node would be sufficient, but you'd then depend on that single node for availability unless
23
-
you set up a load balancer pointing to a set of nodes.
24
-
25
-
-**Binance Smart Chain**: Same requirements as Ethereum. Note that BSC has higher throughput than Ethereum and
26
-
roughly requires twice as many compute resources.
7
+
In addition to Wormhole itself, you need to run your own verifying node for every chain that Wormhole connects to except
8
+
for newer IBC connected chains that integrate through Wormhole Gateway. Please refer to the [constants reference](https://docs.wormhole.com/wormhole/reference/constants)
9
+
for all chains that Wormhole connects to.
27
10
28
11
**Do NOT use third-party RPC service providers** for any of the chains! You'd fully trust them, and they could lie to
29
12
you on whether an event has actually been observed. The whole point of Wormhole is not to rely on centralized nodes!
@@ -33,6 +16,12 @@ so you can test changes for your mainnet full nodes and gain operational experie
33
16
34
17
### Solana node requirements
35
18
19
+
Refer to the [Solana documentation](https://docs.solanalabs.com/operations/setup-an-rpc-node) on how to run an RPC
20
+
(full) node. [Solana's Discord server](https://solana.com/community) is a great resource for questions regarding
21
+
operations.
22
+
23
+
The `#rpc-server-operators` channel is especially useful for setting up Solana RPC nodes.
24
+
36
25
Your Solana RPC node needs the following parameters enabled:
37
26
38
27
```
@@ -102,6 +91,146 @@ since only very few nodes support the light client protocol.
102
91
Running a full node typically requires ~500G of SSD storage, 8G of RAM and 4-8 CPU threads (depending on clock
103
92
frequency). Light clients have much lower hardware requirements.
104
93
94
+
95
+
### Terra
96
+
97
+
Terra is also sometimes referred to as Terra 2, but the correct name is just simply "Terra". The previous version was renamed to "Terra Classic".
98
+
99
+
Refer to the [Terra documentation](https://docs.terra.money/full-node/run-a-full-terra-node/set-up-production/) on how to run a full node.
100
+
101
+
#### Terra Classic
102
+
103
+
Refer to the [Terra Classic documentation](https://classic-docs.terra.money/docs/full-node/run-a-full-terra-node/README.html) on how to run a full node.
104
+
105
+
106
+
### Wormchain
107
+
108
+
All guardians **must run validators for wormchain**, the codename of [Wormhole Gateway](https://wormhole.com/gateway/).
109
+
110
+
The ``--wormchainURL` argument to the guardian node should point to `<validatoraddress>:9090` which is the `grpc` port
111
+
in the app.toml.
112
+
113
+
Example port setup:
114
+
115
+
<!-- cspell:disable -->
116
+
117
+
config.toml:
118
+
119
+
```toml
120
+
[rpc]
121
+
laddr = "tcp://0.0.0.0:26657"
122
+
grpc_laddr = ""
123
+
pprof_laddr = "localhost:6060"
124
+
125
+
[p2p]
126
+
laddr = "tcp://0.0.0.0:26656"
127
+
external_address = ""
128
+
```
129
+
130
+
app.toml:
131
+
132
+
```toml
133
+
[grpc]
134
+
address = "0.0.0.0:9090"
135
+
136
+
[grpc-web]
137
+
address = "0.0.0.0:9091"
138
+
```
139
+
140
+
<!-- cspell:enable -->
141
+
142
+
For signing, consider setting up a remote threshold signer such as
143
+
[horcrux](https://github.com/strangelove-ventures/horcrux) and adopting the sentry node architecture with sentry nodes
Some non-Ethereum EVM compatible blockchains need to run in archive mode for [Queries](https://wormhole.com/queries)
206
+
to function correctly. By default in geth, [historical state is only kept in memory for the previous 128 blocks](https://github.com/ethereum/go-ethereum/blob/4458905f261d5d9ba5fda3d664f9bb80346ab404/core/state/statedb.go#L1259-L1265).
207
+
After 128 blocks, older states are garbage collected. Many of these chains are forks of geth that maintain this
208
+
historical limitation.
209
+
210
+
* Arbitrum
211
+
* Base
212
+
* Optimism
213
+
214
+
Newer execution clients such as [reth](https://github.com/paradigmxyz/reth) lack this limitation and are worth
215
+
investigating once they are stable.
216
+
217
+
Additionally, if there is ever a scenario where the network fails to come to consensus on an EVM compatible chain due to
218
+
a hard fork or some unforeseen scenario, it might be required to run archive nodes for those chains temporarily to ensure
219
+
the transactions can be reobserved.
220
+
221
+
### Cosmos / IBC connected nodes
222
+
223
+
All modern Cosmos integrations happen by Wormhole observing IBC transactions on Gateway (wormchain). Guardian node operators do not need to run full nodes for these networks. For Cosmos based chains that were added before this functionality, a full node is still necessary.
224
+
225
+
The following Cosmos based nodes were added prior to Gateway and guardians need to run full nodes:
226
+
227
+
* Injective
228
+
* Terra
229
+
* Terra Classic
230
+
* XPLA
231
+
232
+
**NOTE**: All guardians must run validators for wormchain.
233
+
105
234
## Building guardiand
106
235
107
236
For security reasons, we do not provide a pre-built binary. You need to check out the repo and build the
@@ -113,7 +242,6 @@ First, check out the version of the Wormhole repo that you want to deploy:
which verifies that the guardian is gossiping out heartbeats, is submitting chain observations, and has a working
345
+
heartbeats API available. This is a very good way to verify a specific guardian is functioning as intended.
346
+
347
+
You can clone the repo and run the check against the [MCF Guardian](https://github.com/wormhole-foundation/wormhole-networks/blob/649dcc48f29d462fe6cb0062cb6530021d36a417/mainnetv2/guardianset/v3.prototxt#L58):
$ go run main.go --pubKey 0xDA798F6896A3331F64b48c12D1D57Fd9cbe70811 --url https://wormhole-v2-mainnet-api.mcf.rocks
355
+
✅ guardian heartbeat received {12D3KooWDZVv7BhZ8yFLkarNdaSWaB43D6UbQwExJ8nnGAEmfHcU: [/ip4/185.188.42.109/udp/8999/quic-v1]}
356
+
✅ 44 observations received
357
+
✅ /v1/heartbeats
358
+
```
359
+
360
+
If the guardian public RPC is not exposed, the `--url` flag can be omitted:
361
+
362
+
```shell
363
+
$ go run main.go --pubKey 0xDA798F6896A3331F64b48c12D1D57Fd9cbe70811
364
+
✅ guardian heartbeat received {12D3KooWDZVv7BhZ8yFLkarNdaSWaB43D6UbQwExJ8nnGAEmfHcU: [/ip4/185.188.42.109/udp/8999/quic-v1]}
365
+
✅ 41 observations received
366
+
ℹ️ --url not defined, skipping web checks
367
+
```
368
+
369
+
The bootstrap nodes and network defaults to mainnet and the values can be found in the [network constants](../node/pkg/p2p/network_consts.go).
370
+
371
+
It can also be used to test a specific bootstrap node/s:
372
+
373
+
```shell
374
+
$ go run main.go --pubKey 0xDA798F6896A3331F64b48c12D1D57Fd9cbe70811 --bootstrap /dns4/wormhole.mcf.rocks/udp/8999/quic/p2p/12D3KooWDZVv7BhZ8yFLkarNdaSWaB43D6UbQwExJ8nnGAEmfHcU
375
+
✅ guardian heartbeat received {12D3KooWDZVv7BhZ8yFLkarNdaSWaB43D6UbQwExJ8nnGAEmfHcU: [/ip4/185.188.42.109/udp/8999/quic-v1]}
376
+
✅ 44 observations received
377
+
ℹ️ --url not defined, skipping web checks
378
+
```
379
+
380
+
## Native Token Transfers
381
+
382
+
[NTT](https://github.com/wormhole-foundation/example-native-token-transfers) is an exciting feature of wormhole that builds upon the core bridge to allow mint/burn style transfers. Ensuring it runs correctly requires integrating it with the NTT Accountant. To enable this feature, create a **new** wormchain key. Do not reuse an existing global accountant key and add the following parameters:
Please remember to allowlist the new NTT Accountant key for use with Wormchain! For instructions on how to do that, speak with someone from the Wormhole Foundation.
401
+
402
+
## Cross-Chain Queries
403
+
404
+
[CCQ](https://github.com/wormhole-foundation/wormhole/blob/main/whitepapers/0013_ccq.md) also known as [Wormhole Queries](https://wormhole.com/queries) is a feature to allow pulling attestations in a cross chain manner. To run ccq, a few additional flags need to be enabled on the guardian node:
0 commit comments