Changelog ''''''''' This file lists the changes added to each version of tezos-node, tezos-client, and the other Tezos binaries. The changes to the Tezos protocol are documented in the ``docs/protocols/`` directory; in particular in ``docs/protocols/alpha.rst``. Development Version =================== When you make a commit on master, you can add an item in one of the following subsections (node, client, …) to document your commit or the set of related commits. This will ensure that this change is not forgotten in the final changelog. By having your commits update this file you also make it easy to find the commits which are related to your changes using ``git blame``. Only describe changes which affect users (bug fixes and new features), not refactorings or tests. Changes to the documentation do not need to be documented here either. Node ---- - Removed the ``granadanet`` built-in network alias. - Added the ``ithacanet`` built-in network alias. - UNIX errors are now displayed using human-friendly English instead of error codes. - Manager operations do no longer need to be executed before being propagated over the network. This feature will be available from protocol `I`, provided the latter is activated. The aim is to increase the throughput of transactions gossiped over the network, while reducing the load on the Octez node's prevalidator (aka the mempool). - The following RPCs output format changed: 1. ``/workers/block_validator``, 2. ``/workers/chain_validators``, 3. ``/workers/chain_validators/``, 4. ``/workers/chain_validator//peer_validators``, 5. ``/workers/chain_validator//peer_validators/``, 6. ``/workers/prevalidators``. The field ``backlog`` is removed. Those logs can be obtained via the node itself. Logging can be redirected to a file via the option ``--log-file``. External tools such as ``logrotate`` can be used to remove entries that are too old. - The node configuration format is changed. The following paths are removed: 1. ``shell.chain_validator.limits.worker_backlog_size`` 2. ``shell.chain_validator.limits.worker_backlog_level`` 3. ``shell.peer_validator.limits.worker_backlog_size`` 4. ``shell.peer_validator.limits.worker_backlog_level`` 5. ``shell.prevalidator.limits.worker_backlog_size`` 6. ``shell.prevalidator.limits.worker_backlog_level`` 7. ``shell.block_validator.limits.worker_backlog_size`` 8. ``shell.block_validator.limits.worker_backlog_level`` If those fields are present in your configuration file, they can simply be removed. - Added version ``1`` to RPC ``GET chains/main/mempool/pending_operations``. It can be used by calling the RPC with the parameter ``?version=1`` (default version is still ``0``). - Added an RPC ``/config/logging`` to reconfigure the logging framework without having to restart the node. See also the new documentation pages related to logging. - Better handling of mempool cache in the `distributed_db` which should make the `distributed_db` RAM consumption strongly correlated to the one of the mempool. - Fixed RPC GET ``/chains//mempool/filter``, that did not show fields of the filter configuration that were equal to their default value: e.g. if the configuration was the default one, it just returned ``{}``. Now displays all the fields by default. The old behavior may be brought back by setting the new optional parameter ``include_default`` to ``false``. - Changed the behavior of RPC POST ``/chains//mempool/filter`` when provided an input json that does not describe a valid filter configuration. It used to revert the filter back to the default configuration in that case, but now it leaves it unchanged. (Note: if the input json is valid but does not provide all the fields of the filter configuration, then any missing field is set back to its default value, rather than left unchanged. This is the same behavior as the previous version of the RPC.) As this behavior may be confusing, the RPC now returns the new filter configuration of the mempool. - When encoded in binary, errors now have a single size field. This only affects the binary representation of errors or values that include errors inside. It may break the compatibility for tools that request binary-only answers from the node and parse the errors by hand. - Added a new mempool's classification for the recently introduced outdated error category of protocols in environment v4. - Added two optional fields, ``now`` and ``level`` as input to the ``run_view``, ``run_code``, and ``trace_code`` RPCs (under ``/chains//blocks//helpers/scripts/``). These fields can be used to override the values normally returned by the ``NOW`` and ``LEVEL`` instructions. - Add a new CLI & config option ``advertised-net-port``. - Added an optional ``show_types`` field in the input of the ``/chains//blocks//helpers/scripts/typecheck_code`` RPC. When this field is set to ``false``, type checking details are omitted. This can be used to improve the performances of this RPC. - Fix the comparison operator of history modes to avoid considering the default history modes as not equal to an history mode manually set to the same default value. - The prevalidator (which handles operations which have been received but not yet included in a block) was made more restrictive: it now accepts a single manager operation from a given manager for a given block. This limitation was already present implicitely if you were using the `tezos-client` commands. Batches of operations can be used to get around this restriction, see the `multiple transfers` command to learn more. In addition, operations rejected because of this limitation are solely delayed to a future block. - Removed support for store versions 0.0.4 (used by Octez 9.7) or below. It is no longer possible to run ``tezos-node upgrade storage`` to upgrade from those older versions. It is also no longer possible to import snapshots that were exported using this version. - Reduced the memory consumption of the snapshot import. Client ------ - Expanded the number of product ids searched with the HID API when looking for a ledger device. - Added an optional parameter ``media-type`` for the "accept" header for RPC requests to the node. The media accept header indicates to the node which format of data serialisation is supported. The value can be ``json``, ``binary`` or ``any``. - Added two options, ``--now`` and ``--level`` to the ``run script`` and ``run view`` commands simulating exectution of Michelson code. These options can be used to override the values normally returned by the ``NOW`` and ``LEVEL`` instructions. - The output of ``tezos-client``'s RPC commands now uses the format specified by the ``--media-type``. - Added new option ``--replace`` to ``transfer`` and ``multiple transfers`` commands. This option allows a manager to inject a transfer or a smart contract call operation (with more fees) to replace an existing one in the node's mempool. This option should only be used to inject in nodes whose prevalidators use the new validation scheme of manager operations (called ``operations precheck``) instead of fully applying the operation in a prevalidation block. Note that there are no guarantees on which operation will possibly be included in a block. For instance, the second operation may arrive too late to the baker, in which case, the latter might includes the first operation and the second one becomes invalid. ` Baker / Endorser / Accuser -------------------------- - Added an optional parameter ``media-type`` for the "accept" header for RPC requests to the node. The default ``media_type`` is ``binary`` for bakers. The media accept header indicates to the node which format of data serialisation is supported. The value can be ``json``, ``binary`` or ``any``. Proxy server ------------ Protocol Compiler And Environment --------------------------------- Codec ----- Docker Images ------------- Miscellaneous ------------- - Made the ``file-descriptor-{path,stdout,stderr}://`` event-logging sink more configurable (e.g. filtering per level and per section). The environment variable ``TEZOS_NODE_HOSTNAME`` used for the output of events was renamed to the more appropriate ``TEZOS_EVENT_HOSTNAME``. - Added specific documentation pages about logging for users and developers. - Some RPC entry points are stricter about their inputs. Specifically, some RPCs where only positive integers would make sense will now error when provided negative values (instead of, e.g., returning empty results). - Added diffing functionality to the Micheline library. It allows to compare Micheline expressions whose primitives are ``strings``. The difference is returned as another Micheline expression annotated appropriately in places where compared values differ. Version 11.0 ============ No changes compared to 11.0~rc2. Version 11.0~rc2 ================ - Included fixes from version 10.3. Node ---- - Added protocol Hangzhou2 (``PtHangz2``), which is a modified version of Hangzhou (``PtHangzH``) with a number of critical bug fixes. - Added a user-activated protocol override from Hangzhou (``PtHangzH``) to Hangzhou2 (``PtHangz2``) on Mainnet. This means that nodes using version 11.0~rc2 will activate Hangzhou2 instead of Hangzhou if Hangzhou was to be activated by the on-chain governance process. - As the Hangzhounet test network was restarted to use ``PtHangz2`` instead of ``PtHangzH``, the ``hangzhounet`` network alias now contains the configuration to connect to this restarted Hangzhounet. - Bumped the network version to 2. - Added early block advertisement based on a precheck mechanism to improve the propagation time in the network. This mechanism is only available for nodes with a network version of 2. - The default allocation policy for the OCaml runtime is now ``2`` (also called ``best-fit``). The previous value was ``0``. This new policy gives the best compromise in terms of performances and memory consumption. This policy can be changed using the ``OCAMLRUNPARAM`` environment variable. For example, to set back this value to ``0``, one can do ``OCAMLRUNPARAM="a=0"``. More information on this environment variable can be found `here `__. - Improved the performance of the ``raw/bytes`` RPC call. In particular, this prevents stack overflows that could happen because of the flattened context if Hangzhou2 is activated. - Improved the performance of the context flattening migration that will happen if Hangzhou2 is activated. In particular, this reduces how much memory is needed by this operation. - Fixed issue #1930: during decoding, the validity of Micheline annotations is enforced. - Improved the snapshot export mechanism by reducing both the export time and the memory footprint. - Added new RPCs to inspect the storage status: - GET ``/chains/main/levels/checkpoint``: checkpoint block hash and level. - GET ``/chains/main/levels/savepoint``: savepoint block hash and level. - GET ``/chains/main/levels/caboose``: caboose block hash and level. - GET ``/config/history_mode``: history mode of the node. - Deprecated the ``/chains/main/checkpoint`` RPC. It may be deleted starting from v12.0. - The field ``backlog`` of the following RPCs is deprecated and may be deleted starting from v12.0: - ``/workers/block_validator`` - ``/workers/chain_validators`` - ``/workers/chain_validators/`` - ``/workers/chain_validator//peer_validators`` - ``/workers/chain_validator//peer_validators/`` - ``/workers/prevalidators`` - The following paths of the node configuration format are deprecated and may be deleted starting from v12.0: - ``shell.chain_validator.limits.worker_backlog_size`` - ``shell.chain_validator.limits.worker_backlog_level`` - ``shell.peer_validator.limits.worker_backlog_size`` - ``shell.peer_validator.limits.worker_backlog_level`` - ``shell.prevalidator.limits.worker_backlog_size`` - ``shell.prevalidator.limits.worker_backlog_level`` - ``shell.block_validator.limits.worker_backlog_size`` - ``shell.block_validator.limits.worker_backlog_level`` - The ``tezos-admin-client show current checkpoint`` command now only outputs the current checkpoint. It no longer outputs the savepoint, caboose and history mode. - When calling the ``/chains//blocks//helpers/preapply`` RPC, the preapplication is now done by the external validator process instead of the main node process. This allows the external validator to cache the result. If later the block is applied, this cache is then used to optimize the application of the block. - Fixed an inconsistency of the cache internal counter between the baker and the node when the cache has been emptied. Version 11.0~rc1 ================ Node ---- - **Breaking change**: updated the output of the ``/stats/gc`` RPC entry point: it now also reports the number of full major collections made by the OCaml garbage collector. - **Breaking change**: updated the encoding of chain validator events. The output of RPC ``GET /workers/chain_validators/`` was modified as a result. - Updated RPC ``GET /workers/prevalidators``: field ``backlog`` now always returns an empty list. The events in this backlog can now be obtained either via stdout, or by configuring a new sink for events via the environment variable ``TEZOS_EVENTS_CONFIG`` (to be set before launching the node). - Updated RPC ``GET /chains//mempool/monitor_operation``: output was extended to include operation hashes (field name is ``hash``) and errors (field name is ``error``) when the operation is classified as ``Branch_delayed``, ``Branch_refused`` or ``Refused``. - Improved how the distributed database (DDB) handles the mempool cache. This should make the DDB RAM consumption strongly correlated to the one of the mempool. - Fixed wrong error message in case of P2P network address binding collision. - Added new RPCs to ban/unban operations locally. - POST ``/chains//mempool/ban_operation``: ban a given operation hash. The operation is removed from the mempool, and its effect is reverted if it was applied. It is also added to the prevalidator's set of banned operations, to prevent it from being fetched/processed/injected in the future. - POST ``/chains//mempool/unban_operation``: unban a given operation hash, removing it from the prevalidator's set of banned operations. Nothing happens if the operation was not banned. - POST ``/chains//mempool/unban_all_operations``: unban all operations, i.e. clear the set of banned operations. - Added the possibility to use the ``~``, ``-`` and ``+`` operators when querying blocks by their level using the ``/chains/.../blocks/`` RPC. For instance, ``/chains/main/blocks/41+1`` requests the block at level 42. Before this change, these notations were only available with aliases (such as ``head-1``). - Added the possibility to use the ``+`` operator when specifying the block to export, using the ``--block`` argument of the snapshot export command. Before, only ``~`` and ``-`` were allowed. - Fixed a bug where the mempool forgot about ``refused`` operations on flush, leading to these operations being potentially reevaluated in the future (e.g. if they are advertised again by a peer). - Removed the built-in network aliases for Edonet and Florencenet, since Edo and Florence have been replaced by Granada. - Added a built-in network alias for Hangzhounet. Client ------ - Disabled indentation checking by default in the ``tezos-client convert script`` and ``tezos-client hash script`` commands. In particular, ``tezos-client convert script