Skip to content

Releases: iron-fish/ironfish

v1.13.0

29 Nov 23:24
8fa601f
Compare
Choose a tag to compare

What's Changed

  • Updated the SDK to now run on Node 20 LTS #4434
  • Added sorting for peers command #4442
  • Whitelisted nodes are now not disconnected #4444
  • Adding ability to select notes in the transaction send command by @patnir in #4465

Full Changelog: v1.12.0...v1.13.0

Note Selection in ironfish wallet:send

You can now pass note hashes to ironfish wallet:send command to force the wallet to use these notes in the transaction.

Example

ironfish wallet:send \
    --note 72e91d6672d79f9006f128a16cf52bbb585037fee2aea8385b56919c3ac9570b \
    --note 4a5feb193d425fa73abfb108027a643eb027e46684c50e2bef5d66ea48ec3d2d \
    --note f8b91f81caf4489c83734c2b29ad4587c9ba0c1080854a3f6da19f6fad49265e

NOTE: If you specify notes, and it's not enough for the send amount, the wallet will add extra notes to fund the transaction.

v1.12.0

07 Nov 00:57
3b61ff3
Compare
Choose a tag to compare

Notable Changes


Removing support for NodeJS v16; adding support for NodeJS v20 and beyond. The node now requires a minimum version of NodeJS v18 instead of only NodeJS v18, so we can more easily support new NodeJS versions as they are released.

Block syncing speed should be improved. The node will regularly measure the connection of some peers to try to find a faster peer to sync from. The first time this occurs is 2 minutes after the node starts syncing, then 4, 8, 16.. up to a maximum of once per 60 minutes.

Nodes should be able to find peers faster and more consistently.

  • The default targetPeer value is now 45. This means that nodes will attempt to connect to new nodes until it has reached 45 peers. After 45, it will allow incoming connections up to the maxPeer value, which has a default of 50. This will allow other nodes to find peers faster since nodes will no longer be trying to actively reach the maximum.
  • Nodes track peers that it successfully connects to via websocket connection and saves these peers to disk. The next time the node starts, it will attempt connections to these peers first, leading to faster initial startup connections.
  • Nodes now only count peers that are fully connected when checking if it should open new connections or allow incoming connections, instead of peers that were in connected or connecting states.

    Added a keepOpenPeerSlot config option (default false). When set to true, a node will disconnect from a peer if it is at maxPeers, so that the node will always allow an incoming connection instead of reaching the maximum number of peers and rejecting incoming connections.

Breaking Changes

Moved PriorityQueue out of mempool #4380

Changed the return type of Note.memo() to Buffer. Use BufferUtils.toHuman(note.memo()) to produce the same human-readable value #4384

Removed support for NodeJS v16. Supported versions of NodeJS are now v18 or higher. #4395

Full Changelog: v1.11.0...v1.12.0

v1.11.0

19 Oct 19:58
246e55d
Compare
Choose a tag to compare

What's Changed

Breaking Changes

  • Removed simulateLatency config option: #4333
  • Changed outputPath to output directory in chain:download command #4345

Full Changelog: v1.10.0...v1.11.0

v1.10.0

02 Oct 23:11
a584239
Compare
Choose a tag to compare

Breaking Changes

  • fee field on /chain/getTransaction is now a Number (was a String) PR for reference
  • The graffiti field as part of the RpcBlockHeader object will now be sent back as a hex string instead of a utf-8 string.

Notable Changes

  • /wallet/create has been deprecated for /wallet/createAccount
  • /wallet/remove has been deprecated for /wallet/removeAccount
  • /wallet/rename has been deprecated for /wallet/renameAccount
  • /wallet/use has been deprecated for /wallet/useAccount
  • New RPC Response Structure. Our important domain concepts like Transaction, WalletNote, Asset, etc. have been normalized.

