Releases: algorand/go-algorand
Algorand BetaNet 4.0.0
Overview
This release introduces consensus participation incentives natively in the Algorand Protocol. Payout percentages, Min/Max Balance requirements, validator behavior thresholds, and more can be found here.
What's New
- Ability for consensus participants to opt-in to incentives
- Automatic heartbeat functionality to help well behaving incentive-eligible nodes stay online
- Mimc opcodes to make it easier to build zero knowledge proof applications on Algorand
Protocol Upgrade
This release contains a protocol upgrade.
Changelog
Enhancements
- AVM: new teal opcodes for the MiMC hash function to support Zero Knowledge Proofs (#5978)
- Build(deps): bump golang.org/x/crypto from 0.29.0 to 0.31.0 (#6203)
- Catchpoints: Add onlineaccounts and onlineroundparamstail tables to snapshot files (#6177)
- Consensus: Consensus version v40, set major release to 4 and reset minor. (#6207)
- Eval: Feature/heartbeats (#6189)
- Refactor: replace experimental
maps
andslices
with stdlib (#6179)
Bugfixes
- Doc: voter balance version fix (#6205)
- Ledger: add callback to clear state between commitRound retries (#6190)
Other
Additional Resources
Algorand 3.27.0
Overview
This release provides performance improvements and network stability, as well as includes other enhancements and upgrades. Note that the AVM changes while present in the codebase, are in fact 'consensus-gated'; they will be available upon the next consensus upgrade.
Important Note: For performance reasons, we no longer report extra details for failed app transactions by default. This was useful if you were debugging a smart contract, but also had a significant processing performance impact. This behavior is still available if you use the developer API by setting EnableDeveloperAPI: true
.
What's New
- New block header API endpoint (to support reward-related queries)
- Improve performance and optimize networking
- Upgrade golang to 1.23
Changelog
Enhancements
- API: New algod endpoint
/v2/block/{round}/header
omits transactions and cert from response (#6163) - API: MaxTealSourceBytes to 512 kb (#6068)
- API: Add support for Private Network Access header preflight requests (#6089)
- AVM: Implement lsig size pooling (#6057)
- Build: Upgrade to Golang 1.23 (#6169)
- Build: Add automake to linux dependencies (#6138)
- Consensus: For Devnet and Betanet, support custom network upgrade delay (#6148)
- Docs: Update README.md to be more concise (#6099)
- P2p: upgrade libp2p (#6142)
- Performance: do not report extra details for failed app txns (#6171)
- Tools: heapWatch metrics imported into Prometheus/Grafana (#6147)
- Tools: add support for developing in OpenSUSE Tumbleweed (#6153)
Bugfixes
- AVM: Only update the bytec disassembleState for bytecblock opcodes (#6154)
- Ci: remove homebrew autoupdate deactivation from CircleCI (#6135)
- Network: handle p2p to ws messages propagation (#6156)
- Network: fix misplaced p2p received TX metric (#6144)
- Tests: Fix MaxConnectionsPerIP setting in agreement/gossip tests (#6173)
Protocol Upgrade
This release does not contain a protocol upgrade.
Additional Resources
Algorand BetaNet 3.27.0
Overview
This release provides performance improvements and network stability, as well as includes other enhancements and upgrades.
What's New
- New block header API endpoint (to support reward-related queries)
- Improve performance and optimize networking
- Upgrade golang to 1.23
Changelog
Enhancements
- API: New algod endpoint
/v2/block/{round}/header
omits transactions and cert from response (#6163) - API: MaxTealSourceBytes to 512 kb (#6068)
- API: Add support for Private Network Access header preflight requests (#6089)
- AVM: Implement lsig size pooling (#6057)
- Build: Upgrade to Golang 1.23 (#6169)
- Build: Add automake to linux dependencies (#6138)
- Consensus: For Devnet and Betanet, support custom network upgrade delay (#6148)
- Docs: Update README.md to be more concise (#6099)
- P2p: upgrade libp2p (#6142)
- Performance: do not report extra details for failed app txns (#6171)
- Tools: heapWatch metrics imported into Prometheus/Grafana (#6147)
- Tools: add support for developing in OpenSUSE Tumbleweed (#6153)
Bugfixes
- AVM: Only update the bytec disassembleState for bytecblock opcodes (#6154)
- Ci: remove homebrew autoupdate deactivation from CircleCI (#6135)
- Network: handle p2p to ws messages propagation (#6156)
- Network: fix misplaced p2p received TX metric (#6144)
- Tests: Fix MaxConnectionsPerIP setting in agreement/gossip tests (#6173)
Protocol Upgrade
This release does not contain a protocol upgrade.
Additional Resources
Algorand 3.26.0
Overview
This release adds experimental support for libp2p networking, a major advance for Algorand decentralization. We would like to emphasize that this support is in preview mode only, and not recommended for production use cases yet.
What's New
- libp2p networking support (experimental preview)
- AVM enhancements
- Mac OS X universal binary
Changelog
New Features
- Network: p2p traffic exchange for algorand node (#5939)
Enhancements
- AVM: Derive looser, but more principled, checks of txn max size (#6114)
- AVM: Provide access to some more block header values (#6107)
- AVM: Expose relevant incentive constants (#6025)
- Algons: expose error for dnsaddr command (#6121)
- Build: add universal Mac make target (#6023)
- Ci: update nightly builds to use universal mac update (#6071)
- Cicd: remove mac AMD64 support from circleci (#6036)
- Cmd: Add goal node subcommand to generate peer private key (#6078)
- Config: use P2PHybridIncomingConnectionsLimit only for hybrid mode (#6103)
- Config: Expose merged configuration for easier debugging (#6049)
- Config: Add warning if EndpointAddress and NetAddress ports are equal (#6006)
- Config: Add GoMemLimit config option and use with 10-node test (#5975)
- Docs: p2p package overview (#6096)
- Installer: add support for algoh to systemd installs (#6102)
- Logging: change transaction pool re-evaluation message from warn to info (#6047)
- Metrics: collect total netdev sent/received bytes (#6108)
- Metrics: Add algod version to metrics (#6003)
- Netgoal: allow unknown template tokens (#6091)
- Network: remove ws net proto 2.1 (#6081)
- Network: use http.ResponseController instead of GetHTTPRequestConnection (#6044)
- Network: Allow short-lived connections to query /status endpoint when at full capacity (#6009)
- P2p: store private keys as PKCS#8 ASN.1 DER PEM (#6119)
- P2p: Add algod_network_p2p_* traffic metrics (#6105)
- P2p: get rid of interface{} from PeerStore methods (#6101)
- P2p: handle txns in pubsub validator (#6070)
- P2p: do not advertise private and non-routable addresses (#6092)
- P2p: support EnableGossipService in p2p streams (#6073)
- P2p: hybrid node net identity for connection deduplication (#6035)
- P2p: Introduce profiles for hybridRelay, hybridArchival, and hybridClient. (#6062)
- P2p: Disable circuit relaying via libp2p.NoListenAddrs (#6064)
- REST API: make RawTransactionAsync developer API (#6069)
- Scripts: allow metrics filtering by labels in metrics_viz.py (#6125)
- Tests: set pprof labels for goroutines that use the same code for different cases (#4350)
- Tests: preserve logs on LibGoalFixture failure (#6030)
Bugfixes
- Algod: fix telemetry lookup if phonebook is used (#6061)
- Catchup: skip logging err for catchup cancellation (#6053)
- Catchup: do not loop forever if there is no peers (#6037)
- Ci: fix mac universal rebuild for nightlies (#6084)
- Ci: update to CentOS Stream 9 and start integrating universal target (#6080)
- Ci: increase artifact upload timeout (#6050)
- Cicd: fix broken ci-build target (#6087)
- Config: ensure both ws and p2p net running the same mode in hybrid (#6130)
- Ledger: restore block listeners on reloadLedger (#6041)
- Legacy Docker: pin ubuntu version (#6028)
- Network: fix outgoing HTTP rate limiting (#6118)
- Network: fix publicKeyIdentTracker data race in hybrid mode (#6110)
- Node: clear new p2p net handlers on fast catchup (#6127)
- Node: close ledger and part keys on node shutdown (#6039)
- P2p: reuse existing libp2p.Host for http clients (#6129)
- P2p: make sure p2p http server runs on all interfaces (#6123)
- P2p: do not register closing peer (#6086)
- P2p: fix connection deduplication in hybrid mode (#6082)
- REST API: Fix
LedgerStateDelta
JSON encoding (#6106) - REST API: Fix to Disable API authentication (#6067)
- Simulate: fix signers (#5942)
- Tests: fix expect tests and add EOF linter (#6122)
- Tests: fix a race in TestP2PwsStreamHandlerDedup (#6116)
- Tests: fix e2e subs goal-partkey-commands (#6095)
- Tests: fix flushing in TestVotersReloadFromDiskAfterOneStateProofCommitted (#6090)
- Tests: fix concurrent accout commits in TestLedgerVerifiesOldStateProofs (#6060)
- Tests: fix TestVotersReloadFromDiskAfterOneStateProofCommitted (#6024)
- Txhandler: fix TestTxHandlerAppRateLimiter (#6075)
Protocol Upgrade
This release does not contain a protocol upgrade.
Additional Resources
Algorand BetaNet 3.26.0
Overview
This release adds experimental support for libp2p networking, a major advance for Algorand decentralization. We would like to emphasize that this support is in preview mode only, and not recommended for production use cases yet.
What's New
- libp2p networking support (experimental preview)
- AVM enhancements
- Mac OS X universal binary
Changelog
New Features
- Network: p2p traffic exchange for algorand node (#5939)
Enhancements
- AVM: Derive looser, but more principled, checks of txn max size (#6114)
- AVM: Provide access to some more block header values (#6107)
- AVM: Expose relevant incentive constants (#6025)
- Algons: expose error for dnsaddr command (#6121)
- Build: add universal Mac make target (#6023)
- Ci: update nightly builds to use universal mac update (#6071)
- Cicd: remove mac AMD64 support from circleci (#6036)
- Cmd: Add goal node subcommand to generate peer private key (#6078)
- Config: use P2PHybridIncomingConnectionsLimit only for hybrid mode (#6103)
- Config: Expose merged configuration for easier debugging (#6049)
- Config: Add warning if EndpointAddress and NetAddress ports are equal (#6006)
- Config: Add GoMemLimit config option and use with 10-node test (#5975)
- Docs: p2p package overview (#6096)
- Installer: add support for algoh to systemd installs (#6102)
- Logging: change transaction pool re-evaluation message from warn to info (#6047)
- Metrics: collect total netdev sent/received bytes (#6108)
- Metrics: Add algod version to metrics (#6003)
- Netgoal: allow unknown template tokens (#6091)
- Network: remove ws net proto 2.1 (#6081)
- Network: use http.ResponseController instead of GetHTTPRequestConnection (#6044)
- Network: Allow short-lived connections to query /status endpoint when at full capacity (#6009)
- P2p: store private keys as PKCS#8 ASN.1 DER PEM (#6119)
- P2p: Add algod_network_p2p_* traffic metrics (#6105)
- P2p: get rid of interface{} from PeerStore methods (#6101)
- P2p: handle txns in pubsub validator (#6070)
- P2p: do not advertise private and non-routable addresses (#6092)
- P2p: support EnableGossipService in p2p streams (#6073)
- P2p: hybrid node net identity for connection deduplication (#6035)
- P2p: Introduce profiles for hybridRelay, hybridArchival, and hybridClient. (#6062)
- P2p: Disable circuit relaying via libp2p.NoListenAddrs (#6064)
- REST API: make RawTransactionAsync developer API (#6069)
- Scripts: allow metrics filtering by labels in metrics_viz.py (#6125)
- Tests: set pprof labels for goroutines that use the same code for different cases (#4350)
- Tests: preserve logs on LibGoalFixture failure (#6030)
Bugfixes
- Algod: fix telemetry lookup if phonebook is used (#6061)
- Catchup: skip logging err for catchup cancellation (#6053)
- Catchup: do not loop forever if there is no peers (#6037)
- Ci: fix mac universal rebuild for nightlies (#6084)
- Ci: update to CentOS Stream 9 and start integrating universal target (#6080)
- Ci: increase artifact upload timeout (#6050)
- Cicd: fix broken ci-build target (#6087)
- Config: ensure both ws and p2p net running the same mode in hybrid (#6130)
- Ledger: restore block listeners on reloadLedger (#6041)
- Legacy Docker: pin ubuntu version (#6028)
- Network: fix outgoing HTTP rate limiting (#6118)
- Network: fix publicKeyIdentTracker data race in hybrid mode (#6110)
- Node: clear new p2p net handlers on fast catchup (#6127)
- Node: close ledger and part keys on node shutdown (#6039)
- P2p: reuse existing libp2p.Host for http clients (#6129)
- P2p: make sure p2p http server runs on all interfaces (#6123)
- P2p: do not register closing peer (#6086)
- P2p: fix connection deduplication in hybrid mode (#6082)
- REST API: Fix
LedgerStateDelta
JSON encoding (#6106) - REST API: Fix to Disable API authentication (#6067)
- Simulate: fix signers (#5942)
- Tests: fix expect tests and add EOF linter (#6122)
- Tests: fix a race in TestP2PwsStreamHandlerDedup (#6116)
- Tests: fix e2e subs goal-partkey-commands (#6095)
- Tests: fix flushing in TestVotersReloadFromDiskAfterOneStateProofCommitted (#6090)
- Tests: fix concurrent accout commits in TestLedgerVerifiesOldStateProofs (#6060)
- Tests: fix TestVotersReloadFromDiskAfterOneStateProofCommitted (#6024)
- Txhandler: fix TestTxHandlerAppRateLimiter (#6075)
Protocol Upgrade
This release does not contain a protocol upgrade.
Additional Resources
Algorand 3.25.0
Overview
What's New
- Network optimization - fixes for ERL resources management
- Performance enhancement - add expired stake cache to reduce db lookups
- Miscellaneous debugging improvements
- Other bug fixes, test improvements, and optimizations
Changelog
New Features
- REST API: /debug/settings/pprof admin endpoint for debugging (#6018)
Enhancements
- AVM: incentive opcodes (#5984)
- Agreement: log current player state for VoteBroadcast and ProposalBroadcast events (#6007)
- Build: bump golang.org/x/net from 0.17.0 to 0.23.0 (#5979)
- Ci: upgrade github checkout action to v4 (#6010)
- Cicd: Update to switch e2e_expect to large (#6004)
- Ledger: introduce expired stake cache (#6014)
- Metrics: Add TagCounterFiltered metrics for handler calls (#6013)
- Typos: Correct some spelling mistakes (#6001)
Bugfixes
- Cicd: update OS support in test release script (#6012)
- Logger: fix data race in tests (#5999)
- Tests: set communication timeout in kmd.init_wallet_handle (#6021)
- Tests: Fix flakey htlc test (#6017)
- Tests: Fix e2e kmd timeout (#6016)
- Tests: Fix flakey ECDSA testing (#6005)
- Tools: Fix Cloudflare SRV update utility after API change (#6020)
- Txhandler: fixes to ERL resources management (#6019)
Protocol Upgrade
This release does not contain a protocol upgrade.
Additional Resources
Algorand BetaNet 3.25.0
Overview
What's New
- Network optimization - fixes for ERL resources management
- Performance enhancement - add expired stake cache to reduce db lookups
- Miscellaneous debugging improvements
- Other bug fixes, test improvements, and optimizations
Changelog
New Features
- REST API: /debug/settings/pprof admin endpoint for debugging (#6018)
Enhancements
- Agreement: log current player state for VoteBroadcast and ProposalBroadcast events (#6007)
- Build: bump golang.org/x/net from 0.17.0 to 0.23.0 (#5979)
- Ci: upgrade github checkout action to v4 (#6010)
- Cicd: Update to switch e2e_expect to large (#6004)
- Ledger: introduce expired stake cache (#6014)
- Metrics: Add TagCounterFiltered metrics for handler calls (#6013)
- Typos: Correct some spelling mistakes (#6001)
Bugfixes
- Cicd: update OS support in test release script (#6012)
- Logger: fix data race in tests (#5999)
- Tests: set communication timeout in kmd.init_wallet_handle (#6021)
- Tests: Fix flakey htlc test (#6017)
- Tests: Fix e2e kmd timeout (#6016)
- Tests: Fix flakey ECDSA testing (#6005)
- Tools: Fix Cloudflare SRV update utility after API change (#6020)
- Txhandler: fixes to ERL resources management (#6019)
Protocol Upgrade
This release does not contain a protocol upgrade.
NOTE
vFuture changes are not yet available in MainNet or TestNet but can be used in private networks.
- AVM: incentive opcodes (#5984)
Additional Resources
Algorand 3.24.0
Overview
This release provides important enhancements and bug fixes to improve ease of use and stability.
Important Note
This release includes a migration, which may take a few minutes to complete. Due to the impact, we recommend applying this update progressively if running multiple nodes, to avoid large periods of concurrent inaccessibility.
What's New
- Golang 1.21 support
- Experimental full assets for account endpoint API support
- Full logs for block support
- Fix for log rotation when cold dirs are used
Changelog
Enhancements
- API: Experimental full assets for account endpoint. (#5948)
- API: blocks/{round}/logs endpoint (#5865)
- Build: Go 1.21 Support (#5994)
- Build: support SWAGGER_CONVERTER_API override (#5968)
- Build: bump golang.org/x/crypto from 0.14.0 to 0.17.0 (#5877)
- Crypto: convert BatchVerifier to interface (#5988)
- Docker: Remove usage of
gosu
and replace withsu
(#5951) - Metrics: support labeled gauges (#5956)
- Node: remove unused node GetTransaction and ListTxns methods (#5983)
- Scripts: update buildnumber to use timezone-aware datetime (#5971)
- Tests: Stabilize nightly tests. (#5992)
- Tests: Fix flakey incentive e2e tests (#5986)
- Tests: Allow go e2e tests to easily test multiple consensus versions (#5981)
- Tests: Thread testing.T through so we panic less (#5938)
- Tools: Revert "feat: add support to display mnemonic discreetly for
algokey generate
" (#5974)
Bugfixes
- Catchpoint: fix data files deletion in hot/cold dirs scenario (#5963)
- Tests: Fix
AccountsUpdateSchemaTest
ignoring error bug (#5985) - Utils: Renaming files across devices (#5977)
Protocol Upgrade
This release does not contain a protocol upgrade.
NOTE
vFuture changes are not yet available in MainNet or TestNet but can be used in private networks.
- Incentives: Suspend "absentee" accounts that don't propose. (#5757)
Additional Resources
Algorand BetaNet 3.24.0
Overview
This release provides important enhancements and bug fixes to improve ease of use and stability.
Important Note
This release includes a migration, which may take a few minutes to complete.
What's New
- Golang 1.21 support
- Experimental full assets for account endpoint API support
- Full logs for block support
- Fix for log rotation when cold dirs are used
Changelog
Enhancements
- API: Experimental full assets for account endpoint. (#5948)
- API: blocks/{round}/logs endpoint (#5865)
- Build: Go 1.21 Support (#5994)
- Build: support SWAGGER_CONVERTER_API override (#5968)
- Build: bump golang.org/x/crypto from 0.14.0 to 0.17.0 (#5877)
- Crypto: convert BatchVerifier to interface (#5988)
- Docker: Remove usage of
gosu
and replace withsu
(#5951) - Metrics: support labeled gauges (#5956)
- Node: remove unused node GetTransaction and ListTxns methods (#5983)
- Scripts: update buildnumber to use timezone-aware datetime (#5971)
- Tests: Stabilize nightly tests. (#5992)
- Tests: Fix flakey incentive e2e tests (#5986)
- Tests: Allow go e2e tests to easily test multiple consensus versions (#5981)
- Tests: Thread testing.T through so we panic less (#5938)
- Tools: Revert "feat: add support to display mnemonic discreetly for
algokey generate
" (#5974)
Bugfixes
- Catchpoint: fix data files deletion in hot/cold dirs scenario (#5963)
- Tests: Fix
AccountsUpdateSchemaTest
ignoring error bug (#5985) - Utils: Renaming files across devices (#5977)
Protocol Upgrade
This release does not contain a protocol upgrade.
NOTE
vFuture changes are not yet available in MainNet or TestNet but can be used in private networks.
- Incentives: Suspend "absentee" accounts that don't propose. (#5757)
Additional Resources
Algorand 3.23.1
Overview
This release is focused on providing the necessary software functionality for non-archival relays on the network. It includes promoting archival nodes to first class citizens that can be resolved as their own class of nodes.
What's New
- Full support for non-archival relay nodes
- SRV record resolution of dedicated archival nodes
Changelog
New Features
- Network: Class-based Peer Selector (#5937)
Enhancements
- Archival Support: Remove configurable support for catching up from "archivers" (#5920)
- Blocks: Bump min to save based on catchpoint support (#5927)
- Build: upgrade to go 1.20.14 (#5949)
- Docker: Bump debian version in algod container (#5955)
- Feat: add support to display mnemonic discreetly for
algokey generate
(#5886) - Netgoal: Use --last-part-key-round when generating a goalnet template (#5912)
- Network: Penalize peer/class rankings when peer does not have catchpoint (#5959)
- Network: Support simple liveness check via http on gossip server port. (#5944)
- Network: Archival node DNS Resolution (#5940)
Bugfixes
- Cicd: fix package signing issues (#5934)
- Network: use network context for DNS operations in readFromSRV (#5936)
Protocol Upgrade
This release does not contain a protocol upgrade.