Highlights
This release 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
This release will require a protocol upgrade.
Known Issues
- You may receive an error about being "unable to retrieve consensus version" on startup. This will fall back to the correct state and is harmless.
Changelog
- Agreement
- Enhancement - propagate block proposals before transaction validation
- Bug Fixes
- Increase pending proposals queue
- FilterTimeout is using binary ConsensusCurrentVersion instead of current protocol version
- REST API
- Bug Fix - fix omitempty for AssetCloseAmount
- Catchup
- Enhancement - implement peer selector logic for catchup
- Config
- Enhancement - create new consensus upgrade for AssetCloseAmount
- 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
- Ledger
- New Features
- Add asset close to amount field to transaction
- Top-level compact certificate support
- Enhancements
- 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
- New Features
- 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
- General
- Enhancement - use msgp 1.1.47
- Bug Fix - fix few minor log string formatting
- Logging
- Enhancement - do not use deadlock.Mutex in logging
- Tests
- Enhancements
- 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
- Tools
- Enhancements
- 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
- Other
- New Feature - systemd - run algod as a user service
- Enhancements
- Build - fix deprecation warning on sortition compilation
- Build - new recipe for Devnet network
- Bug Fixes
- 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
Protocol Upgrade
This release contains a consensus protocol upgrade, which implements the following spec:
https://github.com/algorandfoundation/specs/tree/bea19289bf41217d2c0af30522fa222ef1366466