Skip to content

Releases: iron-fish/ironfish

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

v0.1.42

05 Aug 22:28
303e054
Compare
Choose a tag to compare

What changed

Snapshots

Service command to create and upload chain snapshots

The service:snapshot command zips the chain database and uploads it to an S3
bucket. A manifest file indicates the block sequence of the snapshot and the
creation time of the snapshot.

CLI command to download a chain snapshot

The chain:download command will download a chain database snapshot and replace
a node's database. This allows nodes that are far behind the head of the chain
to sync more quickly by downloading a pre-synced chain.

> ironfish chain:download
Download 42.57 GB snapshot to update chain head from block 1 to 124125?
Are you sure? (Y)es / (N)o: Y
Downloading snapshot from https://d1kj1bottktsu0.cloudfront.net/ironfish_snapshot_1659661487895.tar.gz
Downloading snapshot: [░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░] 1% | 428.41 MB / 42.57 GB | 38.06 MB/s | ETA: 17m 31

Migration dry run support

Developers writing database migrations can use the dry run feature to test
migrations without affecting the database.

Disallow importing the same account twice.

Importing an account multiple times and affects node performance by requiring
each note to be decrypted multiple times.

Full changelog: v0.1.41...v0.1.42

v0.1.41

02 Aug 02:17
0c7a13b
Compare
Choose a tag to compare

What's Changed

A big change in this release is the database migration system which will be used for many future features. Currently database migrations must either be run manually with ironfish migrations:start or by running ironfish start --upgrade or by setting the databaseMigrate flag in config. This release does not have any long running migrations but in the future migrations may be long running. You WILL need to run ironfish migrations:start or ironfish start --upgrade or set databaseMigrate after upgrading or else your NODE WILL NOT START.

There's also some changes to our transaction gossip. We are using block and transaction hashes to determine when to send to a peer instead of gossip message nonce. This is a step in the direction towards gossiping blocks and transactions by hash which will reduce bandwidth.

We now have the ability to batch verify transactions in Rust which will improve accounts and gossip performance. There's also some code cleanup and helpful CLI improvements. All changes can be seen below

CLI Improvements

  • Add nodeName and blockGraffiti to debug command by @drunkensiberia in #1862
  • Add nodeName and blockGraffiti to status command by @drunkensiberia in #1863
  • Add new renderSpan() to render time to human text by @NullSoldier in #1878
  • Display options extend from CliUx.ux.table by @hairtail in #1855
  • Enable fullUnicode rendering for blessed by @drunkensiberia in #1876

Batch Verify Transactions

Gossip

Database Migrations

Developer Tools

Code Cleanup

Full Changelog: v0.1.40...v0.1.41

v0.1.40

23 Jul 03:13
0918065
Compare
Choose a tag to compare

What's Changed

The previous version v0.1.39 used a lot of additional memory because adding known transaction filters to each peer. This release reverts that change and adds a few more changes since the last release.

Full Changes

Full Changelog: v0.1.39...v0.1.40

v0.1.39

22 Jul 02:13
277a1b1
Compare
Choose a tag to compare

What's Changed

This is a smaller release. There are some improvements to the pool code, code cleanup (we've deleted rust-wasm). We are also making a change to how transactions are gossiped to see if that improves transaction propagation time and network usage for nodes.

Pool

Bug Fixes / Code Improvements

  • change metrics meter to exponential weighted moving average by @wd021 in #1646
  • FEAT: Add expiration to accounts:transaction command by @hairtail in #1801
  • Remove wasm code by @mat-if in #1814
  • Remove unnecessary type aliases by @mat-if in #1815
  • fix(ironfish): Remove submittedSequence check in accounts:transactions by @rohanjadvani in #1813
  • Add default trait to memo for better memo ergonomics by @mat-if in #1820

Block and Transaction Gossip

Full Changelog: v0.1.38...v0.1.39

v0.1.38

13 Jul 22:10
85dc82e
Compare
Choose a tag to compare

What's Changed

We've made some improvements in the mining pool, transaction and block propagation as well as many bug fixes and CLI improvements! Read on for more info.

Mining Pool

We've made some improvements to the mining pool by adding a command to get the status from the mining pool with the command ironfish miners:pools:status -p pool.ironfish.network. This shows things like subscribed count and number of clients connected to the pool

Transaction + Block Propagation

We've merged a lot of code related to transaction and block propagation improvements. Those improvements won't be seen in this release since the feature is not ready, but look forward to that code being used soon.

CLI Improvements

We've made some usability improvements to CLI commands notably adding progress bar to the long running accounts:rescan command and fixing the progress bar for chain:export.

Code Cleanup / Bug Fixes

Some users were seeing Node already in use messages even when a node was not running. That has been changed to surface underlying DB errors that may now show up instead. Also adding a potential fix for noteToNullifiers map error that some users encounter.

Full Changelog: v0.1.37...v0.1.38