488 lines
14 KiB
Markdown
488 lines
14 KiB
Markdown
# Changelog
|
|
Changelog for FrostFS Contract
|
|
|
|
|
|
## [Unreleased]
|
|
|
|
### Added
|
|
### Changed
|
|
### Removed
|
|
### Updated
|
|
### Fixed
|
|
|
|
## [0.21.0]
|
|
|
|
### Added
|
|
- Mention domain name in error messages in the nns contract (#92)
|
|
- Emit DeleteRecord event on record deletion in the nns contract (#114)
|
|
|
|
### Changed
|
|
- Allow to register TLD automatically (#114)
|
|
- Use frostfsid claims as a permission to create TLD (#115)
|
|
- Ensure subject keys are unique (#118, #129)
|
|
|
|
### Fixed
|
|
- Terminate session in `ReadIteratorItems()` (#85)
|
|
- Declare `nns.getAllRecords` as safe (#131)
|
|
|
|
## [0.20.0]
|
|
|
|
### Added
|
|
- Add `ListFullSubjects` method to the frostfsid RPC client (#107)
|
|
- Add `ListChainNames` method to the policy contract (#105)
|
|
- Add `DeleteRecord` method to the nns contract (#114)
|
|
- Emit notification on record changes in nns contract (#109)
|
|
|
|
### Updated
|
|
- neo-go to v0.106.3
|
|
|
|
## [0.18.0] - 2023-09-14 - Academy of Sciences Glacier
|
|
|
|
### Added
|
|
- Documentation for contract storage schema (#21)
|
|
### Changed
|
|
- `container.Delete()` now accepts public key along with token (#27)
|
|
- Allow to check whether container was deleted with `container.DeletionInfo()` (#38)
|
|
### Removed
|
|
- `subnet` contract (#20)
|
|
### Updated
|
|
### Fixed
|
|
### Updating from v0.17.0
|
|
|
|
## [0.17.0] - 2023-04-13 - Furtwängler
|
|
|
|
### Added
|
|
### Changed
|
|
### Removed
|
|
- Notary disabled code from all contracts (#7)
|
|
|
|
### Updated
|
|
- `neo-go` to `v0.99.4`
|
|
|
|
### Fixed
|
|
### Updating from v0.16.0
|
|
|
|
## [0.16.0] - 2022-10-17 - Anmado (안마도, 鞍馬島)
|
|
|
|
### 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.5
|
|
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.
|
|
|
|
[Unreleased]: https://github.com/nspcc-dev/neofs-contract/compare/v0.16.0...master
|
|
[0.16.0]: https://github.com/nspcc-dev/neofs-contract/compare/v0.15.5...v0.16.0
|
|
[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
|