Skip to content

Conversation

@Algo-devops-service
Copy link
Contributor

@Algo-devops-service Algo-devops-service commented Mar 15, 2022

GitHub Logo

Overview

This release is intended to address minor bugs discovered prior to the v3.5.0 release.

Changelog

New Features

  • AVM: Fido2 opcodes (#3514)
  • AVM: Opcode for ed25519 verify of arbitrary messages. (#3218)
  • AVM: sha3: 256 (#3762)

Enhancement

  • Crypto: Call batchverificationimpl from onetimesignatureverifier.verify (#3759)
  • Ledger: Move prefetcher to a new package (#3735)
  • Participation Key Registry: Complete cleanup (#3768)
  • Prefetcher: Add eval vs prefetcher alignment tests (#3729)
  • REST API: Use errorresponse instead of accountserrorresponse (#3737)
  • Tests: Update test5massetsscenario e2e test (#3750)
  • Tests: Improve 6m asset testing performance (#3749)
  • Tests: improve goal-partkey: Info test logging (#3753)
  • Tests: E2e testing c2c with clearstateprogram (#3693)
  • Tests: Test 6m assets/apps per account (#3739)

Bugfix

  • Account Manager: Avoid taking locks for long period of time (#3717)
  • Agreement: Add warning when decoding proposal of an unsupported consensus version (#3730)
  • Ledger: Fix lookuplatest when the ledger advances (#3769)
  • Prefetcher: ensure the grouptask.incompletecount is allocated on a 64: Bit aligned address (#3740)
  • REST API: Dryrun scratch slot type fix (#3736)
  • REST API: Fix typo in openapi json and yml files (#3741)
  • Telemetry: Fix version configuration (#3718)

Protocol Upgrade

This release does not contain a protocol upgrade.


NOTE
vFuture changes are not yet available in MainNet or TestNet but can be used in private networks.


Additional Resources

cce and others added 22 commits March 4, 2022 15:09
## Summary

In algorand#3341 I neglected to notice there are two places that generate telemetry configuration, ReadTelemetryConfigOrDefault and EnsureTelemetryConfigCreated. This updates the latter.

## Test Plan

Updated tests to check and handle new default.
…#3717)

## Summary

The `DeleteOldKeys` method was taking the lock for the duration of the keys deletion. This is not required, as the mutex really just need to be held to synchronize the list of participation keys. The underlying `OneTimeSignatureSecrets` already have a synchronization lock, which is taken as need.

## Test Plan

Unit test added.

The output of the test help to detect the timing issues addressed in this PR. Before this PR, calling Key() 10 times took 4.1 seconds. With this PR, it takes 255us.
## Summary

Tests for eval prefetcher checking that the prefetcher loads the same data (with some exceptions) that the evaluator requests.

Closes https://github.com/algorand/go-algorand-internal/issues/1922.

## Test Plan

This is tests.
* fixed off-by-one error in the assembler's typeDig() and improved unit test

* e2e test for CSP

* added additional test and cleaned up unused variables

* broadened test and corrected erroneous assumption about csp inner app calls
## Summary

Move eval prefetcher to its own package for better isolation. Some other refactoring was necessary.

## Test Plan

This is refactoring.
## Summary

Complementing algorand/indexer#916 this merges the AccountsErrorResponse fields into the "data" object in ErrorResponse, so SDKs do not to have to distinguish between different error response types.

## Test Plan

Update existing tests checking the old AccountsErrorResponse fields.
…-bit aligned address (algorand#3740)

## Summary

prefetcher: ensure the groupTask.incompleteCount is allocated on a 64-bit aligned address.

This is required in order to avoid the following on a ARM32:
```
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0xb541efb0]

goroutine 4220 [running]:
runtime/internal/atomic.goLoad64(0x8ae33be4, 0xb67e0fec, 0x8cf54500)
	runtime/internal/atomic/atomic_arm.go:131 +0x1c
github.com/algorand/go-algorand/ledger/internal.(*accountPrefetcher).prefetch(0x8cf54500, 0xb68023f0, 0x8cf532c0)
	github.com/algorand/go-algorand/ledger/internal/evalprefetcher.go:384 +0x1268
created by github.com/algorand/go-algorand/ledger/internal.prefetchAccounts
	github.com/algorand/go-algorand/ledger/internal/evalprefetcher.go:87 +0x128
```

## Test Plan

Test manually.
Three opcodes that all pertain to FIDO2 authorization.  They are slated for Teal7 here, but they can be delayed by changing fidoVersion.

Co-authored-by: Igor Durovic <igor.durovic@algorand.com>
Co-authored-by: algoidurovic <91566643+algoidurovic@users.noreply.github.com>
Co-authored-by: shiqi.zheng@algorand.com <shiqi.zheng@algorand.com>
## Solution 

ledger refactoring: test 6M assets/apps per account
resolves https://github.com/algorand/go-algorand-internal/issues/1857


## Testing

This is a test
Summary
This PR replaces the usage of the LibGoal with the direct RestClient. The change could have performance implications when running against large sets of data.

Test Plan
This is a test.
* Fix typo in OpenAPI json and yml files

* Included output of make generate
## Summary

This PR improves the test in the following ways:
1. The checkPoint method is no longer timer-based; instead, it's using the WaitForBlock which moves the blocking operation to the node.
2. The generated accounts secret keys are now deterministic. This would allows repeated runs to have the same set of keys.
3. More testing was added for return variables across the test.

## Test Plan

This is a test.
Summary
The goal-partkey-information test randomly fails.
The changes in this PR improve the intermediate logs, which would be helpful in analyzing the source of the failure.

Test Plan
This is a test.
…rand#3759)

Summary
The ed25519 batch verification implementation in algorand#3031 provides a performance improvement for validating multiple signatures (such as multiple transaction signatures). Since each OneTimeSignature used by agreement votes is actually 3 ed25519 signatures, this hooks up the verifier to the batch verification implementation, yielding a ~12% performance improvement in the included benchmark on my computer.

Test Plan
Added benchmark, existing tests should pass.
Simplify handling of "active slots" to fix possible obo error. Unit tests added to confirm typing.
* SHA3-256 added

Co-authored-by: Matt-Ryley <36548383+Matt-Ryley@users.noreply.github.com>
…nsus version (algorand#3730)

## Summary

When the agreement receives a proposal from a consensus version it cannot yet support, the node disconnects from the sender and logs the fact that it was unable to decode the proposal without providing guidance on the consensus version issue. This PR adds a warning message to the log specifying that the agreement cannot handle the consensus version's proposals
## Summary

LookupLatest combines base account and resources data, and in some cases it cannot
determine reliably how many resources account has, therefore it reads data directly from the DB.
The DB might advance causing cachedDBRound (and base account data) and  resourceDbRound
to be out of sync, and a retry needed.
If on retry baseAccount data is outdated, foundAccount flag incorrectly contains a value from
a previous iteration causing completion by checkDone because of empty ad (ledgercore.AccountData).
Having ad and foundAccount synchronized on retry eliminates the problem.

In addition checkDone improved for scenarios when accounts have only own assets.

## Test Plan

Added new test
## Summary

This PR completes the previous started efforts and ensure all the requests are tunneled directly to the participation registry for optimal performance.

## Test Plan

Unit tests added.
@algojack algojack self-assigned this Mar 15, 2022
@codecov-commenter
Copy link

codecov-commenter commented Mar 15, 2022

Codecov Report

Merging #3774 (36f25dc) into rel/beta (13d95bf) will increase coverage by 0.18%.
The diff coverage is 66.36%.

Impacted file tree graph

@@             Coverage Diff              @@
##           rel/beta    #3774      +/-   ##
============================================
+ Coverage     49.60%   49.78%   +0.18%     
============================================
  Files           392      392              
  Lines         68588    68780     +192     
============================================
+ Hits          34024    34245     +221     
+ Misses        30823    30774      -49     
- Partials       3741     3761      +20     
Impacted Files Coverage Δ
agreement/demux.go 90.54% <0.00%> (-2.31%) ⬇️
crypto/falconWrapper.go 76.00% <ø> (ø)
daemon/algod/api/server/v2/handlers.go 0.00% <0.00%> (ø)
data/transactions/logic/doc.go 56.00% <ø> (ø)
data/transactions/logic/opcodes.go 100.00% <ø> (ø)
util/db/dbpair.go 0.00% <0.00%> (ø)
util/db/dbutil.go 44.78% <0.00%> (-0.28%) ⬇️
node/node.go 23.33% <7.69%> (-1.86%) ⬇️
data/transactions/logic/fields_string.go 7.14% <10.00%> (+0.22%) ⬆️
ledger/internal/eval.go 66.62% <16.66%> (+0.17%) ⬆️
... and 27 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 13d95bf...36f25dc. Read the comment docs.

@algojack algojack marked this pull request as ready for review March 15, 2022 12:54
@algojohnlee algojohnlee merged commit 85372fc into algorand:rel/beta Mar 15, 2022
@onetechnical onetechnical deleted the relbeta3.5.1 branch March 15, 2022 14:14
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.