good morning!!!!

Skip to content
Snippets Groups Projects
  1. Jul 28, 2020
    • Gary Rong's avatar
      les: implement new les fetcher (#20692) · 28c5a8a5
      Gary Rong authored
      * cmd, consensus, eth, les: implement light fetcher
      
      * les: address comment
      
      * les: address comment
      
      * les: address comments
      
      * les: check td after delivery
      
      * les: add linearExpiredValue for error counter
      
      * les: fix import
      
      * les: fix dead lock
      
      * les: order announces by td
      
      * les: encapsulate invalid counter
      
      * les: address comment
      
      * les: add more checks during the delivery
      
      * les: fix log
      
      * eth, les: fix lint
      
      * eth/fetcher: address comment
      28c5a8a5
    • Gary Rong's avatar
      cmd, core, eth, light, trie: dump clean cache periodically (#20391) · 93da0cf8
      Gary Rong authored
      
      * cmd, core, eth, light, trie: dump clean cache periodically
      
      * eth: update config
      
      * trie: minor fix
      
      * core, trie: address comments
      
      * eth: remove useless
      
      * trie: print clean cache dump start too
      
      Co-authored-by: default avatarPéter Szilágyi <peterke@gmail.com>
      93da0cf8
  2. Jul 24, 2020
    • Martin Holst Swende's avatar
      eth/downloader: refactor downloader + queue (#21263) · 10592218
      Martin Holst Swende authored
      
      * eth/downloader: refactor downloader + queue
      
      downloader, fetcher: throttle-metrics, fetcher filter improvements, standalone resultcache
      
      downloader: more accurate deliverytime calculation, less mem overhead in state requests
      
      downloader/queue: increase underlying buffer of results, new throttle mechanism
      
      eth/downloader: updates to tests
      
      eth/downloader: fix up some review concerns
      
      eth/downloader/queue: minor fixes
      
      eth/downloader: minor fixes after review call
      
      eth/downloader: testcases for queue.go
      
      eth/downloader: minor change, don't set progress unless progress...
      
      eth/downloader: fix flaw which prevented useless peers from being dropped
      
      eth/downloader: try to fix tests
      
      eth/downloader: verify non-deliveries against advertised remote head
      
      eth/downloader: fix flaw with checking closed-status causing hang
      
      eth/downloader: hashing avoidance
      
      eth/downloader: review concerns + simplify resultcache and queue
      
      eth/downloader: add back some locks, address review concerns
      
      downloader/queue: fix remaining lock flaw
      
      * eth/downloader: nitpick fixes
      
      * eth/downloader: remove the *2*3/4 throttling threshold dance
      
      * eth/downloader: print correct throttle threshold in stats
      
      Co-authored-by: default avatarPéter Szilágyi <peterke@gmail.com>
      10592218
  3. Jul 16, 2020
    • Martin Holst Swende's avatar
      core/vm: less allocations for various call variants (#21222) · 29569375
      Martin Holst Swende authored
      
      * core/vm/runtime/tests: add more benchmarks
      
      * core/vm: initial work on improving alloc count for calls to precompiles
      
      name                                  old time/op    new time/op    delta
      SimpleLoop/identity-precompile-10M-6     117ms ±75%      43ms ± 1%  -63.09%  (p=0.008 n=5+5)
      SimpleLoop/loop-10M-6                   79.6ms ± 4%    70.5ms ± 1%  -11.42%  (p=0.008 n=5+5)
      
      name                                  old alloc/op   new alloc/op   delta
      SimpleLoop/identity-precompile-10M-6    24.4MB ± 0%     4.9MB ± 0%  -79.94%  (p=0.008 n=5+5)
      SimpleLoop/loop-10M-6                   13.2kB ± 0%    13.2kB ± 0%     ~     (p=0.357 n=5+5)
      
      name                                  old allocs/op  new allocs/op  delta
      SimpleLoop/identity-precompile-10M-6      382k ± 0%      153k ± 0%  -59.99%  (p=0.000 n=5+4)
      SimpleLoop/loop-10M-6                     40.0 ± 0%      40.0 ± 0%     ~     (all equal)
      
      * core/vm: don't allocate big.int for touch
      
      name                                  old time/op    new time/op    delta
      SimpleLoop/identity-precompile-10M-6    43.3ms ± 1%    42.4ms ± 7%     ~     (p=0.151 n=5+5)
      SimpleLoop/loop-10M-6                   70.5ms ± 1%    76.7ms ± 1%   +8.67%  (p=0.008 n=5+5)
      
      name                                  old alloc/op   new alloc/op   delta
      SimpleLoop/identity-precompile-10M-6    4.90MB ± 0%    2.46MB ± 0%  -49.83%  (p=0.008 n=5+5)
      SimpleLoop/loop-10M-6                   13.2kB ± 0%    13.2kB ± 1%     ~     (p=0.571 n=5+5)
      
      name                                  old allocs/op  new allocs/op  delta
      SimpleLoop/identity-precompile-10M-6      153k ± 0%       76k ± 0%  -49.98%  (p=0.029 n=4+4)
      SimpleLoop/loop-10M-6                     40.0 ± 0%      40.0 ± 0%     ~     (all equal)
      
      * core/vm: reduce allocs in staticcall
      
      name                                  old time/op    new time/op    delta
      SimpleLoop/identity-precompile-10M-6    42.4ms ± 7%    37.5ms ± 6%  -11.68%  (p=0.008 n=5+5)
      SimpleLoop/loop-10M-6                   76.7ms ± 1%    69.1ms ± 1%   -9.82%  (p=0.008 n=5+5)
      
      name                                  old alloc/op   new alloc/op   delta
      SimpleLoop/identity-precompile-10M-6    2.46MB ± 0%    0.02MB ± 0%  -99.35%  (p=0.008 n=5+5)
      SimpleLoop/loop-10M-6                   13.2kB ± 1%    13.2kB ± 0%     ~     (p=0.143 n=5+5)
      
      name                                  old allocs/op  new allocs/op  delta
      SimpleLoop/identity-precompile-10M-6     76.4k ± 0%      0.1k ± 0%     ~     (p=0.079 n=4+5)
      SimpleLoop/loop-10M-6                     40.0 ± 0%      40.0 ± 0%     ~     (all equal)
      
      * trie: better use of hasher keccakState
      
      * core/state/statedb: reduce allocations in getDeletedStateObject
      
      * core/vm: reduce allocations in all call derivates
      
      * core/vm: reduce allocations in call variants
      
      - Make returnstack `uint32`
      - Use a `sync.Pool` of `stack`s
      
      * core/vm: fix tests
      
      * core/vm: goimports
      
      * core/vm: tracer fix + staticcall gas fix
      
      * core/vm: add back snapshot to staticcall
      
      * core/vm: review concerns + make returnstack pooled + enable returndata in traces
      
      * core/vm: fix some test tracer method signatures
      
      * core/vm: run gencodec, minor comment polish
      
      Co-authored-by: default avatarPéter Szilágyi <peterke@gmail.com>
      29569375
  4. Jul 13, 2020
  5. Jul 08, 2020
  6. Jul 03, 2020
    • Gary Rong's avatar
      eth/gasprice: lighter gas price oracle for light client (#20409) · 61270e5e
      Gary Rong authored
      This PR reduces the bandwidth used by the light client to compute the
      recommended gas price. The current mechanism for suggesting the price is:
      
      - retrieve recent 20 blocks
      - get the lowest gas price of these blocks
      - sort the price array and return the middle(60%) one
      
      This works for full nodes, which have all blocks available locally.
      However, this is very expensive for the light client because the light
      client needs to retrieve block bodies from the network.
      
      The PR changes the default options for light client. With the new config,
      the light client only retrieves the two latest blocks, but in order to
      collect more sample transactions, the 3 lowest prices are collected from
      each block.
      
      This PR also changes the behavior for empty blocks. If the block is empty,
      the lastest price is reused for sampling.
      61270e5e
  7. Jul 01, 2020
  8. Jun 30, 2020
    • Marius van der Wijden's avatar
      eth/downloader: fixes data race between synchronize and other methods (#21201) · d671dbd5
      Marius van der Wijden authored
      * eth/downloaded: fixed datarace between synchronize and Progress
      
      There was a race condition between `downloader.synchronize()` and `Progress` `syncWithPeer` `fetchHeight` `findAncestors` and `processHeaders`
      This PR changes the behavior of the downloader a bit.
      Previously the functions `Progress` `syncWithPeer` `fetchHeight` `findAncestors` and `processHeaders` read the syncMode anew within their loops. Now they read the syncMode at the start of their function and don't change it during their runtime.
      
      * eth/downloaded: comment
      
      * eth/downloader: added comment
      d671dbd5
    • Marius van der Wijden's avatar
      core: types: less allocations when hashing and tx handling (#21265) · ddeea1e0
      Marius van der Wijden authored
      
      * core, crypto: various allocation savings regarding tx handling
      
      * core: reduce allocs for gas price comparison
      
      This change reduces the allocations needed for comparing different transactions to each other.
      A call to `tx.GasPrice()` copies the gas price as it has to be safe against modifications and
      also needs to be threadsafe. For comparing and ordering different transactions we don't need
      these guarantees
      
      * core: added tx.GasPriceIntCmp for comparison without allocation
      
      adds a method to remove unneeded allocation in comparison to tx.gasPrice
      
      * core/types: pool legacykeccak256 objects in rlpHash
      
      rlpHash is by far the most used function in core that allocates a legacyKeccak256 object on each call.
      Since it is so widely used it makes sense to add pooling here so we relieve the GC.
      On my machine these changes result in > 100 MILLION less allocations and > 30 GB less allocated memory.
      
      * reverted some changes
      
      * reverted some changes
      
      * trie: use crypto.KeccakState instead of replicating code
      
      Co-authored-by: default avatarMartin Holst Swende <martin@swende.se>
      ddeea1e0
  9. Jun 26, 2020
  10. Jun 24, 2020
  11. Jun 17, 2020
  12. Jun 15, 2020
  13. Jun 10, 2020
  14. Jun 09, 2020
  15. Jun 08, 2020
  16. Jun 02, 2020
    • Greg Colvin's avatar
      core/vm: EIP-2315, JUMPSUB for the EVM (#20619) · cd57d5cd
      Greg Colvin authored
      
      * core/vm: implement EIP 2315, subroutines for the EVM
      
      * core/vm: eip 2315 - lintfix + check jump dest validity + check ret stack size constraints
      
        logger: markdown-friendly traces, validate jumpdest, more testcase, correct opcodes
      
      * core/vm: update subroutines acc to eip: disallow walk-into
      
      * core/vm/eips: gas cost changes for subroutines
      
      * core/vm: update opcodes for EIP-2315
      
      * core/vm: define RETURNSUB as a 'jumping' operation + review concerns
      
      Co-authored-by: default avatarMartin Holst Swende <martin@swende.se>
      cd57d5cd
  17. May 29, 2020
  18. May 26, 2020
    • Felix Lange's avatar
      eth: interrupt chain insertion on shutdown (#21114) · 9219e0fb
      Felix Lange authored
      This adds a new API method on core.BlockChain to allow interrupting
      running data inserts, and calls the method before shutting down the
      downloader.
      
      The BlockChain interrupt checks are now done through a method instead
      of inlining the atomic load everywhere. There is no loss of efficiency from
      this and it makes the interrupt protocol a lot clearer because the check is
      defined next to the method that sets the flag.
      9219e0fb
  19. May 25, 2020
  20. May 22, 2020
    • Zsolt Felföldi's avatar
      les, les/lespay: implement new server pool (#20758) · b4a26811
      Zsolt Felföldi authored
      This PR reimplements the light client server pool. It is also a first step
      to move certain logic into a new lespay package. This package will contain
      the implementation of the lespay token sale functions, the token buying and
      selling logic and other components related to peer selection/prioritization
      and service quality evaluation. Over the long term this package will be
      reusable for incentivizing future protocols.
      
      Since the LES peer logic is now based on enode.Iterator, it can now use
      DNS-based fallback discovery to find servers.
      
      This document describes the function of the new components:
      https://gist.github.com/zsfelfoldi/3c7ace895234b7b345ab4f71dab102d4
      b4a26811
  21. May 11, 2020
  22. May 06, 2020
  23. May 04, 2020
  24. Apr 27, 2020
  25. Apr 22, 2020
    • Gary Rong's avatar
      all: seperate consensus error and evm internal error (#20830) · b9df7ecd
      Gary Rong authored
      * all: seperate consensus error and evm internal error
      
      There are actually two types of error will be returned when
      a tranaction/message call is executed: (a) consensus error
      (b) evm internal error. The former should be converted to
      a consensus issue, e.g. The sender doesn't enough asset to
      purchase the gas it specifies. The latter is allowed since
      evm itself is a blackbox and internal error is allowed to happen.
      
      This PR emphasizes the difference by introducing a executionResult
      structure. The evm error is embedded inside. So if any error
      returned, it indicates consensus issue happens.
      
      And also this PR improve the `EstimateGas` API to return the concrete
      revert reason if the transaction always fails
      
      * all: polish
      
      * accounts/abi/bind/backends: add tests
      
      * accounts/abi/bind/backends, internal: cleanup error message
      
      * all: address comments
      
      * core: fix lint
      
      * accounts, core, eth, internal: address comments
      
      * accounts, internal: resolve revert reason if possible
      
      * accounts, internal: address comments
      b9df7ecd
  26. Apr 20, 2020
  27. Apr 15, 2020
  28. Apr 08, 2020
    • Felix Lange's avatar
      build: upgrade to golangci-lint 1.24.0 (#20901) · c8e9a916
      Felix Lange authored
      * accounts/scwallet: remove unnecessary uses of fmt.Sprintf
      
      * cmd/puppeth: remove unnecessary uses of fmt.Sprintf
      
      * p2p/discv5: remove unnecessary use of fmt.Sprintf
      
      * whisper/mailserver: remove unnecessary uses of fmt.Sprintf
      
      * core: goimports -w tx_pool_test.go
      
      * eth/downloader: goimports -w downloader_test.go
      
      * build: upgrade to golangci-lint 1.24.0
      c8e9a916
  29. Apr 07, 2020
  30. Apr 02, 2020
  31. Mar 31, 2020
  32. Mar 27, 2020
    • Ha ĐANG's avatar
    • Felix Lange's avatar
      eth: improve shutdown synchronization (#20695) · d6c5f241
      Felix Lange authored
      * eth: improve shutdown synchronization
      
      Most goroutines started by eth.Ethereum didn't have any shutdown sync at
      all, which lead to weird error messages when quitting the client.
      
      This change improves the clean shutdown path by stopping all internal
      components in dependency order and waiting for them to actually be
      stopped before shutdown is considered done. In particular, we now stop
      everything related to peers before stopping 'resident' parts such as
      core.BlockChain.
      
      * eth: rewrite sync controller
      
      * eth: remove sync start debug message
      
      * eth: notify chainSyncer about new peers after handshake
      
      * eth: move downloader.Cancel call into chainSyncer
      
      * eth: make post-sync block broadcast synchronous
      
      * eth: add comments
      
      * core: change blockchain stop message
      
      * eth: change closeBloomHandler channel type
      d6c5f241
Loading