BetaNet Update: 2.5.0

BetaNet will be upgraded to version 2.5.0 on Monday 2/8 at 10:30am EST.

If you have your node set to automatic updates, you don’t need to do anything. It will automatically update to the newer version whenever that becomes available.

If this is not the case, you can update the binary, but aren’t required to do so.

Summary of Contained Changes in Upgrade:


This release contains performance improvements as well as lays the groundwork for future features.

  • Re-factoring and re-organization of code to improve performance
  • Minor improvement to memory utilization on relays
  • Initial groundwork for future compact certificate support
  • Pre-requisite work for co-chain support
  • Core block archiver support
  • Added AssetClosingAmount to ApplyData

This release will require a protocol upgrade.


  1. Agreement
    • Enhancement - propagate block proposals before transaction validation
    • Bug Fixes
      • Increase pending proposals queue
      • FilterTimeout is using binary ConsensusCurrentVersion instead of current protocol version
    • Bug Fix - fix omitempty for AssetCloseAmount
  3. Catchup
    • Enhancement - implement peer selector logic for catchup
  4. Config
    • Enhancement - create new consensus upgrade for AssetCloseAmount
  5. Network
    • New Feature - add core networking support for archivers
    • Enhancements
      • Improve network package error handling
      • Move peer.PrepareURL to net.SubstituteGenesisID
      • Optimize LimitedReaderSlurper memory utilization to improve relay memory usage
  6. Ledger
    • New Features
      • Add asset close to amount field to transaction
      • Top-level compact certificate support
    • Enhancements
      • App refactoring
      • Change block header to allow for multiple compact certs in the future
      • Implement base round account caching
      • Improve speed of BlockEvaluator eval() by pre-fetching account data, decreasing latency at various points during block accounting
      • Move ledger.dbPair to db.Pair
      • Remove all cow.mods usages outside of cow type
      • Replace accountDelta by basics.AccountData in ledger
      • Restructure ledger package: ledger/ledgercore
      • Switch from map of modified accounts to an array
      • Drop support for old-style Merkle txn root commitment
      • Faster computation of transaction ID and length
      • More precise CompactCertWeightThreshold
      • Speed up merklearray
  7. Goal
    • Enhancement - better missing argument error message for “goal asset destroy”
    • Bug Fixes
      • Avoid creating invalid consensus.json file
      • Fix insufficient fee error message formatting
  8. General
    • Enhancement - use msgp 1.1.47
    • Bug Fix - fix few minor log string formatting
  9. Logging
    • Enhancement - do not use deadlock.Mutex in logging
  10. Tests
    • Enhancements
      • Add BenchmarkWritingRandomBalancesDisk
      • Add BenchmarkVariableTransactionMessageBlockSizes
      • Add e2e test with some interesting state for Indexer tests.
      • Improve TestAccountsCanSendMoney e2e test
      • Indexer state test for keys creation/deletion
      • Add a non-utf8 Note test
      • Asset-close test case to tickle indexer
      • Close after rekey test data
      • Non-utf8 app value keys for test
      • Testing: make e2e_client_runner more robust
      • Tests for the compactcert package
    • Bug Fixes
      • Adjust timeouts in tests
      • Fix regression in BenchmarkReadingAllBalancesRAM and BenchmarkReadingAllBalancesDisk
  11. Tools
    • Enhancements
      • Implement a transaction load generator
      • Added Repeat configuration flag to support single invocation of load generator
      • Support large integers in tealdbg
    • Bug Fixes
      • Improvements/bugfixes for tealdbg to improve Chrome DevTools support
      • Fix tealdbg Accounts array
  12. Other
    • New Feature - systemd - run algod as a user service
    • Enhancements
      • Build - fix deprecation warning on sortition compilation
      • Build - new recipe for Devnet network
    • Bug Fixes
      • Pipeline - move check_golang_version check to fix deploying in travis
      • Pipeline - remove jq from check golang version script to fix deploy jobs in Travis

Protocol Upgrade

This release contains a consensus protocol upgrade, which implements the following spec:

Additional Resources

To update your current version of BetaNet to 2.5.0, run the following goal command:

./ -c beta -i -d <betanet-data-directory> -n

If you haven’t already done so, we also advise setting up a CRON job to automatically update your algorand networks. If you haven’t done this for BetaNet, you can follow the instructions here: