This release contains several convenient tweaks and optimizations:
These are to make Bytecoin software faster, safer and more reliable:
in walletd's get_transfers method an error is returned if from_height is larger than to_height or top block height;
WALLET_FILE_EXISTS (209) is correctly returned when walletd is instructed to overwrite an existing wallet;
fixed a bug when a wrong error message was displayed when passing some invalid addresses to walletd's create_transaction RPC method;
LMDB virtual memory usage by bytecoind and walletd reduced from fixed 512Gb to approximate actual blockchain database/wallet cache size;
walletd will not undo sync progress if a connected node is behind the wallet state and behind the latest hard checkpoint. It will wait for a node to advance to that checkpoint;
wallet cache now takes much less space, especially for wallets with a small number of transactions;
for all TCP sockets keep_alive option is now set after they are created (with default timeouts for each system, common value is 2 hours), solving a very rare bug when there would be no reply to a long poll for external services (like block explorers) calling from remote machines;
all paths are now subject to substitution of ~ (Mac & Linux) and %appdata% (Windows). Also, on Linux and Max backslash is no longer considered a path separator.
These tweaks make working with Bytecoin software more comfortable:
JSON numbers are now interpreted according to spec throughout API, for example, 10.01E2 is now a correct value for the height (1001). This helps with integration with some weird languages;
clearer error messages are now returned throughout the API when the required parameters are not specified;
a more strict JSON RPC is now used - excess fields on the top level are no longer allowed in the requests;
bytecoind's binary version of sync_blocks method now uses a separate zero overhead response to save traffic during a sync.
Incompatible API changes:
Sometimes in order to make an improvement to the API, we have to discontinue support for some functions. We announce such deprecations here.
bytecoind's getblocktemplate, submitblock and JSON versions of sync_blocks and sync_mempool now require private authorization. This helps with preventing excess load on public nodes;
deprecated field outs_count in bytecoind’s get_random_outputs is removed.
This release includes a very useful sync feature:
walletd can now sync most of the blockchain from static files (tremendously increasing efficiency for public nodes), reverting to RPC only for the (small) part of the blockchain after the last hard checkpoint;
fixed a bug when during the wallet sync some transactions from the memory pool were requested and processed more than once.
Release v3.4.5 contains several fixes and improvements that will be best appreciated by miners, exchanges and other integrators.
tiny fixes in mining-related code: block size calculation function has been improved. All miners are advised to update.
in get_transfers response, when filtering by address, filtering does not remove transfers from transactions, only returns less transactions;
in check_sendproof error response, hash of referenced transaction is returned if proof is successfully parsed;
in check_sendproof errors ADDRESS_NOT_IN_TRANSACTION (-204) and ADDRESS_FAILED_TO_PARSE (-4) removed, PROOF_WRONG_SIGNATURE (-203) will be reported instead;
walletd methods which do request to bytecoind - create_transaction, send_transaction, create_sendproof will now return special error BYTECOIND_REQUEST_ERROR (-1003) instead of INTERNAL_ERROR (-32603) when JSON RPC call to bytecoind fails.
API deprecations (will be removed in the future):
in get_transfers response, unlocked_transfers for range of blocks is deprecated, unlocked transfers are returned in corresponding blocks;
- in create_sendproof request/response, addresses/sendproofs fields are deprecated, use address/sendproof instead. If a proof cannot be created while using address field, JSON RPC error ADDRESS_NOT_IN_TRANSACTION (-204) will be returned, instead of empty proof, as it was before.