All notable changes to this project will be documented in this file.
Exceptions are the API server and WASM bindings, which have their own changelogs.
The format is loosely based on Keep a Changelog.
-
Wallet:
- Added support for Ledger hardware wallets (beta).
-
Wallet RPC:
- New value
ledgerin thehardware_walletoption forwallet_create,wallet_recoverandwallet_openmethods.
- New value
-
Wallet CLI:
wallet-create/wallet-recover/wallet-opensupport theledgersubcommand, in addition to the existingsoftwareandtrezor, which specifies the type of the wallet to operate on.
-
Node RPC: new methods added -
chainstate_tokens_info,chainstate_orders_info_by_currencies. -
Wallet RPC:
- new methods added:
node_get_tokens_info,order_list_own,order_list_all_active,utxo_spend.
- new methods added:
-
Wallet CLI:
- the commands
order-create,order-fill,order-freeze,order-conclude,htlc-create-transactionwere added, mirroring their existing RPC counterparts. - other new commands added:
order-list-own,order-list-all-active,utxo-spend,htlc-generate-secret,htlc-calc-secret-hash.
- the commands
-
Wallet:
- Now the wallet subscribes to events from the Mempool to include not yet confirmed transactions relevant to this wallet.
-
Node:
-
new options added:
node-daemon:--import-bootstrap-file- import a bootstrap file on start (previously bootstrapping was only available via node RPC).
node-daemonandnode-gui:--enable-db-reckless-mode-in-ibd- this enables the "reckless" mode of the chainstate database during initial block download or bootstrapping, which significantly increases its speed at the cost of a potential db corruption if the system crashes in the meantime.
-
-
Wallet RPC:
wallet_info: the structure of the returned fieldextra_infowas changed.create_order,conclude_order,fill_order,freeze_orderwere renamed toorder_create,order_conclude,order_fill,order_freeze.
-
The format of
PartiallySignedTransactionwas changed again. -
Node RPC:
-
The result of
chainstate_order_infonow also indicates whether the order is frozen. -
chainstate_pool_decommission_destinationnow returns a bech32 string instead of a hexified destination (note that in the generated documentation its result was already incorrectly designated as "bech32 string"; now the description is correct). -
Documentation-only changes:
- Certain parameters that were designated as "string" are now designated as "bech32 string".
-
-
Node:
- The now redundant option
min_max_bootstrap_import_buffer_sizeswas removed from chainstate config. - The option
--clean-datais now a top-level option, i.e. instead of writingnode-daemon testnet --clean-datayou have to writenode-daemon --clean-data testnet.
- The now redundant option
-
Node bootstrapping:
- The format of the bootstrap file was changed and the legacy format is no longer supported.
-
P2p:
- The logic of initiating new outbound connections has been improved to prevent the node from constantly attempting to re-establish a connection with a peer that has banned it.
-
P2p:
-
When a peer sends a message that can't be decoded, it will now be discouraged (which is what is normally done for misbehaving peers) and the node won't try connecting to it again.
Also, the peer will be sent an appropriateWillDisconnectmessage prior to disconnection. -
Fixed a potential indefinite stalling of a particular connection when both nodes start sending large amounts of data to each other.
-
Fixed a potential indefinite exchange of the same header list requests and responses if the node and the peer are on different branches of a deep fork (such as the one happened due to the recent hard fork).
-
-
Wallet CLI and RPC: the commands
account-utxosandstandalone-multisig-utxosand their RPC counterparts now return correct decimal amounts for tokens with non-default number of decimals. -
Node RPC:
-
chainstate_order_infowill no longer fail if one of the order's balances became zero. -
Documentation-only changes:
-
Certain parameters and/or returned values that were previously (incorrectly) designated as "hex string" are now designated as "hexified xxx id".
-
Parameters and/or returned values having the "plain"
Destinationtype were incorrectly designated as "bech32 string", while in reality they are "hexified destination".
-
-
-
Node bootstrapping:
-
Fixed a bug where importing a bootstrap file would truncate the file to zero length instead of actually importing it.
-
Importing a bootstrap file will no longer fail if some of the blocks already exist in the chainstate.
-
Bootstrapping can now be interrupted via Ctrl-C.
-
The speed of the import was improved.
-
-
General
- Fixed a bug that could lead to indefinite stalling of the node during initial sync when there are many peers and the host machine is slow.
- Fixed a Windows-specific crash in
node-daemonandnode-guithat occurred when the chainstate DB reached 2 GB.
-
A Mainnet fork is scheduled at height 517700 with the same consensus changes that previously happened on Testnet, namely:
- Orders V1.
- Change in the token id generation.
- Transaction input commitments V1.
- Prohibit updating staker's destination in
ProduceBlockFromStakeoutputs.
See the changelog for v1.1.0 below for extra details.
-
Wallet:
-
Added a new
wallet-clicommand to undiscourage a previously discouraged peer -node-undiscourage-peer-address. -
Added a new
wallet-clicommand to return the account's extended public key -account-extended-public-key-as-hex. -
Added new
wallet-clicommandconfig-broadcast. Whenconfig-broadcast nois called, it prevents all commands that create transactions from automatically broadcasting them to the network. -
wallet-cligained a new option--no-qr, which disables QR code output for wallet commands. -
Added support for Trezor hardware wallets (beta).
Because of this,
wallet-cliandwallet-rpc-daemongained an additional parameter,--hardware-wallet, which must be used together with--wallet-fileto indicate that the wallet file being opened corresponds to a hardware wallet.
-
-
Wallet RPC:
- New methods:
account_extended_public_key,node_undiscourage_peer_address(similar to the corresponding commands inwallet-cli) andtoken_make_tx_to_send_with_intent.
- New methods:
-
Node RPC: new methods -
chainstate_pool_decommission_destination,p2p_undiscourage. -
node-guiandnode-daemonnow can store info-level logs to the data directory, regardless of what is printed to the console. This is controlled by the--log-to-fileoption, which is enabled by default fornode-gui.
-
A Testnet fork is scheduled at height 566060 with the following consensus changes:
-
Orders V1. The previous (V0) order inputs will no longer be supported, and the new (V1) ones will have to be used instead.
The main difference is that the new order commands don't use nonces. Also, an additional order-related input will be available -FreezeOrder. -
Change in the token id generation.
Previously, when a new token was being issued, its token id would be generated from the first input of the issuing transaction (which can be UTXO-based or account-based).
Now the token id will always be generated from the first UTXO input of the issuing transaction. -
Transaction input commitments V1.
Transaction signatures will now commit to additional information about the transaction (i.e. the information will become a part of what is being signed), namely:
- In transactions that decommission a pool the signatures will commit to the current staker balance.
- In transactions that fill or conclude an order the signatures will commit to the order balances.
-
Updating staker's destination in
ProduceBlockFromStakeoutputs will no longer be possible.
-
-
ChainstateStorageVersionwas increased, full node resync is required. -
Wallet CLI commands:
-
wallet-createwas split into 2 commands -wallet-createandwallet-recover. They both create a new wallet file and the difference is thatwallet-recoverrescans the blockchain upon creation andwallet-createdoesn't. -
wallet-create/wallet-recover/wallet-opennow have a mandatory subcommand, which can be eithersoftwareortrezor, which specifies the type of the wallet to operate on. -
staking-create-poolnow accepts two optional additional parameters - the staker address and the VRF public key. This allows to create a pool from a wallet other than the one that will be used for staking. -
transaction-list-by-addressandtransaction-list-pendingnow print their output in paginated mode. -
address-shownow has the option--include-change, which makes it include the change addresses in the output. The command will now also print the coin balances of shown addresses. -
address-sweep-spendablenow has the option--all, which makes it sweep all addresses of the selected account.
-
-
Wallet RPC:
-
Most of the methods that create transactions, such as
address_send, now accept an additional field in theiroptionsparameter -broadcast_to_mempool, which specifies whether the transaction should be sent to the mempool upon creation. The default istrue(which is the old behavior). -
Methods that create transactions now also return extra information in addition to the transaction id - the transaction itself (in the hex-encoded form), the info about fees paid by the transaction, whether it was broadcast to mempool or not.
-
address_sweep_spendablegained an additional boolean parameter -all, which may be used to force it to sweep all addresses from the given account. -
staking_create_poolgained additional optional parameters -staker_addressandvrf_public_key, same as the correspondingwallet-clicommand. -
wallet_createwas split intowallet_createandwallet_recover, same as the correspondingwallet-clicommand. -
wallet_create,wallet_recoverandwallet_opengained an additional optional parameter -hardware_wallet. This specifies the type of the hardware wallet to use (currently only trezor wallets are supported); if not set, the wallet is meant to be a software wallet.The results of
wallet_create,wallet_recoverandwallet_opennow may contain additional data, to indicate a situation when creating/recovering/opening a hardware wallet could not be completed due to multiple potentially suitable devices being available.Also,
wallet_createandwallet_recover's result will no longer include the passphrase. -
wallet_inforeturns an additional fieldextra_info, which specifies whether it's a software or hardware wallet; in the latter case the field will also contain additional information, such as the device name. -
address_showgained an additional parameter -include_change_addresses, similar to the corresponding command inwallet-cli.Also, the result of the call now contains additional info - the purpose of each address ("Receive" or "Change") and its coins balance.
-
-
The format of `PartiallySignedTransaction was changed.
Note that
PartiallySignedTransactionis returned or accepted in the hex-encoded form by certainwallet-clicommands and their wallet RPC counterparts, such astransaction-composeoraccount-sign-raw-transaction.
-
Fixed issues in the wallet related to a transaction with an outdated nonce not being marked as conflicted.
-
node-guino longer ignores the network type (i.e. "mainnet" ot "testnet") passed via the command line. -
Fixed an issue where
node-guiwould appear stuck when opening a wallet that wasn't synced in a long time. -
Fixed an issue in the wallet where a text summary for a token-issuing transaction would show its "freezable" status incorrectly.
-
Fixed issues with transaction fee calculation in the wallet.
-
Fixes related to standalone private keys in the wallet:
- Fixed encryption of standalone private keys when a new password is set or the existing one is changed.
- Fixed watching/scanning for relevant public key destinations belonging to standalone private keys (only public key hash destinations used to work before).
- Fixed wallet balance to show spendable UTXOs belonging to standalone private keys.
-
Various minor visual fixes in
node-gui. -
wallet-clihelp output was prettified.
No changes except for the API server, see the corresponding CHANGELOG.md.
- Fix erroneous peer discouragement after mempool reorg.
First major release.