State of the Repo Report + Static Analysis Report, September 2019 #16967

issue practicalswift opened this issue on September 26, 2019
  1. practicalswift commented at 8:12 AM on September 26, 2019: contributor

    Introduction

    For all fans of statistics and static analysis – enjoy! 🤓

    808 authors (+5) have contributed to the project (merged contributions). Thank you! ❤️

    The repo contains 493 912 (+1 955) lines of text and 1 779 (+18) files.

    21 426 (+214) commits have been made of which 4 213 (+77) are merge commits.

    There are currently 289 (+10) open pull requests from in total 91 (+6) contributors.

    If all open pull requests were merged the project line count would grow by roughly 11 percent.

    The total set of open pull requests adds 81 802 lines, removes 26 878 lines and touches 2 552 distinct files.

    The "median open pull request" adds 54 lines, removes 16 lines and touches 4 files.

    Previous edition: State of the Repo, August 2019

    Static analysis report

    This is the monthly static analysis snapshot for the source tree 4c4ff491.

    Note: Before submitting any pull requests to Bitcoin Core, please read CONTRIBUTING.md. In particular the section on refactoring, as it likely applies to changes generated with these tools:

    Trivial pull requests or pull requests that refactor the code with no clear benefits may be immediately closed by the maintainers to reduce unnecessary workload on reviewing.

    Disclaimer: These results have not been confirmed, and may be improbable or flat out invalid, but it's worth having a list of these somewhere and keep track of changes over time. The results may be subject to a large number of false positives and false negatives. The results are not necessarily complete. Please report if you see any spurious results that you think could be filtered out automatically in the next edition to reduce noise. This report is currently in beta: feedback welcome.

    Functions that are both unused and untested

    bitcoinconsensus_version
    BlockFilter::BlockFilter(BlockFilterType, uint256 const&, std::vector<unsigned char>)
    CBlock::ToString() const
    CBloomFilter::reset(unsigned int)
    CClientUIInterface::LoadWallet(std::unique_ptr<interfaces::Wallet>&)
    PartiallySignedTransaction::IsNull() const
    PSBTInput::IsNull() const
    PSBTOutput::IsNull() const
    

    Functions that are unused outside of the testing code

    base_blob<160u>::SetHex(std::string const&)
    base_blob<160u>::ToString() const
    base_uint<256u>::base_uint(std::string const&)
    base_uint<256u>::ToString() const
    bitcoinconsensus_verify_script
    bitcoinconsensus_verify_script_with_amount
    BlockFilter::BlockFilter(BlockFilterType, CBlock const&, CBlockUndo const&)
    BlockFilter::ComputeHeader(uint256 const&) const
    CBloomFilter::CBloomFilter(unsigned int, double, unsigned int, unsigned char)
    CBloomFilter::insert(uint256 const&)
    CKey::Negate()
    DecodeBase58(std::string const&, std::vector<unsigned char>&)
    GCSFilter::MatchAny(std::unordered_set<std::vector<unsigned char>, ByteVectorHash, std::equal_to<std::vector<unsigned char>>, std::allocator<std::vector<unsigned char>>> const&) const
    GCSFilter::Match(std::vector<unsigned char> const&) const
    SignSignature(SigningProvider const&, CTransaction const&, CMutableTransaction&, unsigned int, int)
    

    Clang warnings

    core_write.cpp:100:15: warning: result of comparison of 0 <= unsigned enum expression is always true [-Wtautological-unsigned-enum-zero-compare]
    dbwrapper.cpp:45:50: warning: format string is not a string literal [-Wformat-nonliteral]
    index/blockfilterindex.cpp:55:5: warning: unused member function 'DBHeightKey' [-Wunused-member-function]
    index/blockfilterindex.cpp:81:5: warning: unused function template 'Unserialize' [-Wunused-template]
    init.cpp:937:5: warning: loop will run at most once (loop increment never executed) [-Wunreachable-code-loop-increment]
    policy/fees.cpp:315:30: warning: comparing floating point with == or != is unsafe [-Wfloat-equal]
    policy/fees.cpp:742:45: warning: comparing floating point with == or != is unsafe [-Wfloat-equal]
    policy/fees.cpp:749:47: warning: comparing floating point with == or != is unsafe [-Wfloat-equal]
    policy/fees.cpp:848:32: warning: comparing floating point with == or != is unsafe [-Wfloat-equal]
    random.cpp:152:12: warning: variable 'r1' may be uninitialized when used here [-Wconditional-uninitialized]
    rpc/mining.cpp:245:70: warning: comparing floating point with == or != is unsafe [-Wfloat-equal]
    rpc/mining.cpp:666:7: warning: 'submitblock_StateCatcher' has virtual functions but non-virtual destructor [-Wnon-virtual-dtor]
    rpc/mining.cpp:937:36: warning: comparing floating point with == or != is unsafe [-Wfloat-equal]
    script/bitcoinconsensus.cpp:50:9: warning: unused member function 'GetType' [-Wunused-member-function]
    script/interpreter.cpp:343:28: warning: result of comparison of 0 <= unsigned enum expression is always true [-Wtautological-unsigned-enum-zero-compare]
    script/script.h:449:20: warning: result of comparison of unsigned enum expression < 0 is always false [-Wtautological-unsigned-enum-zero-compare]
    script/script.h:449:34: warning: result of comparison 'opcodetype' > 255 is always false [-Wtautological-type-limit-compare]
    txdb.h:72:5: warning: '~CCoinsViewDBCursor' overrides a destructor but is not marked 'override' [-Winconsistent-missing-destructor-override]
    txmempool.cpp:983:64: warning: comparing floating point with == or != is unsafe [-Wfloat-equal]
    txmempool.h:221:16: warning: comparing floating point with == or != is unsafe [-Wfloat-equal]
    txmempool.h:259:16: warning: comparing floating point with == or != is unsafe [-Wfloat-equal]
    txmempool.h:294:16: warning: comparing floating point with == or != is unsafe [-Wfloat-equal]
    util/strencodings.cpp:304:11: warning: result of comparison 'long long' >= -9223372036854775808 is always true [-Wtautological-type-limit-compare]
    util/strencodings.cpp:305:11: warning: result of comparison 'long long' <= 9223372036854775807 is always true [-Wtautological-type-limit-compare]
    util/strencodings.cpp:338:11: warning: result of comparison 'unsigned long long' <= 18446744073709551615 is always true [-Wtautological-type-limit-compare]
    validation.cpp:1809:7: warning: 'WarningBitsConditionChecker' has virtual functions but non-virtual destructor [-Wnon-virtual-dtor]
    versionbits.cpp:166:7: warning: '(anonymous namespace)::VersionBitsConditionChecker' has virtual functions but non-virtual destructor [-Wnon-virtual-dtor]
    versionbits.h:55:7: warning: 'AbstractThresholdConditionChecker' has virtual functions but non-virtual destructor [-Wnon-virtual-dtor]
    wallet/wallet.h:937:5: warning: '~CWallet' overrides a destructor but is not marked 'override' [-Winconsistent-missing-destructor-override]
    

    Clang static analyzer warnings

    chain.h:443:24: warning: Access to field 'nHeight' results in a dereference of a null pointer (loaded from variable 'pindex')
    crypto/sha256.cpp:598:9: warning: Value stored to 'enabled_avx' is never read
    crypto/sha256.cpp:602:9: warning: Value stored to 'have_avx2' is never read
    crypto/sha256.cpp:603:9: warning: Value stored to 'have_shani' is never read
    net_processing.cpp:3747:55: warning: Called C++ object pointer is null
    validation.cpp:4200:50: warning: Access to field 'nHeight' results in a dereference of a null pointer (loaded from variable 'pindex')
    

    Cppcheck warnings

    checkqueue.h:89 -> src/checkqueue.h:93: (warning) Identical inner 'if' condition is always true.
    cuckoocache.h:245: (error) Shifting 32-bit value by 32 bits is undefined behaviour
    cuckoocache.h:246: (error) Shifting 32-bit value by 32 bits is undefined behaviour
    cuckoocache.h:247: (error) Shifting 32-bit value by 32 bits is undefined behaviour
    cuckoocache.h:248: (error) Shifting 32-bit value by 32 bits is undefined behaviour
    cuckoocache.h:249: (error) Shifting 32-bit value by 32 bits is undefined behaviour
    cuckoocache.h:250: (error) Shifting 32-bit value by 32 bits is undefined behaviour
    cuckoocache.h:251: (error) Shifting 32-bit value by 32 bits is undefined behaviour
    cuckoocache.h:252: (error) Shifting 32-bit value by 32 bits is undefined behaviour
    index/base.cpp:178: (warning) Assert statement calls a function which may have desired side effects: 'GetAncestor'.
    index/blockfilterindex.cpp:286: (warning) Assert statement calls a function which may have desired side effects: 'GetAncestor'.
    net_processing.cpp:891: (error) Same iterator is used with different containers 'mapOrphanTransactions' and 'itPrev.second'.
    txdb.cpp:315: (error) Uninitialized variable: nVersionDummy
    txmempool.cpp:643: (warning) Assert statement calls a function which may have desired side effects: 'end'.
    undo.h:57: (error) Uninitialized variable: nVersionDummy
    validation.cpp:2217: (warning) Assert statement calls a function which may have desired side effects: 'CanFlushToDisk'.
    wallet/rpcwallet.cpp:1484: (error) After erase(), the iterator 'first' may be invalid.
    

    Facebook Infer warnings

    crypto/sha256.cpp:598: error: DEAD_STORE: The value written to &enabled_avx (type _Bool) is never used.
    crypto/sha256.cpp:602: error: DEAD_STORE: The value written to &have_avx2 (type _Bool) is never used.
    crypto/sha256.cpp:603: error: DEAD_STORE: The value written to &have_shani (type _Bool) is never used.
    net_processing.cpp:1189: error: NULL_DEREFERENCE: pointer `state` last assigned on line 1186 could be null and is dereferenced at line 1189, column 13.
    net_processing.cpp:1642: error: NULL_DEREFERENCE: pointer `nodestate` last assigned on line 1631 could be null and is dereferenced at line 1642, column 13.
    net_processing.cpp:3247: error: NULL_DEREFERENCE: pointer `__range` last assigned on line 3247 could be null and is dereferenced at line 3247, column 41.
    net_processing.cpp:3251: error: NULL_DEREFERENCE: pointer `state` last assigned on line 3244 could be null and is dereferenced at line 3251, column 5.
    net_processing.cpp:3414: error: NULL_DEREFERENCE: pointer `state` last assigned on line 3411 could be null and is dereferenced at line 3414, column 10.
    net_processing.cpp:3498: error: NULL_DEREFERENCE: pointer `state` last assigned on line 3497 could be null and is dereferenced at line 3498, column 87.
    policy/fees.cpp:795: error: DEAD_STORE: The value written to &median (type double) is never used.
    random.cpp:152: error: UNINITIALIZED_VALUE: The value read from r1 was never initialized.
    script/descriptor.cpp:402: error: DEAD_STORE: The value written to &pos (type unsigned long) is never used.
    script/sigcache.cpp:67: error: STATIC_INITIALIZATION_ORDER_FIASCO: Initializer of anonymous_namespace_script_sigcache.cpp::signatureCache accesses global variable from a different translation unit: g_lockstack|src/sync.cpp.
    serialize.h:142: error: UNINITIALIZED_VALUE: The value read from tmp.y was never initialized.
    serialize.h:148: error: UNINITIALIZED_VALUE: The value read from tmp.y was never initialized.
    serialize.h:154: error: UNINITIALIZED_VALUE: The value read from tmp.x was never initialized.
    serialize.h:160: error: UNINITIALIZED_VALUE: The value read from tmp.x was never initialized.
    serialize.h:396: error: UNINITIALIZED_VALUE: The value read from tmp[_] was never initialized.
    validation.cpp:1466: error: NULL_DEREFERENCE: pointer `pindexPrev` last assigned on line 1465 could be null and is dereferenced at line 1466, column 12.
    validation.cpp:1471: error: STATIC_INITIALIZATION_ORDER_FIASCO: Initializer of scriptExecutionCacheNonce accesses global variable from a different translation unit: g_lockstack|src/sync.cpp.
    validation.cpp:4106: error: MEMORY_LEAK: `pindex` is not reachable after line 4106, column 5.
    validation.cpp:4111: error: NULL_DEREFERENCE: pointer `tip` last assigned on line 4109 could be null and is dereferenced at line 4111, column 9.
    validation.cpp:4561: error: DEAD_STORE: The value written to &nRewind (type unsigned long) is never used.
    wallet/wallet.cpp:1005: error: LOCK_CONSISTENCY_VIOLATION: Read/Write race. Non-private method `CWallet_IncOrderPosNext` reads without synchronization from `this.nOrderPosNext`. Potentially races with write in method `BlockDisconnected`.
    wallet/wallet.cpp:1189: error: LOCK_CONSISTENCY_VIOLATION: Read/Write race. Non-private method `CWallet_LoadToWallet` reads without synchronization from container `this.mapWallet` via call to `find`. Potentially races with write in method `ZapSelectTx`.
    wallet/wallet.cpp:1621: error: LOCK_CONSISTENCY_VIOLATION: Read/Write race. Non-private method `CWallet_DeriveNewSeed` indirectly reads without synchronization from `s1.n.[_]`. Potentially races with write in method `DeriveNewSeed`.
    wallet/wallet.cpp:1621: error: LOCK_CONSISTENCY_VIOLATION: Read/Write race. Non-private method `CWallet_DeriveNewSeed` indirectly reads without synchronization from `s1.n.[_]`. Potentially races with write in method `GetCredit`.
    wallet/wallet.cpp:1621: error: LOCK_CONSISTENCY_VIOLATION: Read/Write race. Non-private method `CWallet_DeriveNewSeed` indirectly reads without synchronization from `s1.n.[_]`. Potentially races with write in method `SetAddressBook`.
    wallet/wallet.cpp:2146: error: LOCK_CONSISTENCY_VIOLATION: Read/Write race. Non-private method `CWallet_ReacceptWalletTransactions` indirectly reads without synchronization from `wtx.fInMempool`. Potentially races with write in method `postInitProcess`. [wob].
    wallet/wallet.cpp:2358: error: LOCK_CONSISTENCY_VIOLATION: Read/Write race. Non-private method `CWallet_ResendWalletTransactions` reads without synchronization from `this.nNextResend`. Potentially races with write in method `ResendWalletTransactions`.
    wallet/wallet.cpp:2771: error: LOCK_CONSISTENCY_VIOLATION: Read/Write race. Non-private method `CWallet_SignTransaction` reads without synchronization from container `this.mapWallet` via call to `find`. Potentially races with write in method `ZapSelectTx`.
    wallet/wallet.cpp:280: error: LOCK_CONSISTENCY_VIOLATION: Read/Write race. Non-private method `CWallet_GenerateNewKey` indirectly reads without synchronization from `this.nWalletMaxVersion`. Potentially races with write in method `NewKeyPool`.
    wallet/wallet.cpp:3276: error: UNINITIALIZED_VALUE: The value read from nBytes was never initialized.
    wallet/wallet.cpp:3276: error: UNINITIALIZED_VALUE: The value read from nFeeNeeded was never initialized.
    wallet/wallet.cpp:3538: error: LOCK_CONSISTENCY_VIOLATION: Read/Write race. Non-private method `CWallet_LoadKeyPool` reads without synchronization from `this.m_max_keypool_index`. Potentially races with write in method `ImportPubKeys`.
    wallet/wallet.cpp:424: error: LOCK_CONSISTENCY_VIOLATION: Read/Write race. Non-private method `CWallet_LoadKeyMetadata` indirectly reads without synchronization from `this.nTimeFirstKey`. Potentially races with write in method `ImportPubKeys`.
    wallet/wallet.cpp:431: error: LOCK_CONSISTENCY_VIOLATION: Read/Write race. Non-private method `CWallet_LoadScriptMetadata` indirectly reads without synchronization from `this.nTimeFirstKey`. Potentially races with write in method `ImportPubKeys`.
    wallet/wallet.cpp:488: error: LOCK_CONSISTENCY_VIOLATION: Read/Write race. Non-private method `CWallet_UpdateTimeFirstKey` reads without synchronization from `this.nTimeFirstKey`. Potentially races with write in method `ImportPubKeys`.
    wallet/wallet.h:1041: error: LOCK_CONSISTENCY_VIOLATION: Read/Write race. Non-private method `CWallet_LoadMinVersion` reads without synchronization from `this.nWalletMaxVersion`. Potentially races with write in method `NewKeyPool`.
    

    Signed integer assumptions made by the GCC optimizer

    addrman.cpp:295:25: warning: assuming signed overflow does not occur when simplifying conditional [-Wstrict-overflow]
    addrman.cpp:350:11: warning: assuming signed overflow does not occur when changing X +- C1 cmp C2 to X cmp C2 -+ C1 [-Wstrict-overflow]
    arith_uint256.cpp:31:31: warning: assuming signed overflow does not occur when changing X +- C1 cmp C2 to X cmp C2 -+ C1 [-Wstrict-overflow]
    arith_uint256.cpp:48:28: warning: assuming signed overflow does not occur when changing X +- C1 cmp C2 to X cmp C2 -+ C1 [-Wstrict-overflow]
    arith_uint256.cpp:69:18: warning: assuming signed overflow does not occur when changing X +- C1 cmp C2 to X cmp C2 -+ C1 [-Wstrict-overflow]
    arith_uint256.cpp:98:18: warning: assuming signed overflow does not occur when simplifying conditional to constant [-Wstrict-overflow]
    arith_uint256.cpp:98:18: warning: assuming signed overflow does not occur when simplifying conditional [-Wstrict-overflow]
    blockencodings.cpp:49:12: warning: assuming signed overflow does not occur when changing X +- C1 cmp C2 to X cmp C2 -+ C1 [-Wstrict-overflow]
    blockencodings.cpp:97:9: warning: assuming signed overflow does not occur when simplifying conditional [-Wstrict-overflow]
    chain.cpp:171:1: warning: assuming signed overflow does not occur when changing X +- C1 cmp C2 to X cmp C2 -+ C1 [-Wstrict-overflow]
    chain.cpp:84:20: warning: assuming signed overflow does not occur when changing X +- C1 cmp C2 to X cmp C2 -+ C1 [-Wstrict-overflow]
    consensus/tx_verify.cpp:194:5: warning: assuming signed overflow does not occur when simplifying conditional [-Wstrict-overflow]
    consensus/tx_verify.cpp:200:1: warning: assuming signed overflow does not occur when changing X +- C1 cmp C2 to X cmp C2 -+ C1 [-Wstrict-overflow]
    crypto/aes.cpp:79:1: warning: assuming signed overflow does not occur when reducing constant in comparison [-Wstrict-overflow]
    crypto/ctaes/ctaes.c:447:1: warning: assuming signed overflow does not occur when reducing constant in comparison [-Wstrict-overflow]
    dbwrapper.cpp:41:17: warning: assuming pointer wraparound does not occur when comparing P +- C1 with P +- C2 [-Wstrict-overflow]
    init.cpp:1264:24: warning: assuming signed overflow does not occur when simplifying range test [-Wstrict-overflow]
    key.cpp:43:5: warning: assuming signed overflow does not occur when changing X +- C1 cmp C2 to X cmp C2 -+ C1 [-Wstrict-overflow]
    netaddress.cpp:804:14: warning: assuming signed overflow does not occur when changing X +- C1 cmp C2 to X cmp C2 -+ C1 [-Wstrict-overflow]
    net.cpp:2769:1: warning: assuming signed overflow does not occur when changing X +- C1 cmp C2 to X cmp C2 -+ C1 [-Wstrict-overflow]
    net_processing.cpp:3650:115: warning: assuming signed overflow does not occur when reducing constant in comparison [-Wstrict-overflow]
    net_processing.cpp:4128:1: warning: assuming signed overflow does not occur when reducing constant in comparison [-Wstrict-overflow]
    net_processing.cpp:4140:63: warning: assuming signed overflow does not occur when changing X +- C1 cmp C2 to X cmp C2 -+ C1 [-Wstrict-overflow]
    net_processing.cpp:604:5: warning: assuming signed overflow does not occur when simplifying conditional to constant [-Wstrict-overflow]
    policy/fees.cpp:726:25: warning: assuming signed overflow does not occur when simplifying conditional to constant [-Wstrict-overflow]
    random.cpp:720:6: warning: assuming signed overflow does not occur when changing X +- C1 cmp C2 to X cmp C2 -+ C1 [-Wstrict-overflow]
    rpc/net.cpp:428:20: warning: assuming signed overflow does not occur when simplifying range test [-Wstrict-overflow]
    rpc/server.cpp:399:31: warning: assuming signed overflow does not occur when simplifying conditional [-Wstrict-overflow]
    rpc/util.cpp:697:1: warning: assuming signed overflow does not occur when reducing constant in comparison [-Wstrict-overflow]
    script/descriptor.cpp:131:5: warning: assuming signed overflow does not occur when simplifying conditional to constant [-Wstrict-overflow]
    script/descriptor.cpp:131:5: warning: assuming signed overflow does not occur when simplifying conditional [-Wstrict-overflow]
    script/interpreter.cpp:281:6: warning: assuming signed overflow does not occur when changing X +- C1 cmp C2 to X cmp C2 -+ C1 [-Wstrict-overflow]
    script/script.h:332:33: warning: assuming signed overflow does not occur when simplifying conditional [-Wstrict-overflow]
    script/script.h:351:29: warning: assuming signed overflow does not occur when simplifying conditional [-Wstrict-overflow]
    script/script.h:352:14: warning: assuming signed overflow does not occur when simplifying conditional [-Wstrict-overflow]
    serialize.h:390:9: warning: assuming signed overflow does not occur when changing X +- C1 cmp C2 to X cmp C2 -+ C1 [-Wstrict-overflow]
    util/moneystr.cpp:12:13: warning: assuming signed overflow does not occur when determining that expression is always non-negative [-Wstrict-overflow]
    util/moneystr.cpp:77:1: warning: assuming signed overflow does not occur when determining that expression is always non-negative [-Wstrict-overflow]
    util/strencodings.cpp:446:24: warning: assuming signed overflow does not occur when simplifying conditional to constant [-Wstrict-overflow]
    util/strencodings.cpp:446:24: warning: assuming signed overflow does not occur when simplifying conditional [-Wstrict-overflow]
    wallet/coinselection.cpp:185:35: warning: assuming signed overflow does not occur when changing X +- C1 cmp C2 to X cmp C2 -+ C1 [-Wstrict-overflow]
    wallet/coinselection.cpp:262:64: warning: assuming signed overflow does not occur when reducing constant in comparison [-Wstrict-overflow]
    wallet/coinselection.cpp:269:59: warning: assuming signed overflow does not occur when reducing constant in comparison [-Wstrict-overflow]
    wallet/coinselection.cpp:292:1: warning: assuming signed overflow does not occur when reducing constant in comparison [-Wstrict-overflow]
    wallet/rpcdump.cpp:1451:1: warning: assuming signed overflow does not occur when changing X +- C1 cmp C2 to X cmp C2 -+ C1 [-Wstrict-overflow]
    wallet/wallet.cpp:2120:1: warning: assuming signed overflow does not occur when reducing constant in comparison [-Wstrict-overflow]
    wallet/wallet.cpp:2384:5: warning: assuming signed overflow does not occur when simplifying conditional [-Wstrict-overflow]
    wallet/wallet.cpp:2387:1: warning: assuming signed overflow does not occur when reducing constant in comparison [-Wstrict-overflow]
    wallet/wallet.cpp:2935:9: warning: assuming signed overflow does not occur when simplifying conditional to constant [-Wstrict-overflow]
    wallet/wallet.cpp:3285:1: warning: assuming signed overflow does not occur when reducing constant in comparison [-Wstrict-overflow]
    wallet/wallet.cpp:3587:9: warning: assuming signed overflow does not occur when simplifying conditional [-Wstrict-overflow]
    wallet/wallet.cpp:987:13: warning: assuming signed overflow does not occur when simplifying conditional to constant [-Wstrict-overflow]
    

    Suggested code changes waiting for review (grouped by author)

    # Username Lines added Lines removed Net lines Files chgd Pull reqs
    1 Sjors 21&nbsp;694&nbsp;(27%) -6&nbsp;871 14&nbsp;823 142 17&nbsp;(6%)
    2 achow101 8&nbsp;964&nbsp;(11%) -4&nbsp;203 4&nbsp;761 89 9&nbsp;(3%)
    3 ryanofsky 8&nbsp;405&nbsp;(10%) -2&nbsp;237 6&nbsp;168 178 13&nbsp;(4%)
    4 jamesob 4&nbsp;282&nbsp;(5%) -442 3&nbsp;840 42 5&nbsp;(2%)
    5 jonasschnelli 3&nbsp;670&nbsp;(4%) -526 3&nbsp;144 39 12&nbsp;(4%)
    6 TheBlueMatt 3&nbsp;646&nbsp;(4%) -901 2&nbsp;745 52 10&nbsp;(3%)
    7 luke-jr 3&nbsp;177&nbsp;(4%) -438 2&nbsp;739 98 23&nbsp;(8%)
    8 sipa 3&nbsp;025&nbsp;(4%) -1&nbsp;047 1&nbsp;978 46 7&nbsp;(2%)
    9 kallewoof 2&nbsp;566&nbsp;(3%) -357 2&nbsp;209 70 7&nbsp;(2%)
    10 jl2012 1&nbsp;620&nbsp;(2%) -1&nbsp;537 83 9 2&nbsp;(1%)
    11 MarcoFalke 1&nbsp;586&nbsp;(2%) -593 993 67 9&nbsp;(3%)
    12 fanquake 1&nbsp;438&nbsp;(2%) -1&nbsp;178 260 63 5&nbsp;(2%)
    13 icota 1&nbsp;266&nbsp;(2%) -41 1&nbsp;225 30 2&nbsp;(1%)
    14 Christewart 991&nbsp;(1%) -24 967 18 1&nbsp;(0%)
    15 marcinja 832&nbsp;(1%) -109 723 31 2&nbsp;(1%)
    16 ariard 810&nbsp;(1%) -914 -104 21 3&nbsp;(1%)
    17 jimpo 802&nbsp;(1%) -23 779 12 1&nbsp;(0%)
    18 hebasto 779&nbsp;(1%) -569 210 82 8&nbsp;(3%)
    19 Empact 767&nbsp;(1%) -448 319 72 16&nbsp;(6%)
    20 LarryRuane 752&nbsp;(1%) -224 528 22 4&nbsp;(1%)
    21 ajtowns 641&nbsp;(1%) -222 419 28 6&nbsp;(2%)
    22 jnewbery 632&nbsp;(1%) -574 58 51 5&nbsp;(2%)
    23 ch4ot1c 596&nbsp;(1%) -553 43 49 4&nbsp;(1%)
    24 martinus 560&nbsp;(1%) -19 541 10 2&nbsp;(1%)
    25 naumenkogs 559&nbsp;(1%) -90 469 13 1&nbsp;(0%)
    26 meshcollider 554&nbsp;(1%) -91 463 17 2&nbsp;(1%)
    27 promag 515&nbsp;(1%) -191 324 42 17&nbsp;(6%)
    28 amitiuttarwar 484&nbsp;(1%) -85 399 15 1&nbsp;(0%)
    29 fingera 478&nbsp;(1%) -9 469 4 1&nbsp;(0%)
    30 sdaftuar 457&nbsp;(1%) -58 399 7 2&nbsp;(1%)
    31 dongcarl 450&nbsp;(1%) -275 175 14 3&nbsp;(1%)
    32 jtimon 408&nbsp;(0%) -381 27 35 7&nbsp;(2%)
    33 domob1812 328&nbsp;(0%) -158 170 13 3&nbsp;(1%)
    34 instagibbs 321&nbsp;(0%) -162 159 46 6&nbsp;(2%)
    35 l2a5b1 299&nbsp;(0%) -93 206 22 2&nbsp;(1%)
    36 andrewtoth 284&nbsp;(0%) -78 206 7 2&nbsp;(1%)
    37 theuni 271&nbsp;(0%) -33 238 14 1&nbsp;(0%)
    38 hosseinamin 261&nbsp;(0%) -43 218 3 1&nbsp;(0%)
    39 mzumsande 228&nbsp;(0%) -37 191 5 1&nbsp;(0%)
    40 emilengler 193&nbsp;(0%) -14 179 14 2&nbsp;(1%)
    41 benthecarman 182&nbsp;(0%) -21 161 13 4&nbsp;(1%)
    42 BlockMechanic 169&nbsp;(0%) -30 139 19 1&nbsp;(0%)
    43 AkioNak 137&nbsp;(0%) -88 49 4 1&nbsp;(0%)
    44 FelixWeis 135&nbsp;(0%) -101 34 4 1&nbsp;(0%)
    45 jkczyz 130&nbsp;(0%) -79 51 12 3&nbsp;(1%)
    46 mrwhythat 116&nbsp;(0%) -8 108 7 1&nbsp;(0%)
    47 JeremyRubin 103&nbsp;(0%) -42 61 7 2&nbsp;(1%)
    48 metalicjames 98&nbsp;(0%) -4 94 4 1&nbsp;(0%)
    49 n2yen 86&nbsp;(0%) -9 77 5 1&nbsp;(0%)
    50 IntegralTeam 79&nbsp;(0%) -3 76 3 1&nbsp;(0%)
    51 theStack 79&nbsp;(0%) -2 77 2 2&nbsp;(1%)
    52 greenaddress 78&nbsp;(0%) -31 47 10 1&nbsp;(0%)
    53 soroosh-sdi 54&nbsp;(0%) -1 53 1 1&nbsp;(0%)
    54 fjahr 53&nbsp;(0%) -23 30 2 1&nbsp;(0%)
    55 darosior 51&nbsp;(0%) -5 46 4 2&nbsp;(1%)
    56 mmachicao 47&nbsp;(0%) -40 7 6 1&nbsp;(0%)
    57 IPGlider 41&nbsp;(0%) -15 26 15 1&nbsp;(0%)
    58 shannon1916 39&nbsp;(0%) -9 30 4 1&nbsp;(0%)
    59 davereikher 37&nbsp;(0%) -6 31 2 1&nbsp;(0%)
    60 renepickhardt 35&nbsp;(0%) -20 15 1 1&nbsp;(0%)
    61 elichai 31&nbsp;(0%) -7 24 3 2&nbsp;(1%)
    62 kodslav 31&nbsp;(0%) -5 26 1 1&nbsp;(0%)
    63 Bushstar 30&nbsp;(0%) -4 26 3 1&nbsp;(0%)
    64 GChuf 30&nbsp;(0%) -11 19 2 2&nbsp;(1%)
    65 btcdrak 30&nbsp;(0%) -25 5 4 1&nbsp;(0%)
    66 pstratem 30&nbsp;(0%) -51 -21 2 2&nbsp;(1%)
    67 LeandroRocha84 24&nbsp;(0%) -14 10 4 1&nbsp;(0%)
    68 erasmospunk 24&nbsp;(0%) -16 8 2 1&nbsp;(0%)
    69 lucayepa 24&nbsp;(0%) -14 10 1 1&nbsp;(0%)
    70 mruddy 22&nbsp;(0%) -2 20 2 1&nbsp;(0%)
    71 marcoagner 21&nbsp;(0%) -2 19 1 1&nbsp;(0%)
    72 nmarley 21&nbsp;(0%) -6 15 4 2&nbsp;(1%)
    73 asood123 16&nbsp;(0%) -10 6 3 1&nbsp;(0%)
    74 shargon 16&nbsp;(0%) -1 15 1 1&nbsp;(0%)
    75 tryphe 15&nbsp;(0%) -16 -1 2 1&nbsp;(0%)
    76 candrews 13&nbsp;(0%) -7 6 1 1&nbsp;(0%)
    77 lucash-dev 13&nbsp;(0%) -5 8 2 1&nbsp;(0%)
    78 sanket1729 11&nbsp;(0%) -3 8 1 1&nbsp;(0%)
    79 cryptogopher 10&nbsp;(0%) -1 9 1 1&nbsp;(0%)
    80 laanwj 9&nbsp;(0%) -2 7 1 1&nbsp;(0%)
    81 jameshilliard 8&nbsp;(0%) -3 5 3 1&nbsp;(0%)
    82 orientye 8&nbsp;(0%) -2 6 2 1&nbsp;(0%)
    83 takinbo 5&nbsp;(0%) -3 2 1 1&nbsp;(0%)
    84 d3spwn 4&nbsp;(0%) -2 2 2 1&nbsp;(0%)
    85 setpill 4&nbsp;(0%) -7 -3 4 1&nbsp;(0%)
    86 dangershony 3&nbsp;(0%) -5 -2 2 1&nbsp;(0%)
    87 qubenix 3&nbsp;(0%) -4 -1 1 1&nbsp;(0%)
    88 stevenroose 3&nbsp;(0%) -2 1 1 1&nbsp;(0%)
    89 practicalswift 2&nbsp;(0%) -255 -253 107 2&nbsp;(1%)
    90 HashUnlimited 1&nbsp;(0%) -2 -1 1 1&nbsp;(0%)
    91 wodry 0&nbsp;(0%) -6 -6 2 1&nbsp;(0%)
  2. fanquake closed this on Oct 8, 2019

  3. DrahtBot locked this on Dec 16, 2021

github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin/bitcoin. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2026-04-14 21:14 UTC

This site is hosted by @0xB10C
More mirrored repositories can be found on mirror.b10c.me