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