1# Changelog23All notable changes to this project will be documented in this file.45The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),6and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).78The semantic versioning guarantees cover the interface to the substrate runtime which9includes this pallet as a dependency. This module will also add storage migrations whenever10changes require it. Stability with regard to offchain tooling is explicitly excluded from11this guarantee: For example adding a new field to an in-storage data structure will require12changes to frontends to properly display it. However, those changes will still be regarded13as a minor version bump.1415The interface provided to smart contracts will adhere to semver with one exception: Even16major version bumps will be backwards compatible with regard to already deployed contracts.17In other words: Upgrading this pallet will not break pre-existing contracts.1819## [Unreleased]2021### Added2223- Add new `instantiate` RPC that allows clients to dry-run contract instantiation.2425- Make storage and fields of `Schedule` private to the crate.26[1](https://github.com/paritytech/substrate/pull/8359)2728- Add new version of `seal_random` which exposes additional information.29[1](https://github.com/paritytech/substrate/pull/8329)3031- Add `seal_rent_params` contract callable function.32[1](https://github.com/paritytech/substrate/pull/8231)3334## [v3.0.0] 2021-02-253536This version constitutes the first release that brings any stability guarantees (see above).3738### Added3940- Emit an event when a contract terminates (self-destructs).41[1](https://github.com/paritytech/substrate/pull/8014)4243- Charge rent for code stored on the chain in addition to the already existing44rent that is payed for data storage.45[1](https://github.com/paritytech/substrate/pull/7935)4647- Allow the runtime to configure per storage item costs in addition48to the already existing per byte costs.49[1](https://github.com/paritytech/substrate/pull/7819)5051- Contracts are now deleted lazily so that the user who removes a contract52does not need to pay for the deletion of the contract storage.53[1](https://github.com/paritytech/substrate/pull/7740)5455- Allow runtime authors to define chain extensions in order to provide custom56functionality to contracts.57[1](https://github.com/paritytech/substrate/pull/7548)58[2](https://github.com/paritytech/substrate/pull/8003)5960- Proper weights which are fully automated by benchmarking.61[1](https://github.com/paritytech/substrate/pull/6715)62[2](https://github.com/paritytech/substrate/pull/7017)63[3](https://github.com/paritytech/substrate/pull/7361)6465### Changes6667- Collect the rent for one block during instantiation.68[1](https://github.com/paritytech/substrate/pull/7847)6970- Instantiation takes a `salt` argument to allow for easier instantion of the71same code by the same sender.72[1](https://github.com/paritytech/substrate/pull/7482)7374- Improve the information returned by the `contracts_call` RPC.75[1](https://github.com/paritytech/substrate/pull/7468)7677- Simplify the node configuration necessary to add this module.78[1](https://github.com/paritytech/substrate/pull/7409)7980### Fixed8182- Consider the code size of a contract in the weight that is charged for83loading a contract from storage.84[1](https://github.com/paritytech/substrate/pull/8086)8586- Fix possible overflow in storage size calculation87[1](https://github.com/paritytech/substrate/pull/7885)8889- Cap the surcharge reward that can be claimed.90[1](https://github.com/paritytech/substrate/pull/7870)9192- Fix a possible DoS vector where contracts could allocate too large buffers.93[1](https://github.com/paritytech/substrate/pull/7818)