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

Onetechnical/relbeta2.1.0 #1347

Merged
merged 375 commits into from
Aug 4, 2020
Merged

Onetechnical/relbeta2.1.0 #1347

merged 375 commits into from
Aug 4, 2020

Conversation

onetechnical
Copy link
Contributor

Summary

Highlights

  • Stateful Smart Contracts: Algorand Smart Contracts (ASC1) offer the foundational attributes of security, scale, and decentralization found in Algorand’s Layer-1 protocol, allowing developers to take advantage of the network’s speed, cost-effectiveness, and simplicity. Enabling complex governed transactions with simplified tools that can build a wide range of applications, and removing the technical barriers that undermine blockchain adoption. Algorand’s Smart Contracts are highly flexible, reliable in that they are executed on a tamper-proof (trustless) network providing the transparency needed, with error-free, immutable, and accurate applications.
  • Rekeying Support: Algorand's Rekeying offers a seamless, easier experience for users and custody providers by allowing flexible changes of Private Spending Keys anytime without changing Public Addresses, giving Public address more continuity, and reducing operational overhead with the changes of Private Spending Keys.
  • Fast Catchup:

Changes

  1. General
    • New Feature - Stateful Smart Contracts
    • Enhancements
      • add txn.ForeignAssets field
      • update stateful TEAL docs
      • allow substring ops to return an empty string in TEAL
      • disallow old TEAL versions for ApplicationCall transactions, disallow groups containing {Apps, RekeyTo} and v0/v1 TEAL
  2. Agreement
    • Enhancement - remove deprecated proposal LowestOutput
  3. Catchup
    • New Features
      • Fast Catchup support
      • add CatchpointDump utility
    • Enhancements
      • move timeout to config and make more restrictive
      • expect test for fast catchup
    • Bug Fixes
      • avoid ledger calls during catchpoint catchup
      • handle stopping and aborting in catchpoint catchup service
  4. Config
  5. Goal
    • New Features
      • add goal app info for inspecting app properties
      • add rekey multisig support for goal
    • Enhancements
      • make account changeonlinestatus online flag optional
      • unify txFilename and outFilename vars usage
      • update goal documentation for multi-arg optional commands
      • reformat some of the short commands descriptions
      • add created/opted in apps to goal account list
    • Bug Fixes
  6. Ledger
    • Enhancements
      • refactor account update locking
      • drop legacy ledger storage
      • add reencoding database accounts support
      • add blocks header to the header cache
      • add comments around the accounts database upgrade procedures
      • remove unused GetRoundTxIds from ledgerForEvaluator interface
      • optimize accountsUpdateBalances implementation
      • optimize accounts totals updates
      • improve trie failures warning message formatting
      • implement database versioning support
      • avoid warning messages on expected long transactions
    • Bug Fix - fix rare synchronization issue in accountUpdates
  7. Network
    • Enhancement - improve network connectionPerformanceMonitor performance
  8. REST API
  9. Telemetry & Logging
    • Enhancement - algod telemetry config location logging
    • Bug Fix - don't override Channel if already set
  10. Tests
    • Enhancements
      • unit tests for v2 handler functions (Algod REST API v2 unit tests #1111)
      • update msgp auto-generated code to add headers
      • move unused allBalances function to testing
      • FastCatchup - add unit testing for ledgerFetcher
      • add e2e teal/compile test
      • improve TestConnMonitorStageTiming benchmark performance
      • stateful teal expect test
      • improve dryrun and tealdbg compatibility
      • tealdbg: use round number and latestTimestamp from dryrun-req if available
      • add test for when the user does not provide a correct application json
      • expect test for goal account dump
      • stateful teal test app info
      • add a unit test for catchpointWriter
      • disable the deadlock detection on TestArchivalCreatables
      • add e2e upgrade test for application over REST & Gossip (Stateful TEAL - Upgrade Testing #1037)
      • add documentation for test env vars for running the expect tests
      • refactor expect runners by creating a unified expect fixture
      • manual testing script for Gossip and TxSync
    • Bug Fixes
      • improve asset support in ping pong utility
      • fix sporadic TestCatchupOverGossip e2e test failure(s)
      • fixed error verifying recovered wallet in create wallet expect test
      • fixed bug in key registration teal test
      • fix random catchpoint catchup expect test case
      • fix random fails in TestCatchupOverGossip
      • fix TestTealCompile
      • fix e2e unit test data race
      • disable TestArchival unit test on linux-amd64
      • remove redundant ledger.close in TestArchivalCreatables
      • relax TestLedgerBlockHdrCaching rounds count
      • fix exit code race in dryrun expect test
      • disable deadlock detection on TestArchivalRestart and TestArchivalCreatables unit tests
      • merge issue with TestApplicationsUpgradeOver e2e test
      • teal version was incorrect in applications test
      • extend timeout for stateful teal test
  11. Tools
  12. Other
    • New Features
      • new Jenkins pipeline implementation
      • ability to build docker image for BetaNet
    • Enhancements
      • run make fmt
      • add byteslice checking to the msgp decoder
      • update code to take advantage of byteslice allocbounding
      • fix contents of hashes file from packaging
      • reduce parallel testing in travis
      • add support for specifying go version in single place
      • remove code for generating releases page
      • test build packages on multiple architectures
      • add orphan entries to the algorelay check command
      • move transaction apply methods into their own package
      • update go-deadlock to use go modules
      • update upgrade path to v24
      • remove ignored sudo from Travis file
      • Update minor version number
      • TEAL: allow empty string literals
    • Bug Fixes
      • remove unused var in compute_branch_channel.sh
      • build packages script typo
      • fix incorrect asset error message when trying to overspend an asset
      • add license headers to dbgen generated files to fix make generate
      • fix path to gpg-fake script
      • fix package name
      • increase travis builtin vm.max_map_count (Increase travis builtin vm.max_map_count #1175)
      • only add the latest version to the rpm repository
      • fix deploy location for latest rpm package
      • add algod client health check to prevent node shutdown due to timeout in healthy node
      • update configure dev script to work with ubuntu 20.04 (Fix configure-dev script to work with Ubuntu 20.04 #1201)
      • fix golang version specification to support 1.14
      • rename AppStateChage to AppStateChange
      • add duplicate check on ephemeral security group and key pair creation for buildhost
      • Fix TxnRoot for block 0
      • ensure ApplyData.EvalDelta is clear if applyEvalDelta fails
      • fix negative "tx surpassed expected deadline" messages
      • fix linux arm64 nightly build deploy due to golang install scoping
      • TEAL - fix txn and txna assemble and disassemble routines
      • TEAL: assembler error on branching behind last instruction

Protocol Upgrade

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

Other Notes

A database migration is included this release, which will add a one-time startup delay of 2-10 seconds. This is for re-encoding of the accounts database, if needed. Note: the database schema will remain compatible with the previous release.

Additional Resources

Test Plan

N/A

algojohnlee and others added 30 commits June 25, 2020 12:46
…ages-script

The gpg-fake script was recently moved, but the path was incorrectly updated.
python3.7-venv turned into python3.8-venv in ubuntu 20.04, use the default version instead.
Now that the protocol upgrade fixing the bug has gone through, we no longer need to keep the buggy version around for compatibility.
The script to configure dev dependencies installs various supporting golang modules. However, these versions do not take into account entries in go.mod, which means the versions can conflict.

This is a restoration of a previous pull request, with the bug fix around handling error conditions.
The connectionPerformanceMonitor is suspected to slow down critical communication paths.
I was able to optimize it further and it looks now quite decent. ( i.e. 170Kns->6Kns )
The reminder of the 5Kns is mainly attributed to the deadlock locking logic, which I'm inclined to change in the PR unless proven it's really needed.
The test was creating a proxy which delays requests execution as a way to slow down the catchpoint catchup process.
This is important so that we can monitor from the goal command that the catchup is working as intended.
However, delaying the command execution caused an issue where the node was trying to issue multiple requests for blocks 1-16, in parallel, which reached the proxy at an arbitrary order. As a result, the request for block #1 was delayed by more than 4 second, causing it it timeout.

The solution was to reconfigure the number of parallel blocks being retrieved to 2. This would ensure that we only getting two blocks at a time. Since the delay is configured to 1.5 seconds, this would also be the delay, which is well under 4 second.
TestCatchupOverGossip was using an incorrect verification and shown random failures.
Add an e2e teal/compile endpoint test
Replace references to BUILDCHANNEL with CHANNEL to simplify scripts.
Update the documentation for passing multiple arguments for goal commands, and standardize the usage styling.
This PR adds automatic detection of betanet genesis files and update the DNSBootstrapID if it has not been set by the user.
The implementation follow the same logic as with devnet, and would allow us to deploy betanet nodes without requiring the end user to provide a config.json file which sets the DNSBootstrapID explicitly.
This change reduces the time it takes to execute the TestConnMonitorStageTiming by factor of 14.
It's expected to take about 10 seconds on travis, whereas it used to take 150 seconds.
go.mod is now used to specify the go version.
Updated go version to 1.12.17
This makes sure that the test build scripts work on arm* architectures. The main change is to test the ARCH variable for some variation of arm* in mule/test/test.sh and will call the run_tests script directly. This bypasses the path that amd64 builds take, which is to further spin up more docker containers and run the run_tests in each of them. I feel this is unnecessary for arm*, and further the run_tests script initiates all the tests that all architectures must run.

The rest (and the majority) of the changes were necessary to allow the run_tests shell script to be called directly. These changes now have each shell script determine the values which it needs rather than having them passed from a Makefile. This is better practice and is inline with what is being done in the indexer project, as well.
Implement Algorand applications, as specified in 
algorandfoundation/specs#30.
This change fixes a presumed typo.
A program with no #pragma version 2 should result in compiling a version 1 program.
Co-authored-by: Max Justicz <max@justi.cz>
The catchpointdump utility allows to perform the following:

Given a catchpoint file, it knows how to read it's content and dump the output in a human readable format into a separate file.
Given a network name and a round number, it would fetch the catchpoint for that round from all the relays of that network, save the catchpoint file, and dump it's content.
Given an ledger tracker database, it can dump the database content into a file
Fix a data race in Basic Catchpoint Catchup Test
goal app info is like goal asset info, printing out properties describing an app.
We have found a rare synchronization issue in accountUpdates. The issue is expressed when querying for a balance beyond the MaxBalLookback boundaries, where is can result in providing an incorrect result.
derbear and others added 19 commits August 3, 2020 14:13
…ture

Refactor expect runners by creating a unified expect fixture
…eal-test

Extend timeout for stateful teal expect tests
* Update stateful TEAL docs.
* Support empty substrings in TEAL.
* Foundation feedback
* Update asset_params_get
Disallow old TEAL versions for ApplicationCall transactions, disallow groups containing {Apps, RekeyTo} and v0/v1 TEAL
Add created/opted in apps to `goal account list`
Fix a bug where goal inspect fails to process a rekeyed transaction
The next release will update the minor version number. This will move us from 2.0.x to 2.1.x.
"byte 0x" produces empty byte slice and substring also can return empty slice
so it is better to be consistent and allow empty literals as well
@algojohnlee algojohnlee merged commit c845f99 into algorand:rel/beta Aug 4, 2020
@onetechnical onetechnical deleted the onetechnical/relbeta2.1.0 branch October 23, 2020 14:08
tsachiherman pushed a commit to tsachiherman/go-algorand that referenced this pull request Jul 7, 2021
PhearZero pushed a commit to PhearNet/crypto that referenced this pull request Jan 17, 2025
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.