Smith operations in Ğcli

This page describes smith operations in Ǧcli.

Help

You can see the help with gcli smith --help:

> gcli smith --help
Smith (certify, go-online, go-offline...)

Usage: gcli smith <COMMAND>

Commands:
  go-online         go online
  go-offline        go offline
  update-keys       Rotate and set session keys
  set-session-keys  Set session keys
  show-expire       List upcoming expirations that require an action
  show-online       List online authorities
  invite            Invite identity to become smith
  accept            Accept invitation
  certify           Certify smith
  help              Print this message or the help of the given subcommand(s)

Smith web of trust

These are the smith web of trust commands:

# invite a member to join the smith web of trust
gcli smith invite <pseudo>
# then, the member invited to become smith has to accept the invitation
gcli smith accept
# once accepted, people can start certifying
gcli smith cert <pseudo>
# when enough certifications are collected, the identity becomes member of the smith wor
gcli identity get -u <pseudo>
# [see smith status in output]

PS: You need to be member of the main Web of Trust to be smith (so if you are no longer member of the main WoT, your smith status will therefore automatically be lost).

Smith node management

You smith node must own session keys. If you generated them from another tool, you can use gcli smith set-session-keys <hexadecimal> but there is the all-in-one command update-keys which makes things simpler.

# connect with a ssh tunnel to your smith node unsafe API (or use a vpn, or use gcli on the same machine)
ssh -NL 9944:localhost:9944 smith_node
# call update keys
gcli --url ws://localhost:9944 smith update-keys

The "update key" command does two things:

⚠️ the command does not print anything on success for the moment, this should be changed in gcli

Ğcli does not yet have the capability to check if published session keys are actually present on the node, this could be added, please contribute ;)

Smith update online state

After setting your session keys, in the case you would like to start issuing blocks, you need to go online to be part of the next set of authorities. go-online will be sent to the blockchain for the next epoch. After one hour, you will enter in the online smith pool to compute blocks. If you know your server is planned to be offline, you can do a go-offline to explicitly removed it from the set authorities for the next epoch. If you don't explicitly go offline, but your server is offline, it will generate an offense and sets you offline automatically in the next epoch. In any case you will need to go online manually when you are back.

Associated commands:

gcli smith go-online
gcli smith go-offline

Smith management with v1 credentials on a remote server

If you are managing a v2 smith node via ssh with v1 credentials, adapt previous commands as follow:

# instead of `gcli smith accept` to accept smith invitation, use:
gcli --url ws://localhost:9944 --no-indexer --secret-format cesium smith accept

# instead of `gcli smith update-keys` use:
gcli --url ws://localhost:9944 --no-indexer --secret-format cesium smith update-keys

# instead of `gcli smith go-online` use:
gcli --url ws://localhost:9944 --no-indexer --secret-format cesium smith go-online 

PS: options need to be placed before the sub-command. gcli smith go-online --url ws://localhost:9944 --no-indexer --secret-format cesium won’t work.

PS2: --no-indexer is a fail-safe way to run these commands but it is not required if gcli is linked with an up-to-date indexer in its configuration.