Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

go-algorand 3.16.0-beta Release PR #5406

Merged
merged 113 commits into from
May 23, 2023

Conversation

Algo-devops-service
Copy link
Contributor

@Algo-devops-service Algo-devops-service commented May 22, 2023

GitHub Logo

IMPORTANT
This release requires a protocol upgrade.
This release contains a consensus protocol upgrade, which implements the following spec: https://github.com/algorandfoundation/specs/tree/abd3d4823c6f77349fc04c3af7b1e99fe4df699f

Overview

This update includes a drop in round time of ~0.4 seconds, a robustness improvement to State Proofs, and several developer-oriented features in the AVM, simulate, and devmode.

⚠️ In order to avoid opcode ambiguity, access to assets or applications with an ID less than 256 within a contract will fail immediately. For new networks, asset and application IDs will now start at 1000 to avoid any potential issues due to this change.

What's New

  • 🚀 Round times are reduced by 400 milliseconds. See here for details.
  • 👥 Group resource sharing for app calls: access to resources (assets, apps, accounts, boxes) during smart contract evaluation is shared across the transaction group. See here for details.
  • 🕦 Devmode timestamp control: when running a network in devmode, the block timestamp can now be manipulated with a new API. See here for details.
  • 🔮 More logging and opcode budget in simulate: when calling the simulate endpoint, there are now options to let the algod evaluate the transaction group with much higher limits on logging and on opcode budget. See here for details.
  • 📒 Transaction group updates API: a new algod API that returns the ledger updates caused by individual transaction groups. See here for details.
  • ➕ Readiness Endpoint: algod has a new supplementary /ready endpoint to benefit any K8's deployment as a readiness probe. The endpoint will return a 200 response code once algod has caught up to the latest state.
  • 📦 Algod Docker Container: algod container usage just got easier! The container now supports node profiles to simplify running common configurations in place of mounting a custom config.json file. There are also changes to make mounting a data directory more consistent. See DockerHub for more details.

Changelog

Protocol Upgrade

This release contains a double protocol upgrade (Consensus v37 and v38). No action is needed from node runners but is called out for transparency. Consensus v37 is a technical upgrade released in unison with Consensus v38. v37 is needed to allow nodes to build up a necessary state to support State Proof related options in consensus v38.

