BetaNet Update: Version 2.1.0

We are planning to upgrade BetaNet to version 2.1.0 on Wednesday August 5, 2020 10:30AM EDT.

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. Given that this is a protocol upgrade release, this upgrade is required.

Summary of Contained Changes in Upgrade:

Highlights

  • Stateful Smart Contracts: Algorand Smart Contracts (ASC1) offer the foundational attributes of security, scale, and decentralization found in Algorand’s Layer-1 protocol, allowing developers to take advantage of the network’s speed, cost-effectiveness, and simplicity. Enabling complex governed transactions with simplified tools that can build a wide range of applications, and removing the technical barriers that undermine blockchain adoption. Algorand’s Smart Contracts are highly flexible, reliable in that they are executed on a tamper-proof (trustless) network providing the transparency needed, with error-free, immutable, and accurate applications.
  • Rekeying Support: Algorand’s Rekeying offers a seamless, easier experience for users and custody providers by allowing flexible changes of Private Spending Keys anytime without changing Public Addresses, giving Public address more continuity, and reducing operational overhead with the changes of Private Spending Keys.
  • Fast Catchup: Fast Catchup is a new feature and will rapidly update a node using catchpoint snapshots. A new command on goal node is now available for catchup. The entire process should sync a node in minutes rather than hours or days.

