Hyperliquid

Set up your Hyperliquid Mainnet or Testnet node

Terminal window
cd $HOME
git clone https://github.com/hyperliquid-dex/node
cd node
gpg --import pub_key.asc
Terminal window
echo '{"chain": "Mainnet"}' > visor.json
Terminal window
echo '{"chain": "Testnet"}' > visor.json

The visor binary spawns and manages the child node process.

Terminal window
curl https://binaries.hyperliquid.xyz/Mainnet/hl-visor > hl-visor && chmod a+x hl-visor
Terminal window
curl https://binaries.hyperliquid-testnet.xyz/Testnet/hl-visor > hl-visor && chmod a+x hl-visor
Terminal window
echo '{ "root_node_ips": [{"Ip": "1.2.3.4"}], "try_new_peers": false, "chain": "Mainnet" }' > override_gossip_config.json
Terminal window
echo '{ "root_node_ips": [{"Ip": "1.2.3.4"}], "try_new_peers": false, "chain": "Testnet" }' > override_gossip_config.json

For faster bootstrapping, use a known reliable peer. Can be found here.

Terminal window
sudo tee <<EOF >/dev/null /etc/systemd/system/hyperliquid.service
[Unit]
Description=Hyperliquid Node
After=network.target
[Service]
Type=simple
User=$USER
ExecStart=$HOME/hl-visor run-non-validator --serve-eth-rpc
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF

To enable and start the service:

Terminal window
sudo systemctl daemon-reload
sudo systemctl start hyperliquid
sudo systemctl enable hyperliquid

To check the status of the running service or to follow the logs, you can use:

Terminal window
sudo systemctl status hyperliquid
sudo journalctl -u hyperliquid -f

After a few minutes, you should see lines that look like this. This means your node has started syncing with the network and is receiving blocks.

Terminal window
2025-05-26T06:59:33.774Z WARN >>> hl-node @@ applied block 607619100
2025-05-26T06:59:35.240Z WARN >>> hl-node @@ applied block 607619200
2025-05-26T06:59:36.233Z WARN >>> hl-node @@ applied block 607619300
2025-05-26T06:59:38.395Z WARN >>> hl-node @@ applied block 607619400
2025-05-26T06:59:39.407Z WARN >>> hl-node @@ applied block 607619500
2025-05-26T06:59:40.688Z WARN >>> hl-node @@ applied block 607619600

To retrieve the latest block height:

Terminal window
curl -X POST --header 'Content-Type: application/json' \
--data '{"jsonrpc":"2.0","method":"eth_getBlockByNumber","params":["latest",false],"id":1}' \
http://localhost:3001/evm

Once your node is up and running, you need to add the Hyperliquid chain to your ampd daemon’s config.tomlfile. This can be done by adding in the following configuration:

[[handlers]]
type="EvmMsgVerifier"
chain_name="hyperliquid"
chain_finalization="RPCFinalizedBlock"
chain_rpc_url="your_own_rpc"
cosmwasm_contract="axelar1n64vk7l3zagh2eadkuhl7602lxluu86dn9smfxyp7c2e4v8pqj5sv4ypjr"
[[handlers]]
type="EvmVerifierSetVerifier"
chain_name="hyperliquid"
chain_finalization="RPCFinalizedBlock"
chain_rpc_url="your_own_rpc"
cosmwasm_contract="axelar1n64vk7l3zagh2eadkuhl7602lxluu86dn9smfxyp7c2e4v8pqj5sv4ypjr"

For your node to be recognized by the Axelar Network, you need to register your verifier’s support for the chain with the ampd daemon. This can be done by running:

Terminal window
ampd register-chain-support amplifier hyperliquid

Edit on GitHub