What's Changed

  • Add mint asset creator field to transaction api calls by @mat-if in #4254
  • Explicitly set the asset creator field of mints in RawTransaction by @andreacorbellini in #4264
  • fixes wallet.updateHead test to be independent of fixture generation by @hughy in #4265
  • When an unknown asset is seen in a wallet transaction, backfill its information from the chain db before processing the transaction by @andreacorbellini in #4244
  • Add more information to getBlockResponse by @hairtail in #4217
  • feat(cli,ironfish): Return native asset when streaming wallet assets by @rohanjadvani in #4267
  • asset-security -> staging by @mat-if in #4250
  • Update the blockchain db whenever a mint with transferOwnershipTo is seen by @andreacorbellini in #4253
  • Update the wallet db whenever a mint with tranferOwnershipTo is seen by @andreacorbellini in #4266
  • Track originating peer for block gossip by @danield9tqh in #4270
  • Make activation flag nullable by @ygao76 in #4277
  • Add (de)serialization for Asset by @andreacorbellini in #4275
  • Add transferOwnershipTo support to CLI/RPC by @mat-if in #4278
  • Rahul/ifl 1624 useaccount endpoint by @patnir in #4280
  • Rahul/ifl 1625 renameaccount endpoint by @patnir in #4279
  • Rahul/ifl 1587 createaccount endpoint by @patnir in #4268
  • adding remove account endpoint by @patnir in #4281
  • Rahul/ifl 1603 make asset response consistent across all endpoints by @patnir in #4272
  • sequential-block-time -> staging by @ygao76 in #4276
  • Patched Fix Inefficient Regular Expression Complexity Regular Express… by @wica-sufatmawati in #4271
  • Rahul/ifl 1580 normalize encrypted note by @patnir in #4285
  • New fixture for multiple custom transactions by @danield9tqh in #4287
  • Rahul/ifl 1576 normalize block header by @patnir in #4286
  • Rahul/ifl 1578 normalize transaction by @patnir in #4288
  • Use Decimal library to make feeRates deterministic by @danield9tqh in #4282
  • Rahul/ifl 266 mintasset and burnasset do not accept a feerate in requests by @patnir in #4289
  • Rahul/ifl 1636 normalize block by @patnir in #4295
  • Rahul/ifl 493 account is not consistently optional in wallet rpcs 2 by @patnir in #4291
  • Rahul/ifl 1579 normalize transaction sub objects - mints and burns by @patnir in #4293
  • Rahul/ifl 1579 normalize transaction sub objects updating mint burn asset endpoints by @patnir in #4294
  • Add links to CI jobs on badges by @danield9tqh in #4296
  • Adding the Inversed Tech audit PDF report by @leanthebean in #4184
  • resets account heads and birthdays in reset command by @hughy in #4269
  • Increase the default difficulty when creating genesis and devnet difficulty by @mat-if in #4246
  • fix memory client close handlers by @danield9tqh in #4090
  • Rahul/ifl 1651 add ability to show usage of deprecated fields in ironfish by @patnir in #4298
  • feat: rust std::backtrace by @jowparks in #4274
  • Export network definitions by @ygao76 in #4302
  • marking counts fields as deprecated by @patnir in #4301
  • Rahul/ifl 1641 add optional serialized field to transaction rpc by @patnir in #4299
  • Rahul/ifl 1665 normalize exportchainstream by @patnir in #4304
  • Rahul/ifl 1670 move peerresponse into types by @patnir in #4305
  • adding burns and mints to the account transaction by @patnir in #4307
  • Rahul/ifl 1678 naming change accounttransaction to wallettransaction by @patnir in #4309
  • Notify Slack of fixture regeneration failure by @danield9tqh in #4164
  • Fix fixture regeneration failures for diable wallet test by @danield9tqh in #4310
  • Rahul/ifl 1653 update gettransaction response to use the rpc transaction by @patnir in #4300
  • adding full transaction object to burn and mint asset response by @patnir in #4311
  • formatting all rpc objects in the same order by @patnir in #4313
  • Rahul/ifl 1643 update cli to stop using the deprecated fields by @patnir in #4315
  • Resume snapshot downloads if supported by @dguenther in #4308
  • Don't use streaming endpoint in status CLI by @danield9tqh in #4312
  • Rahul/ifl 1690 remove dependence on deprecated status field by @patnir in #4320
  • Adding feerate to mint and burn by @patnir in #4318
  • Handle socket read/write errors by @andiflabs in #4317
  • version bump 1.9.0 to 1.10.0 by @patnir in #4326
  • Staging to master version 1.10.0 by @patnir in #4329