New Features

  • AVM: Share resource arrays across transactions (#5035)
  • Algod: Allow timestamp offsets in dev mode (#5296)
  • Algod: Simulation run with extra budget per transaction group (#5354)
  • Algod: Simulation run with increased limits on logs (#5247)
  • API: Txn Group Delta Apis (#5350)
  • Evaltracer: Txn group deltas Tracer (#5297)
  • Algod: New health endpoint (k8s /ready endpoint) (#4844)
  • Docker: add profile support and improved endpoint access. (#5323)
  • Algod: support state proofs recoverability (#4803)

Enhancements

  • API: Don't return a top level array from algod (#5404)
  • API: Limit request body size to 10MB (#5246)
  • AVM: Modify StackType to provide additional information (#5130)
  • AVM: No low resources (#5328)
  • AVM: Show opcode context for logicsigs (not just apps) (#5336)
  • Algocfg(profile): improve invalid profile error message. (#5324)
  • Algocfg(profile): Add file name to config file conflict message. (#5262)
  • Algod: Move delta API tags (#5396)
  • Algod: Add EvalTracer tests for StateDeltas (#5368)
  • Algod: Use future consensus version to test with no low resources (#5362)
  • Algod: Better Box Reference Error Message (#5325)
  • Algod: Modify simulate endpoint request type (#5292)
  • Algod: Minor refactoring REST client submitForm from go-sdk PR Add support for travis ARM64 integration tests #335 (#5253)
  • Algod: search phonebook in data directory in addition to bindir (#5235)
  • Algod: Remove unused 404 resp in simulate endpoint (#5211)
  • Catchpoints: Small tweaks, mostly to comments (#5195)
  • Chore: Focus CONTRIBUTING.md on code contributions. (#5294)
  • Ci: set reviewdog golangci-lint go version (#5196)
  • Consensus: Introduce versions v37 and v38 (#5397)
  • Dev Tools: Integrate Logfile Navigator (lnav) (#5000)
  • Devops: Update CODEOWNERS to only refer to the devops group (#5389)
  • Devops: Add CODEOWNERS to restrict workflow edits (#5353)
  • Docker: Updated user and data dir handling. (#5276)
  • Docker: disable rewards in devmode template (#5270)
  • Docker: option to override topology file and peer address. (#5209)
  • Docs: Fix bug label (#5322)
  • Docs: add titles of subsystems, minor md fixes (#5279)
  • Docs: increase heading levels, thus only one h1 is used (#5291)
  • Enhancement: Only look back to FirstValid for pending transactions that were found in the pool (#5295)
  • Eval: Add block hooks to eval tracer (#5303)
  • Fix: Tech Debt (wsNetwork "auto" and OnlineAccountsDelete comment) (#5207)
  • Follow Mode: set sync round after fast catchup. (#5349)
  • Follower: add round information for missing deltas request (#5277)
  • Goal: Make goal state schema optional (#5356)
  • Goal: Introduce new command for simulate (#5213)
  • Goal: user defined scheme to connect to remote host (#4922)
  • Ledger: Exclude stake at R-320 that is expired by R (#5403)
  • Ledger: Check MaxAcctLookback in tracker. (#5300)
  • Ledger: convert FC unmarshalled nil value to empty byte slice on DB write KVs (#5225)
  • Ledger: rename "internal" to "eval" (#5236)
  • Lint: enable nilerr linter and fix errors (#5361)
  • Netdeploy: Copy ledger directory for kv tracker database (#5392)
  • Network: enforce maximum header size on outgoing ws conns (#5268)
  • REST: add the round number to algod box endpoint response (#5340)
  • Scripts: enhance upload_config.sh (#5260)
  • Simulate: Make optional signatures an opt-in feature (#5335)
  • Simulate: Add opcode costs and budgets into response (#5221)
  • Tools: allow dumpblocks work with wal-enabled dbs (#5380)
  • Tools: Run the Cross Repo Type Checker in C.I. (#5326)
  • Tools: block generator data reporting (#5339)
  • Tools: add block-generator into published build (#5351)
  • Tools: search/replace indexer/conduit in block-generator (#5321)
  • Tools: Cross Repo Types Comparison Tool (#5304)
  • Tools: update block-generator to use conduit binary (#5306)
  • Tools: new endpoints for block generator (#5257)
  • Tools: block generator (#5245)
  • Tools: Don't use strings.Title in chopper (#5239)

Bugfixes

  • API: Fix vote status computation. (#5228)
  • AVM: Avoid panics while type checking bad immediates (#5271)
  • AVM: Avoid panics in disassembly when branch instructions are short (#5252)
  • Assembler: Error if extra args are present in pragmas (#5400)
  • Bugfix: reduce flakiness in follower node test (#5355)
  • Chore: Rename ModStateProofNextRound to StateProofNext. (#5265)
  • Dependency: Update codec version to 1.1.9 (#5395)
  • Devops: fix codecov uploading (#5345)
  • Erl: Support zero-size reservations (#5192)
  • Fix: Correct GeneratedAccountsMnemonics Check (#5274)
  • Follower: Set initial sync round to latest tracker committed round. (#5251)
  • Goal: Better formatting in goal clerk simulate (#5259)
  • Ledger: fix error shadowing in accountsNewRound (#5266)
  • Ledger: fix commit tasks enqueueing (#5214)
  • Logging: fix logging to line. (#5359)
  • Tests: Improve flaky test from non-deterministic order string (#5333)
  • Tests: Change dd argument to use a bytes value (#5263)
  • Tests: Change truncate to dd for mac amd tests (#5256)
  • Tests: Fix State-Proofs ledger tests (#5379)
  • Tests: Fix error messages in ledger tests (#5363)
  • Tests: fix consensus version inconsistency in newTestLedger (#5342)
  • Tests: Fix devmode test (#5334)
  • Txhandler: make dedup working set independent from ERL (#5200)
  • Txngroup-deltas: Fix pointer bug copying deltas for txngroups (#5375)

Additional Resources

cce and others added 30 commits March 10, 2023 19:55
Nodes aggregate and save state proof information to be able to recover a stalled state proof subchain.
In case of a problem nodes will not lose old state proof data so it will be possible to recover
the stalled state proof chain.

Data being saved:
* state proof builder state is persisted
* a new state proof verification tracker also persists some state proof related data from block headers

Co-authored-by: Or Aharonee <[email protected]>
Co-authored-by: Almog Tal <[email protected]>
Co-authored-by: Jonathan Weiss <[email protected]>
Co-authored-by: Pavel Zbitskiy <[email protected]>
Add a `/ready` readiness probe endpoint for kubernetes deployments
@codecov
Copy link

codecov bot commented May 22, 2023

Codecov Report

Merging #5406 (f256d9d) into rel/beta (3355ce6) will increase coverage by 1.87%.
The diff coverage is 42.70%.

@@             Coverage Diff              @@
##           rel/beta    #5406      +/-   ##
============================================
+ Coverage     53.57%   55.44%   +1.87%     
============================================
  Files           430      452      +22     
  Lines         54130    63826    +9696     
============================================
+ Hits          28998    35389    +6391     
- Misses        22889    26009    +3120     
- Partials       2243     2428     +185     
Impacted Files Coverage Δ
agreement/abstractions.go 50.00% <ø> (ø)
agreement/agreementtest/simulate.go 86.66% <ø> (+1.14%) ⬆️
agreement/proposal.go 74.35% <ø> (+2.39%) ⬆️
catchup/catchpointService.go 8.39% <ø> (+0.66%) ⬆️
cmd/algocfg/getCommand.go 33.33% <0.00%> (+5.33%) ⬆️
cmd/algocfg/resetCommand.go 10.52% <0.00%> (+2.19%) ⬆️
cmd/algocfg/setCommand.go 9.37% <0.00%> (+1.17%) ⬆️
cmd/algod/main.go 0.00% <0.00%> (ø)
cmd/goal/account.go 13.68% <0.00%> (-0.31%) ⬇️
cmd/goal/application.go 18.19% <0.00%> (+0.40%) ⬆️
... and 104 more

... and 346 files with indirect coverage changes

📣 We’re building smart automated test selection to slash your CI/CD build times. Learn more

Copy link
Contributor

@algorandskiy algorandskiy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess all of these should go into Bugfix section.

Tests: Fix State-Proofs ledger tests (https://github.com/algorand/go-algorand/pull/5379)
Tests: Fix error messages in ledger tests (https://github.com/algorand/go-algorand/pull/5363)
Tests: fix consensus version inconsistency in newTestLedger (https://github.com/algorand/go-algorand/pull/5342)
Tests: Fix devmode test (https://github.com/algorand/go-algorand/pull/5334)

All links [here] are placeholders (probably fine).

@algojohnlee algojohnlee merged commit 297a4a1 into algorand:rel/beta May 23, 2023
@onetechnical onetechnical deleted the relbeta3.16.0 branch May 23, 2023 00:17
@Eric-Warehime Eric-Warehime mentioned this pull request May 25, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.