Skip to content

Releases: iron-fish/ironfish

v0.1.52

16 Nov 03:33
1bf0c8e
Compare
Choose a tag to compare

What's Changed

Hard fork repair

The chain:hardfork command repairs nodes that incorrectly accepted a double spend block that resulted in a hard fork.

Syncing performance Improvements

Many improvements have been made to parallelize operations while downloading, verifying, and adding blocks which have improved overall syncing speed.

Wallet bug fixes

Several changes that address common wallet issues such as the display of negative balances and nullifierToNote errors.

Full Changelog: v0.1.51...v0.1.52

v0.1.51

01 Nov 21:31
67da183
Compare
Choose a tag to compare

What's Changed

Syncing performance Improvements

Many improvements have gone into add block speed which have improved overall syncing speed.

Fixed installing and building node-datachannel

node-datachannel was broken on the latest release, requiring users to build it form source even when using NPM installations.

Fixed CLI on windows

This fixes the CLI on windows. It was broken with an error regarding permissions around an IPC socket.

Full Changelog: v0.1.50...v0.1.51

v0.1.50

31 Oct 23:02
02939ae
Compare
Choose a tag to compare

What's Changed

‼️ V2 Consensus Upgrade ‼️

Iron Fish's second consensus upgrade will activate at block 255,000 estimated to occur on November 2nd, 2022. You must upgrade your node by block 255,000 or you will be on a hard fork. These changes were merged in #2378.

Why are you doing this?

We are moving to block size based consensus with a maximum block size of 2MB. This is replacing the previous transaction count limit of 300 transactions. We've updated the mining manager to optimize packing transactions in a block according to this max size limit.

Fee Estimation

@ygao76 and @hughy added a new transaction fee estimation module. The FeeEstimator caches fees from transactions in recent blocks and uses that history to estimate the fee level needed for new transactions to be mined in upcoming blocks. A future release will us the RPC endpoint implemented in #2428 to estimate fees for transactions created using the accounts:pay and deposit commands.

Bug Fix: Spent Notes Marking

@hughy fixed an issue where notes were being marked as unspent after you spent them. The fix to stop wallet rebroadcasting expired transactions was implemented in #2399.

