Skip to content

Releases: algorand/go-algorand

Algorand BetaNet 2.7.1

22 Jun 12:34
dc829f6
Compare
Choose a tag to compare

GitHub Logo

Highlights

This is a minor fix to ensure consistency in algod and indexer outputs before the protocol switch.

Summary

  1. REST API
    • Bug Fix - make extra-program-pages and apps-total-extra-pages optional in order to do not exposing them before the protocol switch.

Protocol Upgrade

This release does not contain a protocol upgrade.

Additional Resources

Algorand BetaNet 2.7.0

17 Jun 13:39
d57586a
Compare
Choose a tag to compare

GitHub Logo

Protocol Upgrade

This release will require a protocol upgrade.
This release contains a consensus protocol upgrade, which implements the following spec:
https://github.com/algorandfoundation/specs/tree/65b4ab3266c52c56a0fa7d591754887d68faad0a

Spec PR: #2286

Highlights

This release represents a major milestone in smart contract functionality, as well as serves as a vote for the future of governance on chain.

In this release:

  • Governance vote - see https://algorand.foundation/news/algorand-governance-referendum
  • Algorand Virtual Machine (AVM) v0.9
    • Control Flow
      • New OpCodes: callsub, retsub
      • Allow backward jumps or indirect jumps
      • Dynamic cost accounting
    • Opcodes: Math related
      • New OpCodes: shl, shr, divmodw, exp, expw, sqrt, log2
      • Byteslice arithmetic
    • Contract-to-contract composability - allow contracts to share scratch space in a transaction group
    • Createable IDs in gtxns (they are not really deterministic, but rather new app/asset idx are available for subsequent apps within a transaction group)
    • Increased Program Limits
      • Ability to pay for extra pages
      • Pool fees - as long as fees in a covered in a gtxn, allow 0 fee txns
      • Increase ASA URL size from 32 bytes to 96 bytes (better IPFS support for NFTs)
      • Combine clear and approval limits
      • Combine schema key/value sizes
    • Optimize int/byte constant in assembly
  • Participation key registration improvements (e.g. check valid ranges)
  • Miscellaneous optimizations and test improvements

Changes

  1. AVM
    • New Features
      • Control flow (callsub, retsub; backward/indirect jumps; dynamic cost accounting)
      • New math opcodes (shl, shr, divmodw, exp, expw, sqrt, log2) and byteslice-oriented math
      • Add ability to pay for more program space
      • Allow future app call transactions to read the scratch space of previous transactions in the same transaction group for contract to contract composability
      • Combine Clear and Approval Program size limits
      • Combine app state key/value size limits
      • Expose creatable IDs to AVM code within the same group
      • Pool fees in a transaction group and allow one user to pay all fees
    • Enhancements
      • Allow AVM code to access a max number of foreign refs
      • Increase ASA URL size from 32 bytes to 96 bytes to support NFTs with longer IPFS URLs
      • Optimize constant assembly
      • Regularize access to "foreign" references
    • Bug Fix - check setbyte length properly
  2. REST API
    • New Feature - add the AppsTotalExtraPages account field to the response returned by the /v2/accounts/{addr} endpoint
    • Enhancement - make account endpoint produce deterministic JSON
  3. Agreement
    • Bug Fix - bug fix for proposal for a future round failing to be relayed
  4. Catchup
    • Enhancement - catchup: speedup initial node DNS bootstrap time
  5. Goal
    • Bug Fix - clean up goal wallet new output
  6. Network
    • Enhancement - start network only after handlers registration is complete
    • Bug Fix - fix go vet error for string(int) conversion in TestWebsocketNetworkCancel
  7. Node
    • Enhancement - improve fresh node startup time
    • Bug Fix - ensure stopping a node always stops KMD
  8. Tools
    • Enhancements - deprecate auction code
    • Improve carpenter by adding timestamp
  9. Tests
    • New Feature - integrate with codecov.io to attach coverage reports to PRs
    • Enhancements
      • Add PeerSelector and Catchup service tests
      • Add missing test for universalFetcher.go
      • Bandwidth stats for cluster tests
      • Disable compact certs and auction tests
      • Disable goal expect tests
      • Improve AVM tests
      • Improve TestRewardUnitThreshold predicate
      • Increase catchupaccessor code coverage
      • Temporarily disable TestBasicCatchpointCatchup test and reset timeouts
      • Temporarily disable TestPeriodicSync test
      • Use gotestsum instead of logfilter for test formatting
      • e2e sub assets-app speedup
      • sectok e2e faster
    • Bug Fixes
      • Fix asynchronous startup case for rekey upgrade test
      • Fix bug in TestApplicationsUpgradeOverREST
      • Fix data race accessing messagesOfInterest during network shutdown
      • Fix random TestAccountInformationV2 test failures by refreshing wallet handle
      • Fix random failure in TestConsensusVersion
      • Fixing a bug in eval and TestOnSwitchToUnSupportedProtocol
      • Protocol upgrade tests - AgreementFilterTimeout was not set correctly
      • Fix TestRekeyUpgrade when round=0
  10. Other
    • New Feature - initial support for building CentOS Stream 8 RPM (still need publishing work)
    • Enhancements
      • Add mention of install_buildtools.sh to README
      • Fix docker builds after refactor: skip make deps
      • Modify build_release to match build_pr and remove ARM Deploy
      • Re-enable gofmt check during travis build
      • Refactor code generation verification
      • Remove ci-deps and update GOPROXY in Dockerfiles
      • Use minimal travis container since we install go ourselves
    • Bug Fixes
      • Fix incorrect gaid and gaids docs
      • Fix nightly test genesis file issue
      • If the branch is rel/nightly set channel to nightly
      • Fix crash that should be a clean error report for using substring wrong

