Migrating from 3.x
Current releases are node 4.0.3, wallet 4.0.0 and epicbox protocol 3.0.0.
API changes
total_difficulty is an object
Difficulty is tracked separately for each proof-of-work algorithm:
{
"total_difficulty": {
"cuckaroo": 0,
"cuckatoo": 1234,
"randomx": 5678,
"progpow": 9012
}
}
Block headers describe proofs with two fields
proof names the algorithm and solution is a tagged union whose shape depends on it. In 3.x a
single scalar field carried the solution.
Wallet output and transaction reads take pagination
retrieve_outputs and retrieve_txs take limit, offset and sort_order. Supply them explicitly.
Status gains supply fields
supply and max_supply are amounts in freemen. blocks_to_next_halving is a count of blocks, at
api/src/types.rs:96. Reward steps are not all halvings; see
emission.
Kernels appear in two shapes
get_block returns a flattened kernel. get_kernel and get_last_n_kernels return the raw type with an
externally tagged features field.
Command line changes
Flags moved. init -h for the current directory is now -w, scan -h <height> is now
-s <height>, and the node's taxes argument is start_height. New wallet commands are export_tx,
import_tx and change_password, plus --slate_version on the transfer commands. Every command and
flag is in configuration and CLI.
The algorithm mix on the test networks is selected by config key, not by a command-line flag. See the block policy.
Toolchain and build
Each repository pins its Rust version, so installing rustup is sufficient and you should not pin a version yourself. Building also needs system packages beyond a Rust toolchain, listed per platform in building from source.
Storage changes
The wallet stores data in SQLite at db/sqlite/epic.db, in WAL mode, and its Tor directory is
wallet_tor. Anything that read the 3.x wallet database directly needs rewriting. Paths and keys are
in wallet configuration.
New behaviour
Bundled Tor
Building with --features with-tor downloads a Tor expert bundle and verifies it against a committed
digest. Release builds do not enable the feature. See
what this version does not cover.
Epicbox acknowledges delivery
Protocol 3.0.0 adds a Made acknowledgement carrying a per-message id, so a
slate is marked delivered only once the recipient confirms it processed it. Compatibility with
pre-3.5.2 clients is preserved. See the protocol.
Mempool confirmation after posting
The wallet watches the node's mempool after posting a transaction and records a distinct state when it
appears. That wait is why a send can look unresponsive, covered in
the send appears to hang, and it moves a
posted transfer out of the set cancel_tx accepts, covered in
cancelling has preconditions.
The epicbox relay implementation changed
The relay is EpicCash/epic-epicbox-docker, Node.js with a Rust verification helper. Its deployment
topology and storage are in the epicbox reference.
Behaviour to check in your integration
tx_lock_outputsis required in a manual send sequence. See what reserves outputs.- Epicbox converts every slate to V2, which drops a payment proof request. See the transport comparison.
change_passwordremoves the backup seed unless--remove-backupis passed.- Sync validation defaults changed shape.
skip_pow_validationanddisable_checkpointsdefault totrue, which skips proof of work for checkpointed history while always fully verifying the most recent 1,000 blocks. See node and wallet setup.