New Contributors

  • @wica-sufatmawati made their first contribution in #4271
  • @andiflabs made their first contribution in #4317

Full Changelog: v1.9.0...v1.10.0

v1.9.0

30 Aug 23:04
fbf32a7
Compare
Choose a tag to compare

Breaking Changes

  • transaction_signature_hash return types updated to Result

Notable Changes

  • Ability to start the full node without the wallet
  • Improvements to rescan when importing accounts and with connection issues

What's Changed

  • test(ironfish): Fix wallet/getAsset.test.ts by @rohanjadvani in #4218
  • Rahul/ifl 1499 conditionally start wallet based on flag by @patnir in #4201
  • test(cli,ironfish): Add option to set birthday on account create by @rohanjadvani in #4221
  • remove hardcoded transaction version check in batch verify by @mat-if in #4225
  • transaction_signature_hash functions return a result instead of panic by @mat-if in #4227
  • adding enable wallet flag to node start command by @patnir in #4223
  • Rahul/ifl 1498 show enabled state in wallet status by @patnir in #4226
  • test(ironfish): Fix mintAsset and burnAsset test fixtures by @rohanjadvani in #4230
  • Rahul/ifl 1534 format disabled status flag for new datadir by @patnir in #4233
  • fixes importAccount rescan if wallet not connected to node by @hughy in #4238
  • test(ironfish): Fix scan transaction wallet fixtures by @rohanjadvani in #4231
  • test(ironfish): Fix slow wallet test fixtures by @rohanjadvani in #4232
  • fix: manager test was non-deterministic due to mempool fee estimation by @mat-if in #4219
  • Check transactions validity before syncing to the wallet by @danield9tqh in #4189
  • Add limit for queue size of pending transactions in the wallet by @danield9tqh in #4185
  • Update Account.saveAssetFromChain to support the new owner field by @andreacorbellini in #4243
  • fixes balance example in repl command by @hughy in #4241
  • Use a floor of 1 for sequence when checking active consensus params by @mat-if in #4248
  • adds faucet namespace to walletNode RPC server by @hughy in #4247
  • Remove deprecated API functions by @mat-if in #4251
  • Rahul/ifl 1555 add node to wallet rpc namespace by @patnir in #4242
  • Adding verify genesis block check by @patnir in #4245
  • remove ironfish-wallet-server by @jowparks in #4252
  • restarts wallet scan on import by @hughy in #4255
  • fix(ironfish): Pass missing startWallet argument by @rohanjadvani in #4256
  • update rust ci test timeout from 3 to 5 minutes by @mat-if in #4258
  • feat(cli): Log message if no transactions are found for an account by @rohanjadvani in #4259
  • updateHead updates to chain head by @hughy in #4257
  • delete requires confirmation if account scanning by @hughy in #4260
  • feat(ironfish): Throw error if wallet node client is disconnected by @rohanjadvani in #4261
  • chore(cli,ironfish,rust-nodejs,simulator): Bump release versions by @rohanjadvani in #4262
  • staging -> master by @rohanjadvani in #4263

Full Changelog: v1.8.0...v1.9.0

v1.8.0

15 Aug 19:06
4ea3ae4
Compare
Choose a tag to compare

Breaking changes

Notable changes

  • Updates to support the ironfish standalone wallet CLI
  • Initial changes for future support of asset ownership transfer

