Releases: iron-fish/ironfish
v0.1.52
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
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
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
anddeposit-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
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
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
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
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
- Add key ranges to all range based DB ops (@NullSoldier in #2140)
- Normalization cli description (@hairtail in #2130)
- List commands to root (@wd021 in #2098)
- Change balance error to typed error (@NullSoldier in #2101)
- Add a withSegment fn to improve ux of bench utils (@mat-if in #2152)
- Make segment memory non nullable (@NullSoldier in #2156)
- Hide inspect port in use error (@NullSoldier in #2149)
- Make each TcpAdapter test use an OS assigned port (@NullSoldier in #2155)
Remove duplicate type (@hairtail in #2157)
Store all test data in the repo (@NullSoldier in #2139) - Ignore /target dir in build script, minor dockerfile improvements (@mat-if in #2158)
- Move migrations:status and config:show to root (@mirayadav in #2171)
- Show status response after disconnect (@ygao76 in #2172)
- Upgrade @oclif/core to latest (@wd021 and @mirayadav in #2174)
- Add telemetry for RPC response times and success rate (@dguenther in #2177)
- Version bump fix (@NullSoldier in #2179)
Full Changelog: v0.1.45...v0.1.46
v0.1.45
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
- Show mempool memory usage in status command (@danield9tqh in #2036)
- Improve public address validation (@mat-if in #2040)
- Add more statuses for transactions in transaction list (@hairtail in #1882)
- Add some additional logging for pool payouts and block template (@mat-if in #2050)
- Cache unsigned hash on Transaction, same way we cache the signed hash (@mat-if in #2054)
- Require pay and deposit commands to connect to a running node (@mat-if in #2058)
- Add accounts status to status command (@hairtail in #1927)
- Enable source maps and stack traces (@NullSoldier in #2084 and #2085)
- Display error when deposit-all crashes (@NullSoldier in #2099)
- Retry 'rm' on chain database to address EBUSY errors in
chain:download
(@hughy in #2070) deposit-all
should not crash if balance changes while creating a transaction (@NullSoldier in #2103)- Add
repl
command to interact with the node (@NullSoldier in #2110) - Fix not closing indexer DB (@NullSoldier in #2109)
Full Changelog: v0.1.44...v0.1.45
v0.1.44
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
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