Skip to content

Safexcore Release Procedure

daniel dabek edited this page Dec 8, 2021 · 1 revision

This document describes the release procedure of safexcore project.

Development and bugfixes for current production release are performed on develop branch. Latest stable source code is on master branch.

Build test

Static safexcore source code build must be tested on the following platforms:

  • Ubuntu 18.04
  • Ubuntu 20.04
  • macOS
  • Windows 10

Builds for Ubuntu 18.04, macOS, and Windows are done via GitHub actions automatically when PR is merged to the master branch. Tests are done for Ubuntu 18.04 and macOS.

Test must confirm build without errors for safexd node, C++ safex cli wallet safex-wallet-cli and C++ rpc wallet safex-wallet-rpc.

Build for other projects depending on safexcore must also be tested:

Build procedures for the above-mentioned projects are documented on their GitHub pages.

Running tests

Perform testing on all platforms by building safexcore with make static-all and running tests in folder build/release/tests with ctest -V command.

Stage network tests

Stage network is used for realistic production pre-release testings. Explorer is available on Stagenet explorer.

Safexd node test

  • Confirm version number with version node command
    • make sure it matches the latest commit tag from the release branch
  • Sync safexd node locally from scratch from existing network
  • Sync locally second safexd node (on a different port) from newly synced safexd node in the previous step
  • Check blockchain height with print_height
  • Check hard fork info with hard_fork_info
  • Check safexd node mining by mining a couple of blocks (start_mining, stop_mining commands)
  • Print coinbase tx sum for number of blocks print_coinbase_tx_sum <start_height> [<block_count>]
  • Print print_migrated_token_sum tx sum for number of blocks print_migrated_token_sum <start_height> [<block_count>]

Safex cli wallet test

Prepare 3 stage net test wallets, wallet01, wallet02, and wallet03. They should already be filled with some cash and token amount. Use them and wallet command line to perform the following operations:

  • Use previous existing wallet files and sync one or more wallets
  • Recreate one or more wallets from scratch using both seed and keys and sync them up
  • Check viewkey and spendkey with viewkey and spendkey commands
  • Check cash transfer
    • Send safex cash small amount from one wallet to another, check for dust handling
    • Send safex cash larger amount from one wallet to another
    • Send safex cash from one wallet to another and test long payment id
    • Send safex cash from one wallet to another and test short payment id
    • Test sending cash with reduced ring size
    • Check if receiving wallet has received payments with payments <PID> command
    • Check sending cash to integrated address
    • Check sending cash to sub-address
  • Check token transfer
    • Send safex token small amount from one wallet to another, check for dust handling
    • Send safex token larger amount from one wallet to another
    • Send safex token from one wallet to another and test long payment id
    • Send safex token from one wallet to another and test short payment id
    • Test sending token with reduced ring size
    • Check if receiving wallet has received token payments with payments <PID> command
    • Check sending token to integrated address
    • Check sending token to sub-address
  • Check if wallet is regularly updated with new blocks information
    • is correctly displaying balance updates, tx history, output updates?
  • Test sweep_unmixable operation (if needed, create some uncommon large output and try to spend it)
  • Check current available outputs with unspent_cash_outputs
  • Check current token outputs with unspent_token_outputs
  • Check local cli wallet transaction history
    • Are all transactions correctly displayed?
  • Check particular transfer with show_transfer <txid> command
    • Check for inconsistencies
  • Check blockchain rescan process with rescan_bc and rescan_spent commands
  • Check balance with balance, balance_cash, balance_token commands
  • Check proof if somebody has send transaction (get_spend_proof, check_tx_proof)
  • Check transaction key for particular previous transaction with get_tx_key

Safex RPC wallet test

Repeat all previous cli wallet tests with RPC wallet, using RPC scripts.

Blockchain explorer test

Check stagenet blockchain explorer.

  • Blocks info getting updated regularly
  • Check information for one block
  • Check transaction info display
    • Check if it is possible to decode outputs of the transaction
    • Check if it is possible to prove sending of the transaction

Release

After all tests pass successfully, a new GitHub release should be created. It should contain Windows, Ubuntu 18.04, and macOS binaries for node, command-line wallet, and rpc wallet. In the description, there should be points about what are new features and bug fixes in this release and there should be sha256sum for each binary listed.