What's Changed

  • adds wallet/getNodeStatus RPC by @hughy in #4135
  • Add WalletNode interface and connect to RPC handlers by @danield9tqh in #4137
  • Add support for V2 transactions to RawTransaction by @andreacorbellini in #4127
  • refactor(ironfish): Check for backfill before opening db in migration 19 by @rohanjadvani in #4139
  • removes wallet:repair command by @hughy in #4141
  • Add ability to filter migrations by database by @danield9tqh in #4142
  • refactor(cli,ironfish): Encapsulate nullifier set and remove duplicate db by @rohanjadvani in #4054
  • Create WalletNode to start standalone wallet by @danield9tqh in #4144
  • feat(ironfish): Remove wallet specific config by @rohanjadvani in #4148
  • refactor(cli,ironfish): Node -> IronfishNode + IronfishNode -> FullNode by @rohanjadvani in #4149
  • refactor(ironfish): Move notes and nullifiers from db to blockchain by @rohanjadvani in #4147
  • fixes error message when database is ahead of node by @hughy in #4150
  • feat(ironfish): Add SDK method to create wallet node by @rohanjadvani in #4151
  • feat(ironfish): Move databases to migrator constructor by @rohanjadvani in #4152
  • uses WalletNode instead of FullNode in wallet:prune by @hughy in #4153
  • Clean up unnecessary wallet properties by @danield9tqh in #4145
  • feat: serialized transactions get block by @jowparks in #4158
  • feat(ironfish): Add connection retries to wallet node by @rohanjadvani in #4156
  • fixes error output in wallet rpc test by @hughy in #4160
  • refactor: rawTransaction slow tests re-generate valid transactions by @mat-if in #4154
  • feat(ironfish): Remove hosts store from wallet node by @rohanjadvani in #4161
  • throws error if wallet chainProcessor head not in chain by @hughy in #4162
  • fix: Allow test path patterns to be passed to test commands by @mat-if in #4155
  • Use Cargo resolver v2 by @andreacorbellini in #4163
  • adds owner to walletDb assets store by @hughy in #4140
  • refactor: Move genesis blocks into separate files by @mat-if in #4170
  • fix: migration import path changed by @mat-if in #4171
  • Refactor conditional send transaction by @danield9tqh in #4172
  • does not reset account data if birthday not in chain by @hughy in #4167
  • rpc: mint details in chain/getTransaction by @hairtail in #4143
  • syncs pending transactions from event/onTransactionGossip by @hughy in #4174
  • Rahul/ifl 1478 add nonce to getassets rpc endpoint by @patnir in #4178
  • speeds up findFork for linear fast forward case by @hughy in #4183
  • adds limit to block events in remoteChainProcessor updates by @hughy in #4182
  • feat(cli,ironfish): Add SDK method to connect to wallet rpc client by @rohanjadvani in #4180
  • feat(cli,ironfish): Create a CLI helper to create a config client by @rohanjadvani in #4168
  • add owner field to follow chain stream and get assets RPCs by @mat-if in #4136
  • Export RpcTlsClient from SDK by @dguenther in #4138
  • Add owner field to mint description by @mat-if in #4146
  • feat: Mining manager checks mint owner validity when adding transactions by @mat-if in #4165
  • sets createdAt to chain head for new accounts by @hughy in #4191
  • feat(cli,ironfish): Add wallet:start by @rohanjadvani in #4190
  • fixes account import if wallet not conneted to node by @hughy in #4196
  • getAccountsStatus returns undefined headInChain without node by @hughy in #4198
  • Rahul/ifl 1497 add disablewalletsync to config by @patnir in #4194
  • feat(ironfish): Add fallback logic if wallet node is called for full node by @rohanjadvani in #4199
  • feat(cli,ironfish): Check running context in start and wallet:start by @rohanjadvani in #4202
  • Expose the asset ownership information through the RPC layer by @andreacorbellini in #4181
  • fix(ironfish): Check for node client in create by @rohanjadvani in #4203
  • MintDescription: make transferOwnershipTo a Buffer to be consistent with owner by @andreacorbellini in #4195
  • initializes chainProcessor in load by @hughy in #4205
  • chain/broadcastTransaction does not throw error if network not ready by @hughy in #4179
  • feat(cli,ironfish): Revert CLI / SDK changes for standalone wallet by @rohanjadvani in #4206
  • Remove libuv-monitor from SDK by @dguenther in #4207
  • Hotfix 1.7.1 staging master conflicts merge by @jowparks in #4213
  • reject blocks containing transactions with an incorrect version by @mat-if in #4210
  • adding information to readme about cli docs on the website by @patnir in #4177
  • bump version for release (1.8.0) by @jowparks in #4215
  • staging -> master (1.8.0 release) by @jowparks in #4214