Additional Resources

Algorand 2.6.0

26 May 14:30
8fe22d4
Compare
Choose a tag to compare

GitHub Logo

Highlights

  • Increased Test Coverage: including adding NFT support for pingpong
  • Logging: reduced verbosity
  • TEAL: TEAL 3 Refactoring and new features in tealdbg
  • Catchup and Catchpoint enhancements
  • BugFixes: Update.sh script, GOPROXY, REST API, Nil Check, KMD for Windows, netgoal

Changelog

  1. General/Other
    • New Feature
      • Add support for Arch Linux
    • Enhancement
      • Expand /metrics to show per-message-tag stats on number of messages and amount of bytes moved.
      • Cache docker images in Travis and re-load them
      • Copy database files generation in create_and_deploy_recipe.sh to nodes
      • Improve handling of ledger falling behind agreement
      • Report algod panic in algoh
      • BlockService will redirect when it does not have the round
      • Efficiency Improvement: Avoid compact cert validation on non-validate/non-generate path
    • BugFix
      • Fix bug with updater not restarting services with systemctl
      • Update GOPROXY: Deal with deprecated gocenter.io GOPROXY
      • Pipeline - don't reset CHANNEL if defined
      • skip printing the logs when program is in terminated state.
      • nil check fix
      • Push docker tag to betanet
      • Fix requestNonce alignment on arm32
      • rollback config v17 into v16
      • Fixes for KMD on Windows
  2. Teal
    • Enhancement
      • Cleanup and re-factor of TEAL 3 code
      • adding extra docs for pushbytes and pushint
    • Tealdbg:
      • Check compile and dryrun programs against consensus limits
      • Better support for TEAL 3 in tealdbg
      • Allow tealdbg to listen on specified address
      • Removes program version assumption
  3. REST API
    • Bug Fix
      • Add swagger response annotations so a valid swagger doc gets generated
      • Fix parameter check in abort procedure
      • Fixes for pending transaction endpoint
      • Return an empty string instead of null when making a proof for transaction with no siblings.
  4. Tests
    • Enhancement
      • algofix - Allow struct field to be sync.Mutex if tagged algofix:"allow sync.Mutex"
      • Add DisableLocalhostConnectionRateLimit configuration option
      • Fix/improve kmd speed in test
      • Add pingpong mode to create NFTs for testing
      • script to watch algod heap
      • Improve TestCompactCerts error testing
      • Bandwidth watch
      • Unit test demonstrating high memory consumption
      • Catchup: Add deep block validation support
      • Add performance metrics for account updates
      • Add tests for ledger/compactcert.go
      • test coverage for ledger/eval.go funcs
      • Filter out verbosed output from automated testing
    • Bug Fix
      • Fix parameter check in abort procedure
      • Fix testing bug : avoid datarace on a node crash during e2e test
      • logfilter: exit with non-zero when test fails
      • Node Controller: delete pid file on killing process
      • Fix node shutdown on the wrong node directory
  5. Catchup and Catchpoint
    • Enhancement
      • Support for catching up from http or ws fetchers
      • Reduce memory utilization during accounts update init by reconstructing balances db from blocks
      • Extend catchpointdump utility to verify merkle trie
      • Fine tune catchup peer selection logic
      • Add cross-verify for genesis.json hash
    • Bug Fix
      • catchpoint: truncate output file
  6. Ledger
    • Enhancement
      • Preload account data in parallel on the evaluator
      • Improve ConsensusVersion error messages
      • Disable minimum balance check when not validating or generating
      • Split committed round range by consensus protocol version
    • Bug Fix
      • Fix consensus version to flush correctly
  7. Network
    • Enhancement
      • Improve ConsensusVersion error messages
      • Add peer functions to network interface to associate data with a peer to be garbage collected when peer goes away
      • Add networking infrastructure for cancelling sends
  8. Goal
    • Enhancement
      • Add comments to disassembly of constant load lines to show constant
      • add support for a single node private network
      • Improve waitForCommit logic
      • Refactor waitForCommit
    • Bug Fix
      • Fix goal node restart message when node already started
  9. Transactions
    • Enhancement
      • Transaction Sync: Optimize bloom filter memory allocations
    • Bug Fix
      • txpool: Fix incorrect datatype checking in recomputeBlockEvaluator
  10. Logger
    • Enhancement
      • Make deadlockLogger thread-safe
      • Reduce verbosity of logged messages
      • Print out intermediate decoding errors
      • logfilter: provide proper handling for panicking unit tests
    • Bug Fix
      • logfilter bug when running test without -v
  11. netgoal
    • Enhancement
      • Add pre-generated network support
    • Bug Fix
      • Fix insufficient account with preloaded db files
      • Resolve netgoal errors when bootstrap files are missing
      • Fixup small amounts of float64 roundoff
  12. Participation Keys
    • Enhancement
      • Refactor participation keys management
      • Add support for overlapping participation keys
      • Ensure the participation key database is being correctly closed after being installed
      • Add ParticipationKeysRefreshInterval to the node config

