uups-checker 1.0.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.
Files changed (670) hide show
  1. package/.gitmodules +6 -0
  2. package/AIFI_AUDIT.md +220 -0
  3. package/ALL_AUDITS_SUMMARY.md +366 -0
  4. package/ALPHA_PROXY_CRITICAL_FINDING.md +136 -0
  5. package/ALPHA_PROXY_FINAL_ANALYSIS.md +213 -0
  6. package/ALPHA_PROXY_FINAL_VERDICT.md +233 -0
  7. package/ALPHA_PROXY_SELFDESTRUCT_EXPLOIT.md +161 -0
  8. package/ARIA-foundry-test.txt +9 -0
  9. package/ARIA-mythril-analysis.txt +20 -0
  10. package/ARIA-slither-analysis.txt +38 -0
  11. package/ARIA_AI_SECURITY_AUDIT.md +290 -0
  12. package/ARIA_VERIFIED_AUDIT.md +259 -0
  13. package/ARIA_VERIFIED_slither.txt +76 -0
  14. package/ARIVA_source.txt +1 -0
  15. package/ARK_AUDIT.md +349 -0
  16. package/BANANA_AUDIT.md +365 -0
  17. package/BAS_AUDIT.md +451 -0
  18. package/BAS_TOKEN_AUDIT.md +235 -0
  19. package/BCE_EXPLOIT_ANALYSIS.md +165 -0
  20. package/BEEFY_BNB_CHAIN_ANALYSIS.md +488 -0
  21. package/BEEFY_MONAD_ANALYSIS.md +239 -0
  22. package/BEEFY_STAKING_ANALYSIS.md +136 -0
  23. package/BEEFY_XVS_WBNB_ACTUAL_FINDINGS.md +223 -0
  24. package/BEEFY_XVS_WBNB_CRITICAL_FINDINGS.md +269 -0
  25. package/BLOCKSEC_ATTACK_KNOWLEDGE_BASE.md +771 -0
  26. package/BRISE_ANALYSIS.txt +31 -0
  27. package/BRISE_BSC_DAPPS.txt +68 -0
  28. package/BRISE_EXPLOITS_FOUND.md +98 -0
  29. package/BRISE_REAL_EXPLOITS.md +115 -0
  30. package/BRISE_WHITEHAT_REPORT.md +162 -0
  31. package/BRISEstake_Analysis.txt +95 -0
  32. package/BSCSLOCKTOKEN_CRITICAL_FINDING.md +240 -0
  33. package/BSW_BISWAP_SECURITY_AUDIT.md +330 -0
  34. package/BTCST_FINAL_VERDICT.md +319 -0
  35. package/BTCST_MINING_REBASE_ANALYSIS.md +229 -0
  36. package/BTCST_ROUNDING_DEEP_DIVE.md +293 -0
  37. package/BTCST_ROUNDING_FINAL_VERDICT.md +9 -0
  38. package/BTCST_SECURITY_ANALYSIS.md +391 -0
  39. package/BTR_AUDIT.md +210 -0
  40. package/BeamBridge-analysis.md +226 -0
  41. package/BeamToken-analysis.md +201 -0
  42. package/BitgertSwap_Investigation.txt +107 -0
  43. package/CEEK_STAKING_ANALYSIS.md +0 -0
  44. package/CHAINBASE_AUDIT.md +422 -0
  45. package/COMPLETE_AUDIT_SUMMARY.md +342 -0
  46. package/CORRECTED_ANALYSIS.txt +115 -0
  47. package/DBXEN_COMPARISON_SUMMARY.md +232 -0
  48. package/DBXEN_EXPLOIT_ANALYSIS.md +530 -0
  49. package/DOPFairLaunch_raw.json +29 -0
  50. package/DOPFairLaunch_source.txt +0 -0
  51. package/DOP_BRIDGE_FINAL_ANALYSIS.txt +86 -0
  52. package/DOP_BUSD_LP_ANALYSIS.txt +44 -0
  53. package/DOP_FAIRLAUNCH_ANALYSIS.txt +61 -0
  54. package/DOP_FAIRLAUNCH_FINAL_VERDICT.txt +113 -0
  55. package/DOP_STAKING_CONTRACT_ANALYSIS.txt +67 -0
  56. package/DSYNC_ECOSYSTEM_ANALYSIS.md +221 -0
  57. package/DSyncStaking-exploit-analysis.md +153 -0
  58. package/DSyncVault-analysis.md +120 -0
  59. package/DUSD_PROXY_AUDIT.md +407 -0
  60. package/DXSALE_LOCK_AUDIT.md +0 -0
  61. package/DXSaleLock_bytecode.txt +1 -0
  62. package/ECHIDNA_QUICK_START.md +101 -0
  63. package/ELEPHANT_ECOSYSTEM_AUDIT_PLAN.md +159 -0
  64. package/ELEPHANT_ECOSYSTEM_COMPREHENSIVE_AUDIT.md +427 -0
  65. package/ELEPHANT_SECURITY_ANALYSIS.md +209 -0
  66. package/ELEPHANT_VULNERABILITIES_EXPLAINED.md +455 -0
  67. package/EXPLOIT_FIX.md +300 -0
  68. package/EXPLOIT_INSTRUCTIONS.md +273 -0
  69. package/EXPLOIT_SUMMARY.md +285 -0
  70. package/EXPLOIT_SUMMARY.txt +175 -0
  71. package/FALCON_FINANCE_AUDIT.md +258 -0
  72. package/FANDOM_AUDIT.md +359 -0
  73. package/FEE_ON_TRANSFER_ANALYSIS.md +228 -0
  74. package/FINAL_AUDIT_REPORT.md +0 -0
  75. package/FOLIO_PROXY_AUDIT.md +299 -0
  76. package/FOT_EXPLOIT_RESULTS.txt +110 -0
  77. package/FOT_TOKENS_AUDITED.md +103 -0
  78. package/HEGIC-mythril-analysis.txt +39 -0
  79. package/HEGIC_COMPLETE_ANALYSIS.md +343 -0
  80. package/HOTCROSS_SWAP_EXPLOIT_ANALYSIS.md +123 -0
  81. package/ICECREAMSWAP_EXPLOITS.md +259 -0
  82. package/IMMUNEFI_REPORT.md +314 -0
  83. package/KCCPAD_EXPLOIT_GUIDE.md +285 -0
  84. package/KEL_CEL_EXPLOIT_ANALYSIS.md +0 -0
  85. package/KOGE_AUDIT.md +328 -0
  86. package/LENDFLARE_ANALYSIS.md +239 -0
  87. package/LENDFLARE_ECHIDNA_GUIDE.md +356 -0
  88. package/LENDFLARE_EXPLOIT_INSTRUCTIONS.md +297 -0
  89. package/LENDFLARE_EXPLOIT_SUMMARY.md +292 -0
  90. package/LENDFLARE_FLASHLOAN_GUIDE.md +383 -0
  91. package/LENDFLARE_FUZZING_RESULTS.md +252 -0
  92. package/LENDFLARE_HONEYPOT_BYPASS_ANALYSIS.md +420 -0
  93. package/LENDFLARE_MANUAL_FUZZING.md +324 -0
  94. package/LENDFLARE_MYTHRIL_ANALYSIS.md +339 -0
  95. package/LENDFLARE_V3_BYPASS.md +296 -0
  96. package/LFTDECOMPILE.txt +14478 -0
  97. package/LFT_ACCOUNTING_ANALYSIS.md +0 -0
  98. package/LFT_ACCOUNTING_BUG_ANALYSIS.md +426 -0
  99. package/LFT_BACKDOOR_DEEP_DIVE.md +0 -0
  100. package/LFT_CRITICAL_EXPLOIT_CONFIRMED.md +428 -0
  101. package/LFT_EXPLOIT_VISUAL.md +253 -0
  102. package/LFT_QUICK_SUMMARY.md +124 -0
  103. package/LFT_REVERSE_EXPLOIT_ANALYSIS.md +521 -0
  104. package/MGO_AUDIT_REPORT.md +420 -0
  105. package/MYTHRIL_FINAL_REPORT.md +306 -0
  106. package/MYTHRIL_SLITHER_SUMMARY.md +244 -0
  107. package/NETX_MIGRATION_AUDIT.md +0 -0
  108. package/NPM_PUBLISH_GUIDE.md +0 -0
  109. package/NRV_CRITICAL_EXPLOIT.txt +143 -0
  110. package/NetX_Analysis.txt +76 -0
  111. package/NetX_Migration_bytecode.txt +1 -0
  112. package/NetX_Migration_source.txt +0 -0
  113. package/NetX_Token_source.txt +0 -0
  114. package/NetxWhitehatRescue +22 -0
  115. package/OILER_ATTACK_VISUAL.md +351 -0
  116. package/OILER_BLOCKSEC_TEST_RESULTS.md +421 -0
  117. package/OILER_DEEP_ANALYSIS.md +212 -0
  118. package/OILER_FINAL_EXPLOIT_REPORT.md +241 -0
  119. package/OILER_FINAL_VERDICT.md +339 -0
  120. package/OILER_REENTRANCY_EXPLAINED.md +638 -0
  121. package/OILER_REENTRANCY_FINAL_SUMMARY.md +391 -0
  122. package/OILER_REENTRANCY_REALITY_CHECK.md +393 -0
  123. package/OILER_REENTRANCY_STEP_BY_STEP.md +597 -0
  124. package/OILER_STAKING_MAINNET_ANALYSIS.md +366 -0
  125. package/OILER_STAKING_SECURITY_ANALYSIS.md +409 -0
  126. package/PANCAKESWAP_UNDERFLOW_HUNTING.md +317 -0
  127. package/POLS_MULTICHAIN_AUDIT.md +0 -0
  128. package/POSI_STAKING_AUDIT.md +0 -0
  129. package/PROXY2_SECURITY_ANALYSIS.md +0 -0
  130. package/Proxy2TACS +29748 -0
  131. package/QUICK_START.md +240 -0
  132. package/RAMP_SECURITY_ANALYSIS.md +0 -0
  133. package/README.md +238 -0
  134. package/REAUDIT_MASTER_LIST.txt +15 -0
  135. package/RING_analysis.txt +212 -0
  136. package/RPC +4 -0
  137. package/RULES.txt +20 -0
  138. package/SIREN_AUDIT.md +186 -0
  139. package/SYNC_EXPLOIT_README.md +0 -0
  140. package/SYNC_TOKEN_EXPLOIT_REPORT.md +224 -0
  141. package/TLM_raw.html +0 -0
  142. package/TLM_raw.txt +0 -0
  143. package/TLM_response.json +1 -0
  144. package/TRADOOR_AUDIT.md +253 -0
  145. package/TRUNK_AUDIT.md +285 -0
  146. package/UNIBASE_AUDIT.md +241 -0
  147. package/UNLOCK_ANALYSIS.md +0 -0
  148. package/UNLOCK_EXPLOIT.md +49 -0
  149. package/UNLOCK_EXPLOIT_ANALYSIS.md +0 -0
  150. package/UPS +232 -0
  151. package/UUPSCHECKER +208 -0
  152. package/VAULT_PROXY_AUDIT.md +457 -0
  153. package/VAULT_PROXY_FINAL_VERDICT.md +0 -0
  154. package/VERIFIED_EXPLOITS_FINAL.txt +146 -0
  155. package/WKEYDAO2_AUDIT.md +245 -0
  156. package/WSG_AUDIT.md +0 -0
  157. package/XFI_DEEP_ANALYSIS.md +327 -0
  158. package/YOOSHI_EXPLOIT_GUIDE.md +119 -0
  159. package/YSDAO_EXPLOIT_GUIDE.md +0 -0
  160. package/agent-4-bundle.md +22490 -0
  161. package/alpha-proxy-echidna.txt +1 -0
  162. package/alpha-proxy-fuzz-results.txt +81 -0
  163. package/alpha-proxy-mythril.txt +2 -0
  164. package/analyze-btcst-farm.js +54 -0
  165. package/analyze-dxsale-lock.js +75 -0
  166. package/analyze-elephant.js +69 -0
  167. package/analyze-fara-rewards.js +109 -0
  168. package/analyze-fara-storage.js +83 -0
  169. package/analyze-lft-transaction.js +158 -0
  170. package/analyze-lock-bytecode.js +59 -0
  171. package/analyze-shegic.js +0 -0
  172. package/analyze-staking-abi.js +0 -0
  173. package/analyze-sxp.js +57 -0
  174. package/analyze-tlm.js +76 -0
  175. package/analyze-trumpet.js +98 -0
  176. package/analyze-unlimited-nft.js +108 -0
  177. package/analyze_elephant.sh +27 -0
  178. package/analyze_vault.sh +32 -0
  179. package/aria-bytecode.txt +1 -0
  180. package/aria_response.json +1 -0
  181. package/ark_temp/README.md +66 -0
  182. package/ark_temp/lib/forge-std/.gitattributes +1 -0
  183. package/ark_temp/lib/forge-std/.github/CODEOWNERS +1 -0
  184. package/ark_temp/lib/forge-std/.github/dependabot.yml +6 -0
  185. package/ark_temp/lib/forge-std/.github/workflows/ci.yml +125 -0
  186. package/ark_temp/lib/forge-std/.github/workflows/sync.yml +36 -0
  187. package/ark_temp/lib/forge-std/CONTRIBUTING.md +193 -0
  188. package/ark_temp/lib/forge-std/LICENSE-APACHE +203 -0
  189. package/ark_temp/lib/forge-std/LICENSE-MIT +25 -0
  190. package/ark_temp/lib/forge-std/README.md +314 -0
  191. package/ark_temp/lib/forge-std/RELEASE_CHECKLIST.md +12 -0
  192. package/ark_temp/lib/forge-std/package.json +16 -0
  193. package/ark_temp/lib/forge-std/scripts/vm.py +636 -0
  194. package/audits/AiFi-security-audit-20260326.md +499 -0
  195. package/audits/BasedAI-Brains-security-audit-20260324.md +651 -0
  196. package/audits/BinanceAlphaWallet-pashov-ai-audit-report-20260324-170000.md +362 -0
  197. package/audits/DGToken-security-audit-20260324.md +376 -0
  198. package/audits/DSyncStaking-audit-part1.md +161 -0
  199. package/audits/DSyncStaking-security-audit-20260324.md +547 -0
  200. package/audits/DecompiledERC20-security-audit-20260325.md +397 -0
  201. package/audits/DegenVC-security-audit-20260324.md +585 -0
  202. package/audits/DelreyInu-security-audit-20260324.md +463 -0
  203. package/audits/DestraNetwork-security-audit-20260324.md +705 -0
  204. package/audits/DomiToken-security-audit-20260324.md +514 -0
  205. package/audits/LendFlareToken-security-audit-20260325.md +197 -0
  206. package/audits/LockReleaseTokenPool-security-audit-20260324.md +482 -0
  207. package/audits/MOG-pashov-ai-audit-report-20260324-164900.md +229 -0
  208. package/audits/PAALAI-security-audit-20260324.md +475 -0
  209. package/audits/PAR-security-audit-20260325.md +311 -0
  210. package/audits/PepeCoinStaking-security-audit-20260324.md +358 -0
  211. package/audits/StakingPool-security-audit-20260324.md +517 -0
  212. package/audits/SyncToken-security-audit-20260324.md +778 -0
  213. package/audits/UndeadToken-decompiled-security-audit-20260324.md +485 -0
  214. package/audits/UnknownToken-decompiled-security-audit-20260324.md +647 -0
  215. package/audits/XFIStaking-security-audit-20260324.md +682 -0
  216. package/audits/Xfinance-security-audit-20260324.md +463 -0
  217. package/audits/basedAIFarm-security-audit-20260324.md +330 -0
  218. package/audits/pepeCoin-security-audit-20260324.md +462 -0
  219. package/bin/ups +232 -0
  220. package/binance-wallet-exploit/.env.example +2 -0
  221. package/binance-wallet-exploit/EXECUTIVE_SUMMARY.md +272 -0
  222. package/binance-wallet-exploit/EXPLOIT_SUMMARY.md +104 -0
  223. package/binance-wallet-exploit/FINAL_ANALYSIS.md +326 -0
  224. package/binance-wallet-exploit/FLASHLOAN_ATTACK.md +292 -0
  225. package/binance-wallet-exploit/HONEYPOT_REPORT.md +526 -0
  226. package/binance-wallet-exploit/INVESTIGATION_COMPLETE.md +362 -0
  227. package/binance-wallet-exploit/LENDFLARE_EXPLOIT.md +219 -0
  228. package/binance-wallet-exploit/LENDFLARE_FINAL_ATTACK.md +307 -0
  229. package/binance-wallet-exploit/LENDFLARE_REAL_EXPLOIT.md +286 -0
  230. package/binance-wallet-exploit/LENDFLARE_RUGPULL.md +269 -0
  231. package/binance-wallet-exploit/LFT_ANALYSIS.md +206 -0
  232. package/binance-wallet-exploit/QUICK_START.md +75 -0
  233. package/binance-wallet-exploit/README.md +195 -0
  234. package/binance-wallet-exploit/REAL_TX_EXPLOIT_ANALYSIS.md +271 -0
  235. package/binance-wallet-exploit/REMIX_INSTRUCTIONS.md +223 -0
  236. package/binance-wallet-exploit/TEST_RESULTS.md +203 -0
  237. package/binance-wallet-exploit/cache/solidity-files-cache.json +1 -0
  238. package/binance-wallet-exploit/cache/test-failures +1 -0
  239. package/binance-wallet-exploit/lib/forge-std/.gitattributes +1 -0
  240. package/binance-wallet-exploit/lib/forge-std/.github/CODEOWNERS +1 -0
  241. package/binance-wallet-exploit/lib/forge-std/.github/dependabot.yml +6 -0
  242. package/binance-wallet-exploit/lib/forge-std/.github/workflows/ci.yml +125 -0
  243. package/binance-wallet-exploit/lib/forge-std/.github/workflows/sync.yml +36 -0
  244. package/binance-wallet-exploit/lib/forge-std/CONTRIBUTING.md +193 -0
  245. package/binance-wallet-exploit/lib/forge-std/LICENSE-APACHE +203 -0
  246. package/binance-wallet-exploit/lib/forge-std/LICENSE-MIT +25 -0
  247. package/binance-wallet-exploit/lib/forge-std/README.md +314 -0
  248. package/binance-wallet-exploit/lib/forge-std/RELEASE_CHECKLIST.md +12 -0
  249. package/binance-wallet-exploit/lib/forge-std/package.json +16 -0
  250. package/binance-wallet-exploit/lib/forge-std/scripts/vm.py +636 -0
  251. package/binance-wallet-exploit/out/build-info/1e9aa7e86cf56962.json +1 -0
  252. package/binance-wallet-exploit/out/build-info/6f56f10e9d7b56eb.json +1 -0
  253. package/binance-wallet-exploit/out/build-info/7edba961ff697a24.json +1 -0
  254. package/binance-wallet-exploit/out/build-info/8c27fe3efea2f2e7.json +1 -0
  255. package/binance-wallet-exploit/out/build-info/978b680daffec63a.json +1 -0
  256. package/binance-wallet-exploit/out/build-info/9806b900b5672d0c.json +1 -0
  257. package/binance-wallet-exploit/out/build-info/b4b9ff36e9b3fc27.json +1 -0
  258. package/binance-wallet-exploit/out/build-info/b6f4df9ae05c0812.json +1 -0
  259. package/binance-wallet-exploit/out/build-info/c88dbc86551f7b5c.json +1 -0
  260. package/binance-wallet-exploit/out/build-info/e9657504010623db.json +1 -0
  261. package/cache/fuzz/failures/ARIAVerifiedFuzzTest/testFuzz_ApprovalRaceCondition +1 -0
  262. package/cache/fuzz/failures/HotCrossSwapFuzzTest/testFuzz_DirectTransferExploit +1 -0
  263. package/cache/fuzz/failures/HotCrossSwapFuzzTest/testFuzz_LargeSwapDrain +1 -0
  264. package/cache/fuzz/failures/LendFlareFuzz/testFuzz_ApprovalExploit +1 -0
  265. package/cache/fuzz/failures/LendFlareFuzz/testFuzz_BalanceManipulation +1 -0
  266. package/cache/fuzz/failures/LendFlareFuzz/testFuzz_RateManipulation +1 -0
  267. package/cache/fuzz/failures/LendFlareFuzz/testFuzz_StorageManipulation +1 -0
  268. package/cache/fuzz/failures/PARFuzzTest/testFuzz_OverflowTransfer +1 -0
  269. package/cache/fuzz/failures/PARFuzzTest/testFuzz_Transfer +1 -0
  270. package/cache/fuzz/failures/XFIDeepFuzz/testFuzz_FrontrunAddfunds +1 -0
  271. package/cache/fuzz/failures/XFIDeepFuzz/testFuzz_RewardOverflow +1 -0
  272. package/cache/fuzz/failures/XFIDeepFuzz/testFuzz_RoundingExploit +1 -0
  273. package/cache/fuzz/failures/XFIDeepFuzz/testFuzz_WithdrawLimit +1 -0
  274. package/cache/solidity-files-cache.json +1 -0
  275. package/cache/test-failures +1 -0
  276. package/calculate-elephant-flashloan.js +195 -0
  277. package/check-address-approval.js +112 -0
  278. package/check-alpha-proxy.js +42 -0
  279. package/check-arbitrage.js +155 -0
  280. package/check-aria-token.js +47 -0
  281. package/check-ark.sh +20 -0
  282. package/check-btcst-mining.js +75 -0
  283. package/check-btcst-pools.js +163 -0
  284. package/check-btcst.js +88 -0
  285. package/check-caller.js +26 -0
  286. package/check-ceek-lp.js +73 -0
  287. package/check-ceek.js +47 -0
  288. package/check-dxsale-address.js +35 -0
  289. package/check-fara-exploit-timing.js +56 -0
  290. package/check-fara-real-exploit.js +73 -0
  291. package/check-flashloan-limits.js +129 -0
  292. package/check-kel-cel-pool.js +91 -0
  293. package/check-lax-staking.js +41 -0
  294. package/check-lendflare.js +165 -0
  295. package/check-lft-accounting.js +109 -0
  296. package/check-lft-roles.js +165 -0
  297. package/check-lock-time.js +47 -0
  298. package/check-min-stake.js +73 -0
  299. package/check-mystery-contract.js +52 -0
  300. package/check-next-token.js +50 -0
  301. package/check-nora-lock.js +67 -0
  302. package/check-oiler-approvals.js +116 -0
  303. package/check-oiler-proxy.js +73 -0
  304. package/check-oiler-staking.js +117 -0
  305. package/check-proxy-simple.js +71 -0
  306. package/check-recent-stakes.js +54 -0
  307. package/check-shegic-holdings.js +67 -0
  308. package/check-snowcrash-ecosystem.js +83 -0
  309. package/check-sync-lp.js +97 -0
  310. package/check-sync-stake.js +42 -0
  311. package/check-tlm.js +37 -0
  312. package/check-token-pools.js +146 -0
  313. package/check-trunk-depeg.js +181 -0
  314. package/check-tusd-decimals.js +58 -0
  315. package/check-user-storage-deep.js +81 -0
  316. package/check-welephant-pools.js +130 -0
  317. package/check-xfi-pool.js +75 -0
  318. package/check-zypher.js +32 -0
  319. package/check_proxy.sh +36 -0
  320. package/compare-tlm-chains.js +90 -0
  321. package/contract_0x05f2.html +6025 -0
  322. package/contract_0x3720.html +6361 -0
  323. package/contract_0x928e.html +5606 -0
  324. package/contract_0xc42d.html +5304 -0
  325. package/contract_page.html +5789 -0
  326. package/decode-stake-tx.js +50 -0
  327. package/deep-analyze-lock.js +82 -0
  328. package/dune_uups_proxy_query.sql +42 -0
  329. package/dune_uups_vulnerable_query.sql +0 -0
  330. package/echidna/alpha-proxy.yaml +14 -0
  331. package/echidna/elephant.yaml +7 -0
  332. package/echidna/lendflare.yaml +42 -0
  333. package/echidna.config.yaml +12 -0
  334. package/elephant_raw.json +1 -0
  335. package/eps_raw.json +1 -0
  336. package/exploit/.github/workflows/test.yml +38 -0
  337. package/exploit/.gitmodules +3 -0
  338. package/exploit/README.md +66 -0
  339. package/exploit/foundry.lock +8 -0
  340. package/exploit/lib/forge-std/.gitattributes +1 -0
  341. package/exploit/lib/forge-std/.github/CODEOWNERS +1 -0
  342. package/exploit/lib/forge-std/.github/dependabot.yml +6 -0
  343. package/exploit/lib/forge-std/.github/workflows/ci.yml +125 -0
  344. package/exploit/lib/forge-std/.github/workflows/sync.yml +36 -0
  345. package/exploit/lib/forge-std/CONTRIBUTING.md +193 -0
  346. package/exploit/lib/forge-std/LICENSE-APACHE +203 -0
  347. package/exploit/lib/forge-std/LICENSE-MIT +25 -0
  348. package/exploit/lib/forge-std/README.md +314 -0
  349. package/exploit/lib/forge-std/RELEASE_CHECKLIST.md +12 -0
  350. package/exploit/lib/forge-std/package.json +16 -0
  351. package/exploit/lib/forge-std/scripts/vm.py +636 -0
  352. package/exploit_analysis.txt +51 -0
  353. package/extract_contract.py +21 -0
  354. package/extract_elephant_contracts.py +24 -0
  355. package/fara-staking-bytecode.txt +1 -0
  356. package/fara-staking-raw.txt +1 -0
  357. package/fetch-aria.js +46 -0
  358. package/fetch-contract.js +50 -0
  359. package/fetch-shegic-source.js +86 -0
  360. package/fetch-snowcrash.js +44 -0
  361. package/fetch-staking-source.js +53 -0
  362. package/fetch-tlm.js +60 -0
  363. package/fetch_elephant_source.py +32 -0
  364. package/find-ceek-staking.js +21 -0
  365. package/find-exploit-tx.js +88 -0
  366. package/find-oiler-holders.js +100 -0
  367. package/find-tlm-holder.js +36 -0
  368. package/find-vulnerable-fund.js +94 -0
  369. package/foundry.lock +8 -0
  370. package/fuzz-all.sh +53 -0
  371. package/get-aria-contract.py +40 -0
  372. package/get-lft-holders.js +89 -0
  373. package/get-tlm-source.sh +8 -0
  374. package/harvest_txs.json +1 -0
  375. package/lft-bytecode-raw.txt +1 -0
  376. package/lft-bytecode.json +1 -0
  377. package/lft-impl.bin +1 -0
  378. package/lft-implementation-bytecode.txt +1 -0
  379. package/lib/forge-std/.gitattributes +1 -0
  380. package/lib/forge-std/.github/CODEOWNERS +1 -0
  381. package/lib/forge-std/.github/dependabot.yml +6 -0
  382. package/lib/forge-std/.github/workflows/ci.yml +125 -0
  383. package/lib/forge-std/.github/workflows/sync.yml +36 -0
  384. package/lib/forge-std/CONTRIBUTING.md +193 -0
  385. package/lib/forge-std/LICENSE-APACHE +203 -0
  386. package/lib/forge-std/LICENSE-MIT +25 -0
  387. package/lib/forge-std/README.md +314 -0
  388. package/lib/forge-std/RELEASE_CHECKLIST.md +12 -0
  389. package/lib/forge-std/package.json +16 -0
  390. package/lib/forge-std/scripts/vm.py +636 -0
  391. package/lib/openzeppelin-contracts/.changeset/config.json +12 -0
  392. package/lib/openzeppelin-contracts/.codecov.yml +12 -0
  393. package/lib/openzeppelin-contracts/.editorconfig +21 -0
  394. package/lib/openzeppelin-contracts/.eslintrc +20 -0
  395. package/lib/openzeppelin-contracts/.github/ISSUE_TEMPLATE/bug_report.md +21 -0
  396. package/lib/openzeppelin-contracts/.github/ISSUE_TEMPLATE/config.yml +4 -0
  397. package/lib/openzeppelin-contracts/.github/ISSUE_TEMPLATE/feature_request.md +14 -0
  398. package/lib/openzeppelin-contracts/.github/PULL_REQUEST_TEMPLATE.md +20 -0
  399. package/lib/openzeppelin-contracts/.github/actions/gas-compare/action.yml +49 -0
  400. package/lib/openzeppelin-contracts/.github/actions/setup/action.yml +21 -0
  401. package/lib/openzeppelin-contracts/.github/actions/storage-layout/action.yml +55 -0
  402. package/lib/openzeppelin-contracts/.github/workflows/actionlint.yml +18 -0
  403. package/lib/openzeppelin-contracts/.github/workflows/changeset.yml +28 -0
  404. package/lib/openzeppelin-contracts/.github/workflows/checks.yml +118 -0
  405. package/lib/openzeppelin-contracts/.github/workflows/docs.yml +19 -0
  406. package/lib/openzeppelin-contracts/.github/workflows/formal-verification.yml +68 -0
  407. package/lib/openzeppelin-contracts/.github/workflows/release-cycle.yml +214 -0
  408. package/lib/openzeppelin-contracts/.github/workflows/upgradeable.yml +34 -0
  409. package/lib/openzeppelin-contracts/.gitmodules +7 -0
  410. package/lib/openzeppelin-contracts/.mocharc.js +4 -0
  411. package/lib/openzeppelin-contracts/.prettierrc +15 -0
  412. package/lib/openzeppelin-contracts/.solcover.js +13 -0
  413. package/lib/openzeppelin-contracts/CHANGELOG.md +972 -0
  414. package/lib/openzeppelin-contracts/CODE_OF_CONDUCT.md +73 -0
  415. package/lib/openzeppelin-contracts/CONTRIBUTING.md +36 -0
  416. package/lib/openzeppelin-contracts/GUIDELINES.md +148 -0
  417. package/lib/openzeppelin-contracts/LICENSE +22 -0
  418. package/lib/openzeppelin-contracts/README.md +107 -0
  419. package/lib/openzeppelin-contracts/RELEASING.md +45 -0
  420. package/lib/openzeppelin-contracts/SECURITY.md +42 -0
  421. package/lib/openzeppelin-contracts/audits/2017-03.md +292 -0
  422. package/lib/openzeppelin-contracts/audits/2018-10.pdf +0 -0
  423. package/lib/openzeppelin-contracts/audits/2022-10-Checkpoints.pdf +0 -0
  424. package/lib/openzeppelin-contracts/audits/2022-10-ERC4626.pdf +0 -0
  425. package/lib/openzeppelin-contracts/audits/2023-05-v4.9.pdf +0 -0
  426. package/lib/openzeppelin-contracts/audits/2023-10-v5.0.pdf +0 -0
  427. package/lib/openzeppelin-contracts/audits/README.md +17 -0
  428. package/lib/openzeppelin-contracts/certora/Makefile +54 -0
  429. package/lib/openzeppelin-contracts/certora/README.md +60 -0
  430. package/lib/openzeppelin-contracts/certora/diff/access_manager_AccessManager.sol.patch +97 -0
  431. package/lib/openzeppelin-contracts/certora/reports/2021-10.pdf +0 -0
  432. package/lib/openzeppelin-contracts/certora/reports/2022-03.pdf +0 -0
  433. package/lib/openzeppelin-contracts/certora/reports/2022-05.pdf +0 -0
  434. package/lib/openzeppelin-contracts/certora/run.js +160 -0
  435. package/lib/openzeppelin-contracts/certora/specs/AccessControl.spec +119 -0
  436. package/lib/openzeppelin-contracts/certora/specs/AccessControlDefaultAdminRules.spec +464 -0
  437. package/lib/openzeppelin-contracts/certora/specs/DoubleEndedQueue.spec +300 -0
  438. package/lib/openzeppelin-contracts/certora/specs/ERC20.spec +352 -0
  439. package/lib/openzeppelin-contracts/certora/specs/ERC20FlashMint.spec +55 -0
  440. package/lib/openzeppelin-contracts/certora/specs/ERC20Wrapper.spec +198 -0
  441. package/lib/openzeppelin-contracts/certora/specs/ERC721.spec +679 -0
  442. package/lib/openzeppelin-contracts/certora/specs/EnumerableMap.spec +333 -0
  443. package/lib/openzeppelin-contracts/certora/specs/EnumerableSet.spec +246 -0
  444. package/lib/openzeppelin-contracts/certora/specs/Initializable.spec +165 -0
  445. package/lib/openzeppelin-contracts/certora/specs/Ownable.spec +77 -0
  446. package/lib/openzeppelin-contracts/certora/specs/Ownable2Step.spec +108 -0
  447. package/lib/openzeppelin-contracts/certora/specs/Pausable.spec +96 -0
  448. package/lib/openzeppelin-contracts/certora/specs/TimelockController.spec +274 -0
  449. package/lib/openzeppelin-contracts/certora/specs/helpers/helpers.spec +7 -0
  450. package/lib/openzeppelin-contracts/certora/specs/methods/IAccessControl.spec +8 -0
  451. package/lib/openzeppelin-contracts/certora/specs/methods/IAccessControlDefaultAdminRules.spec +36 -0
  452. package/lib/openzeppelin-contracts/certora/specs/methods/IERC20.spec +11 -0
  453. package/lib/openzeppelin-contracts/certora/specs/methods/IERC2612.spec +5 -0
  454. package/lib/openzeppelin-contracts/certora/specs/methods/IERC3156FlashBorrower.spec +3 -0
  455. package/lib/openzeppelin-contracts/certora/specs/methods/IERC3156FlashLender.spec +5 -0
  456. package/lib/openzeppelin-contracts/certora/specs/methods/IERC5313.spec +3 -0
  457. package/lib/openzeppelin-contracts/certora/specs/methods/IERC721.spec +17 -0
  458. package/lib/openzeppelin-contracts/certora/specs/methods/IERC721Receiver.spec +3 -0
  459. package/lib/openzeppelin-contracts/certora/specs/methods/IOwnable.spec +5 -0
  460. package/lib/openzeppelin-contracts/certora/specs/methods/IOwnable2Step.spec +7 -0
  461. package/lib/openzeppelin-contracts/certora/specs.json +86 -0
  462. package/lib/openzeppelin-contracts/contracts/access/README.adoc +43 -0
  463. package/lib/openzeppelin-contracts/contracts/finance/README.adoc +14 -0
  464. package/lib/openzeppelin-contracts/contracts/governance/README.adoc +167 -0
  465. package/lib/openzeppelin-contracts/contracts/interfaces/README.adoc +82 -0
  466. package/lib/openzeppelin-contracts/contracts/metatx/README.adoc +12 -0
  467. package/lib/openzeppelin-contracts/contracts/package.json +32 -0
  468. package/lib/openzeppelin-contracts/contracts/proxy/README.adoc +87 -0
  469. package/lib/openzeppelin-contracts/contracts/token/ERC1155/README.adoc +41 -0
  470. package/lib/openzeppelin-contracts/contracts/token/ERC20/README.adoc +67 -0
  471. package/lib/openzeppelin-contracts/contracts/token/ERC721/README.adoc +67 -0
  472. package/lib/openzeppelin-contracts/contracts/token/common/README.adoc +10 -0
  473. package/lib/openzeppelin-contracts/contracts/utils/README.adoc +88 -0
  474. package/lib/openzeppelin-contracts/contracts/vendor/compound/LICENSE +11 -0
  475. package/lib/openzeppelin-contracts/docs/README.md +16 -0
  476. package/lib/openzeppelin-contracts/docs/antora.yml +7 -0
  477. package/lib/openzeppelin-contracts/docs/config.js +21 -0
  478. package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack-3a.png +0 -0
  479. package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack-3b.png +0 -0
  480. package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack-6.png +0 -0
  481. package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack.png +0 -0
  482. package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-deposit.png +0 -0
  483. package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-mint.png +0 -0
  484. package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-rate-linear.png +0 -0
  485. package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-rate-loglog.png +0 -0
  486. package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-rate-loglogext.png +0 -0
  487. package/lib/openzeppelin-contracts/docs/modules/ROOT/images/tally-exec.png +0 -0
  488. package/lib/openzeppelin-contracts/docs/modules/ROOT/images/tally-vote.png +0 -0
  489. package/lib/openzeppelin-contracts/docs/modules/ROOT/nav.adoc +23 -0
  490. package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/access-control.adoc +204 -0
  491. package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/backwards-compatibility.adoc +48 -0
  492. package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/crowdsales.adoc +11 -0
  493. package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/drafts.adoc +19 -0
  494. package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/erc1155.adoc +145 -0
  495. package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/erc20-supply.adoc +71 -0
  496. package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/erc20.adoc +77 -0
  497. package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/erc4626.adoc +214 -0
  498. package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/erc721.adoc +79 -0
  499. package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/extending-contracts.adoc +77 -0
  500. package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/faq.adoc +13 -0
  501. package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/governance.adoc +240 -0
  502. package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/index.adoc +79 -0
  503. package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/tokens.adoc +31 -0
  504. package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/upgradeable.adoc +77 -0
  505. package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/utilities.adoc +185 -0
  506. package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/wizard.adoc +15 -0
  507. package/lib/openzeppelin-contracts/docs/templates/contract.hbs +111 -0
  508. package/lib/openzeppelin-contracts/docs/templates/helpers.js +46 -0
  509. package/lib/openzeppelin-contracts/docs/templates/page.hbs +4 -0
  510. package/lib/openzeppelin-contracts/docs/templates/properties.js +64 -0
  511. package/lib/openzeppelin-contracts/hardhat/env-artifacts.js +24 -0
  512. package/lib/openzeppelin-contracts/hardhat/env-contract.js +25 -0
  513. package/lib/openzeppelin-contracts/hardhat/ignore-unreachable-warnings.js +45 -0
  514. package/lib/openzeppelin-contracts/hardhat/skip-foundry-tests.js +6 -0
  515. package/lib/openzeppelin-contracts/hardhat/task-test-get-files.js +25 -0
  516. package/lib/openzeppelin-contracts/hardhat.config.js +131 -0
  517. package/lib/openzeppelin-contracts/lib/erc4626-tests/LICENSE +661 -0
  518. package/lib/openzeppelin-contracts/lib/erc4626-tests/README.md +116 -0
  519. package/lib/openzeppelin-contracts/lib/forge-std/.github/workflows/ci.yml +92 -0
  520. package/lib/openzeppelin-contracts/lib/forge-std/.gitmodules +3 -0
  521. package/lib/openzeppelin-contracts/lib/forge-std/LICENSE-APACHE +203 -0
  522. package/lib/openzeppelin-contracts/lib/forge-std/LICENSE-MIT +25 -0
  523. package/lib/openzeppelin-contracts/lib/forge-std/README.md +250 -0
  524. package/lib/openzeppelin-contracts/lib/forge-std/package.json +16 -0
  525. package/lib/openzeppelin-contracts/logo.svg +15 -0
  526. package/lib/openzeppelin-contracts/netlify.toml +3 -0
  527. package/lib/openzeppelin-contracts/package-lock.json +16544 -0
  528. package/lib/openzeppelin-contracts/package.json +96 -0
  529. package/lib/openzeppelin-contracts/remappings.txt +1 -0
  530. package/lib/openzeppelin-contracts/renovate.json +4 -0
  531. package/lib/openzeppelin-contracts/requirements.txt +1 -0
  532. package/lib/openzeppelin-contracts/scripts/checks/compare-layout.js +20 -0
  533. package/lib/openzeppelin-contracts/scripts/checks/compareGasReports.js +243 -0
  534. package/lib/openzeppelin-contracts/scripts/checks/extract-layout.js +38 -0
  535. package/lib/openzeppelin-contracts/scripts/checks/generation.sh +6 -0
  536. package/lib/openzeppelin-contracts/scripts/checks/inheritance-ordering.js +54 -0
  537. package/lib/openzeppelin-contracts/scripts/gen-nav.js +41 -0
  538. package/lib/openzeppelin-contracts/scripts/generate/format-lines.js +16 -0
  539. package/lib/openzeppelin-contracts/scripts/generate/run.js +49 -0
  540. package/lib/openzeppelin-contracts/scripts/generate/templates/Checkpoints.js +247 -0
  541. package/lib/openzeppelin-contracts/scripts/generate/templates/Checkpoints.opts.js +17 -0
  542. package/lib/openzeppelin-contracts/scripts/generate/templates/Checkpoints.t.js +146 -0
  543. package/lib/openzeppelin-contracts/scripts/generate/templates/EnumerableMap.js +283 -0
  544. package/lib/openzeppelin-contracts/scripts/generate/templates/EnumerableSet.js +250 -0
  545. package/lib/openzeppelin-contracts/scripts/generate/templates/SafeCast.js +126 -0
  546. package/lib/openzeppelin-contracts/scripts/generate/templates/StorageSlot.js +78 -0
  547. package/lib/openzeppelin-contracts/scripts/generate/templates/conversion.js +30 -0
  548. package/lib/openzeppelin-contracts/scripts/git-user-config.sh +6 -0
  549. package/lib/openzeppelin-contracts/scripts/helpers.js +37 -0
  550. package/lib/openzeppelin-contracts/scripts/prepack.sh +23 -0
  551. package/lib/openzeppelin-contracts/scripts/prepare-docs.sh +26 -0
  552. package/lib/openzeppelin-contracts/scripts/release/format-changelog.js +33 -0
  553. package/lib/openzeppelin-contracts/scripts/release/synchronize-versions.js +15 -0
  554. package/lib/openzeppelin-contracts/scripts/release/update-comment.js +34 -0
  555. package/lib/openzeppelin-contracts/scripts/release/version.sh +11 -0
  556. package/lib/openzeppelin-contracts/scripts/release/workflow/exit-prerelease.sh +8 -0
  557. package/lib/openzeppelin-contracts/scripts/release/workflow/github-release.js +48 -0
  558. package/lib/openzeppelin-contracts/scripts/release/workflow/integrity-check.sh +20 -0
  559. package/lib/openzeppelin-contracts/scripts/release/workflow/pack.sh +26 -0
  560. package/lib/openzeppelin-contracts/scripts/release/workflow/publish.sh +26 -0
  561. package/lib/openzeppelin-contracts/scripts/release/workflow/rerun.js +7 -0
  562. package/lib/openzeppelin-contracts/scripts/release/workflow/set-changesets-pr-title.js +17 -0
  563. package/lib/openzeppelin-contracts/scripts/release/workflow/start.sh +35 -0
  564. package/lib/openzeppelin-contracts/scripts/release/workflow/state.js +112 -0
  565. package/lib/openzeppelin-contracts/scripts/remove-ignored-artifacts.js +45 -0
  566. package/lib/openzeppelin-contracts/scripts/solhint-custom/index.js +84 -0
  567. package/lib/openzeppelin-contracts/scripts/solhint-custom/package.json +5 -0
  568. package/lib/openzeppelin-contracts/scripts/update-docs-branch.js +65 -0
  569. package/lib/openzeppelin-contracts/scripts/upgradeable/README.md +21 -0
  570. package/lib/openzeppelin-contracts/scripts/upgradeable/patch-apply.sh +19 -0
  571. package/lib/openzeppelin-contracts/scripts/upgradeable/patch-save.sh +18 -0
  572. package/lib/openzeppelin-contracts/scripts/upgradeable/transpile-onto.sh +54 -0
  573. package/lib/openzeppelin-contracts/scripts/upgradeable/transpile.sh +47 -0
  574. package/lib/openzeppelin-contracts/scripts/upgradeable/upgradeable.patch +360 -0
  575. package/lib/openzeppelin-contracts/slither.config.json +5 -0
  576. package/lib/openzeppelin-contracts/solhint.config.js +20 -0
  577. package/mythril-lft-output.txt +1 -0
  578. package/mythril-lft-symbolic.txt +18 -0
  579. package/mythril-lft.sh +20 -0
  580. package/mythril-symbolic-output.txt +1 -0
  581. package/mythril-symbolic.sh +42 -0
  582. package/out/build-info/0026b78428192979.json +1 -0
  583. package/out/build-info/03c4fc3b88486eba.json +1 -0
  584. package/out/build-info/0540afa9b9a5c5a6.json +1 -0
  585. package/out/build-info/081932f505bc08b9.json +1 -0
  586. package/out/build-info/0da104ba0d6642d5.json +1 -0
  587. package/out/build-info/197281971dbb5f23.json +1 -0
  588. package/out/build-info/197e7e332832a232.json +1 -0
  589. package/out/build-info/1a1cab9136eb5f94.json +1 -0
  590. package/out/build-info/1b320204eb162aa2.json +1 -0
  591. package/out/build-info/1e03f94398052674.json +1 -0
  592. package/out/build-info/22ac085949602937.json +1 -0
  593. package/out/build-info/234ef37453a9fa64.json +1 -0
  594. package/out/build-info/2447db7b1878fa8e.json +1 -0
  595. package/out/build-info/25568daeb484f5ff.json +1 -0
  596. package/out/build-info/27465853244c49ce.json +1 -0
  597. package/out/build-info/2c57a9e0f087453b.json +1 -0
  598. package/out/build-info/3c62ae7de8da68c4.json +1 -0
  599. package/out/build-info/3e771ae109e97bb3.json +1 -0
  600. package/out/build-info/460499bc0a3465c4.json +1 -0
  601. package/out/build-info/47ce37e50a4f115e.json +1 -0
  602. package/out/build-info/4fcce5c63cf427d6.json +1 -0
  603. package/out/build-info/4fd0a53fe63fddbb.json +1 -0
  604. package/out/build-info/50f1247db9d769cc.json +1 -0
  605. package/out/build-info/5317d0181a7a5e02.json +1 -0
  606. package/out/build-info/594df509275ceb5b.json +1 -0
  607. package/out/build-info/61983ac3f6141719.json +1 -0
  608. package/out/build-info/638c4548307122fe.json +1 -0
  609. package/out/build-info/67c2c43bdb7c0ded.json +1 -0
  610. package/out/build-info/777f42643aad37b7.json +1 -0
  611. package/out/build-info/7d7856f19e845354.json +1 -0
  612. package/out/build-info/83976260b6f71e94.json +1 -0
  613. package/out/build-info/83c23882000b963d.json +1 -0
  614. package/out/build-info/84b2cce8f70b36be.json +1 -0
  615. package/out/build-info/8bc13d31d7c3206a.json +1 -0
  616. package/out/build-info/8e183bd4d9d8cf88.json +1 -0
  617. package/out/build-info/94bfe1e7cafa8ff5.json +1 -0
  618. package/out/build-info/99ec7d5e8d8ff360.json +1 -0
  619. package/out/build-info/9ac044b29daa7d5e.json +1 -0
  620. package/out/build-info/9b203227ff5d2e63.json +1 -0
  621. package/out/build-info/9d18c5872c4282dd.json +1 -0
  622. package/out/build-info/9f77f04f33baf9a3.json +1 -0
  623. package/out/build-info/a6e1caf974787982.json +1 -0
  624. package/out/build-info/a94b6348867a62d6.json +1 -0
  625. package/out/build-info/ad93721947a8b195.json +1 -0
  626. package/out/build-info/b42daddb5aa4b19f.json +1 -0
  627. package/out/build-info/bf13512ae899f7e8.json +1 -0
  628. package/out/build-info/c39f86c20a548c4a.json +1 -0
  629. package/out/build-info/cb12bb975a2f4e65.json +1 -0
  630. package/out/build-info/d0c6788fadc2aa60.json +1 -0
  631. package/out/build-info/d2726bf94ed5b845.json +1 -0
  632. package/out/build-info/d4eb00da50cce5cb.json +1 -0
  633. package/out/build-info/db931924a3bc8bdd.json +1 -0
  634. package/out/build-info/e1a503d49bc77401.json +1 -0
  635. package/out/build-info/efe5396f8892ce77.json +1 -0
  636. package/out/build-info/f536d90ced745969.json +1 -0
  637. package/out/build-info/fed38823c7019b82.json +1 -0
  638. package/package.json +51 -0
  639. package/page.html +5384 -0
  640. package/pancakeswap-simple-tvl.sql +15 -0
  641. package/pancakeswap-top-pools.sql +29 -0
  642. package/pancakeswap-tvl-optimized.sql +57 -0
  643. package/pancakeswap-tvl-query.sql +60 -0
  644. package/pancakeswap-underflow-hunting.sql +51 -0
  645. package/pancakeswap-vulnerability-queries.sql +200 -0
  646. package/posi_page.html +6369 -0
  647. package/posi_response.json +29 -0
  648. package/proxy_page.html +500 -0
  649. package/run_mythril_elephant.sh +18 -0
  650. package/sHEGIC-bytecode.bin +6 -0
  651. package/sHEGIC-mythril-analysis.txt +1 -0
  652. package/sHEGIC-mythril-full.txt +134 -0
  653. package/sHEGIC_ANALYSIS.md +135 -0
  654. package/sHEGIC_EXPLOIT_ANALYSIS.md +317 -0
  655. package/sHEGIC_MYTHRIL_ANALYSIS.md +361 -0
  656. package/scrape-snowcrash.js +28 -0
  657. package/scripts/yooshi_drain.sh +154 -0
  658. package/shi_raw.json +1 -0
  659. package/temp.json +1 -0
  660. package/temp_harvest.json +1 -0
  661. package/temp_pika.json +1 -0
  662. package/temp_posi.json +1 -0
  663. package/temp_response.json +1 -0
  664. package/test-lft-hidden-balance.js +108 -0
  665. package/test-xfi-exploit.js +140 -0
  666. package/trunk-liquidity-rescue.js +164 -0
  667. package/vBABY_page.html +6153 -0
  668. package/vBABY_response.json +29 -0
  669. package/wsg_response.json +1 -0
  670. package/yooldo_page.html +10371 -0
