clients/js: touch up README a little

commit-id:429c7d93
This commit is contained in:
Csongor Kiss 2022-06-30 00:51:30 +01:00
parent b5997a10f0
commit 3b6292af29
2 changed files with 137 additions and 84 deletions

View File

@ -1,55 +1,50 @@
# Wormhole CLI # Wormhole CLI
This tool is a command line interface to Wormhole.
## Installation ## Installation
make install make install
This installs two binaries, `worm-fetch-governance` and `worm` on your `$PATH`. This installs two binaries, `worm-fetch-governance` and `worm` on your `$PATH`.
## Usage To use `worm`, set up `$HOME/.wormhole/.env` with your
### `worm-fetch-governance`
Usage:
worm-fetch-governance [sequence]
Fetch a governance VAA by sequence number, and print it as hex.
For example
worm-fetch-governance 13940208096455381020
prints
01000000010d0012e6b39c6da90c5dfd3c228edbb78c7...
### `worm`
This is the main CLI tool. To use it, set up `$HOME/.wormhole/.env` with your
private keys, based on `.env.sample` in this folder. private keys, based on `.env.sample` in this folder.
worm [command] ## Usage
Commands: ``` sh
worm generate generate VAAs (devnet and testnet only) worm [command]
worm parse <vaa> Parse a VAA
worm submit <vaa> Execute a VAA
Options: Commands:
--help Show help [boolean] worm generate generate VAAs (devnet and testnet
--version Show version number [boolean] only)
worm parse <vaa> Parse a VAA (can be in either hex or
base64 format)
worm recover <digest> <signature> Recover an address from a signature
worm contract <network> <chain> <module> Print contract address
worm rpc <network> <chain> Print RPC address
worm evm EVM utilites
worm submit <vaa> Execute a VAA
Options:
--help Show help [boolean]
--version Show version number [boolean]
```
Consult the `--help` flag for using subcommands. Consult the `--help` flag for using subcommands.
### VAA generation
Use `generate` to create VAAs for testing. For example, to create an NFT bridge registration VAA: Use `generate` to create VAAs for testing. For example, to create an NFT bridge registration VAA:
worm generate registration --module NFTBridge \ ``` sh
--chain-id 2 \ $ worm generate registration --module NFTBridge \
--contract-address 706abc4E45D419950511e474C7B9Ed348A4a716c \ --chain bsc \
--contract-address 0x706abc4E45D419950511e474C7B9Ed348A4a716c \
--guardian-secret cfb12303a19cde580bb4dd771639b0d26bc68353645571a8cff516ab2ee113a0 --guardian-secret cfb12303a19cde580bb4dd771639b0d26bc68353645571a8cff516ab2ee113a0
```
### VAA parsing
Use `parse` to parse a VAA into JSON. For example, Use `parse` to parse a VAA into JSON. For example,
@ -57,41 +52,45 @@ Use `parse` to parse a VAA into JSON. For example,
will fetch governance VAA `13940208096455381020` and print it as JSON. will fetch governance VAA `13940208096455381020` and print it as JSON.
# ...signatures elided ``` sh
timestamp: 1651416474, # ...signatures elided
nonce: 1570649151, timestamp: 1651416474,
emitterChain: 1, nonce: 1570649151,
emitterAddress: '0000000000000000000000000000000000000000000000000000000000000004', emitterChain: 1,
sequence: 13940208096455381020n, emitterAddress: '0000000000000000000000000000000000000000000000000000000000000004',
consistencyLevel: 32, sequence: 13940208096455381020n,
payload: { consistencyLevel: 32,
module: 'Core', payload: {
type: 'GuardianSetUpgrade', module: 'Core',
chain: 0, type: 'GuardianSetUpgrade',
newGuardianSetIndex: 2, chain: 0,
newGuardianSetLength: 19, newGuardianSetIndex: 2,
newGuardianSet: [ newGuardianSetLength: 19,
'58cc3ae5c097b213ce3c81979e1b9f9570746aa5', newGuardianSet: [
'ff6cb952589bde862c25ef4392132fb9d4a42157', '58cc3ae5c097b213ce3c81979e1b9f9570746aa5',
'114de8460193bdf3a2fcf81f86a09765f4762fd1', 'ff6cb952589bde862c25ef4392132fb9d4a42157',
'107a0086b32d7a0977926a205131d8731d39cbeb', '114de8460193bdf3a2fcf81f86a09765f4762fd1',
'8c82b2fd82faed2711d59af0f2499d16e726f6b2', '107a0086b32d7a0977926a205131d8731d39cbeb',
'11b39756c042441be6d8650b69b54ebe715e2343', '8c82b2fd82faed2711d59af0f2499d16e726f6b2',
'54ce5b4d348fb74b958e8966e2ec3dbd4958a7cd', '11b39756c042441be6d8650b69b54ebe715e2343',
'66b9590e1c41e0b226937bf9217d1d67fd4e91f5', '54ce5b4d348fb74b958e8966e2ec3dbd4958a7cd',
'74a3bf913953d695260d88bc1aa25a4eee363ef0', '66b9590e1c41e0b226937bf9217d1d67fd4e91f5',
'000ac0076727b35fbea2dac28fee5ccb0fea768e', '74a3bf913953d695260d88bc1aa25a4eee363ef0',
'af45ced136b9d9e24903464ae889f5c8a723fc14', '000ac0076727b35fbea2dac28fee5ccb0fea768e',
'f93124b7c738843cbb89e864c862c38cddcccf95', 'af45ced136b9d9e24903464ae889f5c8a723fc14',
'd2cc37a4dc036a8d232b48f62cdd4731412f4890', 'f93124b7c738843cbb89e864c862c38cddcccf95',
'da798f6896a3331f64b48c12d1d57fd9cbe70811', 'd2cc37a4dc036a8d232b48f62cdd4731412f4890',
'71aa1be1d36cafe3867910f99c09e347899c19c3', 'da798f6896a3331f64b48c12d1d57fd9cbe70811',
'8192b6e7387ccd768277c17dab1b7a5027c0b3cf', '71aa1be1d36cafe3867910f99c09e347899c19c3',
'178e21ad2e77ae06711549cfbb1f9c7a9d8096e8', '8192b6e7387ccd768277c17dab1b7a5027c0b3cf',
'5e1487f35515d02a92753504a8d75471b9f49edb', '178e21ad2e77ae06711549cfbb1f9c7a9d8096e8',
'6fbebc898f403e4773e95feb15e80c9a99c8348d' '5e1487f35515d02a92753504a8d75471b9f49edb',
] '6fbebc898f403e4773e95feb15e80c9a99c8348d'
} ]
}
```
### Submitting VAAs
Use `submit` to submit a VAA to a chain. It first parses the VAA and figures out Use `submit` to submit a VAA to a chain. It first parses the VAA and figures out
what's the destination chain and module. For example, a contract upgrade contains both the target chain and module, so the only required argument is the network moniker (`mainnet` or `testnet`): what's the destination chain and module. For example, a contract upgrade contains both the target chain and module, so the only required argument is the network moniker (`mainnet` or `testnet`):
@ -103,19 +102,73 @@ For VAAs that don't have a specific target chain (like registrations or guardian
set upgrades), the script will ask you to specify the target chain. set upgrades), the script will ask you to specify the target chain.
For example, to submit a guardian set upgrade on all chains, simply run: For example, to submit a guardian set upgrade on all chains, simply run:
worm-fetch-governance 13940208096455381020 > guardian-upgrade.txt ``` sh
worm submit $(cat guardian-upgrade.txt) --network mainnet --chain oasis $ worm-fetch-governance 13940208096455381020 > guardian-upgrade.txt
worm submit $(cat guardian-upgrade.txt) --network mainnet --chain aurora $ worm submit $(cat guardian-upgrade.txt) --network mainnet --chain oasis
worm submit $(cat guardian-upgrade.txt) --network mainnet --chain fantom $ worm submit $(cat guardian-upgrade.txt) --network mainnet --chain aurora
worm submit $(cat guardian-upgrade.txt) --network mainnet --chain karura $ worm submit $(cat guardian-upgrade.txt) --network mainnet --chain fantom
worm submit $(cat guardian-upgrade.txt) --network mainnet --chain acala $ worm submit $(cat guardian-upgrade.txt) --network mainnet --chain karura
worm submit $(cat guardian-upgrade.txt) --network mainnet --chain klaytn $ worm submit $(cat guardian-upgrade.txt) --network mainnet --chain acala
worm submit $(cat guardian-upgrade.txt) --network mainnet --chain avalanche $ worm submit $(cat guardian-upgrade.txt) --network mainnet --chain klaytn
worm submit $(cat guardian-upgrade.txt) --network mainnet --chain polygon $ worm submit $(cat guardian-upgrade.txt) --network mainnet --chain avalanche
worm submit $(cat guardian-upgrade.txt) --network mainnet --chain bsc $ worm submit $(cat guardian-upgrade.txt) --network mainnet --chain polygon
worm submit $(cat guardian-upgrade.txt) --network mainnet --chain solana $ worm submit $(cat guardian-upgrade.txt) --network mainnet --chain bsc
worm submit $(cat guardian-upgrade.txt) --network mainnet --chain terra $ worm submit $(cat guardian-upgrade.txt) --network mainnet --chain solana
worm submit $(cat guardian-upgrade.txt) --network mainnet --chain ethereum $ worm submit $(cat guardian-upgrade.txt) --network mainnet --chain terra
worm submit $(cat guardian-upgrade.txt) --network mainnet --chain celo $ worm submit $(cat guardian-upgrade.txt) --network mainnet --chain ethereum
$ worm submit $(cat guardian-upgrade.txt) --network mainnet --chain celo
```
The VAA payload type (guardian set upgrade) specifies that this VAA should go to the core bridge, and the tool directs it there. The VAA payload type (guardian set upgrade) specifies that this VAA should go to the core bridge, and the tool directs it there.
### info
To get info about a contract (only EVM supported at this time)
``` sh
$ worm evm info -c bsc -n mainnet -m TokenBridge
{
"address": "0xB6F6D86a8f9879A9c87f643768d9efc38c1Da6E7",
"wormhole": "0x98f3c9e6E3fAce36bAAd05FE09d375Ef1464288B",
"implementation": "0xEe91C335eab126dF5fDB3797EA9d6aD93aeC9722",
"isInitialized": true,
"tokenImplementation": "0xb6D7bbdE7c46a8B784F4a19C7FDA0De34b9577DB",
"chainId": 4,
"governanceChainId": 1,
"governanceContract": "0x0000000000000000000000000000000000000000000000000000000000000004",
"WETH": "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c",
"registrations": {
"solana": "0xec7372995d5cc8732397fb0ad35c0121e0eaa90d26f828a534cab54391b3a4f5",
"ethereum": "0x0000000000000000000000003ee18b2214aff97000d974cf647e7c347e8fa585",
"terra": "0x0000000000000000000000007cf7b764e38a0a5e967972c1df77d432510564e2",
"polygon": "0x0000000000000000000000005a58505a96d1dbf8df91cb21b54419fc36e93fde",
"avalanche": "0x0000000000000000000000000e082f06ff657d94310cb8ce8b0d9a04541d8052",
"oasis": "0x0000000000000000000000005848c791e09901b40a9ef749f2a6735b418d7564",
"algorand": "0x0000000000000000000000000000000000000000000000000000000000000000",
"aurora": "0x00000000000000000000000051b5123a7b0f9b2ba265f9c4c8de7d78d52f510f",
"fantom": "0x0000000000000000000000007c9fc5741288cdfdd83ceb07f3ea7e22618d79d2",
"karura": "0x000000000000000000000000ae9d7fe007b3327aa64a32824aaac52c42a6e624",
"acala": "0x000000000000000000000000ae9d7fe007b3327aa64a32824aaac52c42a6e624",
"klaytn": "0x0000000000000000000000005b08ac39eaed75c0439fc750d9fe7e1f9dd0193f",
"celo": "0x000000000000000000000000796dff6d74f3e27060b71255fe517bfb23c93eed",
"near": "0x0000000000000000000000000000000000000000000000000000000000000000",
"moonbeam": "0x0000000000000000000000000000000000000000000000000000000000000000",
"neon": "0x0000000000000000000000000000000000000000000000000000000000000000",
"terra2": "0xa463ad028fb79679cfc8ce1efba35ac0e77b35080a1abe9bebe83461f176b0a3",
"ropsten": "0x0000000000000000000000000000000000000000000000000000000000000000"
}
}
```
### Misc
To get the contract address for a module:
$ worm contract mainnet bsc NFTBridge
To get the RPC address for a chain
$ worm rpc mainnet bsc

View File

@ -169,7 +169,7 @@ yargs(hideBin(process.argv))
// Misc // Misc
.command( .command(
"parse <vaa>", "parse <vaa>",
"Parse a VAA", "Parse a VAA (can be in either hex or base64 format)",
(yargs) => { (yargs) => {
return yargs.positional("vaa", { return yargs.positional("vaa", {
describe: "vaa", describe: "vaa",