Changes

  1. General
    • New Feature - Stateful Smart Contracts
    • Enhancements
      • add txn.ForeignAssets field
      • update stateful TEAL docs
      • allow substring ops to return an empty string in TEAL
      • disallow old TEAL versions for ApplicationCall transactions, disallow groups containing {Apps, RekeyTo} and v0/v1 TEAL
  2. Agreement
    • Enhancement - remove deprecated proposal LowestOutput
  3. Catchup
    • New Features
      • Fast Catchup support
      • add CatchpointDump utility
    • Enhancements
      • move timeout to config and make more restrictive
      • expect test for fast catchup
    • Bug Fixes
      • avoid ledger calls during catchpoint catchup
      • handle stopping and aborting in catchpoint catchup service
  4. Config
    • Enhancements
      • restructure config package to use reflection
      • add EnableDeveloperAPI configuration flag (#1109)
    • Bug Fix - automatic DNSBootstrapID for BetaNet
  5. Goal
    • New Features
      • add goal app info for inspecting app properties
      • add rekey multisig support for goal
    • Enhancements
      • make account changeonlinestatus online flag optional
      • unify txFilename and outFilename vars usage
      • update goal documentation for multi-arg optional commands
      • reformat some of the short commands descriptions
      • add created/opted in apps to goal account list
    • Bug Fixes
      • blank reserve address defaults to creator
      • Fix typo in goal clerk option disassesmble
      • typos in goal help (#1133)
      • goal inspect failed to process a rekeyed transaction (#1300)
  6. Ledger
    • Enhancements
      • refactor account update locking
      • drop legacy ledger storage
      • add reencoding database accounts support
      • add blocks header to the header cache
      • add comments around the accounts database upgrade procedures
      • remove unused GetRoundTxIds from ledgerForEvaluator interface
      • optimize accountsUpdateBalances implementation
      • optimize accounts totals updates
      • improve trie failures warning message formatting
      • implement database versioning support
      • avoid warning messages on expected long transactions
    • Bug Fix - fix rare synchronization issue in accountUpdates
  7. Network
    • Enhancement - improve network connectionPerformanceMonitor performance
  8. REST API
    • Enhancements
      • mark the in-body parameter as binary
      • merge ApplicationLocalStates and ApplicationLocalState (#1254)
      • change constant values of DeltaAction
      • add additional type information to teal programs in spec (#1276)
      • added ‘pretty’ parameter to all API endpoints to pretty print the JSON response
    • Bug Fixes
      • add AuthAddr to accountInformation
      • fix StateDelta conversion in Dryrun
      • don’t include key-value in response if it is null (#1268)
      • add missing enum option to tx-type parameter in spec
      • base64 encode binary keys/values in json TealKeyValue, EvalDeltaKeyValue model
      • add eval delta to PendingTransactionByID (#1294)
      • do not save loop variable addresses in conversion routines
  9. Telemetry & Logging
    • Enhancement - algod telemetry config location logging
    • Bug Fix - don’t override Channel if already set
  10. Tests
    • Enhancements
      • unit tests for v2 handler functions (#1111)
      • update msgp auto-generated code to add headers
      • move unused allBalances function to testing
      • FastCatchup - add unit testing for ledgerFetcher
      • add e2e teal/compile test
      • improve TestConnMonitorStageTiming benchmark performance
      • stateful teal expect test
      • improve dryrun and tealdbg compatibility
      • tealdbg: use round number and latestTimestamp from dryrun-req if available
      • add test for when the user does not provide a correct application json
      • expect test for goal account dump
      • stateful teal test app info
      • add a unit test for catchpointWriter
      • disable the deadlock detection on TestArchivalCreatables
      • add e2e upgrade test for application over REST & Gossip (#1037)
      • add documentation for test env vars for running the expect tests
      • refactor expect runners by creating a unified expect fixture
      • manual testing script for Gossip and TxSync
    • Bug Fixes
      • improve asset support in ping pong utility
      • fix sporadic TestCatchupOverGossip e2e test failure(s)
      • fixed error verifying recovered wallet in create wallet expect test
      • fixed bug in key registration teal test
      • fix random catchpoint catchup expect test case
      • fix random fails in TestCatchupOverGossip
      • fix TestTealCompile
      • fix e2e unit test data race
      • disable TestArchival unit test on linux-amd64
      • remove redundant ledger.close in TestArchivalCreatables
      • relax TestLedgerBlockHdrCaching rounds count
      • fix exit code race in dryrun expect test
      • disable deadlock detection on TestArchivalRestart and TestArchivalCreatables unit tests
      • merge issue with TestApplicationsUpgradeOver e2e test
      • teal version was incorrect in applications test
      • extend timeout for stateful teal test
  11. Tools
    • New Features
      • add rekey multisig support for algokey (#1238)
      • add generate-docs command to diagcfg (#1259)
    • Enhancements
      • parameter support for dispenser
      • allow updater to request any package with ‘gettools’ subcommand
    • Bug Fixes
      • better algoh parameter tunneling
      • fix tealdbg CDT url
  12. Other
    • New Features
      • new Jenkins pipeline implementation
      • ability to build docker image for BetaNet
    • Enhancements
      • run make fmt
      • add byteslice checking to the msgp decoder
      • update code to take advantage of byteslice allocbounding
      • fix contents of hashes file from packaging
      • reduce parallel testing in travis
      • add support for specifying go version in single place
      • remove code for generating releases page
      • test build packages on multiple architectures
      • add orphan entries to the algorelay check command
      • move transaction apply methods into their own package
      • update go-deadlock to use go modules
      • update upgrade path to v24
      • remove ignored sudo from Travis file
      • Update minor version number
      • TEAL: allow empty string literals
    • Bug Fixes
      • remove unused var in compute_branch_channel.sh
      • build packages script typo
      • fix incorrect asset error message when trying to overspend an asset
      • add license headers to dbgen generated files to fix make generate
      • fix path to gpg-fake script
      • fix package name
      • increase travis builtin vm.max_map_count (#1175)
      • only add the latest version to the rpm repository
      • fix deploy location for latest rpm package
      • add algod client health check to prevent node shutdown due to timeout in healthy node
      • update configure dev script to work with ubuntu 20.04 (#1201)
      • fix golang version specification to support 1.14
      • rename AppStateChage to AppStateChange
      • add duplicate check on ephemeral security group and key pair creation for buildhost
      • Fix TxnRoot for block 0
      • ensure ApplyData.EvalDelta is clear if applyEvalDelta fails
      • fix negative “tx surpassed expected deadline” messages
      • fix linux arm64 nightly build deploy due to golang install scoping
      • TEAL - fix txn and txna assemble and disassemble routines
      • TEAL: assembler error on branching behind last instruction

Protocol Upgrade

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

Other Notes

A database migration is included this release, which will add a one-time startup delay of 2-10 seconds. This is for re-encoding of the accounts database, if needed. Note: the database schema will remain compatible with the previous release.

Additional Resources

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

./update.sh -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:

https://developer.algorand.org/docs/run-a-node/setup/install/#updating-node

3 Likes

Great work, Algorand team!

Can’t wait to read more details !

What are the main changes introduced in this protocol upgrade?

The main change is the implementation of Stateful Smart Contracts, which should open up a lot of functionality.

This update is applied on the BetaNet network. However, the 32-bit ARM builds are delayed due to separate pipeline issues. Sorry for the inconvenience!

Is the fast catchup functional/seeded yet?
I’ve kept my betanet node off for quite a while - upgraded the node and syncing is the same as before so far. Catchpoint labels are created but I’m not seeing any differences in actual block fetch.
I tried starting a new node from scratch and saw the same thing.

We’ve just deployed the release. it will take ~12 hours before you could use the feature.

Documentation is now available for these new features on BetaNet! Expect ongoing updates and additions to these docs over the coming weeks. We also look forward to your feedback to help improve them during that time. Check out how to file issues and make contributions in our documentation contributing guide.

Main Documentation Updates:

7 Likes

Congratulations to the Team! Impressive!

2 Likes

Great job, much appreciated to have the docs quickly!

The 32-bit ARM binaries are now also available.

1 Like