Sign and Broadcast Tx

Requirements

  • Linux Workstation (online machine)

    • Any internet connected computer with a Linux shell will suffice
  • Air-gapped machine

  • Air-gapped machine

  • Trove SD Card

Procedure

Online Machine: Acquire Nonce

1.Turn on online linux workstation

  1. Retreive Trove SD card

  2. Get the nonce address for the address you are sending from by checking the appropriate <namespace>/<coin>/ directory.

    • e.g trove/<namespace>/<coin>/0-na.txt

    • Set the nonce address variable:

    $ nonce_address="$(cat trove/<namespace>/<coin>/<account_id>-na.txt)"
    
  3. Set ICEPICK_DATA_DIRECTORY:

    Look for the SD card device name (<device_name>) in the output of the lsblk command. It will typically be listed as /dev/sdX or /dev/mmcblk<num>, where X is a letter (e.g., /dev/sdb, /dev/sdc). You can identify it by its size or by checking if it has a partition (like /dev/sdX1)

    • Mount the device using: sudo mount /dev/<device_name> /media
    $ export ICEPICK_DATA_DIRECTORY=/media/external/
    
  4. set ICEPICK_CONFIG_FILE

    $ export ICEPICK_CONFIG_FILE=<path_to_icepick_repo>/icepick.toml`
    
  5. Run the command:

    $ icepick workflow sol broadcast --nonce-address=$nonce_address
    
    • Await completion message before removing Trove SD card

    • This command will set the computer into "awaiting mode", which will broadcast the signed transaction from the SD card once it's plugged back in after the workflow payloads are signed on the offline machine

Offline Machine: Create and Sign Transaction

  1. Retrieve AirgapOS SD card and plug it into the air-gapped machine

  2. Boot the computer

  3. Unplug the AirgapOS SD card and place it in High Visibility Storage

  4. Retrieve Trove SD card from High Visibility Storage and plug it into the air-gapped machine

  5. Look for the SD card device name (<device_name>) in the output of the lsblk command. It will typically be listed as /dev/sdX or /dev/mmcblk<num>, where X is a letter (e.g., /dev/sdb, /dev/sdc). You can identify it by its size or by checking if it has a partition (like /dev/sdX1)

    • Mount the device using: sudo mount /dev/<device_name> /media
  6. Start Keyfork using the relevant Shardfile:

    $ keyfork recover shard --daemon /media/<device_name>/trove/<namespace>/shardfile.asc
    
    • The Shardfile may be named something else. Use find /media/<device_name>/vaults -type f -name '*shardfile*.asc' to list all files.
  7. Follow on screen prompts

  8. Set ICEPICK_DATA_DIRECTORY:

    $ export ICEPICK_DATA_DIRECTORY=/media/<device_name>
    
  9. Run the icepick command with the transaction payload

    • The payload is located in the appropriate vault location (e.g /media/<device_name>/trove//ceremonies/...)
    $ icepick workflow --run-quorum <payload>.json --shardfile /media/<device_name>/trove/<namespace>/shardfile.asc
    
    • Follow on screen prompts
  10. Unplug Trove SD card

Broadcast Transaction: Online Machine

  1. Plug Trove SD card into online machine

  2. The still running broadcast command on the online machine will broadcast the transaction automatically

  3. The url that's found in the response after a successful broadcast should be reviewed and committed to the ceremony repository

  4. Remove the transaction files in ICEPICK_DATA_DIRECTORY

    $ rm $ICEPICK_DATA_DIRECTORY/transaction.json
    $ rm $ICEPICK_DATA_DIRECTORY/nonce.json
    
  5. Unplug Trove SD card

Repeat

  1. You may repeat previous steps as many times as necessary to process all workflow payloads

Finalization

  1. Shut down online machine

  2. Shut down the air gapped machine

Sealing

  1. Gather all the original items that were in the air-gapped bundle:

    • Air-gapped computer

    • AirgapOS SD card

    Vacuum sealing based tamper proofing
    1. Insert object(s) into plastic sealing bag

    2. Fill bag with enough plastic beads that most of the object is surrounded

    3. Use vacuum sealer to remove air from the bag until the beads are no longer able to move

    4. Take photographs of both sides of the sealed object using both the digital and polaroid camera

    5. Date and sign the polaroid photographs and store them in a local lock box

    6. Take the SD card to an online connected device, ensuring continued dual custody, and commit the tamper evidence photographs to a repository. If two individuals are present, have one create a PR with a signed commit, and the other do a signed merge commit.

    Safe based tamper proofing
    1. Place items into safe

    2. Ensure the safe is properly locked