Releases: iotaledger/iri
v1.8.6-RELEASE
Important:
Due to an improvement in how we store transactions a downgrade is not possible.
Upgrade instructions:
- Due to a change to local snapshots format you should convert them using the instructions found here https://docs.iota.org/docs/iri/1.0/tutorials/update-iri. Or download a fresh one.
Notable changes/improvements:
- Faster syncing with less bugs
- Configure DB size with pruning. Use
--local-snapshots-db-max-size
in the command line or LOCAL_SNAPSHOTS_DB_MAX_SIZE in ini file. i.eLOCAL_SNAPSHOTS_DB_MAX_SIZE = 50 GB
tips
parameter is no longer needed forgetInclusionState
api call- No
threshold
parameter ingetBalances
api call - In
getTrytes
api we shall returnnull
if transaction is missing getTips
api call has been removed.- Confirmed transaction trtyes are now ublish under
sn_topic
in zmq.
Full changelog:
- Do not skip milestones while doing local snapshot (#1868)
- Fix: resolve race in networking layer assigning write operation to key (#1865)
- Fix: Remove condition in send to prevent deadlock in networking (#1864)
- Remove address scan in bootstrap (#1861)
- Fix: LS taking too long (#1843)
- Feature: New milestone stage and solidification pipeline (#1844)
- Use LinkedBlockingQueue to fix sync problems (#1841)
- Up jackson version 2.9.10.3 (#1837)
- Feature: Add transaction solidifier queue (#1821)
- Fix: Update Broadcast Stage logic (#1827)
- Regression: Update pruning test (#1775)
- Test: Fix getinclusion assertion to what it should be (#1819)
- Add transaction solidifier (#1805)
- Move validation to validation service package (#1804)
- Update regression logging (#1803)
- Update regression structure (#1764)
- Rename zmq tx_trytes to trytes (#1772)
- Remove ping pong from reply stage (#1745)
- Fix: reference transaction logic in Regression Test (#1737)
- Feature: Db size in bytes (#1717)
- Fix: broken getInclusionStates API call (#1685)
- Feature: Use one RocksDB instance for spent addresses and local snapshots
- Fix: Stop submitting zero value bundles as aa task into the SpentAddressesService (#1614)
- Fix: lower error severity for faulty neighbor to warning (#1710)
- Fix: sort milestone candidates before analyzing for faster solidification (#1660)
- Change: Regression tests to python3 (#1707)
- Feature: publish sn_trytes in zmq (#1551)
- Change: Count subtypes for pipeline threads (#1681)
- Remove magic numbers from handshake (#1694)
- Fix: Remove neighbors correctly (#1687)
- Fix: improve API error response for storeTransactions (#1686)
- Add spent addresses test (#1489)
- Fix: Correct walker behaviour for alpha == 0 (#1645)
- Allow to configure benchmark from CLI (#1663)
- Fix: Don't resave the transaction itself (#1671)
- Fix: Zmq documentation (#1665)
- Fix: file descriptors leak in IXI module (#1669)
- Fix: Updated db config loading to account for sections (#1667)
- Memory optimization for serializing db objects (#1656)
- Updated RocksDB to 6.3.6 (#1654)
- Feature: Allow users to tinker with RocksDB configuration via file and upgrade RocksDb (#1638)
- Feature: Truncate transaction bytes before persisting them to the database (#1635)
- Update Jdeb plugin (#1639)
- DB_PATH changed in README.md, .factorypath added to .gitignore
- adds config option to disable sync progress printing (#1649)
- Changed closing order for column family
- Updated rocksdb to 6.2.2
v1.8.5-RELEASE
Protocol-Change:
Added bundle validity rules - check that bundles confirm only tails and 2 bundles at most (#1786)
Check validity rules on tip-sel and check-consistency only (#1802)
Bundle validation changes
Bundles only approve tail transactions
To simplify transaction processing and tip selection, it is beneficial if bundles can only approve tail transactions. This allows for the construction of graph abstractions that simplify and improve tip selection and enable other scenarios.
Up until now, it was possible to construct bundles that approve non-tail transactions (outside of the official client libraries). That makes the above not possible as it makes it impossible to distinguish the actual tail of a bundle.
Bundles can at most approve two other transactions
This change changes the node software to only consider valid bundles where all transactions within the bundle approve, via their branch, the trunk transaction of the head transaction. Our client libraries are already building bundles using this logic, so there is no need to change anything if you have been using them to send transactions. This approach also has the following benefits:
- Allows nodes to use simpler logic to validate bundles.
- Addresses potential vulnerabilities in the node.
v1.8.4-RELEASE
Hotfix: Ensure proper creation of solid entrypoints (#1702)
v1.8.3-RELEASE
There is an edge case where IRI didn't account for a transaction that was shared between two distinct bundles. Once it marked it as "counted" in one bundle, it was ignored for the next bundle. This lead to a corrupt ledger state.
Change log:
- Hotfix: Gyros - take transaction reattachments into account (#1699)
Update instructions
- Restart the node using the iri-1.8.3-RELEASE.jar file. The node recovers the ledger state automatically.
v1.8.2-RELEASE
Changes
- The alpha value is now 0 by default, streamlining the tip selection process which will reduce memory and cpu load. This is done by skipping cumulative weight calculations. (Issue #1567)
Other changes
- Fix: correct data setting into Hash object (#1589)
- Fix: Persistables merge and load functionality
- Documentation: Fix broken link of online documentation (#1623)
- Documentation: Update README.md (#1617)
- Fix: always set the domain field of a neighbor (#1604)
- Change: Use mocked SnapshotProvider (#1531)
- Fix: Fixes regression introduced through the bundle validator refactor (#1588)
- Documentation: Document Persistable and Indexable (#1169)
- Feature: Adds progress bar and estimated time until the node is synced (#1575)
- Change: Curl improvement
- Change: Bundle validator refactor
- Change: Use maven assembly plugin to create one jar with all dependencies (#1573)
- Documentation: Document Persistence Provider (#1157)
- Documentation: Updated links to official documentation (#1560)
v1.8.1-RELEASE
Changes
- Greatly improved synchronization speed. Nodes now sync around 30 times faster than before. (#1543, #1530, #1545)
- More efficient and faster Cumulative weight (CW) calculation. (#1451)
- Removed the tip solidifier code. Tip solidifier has been disabled by default in previous version of IRI. If you were still using the tip solidifier, remove the configuration parameter from your configuration file. (#1547)
- We check the database for existence of the spent address records instead of looking for .sst files. (#1540)
- Nodes do not execute
getTransactionsToApprove
,getBalances
, andgetInclusionStates
calls unless they are synchronized. Previously, callinggetTransactionsToApprove
on an unsychnronized node could hinder the synchronization process.
Other changes
- Change: Fixed pmd test errors (#1526)
- Change: Docker network option (#1496)
- Change: Update undertow and jackson (#1511)
- Fix: Changed TX requester removal log to Debug (#1515)
- Fix: Update jackson-databind version to 2.9.9.1 (#1534)
- Fix: Reconnecting to a neighbor that we added did not work correctly in certain scenarios. (#1506)
v1.8.0-RELEASE
Upgrade instructions
Please leave some time for your neighbors to upgrade as well. Connection will only be established with neighbors who have upgraded to >= 1.8.0. If you are not receiving traffic from your neighbors within a day, restart your node. Your neighbors may have upgraded after a longer period of time and restarting your node should allow the node to re-establish the connection.
Changes
- Support for UDP connections has been removed. Please re-add your neighbors through the TCP protocol instead.
Configuration changes
The following configuration parameters have been removed:
- UDP_RECEIVER_PORT
- TCP_RECEIVER_PORT
- MAX_PEERS
- DNS_REFRESHER_ENABLED
- DNS_RESOLUTION_ENABLED
The following configuration parameters have been added:
- NEIGHBORING_SOCKET_ADDRESS - defines the socket address to bind the TCP socket to.
- NEIGHBORING_SOCKET_PORT - defines the port of the TCP socket to use.
- RECONNECT_ATTEMPT_INTERVAL_SECONDS - defines the interval at which to try to reconnect/disconnect wanted neighbors.
- AUTO_TETHERING_ENABLED - controls auto-tethering, this was previously controlled via
TESTNET
true, default is false (also in testnet mode). - MAX_NEIGHBORS - rename of MAX_PEERS, defines the max number of connected neighbor. Default 5.
Other changes
- It is now possible to connect to multiple neighbors originating from the same IP address, as the identity of a node is its IP address + server socket port
- BCTCurl is used within the transaction processing pipeline which batches up to 64 transactions to hash them at the same time.
- Neighbors are now only added after their domain name could be resolved. Reconnects are done in the
RECONNECT_ATTEMPT_INTERVAL_SECONDS
defined interval. Neighbors to which the connection was closed, are put into "reconnect pool" until they are explicitly removed byremoveNeighbors
. - Gossiping transaction messages are now dynamic and take 341–1650 bytes of data.
- The requested transaction hash of a transaction gossip packet is now fixed to 49 bytes, no matter in what mode the node runs in.
- The getNeighbors API call now also returns the domain with which the neighbor was added and whether the neighbor is actually connected.
- A neighbor communicates his used coordinator address in the initial handshake packet, which if it doesn't match the node's own used coordinator address, will drop the connection. This prevents cross-pollination of nodes running in different networks. The Nodes will also communicate their used minimum weight magnitude, which in case they don't match, will also drop the connection.
- Fix: set arrival time in millis (not seconds) (#766)
- #1376
- #1377
- #1380
- #1381
- #1383
- #1379
- #1388
v1.8.0-DEVNET
Note that this is only for Devnet. It should not run on Mainnet
Upgrade instructions
Please leave some time for your neighbors to upgrade as well. Connection will only be established with neighbors who have upgraded to >= 1.8.0. If you are not receiving traffic from your neighbors within a day, restart your node. Your neighbors may have upgraded after a longer period of time and restarting your node should allow the node to re-establish the connection.
Changes
- Support for UDP connections has been removed. Please re-add your neighbors through the TCP protocol instead.
Configuration changes
The following configuration parameters have been removed:
- UDP_RECEIVER_PORT
- TCP_RECEIVER_PORT
- MAX_PEERS
- DNS_REFRESHER_ENABLED
- DNS_RESOLUTION_ENABLED
The following configuration parameters have been added:
- NEIGHBORING_SOCKET_ADDRESS - defines the socket address to bind the TCP socket to.
- NEIGHBORING_SOCKET_PORT - defines the port of the TCP socket to use.
- RECONNECT_ATTEMPT_INTERVAL_SECONDS - defines the interval at which to try to reconnect/disconnect wanted neighbors.
- AUTO_TETHERING_ENABLED - controls auto-tethering, this was previously controlled via
TESTNET
true, default is false (also in testnet mode). - MAX_NEIGHBORS - rename of MAX_PEERS, defines the max number of connected neighbor
Other changes
- It is now possible to connect to multiple neighbors originating from the same IP address, as the identity of a node is its IP address + server socket port
- BCTCurl is used within the transaction processing pipeline which batches up to 64 transactions to hash them at the same time.
- Neighbors are now only added after their domain name could be resolved. Reconnects are done in the
RECONNECT_ATTEMPT_INTERVAL_SECONDS
defined interval. Neighbors to which the connection was closed, are put into "reconnect pool" until they are explicitly removed byremoveNeighbors
. - Gossiping transaction messages are now dynamic and take 341–1650 bytes of data.
- The requested transaction hash of a transaction gossip packet is now fixed to 49 bytes, no matter in what mode the node runs in.
- The getNeighbors API call now also returns the domain with which the neighbor was added and whether the neighbor is actually connected.
- A neighbor communicates his used coordinator address in the initial handshake packet, which if it doesn't match the node's own used coordinator address, will drop the connection. This prevents cross-pollination of nodes running in different networks. The Nodes will also communicate their used minimum weight magnitude, which in case they don't match, will also drop the connection.
- Fix: set arrival time in millis (not seconds) (#766)
- #1376
- #1377
- #1380
- #1381
- #1383
- #1379
- #1388
v1.7.1-RELEASE
Breaking changes
- All boolean flags now consistently require explicitly passing a
true
orfalse
value.
Feature changes
- Transaction pruning is now off by default. If you want to limit the transaction history stored on your node, please use the
LOCAL_SNAPSHOTS_PRUNING_ENABLED
flag. - Nodes now time out after a
--tip-selection-timeout
(default 60 seconds) when performing tip selection. This is to avoid nodes stalling when tip selection is taking too long a time. You can change this using theTIP_SELECTION_TIMEOUT_SEC
config to a value that works for you.
All changes
- Fix: Update solidity of transactions from past to present in TransactionValidator #1492
- Feature: adds a tip-selection timeout mechanism #1404
- Print out line number in log info #1362
- Prepare IRI to have its version injected by CI #1359
- Update jackson to version 2.9.8 #1358
- Fix: log inconsistent addresses in debug mode #1347
- Javadoc: Changed braklines to paragraphs #1457
- Fix: recent seen transactions digest #1453
- The current xxHash implementation hashes the whole packet #1438
- Fix: fixes spent states of addresses not getting persisted on tx pruning #1437
- ciglue.sh IXIs path relative to python-regression base folder #1433
- Python-reg-test fix machine2 #1416
- Fix: fetch correct arrival time while traversing dags for orphaned transactions. #1407
- Change: Made API class easier to work with #1374
- Test: Local Snapshot unit tests #1364
- Test: Updated TransactionTestUtils, its usage, and javadoc #1363
- Readme links fix #1355
- Use xxHash instead of SHA-256 on incoming transaction hashes cache #1326
- Change: Do not request one transaction at a time when checking for solidity #1311
- Fix: Boolean flag consistent usage #1295
- Feature: Doclet annotations #1155
v1.7.0-RELEASE
- refactor milestone signature parameters to be configurable (#1322)
- migration from legacy coordinator to compass
Upgrade instructions
- If you want to keep the current database, you need to delete the
mainnet.snapshot.*
files from the location of your .JAR file, or from the path specified in theLOCAL_SNAPSHOTS_BASE_PATH
configuration parameter (if you specified it) before you start the node.