1. 11 Oct, 2021 1 commit
    • Martin Holst Swende's avatar
      consensus/clique, core: API cleanup (#23100) · 62891378
      Martin Holst Swende authored
      This removes some code:
      
      - The clique engine calculated the snapshot twice when verifying headers/blocks.
      
      - The method GetBlockHashesFromHash in Header/Block/Lightchain was only used by tests. It
        is now removed from the API.
        
      - The method GetTdByHash internally looked up the number before calling GetTd(hash, num).
        In many cases, callers already had the number, and used this method just because it has a
        shorter name. I have removed the method to make the API surface smaller.
      62891378
  2. 29 Jul, 2021 1 commit
  3. 06 Jul, 2021 1 commit
  4. 25 Jun, 2021 1 commit
    • Martin Holst Swende's avatar
      eth/downloader: increase downloader block body allowance (#23074) · 2d4eff21
      Martin Holst Swende authored
      This change increases the cache size from 64 to 256 Mb for block bodies.
      Benchmarks have shown this to be one bottleneck when trying to achieve
      higher download speeds.
      
      The commit also includes a minor optimization for header inserts in package
      core: previously, the presence of headers in the database was checked for
      every header before writing it. With the change, if one header fails the
      presence check, all subsequent headers are also assumed to be missing.
      This is an improvement because in practice, the headers are almost always
      missing during sync.
      2d4eff21
  5. 15 Apr, 2021 1 commit
  6. 25 Mar, 2021 1 commit
  7. 26 Jan, 2021 1 commit
  8. 09 Dec, 2020 1 commit
    • Martin Holst Swende's avatar
      core,les: headerchain import in batches (#21471) · 40b6ccf3
      Martin Holst Swende authored
      * core: add test for headerchain inserts
      
      * core, light: write headerchains in batches
      
      * core: change to one callback per batch of inserted headers + review concerns
      
      * core: error-check on batch write
      
      * core: unexport writeHeaders
      
      * core: remove callback parameter in InsertHeaderChain
      
      The semantics of InsertHeaderChain are now much simpler: it is now an
      all-or-nothing operation. The new WriteStatus return value allows
      callers to check for the canonicality of the insertion. This change
      simplifies use of HeaderChain in package les, where the callback was
      previously used to post chain events.
      
      * core: skip some hashing when writing headers
      
      * core: less hashing in header validation
      
      * core: fix headerchain flaw regarding blacklisted hashes
      Co-authored-by: 's avatarFelix Lange <fjl@twurst.com>
      40b6ccf3
  9. 25 Nov, 2020 1 commit
  10. 20 Aug, 2020 1 commit
    • Péter Szilágyi's avatar
      core: define and test chain rewind corner cases (#21409) · 8cbdc863
      Péter Szilágyi authored
      * core: define and test chain reparation cornercases
      
      * core: write up a variety of set-head tests
      
      * core, eth: unify chain rollbacks, handle all the cases
      
      * core: make linter smile
      
      * core: remove commented out legacy code
      
      * core, eth/downloader: fix review comments
      
      * core: revert a removed recovery mechanism
      8cbdc863
  11. 22 Apr, 2020 1 commit
  12. 17 Jan, 2020 1 commit
  13. 26 Sep, 2019 1 commit
  14. 17 Sep, 2019 1 commit
    • Felföldi Zsolt's avatar
      les: multiple server bugfixes (#20079) · 0ac9bbba
      Felföldi Zsolt authored
      * les: detailed relative cost metrics
      
      * les: filter txpool relative request statistic
      
      * les: initialize price factors
      
      * les: increased connected bias to lower churn rate
      
      * les: fixed clientPool.setLimits
      
      * core: do not use mutex in GetAncestor
      
      * les: bump factor db version again
      
      * les: add metrics
      
      * les, light: minor fixes
      0ac9bbba
  15. 11 Jun, 2019 1 commit
  16. 16 May, 2019 2 commits
    • gary rong's avatar
      core, cmd, vendor: fixes and database inspection tool (#15) · 37d280da
      gary rong authored
      * core, eth: some fixes for freezer
      
      * vendor, core/rawdb, cmd/geth: add db inspector
      
      * core, cmd/utils: check ancient store path forceily
      
      * cmd/geth, common, core/rawdb: a few fixes
      
      * cmd/geth: support windows file rename and fix rename error
      
      * core: support ancient plugin
      
      * core, cmd: streaming file copy
      
      * cmd, consensus, core, tests: keep genesis in leveldb
      
      * core: write txlookup during ancient init
      
      * core: bump database version
      37d280da
    • gary rong's avatar
      all: integrate the freezer with fast sync · 80469bea
      gary rong authored
      * all: freezer style syncing
      
      core, eth, les, light: clean up freezer relative APIs
      
      core, eth, les, trie, ethdb, light: clean a bit
      
      core, eth, les, light: add unit tests
      
      core, light: rewrite setHead function
      
      core, eth: fix downloader unit tests
      
      core: add receipt chain insertion test
      
      core: use constant instead of hardcoding table name
      
      core: fix rollback
      
      core: fix setHead
      
      core/rawdb: remove canonical block first and then iterate side chain
      
      core/rawdb, ethdb: add hasAncient interface
      
      eth/downloader: calculate ancient limit via cht first
      
      core, eth, ethdb: lots of fixes
      
      * eth/downloader: print ancient disable log only for fast sync
      80469bea
  17. 02 Apr, 2019 1 commit
    • Martin Holst Swende's avatar
      all: simplify timestamps to uint64 (#19372) · 0b4fe8d1
      Martin Holst Swende authored
      * all: simplify timestamps to uint64
      
      * tests: update definitions
      
      * clef, faucet, mobile: leftover uint64 fixups
      
      * ethash: fix tests
      
      * graphql: update schema for timestamp
      
      * ethash: remove unused variable
      0b4fe8d1
  18. 26 Mar, 2019 1 commit
  19. 06 Mar, 2019 1 commit
  20. 24 Jan, 2019 1 commit
  21. 20 Sep, 2018 1 commit
  22. 30 Jul, 2018 1 commit
  23. 02 Jul, 2018 1 commit
  24. 12 Jun, 2018 1 commit
  25. 07 May, 2018 1 commit
  26. 26 Mar, 2018 1 commit
  27. 26 Feb, 2018 1 commit
  28. 09 Sep, 2017 1 commit
    • Felix Lange's avatar
      core, eth/downloader: commit block data using batches (#15115) · 10181b57
      Felix Lange authored
      * ethdb: add Putter interface and Has method
      
      * ethdb: improve docs and add IdealBatchSize
      
      * ethdb: remove memory batch lock
      
      Batches are not safe for concurrent use.
      
      * core: use ethdb.Putter for Write* functions
      
      This covers the easy cases.
      
      * core/state: simplify StateSync
      
      * trie: optimize local node check
      
      * ethdb: add ValueSize to Batch
      
      * core: optimize HasHeader check
      
      This avoids one random database read get the block number. For many uses
      of HasHeader, the expectation is that it's actually there. Using Has
      avoids a load + decode of the value.
      
      * core: write fast sync block data in batches
      
      Collect writes into batches up to the ideal size instead of issuing many
      small, concurrent writes.
      
      * eth/downloader: commit larger state batches
      
      Collect nodes into a batch up to the ideal size instead of committing
      whenever a node is received.
      
      * core: optimize HasBlock check
      
      This avoids a random database read to get the number.
      
      * core: use numberCache in HasHeader
      
      numberCache has higher capacity, increasing the odds of finding the
      header without a database lookup.
      
      * core: write imported block data using a batch
      
      Restore batch writes of state and add blocks, tx entries, receipts to
      the same batch. The change also simplifies the miner.
      
      This commit also removes posting of logs when a forked block is imported.
      
      * core: fix DB write error handling
      
      * ethdb: use RLock for Has
      
      * core: fix HasBlock comment
      10181b57
  29. 25 May, 2017 1 commit
    • changhong's avatar
      core: typos and comments improve · 17f0b119
      changhong authored
      1. fix typos
      2. methods recevier of struct should be same
      3. comments improve
      
      (cherry picked from commit 1ba979539582a00b7fd1a7c8a37a6852e59eac0d)
      17f0b119
  30. 12 Apr, 2017 1 commit
  31. 06 Apr, 2017 1 commit
  32. 04 Apr, 2017 1 commit
  33. 23 Mar, 2017 1 commit
    • Felix Lange's avatar
      core: refactor genesis handling · 37dd9086
      Felix Lange authored
      This commit solves several issues concerning the genesis block:
      
      * Genesis/ChainConfig loading was handled by cmd/geth code. This left
        library users in the cold. They could specify a JSON-encoded
        string and overwrite the config, but didn't get any of the additional
        checks performed by geth.
      * Decoding and writing of genesis JSON was conflated in
        WriteGenesisBlock. This made it a lot harder to embed the genesis
        block into the forthcoming config file loader. This commit changes
        things so there is a single Genesis type that represents genesis
        blocks. All uses of Write*Genesis* are changed to use the new type
        instead.
      * If the chain config supplied by the user was incompatible with the
        current chain (i.e. the chain had already advanced beyond a scheduled
        fork), it got overwritten. This is not an issue in practice because
        previous forks have always had the highest total difficulty. It might
        matter in the future though. The new code reverts the local chain to
        the point of the fork when upgrading configuration.
      
      The change to genesis block data removes compression library
      dependencies from package core.
      37dd9086
  34. 22 Mar, 2017 1 commit
  35. 28 Feb, 2017 3 commits
    • Felix Lange's avatar
      all: unify big.Int zero checks, use common/math in more places (#3716) · 5f782627
      Felix Lange authored
      * common/math: optimize PaddedBigBytes, use it more
      
      name              old time/op    new time/op    delta
      PaddedBigBytes-8    71.1ns ± 5%    46.1ns ± 1%  -35.15%  (p=0.000 n=20+19)
      
      name              old alloc/op   new alloc/op   delta
      PaddedBigBytes-8     48.0B ± 0%     32.0B ± 0%  -33.33%  (p=0.000 n=20+20)
      
      * all: unify big.Int zero checks
      
      Various checks were in use. This commit replaces them all with Int.Sign,
      which is cheaper and less code.
      
      eg templates:
      
          func before(x *big.Int) bool { return x.BitLen() == 0 }
          func after(x *big.Int) bool  { return x.Sign() == 0 }
      
          func before(x *big.Int) bool { return x.BitLen() > 0 }
          func after(x *big.Int) bool  { return x.Sign() != 0 }
      
          func before(x *big.Int) int { return x.Cmp(common.Big0) }
          func after(x *big.Int) int  { return x.Sign() }
      
      * common/math, crypto/secp256k1: make ReadBits public in package math
      5f782627
    • Péter Szilágyi's avatar
      e02883c0
    • Péter Szilágyi's avatar
  36. 23 Feb, 2017 1 commit
  37. 10 Jan, 2017 1 commit