frostfs-contract/CHANGELOG.md
Leonard Lyubich d95bc53589 [#269] netmap: Return same type from reading methods
There is a need to return similar structure of information about the
storage nodes from the contract storage readers. In previous
implementation some methods didn't return node state which can differ
with the one encoded in the node's BLOB.

Define `Node` structure of the information about the storage nodes
recorded in the contract storage. Return `[]Node` from all related
methods.

Also improve docs of touched contract methods.

Signed-off-by: Leonard Lyubich <ctulhurider@gmail.com>
2022-09-30 17:31:58 +04:00

425 lines
13 KiB
Markdown

# Changelog
Changelog for NeoFS Contract
## Unrelease
### Added
- Support `MAINTENANCE` state of storage nodes (#269)
### Changed
- `netmap.Snapshot` and all similar methods return (#269)
### Updated
- NNS contract now sets domain expiration based on `register` arguments (#262)
### Fixed
- NNS `renew` now can only be done by the domain owner
### Updating from v0.15.x
Update deployed `Netmap` contract using `Update` method: storage of the contract
has been incompatibly changed.
## [0.15.5] - 2022-08-23
### Updated
- Update neo-go to v0.99.2 (#261)
- Makefile now takes only `v*` tags into account (#255)
## [0.15.4] - 2022-07-27
Only a version bump to update manifest.
## [0.15.3] - 2022-07-22
### Added
- Allow to build archive from source (#250)
### Changed
- Update neo-go to the latest version
- Use proper type for integer constants (#248)
## [0.15.2] - 2022-06-07
### Added
- `container.Count` method (#242)
### Changed
- Update neo-go to v0.99.0 (#246)
## [0.15.1] - 2022-04-13
### Fixed
- Max domain name fragement length (#238)
### Added
- `netmap.UpdateSnapshotCount` method (#232)
- Notifications of successful container and storage node operations (#236)
### Changed
- Update neo-go to v0.98.2 (#234)
## [0.15.0] - 2022-03-23 - Heuksando (흑산도, 黑山島)
### Fixed
- Split `UpdateState` method to allow Alphabet nodes remove storage nodes from
network map based on consensus decision in notary-enabled environment (#225)
### Changed
- Increase from 2 to 10 stored network maps in netmap contract (#224)
- Use public keys instead of `IRNode` structures in neofs and netmap contracts
(#222)
## [0.14.2] - 2022-02-07
### Fixed
- Remove duplicate records in NNS contract (#196)
### Changed
- Evict container estimations on every put (#215)
- Update neo-go to v0.98.1
## [0.14.1] - 2022-01-24
### Fixed
- Remove migration routine for reputation contract update (#220)
- Remove version check for subnet contract update (#220)
### Added
- Append version to `Update` arguments for subnet contract (#220)
## [0.14.0] - 2022-01-14 - Geojedo (거제도, 巨濟島)
### Fixed
- Sync `Update` method signature in NNS contract (#197)
- Use current block index in all `GetDisgnatedByRole` invocations (#209)
### Added
- Version check during contract update (#204)
### Changed
- Use `storage.RemovePrefix` in subnet contract (#199)
### Removed
- Netmap contract hash usage in proxy contract (#205)
- Legacy contract owner records from contract storage (#202)
## [0.13.2] - 2021-12-14
### Fixed
- Reputation contract migration (#201)
## [0.13.1] - 2021-12-08
### Fixed
- Specify container contract as owner of all container related domain zones
(#194)
## [0.13.0] - 2021-12-07 - Sinjido (신지도, 薪智島)
Support of subnetwork contract from NeoFS API v2.11.0.
### Fixed
- Records with duplicate values are not allowed in NNS anymore (#165)
- Allow multiple `reputation.Put`, `container.PutCotnainerSize`,
`neofsid.AddKey`, `neofsid.RemoveKey`, `neofs.InnerRingCandidateAdd`,
`neofs.InnerRingCandidateRemove` invocations in one block (#101)
- `netmap.UpdateState` checks both node and alphabet signatures in notary
enabled environment (#154)
### Added
- Version method in NNS contract (#158)
- Subnet contract (#122)
- `netmap.Register` method for notary enabled environment (#154)
### Changed
- Container contract throws panic if required container is missing (#142)
- Container contract does not throw panic if deleting container is already
removed (#142)
- NNS stores root as regular TLD (#139)
- Use testing framework from neo-go (#161)
- Allow hyphen in domain names in NNS (#180)
- Panic messages do not heave method name prefix anymore (#179)
- `OnNEP17Payment` method calls `Abort` instead of panic (#179)
- Allow arbitrary-level domains in NNS (#172)
- Refactor (#169)
## [0.12.2] - 2021-11-26
### Fixed
- Domain owner check in container contract (#156)
- Missing NNS related keys in container contract (#181)
### Added
- Update functions now provide contract version in data (#164)
## [0.12.1] - 2021-10-19
### Fixed
- Sanity checks for notary enabled environment in container contract (#149)
### Added
- NeoFS global configuration parameter `ContainerAliasFee`. This parameter
used as additional fee for container registration with nice name alias (#148).
### Changed
- `netmap.AddPeer` method can update `NodeInfo` structures (#146)
- `netmap.Update` allows to redefine any key-value pair of global config (#151)
## [0.12.0] - 2021-10-15 - Udo (우도, 牛島)
NNS update with native container names in container contract.
### Fixed
- Safe methods list in reputation contract manifest (#144)
### Added
- SOA record type support in NNS (#125)
- Test framework for N3 contracts written in go (#137)
- Unit tests for container and NNS contracts (#135, #137)
- `PutNamed` method in container contract that registers domain in NNS (#135)
### Changed
- NNS contract supports multiple records of the same type (#125)
## [0.11.0] - 2021-09-22 - Mungapdo (문갑도, 文甲島)
Contract owners are removed, now side chain committee is in charge of contract
update routine.
### Fixed
- Container contract does not throw PICKITEM panic when trying access
non-existent container, instead panics with user-friendly message (#121)
### Changed
- NNS contract has been updated to the latest version from Neo upstream (#123)
- Container contract does not throw panic on deleting non-existent container
(#121)
- Migrate methods renamed to Update (#128)
- Contracts now throw panic if update routine fails (#130)
- Side chain committee is able to update contracts (#107)
### Removed
- Contract owner arguments at deploy stage (#107)
## [0.10.1] - 2021-07-29
### Changed
- `Version` method returns encoded semver value (#98)
### Removed
- `InitConfig` methods from neofs and netmap contracts. Network configuration
now provided as contract deploy parameter. (#115)
## [0.10.0] - 2021-07-23 - Wando (완도, 莞島)
### Fixed
- Alphabet contract does not emit GAS to proxy contract and does not check
proxy contract script hash length at deploy stage if notary disabled (#106)
### Added
- Netmap contract stores block height when last epoch was applied and provides
`LastEpochBlock` method to get it (#110)
- NNS contract (#108)
- Enhanced documentation for autodoc tools (#105)
### Changed
- Update neo-go to v0.96.0
### Removed
- v0.9.1 to v0.9.2 migration code (#104)
## [0.9.2] - 2021-07-01
### Fixed
- Execution of multiple `container.Put`, `container.Delete`,
`container.PutContainerSize` and `netmap.AddPeer` invocations now possible
in the single block (#100, #102).
### Added
- Target NeoFS API version in README.md.
### Changed
- Notary enabled images for neofs-dev-env do not contain predefined network
map anymore.
## [0.9.1] - 2021-06-24
### Fixed
- Notification parameter types in container, neofs and netmap manifests (#94).
- Method permissions in manifests (#96).
### Added
- Balance check before notification at `container.Put` method.
### Removed
- v0.8.0 to v0.9.0 migration code.
## [0.9.0] - 2021-06-03 - Seongmodo (석모도, 席毛島)
Session token support in container contract.
### Fixed
- `_deploy` methods process `isUpdate` argument now.
### Added
- Changelog file.
- `netmap.NetmapCandidates` method.
### Changed
- Container contract now stores public key, signature and session token of
new containers and extended ACL tables.
- Most of the contract methods that invoked by inner ring do not return bool
value anymore. Such methods throw panic instead.
- Migrate methods now accept data.
### Removed
- Container and extended ACL signature checks in container contract.
## [0.8.0] - 2021-05-19 - Dolsando (돌산도, 突山島)
N3 Testnet RC2 compatible contracts.
### Changed
- Contract initialization moved to `_deploy` method.
### Removed
- `Deposit` method from `NeoFS` contract uses direct GAS transfer to contract address for deposit.
- Unused transfer description variables in `Balance` contract and total function in `Alphabet` contract.
### Updated
- NEO Go to N3 RC2 compatible v0.95.0.
## [0.7.0] - 2021-05-04 - Daecheongdo (대청도, 大靑島)
Combine notary and non-notary work flows in smart contracts.
### Fixed
- Integers are not used as search prefixes anymore.
### Added
- Notary and non-notary work flows in all contracts. Notary can be disabled at contract initialization.
- `Processing` contract in main chain to pay for `NeoFS` contract invocations from alphabet when notary enabled.
- Fee payments at `neofs.Withdraw` invocation.
### Changed
- `Reputation` contract stores new global reputation structures.
- All `balance.transferX` invocations are provided with encoded transfer details.
### Removed
- Cheque storage in `NeoFS` contract to decrease invocation costs.
## [0.6.0] - 2021-03-26 - Yeongheungdo (영흥도, 靈興島)
Governance update.
### Fixed
- Threshold (N) calculation.
### Changed
- Inner ring keys are accessed from `NeoFSAlphabet` role in side chain.
- Alphabet keys are accessed from committee in side chain.
- `NeoFS` contract now manages alphabet keys and do not update candidate list automatically.
- `NeoFS` contract can be initiated with any non zero amount of alphabet keys now.
- `neofs.InnerRingList` renamed to `neofs.AlphabetList`.
- `neofs.InnerRingUpdate` renamed to `neofs.AlphabetUpdate` and it produces `AlphabetUpdate` event.
- `Netmap` contract does not manage inner ring keys now.
### Removed
- `neofs.IsInnerRing`, `netmap.InnerRingLost`, `netmap.Multiaddress`,
`netmap.Committee`, `netmap.UpdateInnerRing` methods.
## [0.5.1] - 2021-03-22
### Fixed
- Methods with notifications are no longer considered to be safe.
## [0.5.0] - 2021-03-22 - Jebudo (제부도, 濟扶島)
### Fixed
- Various typos.
### Added
- Proxy contract.
- `Multiaddress` and `Committee` methods in `Netmap` contract.
- List of safe methods in contract configs.
### Changed
- Smart contracts use read-only storage context where it is possible.
- `Netmap` contract triggers clean-up methods on new epoch.
- Contracts use `interop.Hash160` and other type aliases instead of `[]byte`.
### Removed
- Multi signatures in side chain now collected with native notary contract,
thus side chain contracts do not use ballots anymore.
### Updated
- NEO Go to testnet compatible v0.94.0.
## [0.4.0] - 2021-02-15 - Seonyudo (선유도, 仙遊島)
### Fixed
- Old ballots are now removed before processing new ballot.
### Added
- Methods in container contract to store container size estimations.
- `common` package that contains shared code for all contracts.
- Contracts migration methods.
### Updated
- NEO Go to preview5 compatible v0.93.0.
- Contract manifests.
## [0.3.1] - 2020-12-29
Preview4-testnet version of NeoFS contracts.
## 0.3.0 - 2020-12-29
Preview4 compatible contracts.
[0.15.5]: https://github.com/nspcc-dev/neofs-contract/compare/v0.15.4...v0.15.5
[0.15.4]: https://github.com/nspcc-dev/neofs-contract/compare/v0.15.3...v0.15.4
[0.15.3]: https://github.com/nspcc-dev/neofs-contract/compare/v0.15.2...v0.15.3
[0.15.2]: https://github.com/nspcc-dev/neofs-contract/compare/v0.15.1...v0.15.2
[0.15.1]: https://github.com/nspcc-dev/neofs-contract/compare/v0.15.0...v0.15.1
[0.15.0]: https://github.com/nspcc-dev/neofs-contract/compare/v0.14.2...v0.15.0
[0.14.2]: https://github.com/nspcc-dev/neofs-contract/compare/v0.14.1...v0.14.2
[0.14.1]: https://github.com/nspcc-dev/neofs-contract/compare/v0.14.0...v0.14.1
[0.14.0]: https://github.com/nspcc-dev/neofs-contract/compare/v0.13.2...v0.14.0
[0.13.2]: https://github.com/nspcc-dev/neofs-contract/compare/v0.13.1...v0.13.2
[0.13.1]: https://github.com/nspcc-dev/neofs-contract/compare/v0.13.0...v0.13.1
[0.13.0]: https://github.com/nspcc-dev/neofs-contract/compare/v0.12.2...v0.13.0
[0.12.2]: https://github.com/nspcc-dev/neofs-contract/compare/v0.12.1...v0.12.2
[0.12.1]: https://github.com/nspcc-dev/neofs-contract/compare/v0.12.0...v0.12.1
[0.12.0]: https://github.com/nspcc-dev/neofs-contract/compare/v0.11.0...v0.12.0
[0.11.0]: https://github.com/nspcc-dev/neofs-contract/compare/v0.10.1...v0.11.0
[0.10.1]: https://github.com/nspcc-dev/neofs-contract/compare/v0.10.0...v0.10.1
[0.10.0]: https://github.com/nspcc-dev/neofs-contract/compare/v0.9.2...v0.10.0
[0.9.2]: https://github.com/nspcc-dev/neofs-contract/compare/v0.9.1...v0.9.2
[0.9.1]: https://github.com/nspcc-dev/neofs-contract/compare/v0.9.0...v0.9.1
[0.9.0]: https://github.com/nspcc-dev/neofs-contract/compare/v0.8.0...v0.9.0
[0.8.0]: https://github.com/nspcc-dev/neofs-contract/compare/v0.7.0...v0.8.0
[0.7.0]: https://github.com/nspcc-dev/neofs-contract/compare/v0.6.0...v0.7.0
[0.6.0]: https://github.com/nspcc-dev/neofs-contract/compare/v0.5.1...v0.6.0
[0.5.1]: https://github.com/nspcc-dev/neofs-contract/compare/v0.5.0...v0.5.1
[0.5.0]: https://github.com/nspcc-dev/neofs-contract/compare/v0.4.0...v0.5.0
[0.4.0]: https://github.com/nspcc-dev/neofs-contract/compare/v0.3.1...v0.4.0
[0.3.1]: https://github.com/nspcc-dev/neofs-contract/compare/v0.3.0...v0.3.1