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.1.0-beta #2995

Merged
merged 34 commits into from
Oct 14, 2021
Merged

go-algorand 3.1.0-beta #2995

merged 34 commits into from
Oct 14, 2021

Commits on Sep 15, 2021

  1. Configuration menu
    Copy the full SHA
    9fe1bf4 View commit details
    Browse the repository at this point in the history

Commits on Sep 16, 2021

  1. use matrix for CircleCI config (#2864)

    Based on the matrix job @algojack added in #2749, this turns the other per-platform jobs into matrix jobs too. The most significant change in this PR is switching from building in the home directory (/home/circleci on Linux and /Users/distiller on Mac) to instead build out of /opt/cibuild to make it easier for the matrix jobs to share configuration.
    cce authored Sep 16, 2021
    Configuration menu
    Copy the full SHA
    bc46c94 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    4b67562 View commit details
    Browse the repository at this point in the history

Commits on Sep 17, 2021

  1. Add indexerLedgerForEval interface (#2897)

    Add a new ledger interface for Indexer that is significantly simpler and allows implementing batching in a more straight-forward way. As a result, the Indexer code doesn't need to know the specifics of go-algorand and doesn't need to implement its own accounts cache for batching.
    tolikzinovyev authored Sep 17, 2021
    Configuration menu
    Copy the full SHA
    275e1f3 View commit details
    Browse the repository at this point in the history
  2. Fix random failures TestWaitAndAddConnectionTimeLongtWindow (#2903)

    TestWaitAndAddConnectionTimeLongtWindow is randomly failing when the execution of time sensitive statements is separated by more than the expected time gap.
    
    This issue is fixed by replacing the sleep with simulated time passing by changing the recorded time, thus giving the impression that the event happened timeout time ago.
    algonautshant authored Sep 17, 2021
    Configuration menu
    Copy the full SHA
    dbab85f View commit details
    Browse the repository at this point in the history

Commits on Sep 20, 2021

  1. Fix unit test (#2926)

    The unit test TestLatestSigsFromThisNode was data racing. The fix is trivial.
    tsachiherman authored Sep 20, 2021
    Configuration menu
    Copy the full SHA
    83837ac View commit details
    Browse the repository at this point in the history

Commits on Sep 21, 2021

  1. ledger: move account totals calculation to StateDelta (#2922)

    ## Summary
    
    The account totals are being tested once every round to ensure that the total amount of money in the system doesn't change. Prior to this PR, the accounts update newBlock method was responsible for testing that : this would ensure that we're not writing a new round to disk that violates the totals predicate.
    
    While this was working correctly, conducting this test at the time we're writing this information to the disk is too late. By that time, we've already agreed upon applying this (problematic) block to disk. Ideally, we could detect this situation ahead of time, and avoid agreeing on a block which would violate the totals predicate.
    
    In this PR, we've moving the totals calculation as the last step of the delta state calculation. Few thoughts:
    - From security perspective, it's just as secured, since the StateDeltas are always in-process and never shared across the network.
    - From agreement perspective - in case we have a bug in the evaluator that would cause it to generate a state deltas that would violate the totals predicate, the evaluator is going to fail assembling the state deltas on the generator, validator and applicator ( i.e. "consumer" ). Ideally, in the future, we would be able to propose the empty block in such case, allowing the problematic transactions to time-out.
    - From code-flow perspective - this seem to be a much better approach: a failure to store the block to the disk has only one potential outcome - panicking. Having the ability to detect that the state delta is invalid would give us a way out of that.
    
    ## Test Plan
    
    1. Unit tests updated.
    2. Tested against mainnet : catchup from scratch to force validation of the entire blockchain.
    tsachiherman authored Sep 21, 2021
    Configuration menu
    Copy the full SHA
    5c0de9c View commit details
    Browse the repository at this point in the history
  2. Support arm cross compile (#2923)

    ## Summary
    
    This PR is to take advantage of arm64's ability to run arm32 binaries. Using this, we are able to build for arm32 on arm64 hosts by running containers with arm32 OS's on them. This is much faster than our qemu set up because it doesn't rely on emulations. The binaries produced with this process work and the arm64/arm32 build times are as fast as the intel builds, reducing our build time by about an hour.
    
    ## Test Plan
    
    I ran our build pipeline against this branch using arm64 hosts and tested the produced artifacts using emulated cpu's to make sure they still work on their native architectures.
    Tested manually on raspberry pi 2 model b, and it's working as expected.
    bricerisingalgorand authored Sep 21, 2021
    Configuration menu
    Copy the full SHA
    e9900a3 View commit details
    Browse the repository at this point in the history
  3. Rotate Travis Env Variables and Remove codecov Env variable (#2934)

    Rotated slack token in environment variable and removed the codecov token from Travis file. codecov token is removed because it's not needed for public repos.
    algobarb authored Sep 21, 2021
    Configuration menu
    Copy the full SHA
    01d853f View commit details
    Browse the repository at this point in the history

Commits on Sep 22, 2021

  1. TestRequestBlockBytesErrors: Various fixes (#2928)

    ## Summary
    
    <!-- Explain the goal of this change and what problem it is solving. Format this cleanly so that it may be used for a commit message, as your changes will be squash-merged. -->
    
    The test TestRequestBlockBytesErrors has failed, and the reason is unidentifiable.
    Various fixes are here, including more verbose error reporting to identify the issue when it occurs again.
    
    - Add waitgrop to ledger to wait before closing the ledger and blockQ when goroutines are using them.
    - In universalFetcher, return the error immediately in case of an error.
    - Proper closing of objects in TestRequestBlockBytesErrors, and more verbose error reporting.
    
    
    The waitGroup is needed for the following situation:
    
    in blockService.go listenForCatchupReq
    
    When, immediately after calling `bq.handleCatchupReq`, `BlockService.Stop()` is called, `blockQueue` will be `nil` by the time `blockQueue.getEncodedBlockCert` is called. 
    ```
    
    0  0x0000000004e16846 in github.com/algorand/go-algorand/ledger.(*blockQueue).checkEntry
       at /Users/shantkarakashian/go/src/github.com/algorand/go-algorand/ledger/blockqueue.go:215
    1  0x0000000004e174a9 in github.com/algorand/go-algorand/ledger.(*blockQueue).getEncodedBlockCert
       at /Users/shantkarakashian/go/src/github.com/algorand/go-algorand/ledger/blockqueue.go:295
    2  0x0000000004e3a2a7 in github.com/algorand/go-algorand/ledger.(*Ledger).EncodedBlockCert
       at /Users/shantkarakashian/go/src/github.com/algorand/go-algorand/ledger/ledger.go:516
    3  0x0000000004f46eed in github.com/algorand/go-algorand/rpcs.topicBlockBytes
       at /Users/shantkarakashian/go/src/github.com/algorand/go-algorand/rpcs/blockService.go:355
    4  0x0000000004f45e1b in github.com/algorand/go-algorand/rpcs.(*BlockService).handleCatchupReq
       at /Users/shantkarakashian/go/src/github.com/algorand/go-algorand/rpcs/blockService.go:299
    5  0x0000000004f45318 in github.com/algorand/go-algorand/rpcs.(*BlockService).listenForCatchupReq
       at /Users/shantkarakashian/go/src/github.com/algorand/go-algorand/rpcs/blockService.go:245
    
    ```
    
    ## Test Plan
    Test is enhanced. 
    <!-- How did you test these changes? Please provide the exact scenarios you tested in as much detail as possible including commands, output and rationale. -->
    algonautshant authored Sep 22, 2021
    Configuration menu
    Copy the full SHA
    e4842fc View commit details
    Browse the repository at this point in the history
  2. Remove time ledger tracker as not used (#2937)

    Remove time ledger tracker as not used.
    algorandskiy authored Sep 22, 2021
    Configuration menu
    Copy the full SHA
    8b0dda7 View commit details
    Browse the repository at this point in the history
  3. readme grammar change (#2938)

    fix a typo.
    yaovi-a authored Sep 22, 2021
    Configuration menu
    Copy the full SHA
    e69b10d View commit details
    Browse the repository at this point in the history

Commits on Sep 23, 2021

  1. fix EvalForIndexer (#2941)

    Summary
    In the EvalForIndexer, we don't want to call finalValidation(). This would
    skip the calculation of the account totals in the state delta, which is a serious
    issue if it were to be used by algod, but it's perfectly fine for the indexer since
    it doesn't track any totals and therefore cannot calculate the new totals.
    
    Test Plan
    Test against the indexer.
    tsachiherman authored Sep 23, 2021
    Configuration menu
    Copy the full SHA
    e4fbb1d View commit details
    Browse the repository at this point in the history
  2. Cache creators in cow base. (#2939)

    The evaluator shouldn't ask the ledger who is the creator of an asset multiple times. This PR adds a cache for ledger's responses in cow base.
    tolikzinovyev authored Sep 23, 2021
    Configuration menu
    Copy the full SHA
    a196929 View commit details
    Browse the repository at this point in the history
  3. testing: fix TestLatestSigsFromThisNode (#2940)

    Timing issues between writing to and reading from the database cause the test to occasionally fail.
    Make the test more tolerant to such timing issues by polling.
    algonautshant authored Sep 23, 2021
    Configuration menu
    Copy the full SHA
    ee0a715 View commit details
    Browse the repository at this point in the history

Commits on Sep 25, 2021

  1. Add ABI encoding support (#2807)

    Encoding/Decoding method for ABI Values.
    Serialization/Deserialization of ABI Types.
    Make/Get methods for ABI Types/Values.
    Basic testcases for Encoding/Decoding.
    ahangsu authored Sep 25, 2021
    Configuration menu
    Copy the full SHA
    7451e3e View commit details
    Browse the repository at this point in the history
  2. e2e tests for log (#2950)

    * moving logs e2e to scripts
    shiqizng authored Sep 25, 2021
    Configuration menu
    Copy the full SHA
    2faace9 View commit details
    Browse the repository at this point in the history
  3. Add application account into a dryrun req created by goal (#2945)

    AVM 1.0 introduces application accounts
    goal clerk needs to consider this account when creates dryrun request object
    Added a new option --dryrun-accounts for adding accounts that were rekeyed to an app account (or any other accounts).
    algorandskiy authored Sep 25, 2021
    Configuration menu
    Copy the full SHA
    073717e View commit details
    Browse the repository at this point in the history

Commits on Sep 27, 2021

  1. Merge pull request #2949 from Algo-devops-service/relstable3.0.1

    go-algorand 3.0.1-stable
    algojohnlee authored Sep 27, 2021
    Configuration menu
    Copy the full SHA
    b619b94 View commit details
    Browse the repository at this point in the history
  2. e2e tests for axfer, acfg, and afrz inner txns (#2947)

    Similar to app-accounts test, but tests all sorts of asset txns instead of pays.
    shiqizng authored Sep 27, 2021
    Configuration menu
    Copy the full SHA
    7991a84 View commit details
    Browse the repository at this point in the history
  3. Lots of testing convenience improvements, including e2e python (#2936)

    Made it nice to write e2e test in python by creating a "goal" module
    that emulates the convenience of goal, but in python so that
    structured results come out for easy asserts.
    jannotti authored Sep 27, 2021
    Configuration menu
    Copy the full SHA
    96b16ff View commit details
    Browse the repository at this point in the history

Commits on Sep 28, 2021

  1. Enable cost and fee pooling in tealdbg (#2954)

    * Enable cost and fee pooling in tealdbg
    
    * CR fixes
    algorandskiy authored Sep 28, 2021
    Configuration menu
    Copy the full SHA
    e40b7ef View commit details
    Browse the repository at this point in the history
  2. testing: metrics_delta.py fixes (#2962)

    Fixes found during recent cluster bandwidth testing
    brianolson authored Sep 28, 2021
    Configuration menu
    Copy the full SHA
    412aef5 View commit details
    Browse the repository at this point in the history

Commits on Sep 29, 2021

  1. ledger: refactor the ledger Totals (#2846)

    ## Summary
    
    The plan to change the tracker database to maintain the latest 320 rounds for the online accounts only have some other required modification; one of them is the semantics of the `Totals` method:
    - At this time, it supports retrieving `AccountTotals` for any of the recent 320 rounds.
    - We need the method to support the `AccountTotals` for the latest round only, as well as provide the circulating supply for latest-320 rounds ( i.e. the circulating supply is a subset of the `AccountTotals` ).
    
    Once the database implementation is complete, the database would contain the `AccountTotals` information for the latest round only, plus the online circulation for the past 320 rounds.
    
    In order to support that, I've broken up the interface into:
    - `LatestTotals`, which would return the latest totals as well as the latest round associated with these totals.
    - `OnlineTotals`, which receive a round number and return the online totals associated with that round.
    
    This change is focused around the Ledger interface. Further changes would be required in the accounts update before the high-level goals could be achieved.
    
    ## Test Plan
    
    Unit tests updated.
    tsachiherman authored Sep 29, 2021
    Configuration menu
    Copy the full SHA
    1202d32 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    7f3180a View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    16de1d8 View commit details
    Browse the repository at this point in the history
  4. Merge pull request #2971 from algorand/release3.0.1-mergeback-manual

    Release3.0.1 mergeback manual
    algojohnlee authored Sep 29, 2021
    Configuration menu
    Copy the full SHA
    734e727 View commit details
    Browse the repository at this point in the history

Commits on Sep 30, 2021

  1. fix flaky axfer txn e2e test (#2973)

    lower acct bal so it receives no reward
    shiqizng authored Sep 30, 2021
    Configuration menu
    Copy the full SHA
    4ed1d8e View commit details
    Browse the repository at this point in the history
  2. Extended logic eval error (#2975)

    Return a bit more details on eval failure for app calls.
    algorandskiy authored Sep 30, 2021
    Configuration menu
    Copy the full SHA
    fbd75f7 View commit details
    Browse the repository at this point in the history

Commits on Oct 2, 2021

  1. Start work on Teal 6 (AVM 1.1) (#2974)

    Start work on Teal 6 (AVM 1.1)
    
     vFuture, LogicVersion changed to 6
     Support RekeyTo field, and Keyreg transactions
    jannotti authored Oct 2, 2021
    Configuration menu
    Copy the full SHA
    f17f73e View commit details
    Browse the repository at this point in the history

Commits on Oct 4, 2021

  1. transaction sync (#2718)

    ## Summary
    
    This PR implements the transaction sync 2.0.
    
    More details can be found in the design document and the feature presentation .
    
    ## Test Plan
    
    Unit tests, e2e tests and performance tests were executed against this branch successfully.
    
    ## Reviewer notes
    
    This PR is pretty large. Consider reviewing it in browsers other than Safari.
    tsachiherman authored Oct 4, 2021
    Configuration menu
    Copy the full SHA
    69aace5 View commit details
    Browse the repository at this point in the history

Commits on Oct 5, 2021

  1. Configuration menu
    Copy the full SHA
    0b99cf8 View commit details
    Browse the repository at this point in the history

Commits on Oct 8, 2021

  1. Increase machine size to large and use consistent parallelism for cir…

    …cleci nightly testing. (#3016)
    
    For CircleCI testing, increase machine size from medium to large and set parallelism to 4.
    egieseke authored and algojack committed Oct 8, 2021
    Configuration menu
    Copy the full SHA
    83740b4 View commit details
    Browse the repository at this point in the history

Commits on Oct 14, 2021

  1. Move deploy from TravisCI to CircleCI (#3075)

    Our travisci keeps breaking for different reasons so we decided to move our deploy to circleci.
    algojack committed Oct 14, 2021
    Configuration menu
    Copy the full SHA
    1e87c71 View commit details
    Browse the repository at this point in the history