Releases: iron-fish/ironfish
v2.2.0
What Changed
Asset values are now displayed differently in the CLI. Previously, they all used the same 8 decimal places as IRON. Now, by default, an asset will be shown with no decimal places. A verified asset can have a custom number of decimal places. For an asset to be verified, it can be added to these lists for mainnet or testnet respectively: https://github.com/iron-fish/verified-assets. Feel free to open a PR to add an asset. A node can load a verified assets list from other sources using the assetVerificationApi
config variable.
For example, minting 1 Coolcoin previous to this release would have minted 1.00000000 Coolcoin, which was really 100,000,000 Coolcoin in the minor denomination. After this update, you will see that larger value, unless the asset is added to the verified assets list with a custom decimal place.
Note that this does NOT affect the actual value of the asset. This only changes how it is displayed. The node uses all values in their minor denomination (no decimal places), so 1 IRON is always treated as 100000000 ORE (the minor denomination), etc.
RPC Breaking Changes 🛠
Other Changes
- Replace uses of
request<T>(...)
in tests with the appropriate method fromRpcClient
by @andiflabs in #4837 - Add "cargo vet" for supply chain verification by @andiflabs in #4842
- Clarify when users are entering iron denominations by @NullSoldier in #4843
- chore: remove repetitive words by @battmdpkq in #4845
- Change return type of serializeHeader to Buffer by @wincss in #4850
- Adds a transaction timer class to reuse by @patnir in #4852
- adds memos to 'wallet:transactions' output by @hughy in #4856
- Moves responsibility of logging estimate out of the timer by @patnir in #4857
- Move fetchNotes to utils by @patnir in #4858
- Rahul/ifl 2399 move spendposttime to utils by @patnir in #4859
- adds memoHex to RpcWalletNote by @hughy in #4860
- fixes createSigningPackage checksum verification by @hughy in #4861
- allows deploying Docker images for staging branch by @hughy in #4864
- Pool: always send out a new block template by @mat-if in #4868
- fix: delete of account via RPC throws while node account rescan is active by @jowparks in #4867
- Add FishHash mainnet checkpoint by @danield9tqh in #4866
- Add autocomplete for SDK by @danield9tqh in #4869
- continue to process messages when exceptions occur by @patnir in #4870
- chore: standalone naming by @jowparks in #4874
- add additional fields to asset verification code by @mat-if in #4851
- Fix Buffer memo in mempool tests by @danield9tqh in #4875
- Rahul/ifl 2455 refactor explicitly call benchmark spend post time by @patnir in #4872
- Update autocomplete version to use correct version of Oclif by @danield9tqh in #4876
- fix: adjust GHA runner apple binary to publish arm64 by @jowparks in #4881
- removes migration logic from before network reset by @hughy in #4873
- fix: add dispatch param by @jowparks in #4882
- Cleanup more uses of
request()
in tests by @andiflabs in #4886 - Add new currency render function by @mat-if in #4879
- Render question mark for unknown assets by @danield9tqh in #4888
- lazy deserialization in levelup db iter methods by @hughy in #4877
- removes unused walletDb method by @hughy in #4865
- Update ironfish-frost to the latest version by @andiflabs in #4887
- Use new render function in the CLI by @mat-if in #4880
- Parse values in the proper denomination for CLI commands by @mat-if in #4884
- Implement
wallet/multisig/dkg/round1
RPC by @andiflabs in #4885 - Rahul/ifl 1881 adds transaction progress bar to wallet send by @patnir in #4854
- automatically add identity for secretName to round1 participants by @hughy in #4891
- implement dkg/round2 RPC by @hughy in #4889
- add dkg round1 cli command by @hughy in #4890
- add DKG round2 CLI command by @hughy in #4893
- Avoid an infinite loop in
SaplingKey::generate_key
by @andiflabs in #4895 - Simplify the code for
split_spender_key
by @andiflabs in #4897 - Fix an issue with the mint command where the id was not properly being passed by @mat-if in #4892
New Contributors
- @battmdpkq made their first contribution in #4845
- @wincss made their first contribution in #4850
Full Changelog: v2.1.0...v2.2.0
v2.1.0
What Changed
This version includes the release of multisignature accounts on Iron Fish.
Other Changes
- handles errors in participant creation by @hughy in #4816
- preserves order of identities when returning key packages by @patnir in #4814
- supports listing all created identities by @hughy in #4815
- automatically include account identity for commitment by @hughy in #4818
- Multisig: make
split_spender_key
/split_secret
more robust by @andiflabs in #4819 - Rahul/ifl 2349 add watch to signatureaggregate by @patnir in #4820
- displays signers during signature share creation by @hughy in #4821
- Add labels to PR template by @dguenther in #4824
- feat(cli): Use
longPrompt
when creating dealer by @rohanjadvani in #4825 - Remove unused mining utilities by @danield9tqh in #4827
- updates unsigned tx details to always show output for notes by @hughy in #4826
- feat(ironfish): Try stored secrets when decrypting import by @rohanjadvani in #4822
- checks coordinator name against accounts and identities by @hughy in #4832
- Cleanup/remove hashing header function by @danield9tqh in #4829
- Use NodeFileSystem for AssetVerifier by @danield9tqh in #4833
- Update to the latest version of ironfish-frost by @andiflabs in #4835
- Multisig: verify the consistency of commitments checksum by @andiflabs in #4836
- rust 1.66 -> 1.76 (rust-toolchain.toml) by @jowparks in #4838
- supports json file input to multisig transaction commands by @hughy in #4834
- Multisig: move the rust-nodejs items to a namespace by @andiflabs in #4839
- verifies signing package signers in createSignatureShare by @hughy in #4823
- updates ironfish-frost for min_signers by @hughy in #4840
- verifies number of commitments before creating signing package by @hughy in #4841
- multisig command in index by @patnir in #4830
- Rahul/ifl 2350 add information to cli output to indicate next command to by @patnir in #4828
- Multisig: do not include the multisig secret when exporting view-only account by @andiflabs in #4847
- feat(): Bump versions for v2.1.0 by @rohanjadvani in #4846
- fixes incorrect sibling hash caching during witness creation by @hughy in #4849
- STAGING -> MASTER by @rohanjadvani in #4848
Full Changelog: v2.0.0...v2.1.0
v2.0.0
What's Changed
This change includes the activation for the first Iron Fish Hardfork. Upgrading to this version will prepare any node runners for the activation of the hardfork on mainnet.
RPC Breaking Changes 🛠
SDK Breaking Changes 🛠
- fix: throw on max buffer length exceeded in memo by @jowparks in #4777
- Change Note memos from string to 32 byte buffer by @NullSoldier in #4743
- Add mainnet hardfork sequence for hardfork 1 by @danield9tqh in #4803
Other Changes
- fix(cli): Remove signerIdentity from create-signature-share by @rohanjadvani in #4756
- feat(ironfish,rust-nodejs): Add
wallet/getUnsignedTransactionNotes
by @rohanjadvani in #4755 - Rahul/use public key package with identities by @patnir in #4759
- Add RUST_BACKTRACE=1 to jest tests by @NullSoldier in #4742
- feat(cli,ironfish,rust-nodejs): Render unsigned transaction details for signature share creation by @rohanjadvani in #4762
- Set batch size for FishHash, change consensus param for asset ownership to null by @mat-if in #4750
- fixess bad fixtures for createTransaction by @hughy in #4765
- Update crypto_box and tiny-bip39 to the latest version by @andiflabs in #4763
- fixes rendering of notes in wallet:transaction by @hughy in #4764
- Updated
ironfish-frost
to the latest version by @andiflabs in #4766 - feat(rust-nodejs): Remove unused descriptions method by @rohanjadvani in #4760
- Rahul/ifl 2270 move structs from frost utils to ironfish frost by @patnir in #4768
- notes length check refactor by @patnir in #4746
- Add SDK exports to repl by @danield9tqh in #4770
- Add some rules for auto-release notes by @danield9tqh in #4758
- fix(ironfish): Fix unsigned transaction creation from signing package by @rohanjadvani in #4772
- Base64JsonEncoder: correctly strip the 'ifaccount' prefix by @andiflabs in #4771
- changes 'signing' to 'signature' in cli output by @hughy in #4773
- Rahul/add unsigned transaction summary to create signing commitment by @patnir in #4769
- Rahul/multi sig ux input spacing by @patnir in #4774
- wip/frost-encryption, address book, stored identities by @hughy in #4775
- Update to the latest version of ironfish-frost by @andiflabs in #4779
- Improvements to
ironfish-rust-nodejs/src/frost.rs
by @andiflabs in #4783 - Move pool miner to V3 by @danield9tqh in #4781
- Improve the terminology used around multisig by @andiflabs in #4782
- Multisig: add encryption/decryption primitives to ParticipantIdentity and ParticipantSecret by @andiflabs in #4785
- Fix route and node test cleanups by @NullSoldier in #4791
- Rename
base64.json.test.ts
tobase64json.test.ts
by @andiflabs in #4790 - Multisig wallet: generate TDK accounts on the server side by @andiflabs in #4784
- Ensure that the release binaries are built using the right version by @mat-if in #4792
- creating new signing key when splitting secret from dealer by @patnir in #4788
- name flag optional for multisig identity create by @patnir in #4778
- Add functionality to Base64JsonEncoder to encrypt multisig accounts by @andiflabs in #4786
- Add testnet checkpoint for FishHash hardfork by @danield9tqh in #4795
- wallet/importAccount can now decrypt multisig-encrypted accounts by @andiflabs in #4793
- wallet/multisig/createTrustedDealerKeyPackage now returns encrypted accounts by @andiflabs in #4794
- ironfish-rust-nodejs: move the multisig structs to the
frost
submodule by @andiflabs in #4797 - Multisig: move key generation to the Rust layer by @andiflabs in #4798
- fix(cli): Fix
wallet:balances
to render sequence in sequence column by @rohanjadvani in #4801 - feat(ironfish): Update multisig store to use identity as a key by @rohanjadvani in #4800
- feat(ironfish): Check for duplicate account name when creating secret by @rohanjadvani in #4804
- refactor(cli,ironfish): Rename multisig RPC / CLI by @rohanjadvani in #4806
- simplifying lint headers script by @patnir in #4802
- fixes description for confirm flag in commitment:create by @hughy in #4807
- outputs serialized transaction from signature:aggregate by @hughy in #4808
- feat(cli,ironfish): Throw error for multisig secret during import by @rohanjadvani in #4811
- v2.0 Version Bump by @mat-if in #4810
- feat(cli): Update new line in
wallet:multisig:signature:create
by @rohanjadvani in #4813 - uses long prompt for fetching identities when creating a commitment by @patnir in #4812
Full Changelog: v1.20.0...v2.0.0
v1.20.0
Breaking Changes
- #4699 - changes format of consensus params for custom networks
- #4715 - changes
Target.calculateDifficulty
andTarget.calculateTarget
function parameters, now takes in aConsensus
and the current block sequence. No longer takes in individual parameter values.
What's Changed
- This release enables the testnet hard-fork sequence at block 419,193. See the hard-fork FIP for more details.
- Lots of work related to FROST and multi-sig support
- Added
base64json
encoding to wallets and removedbech32
encoding - Separated steps for building and signing transactions in the RPC layer. #4642
Full Changelog: v1.19.0...v1.20.0
v1.19.0
Summary
- Fixed imports of bech32-encoded accounts from earlier SDK versions
Breaking Changes
- #4634 - Moved Strategy.createMinersFee() to Blockchain.createMinersFee()
- #4645 - Removed SDK argument networkClass
- #4644 - Replaced Strategy class from SDK with Network
What's Changed
- Remove customNetwork config value by @danield9tqh in #4568
- removes nonces from round one output by @hughy in #4591
- split spender key takes a borrowed sapling key by @patnir in #4590
- Pool validates FishHash blocks by @danield9tqh in #4589
- Rahul/ifl 2084 unspent note hashes sorted by value by @patnir in #4525
- Rahul/ifl 2014 create napi function to split a secret by @patnir in #4592
- adds napi binding for signing package by @hughy in #4593
- feat(IFL-2051): Add frost signing function by @jowparks in #4546
- feat: sign_frost napi binding by @jowparks in #4594
- fixes napi binding for frost round two by @hughy in #4597
- adds build method to rawTransaction by @hughy in #4596
- public key randomness napi binding by @patnir in #4598
- Add standardized RPC tests for client / adapters by @NullSoldier in #4585
- feat: enable rpc.tcp automatically if tcp port or host is provided by @jowparks in #4417
- adds frost participant napi bindings by @hughy in #4599
- allow import an account with the same view key by @patnir in #4601
- Make config networkDefinitionPath static by @danield9tqh in #4603
- Feat/ifl 2132/multisig integration by @patnir in #4602
- fixes flaky filestore test by @patnir in #4600
- Add new PrefixArrayEncoding by @NullSoldier in #4604
- chore: minor refactor split secret by @jowparks in #4605
- Remove networkId from config by @danield9tqh in #4610
- Add timeouts back to RPC tests by @NullSoldier in #4609
- updates ParticipantSecret napi with serde by @hughy in #4607
- feat: create trusted dealer key packages rpc by @jowparks in #4611
- adds test of simple transaction signing by @hughy in #4606
- Make typed versions of default network definitions by @danield9tqh in #4613
- Rahul/ifl 2052 add multisig/createsigningcommitment by @patnir in #4615
- chore: add UnsignedTransaction primitive by @jowparks in #4619
- chore: simplifies signing commitment test by @patnir in #4622
- Combine networks into network files by @NullSoldier in #4623
- Require Node.js 20 for tests in README by @dguenther in #4612
- filestore handles empty file by @patnir in #4625
- Bump SDK to 1.18.0 by @NullSoldier in #4627
- STAGING -> MASTER by @NullSoldier in #4626
Full Changelog: v1.17.0...v1.19.0
v1.18.0
Breaking Changes
- #4603 - Removes
networkDefinitionPath
from config - #4610 - Removes
networkId
from config - #4613 - Changes network definitions from strings to typed objects
What's Changed
- Remove customNetwork config value by @danield9tqh in #4568
- Pool validates FishHash blocks by @danield9tqh in #4589
- feat: enable rpc.tcp automatically if tcp port or host is provided by @jowparks in #4417
- Remove networkId from config by @danield9tqh in #4610
- filestore handles empty file by @patnir in #4625
Full Changelog: v1.17.0...v1.18.0
v1.17.0
Breaking Changes
- #4566 - fixes the naming of
allowedBlockFutureSeconds
inchain/getConsensusParameters
endpoint - #4567 - Changes signature of
Consensus.isActive
method in the SDK - #4540 - When using the SDK, calling
sdk.node()
will save the node's network identity automatically tointernal.json
. Previously you would have to save it in a separate call, otherwise the network identity would not be persisted. - #4573 - Many RPC types in the SDK have changed names and now use the Rpc prefix to indicate they are types for the RPC layer.
- #4578 - SDK type change renamed ERROR_CODES to RPC_ERROR_CODES
What's Changed
- Added FishHash verification to the node
- Added HTTP RPC Adapter to SDK
Full Changelog: v1.16.0...v1.17.0
v1.16.0
Breaking Changes
- #4510 - Remove the config values
explorerBlocksUrl
andexplorerTransactionsUrl
from SDK config. They were previously used by the pool. Also changes some of the constructors forMiningPool
andWebhookNotifier
. Should not affect anyone not using the reference pool. - #4533 - Changes constructor for
BlockHeader
class to take a mandatory hash which will be reflected in the SDK. Moves hashing function toStrategy
class - #4475 - Changes constructor of Config class to now take a mandatory object of extended keys. You must pass this even if you are not extending the config. You can simply pass
{}
.
What's Changed
- Added signed Iron Fish portable executables to each release now #4490
- Added new wallet:notes:combine command #4498
- See 32 more changes: v1.15.0...v1.16.0
v1.15.0
New CLI Command: ironfish wallet:notes:combine
Problem: Users transactions are stuck because those transactions contain too many notes. The transaction is not posted in time and usually expires.
Fix: This release introduces a new CLI command to combine a large number of notes into a single note. This command benchmarks the performance of your machine and suggests amount of notes to combine.
Once combined, the ironfish wallet:send
command with the --note
flag can be used to select the combined note. ironfish wallet:notes --filter="Spent=x"
is useful to find the combined note.
What's Changed
- fixes import on accounts that do not include viewKey by @hughy in #4488
- rendering negative time in timeutils.renderSpan by @patnir in #4489
- feat: signable binary by @jowparks in #4479
- Rahul/ifl 1848 combine notes command by @patnir in #4470
- Bump perf test and regenerate fixture node versions to 20 by @dguenther in #4493
Full Changelog: v1.14.0...v1.15.0
v1.14.0
Breaking Changes
peer/addPeer
RPC now waits for the peer connection to either succeed or fail before returning a result.PartialHeaderSerde
andBlockHeader.serializePartial
have been removed and are no longer exported from the SDK.wallet/getAccountsStatus
RPC no longer accepts an account parameter (it did nothing). Usewallet/getAccountStatus
to fetch account status for a single account.wallet/getAccountsStatus
RPC now returns:
{
name: string
id: string
head: {
hash: string
sequence: number
inChain: boolean | null
} | null
viewOnly: boolean
}
Other Changes
- Sending a transaction in the CLI now shows a summary of the transaction, including spends and outputs, before sending it. @patnir in #4469
- We now display a clearer error when passing --path and an invalid argument to the wallet:import command. @dguenther in #4483
- The
wallet/getAccountsStatus
RPC now returns whether an account is view-only. @dguenther in #4481 - Added a
wallet/getAccountStatus
RPC to return results for a single account. @dguenther in #4482 - The
peer/addPeer
RPC now waits for the node to connect to the given peer before returning. @danield9tqh in #4448 - Fixed a time-related case where snapshot downloads could unexpectedly time out. @dguenther in #4480