State of the Repo + Static Analysis Report (🆕), August 2019
Introduction
For all fans of statistics (and static analysis!) – enjoy this slightly delayed August edition! Sorry about the delay: the data is from the end of August. New in this edition: a static analysis report! Currently in beta.
803 (+13) authors have contributed to the project (merged contributions). Thank you! ❤️
The repo contains 491 957 (+1 814) lines of text and 1 761 (+0) files.
21 212 (+310) commits have been made of which 4 136 (+116) are merge commits.
There are currently 279 (+2) open pull requests from in total 85 (+1) contributors.
If all open pull requests were merged the project line count would grow by roughly 9 percent.
The total set of open pull requests adds 71 707 lines, removes 25 810 lines and touches 2 328 distinct files.
The "median open pull request" adds 56 lines, removes 18 lines and touches 4 files.
Previous edition: State of the Repo, July 2019
Static analysis report
This is the monthly static analysis snapshot for the source tree db67101c.
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:929: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:1622: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:888: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:3716:55: warning: Called C++ object pointer is null
validation.cpp:4006: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:888: (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:2025: (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:1186: error: NULL_DEREFERENCE: pointer `state` last assigned on line 1183 could be null and is dereferenced at line 1186, column 13.
net_processing.cpp:1634: error: NULL_DEREFERENCE: pointer `nodestate` last assigned on line 1623 could be null and is dereferenced at line 1634, column 13.
net_processing.cpp:3218: error: NULL_DEREFERENCE: pointer `__range` last assigned on line 3218 could be null and is dereferenced at line 3218, column 41.
net_processing.cpp:3222: error: NULL_DEREFERENCE: pointer `state` last assigned on line 3215 could be null and is dereferenced at line 3222, column 5.
net_processing.cpp:3385: error: NULL_DEREFERENCE: pointer `state` last assigned on line 3382 could be null and is dereferenced at line 3385, column 10.
net_processing.cpp:3467: error: NULL_DEREFERENCE: pointer `state` last assigned on line 3466 could be null and is dereferenced at line 3467, 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:1268: error: NULL_DEREFERENCE: pointer `pindexPrev` last assigned on line 1267 could be null and is dereferenced at line 1268, column 12.
validation.cpp:1273: error: STATIC_INITIALIZATION_ORDER_FIASCO: Initializer of scriptExecutionCacheNonce accesses global variable from a different translation unit: g_lockstack|src/sync.cpp.
validation.cpp:4370: error: DEAD_STORE: The value written to &nRewind (type unsigned long) is never used.
wallet/wallet.cpp:1013: 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:111: error: USE_AFTER_LIFETIME: Variable wallet is used at line line 111, column 13 after its lifetime ended at line 107, column 5.
wallet/wallet.cpp:1194: 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:1628: 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:1628: 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:2153: 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:2365: 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:2778: 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:279: 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:3283: error: UNINITIALIZED_VALUE: The value read from nBytes was never initialized.
wallet/wallet.cpp:3283: error: UNINITIALIZED_VALUE: The value read from nFeeNeeded was never initialized.
wallet/wallet.cpp:3540: 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:423: 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:430: 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:487: 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:989: 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:1256: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:2736:1: warning: assuming signed overflow does not occur when changing X +- C1 cmp C2 to X cmp C2 -+ C1 [-Wstrict-overflow]
net_processing.cpp:3619:115: warning: assuming signed overflow does not occur when reducing constant in comparison [-Wstrict-overflow]
net_processing.cpp:4094:1: warning: assuming signed overflow does not occur when reducing constant in comparison [-Wstrict-overflow]
net_processing.cpp:4106:63: warning: assuming signed overflow does not occur when changing X +- C1 cmp C2 to X cmp C2 -+ C1 [-Wstrict-overflow]
net_processing.cpp:601: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:423: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:1452:1: warning: assuming signed overflow does not occur when changing X +- C1 cmp C2 to X cmp C2 -+ C1 [-Wstrict-overflow]
wallet/wallet.cpp:2127:1: warning: assuming signed overflow does not occur when reducing constant in comparison [-Wstrict-overflow]
wallet/wallet.cpp:2391:5: warning: assuming signed overflow does not occur when simplifying conditional [-Wstrict-overflow]
wallet/wallet.cpp:2394:1: warning: assuming signed overflow does not occur when reducing constant in comparison [-Wstrict-overflow]
wallet/wallet.cpp:2942:9: warning: assuming signed overflow does not occur when simplifying conditional to constant [-Wstrict-overflow]
wallet/wallet.cpp:3292:1: warning: assuming signed overflow does not occur when reducing constant in comparison [-Wstrict-overflow]
wallet/wallet.cpp:3589:9: warning: assuming signed overflow does not occur when simplifying conditional [-Wstrict-overflow]
wallet/wallet.cpp:995: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 | 15 346 (21%) | -4 667 | 10 679 | 149 | 16 (6%) |
| 2 | achow101 | 9 412 (13%) | -4 206 | 5 206 | 92 | 8 (3%) |
| 3 | ryanofsky | 7 875 (11%) | -1 959 | 5 916 | 156 | 12 (4%) |
| 4 | jamesob | 4 273 (6%) | -506 | 3 767 | 34 | 3 (1%) |
| 5 | jonasschnelli | 3 672 (5%) | -529 | 3 143 | 38 | 12 (4%) |
| 6 | luke-jr | 3 265 (5%) | -433 | 2 832 | 97 | 24 (9%) |
| 7 | TheBlueMatt | 2 629 (4%) | -750 | 1 879 | 53 | 8 (3%) |
| 8 | kallewoof | 2 493 (3%) | -357 | 2 136 | 71 | 7 (3%) |
| 9 | MarcoFalke | 2 039 (3%) | -674 | 1 365 | 69 | 12 (4%) |
| 10 | sdaftuar | 1 736 (2%) | -1 017 | 719 | 27 | 4 (1%) |
| 11 | jl2012 | 1 712 (2%) | -1 625 | 87 | 12 | 4 (1%) |
| 12 | fanquake | 1 265 (2%) | -1 029 | 236 | 52 | 6 (2%) |
| 13 | ariard | 1 067 (1%) | -1 009 | 58 | 23 | 4 (1%) |
| 14 | Empact | 1 003 (1%) | -671 | 332 | 96 | 19 (7%) |
| 15 | Christewart | 991 (1%) | -24 | 967 | 18 | 1 (0%) |
| 16 | sipa | 875 (1%) | -851 | 24 | 35 | 4 (1%) |
| 17 | marcinja | 832 (1%) | -109 | 723 | 31 | 2 (1%) |
| 18 | jimpo | 802 (1%) | -23 | 779 | 12 | 1 (0%) |
| 19 | hebasto | 774 (1%) | -575 | 199 | 84 | 9 (3%) |
| 20 | LarryRuane | 739 (1%) | -224 | 515 | 22 | 4 (1%) |
| 21 | jnewbery | 718 (1%) | -631 | 87 | 50 | 5 (2%) |
| 22 | promag | 650 (1%) | -262 | 388 | 41 | 19 (7%) |
| 23 | ajtowns | 609 (1%) | -208 | 401 | 28 | 5 (2%) |
| 24 | naumenkogs | 559 (1%) | -90 | 469 | 13 | 1 (0%) |
| 25 | sipsorcery | 512 (1%) | -1 070 | -558 | 9 | 1 (0%) |
| 26 | amitiuttarwar | 484 (1%) | -85 | 399 | 15 | 1 (0%) |
| 27 | fingera | 478 (1%) | -9 | 469 | 4 | 1 (0%) |
| 28 | dongcarl | 447 (1%) | -271 | 176 | 13 | 2 (1%) |
| 29 | jtimon | 443 (1%) | -433 | 10 | 41 | 8 (3%) |
| 30 | domob1812 | 328 (0%) | -158 | 170 | 13 | 3 (1%) |
| 31 | l2a5b1 | 299 (0%) | -93 | 206 | 22 | 2 (1%) |
| 32 | andrewtoth | 284 (0%) | -78 | 206 | 7 | 2 (1%) |
| 33 | theuni | 271 (0%) | -33 | 238 | 14 | 1 (0%) |
| 34 | instagibbs | 263 (0%) | -79 | 184 | 9 | 3 (1%) |
| 35 | hosseinamin | 261 (0%) | -43 | 218 | 3 | 1 (0%) |
| 36 | mzumsande | 224 (0%) | -37 | 187 | 5 | 1 (0%) |
| 37 | benthecarman | 182 (0%) | -21 | 161 | 13 | 4 (1%) |
| 38 | emilengler | 139 (0%) | -7 | 132 | 7 | 2 (1%) |
| 39 | AkioNak | 137 (0%) | -88 | 49 | 4 | 1 (0%) |
| 40 | FelixWeis | 135 (0%) | -101 | 34 | 4 | 1 (0%) |
| 41 | lucash-dev | 117 (0%) | -31 | 86 | 11 | 2 (1%) |
| 42 | mrwhythat | 116 (0%) | -8 | 108 | 7 | 1 (0%) |
| 43 | metalicjames | 98 (0%) | -4 | 94 | 4 | 1 (0%) |
| 44 | JeremyRubin | 92 (0%) | -21 | 71 | 6 | 2 (1%) |
| 45 | n2yen | 86 (0%) | -9 | 77 | 5 | 1 (0%) |
| 46 | jkczyz | 84 (0%) | -68 | 16 | 8 | 3 (1%) |
| 47 | IntegralTeam | 79 (0%) | -3 | 76 | 3 | 1 (0%) |
| 48 | greenaddress | 78 (0%) | -31 | 47 | 10 | 1 (0%) |
| 49 | darosior | 74 (0%) | -10 | 64 | 6 | 3 (1%) |
| 50 | practicalswift | 74 (0%) | -262 | -188 | 113 | 3 (1%) |
| 51 | konez2k | 51 (0%) | -6 | 45 | 3 | 1 (0%) |
| 52 | Remagpie | 48 (0%) | -31 | 17 | 5 | 1 (0%) |
| 53 | mmachicao | 47 (0%) | -40 | 7 | 6 | 1 (0%) |
| 54 | IPGlider | 41 (0%) | -15 | 26 | 15 | 1 (0%) |
| 55 | shannon1916 | 39 (0%) | -9 | 30 | 4 | 1 (0%) |
| 56 | kodslav | 31 (0%) | -5 | 26 | 1 | 1 (0%) |
| 57 | Bushstar | 30 (0%) | -4 | 26 | 3 | 1 (0%) |
| 58 | btcdrak | 30 (0%) | -25 | 5 | 4 | 1 (0%) |
| 59 | pstratem | 30 (0%) | -51 | -21 | 2 | 2 (1%) |
| 60 | LeandroRocha84 | 24 (0%) | -14 | 10 | 4 | 1 (0%) |
| 61 | lucayepa | 24 (0%) | -14 | 10 | 1 | 1 (0%) |
| 62 | mruddy | 22 (0%) | -2 | 20 | 2 | 1 (0%) |
| 63 | marcoagner | 21 (0%) | -2 | 19 | 1 | 1 (0%) |
| 64 | asood123 | 16 (0%) | -10 | 6 | 3 | 1 (0%) |
| 65 | shargon | 16 (0%) | -1 | 15 | 1 | 1 (0%) |
| 66 | icota | 15 (0%) | -5 | 10 | 4 | 1 (0%) |
| 67 | tryphe | 15 (0%) | -16 | -1 | 2 | 1 (0%) |
| 68 | candrews | 13 (0%) | -8 | 5 | 1 | 1 (0%) |
| 69 | sanket1729 | 11 (0%) | -3 | 8 | 1 | 1 (0%) |
| 70 | cryptogopher | 10 (0%) | -1 | 9 | 1 | 1 (0%) |
| 71 | jameshilliard | 8 (0%) | -3 | 5 | 3 | 1 (0%) |
| 72 | orientye | 8 (0%) | -2 | 6 | 2 | 1 (0%) |
| 73 | jonatack | 6 (0%) | -8 | -2 | 2 | 1 (0%) |
| 74 | GChuf | 5 (0%) | -13 | -8 | 2 | 2 (1%) |
| 75 | kristapsk | 5 (0%) | -1 | 4 | 1 | 1 (0%) |
| 76 | THETCR | 4 (0%) | -5 | -1 | 1 | 1 (0%) |
| 77 | d3spwn | 4 (0%) | -2 | 2 | 2 | 1 (0%) |
| 78 | NicolasDorier | 3 (0%) | -9 | -6 | 2 | 1 (0%) |
| 79 | qubenix | 3 (0%) | -4 | -1 | 1 | 1 (0%) |
| 80 | stevenroose | 3 (0%) | -2 | 1 | 1 | 1 (0%) |
| 81 | HashUnlimited | 1 (0%) | -2 | -1 | 1 | 1 (0%) |
| 82 | michaelfolkson | 1 (0%) | -2 | -1 | 1 | 1 (0%) |
| 83 | setpill | 1 (0%) | -1 | 0 | 1 | 1 (0%) |
| 84 | bhinesley | 0 (0%) | -6 | -6 | 1 | 1 (0%) |
| 85 | wodry | 0 (0%) | -6 | -6 | 2 | 1 (0%) |