-
Notifications
You must be signed in to change notification settings - Fork 28
Safexcore Release Procedure
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.
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:
- Safex Blockchain Explorer master branch build
- Safex NodeJS libwallet master branch build
Build procedures for the above-mentioned projects are documented on their GitHub pages.
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 is used for realistic production pre-release testings. Explorer is available on Stagenet explorer.
- 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>]
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
andspendkey
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
andrescan_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
Repeat all previous cli wallet tests with RPC wallet, using RPC scripts.
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
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.
RPC documentation
Advanced functionalities
Blockchain logic and database
Manuals