Protocol Upgrade

This release does not contain a protocol upgrade.

Additional Resources

Algorand BetaNet 2.6.0

21 May 15:36
34f7106
Compare
Choose a tag to compare

GitHub Logo

Highlights

  • Increased Test Coverage: including adding NFT support for pingpong
  • Logging: reduced verbosity
  • TEAL: TEAL 3 Refactoring and new features in tealdbg
  • Catchup and Catchpoint enhancements
  • BugFixes: Update.sh script, GOPROXY, REST API, Nil Check, KMD for Windows, netgoal

Changelog

  1. General/Other
    • New Feature
      • Add support for Arch Linux
    • Enhancement
      • Expand /metrics to show per-message-tag stats on number of messages and amount of bytes moved.
      • Cache docker images in Travis and re-load them
      • Copy database files generation in create_and_deploy_recipe.sh to nodes
      • Improve handling of ledger falling behind agreement
      • Report algod panic in algoh
      • BlockService will redirect when it does not have the round
      • Efficiency Improvement: Avoid compact cert validation on non-validate/non-generate path
    • BugFix
      • Fix bug with updater not restarting services with systemctl
      • Update GOPROXY: Deal with deprecated gocenter.io GOPROXY
      • Pipeline - don't reset CHANNEL if defined
      • skip printing the logs when program is in terminated state.
      • nil check fix
      • Push docker tag to betanet
      • Fix requestNonce alignment on arm32
      • rollback config v17 into v16
      • Fixes for KMD on Windows
  2. Teal
    • Enhancement
      • Cleanup and re-factor of TEAL 3 code
      • adding extra docs for pushbytes and pushint
    • Tealdbg:
      • Check compile and dryrun programs against consensus limits
      • Better support for TEAL 3 in tealdbg
      • Allow tealdbg to listen on specified address
      • Removes program version assumption
  3. REST API
    • Bug Fix
      • Add swagger response annotations so a valid swagger doc gets generated
      • Fix parameter check in abort procedure
      • Fixes for pending transaction endpoint
      • Return an empty string instead of null when making a proof for transaction with no siblings.
  4. Tests
    • Enhancement
      • algofix - Allow struct field to be sync.Mutex if tagged algofix:"allow sync.Mutex"
      • Add DisableLocalhostConnectionRateLimit configuration option
      • Fix/improve kmd speed in test
      • Add pingpong mode to create NFTs for testing
      • script to watch algod heap
      • Improve TestCompactCerts error testing
      • Bandwidth watch
      • Unit test demonstrating high memory consumption
      • Catchup: Add deep block validation support
      • Add performance metrics for account updates
      • Add tests for ledger/compactcert.go
      • test coverage for ledger/eval.go funcs
      • Filter out verbosed output from automated testing
    • Bug Fix
      • Fix parameter check in abort procedure
      • Fix testing bug : avoid datarace on a node crash during e2e test
      • logfilter: exit with non-zero when test fails
      • Node Controller: delete pid file on killing process
      • Fix node shutdown on the wrong node directory
  5. Catchup and Catchpoint
    • Enhancement
      • Support for catching up from http or ws fetchers
      • Reduce memory utilization during accounts update init by reconstructing balances db from blocks
      • Extend catchpointdump utility to verify merkle trie
      • Fine tune catchup peer selection logic
      • Add cross-verify for genesis.json hash
    • Bug Fix
      • catchpoint: truncate output file
  6. Ledger
    • Enhancement
      • Preload account data in parallel on the evaluator
      • Improve ConsensusVersion error messages
      • Disable minimum balance check when not validating or generating
      • Split committed round range by consensus protocol version
    • Bug Fix
      • Fix consensus version to flush correctly
  7. Network
    • Enhancement
      • Improve ConsensusVersion error messages
      • Add peer functions to network interface to associate data with a peer to be garbage collected when peer goes away
      • Add networking infrastructure for cancelling sends
  8. Goal
    • Enhancement
      • Add comments to disassembly of constant load lines to show constant
      • add support for a single node private network
      • Improve waitForCommit logic
      • Refactor waitForCommit
    • Bug Fix
      • Fix goal node restart message when node already started
  9. Transactions
    • Enhancement
      • Transaction Sync: Optimize bloom filter memory allocations
    • Bug Fix
      • txpool: Fix incorrect datatype checking in recomputeBlockEvaluator
  10. Logger
    • Enhancement
      • Make deadlockLogger thread-safe
      • Reduce verbosity of logged messages
      • Print out intermediate decoding errors
      • logfilter: provide proper handling for panicking unit tests
    • Bug Fix
      • logfilter bug when running test without -v
  11. netgoal
    • Enhancement
      • Add pre-generated network support
    • Bug Fix
      • Fix insufficient account with preloaded db files
      • Resolve netgoal errors when bootstrap files are missing
      • Fixup small amounts of float64 roundoff
  12. Participation Keys
    • Enhancement
      • Refactor participation keys management
      • Add support for overlapping participation keys
      • Ensure the participation key database is being correctly closed after being installed
      • Add ParticipationKeysRefreshInterval to the node config

