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.
- Performance Improvements and Bug Fixes: Note that there is a one time long startup time to re-encode the accounts database, which will take an additional few minutes to complete.
Changes
- 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
- add
- Bug Fixes
- merketrie prioritization cache
- update the suggested fee mechanism to meet the current transaction pool fee structure (#1376)
- eliminate nil map entries on Merkle trie cache
- Agreement
- Enhancement - remove deprecated proposal LowestOutput
- Bug Fix - prevent warning message for block assembly when catching up
- 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
- fix fast catchup processed/total account values swapped in status line
- slow down catchup while catchpoint file is being written
- New Features
- Config
- New Features
- add optional startup vacuuming for the balances database
- add CatchpointTracking to config file
- Enhancements
- restructure config package to use reflection
- add EnableDeveloperAPI configuration flag (#1109)
- Bug Fix - automatic DNSBootstrapID for BetaNet
- New Features
- 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
- New Features
- Ledger
- Enhancements
- improve client-side catchpoint catchup performance
- add vacuumming to the database upgrade process
- 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 Fixes
- fix rare synchronization issue in accountUpdates
- listCreatablesStmt is selecting 3 columns instead of 2
- avoid using encodedAccountsRange and replace with a single query
- extend ledger request timeout
- avoid redundant info message for replacing block 0
- Enhancements
- Network
- Enhancement - improve network connectionPerformanceMonitor performance
- 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
- add messagepack to produces list for endpoints which can produce messagepack
- 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
- Enhancements
- Telemetry & Logging
- Enhancement - algod telemetry config location logging
- Bug Fix - don't override Channel if already set
- 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
- add new rekeying tests
- add unit test TestConsensusUpgradeWindow
- enable creatables in ledger tests
- add a fuzzer to the merkletrie cache testing
- add assets and apps to ledger txn validate tests
- e2e test for rekeying before and after upgrade
- unit test for accountsNewRound creatables parameter
- e2e test: create+delete create+clear in 1 tx
- add some minimal documentation for the test directory
- REST API test script for /v2/applications
- added TestListCreatables to test ListAssets and ListApplications
- 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
- fix failing rekey test by keeping account total < 1 algo
- Enhancements
- Tools
- New Features
- Enhancements
- parameter support for dispenser
- allow updater to request any package with 'gettools' subcommand
- fetch balance from indexer for tealdbg
- Bug Fixes
- better algoh parameter tunneling
- fix tealdbg CDT url
- Bug Fix - disable deadlock detection on master
- 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
- update mule package deploy to use new agents syntax
- remove go version from Travis file (#1253)
- 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 ifapplyEvalDelta
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
- fix Makefile to work with Ubuntu 20.04
- fix package script go version failure
- New Features
Protocol Upgrade
This release contains a consensus protocol upgrade, which implements the following spec:
https://github.com/algorandfoundation/specs/tree/3a83c4c743f8b17adfd73944b4319c25722a6782
Other Notes
A database migration is included this release, which will add a one-time startup delay of a few minutes. This is for re-encoding of the accounts database, if needed. Note: the database schema will remain compatible with the previous release. Please plan your upgrade accordingly.