New Contributors

Full Changelog: v1.7.1...v1.8.0

v1.7.1

09 Aug 00:10
226715c
Compare
Choose a tag to compare

This release fixes an OOM issue with wallet rescanning

What's Changed

  • hotfix to address OOM errors during wallet scanning by @hughy in #4186
  • bumps versions for hotfix 1.7.1 by @hughy in #4188

Full Changelog: v1.7.0...v1.7.1

v1.7.0

01 Aug 04:19
b240df1
Compare
Choose a tag to compare

RPC Breaking Changes

  • #4084 chain/getBlock RPC returns 404 if header is missing instead of 400. chain/getBlock RPC returns 404 if block for header is missing instead of 400

  • #4117 chain/getAsset RPC returns 404 if assets is missing for id instead of 400

  • #4105 chain/broadcastTransaction RPC now attempts to add a transaction to the mempool as well as broadcast it

  • #4120 wallet/sendTransaction RPC no longer fails if the node is not connected to any peers

SDK Breaking Changes

  • #4102 removes WorkerPool.verify and Transaction.verify. Use WorkerPool.verifyTransactions (Typescript) or verify_transaction / batch_verify_transactions (Rust) instead.

  • #4125 Changes Node constructor to take a AssetsVerifier object instead of a VerifiedAssetsCache

  • #4112 Removes onTransactionCreated callback from Wallet class. Removes reference to memPool from Wallet class

  • #4094 Makes Verifier.verifyMints, Verifier.verifyBurns and Verifier.verifyInternalNullifiers static functions. Makes Verifier.verifyCreatedTransaction function static and take consensus as a parameter

  • #4088 PeerNetwork no longer adds a transaction to a wallet automatically but instead wallet listens to PeerNetwork.onTransactionGossipReceived

  • #4081 node property is removed from RpcMemoryClient and RpcMemoryClient now takes a Router object in the constructor instead of a Node

  • #4071 Router class is separated into Router and Routes

  • #4070 All RPC route handlers now take an optional Node class

  • #4099 Removes the onBroadastTransaction property from the Wallet class

  • #4097 wallet.connectBlock and wallet.disconnectBlock method signatures changed to accept a WalletBlockHeader (hash, previousBlockHash, sequence, timestamp) and a list of WalletBlockTransaction (transaction, initialNoteIndex). The Wallet.chainProcessor property changed from an instance of ChainProcessor to RemoteChainProcessor

  • #4126 Wallet constructor no longer takes a Blockchain instance, no longer has a chain property

  • #4128 wallet.post returns Promise<{ transaction, accepted, broadcasted }> instead of Promise<Transaction>

Other changes

  • #4132 Fixed a bug with checking the result of transaction proof verification

What's Changed

New Contributors

Full Changelog: v1.6.0...v1.7.0

v1.6.0

18 Jul 16:32
e5551dc
Compare
Choose a tag to compare

Notable changes

Verified assets will be displayed in green with a checkmark on the output of commands like wallet:balances or wallet:assets. The information about whether an asset is verified or not can also be retrieved through the RPC interface.

Breaking changes

  • #4061 changes the way that the SDK's RpcClient calls broadcastTransaction from client.broadcastTransaction to client.chain.broadcastTransaction

What's Changed

Full Changelog: v1.5.0...v1.6.0

v1.5.0

05 Jul 23:54
e27a127
Compare
Choose a tag to compare

Notable Changes

This release includes our transition to blstrs library, which gives a large performance increase in both transaction creation and transaction verification.

What's Changed

Full Changelog: v1.4.0...v1.5.0