Protocol Upgrade

This release does not contain a protocol upgrade.

Additional Resources

Algorand 2.5.6

28 Apr 17:35
219b78d
Compare
Choose a tag to compare

GitHub Logo

This release will require a protocol upgrade.
This release contains a consensus protocol upgrade, which implements the following spec:
https://github.com/algorandfoundation/specs/tree/d050b3cade6d5c664df8bd729bf219f179812595

Please note that the consensus upgrade window for this release is 60,000 rounds, instead of 140,000. This means that once approved, the upgrade will take effect in a shorter time frame than a week.

Changes

  1. General
    • Bug Fix - Fix accessing int64 atomic variables on arm32 which was causing a panic on startup on ARM32
  2. Ledger
    • Bug Fixes
      • Ensure local delta does not have entries with empty key-value stores
      • Prevent storing empty accounts in DB after opting out from an app
      • DB data migration for empty accounts
      • compatibility mode for account index calculation in eval delta

Additional Resources

Algorand BetaNet 2.5.6

27 Apr 05:22
1fa7e2e
Compare
Choose a tag to compare

GitHub Logo

This release will require a protocol upgrade.
This release contains a consensus protocol upgrade, which implements the following spec:
https://github.com/algorandfoundation/specs/tree/d050b3cade6d5c664df8bd729bf219f179812595

Changes

  1. General
    • Bug Fix - Fix accessing int64 atomic variables on arm32 which was causing a panic on startup on ARM32
  2. Ledger
    • Bug Fixes
      • Ensure local delta does not have entries with empty key-value stores
      • Prevent storing empty accounts in DB after opting out from an app
      • DB data migration for empty accounts
      • compatibility mode for account index calculation in eval delta

Additional Resources

Algorand 2.5.5

20 Apr 14:44
304815d
Compare
Choose a tag to compare

GitHub Logo

This release will NOT require a protocol upgrade.

Changes

  1. Bug Fix - proposal propagation logic to reduce occasional block latency increase.

Protocol Upgrade

This release does not contain a protocol upgrade.

Additional Resources

Algorand BetaNet 2.5.5

20 Apr 14:21
fbd32c8
Compare
Choose a tag to compare

GitHub Logo

Highlights

An optimization to propagate block proposals early caused latencies to occasionally occur. This release reverts that change.

Changes

  1. Agreement
    • Bug Fix - roll back early proposal propagation changes

Protocol Upgrade

