Releases: iron-fish/ironfish
v0.1.42
What changed
Snapshots
Service command to create and upload chain snapshots
The service:snapshot
command zips the chain database and uploads it to an S3
bucket. A manifest file indicates the block sequence of the snapshot and the
creation time of the snapshot.
CLI command to download a chain snapshot
The chain:download
command will download a chain database snapshot and replace
a node's database. This allows nodes that are far behind the head of the chain
to sync more quickly by downloading a pre-synced chain.
> ironfish chain:download
Download 42.57 GB snapshot to update chain head from block 1 to 124125?
Are you sure? (Y)es / (N)o: Y
Downloading snapshot from https://d1kj1bottktsu0.cloudfront.net/ironfish_snapshot_1659661487895.tar.gz
Downloading snapshot: [░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░] 1% | 428.41 MB / 42.57 GB | 38.06 MB/s | ETA: 17m 31
Migration dry run support
Developers writing database migrations can use the dry run feature to test
migrations without affecting the database.
Disallow importing the same account twice.
Importing an account multiple times and affects node performance by requiring
each note to be decrypted multiple times.
Full changelog: v0.1.41...v0.1.42
v0.1.41
What's Changed
A big change in this release is the database migration system which will be used for many future features. Currently database migrations must either be run manually with ironfish migrations:start
or by running ironfish start --upgrade
or by setting the databaseMigrate
flag in config. This release does not have any long running migrations but in the future migrations may be long running. You WILL need to run ironfish migrations:start
or ironfish start --upgrade
or set databaseMigrate
after upgrading or else your NODE WILL NOT START.
There's also some changes to our transaction gossip. We are using block and transaction hashes to determine when to send to a peer instead of gossip message nonce. This is a step in the direction towards gossiping blocks and transactions by hash which will reduce bandwidth.
We now have the ability to batch verify transactions in Rust which will improve accounts and gossip performance. There's also some code cleanup and helpful CLI improvements. All changes can be seen below
CLI Improvements
- Add
nodeName
andblockGraffiti
to debug command by @drunkensiberia in #1862 - Add
nodeName
andblockGraffiti
to status command by @drunkensiberia in #1863 - Add new
renderSpan()
to render time to human text by @NullSoldier in #1878 - Display options extend from
CliUx.ux.table
by @hairtail in #1855 - Enable fullUnicode rendering for blessed by @drunkensiberia in #1876
Batch Verify Transactions
Gossip
- Replace gossip nonce filter with seen transaction filter by @danield9tqh in #1865
- Create
GetCompactBlock
request and response messages by @dguenther in #1856 - Add handler for
GetCompactBlockRequest
by @dguenther in #1859 - Remove filter for gossip nonces by @dguenther in #1890
Database Migrations
- Add Database Migration System by @NullSoldier in #1793
Developer Tools
- Add
IRONFISH_EXPOSE_GC
to expose garbage collector by @NullSoldier in #1880 - Add tools to bench mark segments of code by @NullSoldier in #1881
Code Cleanup
- Fix file name consistency of
RoundRobinQueue
by @NullSoldier in #1843 - Remove most of
Strategy
by @mat-if in #1841 - Remove unused
privateIdentity
param in IronfishSdk by @mat-if in #1885
Full Changelog: v0.1.40...v0.1.41
v0.1.40
What's Changed
The previous version v0.1.39 used a lot of additional memory because adding known transaction filters to each peer. This release reverts that change and adds a few more changes since the last release.
Full Changes
- Revert 'Replace gossip nonces with peer seen transaction filter' by @danield9tqh in #1851
- Remove TransactionSerde by @mat-if in #1825
- Remove some unnecessary vec allocations by @mat-if in #1830
- Show max heap sizes in debug command by @NullSoldier in #1839
- Change status memory to be relative to max heap by @NullSoldier in #1840
Full Changelog: v0.1.39...v0.1.40
v0.1.39
What's Changed
This is a smaller release. There are some improvements to the pool code, code cleanup (we've deleted rust-wasm). We are also making a change to how transactions are gossiped to see if that improves transaction propagation time and network usage for nodes.
Pool
- Require stratum client version by @NullSoldier in #1784
- FEAT: more miner status info by @hairtail in #1729
Bug Fixes / Code Improvements
- change metrics meter to exponential weighted moving average by @wd021 in #1646
- FEAT: Add expiration to accounts:transaction command by @hairtail in #1801
- Remove wasm code by @mat-if in #1814
- Remove unnecessary type aliases by @mat-if in #1815
- fix(ironfish): Remove
submittedSequence
check inaccounts:transactions
by @rohanjadvani in #1813 - Add default trait to memo for better memo ergonomics by @mat-if in #1820
Block and Transaction Gossip
- Create GetBlockTransactions request and response messages by @dguenther in #1788
- Add handler for GetBlockTransactionsRequest by @dguenther in #1795
- Add NewPooledTransactionHashes message by @danield9tqh in #1804
- Refactor Transaction gossip in PeerNetwork by @danield9tqh in #1817
- Fix message type on pooled transaction response by @dguenther in #1822
- Replace gossip nonces with peer seen transaction filter by @danield9tqh in #1829
Full Changelog: v0.1.38...v0.1.39
v0.1.38
What's Changed
We've made some improvements in the mining pool, transaction and block propagation as well as many bug fixes and CLI improvements! Read on for more info.
Mining Pool
We've made some improvements to the mining pool by adding a command to get the status from the mining pool with the command ironfish miners:pools:status -p pool.ironfish.network
. This shows things like subscribed count and number of clients connected to the pool
- adds cli command to get pool status by @hughy in #1704
- fixes sql error from missing space by @hughy in #1715
- Materialize subscribed count by @NullSoldier in #1717
- Add clients to status by @NullSoldier in #1718
Transaction + Block Propagation
We've merged a lot of code related to transaction and block propagation improvements. Those improvements won't be seen in this release since the feature is not ready, but look forward to that code being used soon.
- Add new
Transaction.hash()
method to transactions by @danield9tqh in #1694 - Telemetry for network bandwidth usage per message type by @danield9tqh in #1691
- Upload peer lists to telemetry by @danield9tqh in #1720
- Track known block hashes on Peers by @dguenther in #1683
- Add
NewBlockHashes
message by @dguenther in #1737 - Replace transaction hashing method in mempool by @danield9tqh in #1740
- Add
NewBlockV2
message by @dguenther in #1745 - Create network message
PooledTransactionsRequest
for querying for transactions based on hash by @danield9tqh in #1747 - Log transaction propagation to telemetry by @danield9tqh in #1734
- Create network message
PooledTransactionsResponse
for responding to transaction hash query by @danield9tqh in #1752 - Handle
PooledTransactionRequest
by @danield9tqh in #1756
CLI Improvements
We've made some usability improvements to CLI commands notably adding progress bar to the long running accounts:rescan
command and fixing the progress bar for chain:export
.
- Always show syncer progress if not synced by @NullSoldier in #1719
- Fix
chain:export
progress bar by @vchs1v in #1712 - Enable telemetry as part of testnet command by @NullSoldier in #1760
- Minor rescan improvements by @NullSoldier in #1766
- Abort rescan if aborted after waiting for head by @NullSoldier in #1772
- Fix rescan to scan to chain head if null processor by @NullSoldier in #1774
- Improve accounts:rescan CLI command UX by @NullSoldier in #1776
Code Cleanup / Bug Fixes
Some users were seeing Node already in use
messages even when a node was not running. That has been changed to surface underlying DB errors that may now show up instead. Also adding a potential fix for noteToNullifiers map
error that some users encounter.
- Delete old open api files by @NullSoldier in #1698
- feat(ironfish): Move note decryption when syncing transactions to worker pool by @rohanjadvani in #1708
- Remove
.entires()
call on iterating a map by @NullSoldier in #1733 - Update README with information about preferred installation methods by @mat-if in #1753
- Update
accountsToRemove
map inminedBlocksIndexer
by @mat-if in #1761 - fix(ironfish): Add mutex for sending transactions by @rohanjadvani in #1762
- Properly catch and surface leveldb corruption errors by @NullSoldier in #1763
- Add Rpc prefix to all Rpc types by @NullSoldier in #1765
- Spelling and Grammar fixes of Markdown files by @hamza-siddiq in #1759
- Clamp telemetry floats to 0 by @NullSoldier in #1769
- Tests for
TimeUtils
by @vchs1v in #1742 - Use built-in no-unused-expressions lint by @mat-if in #1773
- Make blockchain iteration return buffer hashes by @NullSoldier in #1771
Full Changelog: v0.1.37...v0.1.38
v0.1.37
Notable Changes
We've done a lot of work to stratum, and introduced a stratum protocol version. This will require you to upgrade your miner by the next major release or you will no longer be able to connect to the ironfish pool.
A big thank you to our external contributors like @wd021, @krompets, @rpanic, @hamza-siddiq, and @hpool-dev
What's Changed
- Add a better description for
accounts:balance
command in --help #1599 - Replace
bfilter
with@ironfish/bfilter
#1598 chain:forks
now shows graffiti, proper spacing for some columns #1606- Added test for
accounts:publickey
@krompets #1626 - Updated fuse.js for ironfish-graph-explore @hamza-siddiq #1580
- Added
ironfish status
test @krompets #1644 - Log when syncing does not start from orphan blocks #1642
- Small test script cleanup @wd021 #1647
Worker Pool
- Remove
lastJobId
from worker pool #1605 - Fix dropping transactions because of larger blocks by increasing worker pool saturation size #1608
- Add a round robin queue to the worker pool #1607
- Fix not properly stopping syncer on node close #1660
- Rename
accounts:publickey
toaccounts:address
#1658
Peer Network
- Send known peers in peer list message #1685
RPC
- Stabilized and made TLS encryption the default wheen using the RPC layer over TCP #1581, #1584, #1585, #1565, #1575, #1589, #1592, #1591,
- Fixed RPC messages being dropped by adding a message buffer to the RPC adapters #1614
Pool & Mining
- Record the transaction hash in the payouts table #1586
- Adds a config
poolPayoutExpirationSequenceDelta
option to change payout transaction expiry #1587 - Fixed miner messages being dropped by adding a message buffer to the stratum server #1609
- Factored out class for discord, lark notifications #1623
- Don't accept miners without a remoteAddress #1631
- Add option to the number of miners from one IP address @rpanic #1553
- Add links to block explorer in webhook messages #1634
- Add timeout to reconnection #1635
- Adds more external notifications for the pool #1643
- Add verison to stratum handshake #1656
- Add stratum peer banning and management system #1659
- Add miner disconnected messsage to stratum #1674
- Resend stratum ban message on reconnect #1689
- Add option to disable stratum server banning #1680
Wallet
- Check for minimum confirmed blocks when fetching balance #1571
- Add
--no-rescan
option onaccounts:import
by @wd021 #1594 - Batch jobs to fetch unspent notes #1604
- Added new
accounts:notes
andaccounts:transactions
commands by @wd021 #1086 - Wallet should accept transaction regardles of mempool #1624
- Add
depositAll
command @wd021 #1487
Full Changelog: v0.1.36...v0.1.370
v0.1.36
Notable changes
"Hosted Node" points will now only be counted for nodes running the latest version, with a 1 week grace period. This means that if you are running a node with version below 0.1.36, you have 1 week to upgrade to 0.1.36 to continue gaining points for the "Hosted Node" category.
For those of you hosting a pool: A new flag has been added --balancePercentPayout
which will override the poolBalancePercentPayout
config setting. This new CLI flag functions as an actual %, so for example miners:pools:start --balancePercentPayout=30
will payout 30%. The goal is to allow pools to update to this correct logic without causing unexpected changes. poolBalancePercentPayout
will either be fixed or deprecated in a future release.
What's Changed
- Add abstract IronfishClient by @hughy in #1448
- Refactor MemoryClient by @danield9tqh in #1450
- Remove dead code in RPC layer by @danield9tqh in #1451
- Combine MemoryAdapter and MemoryClient functionality by @danield9tqh in #1453
- fix(ironfish): Use
tx
object when updatingnoteToNullifier
map by @rohanjadvani in #1459 - add flag to override pool balance payout percentage by @danield9tqh in #1491
- Use bigint division in mining pool by @danield9tqh in #1495
- pass down logger in mining code by @danield9tqh in #1492
- Add logs to mining pool by @danield9tqh in #1497
- feat: implements TCP client using native net module by @hughy in #1463
- fix: removes default createRootLogger from RPC adapters and clients by @hughy in #1498
- FEAT: support lark message by @hairtail in #1431
- Fix incorrectly kicking peers if we have the TX by @NullSoldier in #1505
- Revert "fix: removes default createRootLogger from RPC adapters and clients" by @hughy in #1504
- Add test for blocks:show command by @vchs1v in #1460
- fix: don't log 'failed to connect' in TCP client if connection successful by @hughy in #1507
- Remove docker-compose files by @dguenther in #1513
- Add fallback mined block url if terminal doesn't support hyperlinks by @vchs1v in #1454
- Add: TLS. Pin version. Integrity by @kim0 in #1483
- exportChain code coverage by @AmberKiso in #1501
- Update fuse.js by @hamza-siddiq in #1510
- Delete disconnecting peers for non acceptable tx by @NullSoldier in #1517
- Add ability to log to JSON in the console by @danield9tqh in #1506
- Pool database: Add index on createdAt for share table by @mat-if in #1516
- Reset chainProcessor hash if index head not found in database by @deekerno in #1555
- Lower the block sync amount from 100 to 20 by @mat-if in #1557
- small text updates by @wd021 in #1543
- Move max upload in syncer to flag by @NullSoldier in #1559
- Remove redundant
sendTo
function by @danield9tqh in #1560 - Remove whitelist from Syncer by @danield9tqh in #1568
- remove unused onKnownPeersChanged by @danield9tqh in #1570
- feat: adds a message buffer to the stratum client by @hughy in #1569
- feat: implements secure adapter and client for TLS over TCP by @hughy in #1508
- fix: transaction errors & account balance issues by @wd021 in #1537
- feat(ironfish): Add config variable for minimum block confirmations by @rohanjadvani in #1566
- Bump up the default batch size by @mat-if in #1573
New Contributors
- @hughy made their first contribution in #1448
- @hairtail made their first contribution in #1431
- @vchs1v made their first contribution in #1460
- @kim0 made their first contribution in #1483
- @hamza-siddiq made their first contribution in #1510
Full Changelog: v0.1.35...v0.1.36
v0.1.35
What's Changed
- Add index for mined blocks (@deekerno in #1189)
- Adjust miners:mined RPC route to use the index (@deekerno in #1239)
- Reset index when running
ironfish reset
command (@deekerno in #1433) - "Deleted transactions" log should now only display if transactions are actually removed (@mat-if in #1432)
- Speed up transaction merkleHash function (@dguenther in #1389)
- Improve counting of mining pool clients, and properly dispose of clients that error out (@mat-if in #1442)
- Revert change to new RPC TCP server (@dguenther in #1434)
Full Changelog: v0.1.34...v0.1.35
v0.1.34
What's Changed
- Disconnect from peers who send too many unwanted transactions (@lwisne in #1383)
- Check worker pool saturation before validating transactions (@mat-if in #1357)
- Remove
enableNativeTcpAdapter
flag and switch to native TCP adapter (@danield9tqh in #1397)
Full Changelog: v0.1.33...v0.1.34
v0.1.33
What's Changed
- refactor(cli): Fix typo when starting miner by @rohanjadvani in #1299
- feat(ironfish): Bump down log level for non-buffer messages by @rohanjadvani in #1298
- If there is no default account on startup, create one by @danield9tqh in #1324
- Fix incorrect registered graffiti error by @deekerno in #1325
- Fix deposit --expirationSequence flag by @danield9tqh in #1329
- Sync transactions counts transactions in buffer instead of blocks by @mat-if in #1330
- Drop transactions when syncing sooner by @leanthebean in #1353
- Add a try-catch around new block creation by @dguenther in #1351
- memPool checks for duplicated nullifiers when adding transactions by @mat-if in #1352
Full Changelog: v0.1.32...v0.1.33