lukechampine / walrus-cli

A client for the walrus wallet server
MIT License
3 stars 0 forks source link
ledger sia siacoin wallet

walrus-cli

walrus-cli is a client for walrus. It makes it easy to check your balance, generate addresses, and sign and broadcast transactions using either a "cold" Ledger Nano S hardware wallet or a traditional "hot" wallet.

Setup

You will need a synchronized walrus server. You can specify the address of the server with the -a flag.

If you are using a Nano S, the Sia app must be installed and open when walrus-cli commands are run.

If you want to use walrus-cli as a hot wallet, run walrus-cli seed to generate a new seed, and pass the -hot flag to all future commands. Each command will prompt you to enter your seed. You can bypass these prompts by setting the WALRUS_SEED environment variable.

Generating an Address

Run walrus-cli addr to generate a new address and add it to your walrus server. By default, addr uses the seed index reported by the server's /seedindex endpoint. You can generate a specific address with walrus-cli addr [index].

Creating a Transaction

Use the walrus-cli txn command to construct a transaction. Transactions are specified in comma-sparated address:amount pairs. For example, to send 100 SC to one address and 0.1 SC to another, you would write:

$ export DEST_ADDR_1=2ce86e0f5c4b282b51508a798ab8f1091c1cfcc0ee0feaa840e514f37af8dd2f3078fa83f125
$ export DEST_ADDR_2=62e4b26fd772a25029b92b4f06e87202b97bd9a214ff458154bb96e350fda2991b4afb1ff8ed
$ walrus-cli txn $DEST_ADDR_1:100,$DEST_ADDR_2:0.1 txn.json

walrus-cli will figure out which UTXOs to use, select an appropriate fee, and send any change back to an address you control. If you are using walrus-cli with a narwal server, a donation will also be added: either 1% of the transaction value, or 10 SC, whichever is greater. The resulting transaction will be written to disk as JSON.

Signing a Transaction

Run walrus-cli sign txn.json to sign the transaction stored in txn.json. The details of the transaction will appear on your Nano S screen, and you will be prompted to approve signatures for each input you are spending. Unfortunately, you must scroll through the transaction details for each signature. The signed transaction will be written to txn-signed.json.

Broadcasting a Transaction

Broadcasting a transaction is as simple as walrus-cli broadcast txn-signed.json.

All Together Now

For convenience, you can merge these three steps (creating, signing, broadcasting) into one. Just pass the --sign and --broadcast flags to the txn command (or just --sign if you don't want to broadcast immediately). The transaction will be constructed, signed, and broadcast without ever touching disk. You can also pass the --broadcast flag to the sign command for the same effect.