-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdemo-v4-clean.cast
More file actions
114 lines (114 loc) · 21.5 KB
/
Copy pathdemo-v4-clean.cast
File metadata and controls
114 lines (114 loc) · 21.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
{"version": 2, "width": 80, "height": 24, "timestamp": 1781231840, "env": {"SHELL": "/bin/bash", "TERM": "xterm"}}
[0.014943, "o", "\u001b[H\u001b[2J\u001b[3J"]
[0.016761, "o", "\r\n"]
[0.017642, "o", "\u001b[1m \u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557\u001b[0m"]
[0.01796, "o", "\r\n"]
[0.018211, "o", "\u001b[1m \u2551\u001b[0m \u001b[0;36mA T H E N A\u001b[0m \u2014 Web3 Smart Contract Security Audit Agent \u001b[1m\u2551\u001b[0m"]
[0.018473, "o", "\r\n"]
[0.01875, "o", "\u001b[1m \u2551\u001b[0m Powered by GLM-5.1 Long-Horizon Task \u001b[1m\u2551\u001b[0m"]
[0.019054, "o", "\r\n\u001b[1m \u255a\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255d\u001b[0m"]
[0.019461, "o", "\r\n"]
[0.019619, "o", "\r\n \u001b[2mModel:\u001b[0m GLM-5.1 (200K context, long-horizon reasoning)"]
[0.019825, "o", "\r\n \u001b[2mPipeline:\u001b[0m 8-step audit \u2192 EAS attestation \u2192 NFT certification"]
[0.020082, "o", "\r\n \u001b[2mContracts:\u001b[0m ZK proof + Agent Escrow + ERC-7512"]
[0.02032, "o", "\r\n \u001b[2mChains:\u001b[0m Sepolia + Base Sepolia"]
[0.022299, "o", "\r\n\r\n"]
[2.023938, "o", "\u001b[2m\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u001b[0m"]
[2.024544, "o", "\r\n"]
[2.024772, "o", "\u001b[0;36m\u001b[1m[STEP 1/8]\u001b[0m \u001b[1mRequirement Understanding \u2014 Target Analysis\u001b[0m"]
[2.024913, "o", "\r\n"]
[2.026015, "o", "\u001b[2m\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u001b[0m"]
[2.027256, "o", "\r\n"]
[3.029135, "o", " \u001b[1;33m> athena audit --target contracts/test-cases/VulnerableBank.sol\u001b[0m"]
[3.029665, "o", "\r\n"]
[4.03327, "o", "\r\n \u001b[0;32m[OK]\u001b[0m Contract: VulnerableBank\r\n \u001b[2m Functions: deposit(), withdraw(), getBalance()\u001b[0m\r\n \u001b[2m Lines: 47 | Compiler: ^0.8.20\u001b[0m\r\n \u001b[2m Pattern: Classic reentrancy + missing access control\u001b[0m\r\n\r\n"]
[6.036766, "o", "\u001b[2m\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u001b[0m\r\n\u001b[0;36m\u001b[1m[STEP 2/8]\u001b[0m \u001b[1mDual-Engine Static Analysis (Slither + Aderyn)\u001b[0m\r\n"]
[6.03832, "o", "\u001b[2m\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u001b[0m\r\n"]
[7.040185, "o", " \u001b[1;33m> slither contracts/test-cases/VulnerableBank.sol\u001b[0m"]
[7.04073, "o", "\r\n"]
[7.84386, "o", "\r\n \u001b[0;31m[HIGH]\u001b[0m Reentrancy in withdraw() \u2014 state updated after call\r\n \u001b[0;31m[HIGH]\u001b[0m Missing zero-address check in constructor\r\n \u001b[2m[INFO] 3 informational findings\u001b[0m\r\n\r\n"]
[8.845704, "o", " \u001b[1;33m> aderyn contracts/test-cases/\u001b[0m"]
[8.846456, "o", "\r\n"]
[9.651323, "o", "\r\n \u001b[0;31m[HIGH]\u001b[0m Reentrancy-vulnerability: external call before state update\r\n \u001b[1;33m[MED]\u001b[0m Unchecked return value in withdraw()\r\n \u001b[2m[LOW] 5 low-severity findings\u001b[0m\r\n\r\n \u001b[0;32m[MERGE]\u001b[0m Slither (5) + Aderyn (7) \u2192 9 unique findings after dedup\r\n"]
[11.654459, "o", "\u001b[2m\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u001b[0m\r\n\u001b[0;36m\u001b[1m[STEP 3/8]\u001b[0m \u001b[1mRAG Knowledge Enhancement \u2014 Vulnerability DB\u001b[0m\r\n"]
[11.656311, "o", "\u001b[2m\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u001b[0m"]
[11.656886, "o", "\r\n"]
[12.659691, "o", " \u001b[1;33m> athena rag --query \"reentrancy attack patterns\"\u001b[0m"]
[12.661298, "o", "\r\n"]
[13.461825, "o", "\r\n"]
[13.46248, "o", " \u001b[0;32m[MATCH]\u001b[0m SWC-107: Reentrancy"]
[13.462946, "o", "\r\n"]
[13.463312, "o", " \u001b[2m \u251c\u2500\u2500 TheDAO hack (2016) \u2014 $60M drained\u001b[0m"]
[13.463582, "o", "\r\n"]
[13.463732, "o", " \u001b[2m \u251c\u2500\u2500 Curve V2 read-only reentrancy (2023) \u2014 $70M at risk\u001b[0m"]
[13.463945, "o", "\r\n \u001b[2m \u2514\u2500\u2500 Hundred Finance (2023) \u2014 $7M stolen\u001b[0m"]
[13.464093, "o", "\r\n\r\n \u001b[0;32m[MATCH]\u001b[0m Mitigation: Checks-Effects-Interactions pattern"]
[13.464382, "o", "\r\n \u001b[0;32m[MATCH]\u001b[0m OpenZeppelin ReentrancyGuard usage\r\n"]
[15.468627, "o", "\u001b[2m\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u001b[0m\r\n\u001b[0;36m\u001b[1m[STEP 4/8]\u001b[0m \u001b[1mPoC Generation \u2014 Attack Simulation\u001b[0m\r\n"]
[15.469334, "o", "\u001b[2m\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u001b[0m"]
[15.47085, "o", "\r\n"]
[16.472547, "o", " \u001b[1;33m> athena poc --vuln reentrancy --target VulnerableBank\u001b[0m\r\n"]
[17.475193, "o", "\r\n"]
[17.475655, "o", "\u001b[2m // SPDX-License-Identifier: MIT"]
[17.476024, "o", "\r\n"]
[17.476186, "o", " contract Attacker {"]
[17.47629, "o", "\r\n"]
[17.476405, "o", " VulnerableBank bank;"]
[17.476529, "o", "\r\n function attack() external payable {\r\n"]
[17.47668, "o", " bank.deposit{value: 1 ether}();\r\n bank.withdraw(); // triggers reentrancy"]
[17.476721, "o", "\r\n }"]
[17.476811, "o", "\r\n receive() external payable {\r\n"]
[17.476982, "o", " if (address(bank).balance >= 1 ether)\r\n bank.withdraw(); // re-enter"]
[17.477139, "o", "\r\n }\r\n }\u001b[0m\r\n"]
[17.479659, "o", "\r\n \u001b[0;32m[OK]\u001b[0m PoC generated \u2192 test/Attacker.t.sol\r\n"]
[19.482128, "o", "\u001b[2m\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u001b[0m\r\n\u001b[0;36m\u001b[1m[STEP 5/8]\u001b[0m \u001b[1mFoundry Fuzz Testing\u001b[0m\r\n"]
[19.483658, "o", "\u001b[2m\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u001b[0m"]
[19.484114, "o", "\r\n"]
[20.487218, "o", " \u001b[1;33m> forge test --match-test testReentrancy -vvv\u001b[0m\r\n"]
[21.489682, "o", "\r\n \u001b[0;32m[PASS]\u001b[0m testReentrancy() \u2014 500 fuzz runs\r\n \u001b[2m Gas used: 284,156 | Traces: 12\u001b[0m\r\n \u001b[2m Attack succeeded: balance drained in single tx\u001b[0m\r\n\r\n \u001b[0;32m[VERIFIED]\u001b[0m Vulnerability confirmed via fuzz testing\r\n"]
[23.494438, "o", "\u001b[2m\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u001b[0m\r\n\u001b[0;36m\u001b[1m[STEP 6/8]\u001b[0m \u001b[1mFix Suggestions\u001b[0m\r\n"]
[23.496014, "o", "\u001b[2m\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u001b[0m"]
[23.49653, "o", "\r\n"]
[24.50156, "o", " \u001b[1;33m> athena fix --vuln reentrancy --target VulnerableBank\u001b[0m\r\n"]
[25.503277, "o", "\r\n \u001b[0;36m[FIX]\u001b[0m 1. Add ReentrancyGuard from OpenZeppelin\r\n \u001b[0;36m[FIX]\u001b[0m 2. Apply Checks-Effects-Interactions pattern\r\n \u001b[0;36m[FIX]\u001b[0m 3. Update balance BEFORE external call\r\n\r\n\u001b[2m function withdraw() external nonReentrant {\r\n uint256 bal = balances[msg.sender];\r\n require(bal > 0, \"no balance\");\r\n balances[msg.sender] = 0; // effect before interaction\r\n (bool ok, ) = msg.sender.call{value: bal}(\"\");\r\n require(ok, \"transfer failed\");\r\n }\u001b[0m\r\n"]
[27.506994, "o", "\u001b[2m\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u001b[0m\r\n\u001b[0;36m\u001b[1m[STEP 7/8]\u001b[0m \u001b[1mEAS On-Chain Certification (Sepolia)\u001b[0m\r\n"]
[27.50809, "o", "\u001b[2m\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u001b[0m"]
[27.50842, "o", "\r\n"]
[28.512205, "o", " \u001b[1;33m> athena eas --schema 0x6d6520d9...853e --target VulnerableBank\u001b[0m\r\n"]
[29.513595, "o", "\r\n \u001b[0;32m[TX]\u001b[0m EAS Attestation created\r\n \u001b[2m Schema: 0x6d6520d928b6090172a458c2addcd30af1090f5298110e496bb3c9ac3918253e\u001b[0m\r\n \u001b[2m UID: 0xd02800c960f18f0483af4aa320aff314e34c5a83d1c9a9c963b299a88af958b9\u001b[0m\r\n \u001b[2m Chain: Sepolia\u001b[0m\r\n \u001b[2m Grade: S (Critical \u2014 Reentrancy + PoC verified)\u001b[0m\r\n\r\n \u001b[2m https://sepolia.easscan.org/attestation/view/0xd02800c960f18f0483af4aa320aff314e34c5a83d1c9a9c963b299a88af958b9\u001b[0m\r\n"]
[31.518026, "o", "\u001b[2m\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u001b[0m\r\n\u001b[0;36m\u001b[1m[STEP 8/8]\u001b[0m \u001b[1mMint Athena NFT Certificate (ERC-1155 Generative)\u001b[0m\r\n"]
[31.519373, "o", "\u001b[2m\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u001b[0m"]
[31.52113, "o", "\r\n"]
[32.521978, "o", " \u001b[1;33m> athena nft --grade S --attestation 0xd02800c9...\u001b[0m\r\n"]
[33.525626, "o", "\r\n \u001b[0;32m[TX]\u001b[0m NFT Minted on Sepolia\r\n \u001b[2m Sepolia: 0x3247d57d37bd1878479f03a077aba807649dbaf5\u001b[0m\r\n \u001b[2m Base: 0xb8f167a84816b5b9373997337119a2186c6e3708\u001b[0m\r\n \u001b[2m Token ID: 1 (Grade S)\u001b[0m\r\n \u001b[2m Traits: 262,144 possible combinations (4^9)\u001b[0m\r\n \u001b[2m Rendering: On-chain SVG, generative warrior Athena\u001b[0m\r\n\r\n"]
[34.528403, "o", " \u001b[1mNFT Trait Breakdown:\u001b[0m"]
[34.529027, "o", "\r\n \u001b[2m \u251c\u2500\u2500 Helmet: Crown of Wisdom (4 variants)"]
[34.529277, "o", "\r\n"]
[34.529479, "o", " \u251c\u2500\u2500 Armor: Aegis Shield (4 variants)\r\n"]
[34.529803, "o", " \u251c\u2500\u2500 Weapon: Lightning Spear (4 variants)\r\n \u251c\u2500\u2500 Aura: Electric Blue (4 variants)"]
[34.529942, "o", "\r\n \u251c\u2500\u2500 Wings: Eagle Wings (4 variants)"]
[34.530103, "o", "\r\n \u251c\u2500\u2500 Eyes: Glowing Gold (4 variants)\r\n \u251c\u2500\u2500 Cape: Royal Purple (4 variants)"]
[34.530456, "o", "\r\n \u251c\u2500\u2500 Base: Chain Pattern (4 variants)\r\n \u2514\u2500\u2500 Background: Nebula (4 variants)\u001b[0m"]
[34.530511, "o", "\r\n\r\n"]
[36.534963, "o", "\u001b[2m\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u001b[0m\r\n\u001b[0;36m\u001b[1m ADVANCED CONTRACTS\u001b[0m\r\n"]
[36.535963, "o", "\u001b[2m\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u001b[0m"]
[36.53633, "o", "\r\n"]
[36.537025, "o", " \u001b[1m[1] ZK Proof\u001b[0m Groth16Verifier \u001b[2mSepolia: 0xf0c9...498\u001b[0m\r\n \u001b[1m[2] Agent Escrow\u001b[0m AgentEscrowV2 \u001b[2mSepolia: 0x7102...21e\u001b[0m\r\n \u001b[1m[3] ERC-7512\u001b[0m AuditMetadata \u001b[2mSepolia: 0x0dd8...657\u001b[0m\r\n \u001b[1m[4] Audit Trail\u001b[0m ImmutableHistory \u001b[2mSepolia: 0xd791...bf0\u001b[0m"]
[36.537667, "o", "\r\n"]
[38.540666, "o", "\u001b[2m\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u001b[0m"]
[38.541237, "o", "\r\n\u001b[0;36m\u001b[1m MULTI-CHAIN DEPLOYMENT\u001b[0m"]
[38.541275, "o", "\r\n"]
[38.542393, "o", "\u001b[2m\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u001b[0m"]
[38.542553, "o", "\r\n \u001b[1mSepolia:\u001b[0m AuditCertificate AgentEscrow ERC7512 AuditTrail Groth16"]
[38.543213, "o", "\r\n \u001b[1mBase:\u001b[0m AuditCertificate ERC7512 AuditTrail Groth16\r\n"]
[40.046256, "o", "\u001b[2m\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u001b[0m\r\n\u001b[0;36m\u001b[1m REAL PROTOCOL AUDITS\u001b[0m\r\n"]
[40.047584, "o", "\u001b[2m\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u001b[0m\r\n"]
[40.04815, "o", " \u001b[1m[Audit 1] Curve V2\u001b[0m Read-Only Reentrancy \u001b[0;31mCRITICAL\u001b[0m $70M at risk \u001b[2m95% match\u001b[0m\r\n \u001b[1m[Audit 2] Hundred Finance\u001b[0m Reentrancy+Oracle \u001b[0;31mCRITICAL\u001b[0m $7M stolen \u001b[2m88% match\u001b[0m"]
[40.048842, "o", "\r\n"]
[41.552725, "o", "\u001b[2m\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u001b[0m\r\n\u001b[1m \u001b[0;36mATHENA\u001b[0m \u2014 Audit Complete\r\n"]
[41.554179, "o", "\u001b[2m\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u001b[0m"]
[41.554557, "o", "\r\n\r\n"]
[42.561393, "o", " \u001b[1mOn-Chain Verification:\u001b[0m\r\n \u001b[2m https://athena.degure.me/demo/audit-report.html\u001b[0m\r\n\r\n"]
[43.565694, "o", " \u001b[1mLocal Files:\u001b[0m"]
[43.57128, "o", "\r\n \u001b[2m demo/full-audit-report.json \u2014 Full audit report\u001b[0m\r\n \u001b[2m demo/audit-report.html \u2014 On-chain verification page\u001b[0m\r\n \u001b[2m demo/FINAL-AUDIT-REPORT.md \u2014 Final report\u001b[0m\r\n\r\n"]
[45.57489, "o", " \u001b[2mThank you for watching.\u001b[0m\r\n\r\n"]