Securely Sign Transactions from CLI

Pop CLI provides an option to securely sign transactions from the CLI. It does this by opening a signing portal allowing you to sign the transactions using your browser extension wallet.

Example Usage: Deploying a Contract

For a full guide on deploying a contract, see the Deploy Your Contract Locally guide.

Normally, you would provide --suri=<private-key> to interact with the chain. However, this implies a potentially insecure way of handling private keys and should only be used for development accounts. For production accounts and more secure signing, Pop CLI provides the --use-wallet option that you can use.

Here is an example of deploying a contract using --use-wallet:

pop up --constructor new --args false --use-wallet

This will open a signing portal in your browser. Pop CLI will display the following:

  Wallet signing portal started at http://127.0.0.1:9090.

  Waiting for signature... Press Ctrl+C to terminate early.

Your browser will open a new tab with the following screen at http://127.0.0.1:9090 (or similar if the port is already in use);

Signing Portal Initial Open

Click on the Connect Wallet button to connect your browser extension wallet.

Connect Wallet

After connecting your wallet, you will have the option to choose your account and sign the transaction, and finally see the transaction details for signing. Note that for contract calls, the portal will perform a dry-run to alert you if the transaction will succeed, and also estimate the gas costs.

Transaction Details

If the transaction will fail, the dry-run alert will change:

Failing Dry Run

In this case, you can expand the dry-run alert to see the error details. This example shows an error of the account not having enough funds:

Expanded Failing Dry Run

Once ready to sign, pressing the Submit button will open your wallet for signature.

⚠️ It is important to verify transaction details in your wallet before signing.

Opened Wallet for Signing

Signing the transaction will show a success message in the portal. You may close the portal after signing.

After the signed transaction is received, the portal will send the transaction payload to Pop CLI, which will then submit the transaction to the chain.

◆  Signed payload received.

◇  Contract deployed and instantiated:
● The contract address is "5F1P99TD63qZ9bnoxrK7kuzwMWuU7kKKVJJZoVKBYoVQtQeR"
● The contract code hash is "0x9e4bbfc311f58aaffb63d7570651567d40dd76f301f601a0f0a61f3204d49e5b"

Need help?

Ask on Polkadot Stack Exchange (tag it pop) or drop by our Telegram. We're here to help!

Last updated

Was this helpful?