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
- 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
- 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
- New Features
- 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 )
- Teal
- New Feature - TEAL 3 support (see Highlights)
- Bug Fix - copy byteslices that will be modified by opcode
- REST API
- Bug Fix - fix omitempty for AssetCloseAmount
- Catchup
- Enhancement - implement peer selector logic for catchup
- Config
- Enhancement - create new consensus upgrade for AssetCloseAmount
- 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
- Node
- Bug Fix: Fix node panicing during shutdown
- Logging
- Enhancement - do not use deadlock.Mutex in logging
- Bug Fixes
- Handle #pragma errors more like all others
- Prevent misleading agreement error message
- 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
- Enhancements
- 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
- Enhancements
- 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