Releases: iron-fish/ironfish
v0.1.57
v0.1.56
What's Changed
- Rename expirationSequence -> expiration in JS by @NullSoldier in #2782
- feat(ci): Fetch cargo-tarpaulin binary from github instead of using github action by @mat-if in #2784
- fix(napi): Update changes to autogenerated files by @mat-if in #2787
- Rename expirationSequence -> expiration in RS by @NullSoldier in #2785
- feat(cli,ironfish): Update balance CLI command to include
assetIdentifier
by @rohanjadvani in #2762 - feat(ironfish): Add RPC route for minting asset by @rohanjadvani in #2786
- feat(ironfish): Pass
assetIdentifier
intransaction/sendTransaction
by @rohanjadvani in #2760 - Fix submittedSequence in connectTransaction by @mirayadav in #2791
- feat(cli): Introduce
assets:mint
CLI command by @rohanjadvani in #2788 - removes unused wallet code for syncing transactions by @hughy in #2783
- Add DatabaseIteratorOptions by @mirayadav in #2798
- Add support for iterating database entries by key order by @mirayadav in #2799
- feat(cli): Show asset identifier for amount being paid instead of $IRON by @rohanjadvani in #2800
- removes balance repair from accounts:repair by @hughy in #2802
- Display Mints and Burns for accounts:transactions by @ygao76 in #2803
- Extend status column to 12 by @NullSoldier in #2805
- Transaction Ordering By Timestamp by @mirayadav in #2790
- Change RPC note.amount to be value by @NullSoldier in #2806
- Replace hex-array library with native (de)serialization by @danield9tqh in #2794
- Replace all fixed sized BigInt serialization and deserialization with bufio by @danield9tqh in #2781
- Remove buildRawTransaction() in blockchain.test by @NullSoldier in #2801
- Update to Nodejs 18 by @dguenther in #2768
- Remove useRawTxFixture() fixture by @NullSoldier in #2804
- Don't save latest until transaction commit by @danield9tqh in #2809
- Display asset identifier for accounts:notes cli by @ygao76 in #2793
- Add chain:asset command by @NullSoldier in #2815
- Add useMintBlockFixture for tests by @NullSoldier in #2810
- feat(ironfish): Update mint arguments to be consistent with pay by @rohanjadvani in #2817
- adds chain state fields to balances datastore by @hughy in #2792
- Fix note encoding not using CurrencyUtils by @NullSoldier in #2821
- Delete fees RPC namespace by @NullSoldier in #2822
- feat(ironfish): Add burn method to wallet by @rohanjadvani in #2816
- Merge transaction namespace into wallet RPC namespace by @NullSoldier in #2823
- Upgrading oclif/core to 1.23.1 by @NullSoldier in #2824
- adds balance delta mapping to transactionValue by @hughy in #2819
- Kill CLI aliases. by @EvanJRichard in #2825
- Move transaction routes into wallet folder by @NullSoldier in #2829
- Rename Wallet.pay() -> Wallet.send() by @NullSoldier in #2830
- feat(ironfish): Add RPC route for
wallet/burnAsset
by @rohanjadvani in #2833 - feat(cli): Add
wallet:burn
CLI command by @rohanjadvani in #2834 - refactor(ironfish): Move mint asset under wallet namespace by @rohanjadvani in #2831
- feat(rust): use
checked_add
forValueBalance
by @mat-if in #2840 - refactor(cli,ironfish,rust,rust-nodejs): asset identifier -> asset id by @rohanjadvani in #2837
- Update napi-rs by @dguenther in #2842
- Rename assetIdentifier -> assetId by @NullSoldier in #2843
- feat: update get transaction stream (1/2) by @jowparks in #2835
- Move fixtures into distinct folders by @NullSoldier in #2844
- Rename accounts commands to wallet by @NullSoldier in #2845
- feat: wire up multi asset syncer to API (2/2) by @jowparks in #2795
- fixes submittedSequence to be non-nullable by @hughy in #2841
- delegates headHashes datastore to account by @hughy in #2832
- displays balance head hash and sequence in CLI by @hughy in #2839
- fix: bug in multi asset syncer by @jowparks in #2848
- adds account filtering logic to connect/disconnect by @hughy in #2820
New Contributors
- @EvanJRichard made their first contribution in #2825
Full Changelog: v0.1.55...v0.1.56
v0.1.55
What's Changed
Please note this release is not backward-compatible with previous releases.
- You will not be able to connect to the Phase 2 testnet network with this version or access your Phase 2 chain or accounts using this version.
- If you've earned Phase 2 testnet points, we recommend running
ironfish accounts:export
on an older version to back up your account keys.
Network definitions
Previously, network parameters like the genesis block and bootstrap nodes were built into the code, but in this release @mirayadav added support for network definitions, which allow the CLI to support multiple networks.
We'll eventually use this feature to run mainnet and testnet using the same CLI. You can pass --customNetwork
to the start command if you'd like to create your own network, or pass --networkId
with the ID of one of the networks in this file: https://github.com/iron-fish/ironfish/blob/38d2528903d3def6be0eaa4eaf400deb541b404c/ironfish/src/defaultNetworkDefinitions.ts
Related PRs
- Add support for custom network definitions by @mirayadav in #2639
- Tweak network definitions by @danield9tqh in #2690
- Move maxSyncedAgeBlocks to config from consensus by @mirayadav in #2691
- Enforce separate data directories per network by @mirayadav in #2698
- Add network ID and genesis block hash to Identify Message by @mirayadav in #2718
Add sender to transactions
Transactions now display the public address from which they were sent. Transactions still allow multiple recipients, but for now, we're limiting transactions to a single sender to support this feature.
Related PRs
- feat: add sender address to notes and validate in circuit by @jowparks in #2673
- Add sender address to Note in rust by @ygao76 in #2680
- feat: add sender to transaction ts by @jowparks in #2682
- feat: add sender() to Note and ProposedTransaction by @jowparks in #2686
- Move randomized public key to transaction by @ygao76 in #2755
- Clean up for sender address by @ygao76 in #2761
- feat: add sender to cli outputs by @jowparks in #2763
- feat: change sender output text by @jowparks in #2764
Adding transaction commitment to block header
Block headers now contain a merkle root of all transactions in the block, allowing block recipients to verify that they've received the matching transactions for the block.
Related PRs
- Add transaction commitment to block header by @danield9tqh in #2653
Reducing network and storage usage
We removed some unnecessary fields from the database and block header to save disk space and network usage.
Related PRs
- network-reset: Remove note tree size from block header by @dguenther in #2642
- Reduce hashed header sequence from u64 to u32 by @dguenther in https://github.com/iron-fish/ironfish/pull/
- Remove nullifier commitment from block header by @danield9tqh in #2675
- Delete minedBlockIndexer by @dguenther in #2696
- Remove element field from merkle tree leaves by @dguenther in #2706
- Replace nullifier merkle tree with nullifier set by @danield9tqh in #2722
- Remove nullifier size from block header by @danield9tqh in #2735
- Add transaction to NullifierSet connect and disconnect by @danield9tqh in #2748
Continuing work on multi-asset support
Multi-asset support is not yet usable in the CLI, but the underlying fields and circuits are nearly complete.
Related PRs
- feat(ironfish,rust,rust-nodejs): Add Napi bindings for mint descriptions by @rohanjadvani in #2652
- feat(ironfish): Read burn descriptions from transaction in deserialization by @rohanjadvani in #2659
- feat(rust-nodejs): Add
note.asset_identifier()
by @rohanjadvani in #2661 - feat(rust-nodejs): Add
transaction.mint
andtransaction.burn
by @rohanjadvani in #2662 - feat(ironfish,rust-nodejs): Update create transaction handler to include mints and burns by @rohanjadvani in #2665
- refactor(ironfish): Read and store Note asset identifier for quicker acces by @mat-if in #2666
- feat(ironfish): Add assets store to blockchain by @rohanjadvani in #2677
- feat(ironfish,rust-nodejs): Update blockchain assets store when processing blocks by @rohanjadvani in #2703
- feat(ironfish): Update
balances
store inwalletdb
to include asset by @rohanjadvani in #2729 - feat(ironfish): Add asset awareness when checking amounts needed for spends by @rohanjadvani in #2730
- feat(ironfish): Use
assetIdentifier
when saving unconfirmed balance by @rohanjadvani in #2738 - feat(rust): Assets should have a valid non-empty name by @mat-if in #2739
- feat(ironfish): Update getBalance to take an asset identifier by @rohanjadvani in #2742
- Check mints and burns in miner fee transactions by @dguenther in #2766
Change in data directory structure
We've changed the folder structure of our data directory to make it clearer which folders contain databases and which folders contain configuration.
Related PRs
- chore: database paths to one folder by @jowparks in #2635
- Remove ability to customize database names by @NullSoldier in #2683
Community PRs
Thanks to our community members for their contributions to this release!
- Add from sequence for accounts:rescan by @hairtail in #2453
- Update account rpc endpoint by @wd021 in #2509
Full Changelog: v0.1.54...v0.1.55
v0.1.54
v0.1.53
What's Changed
‼️ V3 Consensus Upgrade ‼️
This will stop new iron from being generated, and allow deposits to the end of the testnet Phase 2. You MUST upgrade immediately as this adds a hard fork at block 279900.
ironfish accounts:repair
You can use this new command to repair your wallet and help fix some corruption. We recommend running this on your wallet to repair some issues with note to nullifier
errors happening. We also put in some wallet fixes thanks to @hughy to hopefully prevent this, and other issues from happening again.
Full Changelog: v0.1.52...v0.1.53
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