bug-bounty-intelligence-mcp 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/BENCHMARK.md +1 -1
- package/METHODOLOGY.md +37 -5
- package/README.md +3 -3
- package/index.mjs +27 -24
- package/package.json +2 -2
- package/vulnerability-acceptance-rates.json +61 -60
package/BENCHMARK.md
CHANGED
|
@@ -167,7 +167,7 @@ scan_contract({ repo_url: "https://github.com/3FLabs/grunt", protocol_type: "LEN
|
|
|
167
167
|
|
|
168
168
|
## About Bug Bounty Intelligence
|
|
169
169
|
|
|
170
|
-
Pattern-aware from a corpus of 56,657 submitted Sherlock findings across 212 measured contests, acceptance-rate numbers (used by `list_vulnerability_patterns`) are limited to the
|
|
170
|
+
Pattern-aware from a corpus of 56,657 submitted Sherlock findings across 212 measured contests plus the Code4rena contests crawled alongside them, acceptance-rate numbers (used by `list_vulnerability_patterns`) are limited to the 9,200 findings across 38 contests (35 Sherlock, 3 Code4rena) that could be exact-reconciled against contest outcomes (4,011 accepted), see METHODOLOGY.md. Uses the Al-Mizaan v3 framework, a 7-gate validation chain (Code, Reachability, Threat-Model, Invariant, Protocol-Intent, Impact, Proof), to filter signals into confirmed findings.
|
|
171
171
|
|
|
172
172
|
**Cost:** $5 USDC on Base (eip155:8453) via x402.
|
|
173
173
|
**Install:** `npx -y bug-bounty-intelligence-mcp@latest`
|
package/METHODOLOGY.md
CHANGED
|
@@ -10,6 +10,9 @@ are computed, what they don't claim, and how to reproduce them from public data.
|
|
|
10
10
|
|
|
11
11
|
## Data source
|
|
12
12
|
|
|
13
|
+
Two platforms, two different public data shapes, two different reconciliation rules (same
|
|
14
|
+
zero-tolerance standard on both). Sherlock first, Code4rena below.
|
|
15
|
+
|
|
13
16
|
Sherlock runs public GitHub repos for judging each audit contest
|
|
14
17
|
(`sherlock-audit/<contest>-judging`), where security researchers ("Watsons") open one GitHub
|
|
15
18
|
issue per submitted finding. 218 of these judging repos were crawled; a real issue count could be
|
|
@@ -54,6 +57,31 @@ also how the reconciliation check itself works (see Reproducing this, below). Re
|
|
|
54
57
|
same reconciliation rule this way, with no local cache in the loop, is what produced the 35/7,388/
|
|
55
58
|
3,694 figures above.
|
|
56
59
|
|
|
60
|
+
## Code4rena: a different shape, a much smaller yield
|
|
61
|
+
|
|
62
|
+
Code4rena's `code-423n4/<contest>-findings` repos do not have Sherlock's accepted/invalid folder
|
|
63
|
+
convention. Contests from 2021-2023 instead use per-researcher folders
|
|
64
|
+
(`<researcher>/<researcher>-submission.md`) with no accept/reject marker in the file tree at
|
|
65
|
+
all. Contests from roughly late 2024 onward move the judging data off GitHub entirely; the repo
|
|
66
|
+
is reduced to a README pointing sponsors at code4rena.com (verified on
|
|
67
|
+
`2024-12-unruggable-findings`: the repo contains only that README).
|
|
68
|
+
|
|
69
|
+
What the 2023-era contests do have is GitHub issues with labels, including `satisfactory`,
|
|
70
|
+
`unsatisfactory`, and `partial-NN` (a duplicate that earned partial credit). We tested this
|
|
71
|
+
against five real contests spanning 2021 to 2024: the two 2021-2022 contests sampled had zero
|
|
72
|
+
issues carrying any of these labels (a different, unidentified labelling convention was in use),
|
|
73
|
+
while three contests from October 2023 reconciled exactly once `satisfactory`/`partial-NN`
|
|
74
|
+
(accepted), `unsatisfactory`/`withdrawn-by-warden` (rejected), and
|
|
75
|
+
`qa`/`gas optimization`/`analysis`-only issues (excluded, same treatment as Sherlock's
|
|
76
|
+
`low_info`) were counted against the real issue total.
|
|
77
|
+
|
|
78
|
+
Applying the same zero-tolerance rule (accepted + rejected + excluded must equal the real
|
|
79
|
+
total, with zero unexplained residual) to all 372 crawled Code4rena judging repos: **3 reconcile
|
|
80
|
+
exactly** (1,812 findings, 317 accepted), all three from October 2023. The other 369 either have
|
|
81
|
+
no GitHub-issue judging data at all, or have labels that don't account for every issue. This is
|
|
82
|
+
a small, honest addition on top of Sherlock, not padding — most of Code4rena's history is
|
|
83
|
+
excluded for the same reason most of Sherlock's is: it does not reconcile.
|
|
84
|
+
|
|
57
85
|
## What the resulting numbers mean
|
|
58
86
|
|
|
59
87
|
For each pattern (keyword-matched against finding titles/bodies — e.g. "reentrancy",
|
|
@@ -71,9 +99,12 @@ number of distinct vulnerabilities found.
|
|
|
71
99
|
- The keyword-based pattern tagging is a simple substring matcher (see `detectPatterns()` in the
|
|
72
100
|
crawler scripts), not a semantic classifier — a manual audit found roughly 65% tagging
|
|
73
101
|
precision on a sample. Pattern labels are directional, not exact classifications.
|
|
74
|
-
- The
|
|
75
|
-
have thin n (e.g. `idor`, n=
|
|
76
|
-
`trusted-actor`, n=
|
|
102
|
+
- The 38-contest sample (35 Sherlock, 3 Code4rena) is still small relative to either platform's
|
|
103
|
+
full history. Some pattern rows have thin n (e.g. `idor`, n=35) — treat low-n rows as
|
|
104
|
+
lower-confidence than high-n rows (e.g. `trusted-actor`, n=2,127).
|
|
105
|
+
- Code4rena's three contests are a narrow, single-month slice (all October 2023), not a
|
|
106
|
+
representative sample of Code4rena's history. Treat the combined numbers as Sherlock-dominated
|
|
107
|
+
(7,388 of 9,200 findings), with Code4rena adding a small, real, but not yet broad correction.
|
|
77
108
|
|
|
78
109
|
## Reproducing this
|
|
79
110
|
|
|
@@ -105,5 +136,6 @@ not use that contest's data.
|
|
|
105
136
|
An earlier draft of this tool advertised acceptance percentages computed from the full,
|
|
106
137
|
unverified raw corpus. Independent review caught that those specific percentages were
|
|
107
138
|
unreliable. We would rather ship a smaller number we can prove than a bigger one we can't. That
|
|
108
|
-
is still true today: the raw corpus is 56,657 findings, the reconciled,
|
|
109
|
-
published here
|
|
139
|
+
is still true today: the raw Sherlock corpus alone is 56,657 findings, the reconciled,
|
|
140
|
+
trustworthy number published here (Sherlock plus the three Code4rena contests that also
|
|
141
|
+
reconcile) is 9,200.
|
package/README.md
CHANGED
|
@@ -86,13 +86,13 @@ Reading the production scan code on 24 October 2026 showed that earlier text on
|
|
|
86
86
|
|
|
87
87
|
Official source: this repository and the payment address in the payment section below are the only official ones for Bug Bounty Intelligence. If a listing, a reply or a website gives a different payment address, it is not ours. Check the address against the one below before you pay.
|
|
88
88
|
|
|
89
|
-
**Drawn from a corpus of 56,657 submitted findings across 212 measured
|
|
89
|
+
**Drawn from a corpus of 56,657 submitted Sherlock findings across 212 measured audit competitions, plus Code4rena.**
|
|
90
90
|
**Cost: $5 USDC on Base (eip155:8453) via x402 for the full scan, $1 USDC for the quick scan.**
|
|
91
91
|
**Free tool: `list_vulnerability_patterns`, no payment needed.**
|
|
92
92
|
|
|
93
93
|
`list_vulnerability_patterns`' acceptance-rate numbers are computed only from the subset where
|
|
94
|
-
results could be exactly reconciled against
|
|
95
|
-
across 35
|
|
94
|
+
results could be exactly reconciled against the platform's own published outcomes: 9,200 findings
|
|
95
|
+
across 38 contests (35 Sherlock, 3 Code4rena). We'd rather show fewer, verified numbers than a bigger set we can't stand
|
|
96
96
|
behind. See [METHODOLOGY.md](METHODOLOGY.md) for exactly why, and how to reproduce it.
|
|
97
97
|
|
|
98
98
|
## Free dataset: no server, no MCP, no payment
|
package/index.mjs
CHANGED
|
@@ -21,27 +21,30 @@ import {
|
|
|
21
21
|
} from '@modelcontextprotocol/sdk/types.js'
|
|
22
22
|
const API_URL = 'https://x402.tokenizen.nl'
|
|
23
23
|
|
|
24
|
-
// Embedded pattern library — Sherlock audit-competition findings, updated 2026-11-12.
|
|
25
|
-
// Methodology: only contests where
|
|
26
|
-
//
|
|
27
|
-
// 7,388 findings
|
|
28
|
-
//
|
|
29
|
-
//
|
|
30
|
-
//
|
|
24
|
+
// Embedded pattern library — Sherlock + Code4rena audit-competition findings, updated 2026-11-12.
|
|
25
|
+
// Methodology: only contests where the judging repo's own result structure could be exactly
|
|
26
|
+
// reconciled (accepted + invalid === total submissions) are included — 35 Sherlock contests
|
|
27
|
+
// (7,388 findings) plus 3 Code4rena contests (1,812 findings) that happen to reconcile under
|
|
28
|
+
// the same zero-tolerance rule, 38 contests, 9,200 findings total. Code4rena contributes far
|
|
29
|
+
// less than Sherlock because most of its history does not use a consistently-applied
|
|
30
|
+
// satisfactory/unsatisfactory label (verified by sampling, not assumed), so those contests are
|
|
31
|
+
// excluded rather than estimated, exactly like the excluded Sherlock contests. See
|
|
32
|
+
// METHODOLOGY.md for the full methodology note, including the 2026-11-12 re-verification that
|
|
33
|
+
// replaced an unreliable local cache.
|
|
31
34
|
const PATTERN_LIBRARY = {
|
|
32
|
-
'flash-loan': { acceptance_rate: '0.
|
|
33
|
-
'liquidation': { acceptance_rate: '0.66', total:
|
|
34
|
-
'fee-miscalculation': { acceptance_rate: '0.
|
|
35
|
-
'
|
|
36
|
-
'staleness': { acceptance_rate: '0.
|
|
37
|
-
'
|
|
38
|
-
'trusted-actor': { acceptance_rate: '0.
|
|
39
|
-
'
|
|
40
|
-
'overflow': { acceptance_rate: '0.
|
|
41
|
-
'
|
|
42
|
-
'
|
|
43
|
-
'reentrancy': { acceptance_rate: '0.
|
|
44
|
-
'
|
|
35
|
+
'flash-loan': { acceptance_rate: '0.66', total: 193, accepted: 127, examples_accepted: ['duc - Borrower can reduce the interest of shortly loans', 'ShadowForce - Bypass the VAULT_ACCOUNT_MIN_TIME check in VaultAccountAction.sol when exiting the vau', 'mstpr-brainbot - Compound exchange rate can be manipulated to withdraw more underlying tokens from N'] },
|
|
36
|
+
'liquidation': { acceptance_rate: '0.66', total: 877, accepted: 576, examples_accepted: ['w42d3n - The protocol is not protected against Signature malleability', 'gryphon - Buyer may not be able to liquidate the loan', 'peanuts - NFTs are not stored in the appropriate contracts'] },
|
|
37
|
+
'fee-miscalculation': { acceptance_rate: '0.54', total: 583, accepted: 313, examples_accepted: ['7siech - Total loss of funds when using certain popular ERC20 tokens', 'iglyx - MigratePrimeCash\'s _calculateInterestRateCurves calculates new kinkRate1 and kinkRate2 incor', 'xiaoming90 - Prime vaults do not consider secondary debt when assessing vault fees'] },
|
|
38
|
+
'oracle-manipulation':{ acceptance_rate: '0.53', total: 949, accepted: 502, examples_accepted: ['iglyx - TokenHandler\'s _redeemMoneyMarketIfRequired can fail valid withdrawal requests', 'xiaoming90 - Underlying delta is calculated on internal token balance', 'xiaoming90 - Rebalance stops working when more holdings are added'] },
|
|
39
|
+
'staleness': { acceptance_rate: '0.51', total: 1315, accepted: 675, examples_accepted: ['w42d3n - The protocol is not protected against Signature malleability', 'peanuts - Some NFTs like CryptoKitty and CryptoFighter can be paused, which block repaying/liquidati', 'csanuragjain - Liquidation occur at incorrect time'] },
|
|
40
|
+
'mev-slippage': { acceptance_rate: '0.47', total: 379, accepted: 179, examples_accepted: ['xiaoming90 - Liquidation discount does not take slippage into consideration', 'xiaoming90 - Inadequate slippage control', 'ShadowForce - Bypass the VAULT_ACCOUNT_MIN_TIME check in VaultAccountAction.sol when exiting the vau'] },
|
|
41
|
+
'trusted-actor': { acceptance_rate: '0.47', total: 2127, accepted: 1000, examples_accepted: ['gryphon - Buyer may not be able to liquidate the loan', 'peanuts - Some NFTs like CryptoKitty and CryptoFighter can be paused, which block repaying/liquidati', 'Go-langer - Init function left open for anyone to call and initialize the protocol.'] },
|
|
42
|
+
'dos-griefing': { acceptance_rate: '0.47', total: 816, accepted: 383, examples_accepted: ['w42d3n - The protocol is not protected against Signature malleability', 'duc - Borrower can reduce the interest of shortly loans', '0xd1r4cde17a - lender gets minInterestsToRepay / loan.nbOfPositions'] },
|
|
43
|
+
'overflow': { acceptance_rate: '0.43', total: 385, accepted: 167, examples_accepted: ['peanuts - Some NFTs like CryptoKitty and CryptoFighter can be paused, which block repaying/liquidati', 'Robert - checkedTransfer In claim() and claimAsBorrower() Functions Can Permanently Lock Tokens', 'Inspex - Denial-of-Service in the liquidation flow results in the collateral NTF will be stuck in th'] },
|
|
44
|
+
'access-control': { acceptance_rate: '0.42', total: 846, accepted: 356, examples_accepted: ['Go-langer - Init function left open for anyone to call and initialize the protocol.', 'Englave - Signature Replay Attack on OfferArgs', 'xiaoming90 - It may be possible to liquidate on behalf of another account'] },
|
|
45
|
+
'rounding': { acceptance_rate: '0.39', total: 532, accepted: 205, examples_accepted: ['usmannk - Borrowers may steal funds from lenders', 'jekapi - Borrower can lock lender assets if offer has large LTV', 'iglyx - MigratePrimeCash\'s _calculateInterestRateCurves calculates new kinkRate1 and kinkRate2 incor'] },
|
|
46
|
+
'reentrancy': { acceptance_rate: '0.34', total: 332, accepted: 114, examples_accepted: ['SPYBOY - A malicious signer can exploite reentrancy while Borrowing', 'glcanvas - Possible reentrancy which allows to write incorrect supplyPositionIndex', 'Robert - A Loan\'s supplyPositionIndex Can Be Duplicated Through Re-entrancy'] },
|
|
47
|
+
'idor': { acceptance_rate: '0.26', total: 35, accepted: 9, examples_accepted: ['0Kage - A borrower with multiple loans of which one is liquidated can withdraw much more than his sh', '0xbepresent - Claimable amount could be sent to the approved address instead the provision/position', 'GimelSec - ClaimFacet.sendShareOfSaleAsSupplier() calculates unfair shares, the money should compe'] },
|
|
45
48
|
}
|
|
46
49
|
|
|
47
50
|
// ── helpers ──────────────────────────────────────────────────────────────────
|
|
@@ -98,7 +101,7 @@ server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
|
98
101
|
'Submit a public GitHub repository for an automated Solidity analysis. The result is a list of AI-generated hypotheses to review by hand. It is not an audit and not a list of confirmed bugs.',
|
|
99
102
|
'The scan reads the files most likely to move funds first, in at most six parts. Tests, mocks, scripts, interfaces and vendored dependencies are left out. The report states what share of the in-scope code was actually read, and a report can say that no hypotheses came out of the part that was read.',
|
|
100
103
|
'Check the repository first, for free: GET https://x402.tokenizen.nl/api/bug-intel/precheck?repo=owner/name says whether the scan counts any Solidity in it and roughly how much of it will be read.',
|
|
101
|
-
'How often the scan finds known issues on closed audit contests, including the misses, is published in the README of the repository (github.com/holistis/bug-bounty-intelligence-mcp). The prompt uses acceptance-rate hints from the
|
|
104
|
+
'How often the scan finds known issues on closed audit contests, including the misses, is published in the README of the repository (github.com/holistis/bug-bounty-intelligence-mcp). The prompt uses acceptance-rate hints from the 9,200 findings that could be exact-reconciled against contest outcomes, see METHODOLOGY.md.',
|
|
102
105
|
'Cost: $5 USDC on Base (eip155:8453) via x402. Reports usually arrive within the hour. If the scan fails or the report does not help, write to info@holistischadviseur.nl for a new attempt or a refund, see the terms.',
|
|
103
106
|
'Returns a job_id. Use get_scan_report to poll for results.',
|
|
104
107
|
'If payment_required is true, pay $5 USDC to the payTo address on Base, then retry scan_contract with the same repo_url.',
|
|
@@ -138,8 +141,8 @@ server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
|
138
141
|
{
|
|
139
142
|
name: 'list_vulnerability_patterns',
|
|
140
143
|
description: [
|
|
141
|
-
'Returns historical vulnerability patterns and acceptance rates from Sherlock audit-competition findings.',
|
|
142
|
-
'Numbers are limited to contests where results could be exactly reconciled against
|
|
144
|
+
'Returns historical vulnerability patterns and acceptance rates from Sherlock and Code4rena audit-competition findings.',
|
|
145
|
+
'Numbers are limited to contests where results could be exactly reconciled against the platform\'s own published outcomes (9,200 findings across 38 contests: 35 Sherlock, 3 Code4rena), no estimated or unverifiable figures.',
|
|
143
146
|
'Useful for understanding what types of bugs are most likely to be valid in a given protocol type.',
|
|
144
147
|
'This tool is FREE — no payment required.',
|
|
145
148
|
].join(' '),
|
|
@@ -265,7 +268,7 @@ server.setRequestHandler(CallToolRequestSchema, async (req) => {
|
|
|
265
268
|
}
|
|
266
269
|
}
|
|
267
270
|
|
|
268
|
-
const lines = [`Vulnerability patterns for ${protocol_type} protocols (from Sherlock audit findings, exact-reconciled contests only):`, '']
|
|
271
|
+
const lines = [`Vulnerability patterns for ${protocol_type} protocols (from Sherlock and Code4rena audit findings, exact-reconciled contests only):`, '']
|
|
269
272
|
for (const p of patterns) {
|
|
270
273
|
const pct = Math.round(parseFloat(p.acceptance_rate) * 100)
|
|
271
274
|
lines.push(`${p.pattern.padEnd(24)} ${pct}% accepted (${p.total_cases} cases)`)
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bug-bounty-intelligence-mcp",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "MCP server for AI-powered smart contract security analysis. $5 USDC/scan via x402. Drawn from 56,657 Sherlock submissions, verified acceptance rates from
|
|
3
|
+
"version": "1.2.0",
|
|
4
|
+
"description": "MCP server for AI-powered smart contract security analysis. $5 USDC/scan via x402. Drawn from 56,657 Sherlock submissions plus Code4rena, verified acceptance rates from 9,200 exact-reconciled findings. Includes a free, standalone dataset (vulnerability-acceptance-rates.json), no server required.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "index.mjs",
|
|
7
7
|
"bin": {
|
|
@@ -1,91 +1,92 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema_note": "Free, standalone dataset, no server, no API key, no payment. Embed directly in your own tool.",
|
|
3
|
-
"source": "Sherlock audit-competition judging repos (public GitHub)",
|
|
3
|
+
"source": "Sherlock and Code4rena audit-competition judging repos (public GitHub)",
|
|
4
4
|
"license": "CC0, public domain, use freely with or without attribution",
|
|
5
5
|
"methodology_url": "https://github.com/holistis/bug-bounty-intelligence-mcp/blob/main/METHODOLOGY.md",
|
|
6
6
|
"last_updated": "2026-11-12T00:00:00.000Z",
|
|
7
|
-
"contests_included":
|
|
8
|
-
"
|
|
9
|
-
"
|
|
10
|
-
"
|
|
7
|
+
"contests_included": 38,
|
|
8
|
+
"contests_included_by_platform": { "sherlock": 35, "code4rena": 3 },
|
|
9
|
+
"total_findings": 9200,
|
|
10
|
+
"total_accepted": 4011,
|
|
11
|
+
"note": "Only contests where accepted+invalid counts reconcile exactly against the platform's own published results are included (zero tolerance, same rule for both platforms). Code4rena contributes far less than Sherlock because most of its history does not consistently apply a satisfactory/unsatisfactory label the way its October 2023 contests do; those contests are excluded rather than estimated. 'duplicated' is not tracked in this version. See methodology_url for full scope, limitations, and reproduction steps.",
|
|
11
12
|
"patterns": {
|
|
12
13
|
"flash-loan": {
|
|
13
|
-
"acceptance_rate": 0.
|
|
14
|
+
"acceptance_rate": 0.66,
|
|
14
15
|
"accepted": 127,
|
|
15
|
-
"rejected":
|
|
16
|
-
"total":
|
|
16
|
+
"rejected": 66,
|
|
17
|
+
"total": 193
|
|
17
18
|
},
|
|
18
19
|
"liquidation": {
|
|
19
20
|
"acceptance_rate": 0.66,
|
|
20
21
|
"accepted": 576,
|
|
21
|
-
"rejected":
|
|
22
|
-
"total":
|
|
22
|
+
"rejected": 301,
|
|
23
|
+
"total": 877
|
|
23
24
|
},
|
|
24
25
|
"fee-miscalculation": {
|
|
25
|
-
"acceptance_rate": 0.55,
|
|
26
|
-
"accepted": 297,
|
|
27
|
-
"rejected": 243,
|
|
28
|
-
"total": 540
|
|
29
|
-
},
|
|
30
|
-
"dos-griefing": {
|
|
31
26
|
"acceptance_rate": 0.54,
|
|
32
|
-
"accepted":
|
|
33
|
-
"rejected":
|
|
34
|
-
"total":
|
|
27
|
+
"accepted": 313,
|
|
28
|
+
"rejected": 270,
|
|
29
|
+
"total": 583
|
|
30
|
+
},
|
|
31
|
+
"oracle-manipulation": {
|
|
32
|
+
"acceptance_rate": 0.53,
|
|
33
|
+
"accepted": 502,
|
|
34
|
+
"rejected": 447,
|
|
35
|
+
"total": 949
|
|
35
36
|
},
|
|
36
37
|
"staleness": {
|
|
37
|
-
"acceptance_rate": 0.
|
|
38
|
-
"accepted":
|
|
39
|
-
"rejected":
|
|
40
|
-
"total":
|
|
38
|
+
"acceptance_rate": 0.51,
|
|
39
|
+
"accepted": 675,
|
|
40
|
+
"rejected": 640,
|
|
41
|
+
"total": 1315
|
|
41
42
|
},
|
|
42
|
-
"
|
|
43
|
-
"acceptance_rate": 0.
|
|
44
|
-
"accepted":
|
|
45
|
-
"rejected":
|
|
46
|
-
"total":
|
|
43
|
+
"mev-slippage": {
|
|
44
|
+
"acceptance_rate": 0.47,
|
|
45
|
+
"accepted": 179,
|
|
46
|
+
"rejected": 200,
|
|
47
|
+
"total": 379
|
|
47
48
|
},
|
|
48
49
|
"trusted-actor": {
|
|
49
|
-
"acceptance_rate": 0.
|
|
50
|
-
"accepted":
|
|
51
|
-
"rejected":
|
|
52
|
-
"total":
|
|
50
|
+
"acceptance_rate": 0.47,
|
|
51
|
+
"accepted": 1000,
|
|
52
|
+
"rejected": 1127,
|
|
53
|
+
"total": 2127
|
|
53
54
|
},
|
|
54
|
-
"
|
|
55
|
-
"acceptance_rate": 0.
|
|
56
|
-
"accepted":
|
|
57
|
-
"rejected":
|
|
58
|
-
"total":
|
|
55
|
+
"dos-griefing": {
|
|
56
|
+
"acceptance_rate": 0.47,
|
|
57
|
+
"accepted": 383,
|
|
58
|
+
"rejected": 433,
|
|
59
|
+
"total": 816
|
|
59
60
|
},
|
|
60
61
|
"overflow": {
|
|
61
|
-
"acceptance_rate": 0.
|
|
62
|
-
"accepted":
|
|
63
|
-
"rejected":
|
|
64
|
-
"total":
|
|
65
|
-
},
|
|
66
|
-
"mev-slippage": {
|
|
67
|
-
"acceptance_rate": 0.48,
|
|
68
|
-
"accepted": 178,
|
|
69
|
-
"rejected": 190,
|
|
70
|
-
"total": 368
|
|
62
|
+
"acceptance_rate": 0.43,
|
|
63
|
+
"accepted": 167,
|
|
64
|
+
"rejected": 218,
|
|
65
|
+
"total": 385
|
|
71
66
|
},
|
|
72
67
|
"access-control": {
|
|
73
|
-
"acceptance_rate": 0.
|
|
74
|
-
"accepted":
|
|
75
|
-
"rejected":
|
|
76
|
-
"total":
|
|
68
|
+
"acceptance_rate": 0.42,
|
|
69
|
+
"accepted": 356,
|
|
70
|
+
"rejected": 490,
|
|
71
|
+
"total": 846
|
|
72
|
+
},
|
|
73
|
+
"rounding": {
|
|
74
|
+
"acceptance_rate": 0.39,
|
|
75
|
+
"accepted": 205,
|
|
76
|
+
"rejected": 327,
|
|
77
|
+
"total": 532
|
|
77
78
|
},
|
|
78
79
|
"reentrancy": {
|
|
79
|
-
"acceptance_rate": 0.
|
|
80
|
-
"accepted":
|
|
81
|
-
"rejected":
|
|
82
|
-
"total":
|
|
80
|
+
"acceptance_rate": 0.34,
|
|
81
|
+
"accepted": 114,
|
|
82
|
+
"rejected": 218,
|
|
83
|
+
"total": 332
|
|
83
84
|
},
|
|
84
|
-
"
|
|
85
|
-
"acceptance_rate": 0.
|
|
86
|
-
"accepted":
|
|
87
|
-
"rejected":
|
|
88
|
-
"total":
|
|
85
|
+
"idor": {
|
|
86
|
+
"acceptance_rate": 0.26,
|
|
87
|
+
"accepted": 9,
|
|
88
|
+
"rejected": 26,
|
|
89
|
+
"total": 35
|
|
89
90
|
}
|
|
90
91
|
}
|
|
91
92
|
}
|