Skip to content

Releases: iron-fish/ironfish

v0.1.31

07 May 14:57
4c3b5b9
Compare
Choose a tag to compare

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

v0.1.30

06 May 19:29
a034a37
Compare
Choose a tag to compare

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)
    • Allow ironfish deposit command to exit early if account doesn't have the required balance (@mat-if in #1271)
  • Fix rename of hash to block_hash in headBlocks (@danield9tqh in #1267)
  • Rename hash to block_hash in headDeposits (@danield9tqh in #1270)

Bugfixes

RPC-related changes

Performance

Code cleanup

Dependency changes

Development

v0.1.29

05 Apr 18:26
d6845e3
Compare
Choose a tag to compare

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

25 Mar 21:31
fe91206
Compare
Choose a tag to compare

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

17 Mar 22:01
f40f586
Compare
Choose a tag to compare

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

15 Mar 23:01
3899b92
Compare
Choose a tag to compare

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

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:

  1. 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.
  2. 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.
  3. 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

25 Feb 22:19
d752b4e
Compare
Choose a tag to compare

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

v0.1.24

18 Feb 23:21
1f3dc31
Compare
Choose a tag to compare

Summary

  • (#1036) Add telemetry status to status command
  • (#1038) Update telemetry and metrics intervals to 5m
  • (#1033) Properly pass peer network and metrics monitor to telemetry
  • (#1045) Change getStatus() RPC to use metrics monitor peers count

v0.1.23

17 Feb 00:23
0e9e22f
Compare
Choose a tag to compare

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

15 Feb 21:18
c9a493e
Compare
Choose a tag to compare

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)