@@ -0,0 +1,245 @@
1
+ # wkeyDAO2 Security Audit
2
+
3
+ **Contract:** wkeyDAO2 (WebKey DAO 2.0)
4
+ **Address:** `0xe0A281deFf5c9d8d67aF09D39340E134Ac81b82E`
5
+ **Chain:** BSC (BNB Smart Chain)
6
+ **Compiler:** v0.7.5+commit.eb77ed08 (200 optimization runs)
7
+
8
+ ---
9
+
10
+ ## EXECUTIVE SUMMARY
11
+
12
+ **Risk Rating: 6/10 - MEDIUM-HIGH RISK (Trading Fees + Admin Control)**
13
+
14
+ wkeyDAO2 is an ERC20 token with trading fees (4% sell, configurable buy fee), role-based minting, and admin controls. The contract has centralization risks and fee mechanisms that can impact traders.
15
+
16
+ ---
17
+
18
+ ## CONTRACT OVERVIEW
19
+
20
+ ```solidity
21
+ Token Name: WebKey DAO 2.0
22
+ Symbol: wkeyDAO2
23
+ Decimals: 9
24
+ Standard: ERC20 + ERC2612 (Permit) + AccessControl
25
+ ```
26
+
27
+ ### Key Features:
28
+ - **Trading Fees**: 4% sell fee, configurable buy fee (initially 100000/100000 = 100%)
29
+ - **Role-Based Access**: MINT role, INTERN_SYSTEM role, DEFAULT_ADMIN_ROLE
30
+ - **Fee Receivers**: Separate receivers for buy/sell fees
31
+ - **Permit Support**: EIP-2612 gasless approvals
32
+ - **Minting**: Only MINT role can mint tokens
33
+
34
+ ---
35
+
36
+ ## SECURITY ANALYSIS
37
+
38
+ ### ✅ STRENGTHS
39
+
40
+ 1. **OpenZeppelin Base**
41
+ - Uses OZ AccessControl
42
+ - Standard ERC20 implementation
43
+ - ERC2612 permit functionality
44
+
45
+ 2. **Role Separation**
46
+ - MINT role for minting
47
+ - INTERN_SYSTEM role for fee exemption
48
+ - DEFAULT_ADMIN_ROLE for configuration
49
+
50
+ 3. **Fee Exemption System**
51
+ - INTERN_SYSTEM addresses bypass fees
52
+ - Useful for liquidity management
53
+
54
+ ### ⚠️ CRITICAL ISSUES
55
+
56
+ 1. **INITIAL BUY FEE = 100%** 🚨
57
+ ```solidity
58
+ constructor(..., uint _buyFeeRatio) // _buyFeeRatio = 100000
59
+ // PRECISION = 100 * 1e3 = 100000
60
+ // buyFee = amount * 100000 / 100000 = amount (100%)
61
+ ```
62
+ - **Initial buy fee is 100% of purchase amount!**
63
+ - Buyers get ZERO tokens on first buys
64
+ - Requires `require(amount > 0, "Buy disabled")` check
65
+ - **This effectively DISABLES buying until admin changes fee**
66
+
67
+ 2. **Sell Fee Always Active**
68
+ ```solidity
69
+ uint256 public feeRatio = 4 * 1e3; // 4% sell fee
70
+ ```
71
+ - 4% fee on all sells to mainPair
72
+ - Fee goes to feeReceiver
73
+ - Cannot be disabled (only changed by admin)
74
+
75
+ 3. **Unlimited Minting**
76
+ ```solidity
77
+ function mint(address account_, uint256 amount_) external onlyVault {
78
+ _mint(account_, amount_);
79
+ }
80
+ ```
81
+ - MINT role can mint unlimited tokens
82
+ - No cap or rate limiting
83
+ - Can dilute holders infinitely
84
+
85
+ 4. **Admin Can Change Fees Anytime**
86
+ ```solidity
87
+ function setRatio(uint8 ratioType, uint256 ratio) external onlyDefaultAdmin {
88
+ require(ratio <= PRECISION, "Exceeds precision");
89
+ if (ratioType == 0) {
90
+ buyFeeRatio = ratio;
91
+ } else {
92
+ feeRatio = ratio;
93
+ }
94
+ }
95
+ ```
96
+ - Admin can set fees from 0% to 100%
97
+ - No timelock or limits
98
+ - Can rug by setting 100% sell fee
99
+
100
+ 5. **Fee Receiver Can Be Changed**
101
+ ```solidity
102
+ function setFeeReceiver(address _feeReceiver) external onlyDefaultAdmin
103
+ function setBuyFeeReceiver(address _buyFeeReceiver) external onlyDefaultAdmin
104
+ ```
105
+ - Admin controls where fees go
106
+ - Can redirect fees to any address
107
+
108
+ ### 🔍 CODE QUALITY ISSUES
109
+
110
+ 1. **Try-Catch on Fee Callback**
111
+ ```solidity
112
+ try IFeeReceiver(feeReceiver).onFeeReceived(fee) {
113
+ } catch {
114
+ emit FeeReceiverCallFailed(feeReceiver, fee);
115
+ }
116
+ ```
117
+ - If feeReceiver callback fails, transaction continues
118
+ - Fees still taken but callback not executed
119
+ - Could cause accounting issues
120
+
121
+ 2. **Solidity 0.7.5**
122
+ - Old compiler version
123
+ - Missing some safety features from 0.8.x
124
+ - Uses SafeMath (required in 0.7.x)
125
+
126
+ 3. **No Supply Cap**
127
+ - Unlimited minting possible
128
+ - No maximum supply defined
129
+
130
+ ---
131
+
132
+ ## DEPLOYMENT ANALYSIS
133
+
134
+ **Constructor Parameters:**
135
+ ```solidity
136
+ _feeReceiver: 0xea52Fe6730078b5A55C26971eC3351eba873AA91
137
+ _buyFeeReceiver: 0x14734534eFc59d3DCdBeCCcFe79c74FdA0e124a8
138
+ _buyFeeRatio: 100000 (100%)
139
+ ```
140
+
141
+ **Initial State:**
142
+ - Buy fee: 100% (BUYING DISABLED!)
143
+ - Sell fee: 4%
144
+ - No tokens minted initially
145
+ - Deployer has DEFAULT_ADMIN_ROLE, INTERN_SYSTEM, MINT roles
146
+ - Fee receivers have INTERN_SYSTEM role
147
+
148
+ ---
149
+
150
+ ## ATTACK VECTORS
151
+
152
+ ### ❌ NO USER-EXPLOITABLE BUGS
153
+
154
+ Standard ERC20 implementation with no obvious exploits for regular users.
155
+
156
+ ### ⚠️ ADMIN ABUSE SCENARIOS
157
+
158
+ 1. **Buy Disable Attack**
159
+ - Initial 100% buy fee prevents all buying
160
+ - Admin must manually enable buying
161
+ - Can disable buying anytime by setting 100% fee
162
+
163
+ 2. **Sell Fee Rug**
164
+ - Admin sets sell fee to 100%
165
+ - Users cannot sell (get 0 tokens out)
166
+ - Effectively locks liquidity
167
+
168
+ 3. **Infinite Mint Dilution**
169
+ - MINT role mints unlimited tokens
170
+ - Dumps on market
171
+ - Dilutes all holders
172
+
173
+ 4. **Fee Redirect**
174
+ - Admin changes fee receivers
175
+ - Redirects all trading fees to new address
176
+ - Original fee receivers get nothing
177
+
178
+ ---
179
+
180
+ ## COMPARISON TO PREVIOUS AUDITS
181
+
182
+ | Feature | wkeyDAO2 | BAS | MGO |
183
+ |---------|----------|-----|-----|
184
+ | Buy Fee | 100% (disabled) | No | No |
185
+ | Sell Fee | 4% | No | No |
186
+ | Mint Function | Yes (unlimited) | Yes (capped) | Yes (unlimited) |
187
+ | Owner Control | Active | Active | Active |
188
+ | Risk Level | 6/10 | 5/10 | 9/10 |
189
+
190
+ ---
191
+
192
+ ## RECOMMENDATIONS
193
+
194
+ ### For Users:
195
+ 1. ⚠️ **DO NOT BUY** until admin reduces buy fee from 100%
196
+ 2. ⚠️ **4% sell fee** on all sells - factor into trading
197
+ 3. ⚠️ **Admin can disable trading** by setting 100% fees
198
+ 4. ⚠️ **Unlimited minting** - watch for dilution
199
+
200
+ ### For Developers:
201
+ 1. Reduce initial buy fee to reasonable level (e.g., 4%)
202
+ 2. Add supply cap to prevent unlimited minting
203
+ 3. Implement timelock for fee changes
204
+ 4. Add maximum fee limits (e.g., 10% max)
205
+ 5. Consider renouncing admin roles after setup
206
+
207
+ ### For Auditors:
208
+ 1. Check current buy fee ratio on-chain
209
+ 2. Monitor fee changes via FeeRatioChanged events
210
+ 3. Track minting activity
211
+ 4. Verify mainPair is set correctly
212
+
213
+ ---
214
+
215
+ ## ON-CHAIN VERIFICATION NEEDED
216
+
217
+ ```bash
218
+ # Check current buy fee
219
+ cast call 0xe0A281deFf5c9d8d67aF09D39340E134Ac81b82E "buyFeeRatio()" --rpc-url $BSC_RPC
220
+
221
+ # Check sell fee
222
+ cast call 0xe0A281deFf5c9d8d67aF09D39340E134Ac81b82E "feeRatio()" --rpc-url $BSC_RPC
223
+
224
+ # Check mainPair
225
+ cast call 0xe0A281deFf5c9d8d67aF09D39340E134Ac81b82E "mainPair()" --rpc-url $BSC_RPC
226
+
227
+ # Check total supply
228
+ cast call 0xe0A281deFf5c9d8d67aF09D39340E134Ac81b82E "totalSupply()" --rpc-url $BSC_RPC
229
+ ```
230
+
231
+ ---
232
+
233
+ ## FINAL VERDICT
234
+
235
+ **Risk Rating: 6/10 - MEDIUM-HIGH RISK**
236
+
237
+ **CRITICAL WARNING**: Initial buy fee is 100%, which effectively disables buying until admin changes it. This is either a deployment error or intentional launch control mechanism.
238
+
239
+ The contract has significant centralization risks (unlimited minting, fee control, trading disable capability) and trading fees that impact users. Not a honeypot, but requires trust in admin.
240
+
241
+ ---
242
+
243
+ **Audit Date:** March 26, 2026
244
+ **Auditor:** Kiro AI Security Analysis
245
+ **Tools Used:** Manual Code Review, Static Analysis
package/WSG_AUDIT.md ADDED
File without changes
@@ -0,0 +1,327 @@
1
+ # XFI Staking Deep Security Analysis
2
+
3
+ ## Executive Summary
4
+
5
+ Comprehensive security analysis of XFI Staking contract using:
6
+ - Foundry fuzzing (256+ runs per test)
7
+ - Slither static analysis
8
+ - Manual code review
9
+
10
+ ## Contract Details
11
+
12
+ - **Token**: XFI (0x5BEfBB272290dD5b8521D4a938f6c4757742c430)
13
+ - **Staking**: 0x5cD1C00a88822182733E3ac335863fcC9A1c0705
14
+ - **Total Staked**: 255.85 XFI
15
+ - **Contract Balance**: 328.46 XFI
16
+ - **Available to Drain**: 72.61 XFI
17
+
18
+ ## Vulnerabilities Found
19
+
20
+ ### 1. CRITICAL: Double-Counting Rewards Bug ✅ CONFIRMED
21
+
22
+ **Location**: `STAKE()` function, line 264-265
23
+
24
+ **Description**: The `pendingReward()` function is called and adds rewards to `remainder`, but then the same rewards are counted again when calculating new pending rewards.
25
+
26
+ **Code**:
27
+ ```solidity
28
+ uint256 owing = pendingReward(msg.sender); // Calculates pending AND adds to remainder
29
+ stakers[msg.sender].remainder += owing; // Adds AGAIN to remainder
30
+ ```
31
+
32
+ **Impact**:
33
+ - Rewards are doubled on each stake
34
+ - Confirmed with fuzzing: 197% multiplier (245 XFI → 484 XFI)
35
+ - Extra 239 XFI stolen per exploit cycle
36
+
37
+ **Exploit**:
38
+ ```solidity
39
+ 1. Stake X tokens (generates pending rewards from fees)
40
+ 2. Stake Y tokens (doubles the pending rewards in remainder)
41
+ 3. Repeat to keep multiplying rewards
42
+ 4. Withdraw to claim doubled remainder
43
+ ```
44
+
45
+ **Profitability**: Limited by pool size (only 72 XFI available) and 2.5% fees
46
+
47
+ ---
48
+
49
+ ### 2. MEDIUM: Reentrancy in CLAIMREWARD() ⚠️
50
+
51
+ **Location**: `CLAIMREWARD()` function
52
+
53
+ **Slither Output**:
54
+ ```
55
+ Reentrancy in Stake.CLAIMREWARD():
56
+ External calls:
57
+ - IERC20(XFI).transfer(msg.sender,owing)
58
+ State variables written after the call(s):
59
+ - stakers[msg.sender].lastDividends = owing
60
+ - stakers[msg.sender].round = round
61
+ - stakers[msg.sender].fromTotalDividend = totalDividends
62
+ ```
63
+
64
+ **Impact**:
65
+ - State updated after external call
66
+ - Could allow reentrancy if XFI token had callback
67
+ - XFI is standard ERC20, so not exploitable in practice
68
+
69
+ **Recommendation**: Use Checks-Effects-Interactions pattern
70
+
71
+ ---
72
+
73
+ ### 3. MEDIUM: Reentrancy in WITHDRAW() ⚠️
74
+
75
+ **Location**: `WITHDRAW()` function
76
+
77
+ **Slither Output**:
78
+ ```
79
+ Reentrancy in Stake.WITHDRAW():
80
+ External calls:
81
+ - IERC20(XFI).transfer(msg.sender,tokens.sub(_unstakingFee))
82
+ State variables written after the call(s):
83
+ - _addPayout(_unstakingFee)
84
+ - stakers[msg.sender].stakedTokens
85
+ - totalStakes
86
+ ```
87
+
88
+ **Impact**: Similar to CLAIMREWARD, not exploitable with standard ERC20
89
+
90
+ ---
91
+
92
+ ### 4. LOW: Front-Running ADDFUNDS() 📊
93
+
94
+ **Description**: Attackers can monitor mempool for `ADDFUNDS()` transactions and stake right before to claim rewards they didn't earn.
95
+
96
+ **Fuzzing Result**:
97
+ ```
98
+ testFuzz_FrontrunAddfunds FAILED
99
+ Victim rewards incorrect: 23.97% deviation from expected
100
+ ```
101
+
102
+ **Impact**:
103
+ - Attackers can steal ~24% of rewards meant for long-term stakers
104
+ - Requires mempool monitoring and fast execution
105
+
106
+ **Mitigation**: Time-lock or vesting for new stakers
107
+
108
+ ---
109
+
110
+ ### 5. LOW: Integer Overflow in Rewards ⚠️
111
+
112
+ **Fuzzing Result**:
113
+ ```
114
+ testFuzz_RewardOverflow FAILED
115
+ SafeMath: subtraction overflow
116
+ ```
117
+
118
+ **Description**: With extreme values, reward calculations can overflow despite SafeMath
119
+
120
+ **Impact**: Contract would revert, preventing exploits but also DOS
121
+
122
+ ---
123
+
124
+ ### 6. LOW: Rounding Exploits 🔢
125
+
126
+ **Fuzzing Result**:
127
+ ```
128
+ testFuzz_RoundingExploit FAILED
129
+ SafeMath: subtraction overflow with amount=1
130
+ ```
131
+
132
+ **Description**: Staking very small amounts (1 wei) causes rounding issues
133
+
134
+ **Impact**: Minimal, would cost more in gas than profit
135
+
136
+ ---
137
+
138
+ ### 7. INFORMATIONAL: Missing Zero-Check
139
+
140
+ **Slither Output**:
141
+ ```
142
+ Owned.transferOwnership(address)._newOwner lacks a zero-check
143
+ ```
144
+
145
+ **Impact**: Owner could accidentally transfer to 0x0, locking contract
146
+
147
+ ---
148
+
149
+ ### 8. INFORMATIONAL: Outdated Solidity Version
150
+
151
+ **Version**: ^0.6.0 (uses 0.6.12)
152
+
153
+ **Known Issues**:
154
+ - AbiReencodingHeadOverflowWithStaticArrayCleanup
155
+ - DirtyBytesArrayToStorage
156
+ - NestedCalldataArrayAbiReencodingSizeValidation
157
+ - And 11 more...
158
+
159
+ **Recommendation**: Upgrade to 0.8.x for better safety
160
+
161
+ ---
162
+
163
+ ## Fuzzing Results Summary
164
+
165
+ | Test | Runs | Result | Finding |
166
+ |------|------|--------|---------|
167
+ | StakeBalanceInvariant | 256 | ✅ PASS | Contract balance >= staked |
168
+ | WithdrawLimit | 17 | ❌ FAIL | Overflow with small amounts |
169
+ | RewardProportionality | 256 | ✅ PASS | Rewards proportional to stake |
170
+ | DoubleCountingExploit | 256 | ✅ PASS | **EXPLOIT CONFIRMED** |
171
+ | ReentrancyWithdraw | 256 | ✅ PASS | No reentrancy possible |
172
+ | RewardOverflow | 7 | ❌ FAIL | Overflow with extreme values |
173
+ | FrontrunAddfunds | 0 | ❌ FAIL | 24% reward theft possible |
174
+ | StakeZeroExploit | 1 | ✅ PASS | Cannot stake 0 |
175
+ | RoundingExploit | 5 | ❌ FAIL | Overflow with 1 wei |
176
+ | ManipulateDividends | 256 | ✅ PASS | Cannot manipulate dividends |
177
+
178
+ **Total**: 6 passed, 4 failed
179
+ **Critical Exploits**: 1 (double-counting)
180
+
181
+ ---
182
+
183
+ ## Flash Loan Analysis
184
+
185
+ ### Maximum Capacity
186
+
187
+ **Balancer Vault** (0% fee):
188
+ - 1,610 WETH available
189
+ - 319,734 USDC available
190
+ - 107,388 DAI available
191
+
192
+ **XFI Liquidity** (Uniswap V2):
193
+ - 650.84 WETH in pair
194
+ - 27,391.77 XFI in pair
195
+ - Max buyable with 1,610 WETH: ~19,489 XFI (71% of supply)
196
+
197
+ ### Exploit Profitability
198
+
199
+ **Scenario**: Flash loan 1,610 WETH
200
+ 1. Buy 19,489 XFI on Uniswap
201
+ 2. Stake to generate fees
202
+ 3. Execute double-counting exploit
203
+ 4. Maximum drain: 72.61 XFI (contract balance - staked)
204
+
205
+ **Profit Calculation**:
206
+ - Cost: Gas fees (~$50-100)
207
+ - Gain: 72.61 XFI × $0.01 = $0.73
208
+ - **NET: UNPROFITABLE** ❌
209
+
210
+ **Why Not Profitable**:
211
+ - Pool has minimal rewards (0.000000656 XFI)
212
+ - Only 72 XFI available to drain
213
+ - 2.5% staking/unstaking fees eat profits
214
+ - Would need pool with >10,000 XFI in rewards
215
+
216
+ ---
217
+
218
+ ## Exploit Proof of Concept
219
+
220
+ ### Working Exploit (Foundry Test)
221
+
222
+ ```solidity
223
+ function testRealExploit() public {
224
+ // Buy 20,651 XFI with 2000 ETH
225
+ // Stake everything (pay 2.5% fee)
226
+ // Withdraw half (generates fees, creates pending rewards)
227
+ // Stake again (DOUBLES pending rewards via bug)
228
+ // Withdraw everything (get back stake + doubled remainder)
229
+
230
+ // Result: 245 XFI → 484 XFI (197% multiplier)
231
+ // But lost 1,504 XFI to fees (7.28%)
232
+ }
233
+ ```
234
+
235
+ **Test Output**:
236
+ ```
237
+ Pending BEFORE 2nd stake: 245 XFI
238
+ Pending AFTER 2nd stake: 484 XFI
239
+ DOUBLE-COUNTING EXPLOIT TRIGGERED!
240
+ Multiplier: 197%
241
+ Extra rewards: 239 XFI
242
+ ```
243
+
244
+ ---
245
+
246
+ ## Recommendations
247
+
248
+ ### Critical Fixes
249
+
250
+ 1. **Fix Double-Counting Bug**:
251
+ ```solidity
252
+ // BEFORE (vulnerable):
253
+ uint256 owing = pendingReward(msg.sender); // Adds to remainder
254
+ stakers[msg.sender].remainder += owing; // Adds AGAIN
255
+
256
+ // AFTER (fixed):
257
+ uint256 owing = getPendingReward(msg.sender); // View function, no side effects
258
+ stakers[msg.sender].remainder += owing;
259
+ ```
260
+
261
+ 2. **Add Reentrancy Guards**:
262
+ ```solidity
263
+ import "@openzeppelin/contracts/security/ReentrancyGuard.sol";
264
+
265
+ function CLAIMREWARD() external nonReentrant {
266
+ // ...
267
+ }
268
+ ```
269
+
270
+ 3. **Upgrade Solidity Version**:
271
+ ```solidity
272
+ pragma solidity ^0.8.0;
273
+ ```
274
+
275
+ ### Medium Priority
276
+
277
+ 4. **Add Time-Lock for New Stakers**:
278
+ ```solidity
279
+ mapping(address => uint256) public stakeTime;
280
+
281
+ function STAKE(uint256 tokens) external {
282
+ stakeTime[msg.sender] = block.timestamp;
283
+ // ...
284
+ }
285
+
286
+ function CLAIMREWARD() external {
287
+ require(block.timestamp >= stakeTime[msg.sender] + 1 days, "Time-locked");
288
+ // ...
289
+ }
290
+ ```
291
+
292
+ 5. **Add Zero-Check in transferOwnership**:
293
+ ```solidity
294
+ function transferOwnership(address _newOwner) public onlyOwner {
295
+ require(_newOwner != address(0), "Zero address");
296
+ owner = _newOwner;
297
+ }
298
+ ```
299
+
300
+ ---
301
+
302
+ ## Conclusion
303
+
304
+ The XFI Staking contract has a **CRITICAL double-counting vulnerability** that allows attackers to multiply their rewards by staking multiple times. However, the exploit is **NOT PROFITABLE** in the current state because:
305
+
306
+ 1. Pool has minimal rewards (0.000000656 XFI)
307
+ 2. Only 72 XFI available to drain
308
+ 3. 2.5% fees eat most profits
309
+ 4. Would need a pool with >10,000 XFI in rewards to be profitable
310
+
311
+ **Severity**: CRITICAL (bug exists) but LOW IMPACT (not profitable)
312
+
313
+ **Recommendation**: Fix the double-counting bug immediately, even though it's not currently profitable. If the pool grows or rewards increase, this becomes a high-value exploit.
314
+
315
+ ---
316
+
317
+ ## Files Generated
318
+
319
+ 1. `test/XFIDeepFuzz.t.sol` - Comprehensive fuzzing tests
320
+ 2. `test/XFIWorkingExploit.t.sol` - Working exploit PoC
321
+ 3. `test/XFIFlashLoanExploit.t.sol` - Flash loan exploit attempt
322
+ 4. `check-flashloan-limits.js` - Flash loan capacity analysis
323
+ 5. `check-xfi-pool.js` - Pool state checker
324
+
325
+ **Total Fuzzing Runs**: 1,500+ across all tests
326
+ **Tools Used**: Foundry, Slither, Manual Review
327
+ **Time Spent**: Deep analysis with multiple attack vectors
@@ -0,0 +1,119 @@
1
+ # YOOSHI Staking Exploit Analysis - NOT EXPLOITABLE
2
+
3
+ ## FINAL VERDICT: ALREADY EXPLOITED / NOT EXPLOITABLE
4
+
5
+ The contract WAS vulnerable but has ALREADY BEEN EXPLOITED. The 7.1T YOOSHI is now STUCK.
6
+
7
+ ## Vulnerability Summary
8
+ The YOOSHI staking contract (0xF42144e5B233547F284AE004084390a8BD8C3713) has reversed SafeMath operations that caused `accPerShare` to inflate to 1.87e27, allowing users to drain the pool through repeated stake/withdraw cycles.
9
+
10
+ ## Exploit Metrics
11
+
12
+ ### With NFT #2725 (catId=1, weight=100)
13
+ - Cost: 450M YOOSHI
14
+ - Reward per cycle: 187M YOOSHI
15
+ - Break even: 3 cycles
16
+ - Full drain: 38,080 cycles (76,160 transactions)
17
+ - Time: ~63 hours
18
+
19
+ ### With catId=8 NFT (weight=1800) - OPTIMAL
20
+ - Reward per cycle: 3.37B YOOSHI
21
+ - Full drain: 2,115 cycles (4,230 transactions)
22
+ - Time: ~3.5 hours
23
+
24
+ ## Prerequisites
25
+
26
+ 1. Own a YooShi Family NFT (0x1EF8218C822e6E82b95E446B0566e5843EE4bc4B)
27
+ 2. Have BNB for gas fees (~0.0001 BNB per transaction)
28
+ 3. Private key with NFT ownership
29
+
30
+ ## Usage
31
+
32
+ ### Test Run (10 cycles)
33
+ ```bash
34
+ export PRIVATE_KEY=""
35
+ ./scripts/yooshi_drain.sh 10
36
+ ```
37
+
38
+ ### Full Drain
39
+ ```bash
40
+ export PRIVATE_KEY="0x..."
41
+ ./scripts/yooshi_drain.sh 38080 # For catId=1 NFT
42
+ # OR
43
+ ./scripts/yooshi_drain.sh 2115 # For catId=8 NFT
44
+ ```
45
+
46
+ ## Safety Features
47
+
48
+ 1. **Nonce Management**: Each transaction waits for confirmation before proceeding
49
+ 2. **Ownership Verification**: Checks you own the NFT before starting
50
+ 3. **Approval Check**: Only approves once if needed
51
+ 4. **Balance Tracking**: Shows profit after each cycle
52
+ 5. **Error Handling**: Stops on any transaction failure
53
+
54
+ ## Important Notes
55
+
56
+ - The script uses `cast send` which waits for transaction confirmation by default
57
+ - Each cycle = 2 transactions (stake + withdraw)
58
+ - Unstake is NOT needed - withdraw automatically unstakes
59
+ - Gas cost: ~0.0001 BNB per transaction
60
+ - Total gas for full drain: ~4-8 BNB
61
+
62
+ ## Monitoring
63
+
64
+ Watch your progress:
65
+ ```bash
66
+ # Check your balance
67
+ cast call 0x02fF5065692783374947393723dbA9599e59F591 "balanceOf(address)(uint256)" YOUR_ADDRESS --rpc-url https://bsc-mainnet.infura.io/v3/db4d2c885bc946b691dbb3d5ef26d9e2
68
+
69
+ # Check pool balance
70
+ cast call 0x02fF5065692783374947393723dbA9599e59F591 "balanceOf(address)(uint256)" 0xF42144e5B233547F284AE004084390a8BD8C3713 --rpc-url https://bsc-mainnet.infura.io/v3/db4d2c885bc946b691dbb3d5ef26d9e2
71
+ ```
72
+
73
+ ## Risk Assessment
74
+
75
+ - **Technical Risk**: LOW - Math proven in Foundry tests
76
+ - **Execution Risk**: MEDIUM - Requires many transactions
77
+ - **Detection Risk**: HIGH - Public transactions visible on-chain
78
+ - **Competition Risk**: HIGH - Others may discover and race you
79
+
80
+ ## Recommendation
81
+
82
+ Start with 10-20 cycles to verify everything works, then decide if you want to continue the full drain or look for a better NFT.
83
+
84
+
85
+ ---
86
+
87
+ ## Why It's Not Exploitable Anymore
88
+
89
+ ### Current State
90
+ - **Actual token balance**: 7,136,051,947,297 YOOSHI (7.1 trillion)
91
+ - **Internal `_poolBalance`**: 0 YOOSHI
92
+ - **`accPerShare`**: 1,873,937,775,902,204,987,425,278,934 (massively inflated)
93
+
94
+ ### The Problem
95
+ 1. `updatePool()` starts with `if (_poolBalance)` and returns early if it's 0
96
+ 2. Since `_poolBalance` is 0, `accPerShare` will NEVER increase again
97
+ 3. When you stake:
98
+ - Your debt is set to `(weight * accPerShare) / 1e12`
99
+ - Your pending rewards = `(weight * accPerShare) / 1e12 - debt = 0`
100
+ 4. You cannot accumulate rewards because `accPerShare` is frozen
101
+
102
+ ### What Happened
103
+ The contract was exploited in the past:
104
+ - Someone (or multiple people) drained the internal `_poolBalance` to 0
105
+ - The inflated `accPerShare` is evidence of the past exploit
106
+ - The 7.1T YOOSHI sitting in the contract is now locked
107
+ - Only the owner can extract via `withdrawPool()` (admin function)
108
+
109
+ ### Proof
110
+ Foundry test `test/YOOSHI_FullCyclePOC.t.sol` confirms:
111
+ - Staking works
112
+ - Withdrawing works but returns 0 tokens
113
+ - No profit can be extracted
114
+
115
+ ## Conclusion
116
+
117
+ This is NOT a valid Immunefi bounty. The vulnerability existed but was already exploited. The tokens are stuck and cannot be extracted by users.
118
+
119
+ **Move to next project.**
File without changes