v2.2.0.486
Huge update. This is the first HF6-aware release, adding gateway addresses support and:
- stricter HF6 consensus rules;
- intrinsic per-output payment IDs which are more secure and convenient;
- hardened wallet-file encryption;
- simulation mode for mining-pool block validation, that blacklists bad transactions on errors;
- p2p DoS hardening: SOCKS5 proxy support and a broad set of limits;
- more secure RPCs related to data encryption/decryption.
More detailed changelog:
[+] core: gateway addresses — a new address type carrying asset transfers in the clear (public asset_id and amount on-chain); added txin_gateway / tx_out_gateway input and output types, gateway address descriptor register/update and owner-change operations, EdDSA-based signature verification of gateway operations, and a gateway registration fee
[*] core: stricter HF6 consensus rules; enforced the transaction version check after HF6; added a hardfork-specific terms verification table constraining allowed input/output types per fork; reworked miner-tx proof rules; linked range-proof count to the number of confidential outputs and skipped range proofs for txs with no confidential outputs; relaxed the minimum-outputs limit when only gateway outputs are present
[*] core: refactored HF6-specific transaction size calculation
[*] core: replaced Boost-based serialization of the transaction object with crypto-serialization; enforces a one-time wallet resync
[*] core: hardened alternative-chain block validation; fixed a rare UB in alt-block validation; removed validation asymmetry between the main-chain and alt-chain paths; added the missing future-time limit check for PoW alt blocks
[*] core: fixed the fork-choice rule formula
[*] core: tightened transaction input limits; introduced CURRENCY_TX_PRACTICAL_MAX_INPUTS and a max tx count in the pool; fixed the max-allowed-inputs and check_tx_input checks
[*] core: improvements for pre-hardfork transaction freeze period handling; get_info now exposes pre_hf_tx_freeze_period_active and a dedicated freeze-period error code was added
[*] core: added a soft limit for asset meta_info
[*] core: added a CURRENCY_NOTIFY_REQUEST_CHAIN_MAX_BLOCKS_COUNT check; gateway inputs and outputs are now explicitly incompatible with mode "separate"
[+] core: getblocktemplate simulation mode for mining-pool block validation; force tx blacklisting on COMMAND_RPC_SUBMITBLOCK / SUBMITBLOCK2 failure
[+] core: added SHA-512 and an in-house EdDSA implementation (RFC 8032, Dalek-compatible on edge cases) used for gateway-address signatures
[*] core: intrinsic payment IDs supported under HF6
[*] core: LMDB updated to the latest upstream with assorted fixes; fixed a storage memory-consumption issue and a potential memory leak
[+] rpc: gateway API — gateway_get_address_info, gateway_create_transfer, gateway_sign_transfer, gateway_get_address_history and gateway owner-change; methods require the tx secret key and use a double-signature scheme for transfer/owner-change signing
[*] rpc: get_tx_details and decrypt_tx_details gained gateway support; decrypt_tx_details gained an optional strict_output_addresses_match flag and improved output decryption
[+] rpc: added service entries
[*] rpc: updated the get-random-outputs limit; made COMMAND_REQUEST_ANONYMIZED_PEERS publicly accessible
[+] wallet rpc: get_recent_txs_and_info3 (HF6: subtransfers_by_pid and intrinsic payment-id support); get_recent_txs_and_info2 fixed to keep supporting the legacy interface
[+] wallet rpc: get_outputs and get_utxo_stats implemented
[+] wallet rpc: sweep_below now supports asset sweeping with max_inputs / min_outputs parameters and clear error codes (-7 not enough money for fee, -13 nothing to do); available from both simplewallet and RPC
[+] wallet rpc: transfer gained an out_ids_to_spend parameter
[*] wallet rpc: encrypt_data and decrypt_data rewritten to a more secure format; legacy data is still readable via decrypt_data_legacy with --allow-legacy-decrypt
[*] wallet rpc: sign_message and validate_signature made more secure with hash domain separation, keeping legacy verification support
[*] wallet rpc: refuse to start without auth unless explicitly acknowledged; removed the obligatory refresh-on-load in RPC mode
[+] wallet rpc: implemented portable_storage limits for the wallet RPC proxy
[*] wallet rpc: cleaner handling of too-many-outputs / too-many-inputs errors
[+] wallet: hardened wallet-file encryption — chacha20 streaming encryption, a v5 wallet-body encryption format, and a memory-hard password KDF (ROMix-Keccak)
[*] wallet: improved decoy selection; new default per-block decoy-selection algorithm (v2); correct decoy-height distribution honoring the 10-block unlock time
[*] wallet: output shuffling is now enabled by default
[*] wallet: reworked payment-id handling; anti self-directed-transfer rules extended to HF6 and intrinsic payment IDs; self-directed txs are ignored in certain payment-id cases
[*] wallet / simplewallet / rpc: forbid self-directed transfers to an integrated address
[*] wallet: stricter rules for auto-whitelisting own assets; an own asset is now also auto-added to the custom list on incoming-tx processing (helps after a resync)
[+] wallet: improved pending key-image restoration (see the docs); --resync-and-exit CLI option added
[+] wallet: enumerate_transfers added; current_pos_attempts and est_iterations_per_pos_block added to wallet status
[*] wallet: fixed the wallet-manager callback being lost on wallet gen/restore; fixed get_ionic_swap_proposal_info; fixed plain-wallet connection reset; fixed desync block-data display
[*] wallet: allow_legacy_payment_id_size is on by default (for the GUI)
[*] simplewallet: reworked payment-id handling; explicit payment id removed from the transfer command; new [legacy] payment-id mode replaces --allow-legacy-payment-id-size; corrected payment-id generation rules; added a pre-hardfork freeze-period check
[+] simplewallet: added the 'version' command, 'self' as an alias for the wallet's own address, 'r' as an alias for 'refresh', optional key-image display in list_outputs, and password handling for save_watch_only
[*] simplewallet: use an explicit transfer call and enforce output shuffling
[*] simplewallet: fixed amount display when the decimal point = 0
[+] p2p: SOCKS5 proxy support, including HTTPS over SOCKS5
[+] p2p: DoS-hardening limits: per-IP incoming connection limit, inbound peerlist size validation, a levin packet-size limit, zlib decompression size limits, a soft limit for meta_info, and an upper bound on the conn_fails_cache map (oldest evicted on overflow)
[*] p2p: peerlist handling improvements; last_seen + shuffle + 20% fresh-peer logic; skip never-seen peers in get_peerlist_head; peerlist size check for HF6 and earlier; handshake exception handling
[*] p2p: fixed connection-count limits, relay-queue processing (process_current_relay_que), throwable_buffer_reader::read_ae, and threads_count argument usage
[*] general: switched Linux stacktracing to Boost libbacktrace
[+] gui: many improvements for tx sending process; added an HTML content integrity check
[+] predownload: updated mainnet predownload files (pruned and unpruned) up to height 3709300, plus refreshed testnet predownload files
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
Windows:
INST: https://build.zano.org/builds/zano-win-x64-release-v2.2.0.486[a518a20]-installer.exe
sha256: 828346524633d6e100a26e794c00d5601e00392c088971643883cfde46cd3d12
ZIP: https://build.zano.org/builds/zano-win-x64-release-v2.2.0.486[a518a20].zip
sha256: 7dfc097da2ec51abfb80d001d9028a5e0866ec1ea98ba78e88e0cca618dab759
macOS:
https://build.zano.org/builds/zano-macos-x64-release-v2.2.0.486[a518a20].dmg
sha256: 5d44c761ead92bbd408491eaa3c0ed2d68bc68a384426fac0852fe767abca450
Linux:
https://build.zano.org/builds/zano-linux-x64-release-v2.2.0.486[a518a20].AppImage
sha256: 2d5f2999f4902bdb94abc207897bcb78a832074f2e70db82962e8913cb027d92
-----BEGIN PGP SIGNATURE-----
iHUEARYKAB0WIQSAlUHSyV95S5huh5+pK4bC95+XGgUCaihFBgAKCRCpK4bC95+X
GmQRAP42ZpMDA64FvED0AYNLotfeH2r00MlL6FBiNMXnZVEE1gEA0M6p1TvNXIeY
9nAKU4vg7bbXnNOeuaj3tfU9CAo+Yw8=
=hUw9
-----END PGP SIGNATURE-----