good morning!!!!

Skip to content
Snippets Groups Projects
  1. May 27, 2021
    • Marius van der Wijden's avatar
      crypto/secp256k1: fix undefined behavior in BitCurve.Add (#22621) · 0703ef62
      Marius van der Wijden authored
      
      This commit changes the behavior of BitCurve.Add to be more inline
      with btcd. It fixes two different bugs:
      
      1) When adding a point at infinity to another point, the other point
         should be returned. While this is undefined behavior, it is better
         to be more inline with the go standard library.
         Thus (0,0) + (a, b) = (a,b)
      
      2) Adding the same point to itself produced the point at infinity.
         This is incorrect, now doubleJacobian is used to correctly calculate it.
         Thus (a,b) + (a,b) == 2* (a,b) and not (0,0) anymore.
      
      The change also adds a differential fuzzer for Add, testing it against btcd.
      
      Co-authored-by: default avatarFelix Lange <fjl@twurst.com>
      Unverified
      0703ef62
    • rene's avatar
    • Felix Lange's avatar
      p2p/rlpx: reduce allocation and syscalls (#22899) · 7194c847
      Felix Lange authored
      This change significantly improves the performance of RLPx message reads
      and writes. In the previous implementation, reading and writing of
      message frames performed multiple reads and writes on the underlying
      network connection, and allocated a new []byte buffer for every read.
      
      In the new implementation, reads and writes re-use buffers, and perform
      much fewer system calls on the underlying connection. This doubles the
      theoretically achievable throughput on a single connection, as shown by
      the benchmark result:
      
          name             old speed      new speed       delta
          Throughput-8     70.3MB/s ± 0%  155.4MB/s ± 0%  +121.11%  (p=0.000 n=9+8)
      
      The change also removes support for the legacy, pre-EIP-8 handshake encoding.
      As of May 2021, no actively maintained client sends this format.
      Unverified
      7194c847
    • Martin Holst Swende's avatar
      cmd/utils: avoid large alloc in --dev mode (#22949) · 2e7714f8
      Martin Holst Swende authored
      * cmd/utils: avoid 1Gb alloc in --dev mode
      
      * cmd/geth: avoid 512Mb alloc in genesis query tests
      Unverified
      2e7714f8
  2. May 26, 2021
  3. May 25, 2021
  4. May 24, 2021
  5. May 22, 2021
    • Felix Lange's avatar
      rlp: optimize byte array handling (#22924) · 154ca32a
      Felix Lange authored
      This change improves the performance of encoding/decoding [N]byte.
      
          name                     old time/op    new time/op    delta
          DecodeByteArrayStruct-8     336ns ± 0%     246ns ± 0%  -26.98%  (p=0.000 n=9+10)
          EncodeByteArrayStruct-8     225ns ± 1%     148ns ± 1%  -34.12%  (p=0.000 n=10+10)
      
          name                     old alloc/op   new alloc/op   delta
          DecodeByteArrayStruct-8      120B ± 0%       48B ± 0%  -60.00%  (p=0.000 n=10+10)
          EncodeByteArrayStruct-8     0.00B          0.00B          ~     (all equal)
      Unverified
      154ca32a
    • Felix Lange's avatar
      rlp: use atomic.Value for type cache (#22902) · 0d076d92
      Felix Lange authored
      All encoding/decoding operations read the type cache to find the
      writer/decoder function responsible for a type. When analyzing CPU
      profiles of geth during sync, I found that the use of sync.RWMutex in
      cache lookups appears in the profiles. It seems we are running into
      CPU cache contention problems when package rlp is heavily used
      on all CPU cores during sync.
      
      This change makes it use atomic.Value + a writer lock instead of
      sync.RWMutex. In the common case where the typeinfo entry is present in
      the cache, we simply fetch the map and lookup the type.
      Unverified
      0d076d92
  6. May 21, 2021
  7. May 20, 2021
  8. May 19, 2021
  9. May 18, 2021
  10. May 17, 2021
  11. May 12, 2021
  12. May 11, 2021
Loading