TestNet Update Released (v0.1.26417 / 91953)

#1

So here’s the usual summary of the notable changes in this new release. Lots of fit & finish and performance & reliability… Some new / modified features managed to sneak in as well.

  • Many significant performance improvements with corresponding benchmark tests
  • Auctions are now independent instead of predefined sequence
  • Restored account / agreement telemetry events
  • Improved process lifetime management of kmd
    • Multiple instances of kmd for the same node are now prevented
    • A timeout can be specified to auto-shutdown kmd after being idle (-t #) where # is seconds, and 0 means never.
    • goal uses a 60 second timeout so kmd should generally not be running on most systems
    • kmd data files are now cleaned up more regularly (shutdown race condition fixed)
  • The REST clients we use internally (eg for goal) now handle algod and kmd restarting while in use
  • REST API returns a better error if blocks are not stored locally (on non-archival node)
  • Added an algod config flag to enable/disable deadlock detection - used to be enabled always, but has significant performance impact
    • TestNet builds now have it disabled by default, DevNet builds have it enabled
    • DeadlockDetection parameter added to config.json to override default
  • Added missing parameter name to goal wallet new
  • Added --noclean flag to goal network create to preserve output directories for debugging
  • Added default validation and versioning / migration to config.json
  • Many tests / fuzzers added around core agreement implementation
  • Fixed goal so importrootkey doesn’t treat duplicates as an error
  • Fixed backup/restore of installations if update fails.
  • We also now attempt to backup and restore genesis.json and wallet-genesis.id.
  • Improve goal account importrootkey reporting when importing duplicate key.
  • New Rewards / Earnings logic implemented
  • Fix: ensure signedtxns only have one of Sig or Msig
  • Fix: broken maxMultisig check
  • Fix: participation selection for going online now only considers the account in question
  • Fix: goal clerk send for wallets with passwords (don’t prompt for passwords for unencrypted wallets)
  • Add flag to importrootkey that potentially creates an unencrypted wallet
  • Prevent CPU DoS via bundles with many votes
  • Remove Google login from dispenser - makes it possible for users without Google accounts to use the dispenser (CAPTCHA is still required)
  • Speed up kmd key derivation - significantly speeds up transaction signing
  • Create a incoming/outgoing network message filtering (work-in-progress to improve throughput by limiting duplicate messages)
  • Add goal support for multiple wallets / wallets with passwords
  • Fix: change kmd REST API to return application/json
  • Fix: replace useless AccountNew error when node not running. We now report something like “Error determining kmd folder (exit status 1). Ensure the node is running in datadir.”
  • Proposing next block can now start faster - using just the previous block header
  • Fix: avoid caching REST clients and genesis ID in libgoal client - in case either process restarts while under control of a long-lived client.
  • Fix: Make kmd swaggerfile have correct parameter names
  • Removed support for loading phonebook.json from bin dir
  • Fix: default BaseLoggerDebugLevel was never used and had wrong default
  • Fix: Removed unused / obsolete config.json parameters
  • Synchronize markdown docs for dev site and goal command docs.
  • Remove update.sh support for a default datadir
  • Changed update.sh so -i (to ‘install’) ignores any current algod version, so we no longer need to delete algod first
  • Changed update.sh so if -n is used to request ‘no start’, this skips trying to install as a service
  • Completely remove auto-enabling of the service - this prevents unintended installs from automatically becoming services.
  • Add basic swagger documentation for kmd REST API
  • Add kmd wallet creation/mdk export to goal