Utility scripts for Wormhole Native Token Transfer (NTT) operations including peer registration between chains and ownership management.
yarn install- Node.js v18+
- RPC endpoints for your chains
- Wallet with gas tokens
- NTT deployment addresses (manager & transceiver)
All scripts have examples in the examples/ folder. Edit the values and run them directly:
# Make scripts executable (first time only)
chmod +x examples/*.sh
# Run any example
./examples/register-evm-peer.sh
./examples/register-evm-to-evm.sh
./examples/register-solana-peer.sh| Script | Description | Example |
|---|---|---|
evmRegisterPeer.ts |
Register remote evm chain as peer (unidirectional) | register-evm-peer.sh |
evmRegisterPeerCalldata.ts |
Generate calldata for evm peer registration (governance) | register-evm-peer-calldata.sh |
evmToEvmPeer.ts |
Bidirectional evm peer registration between EVM chains | register-evm-to-evm.sh |
evmToSolanaPeer.ts |
Register Solana as peer on EVM chain | register-solana-peer.sh |
evmToSolanaPeerCalldata.ts |
Generate calldata for Solana peer registration | register-solana-peer-calldata.sh |
Common Parameters:
--rpc: RPC endpoint URL--private-key: Wallet private key (must be manager owner)--local-manager/--manager: NTT manager address--local-transceiver/--transceiver: Wormhole transceiver address--local-chain/--chain: Chain name (e.g.,Base,Ethereum,Sepolia)--remote-chain: Remote chain name--remote-manager: Remote NTT manager address--remote-transceiver: Remote transceiver address--inbound-limit: Max receivable tokens in base units--network:MainnetorTestnet
Transfer Ownership:
- Edit configuration in
src/solana/transferOwnershipToWallet.ts - Run:
yarn transfer-ownership
Claim Ownership:
- Edit configuration in
src/solana/claimOwnership.ts - Run:
yarn claim-ownership
├── src/
│ ├── evm/ # EVM chain scripts
│ │ ├── evmRegisterPeer.ts
│ │ ├── evmRegisterPeerCalldata.ts
│ │ ├── evmToEvmPeer.ts
│ │ ├── evmToSolanaPeer.ts
│ │ └── evmToSolanaPeerCalldata.ts
│ └── solana/ # Solana scripts
│ ├── transferOwnershipToWallet.ts
│ └── claimOwnership.ts
├── examples/ # example scripts
│ ├── register-evm-peer.sh
│ ├── register-evm-peer-calldata.sh
│ ├── register-evm-to-evm.sh
│ ├── register-solana-peer.sh
│ └── register-solana-peer-calldata.sh
└── package.json
- Always test on testnet first
- Verify all addresses before executing
- Use hardware wallets for production
- Keep wallet files outside the project directory