The Gridcoin Developers are proud to unveil our latest milestone release, version 4.0.2, codename Camilla. This release contains a lot of small fixes and optimizations as well as the long awaited side staking and stake splitting functionality! This is a leisure release, and not required for users. It is however recommended if you want the latest features and optimizations!
Overall users can expect a roughly 10-25% improvement in speeds when syncing the wallet. As always we continue to look for new ways to decrease sync time and reduce our need for snapshots.
This PR extends the work I have done in PR #1244 and implements the ability to "side stake" or distribute the CBR and research rewards to valid addresses. These addresses may be in the same wallet or any other valid Gridcoin address. The potential uses for sidestaking range from a person insuring that all reward go into the same address (and key) for easier backup and recovery to someone donating CBR and rewards to a charity, or sending it to their grandma! :). This functionality is very similar to Pinkcoin.
The PR adds the following additional conf file parameters...
You can specify multiple sidetake entries, just like addnode or connect. Note that the total number of ouputs for the coinstake will be limited to 8 in V10, and vout must be empty, so that gives 7 usable outputs. One must always be reserved for the actual coinstake output (return), so that leaves up to 6 usuable outputs for rewards distribution.
Note that the total of all of the percentages can add up to less than 100%, in which cases the leftover reward will be returned back on the coinstake(s).
Also with side staking we have stake splitting, which enables users to optimize their UTXOs automatically when they stake. Jim describes how it works in this PR:
This PR implements three conf file parameters:
enablestakesplit=1 will enable the automatic splitting of UTXO's in the coinstake transaction (stake outputs). Zero is the default (disabled).
stakingefficiency=xx is an integer that specifies the desired staking efficiency. This is constrained by the code to be between 75% and 98%
minstakesplitvalue=xxx is an integer that specifies the minimum UTXO size desired post split to provide a secondary control on UTXO size. If difficulty drops and a high efficiency is specified, the efficiency alone may split UTXO's into amounts smaller than the user desires. This will prevent that from occurring. If a user specifies less than 800 GRC, then the code uses 800 GRC. Note that the stake splitter uses a 160 block averaging interval for calculating the difficulty to smooth out the difficulty swings.
So to summarize, users can enable side staking in their wallets by adding the line
enablesidestaking=1 to their config files. To add addresses to side stake to, simply add another line for each side stake entry like so
To enable stake splitting in your wallet, add the line
enablestakesplit=1 to your config. This will enable default splitting at 90% efficiency. To change the efficiency value, simply add another line with
stakingefficiency=xx where "xx" is a percentage (between 75 and 98).
Note that there is already development work underway to allow users to define their side staking or splitting preferences from within the wallet. Currently the functionality is enabled through config flags only. Note that changing your config will require a wallet restart to use the new settings!
Download the update from GitHub here.
Changelog for the 4.0.2 release:
Add rainbymagnitude RPC command #1235 (@Foggyx420). Add stake splitting and side staking #1265 (@jamescowens). Detect and block Windows shutdown so wallet can exit cleanly #1309 (@jamescowens). Add message support to sendfrom and sendtoaddress #1400 (@denravonska).
Configuration options are now case insensitive #294 (@Foggyx420). Update command in beaconstatus help message #1312 (@chrstphrchvz). Improve synchronization speeds: Refactor superblock pack/unpack #1194 (@denravonska). Optimize neuralsecurity calculations #1255 (@denravonska). Reduce hash calculations when checking blocks #1206 (@denravonska). Make display of private key in beaconstatus OPT-IN only #1275 (@Foggyx420). Store Beacon keys in Wallet #1088 (@tomasbrod). Use default colors for pie chart #1333 (@chrstphrchvz). Show hand cursor when hovering clickable labels #1332 (@chrstphrchvz). Update README.md #1337 (@Peppernrino). Fix integer overflow with displayed nonce #1297 (@personthingman2). Improve application cache performance #1317 (@denravonska). Improve reorg speeds #1263 (@denravonska). Update Polish translation #1375 (@michalkania).
Remove expired polls from overview page #1250 (@personthingman2). Fix plural text on block age #1304 (@scribblemaniac). Fix researcher staking issue if your chain head was staked by you, #1299 (@denravonska). Fix incorrect address to grcpool node #1314 (@wilkart). Do not replace underscores by spaces in Qt Poll URLs #1327 (@tomasbrod). Fix scraper SSL issues #1330 (@Foggyx420).
Remove or merged several RPC commands #1228 (@Foggyx420): newburnaddress, removed. burn2: Removed. cpid: Merged into projects. mymagnitude: Merged into magnitude. rsa: Removed, use magnitude. rsaweight: Removed, use magnitude. proveownership: Removed. encrypt: Removed. Remove obsolete POW fields from RPC responses #1358 (@jamescowens). Remove obsolete netsoft fields for slight RAM requirement reduction #1336 (@denravonska). Remove unused attachment functionality #1345 (@denravonska).
Thanks as usual to our developers for this milestone leisure release. Thanks also to our dedicated testers, who have my gratitude for ensuring a smooth release.