This release does not contain a protocol upgrade.

Additional Resources

Algorand v2.5.4

12 Apr 19:27
7cd7aef
Compare
Choose a tag to compare

GitHub Logo

Protocol Upgrade

This release will require a protocol upgrade.
This release contains a consensus protocol upgrade, which implements the following spec:
https://github.com/algorandfoundation/specs/tree/ac2255d586c4474d4ebcf3809acccb59b7ef34ff

Highlights

Support for TEAL 3

  • Added support for the following new opcodes:
    • assert
    • min_balance
    • getbit
    • setbit
    • getbyte
    • setbyte
    • swap
    • select
    • dig
    • stxn
    • stxna
    • pushbytes
    • pushint
  • Added support for the following txn fields:
    • ForeignAssets
    • NumForeignAssets
    • ForeignApps
    • NumForeignApps
    • GlobalStateInts
    • GlobalStateByteslices
    • LocalStateInts
    • LocalStateByteslices
  • Added support for new global field:
    • CreatorAddress

This release also 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

Changelog

  1. Agreement
    • New Feature - add a Merkle commitment to transactions in block header
    • Enhancement - propagate block proposals before transaction validation
    • Bug Fixes
      • Fix initial rewards rate calculation for new networks
      • Increase pending proposals queue
      • FilterTimeout is using binary ConsensusCurrentVersion instead of current protocol version
  2. Ledger
    • New Features
      • Add asset close to amount field to transaction
      • Top-level compact certificate support
    • Enhancements
      • Trim StateDelta fields before storing
      • Improve memory allocations in cloneAssetHoldings and cloneAssetParams
      • Precise calculation of paysetHint for block eval
      • 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
    • Bug Fixes
      • Fix for empty local state key value map assignment
      • Fix ClearState program applying when it errs
      • Ensure loading of a merkle trie deferred page during commit
  3. 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
      • Adjust the network outgoing buffer sizes
      • Network: refactor broadcastThread
      • Remove the network v1 fetcher via websocket connections
      • Deprecate support of reverse catchup protocol ( part 2 )
      • Deprecate support of reverse catchup protocol ( part 3 )
  4. Teal
    • New Feature - TEAL 3 support (see Highlights)
    • Bug Fix - copy byteslices that will be modified by opcode
  5. REST API
    • Bug Fix - fix omitempty for AssetCloseAmount
  6. Catchup
    • Enhancement - implement peer selector logic for catchup
  7. Config
    • Enhancement - create new consensus upgrade for AssetCloseAmount
  8. 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
  9. Node
    • Bug Fix: Fix node panicing during shutdown
  10. Logging
    • Enhancement - do not use deadlock.Mutex in logging
    • Bug Fixes
      • Handle #pragma errors more like all others
      • Prevent misleading agreement error message
  11. Tools
    • Enhancements
      • add appeal to kindness to dispenser to help prevent abuse
      • 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. Tests
    • Enhancements
      • Put some unicode in an AsssetName to help test Indexer
      • Improve the reliability of the TestApplicationsUpgradeOverGossip e2e test by using a specific historical protocols and avoiding dynamically modifying current and/or future protocols.
      • Remove GOPATH dependencies in integration tests
      • Remove data directory from start/stop network expect tests
      • 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 assets-app.sh/sectok-app.sh tests
      • Fix regression in BenchmarkReadingAllBalancesRAM and BenchmarkReadingAllBalancesDisk
  13. Other
    • New Feature - systemd - run algod as a user service
    • Enhancements
      • Build - fix deprecation warning on sortition compilation
      • Build - new recipe for Devnet network
      • Use msgp 1.1.47
      • Clarify account status meaning in code-comment
      • Integrate package signing into CI pipeline
      • Make github templates friendlier
      • Add comment details on format of Transaction for kmd
    • Bug Fixes
      • Upgrade the websocket library to use version 1.4.2
      • 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
      • Fix few minor log string formatting
      • Fix few minor typos

Additional Resources

Algorand BetaNet 2.5.4

09 Apr 19:30
7f7082d
Compare
Choose a tag to compare

GitHub Logo

Highlights

Bug fix release

  • Fast catchup on TestNet was erroring using new code
  • Other miscellaneous fixes

Changelog

  1. Ledger
    • Bug Fixes
      • Fix for empty local state key value map assignment
      • Fix ClearState program applying when it errs
      • Ensure loading of a merkle trie deferred page during commit
  2. Node
    • Bug Fix: Fix node panicing during shutdown

Protocol Upgrade

This release does not contain a protocol upgrade.

Additional Resources