Releases: iron-fish/ironfish
v0.1.31
This is a mandatory release that breaks backward compatibility with older versions. If you'd like to back up your accounts, please do so before upgrading to this version.
After updating, you should run ironfish reset
and delete the hosts.json
file in your ironfish data directory (defaults to ~/.ironfish).
What's changed
- Reduce bandwidth usage by converting network messages to use binary serialization (@dguenther and @rohanjadvani in #1215)
- Increase max transactions per block to 300 (@rohanjadvani in #1260)
- Reduce disk storage usage by converting database values to use binary serialization (@dguenther and @rohanjadvani in #1256)
- Increase search space for randomness to 2^64 (@mat-if in @1268)
v0.1.30
What's changed
CLI improvements
- Allow passing graffiti to
ironfish testnet
command (@mat-if in #1225) - Change "new work" logs to debug logs instead of info (@mat-if in #1233)
- Allow for case-insensitive hexadecimal account keys and addresses (@mat-if in #1257)
- Update faucet command to always expose error message (@mat-if in #1261)
- Make difficulty configurable when generating a genesis block (@dguenther in #1269)
Phase 2-related features
- Add graffiti to telemetry API payload (@mat-if in #1202)
- Add CLI service for watching for transactions with a given view key (@mat-if and @NullSoldier in #1181)
- Add previous block hash to return value of transaction-watching command (@NullSoldier in #1263)
- Add
ironfish deposit
CLI command (@mat-if in #1232) - Fix rename of hash to block_hash in headBlocks (@danield9tqh in #1267)
- Rename hash to block_hash in headDeposits (@danield9tqh in #1270)
Bugfixes
- Fix errors from telemetry serializing floats (@NullSoldier in #1231)
RPC-related changes
- Refactoring and improving RPC, IpcAdapter, and MemoryAdapter code (@danield9tqh in #1207, #1211, #1217, #1223, #1224, #1226)
- Start replacing node-ipc server with native node for TCP functionality (@danield9tqh in #1214)
Performance
- Serialize worker pool messages as binary (@rohanjadvani, @deekerno, and @dguenther in #1155)
- Speed up transaction field accesses (@dguenther in #1241)
- Remove message size from worker pool message header (@rohanjadvani in #1213)
Code cleanup
- Refactor default dataDir in node and sdk (@danield9tqh in #1199)
- Remove unused strategy field from mempool (@rohanjadvani in #1240)
- Remove transaction fee worker pool job (@rohanjadvani in #1243)
- Remove workerPool from Transaction primitive (@rohanjadvani in @1242)
- Remove unneded async keywords (@mat-if in #1255)
Dependency changes
- Remove unused shrinkwraprs package (@dguenther in #1200)
- Upgrade librustzcash (@mat-if in #1179)
- Upgrade minimist to fix potential security issue (@dguenther in #1230)
- Upgrade to published version of sqlite3 (@mat-if in #1234)
Development
- Adjust codecov requirements (@NullSoldier in #1221 and #1222)
- Update gitattributes to ignore certain line endings for certain file extensions (@mat-if in #1245)
v0.1.29
What's Changed
- Catch error events on the Pool's stratum TCP socket by @mat-if in #1179
- Improve json parse error checking by @mat-if in #1190
- Log hosts json parsing error as debug instead of warn by @mat-if in #1192
- Pool: Add total share count to discord message by @mat-if in #1193
- Fix CI build steps by @mat-if in #1195
Full Changelog: v0.1.28...v0.1.29
v0.1.28
What's Changed
- Fix issue with npm builds failing to fetch some dependencies #1157
- Fix pool payout discord message #1170
- Fix miner's showing higher than actual hashrate #1174
- Various code cleanup tasks and minor dependency version upgrades
Full Changelog: v0.1.27...v0.1.28
v0.1.27
What's Changed
- Fixed issues preventing users from starting their own mining pool. The mining pool now listens on 0.0.0.0 by default with the ability to customize the host
- Fixed issues with dependencies so they work with a newer version of node-gyp so users don't need to install python 2.7
v0.1.26
What's Changed (Major highlights)
- NPM Builds - you can now install Iron Fish with
npm install -g ironfish
- Mining pool support and mining refactor - read more below
- Many other changes, see the full changelog below
Community Contributions
- Add graffiti on issue creation form by @AmberKiso in #1091
- Blockchain test coverage by @AmberKiso in #1092
- Add syncing progress to status by @Kupuyc in #1083
- improving
accounts
command by @wd021 in #1089 - Faucet improvements (fix bug #961) by @wd021 in #1048
- Increase getConfig coverage by @AmberKiso in #1113
- Messages test coverage by @AmberKiso in #1055
- Fix default path of chain:export command by @Kupuyc in #1035
Full Changelog: v0.1.25...v0.1.26
Changes to the miner
We've completely rebuilt the miner from the ground up. The primary use for your average miner will not change at all, however there are some improvements to be aware of:
- Threads should utilize the CPU more efficiently. Previously, miners with many cores were noticing that their CPU usage was lower than expected. Now, threads should use more of the CPU as expected.
- Because of the above change, miners who have changed their batch size will want to revisit that number. CPU usage should stay high even with a lower batch size, and a lower batch size means faster switching to new work as it comes in. The default batch size should be effective for a wider range of miners.
- The default thread count when using
ironfish miners:start
will now utilize all CPU cores instead of just 1. This can still be changed with-t #
where # is the amount of cores you want the miner to use.
We are adding a simple mining pool
Due to a lot of the changes we wanted to make, we decided to build a simple pool that ships with the Iron Fish node. It was not intended to be fully featured, so pool operators will likely still opt to build one with more features (or extend from the one we ship). It will still serve as a good starting point and example.
If you are interested in running a pool (Note that this is not the same as mining from a pool!), you can start one as simply as ironfish miners:pool:start
. We recommend giving your pool a name with ironfish config:set poolName <name-goes-here>
prior to running the pool start command. The name is used to identify blocks your pool has mined using the graffiti on a block, as well as a memo in the payouts to miners. If you don't set a name, it will use the default of 'Iron Fish Pool'. For people with multiple mining machines, you can utilize the pool with disabled payouts with the --no-payouts
flag: ironfish miners:pool:start --no-payouts
.
Connecting to a pool
For miners interested in contributing to a pool, you can do so as simply as ironfish miners:start -p <ip-address-of-pool> -a <your-public-address>
. Note that the public address needs to be a valid public address, you can get yours with ironfish accounts:publickey
. This address is where the pool will payout your share of IRON.
Something to be aware of: blocks mined while connected to a pool will not utilize your graffiti, instead you will see something like Iron Fish Pool.38d7
, this is so that the pool can organize work between the miners without having the miners duplicate work. This won't have any negative effects, since Incentivized Testnet Phase 1 has ended.
Pool specifics
We opted to keep things fairly simple for now. Payouts will be done on a 2 hour interval, using 10% of the confirmed balance of the pool's account. The payout is then divided by the amount of shares submitted by the miners during that time period.
For example:
- Pool account confirmed balance: 100 IRON
- Miner 1 contributed 75 shares
- Miner 2 contributed 25 shares
Therefore:
- Payout total: 10 IRON
- Miner 1 payout: 7.5 IRON since they had 75% of the contributed shares during that time period.
- Miner 2 payout: 2.5 IRON since they had 25% of the contributed shares during that time period.
What is a share?
A share is a pool's version of a block. When mining from a pool, miners are given a target that is different from the actual block target. This target is usually much easier to find valid work with, so that miners will periodically tell the pool they found valid work, even if it isn't a valid block. This allows the miner to prove to the pool that they are contributing their share of work, and allows the pool to have a fairly accurate estimate of how much work each miner is contributing.
New config settings for pool
- poolName: The name that the pool will use in block graffiti and transaction memo.
- default: 'Iron Fish Pool'
- poolAccountName: The name of the account that the pool will use to payout from.
- default: 'default'
- poolBalancePercentPayout: The percent of the confirmed balance of the pool's account that it will payout
- default: 10
- poolPort: The port that the pool is listening for miner connections on.
- default: 9034
- poolDifficulty: The pool difficulty, which determines how often miners submit shares. Note that you can estimate how often a machine will submit shares by dividing this value by the machine's hashrate. Ex: 15000000000 / 25000000 = 600, so a machine with 25MH/s would be expected to submit a share on average once per 10 minutes.
- default: 15000000000
- poolAttemptPayoutInterval: The length of time in seconds that the pool will wait between checking if it is time to make a payout.
- default: 900 (15 minutes)
- poolSuccessfulPayoutInterval: The length of time in seconds that the pool will wait between successful payouts.
- default: 7200 (2 hours)
- poolRecentShareCutoff: The length of time in seconds that will be used to calculate hashrate for the pool.
- default: 600 (10 minutes)
- poolDiscordWebhook: The discord webhook URL to post pool critical pool information too
- default: ''
v0.1.25
What's Changed
- Allow config:edit to reference the config - #1039
- Fix hosts.json parsing error - #1056
- Remove unused transaction type from Rust code - #1057
- Add debug command output field to issue template - #1067
- Remove unused field in HostsStore - #1066
- Adjust CONTRIBUTING.md - #1068
- Allow for mempool info to be sent in telemetry - #1063 and #1070
- Debug command improvements - #1065 and #1075
- Return buffers from napi-rs code - #1064
- Status command improvements - #1072 and #1073
- Improve chain:forks command - #1071
- Fix undefined value when creating a block - #1059
- Submit chain head sequence to telemetry - #1076
- Properly propagate job error stack - #1080
- Make IpcAdapter.stop() destroy all sockets - #1081
Community Contributions
- Updates to documentation - #1052 (thanks @AmberKiso)
- Increase verifier test coverage - #989 (thanks @AmberKiso)
- Fix block syncer status - #1077 (thanks @Kupuyc)
- Sanitize input parameters for miners:mined - #1051 (thanks @AmberKiso)
v0.1.24
v0.1.23
What's Changed
- Update to latest napi-rs to fix BigInt usage issue - #1014
- Cleanup RPCClient routes to use enum instead of literals - #1013
- Move telemetry fields to tags to resolve high cardinality issues - #1026
- Put in a potential fix for latest rust NAPI issue with transactions - #1025
- Make telemtry poll metrics monitor instead of the other way around - #1029
- Add new node stats to telemetry system like peer count, and network traffic - #1030
Community Contributions
- Fix miners:mined getting stuck at 99% #994 (Thanks wd021)
v0.1.22
What's Changed
- Convert rust code from Neon to Napi-RS bindings - #947, #977
- Added new telemetry collection system to start collecting data, we will release the data publicly soon. Opt into telemetry using
ironfish config:set enableTelemetry true
- #966, #975, #979, #980, #981, #987, #991, #1005, #1006, #1016 - Added new peer list persistence system which stores peers locally which you have connected to. This will help connect to the network faster in the future. This is the first change in a long line of refactors coming to our Peer network system - #938
- Expanded
ironfish debug
now show all of your CPU models - #1003 - Removed references to captain from documentation - #1017
Community Contributions
- Migrated from deprecated cli-ux to #oclif/core - #969 (Thanks Kupuyc)
- Added install error help for when the user has the wrong python version - #985 (Thanks wd021)
- Migrated fully to @oclif/core - #984 (Thanks Kupuyc)
- Fixed tests on certain localizations that use
.
instead of,
for number separators - #974 (Thanks wd021) - Fixed a typo in our documentation - #1001 (Thanks blrhc)
- Fixed documentation telling users how to change logging levels - #1009 (Thanks wd021)