Iri Versions Save

IOTA Reference Implementation

v1.8.6-RELEASE

4 years ago

Important: Due to an improvement in how we store transactions a downgrade is not possible.

Upgrade instructions:

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.e LOCAL_SNAPSHOTS_DB_MAX_SIZE = 50 GB
  • tips parameter is no longer needed for getInclusionState api call
  • No threshold parameter in getBalances api call
  • In getTrytes api we shall return null 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

4 years ago

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

4 years ago

Hotfix: Ensure proper creation of solid entrypoints (#1702)

v1.8.3-RELEASE

4 years ago

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

4 years ago

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

4 years ago

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, and getInclusionStates calls unless they are synchronized. Previously, calling getTransactionsToApprove 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

4 years ago

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 by removeNeighbors.
  • 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)
  • https://github.com/iotaledger/iri/issues/1376
  • https://github.com/iotaledger/iri/issues/1377
  • https://github.com/iotaledger/iri/issues/1380
  • https://github.com/iotaledger/iri/issues/1381
  • https://github.com/iotaledger/iri/issues/1383
  • https://github.com/iotaledger/iri/issues/1379
  • https://github.com/iotaledger/iri/issues/1388

v1.8.0-DEVNET

4 years ago

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 by removeNeighbors.
  • 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)
  • https://github.com/iotaledger/iri/issues/1376
  • https://github.com/iotaledger/iri/issues/1377
  • https://github.com/iotaledger/iri/issues/1380
  • https://github.com/iotaledger/iri/issues/1381
  • https://github.com/iotaledger/iri/issues/1383
  • https://github.com/iotaledger/iri/issues/1379
  • https://github.com/iotaledger/iri/issues/1388

v1.7.1-RELEASE

4 years ago

Breaking changes

  • All boolean flags now consistently require explicitly passing a true or false 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 the TIP_SELECTION_TIMEOUT_SEC config to a value that works for you.

All changes

v1.7.0-RELEASE

5 years ago
  • 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 the LOCAL_SNAPSHOTS_BASE_PATH configuration parameter (if you specified it) before you start the node.