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.6.0-beta Release PR #3909

Closed

Conversation

Algo-devops-service
Copy link
Contributor

@Algo-devops-service Algo-devops-service commented Apr 22, 2022

GitHub Logo

Overview

What's New

Changelog

New Features

  • Source Mapping: Pc to teal (#3726)

Enhancements

  • AVM: Deadcode and basic block analysis (#3870)
  • AVM: Perform json_ref expected type validation before expensive json processing (#3866)
  • AVM: Extract divideceilunsafely to help document opcode costing rationale (#3867)
  • AVM: Assembly simplification & flexible costs (#3857)
  • AVM: Rework around opcode fields for more flexible costs (#3832)
  • AVM: Improve error handling and execution time (#3612)
  • Agreement: Add counters for dropped tasks and slow responses (#3861)
  • Algonet: Use lower value of lastpartkeyround for bootstrappedscenario (#3865)
  • Build: Use 1.16.15 instead of 1.16.11 (#3833)
  • Build: Add build essentials to dependency list (#3782)
  • Build: Update build dependencies to use go 1.16 (#3816)
  • Build: Compile with golang 1.16 (#3803)
  • Ci: Remove buildpulse upload step (#3883)
  • Ci: Add test partitioning based on partition test verifier output (#3859)
  • Config: Add some warning comments about changing rewardunit value (#3846)
  • Devmode: Create a block for external txns only (#3784)
  • Devops: Added recipe for transaction sync testing. (#3884)
  • Enhancement: Nightly e2e test upload (#3849)
  • Enhancement: Re-enable fillbytes method in abi and eval.go implementation (#3856)
  • Goal: Add asset optin command (#3881)
  • Goal: Set default key dilution to be the same as algokey (#3801)
  • Goal: Warn on invalid method signature assembly (#3614)
  • Kmd: Use updated karalabe lib (#3819)
  • Ledger: Test onlineaccountdata (#3831)
  • Ledger: Refactor online totals (#3770)
  • Prefetcher: Improve error codes (#3815)
  • REST API: Check for pending transactions in most recent rounds first. (#3836)
  • REST Client: Always set exclude value in accountinformationparams (#3728)
  • Tealdbg: Support for stepover and refactoring object ids (#3653)
  • Tealdbg: Replace localrunner.run with localrunner.runall (#3805)
  • Telemetry: Report heartbeat metrics as json numbers (#3802)
  • Tests: Disable bandwidth pprof svg generation by default (#3779)

Bugfixes

  • AVM: Fix langspec (and some disassembly errors) for itxn_field (#3869)
  • AVM: Add acct_params_get to langspec.json (#3862)
  • AVM: Getbyte and setbyte description to say index must be within length of array (#3772)
  • Algod: Fix issue with nil accounts in local-deltas array (#3790)
  • Algokey: Clarify error messages. (#3727)
  • Bug-fix: Abi infertoslice nil testcases (#3826)
  • Bug-fix: Abi encode infer to slice isnil handler removal (#3823)
  • Goal: Rename source map output file (#3905)
  • Goal: Add check for signer passed in the case of logic sig rekeyed account (#3773)
  • Tests: Fix testacctupdateslookuplatestcacheretry (#3804)
  • Tests: Avoid generating large output on testdeadlocklogging (#3771)

Other

Protocol Upgrade

This release does not contain a protocol upgrade.

Additional Resources

tsachiherman and others added 30 commits March 15, 2022 08:47
## Summary

The TestDeadlockLogging was generating large amount of "junk" on top of the expected stack trace.
This PR addresses that by dropping the redundant data.

Example: https://circleci.com/api/v1.1/project/github/algorand/go-algorand/92568/output/106/0?file=true&allocation-id=622fb105959ff4390b6b098f-0-build%2F5VSI2HBA
## Test Plan

Unit test exists.
* Some simple optimizations for app execution

Also some benchmarks that show relative costs for the CPU part of
processing transactions

* Convert opcodes to return error, rather than set cx.err


* Pavel recomendation. Considering bigger change to refreshDebugState


Tests more opcodes, including branches and others that have not return
values.  Automates handling of more opcodes by understanding immediate
arguments.  Fixes the ordering of return value testing.

* Unify naming


Co-authored-by: Michael Diamant <[email protected]>

* make sure return types tested even when simple errors occur

Co-authored-by: michaeldiamant <[email protected]>
* Warn on invalid method signature assembly

* Print warnings to stderr
…count (algorand#3773)

## Summary
When trying to sign a transaction file with goal, if the sender is a normal address but the signer is a logic program, the call fails with an error message like:

`send.txn: txn[0] error LogicNot signed and not a Logic-only account`


The error message comes from https://github.com/algorand/go-algorand/blob/33b87c432065d3be0ce1fdad682604f416676133/data/transactions/verify/txn.go#L314


It notes that a valid case is when Auth is set to the hash of the program but we aren't setting the auth on the transaction even if the -S flag is passed

## Test Plan
Made a txn where sender is a regular account and signed it with

```sh
goal clerk sign -i tmp.txn -o tmp.txn -S BJATCHES5YJZJ7JITYMVLSSIQAVAWBQRVGPQUDT5AZ2QSLDSXWWM46THOY -p tmp.teal
```

I borked the git history on the last one algorand#3459 so just nuked it and starting over here.

Left it at @tsachiherman wanting better tests for this algorand#3459 (comment)
In DevMode, do not create a block for internal events (i.e. compact-cert creation).
This is to assure reproducibility and eliminate the random shifts in round numbers.
## Summary

The existing Ledger.OnlineTotals is going ( at the end of the 320 project ), be using the onlineAccountsTracker to get its information from.
But unlike the existing l.accts.Totals(rnd) call, it won't get the totals, but only the amount of online totals ( i.e. basics.MicroAlgos ).

Prepare the Ledger implementation for that change by deprecating the accountUpdates.Totals and naming it OnlineTotals. As such, it would return just the online portion of that structure ( i.e. totals.Online.Money ).

## Test Plan

Ran existing tests on Ledger.OnlineTotals
## Summary

The changes in algorand#3770 didn't include the changes in algorand#3769 and so tests don't compile on master currently — this updates another test that uses `Totals` to use `LatestTotals` instead.

## Test Plan

Fixes tests.
## Summary

This PR upgrade the go-algorand repository to use go 1.16 while adding workarounds for golang/go#44343.

## Test Plan

Use performance testing to verify no regressions.
## Summary

update go(mod/sum) to use golang 1.16 on the following dependencies:

1. go-codec
2. go-deadlock
3. msgp
4. websocket
5. graphtrace
6. oapi-codegen

## Test Plan

Use existing tests.
* remove slice nil handling, add comments to explain

* update testcases

* partition, dog
`goal` supports signing transactions on a Ledger device.
This is done by using github.com/karalabe/usb which is deprecated.
Since we go-algorand is being updated to 1.16 we update the library
and manually test this version with Ledger.

Tested `goal` with Ledger Nano X and S.
…gorand#3728)

* nit: always set Exclude value in accountInformationParams

* fix comments from CR
* This is a prerequisite test before retiring AccountData.OnlineAccountData()
that is used only in tests agreement and committee tests.
* Historically all these tests depends on genesis data that is basic.AccountData.
* Our GA genesis files have stake, status and voting data and never had resources
basic.AccountData can be reduced to the original stake + voting data state and
a new basic.AccountDataEx can be introduced for using in REST API
* Ledger tests and test network generation tools need to be updated to
accept a new reduced (original) basic.AccountData as genesis and resource records
for assets and apps needed for tests after the ledger initialization.
…tation (algorand#3856)

* Revert "Revert `fillBytes` method to `bigIntToBytes` for lower golang version (algorand#3498)"


* leadingZeros update

* minor updates with elliptics

* byteLength
* dont make array with length if we're just appending to it

* make it ahead of time like other slice init in the same file

* tweaking unit tests to be less forgiving to local deltas slice
Unify most assembly routines to minimize difference and ease doc gen
Flexible opcode costs and fewer assembly routines

Co-authored-by: michaeldiamant <[email protected]>
Also pretty print langsoec so that chnages are easier to see.
AlgoStephenAkiki and others added 16 commits April 11, 2022 19:35
Every night, the e2e test results should be uploaded to the s3 bucket so that indexer tests can be run against the latest test results.
…algorand#3865)

* add set -x to create_and_deploy_recipe.sh

* change last bootstrappedScenario partkey round from 3M to 10K

* increase bootstrappedScenario LastPartKeyRound to 20K and print out timing

* change LastPartKeyRound to 50K to match scenario1/2/3
* report heartbeat metrics as JSON numbers

* add test to assert JSON serialization

* add TestSanitizeTelemetryName and remove build tag from registry_test

* remove fmt.Println

* remove calls to DefaultRegsitry from TestWriteAdd

* Revert "remove calls to DefaultRegsitry from TestWriteAdd"

This reverts commit e6bb658.

* deregister metrics in TestWriteAdd
* make default key dilution uniform between algokey and goal

* remove unused proto check

* extra commit to trigger stuck cla-assistant
* Simplify assembly and add flexible opcode cost support

Unify most assembly routines to minimize difference and ease doc gen
Flexible opcode costs and fewer assembly routines

* Mark exiting opcodes

* Tracks types more accurately during assembly

Ignores deadcode.
Understands how jumps obscure typing info.
Detects error within basic blocks
Adds #pragma typetrack false
Makes spec creation a bit more uniform

* CR cleanup

* Retain type tracking state during consecutive type tracking enablements

* ensure type tracking continues after callsub

* Centralize OpStream initialization by introducing factory method

* Update missed references

* Remove redundant initialization

* CR updates

* Simplify the representation of deadcode in Programknowledge

* Update data/transactions/logic/assembler.go

Co-authored-by: Michael Diamant <[email protected]>

Co-authored-by: michaeldiamant <[email protected]>
@codecov-commenter
Copy link

codecov-commenter commented Apr 22, 2022

Codecov Report

Merging #3909 (70d9f6e) into rel/beta (53cb3c5) will increase coverage by 0.27%.
The diff coverage is 70.68%.

@@             Coverage Diff              @@
##           rel/beta    #3909      +/-   ##
============================================
+ Coverage     49.79%   50.07%   +0.27%     
============================================
  Files           392      394       +2     
  Lines         68780    68458     -322     
============================================
+ Hits          34251    34282      +31     
+ Misses        30769    30478     -291     
+ Partials       3760     3698      -62     
Impacted Files Coverage Δ
agreement/cryptoVerifier.go 67.60% <0.00%> (-9.70%) ⬇️
cmd/algod/main.go 0.00% <0.00%> (ø)
cmd/goal/application.go 11.16% <0.00%> (ø)
cmd/goal/commands.go 10.40% <0.00%> (-0.04%) ⬇️
cmd/goal/logging.go 8.92% <0.00%> (ø)
cmd/tealdbg/cdtState.go 84.47% <0.00%> (-0.15%) ⬇️
cmd/tealdbg/util.go 84.61% <ø> (-5.13%) ⬇️
cmd/tealdbg/webdbg.go 57.79% <0.00%> (-4.71%) ⬇️
config/consensus.go 85.53% <ø> (ø)
config/version.go 9.09% <ø> (ø)
... and 69 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 53cb3c5...70d9f6e. Read the comment docs.

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.