Below is a list of Hive-related programming issues worked on by BlockTrades team during the last few weeks:
Hived work (blockchain node software)
We finished implementing and testing the following hardfork 25 changes:
New operation and associated API calls to convert Hive→Hive dollars (HBD) as a means of improving upside pegging of Hive dollars. For more information, see @blocktrades/proposed-hardfork-change-to-stabilize-hive-dollar-s-tracking-of-usd-value
Hive dollars must be stored in a savings account to earn interest. For more information, see: @blocktrades/proposal-to-make-hbd-interest-payable-only-to-savings-accounts
Completed testing and created examples demonstrating functioning of new curation reward rules
New unit tests: https://gitlab.syncad.com/hive/hive/-/merge_requests/195
Fixed small issue that caused vote expiration to happen one block later than it should
Allow votes on posts after they have paid out (votes once again allowed on posts older than 7 days)
We also reviewed @howo support for recurrent transfers in HF25 and expect to merge those changes in tomorrow.
Other work on hived
Removed support for COMMENT_CONTENT_SUPPORT
Improved reporting and debugging capabilities of unit tests
Allow running a subset of the entire suite based on a filter
Updated get_config API call with new configuration variables
Proposal ids are now reported by proposal-pay virtual operation
Clear the memo key of hive.fund as requested by @smooth
Fix the version of hived reported when SMTs not enabled
Fix a problem with static builds and libreadline
Currently we’re using C14 for the hardfork. We tested with C17 and found one bug, which we fixed, but decided to delay making C17 the standard version for builds since we’re getting close to hardfork time. After the hardfork, we’ll likely move to C17 or C++20 for future development.
Hivemind (2nd layer applications + social media middleware)
Fixes and improvement to community mute functionality
Fixed pagination of bridge.list_community_roles
Modular hivemind
We’re making solid progress on modular hivemind, especially with regard to fork resolution handling. It looks like we’ll be able to avoid the need for a C extension to postgres and can instead rely on a “SQL-only” solution using “shadow tables” to save and restore changes to the tables that store data that can be changed when hived switches to a different micro-fork.
Condenser
We made several fixes to condenser and also reviewed some new features by @quochuy and @jpphotography.
Upcoming work
Hived code freeze and launch of testnet
We plan to merge in the remaining hived code changes (a few minor fixes + recurrent transfers support) tomorrow, then assist in launch of testnet on Wednesday.
We’ll test for two weeks, then hopefully be ready to merge the release candidate into the master branch, at which point we’ll give exchanges at least 30 days notice to update.
So if no problems, we can expect the hardfork in about six weeks from Wednesday.
Test latest hivemind changes
We’ll be running a full sync of hivemind with the latest changes, then test real world performance in a production environment on api.hive.blog, followed by a production release to the API nodes next week if no problems are found.
SQL Account history plugin for hived
We plan to complete the changes to the SQL account history plugin that pushes data to postgres (eliminating the need for hivemind to pull the data via RPC calls) in the new couple of days.
After the plugin changes are completed, we’ll run a simultaneous replay of hived with a full sync of hivemind to measure the speedup, and see if it matches our expected improvement in hivemind full sync time (we expect 2 days versus the current 4 days required).