Other changes

  • Speed up transaction creation by not materializing unspent notes (@NullSoldier in #2299)
  • Fix transaction and block size calculations for the block explorer (@mirayadav in #2302)
  • Get latest transactions when listing transactions (@hairtail in #2355)
  • Validate config file settings (@neuronull in #2359)
  • Add accounts:status CLI command (@jowparks in #2366)
  • Updates to deposit and deposit-all commands to allow increased deposit size (currently not enabled yet) (@jowparks #2391 , #2418 , @hairtail #2414 )
  • Add block download speed to status (@danield9tqh in #2349)
  • Reduce CPU usage by only storing peers in CONNECTED or CONNECTING states (@dguenther in #2275)
  • Standardize ore calculations across the codebase to avoid floating point precision problems (@web3Liuwentong & @NullSoldier in #2368)
  • Add rpc:token CLI command for setting/retrieving RPC auth token (@hughy in #2293)
  • Stop wallet rebroadcasting expired transactions (@hughy in #2399)

Full Changelog: v0.1.49...v0.1.50

v0.1.49

05 Oct 18:50
ec57ed3
Compare
Choose a tag to compare

This release fixes an issue that users have had when running the Wallet 2.0 data migration.

We're still working on optimizations and bug fixes. This isn't the end of improvements to the wallet. If you have any issues, please reach out in discord.

Full Changelog: v0.1.48...v0.1.49

v0.1.48

05 Oct 08:42
6769ec1
Compare
Choose a tag to compare

What's Changed

Wallet Improvements

This release primarily focuses on Wallet improvements. We are launching significant wallet improvements with the launch of Wallet 2.0. You'll need to migrate your accounts database to the new Wallet format. You can do that using ironfish migrations:start -v or just use ironfish start --upgrade.

Some of the improvements are

  • Added a new explain flag to ironfish accounts:balance --explain to better understand your balance.
  • Wallet data is no longer stored in memory, we've pushed everything into the wallet database. Large wallets would cause the node to run out of memory.
  • Calculating your balance is now significantly faster and you can customize your confirmation range with the new --confirmations flag
  • You will no longer spend notes unless they are in the confirmation range. You can customize this with the new config option minimumBlockConfirmations.
  • Expired transactions are now left in the wallet, and shown in ironfish accounts:transactions
  • Many bugs have been fixed with displaying the status of transactions and they should now be much more reliable

We're still working on optimizations and bug fixes. This isn't the end of improvements to the wallet. If you have any issues, please reach out in discord.

We're also heavily been focused on increasing sync speed. We have made significant optimization to our mempool. When the mempool had many transactions, it would cause the node to slow down to the point where syncing wouldn't happen. The mem pool should now be less likely to cause syncing issues.

Breaking Changes

If you were previously using the hidden feature to enable RPC over TLS using --rpc.tcp, you won't be able to connect to your node anymore. The node now requires token authentication with our RPC TLS adapter. You can disable and use the unencrypted TCP adapter by passing --no-rpc.tls or set enableRpcTls config to false. Only do this if you're using Iron Fish behind a secure VPS or SSH tunnel!

Full Changelog: v0.1.47...v0.1.48

v0.1.47

19 Sep 02:55
0efb836
Compare
Choose a tag to compare

What's Changed

‼️ V1 Consensus Upgrade ‼️

Iron Fish's first consensus upgrade will activate at block 204,000 estimated to occur on September 28th, 2022. You must upgrade your node by block 204,000 or you will be on a hard fork. The fix was merged in PR #2201.

Why are you doing this?

A bug was discovered and reported by our community that allowed double spends to occur on the chain. The team has done a full analysis on the bug and it has been resolved in PR #2201. We're planning on keeping the current chain at 190k blocks and using this opportunity to test our first ever consensus upgrade.

The double spends that have occurred on the network have not impacted the test net points or leaderboard points.

Other changes

  • Converted our RollingBloomFilter implementation to rust for a 10x speed improvement (@mat-if in #2189)
  • Fixed critical RPC bug that would crash node if connection timed out while streaming a response (@danield9tqh in #2183)

Full Changelog: v0.1.46...v0.1.47

v0.1.46

14 Sep 21:19
46d759c
Compare
Choose a tag to compare

What's Changed

Status command additions

When running the status command with --all, you can now see a "Mining" section that displays connected miners, time to fetch transactions from the mempool, and time to construct a block (Added by @NullSoldier in #2145). @danield9tqh also added a display of the time since the expected HEAD block in #2176.

Performance improvements

We're focusing on improving the node's performance in this and upcoming versions. @mat-if in #2160 identified and fixed some memory usage issues, while @dguenther removed some unused verification of new transactions that was wasting CPU time in #2143 and #2161.

Other changes

Full Changelog: v0.1.45...v0.1.46

v0.1.45

29 Aug 21:56
0725b77
Compare
Choose a tag to compare

What's Changed

Block broadcasting V2

@dguenther and @danield9tqh in #2045 rewrote our block broadcasting by adding support for broadcasting compact blocks and blocks by hash. Compact blocks send out the transaction hashes along with the block header instead of the full transactions, so receiving nodes can use transactions they've already received to construct the block locally. We expect this to reduce bandwidth used for block propagation, and consequently reduce block latency, as well as allow for updates to how frequently we fetch peers from other nodes.

Ignore transactions if notes have already been spent on chain

@dguenther in #2037 updated our transaction verification to check whether the transaction is spending a note that has already been spent on chain before accepting the transaction into the mempool and rebroadcasting it. We found that over half of transaction broadcasts contained already-spent notes, so we expect this to reduce network traffic and mempool size.

Dynamic fees

@wd021 contributed an initial implementation for dynamic fees based on past blocks, first in the form of a fees command in #2009 , then by updating the pay, deposit, and deposit-all commands to use them in #2051.

Other changes

Full Changelog: v0.1.44...v0.1.45

v0.1.44

10 Aug 22:54
f1dcebb
Compare
Choose a tag to compare

What's Changed

Transaction Broadcasting V2

@danield9tqh in #1803 rewrote our transaction broadcasting by adding support for broadcasting transactions by hash in addition to broadcasting full transactions. Transactions are relatively large, so we expect this to generally reduce bandwidth usage. After the same work is done for block broadcasting, it'll allow us to no longer continuously fetch the list of peers from all connected nodes.

chain:prune command

@NullSoldier in #1948 added a chain:prune command to delete forks from the chain and compact the database. It doesn't yet reduce the size of the database as much as we'd like, so we're planning to make further improvements here.

Rust box/unbox message

@mat-if in #1872 moved message encryption from the JavaScript worker pool to Rust. We expect this to reduce the frequency of WebRTC signaling timeouts when a node's worker pool is under load, and will monitor to make sure it doesn't significantly increase load on the main thread.

Other Changes

  • Fixed referencing wrong @ironfish/rust-nodejs version in ironfish by @mat-if in #1966
  • Fixed a potential missing event unsubscription when downloading snapshots by @NullSoldier in #1974
  • Add telemetry for transaction creation by @danield9tqh in #1981
  • Attempt to fix createWriteStream error by @NullSoldier in #1980
  • Allow for only uploading the accounts DB as a backup by @NullSoldier in #2002
  • accounts:transactions: show expiration by default by @hamza-siddiq in #2005
  • Remove short-hand -d for --dry in chain:prune and migrations:start by @mat-if in #2007
  • Use same logic for verifying single transactions as batches of transactions by @mat-if in #1875
  • Add list of routes with pending rpc requests to rpc:status by @hughy in #2006
  • Allow submitting telemetry without fields by @danield9tqh in #2001

Full Changelog: v0.1.43...v0.1.44

v0.1.43

06 Aug 04:32
4f2ddb6
Compare
Choose a tag to compare

What changed

This release includes fixes to the chain:database command. An issue prevented snapshot downloads from resolving and proceeding to snapshot import.

Full changelog: v0.1.42...v0.1.43