github algorand/go-algorand v3.17.0-stable
Algorand 3.17.0

15 months ago

GitHub Logo

Overview

Go-algorand 3.17.0 is a maintenance release that fixes some minor issues, cleans up stale code, upgrades the Algod client to Go version 1.20, and introduces enhancements such as backup DNS bootstrap support and initial PC trace support.

What's New

  • 🌐 Network Resiliency: Algod now supports multiple DNS providers for bootstrapping onto the network increasing network resiliency against DNS failures.
  • πŸ’» Go-lang upgrades: go-algorand now requires Go version 1.20, a change that improves the security and performance of internal Algod functionality.
  • 🀝 Agreement: We have externalized our go-algorand's implementation of its cryptographic sortition to better manage its dependencies and make it usable as a separate library (see here for implementation details).
  • πŸ“¦ Container: Multi-algod container setup is now supported. This is great for those who want to set up a private network with networking enabled as well as adding peers to a non-standard relay node.
  • πŸ‘οΈ Improved error handling: Algod will now return an error if it is unable to begin fast catchup providing a better user experience when trying to start a node.
  • πŸ› Smart Contract Debugging: simulate PC-based execution trace has been introduced including both stack and scratch slot changes. This is one of the final building blocks towards the full debugger experience.

Changelog

New Features

  • Algod: Leverage 2 SRV record providers for resolving relay addresses w/ de-duplication. (#5087)
  • Algod: Simulate endpoint scratch-change exposure (#5563)
  • Algod: Simulate endpoint stack-change exposure (#5440)
  • Algod: Simulation PC exposure for App approval/clear-state transaction (#5360)

Enhancements

  • API: Allow DELETE calls (#5515)
  • AVM: Increase coverage by deleting a dead function and adding limit tests (#5422)
  • AVM: Some error cleanup, and added coverage (#5441)
  • Algocfg: Add EnableTxnEvalTracer to algocfg development profile. (#5481)
  • Algocfg: Remove block validation override from participation profile. (#5502)
  • Algod: Add README file to state proof package (#5386)
  • Block-generator: conduit performance benchmark scenarios. (#5532)
  • Blockserver: Memory counter for http block requests (#5428)
  • Build: Disable goexperiments in our builds due to issue present in Go 1.20.5 (#5484)
  • Build: Golang 1.20 upgrade. (#5462)
  • Build: Split nightly job into its own workflow. Remove ARM64 platform builds from our triggered/on commit builds. (#5485)
  • Build: remove boost dependency and internal sortition package (#5459)
  • Build: remove sqlite from release configurations (#5562)
  • Build: update falcon to v0.1.0 for new CFLAGS (#5460)
  • Catchpoint: use read connection for data retrieval for spver hash calculation (#5592)
  • Catchup: Add HEAD request to catchpoint service start (#5393)
  • Catchup: Catchup variable reuse (#5551)
  • Chore: Small cleanups for clarity (#5526)
  • Chore: Use exp/slices and exp/maps to simplify some code (#5479)
  • Chore: Use strings.Cut for clarity (#5474)
  • Chore: remove a redundant argument to maintain single source of truth (#5530)
  • Chore: use string builder instead of string concatenation in catchup service (#5572)
  • Ci: Don't run tests during benchmark (#5491)
  • Cicd: Update docker containers to newer versions (#5529)
  • Cicd: Update ubuntu circleci image and orbs (#5564)
  • Circleci: Update macos xcode versions (#5590)
  • Cleanup: Remove indexer v1 from codebase (#5477)
  • Cli: clarify program source flag description (#5571)
  • Config: make Tx dedupe cache maxSize configurable (#5419)
  • Config: update MaxCatchpointDownloadDuration to 12h (#5503)
  • Docker: Additional private network options and container tweaks. (#5525)
  • Encoding: Update go-codec version. (#5471)
  • Genesis: add GenesisAccountData type for use in GenesisAllocation (#5463)
  • Goal: support simulate scratch in exec trace (#5589)
  • Lint: enable govet shadow linter and resolve linter warnings (#5261)
  • Lint: enable staticcheck for test code and fix issues (#5401)
  • Metrics: Add LedgerDBRound gauge (#5456)
  • Network: Limit message length based on Tag (#5388)
  • Network: discard unrequested or stale block messages (#5431)
  • Network: improve MsgOfInterest message handling (#5476)
  • Network: peer selector expansion and PeersPhonebookArchivalNodes (#5385)
  • Network: ws block byte limiter (#5472)
  • Perf Tests: use metrics for memory usage charts (#5565)
  • Runtime: Add delete-if-exists check for the no longer used indexer.sqlite file… (#5531)
  • Sortition: use external sortition package (#5429)
  • Tests: Fix catchpoint catchup tests to use relay for catchup (#5507)
  • Tests: Get rapid into the codebase (#5437)
  • Tests: Replace timer with counter loop in TestNodeTxHandlerRestart (#5533)
  • Tools: Block Generator Apps. Part 2: boxes (#5478)
  • Tools: Block-generator Applications. Part 1: create (#5450)
  • Tools: EvalDelta and ConsensusParams x-repo type checks (#5381)
  • Tools: Reorganize block generator scripts. (#5582)
  • Tools: let catchpointdump to calculate and print data hashes (#5584)
  • Tools: prepare block-generator for configuring apps (#5443)
  • Tools: replace upload_metrics (#5470)
  • Tools: txn replayer (#5420)

Bugfixes

  • Bugfix: ensure blockservice callbacks are not nil (#5518)
  • Ci: don't use deprecated set-output in github actions (#5453)
  • Docker: Start kmd in the background. (#5514)
  • Docker: fix slow docker container start up (#5513)
  • Docs: Fix broken markdown in follower documentation. (#5585)
  • Fix: goal clerk rawsend print pending round rather than ptr to round (#5499)
  • Flake: TestLedgerContinuesOnVotersCallbackFailure (#5454)
  • Follower: Use Buffered syncNow channel to correctly trigger sync in private networks (#5516)
  • Goal: account info with deleted asset suppress error and better output (#5504)
  • Ledger: fix catchpoint pending hashes locking (#5534)
  • Ledger: move MakeCatchpointReader back to the Reader interface (#5583)
  • Ledger: use single SP verification hash/data query for catchpoint tracking & generation (#5579)
  • Netgoal: fix large db generation (#5445)
  • Tests: fix rawsend.sh nightly test failure (#5519)
  • Tests: reenable TestVotersReloadFromDiskPassRecoveryPeriod (#5496)
  • Tools: block generator inner transactions (#5506)
  • Tools: bugfix block-generator to handle conduit's Init block requests (#5449)
  • Tracer: Default to ledger tracer when starting new evaluator (#5521)

Protocol Upgrade

This release does not contain a protocol upgrade.

Additional Resources

Don't miss a new go-algorand release

NewReleases is sending notifications on new releases.