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,651 @@
1
+ # BasedAI Bridge Security Audit Report
2
+
3
+ **Contract**: BasedAI Bridge (Pre-Bridge v2 Staking)
4
+ **Address**: 0x40359B38db010A1d0ff5E7d00CC477D5b393bd72
5
+ **Compiler**: Solidity 0.8.25
6
+ **Audit Date**: March 24, 2026
7
+ **Auditor**: Kiro AI Security Analysis
8
+
9
+ ---
10
+
11
+ ## Executive Summary
12
+
13
+ **Risk Level**: 🟡 **MEDIUM** (Centralization + Credit System Complexity)
14
+
15
+ This is a **pre-bridge staking contract** for BasedAI mainnet launch. Users stake tokens (PepeCoin, BasedAI, Brain NFTs) to earn credits that will be redeemable on the BasedAI L1 mainnet after launch.
16
+
17
+ **Key Characteristics**:
18
+ 1. **TEMPORARY CONTRACT**: Designed for pre-mainnet staking only
19
+ 2. **CREDIT SYSTEM**: Tracks rewards off-chain style (not actual tokens)
20
+ 3. **CENTRALIZED**: Single owner with significant control
21
+ 4. **PAUSABLE**: Emergency stop functionality
22
+ 5. **COMPLEX LOGIC**: Credit recovery, Brain NFT staking, multiple token support
23
+
24
+ **Purpose**: Bridge users from Ethereum to BasedAI L1 by incentivizing early staking.
25
+
26
+ ---
27
+
28
+ ## Contract Overview
29
+
30
+ **Architecture**:
31
+ - OpenZeppelin ReentrancyGuard + Pausable
32
+ - Multi-token staking support (ERC20 + ERC721)
33
+ - Credit accumulation system (time-based rewards)
34
+ - One-way bridge (stake now, claim on L1 later)
35
+
36
+ **Key Features**:
37
+ 1. **Token Staking**: Stake ERC20 tokens (PepeCoin, BasedAI)
38
+ 2. **Brain NFT Staking**: Stake Brain NFTs for bonus credits
39
+ 3. **Credit Accumulation**: Earn credits over time based on stake amount and rate
40
+ 4. **Mainnet Trigger**: Owner finalizes all scores when mainnet launches
41
+ 5. **Withdrawal**: Users can unstake before mainnet launch
42
+ 6. **Credit Recovery**: Special 30-day window for credit recovery
43
+
44
+ ---
45
+
46
+ ## CRITICAL FINDINGS
47
+
48
+ ### 🔴 CRITICAL #1: Owner Can Manipulate Credits
49
+ **Severity**: CRITICAL
50
+ **Function**: `setCreditsForAddress()`
51
+
52
+ ```solidity
53
+ function setCreditsForAddress(address _user, uint256 _credits) external onlyOwner {
54
+ credits[_user] = _credits;
55
+ emit CreditsUpdated(_user, _credits);
56
+ }
57
+ ```
58
+
59
+ **The Risk**:
60
+ - Owner can set ANY user's credits to ANY value
61
+ - No limits, no checks, no transparency
62
+ - Can inflate or deflate credits arbitrarily
63
+ - Directly impacts mainnet rewards
64
+
65
+ **Impact**: Owner can manipulate reward distribution unfairly.
66
+
67
+ **Mitigation**:
68
+ - This is likely for emergency corrections or migrations
69
+ - Requires trust in BasedAI team
70
+ - Should be monitored via events
71
+
72
+ ---
73
+
74
+ ### 🔴 CRITICAL #2: Mainnet Trigger is Irreversible
75
+ **Severity**: CRITICAL
76
+ **Function**: `triggerMainnetLive()`
77
+
78
+ ```solidity
79
+ function triggerMainnetLive() external onlyOwner {
80
+ mainnetLive = true;
81
+ for (uint i = 0; i < stakers.length; i++) {
82
+ finalScores[stakers[i]] = getCredits(stakers[i]) + credits[stakers[i]];
83
+ finalScores[stakers[i]] += lastKnownCredits[stakers[i]];
84
+ emit FinalScoreRecorded(stakers[i], finalScores[stakers[i]]);
85
+ }
86
+ emit MainnetActivated();
87
+ }
88
+ ```
89
+
90
+ **The Risk**:
91
+ - Once triggered, scores are FROZEN forever
92
+ - No way to undo or correct errors
93
+ - Users can no longer stake or withdraw
94
+ - If triggered prematurely, users lose opportunity
95
+
96
+ **Impact**: Premature trigger locks all users out permanently.
97
+
98
+ **Potential Issue**: Gas limit risk if `stakers.length` is very large.
99
+
100
+ ---
101
+
102
+ ### 🟡 HIGH #3: Brain NFT Staking Creates Phantom Tokens
103
+ **Severity**: HIGH
104
+ **Function**: `stakeBrain()`
105
+
106
+ ```solidity
107
+ function stakeBrain(uint256 _tokenId) external whenNotPaused nonReentrant {
108
+ require(brainNFT.ownerOf(_tokenId) == msg.sender, "Not the owner of the Brain");
109
+ require(!mainnetLive, "Mainnet is live!");
110
+ brainNFT.transferFrom(msg.sender, address(this), _tokenId);
111
+ uint256 currentRate = tokenConfigs[address(pepeCoin)].initialRate;
112
+
113
+ uint256[] memory brainIds = new uint256[](1);
114
+ brainIds[0] = _tokenId;
115
+
116
+ _addStake(msg.sender, address(pepeCoin), 100000 * (10 ** 18), brainIds, currentRate);
117
+ emit BrainStaked(msg.sender, _tokenId, block.timestamp, currentRate);
118
+ }
119
+ ```
120
+
121
+ **The Risk**:
122
+ - Staking a Brain NFT creates a stake of **100,000 PepeCoin** (100k tokens!)
123
+ - But NO actual PepeCoin is transferred
124
+ - This is "phantom" stake for credit calculation only
125
+ - Could confuse users or create accounting issues
126
+
127
+ **Impact**: Phantom stakes could cause confusion in credit calculations.
128
+
129
+ **Analysis**: This appears intentional - Brain NFTs are worth 100k PepeCoin equivalent in credits. But it's unusual.
130
+
131
+ ---
132
+
133
+ ### 🟡 HIGH #4: Credit Calculation Precision Loss
134
+ **Severity**: HIGH
135
+ **Function**: `calculateCredits()`
136
+
137
+ ```solidity
138
+ function calculateCredits(Stake memory stake) private view returns (uint256) {
139
+ uint256 durationInSeconds = block.timestamp - stake.timestamp;
140
+ uint256 accruedCredits = (stake.amount / stake.rate) * durationInSeconds / 86400;
141
+ return accruedCredits;
142
+ }
143
+ ```
144
+
145
+ **The Risk**:
146
+ - Division before multiplication causes precision loss
147
+ - `stake.amount / stake.rate` truncates first
148
+ - Then multiplies by time
149
+ - Users lose fractional credits
150
+
151
+ **Example**:
152
+ - Stake 100 tokens at rate 500
153
+ - 100 / 500 = 0 (truncated!)
154
+ - 0 * time / 86400 = 0 credits
155
+ - User earns NOTHING
156
+
157
+ **Impact**: Small stakes earn zero credits due to rounding.
158
+
159
+ **Fix**: Should be `(stake.amount * durationInSeconds) / (stake.rate * 86400)`
160
+
161
+ ---
162
+
163
+ ### 🟡 HIGH #5: Withdraw Function Doesn't Clear Stakes Properly
164
+ **Severity**: HIGH
165
+ **Function**: `withdraw()`
166
+
167
+ ```solidity
168
+ function withdraw() external whenNotPaused nonReentrant {
169
+ uint256 totalStaked = 0;
170
+ uint256 stakeCount = stakes[msg.sender].length;
171
+
172
+ // make sure the users credits are calculated.
173
+ if (block.timestamp - startTime <= 30 days) {
174
+ // Store any previous credit balances
175
+ lastKnownCredits[msg.sender] = credits[msg.sender];
176
+ // Update the credit table to the latest
177
+ updateCredits(msg.sender);
178
+ // Combine the old and new updated credits
179
+ lastKnownCredits[msg.sender] += credits[msg.sender];
180
+ }
181
+
182
+ for (uint i = stakeCount; i > 0; i--) {
183
+ uint index = i - 1;
184
+ Stake storage stake = stakes[msg.sender][index];
185
+ totalStaked += stake.amount;
186
+
187
+ // If it is a Brain they can only withdraw the Brain
188
+ if (stake.brainIds.length == 0) {
189
+ IERC20(stake.tokenAddress).transfer(msg.sender, stake.amount);
190
+ emit Withdrawn(msg.sender, stake.amount);
191
+ }
192
+
193
+ // Transfer any Brain NFTs back to the user
194
+ for (uint j = 0; j < stake.brainIds.length; j++) {
195
+ brainNFT.transferFrom(address(this), msg.sender, stake.brainIds[j]);
196
+ emit BrainWithdrawn(msg.sender, stake.brainIds[j]);
197
+ }
198
+
199
+ stakes[msg.sender][index] = stakes[msg.sender][stakes[msg.sender].length - 1];
200
+ stakes[msg.sender].pop();
201
+ }
202
+
203
+ require(totalStaked > 0, "Nothing to remove from BasedAI bridge");
204
+ credits[msg.sender] = 0;
205
+ }
206
+ ```
207
+
208
+ **Issues**:
209
+ 1. **Phantom Token Problem**: Brain stakes add 100k to `totalStaked` but no tokens are transferred
210
+ 2. **Credit Reset**: Sets `credits[msg.sender] = 0` but keeps `lastKnownCredits`
211
+ 3. **Partial Withdrawal**: No way to withdraw specific stakes, must withdraw all
212
+
213
+ **Impact**: Confusing withdrawal behavior, especially with Brain NFTs.
214
+
215
+ ---
216
+
217
+ ### 🟡 MEDIUM #6: 30-Day Credit Recovery Window
218
+ **Severity**: MEDIUM
219
+ **Functions**: `stake()`, `withdraw()`
220
+
221
+ ```solidity
222
+ // In stake():
223
+ if (block.timestamp - startTime <= 30 days) {
224
+ credits[msg.sender] += lastKnownCredits[msg.sender];
225
+ lastKnownCredits[msg.sender] = 0;
226
+ }
227
+
228
+ // In withdraw():
229
+ if (block.timestamp - startTime <= 30 days) {
230
+ lastKnownCredits[msg.sender] = credits[msg.sender];
231
+ updateCredits(msg.sender);
232
+ lastKnownCredits[msg.sender] += credits[msg.sender];
233
+ }
234
+ ```
235
+
236
+ **The Risk**:
237
+ - Complex credit recovery logic only works in first 30 days
238
+ - After 30 days, `lastKnownCredits` are lost if you withdraw
239
+ - Users might not understand this mechanic
240
+ - Could lead to unexpected credit loss
241
+
242
+ **Impact**: Users who withdraw after 30 days lose their `lastKnownCredits`.
243
+
244
+ ---
245
+
246
+ ### 🟡 MEDIUM #7: Owner Can Recover All Tokens
247
+ **Severity**: MEDIUM
248
+ **Function**: `recoverERC20()`, `recoverERC721()`
249
+
250
+ ```solidity
251
+ function recoverERC20(address tokenAddress, uint256 tokenAmount) external onlyOwner {
252
+ require(tokenAddress != pepeCoinAddress, "Unable to remove prebriged PepeCoin");
253
+ IERC20(tokenAddress).transfer(owner, tokenAmount);
254
+ }
255
+
256
+ function recoverERC721(address tokenAddress, uint256 tokenId) external onlyOwner {
257
+ IERC721(tokenAddress).transferFrom(address(this), owner, tokenId);
258
+ }
259
+ ```
260
+
261
+ **The Risk**:
262
+ - Owner can recover ANY token except PepeCoin
263
+ - Can recover Brain NFTs (!)
264
+ - Can recover other staked tokens (BasedAI, etc.)
265
+ - Only PepeCoin is protected
266
+
267
+ **Impact**: Owner can drain non-PepeCoin stakes.
268
+
269
+ **Mitigation**: Likely for emergency recovery, but requires trust.
270
+
271
+ ---
272
+
273
+ ### 🟡 MEDIUM #8: No Transfer of Ownership
274
+ **Severity**: MEDIUM
275
+ **Issue**: Missing functionality
276
+
277
+ **The Risk**:
278
+ - Owner is set in constructor to `msg.sender`
279
+ - No way to transfer ownership
280
+ - If owner key is lost, contract is stuck
281
+ - No multi-sig or timelock
282
+
283
+ **Impact**: Single point of failure for contract management.
284
+
285
+ ---
286
+
287
+ ### 🟢 POSITIVE #9: Reentrancy Protection
288
+ **Severity**: INFORMATIONAL
289
+
290
+ ```solidity
291
+ contract BasedAIBridge is ReentrancyGuard, Pausable {
292
+ // ...
293
+ function stake(address tokenAddress, uint256 _amount) external whenNotPaused nonReentrant {
294
+ // ...
295
+ }
296
+
297
+ function withdraw() external whenNotPaused nonReentrant {
298
+ // ...
299
+ }
300
+ }
301
+ ```
302
+
303
+ **Good**: All critical functions use `nonReentrant` modifier.
304
+
305
+ ---
306
+
307
+ ### 🟢 POSITIVE #10: Pausable Emergency Stop
308
+ **Severity**: INFORMATIONAL
309
+
310
+ ```solidity
311
+ function pause() external onlyOwner {
312
+ _pause();
313
+ }
314
+
315
+ function unpause() external onlyOwner {
316
+ _unpause();
317
+ }
318
+ ```
319
+
320
+ **Good**: Owner can pause in emergency, preventing new stakes/withdrawals.
321
+
322
+ ---
323
+
324
+ ## Detailed Function Analysis
325
+
326
+ ### Stake Function
327
+
328
+ ```solidity
329
+ function stake(address tokenAddress, uint256 _amount) external whenNotPaused nonReentrant {
330
+ require(_amount > 0, "Amount must be greater than zero");
331
+ require(tokenConfigs[tokenAddress].isSupported, "Token is not supported for staking");
332
+ require(!mainnetLive, "Mainnet is live!");
333
+
334
+ IERC20(tokenAddress).transferFrom(msg.sender, address(this), _amount);
335
+ uint256 currentRate = tokenConfigs[tokenAddress].initialRate;
336
+
337
+ uint256[] memory brainIds = new uint256[](0);
338
+
339
+ if (block.timestamp - startTime <= 30 days) {
340
+ credits[msg.sender] += lastKnownCredits[msg.sender];
341
+ lastKnownCredits[msg.sender] = 0;
342
+ }
343
+
344
+ _addStake(msg.sender, tokenAddress, _amount, brainIds, currentRate);
345
+ }
346
+ ```
347
+
348
+ **Good**:
349
+ - Checks amount > 0
350
+ - Checks token is supported
351
+ - Checks mainnet not live
352
+ - Uses `nonReentrant`
353
+ - Transfers tokens first (CEI pattern)
354
+
355
+ **Issues**:
356
+ - Uses `initialRate` instead of `getCurrentRate()` (rate never increases!)
357
+ - Credit recovery logic is complex
358
+
359
+ ---
360
+
361
+ ### Credit Calculation
362
+
363
+ ```solidity
364
+ function calculateCredits(Stake memory stake) private view returns (uint256) {
365
+ uint256 durationInSeconds = block.timestamp - stake.timestamp;
366
+ uint256 accruedCredits = (stake.amount / stake.rate) * durationInSeconds / 86400;
367
+ return accruedCredits;
368
+ }
369
+ ```
370
+
371
+ **Formula**: `credits = (amount / rate) * days`
372
+
373
+ **Example** (PepeCoin at rate 500):
374
+ - Stake 10,000 tokens for 10 days
375
+ - Credits = (10,000 / 500) * 10 = 20 * 10 = 200 credits
376
+
377
+ **Issue**: Division before multiplication loses precision for small amounts.
378
+
379
+ ---
380
+
381
+ ### Brain NFT Staking
382
+
383
+ ```solidity
384
+ function stakeBrain(uint256 _tokenId) external whenNotPaused nonReentrant {
385
+ require(brainNFT.ownerOf(_tokenId) == msg.sender, "Not the owner of the Brain");
386
+ require(!mainnetLive, "Mainnet is live!");
387
+ brainNFT.transferFrom(msg.sender, address(this), _tokenId);
388
+ uint256 currentRate = tokenConfigs[address(pepeCoin)].initialRate;
389
+
390
+ uint256[] memory brainIds = new uint256[](1);
391
+ brainIds[0] = _tokenId;
392
+
393
+ _addStake(msg.sender, address(pepeCoin), 100000 * (10 ** 18), brainIds, currentRate);
394
+ emit BrainStaked(msg.sender, _tokenId, block.timestamp, currentRate);
395
+ }
396
+ ```
397
+
398
+ **Mechanics**:
399
+ - User stakes Brain NFT
400
+ - Creates phantom stake of 100,000 PepeCoin
401
+ - Earns credits as if they staked 100k tokens
402
+ - On withdraw, gets Brain NFT back (not tokens)
403
+
404
+ **Credits Earned** (at rate 500):
405
+ - Per day: (100,000 * 10^18 / 500) / 86400 = ~2.3 * 10^15 credits per second
406
+ - Per day: ~2 * 10^20 credits
407
+
408
+ ---
409
+
410
+ ## Exploitability Assessment
411
+
412
+ ### Can External Attackers Exploit This?
413
+
414
+ **NO** - External attackers cannot exploit this contract because:
415
+ - Reentrancy protection on all critical functions
416
+ - Pausable for emergency stop
417
+ - Proper access control (onlyOwner)
418
+ - Token transfers use standard patterns
419
+ - No obvious overflow/underflow issues (Solidity 0.8+)
420
+
421
+ ### Can Owner Exploit This?
422
+
423
+ **YES** - Owner has significant control:
424
+
425
+ 1. **Manipulate Credits**: `setCreditsForAddress()` can set any user's credits
426
+ 2. **Trigger Mainnet Early**: Lock all users out prematurely
427
+ 3. **Recover Tokens**: Drain non-PepeCoin tokens and NFTs
428
+ 4. **Pause Contract**: Prevent withdrawals indefinitely
429
+ 5. **Add Malicious Tokens**: Add tokens with manipulated rates
430
+
431
+ ### Can Users Lose Funds?
432
+
433
+ **YES** - Users can lose funds through:
434
+
435
+ 1. **Precision Loss**: Small stakes earn zero credits
436
+ 2. **Premature Mainnet**: If triggered early, can't withdraw
437
+ 3. **Credit Loss**: Withdrawing after 30 days loses `lastKnownCredits`
438
+ 4. **Owner Actions**: Owner can manipulate credits or recover tokens
439
+
440
+ ---
441
+
442
+ ## Risk Summary
443
+
444
+ | Risk Category | Level | Details |
445
+ |--------------|-------|---------|
446
+ | **Rug Pull Risk** | 🟡 MEDIUM | Owner can recover tokens, manipulate credits |
447
+ | **Centralization** | 🔴 HIGH | Single owner with god-mode powers |
448
+ | **Credit System** | 🟡 MEDIUM | Complex logic, precision loss, manipulation risk |
449
+ | **Mainnet Trigger** | 🔴 HIGH | Irreversible, gas limit risk, premature trigger |
450
+ | **Withdrawal** | 🟡 MEDIUM | Complex logic, credit loss after 30 days |
451
+ | **Reentrancy** | 🟢 EXCELLENT | Proper protection |
452
+ | **Pausable** | 🟢 EXCELLENT | Emergency stop capability |
453
+ | **Code Quality** | 🟢 GOOD | Clean, uses OpenZeppelin |
454
+
455
+ ---
456
+
457
+ ## Comparison to Other Audited Contracts
458
+
459
+ **vs. PepeCoin Staking** (previous audit):
460
+ - ✅ Better: Uses OpenZeppelin (ReentrancyGuard, Pausable)
461
+ - ✅ Better: More sophisticated credit system
462
+ - ❌ Similar: Centralized owner control
463
+ - ❌ Worse: More complex (higher bug risk)
464
+
465
+ **vs. PAAL AI Token** (previous audit):
466
+ - ✅ Much better: No hidden tax backdoors
467
+ - ✅ Better: Transparent staking mechanics
468
+ - ❌ Similar: High centralization
469
+ - ✅ Better: Proper access control
470
+
471
+ **vs. Binance Alpha Wallet** (previous audit):
472
+ - ❌ Worse: Less sophisticated (no multi-sig, no EIP-712)
473
+ - ❌ Worse: Single owner vs. role-based access
474
+ - ✅ Better: Simpler (less attack surface)
475
+ - ❌ Similar: Custodial model (trust required)
476
+
477
+ ---
478
+
479
+ ## Recommendations
480
+
481
+ ### For Users:
482
+
483
+ 1. **UNDERSTAND CREDITS**: Credits are NOT tokens, they're points for L1 mainnet
484
+ 2. **SMALL STAKES LOSE**: Stakes under ~500 tokens earn zero credits (precision loss)
485
+ 3. **30-DAY WINDOW**: Withdraw and restake within 30 days to recover credits
486
+ 4. **BRAIN NFT VALUE**: Each Brain = 100k PepeCoin equivalent in credits
487
+ 5. **MAINNET RISK**: Once mainnet triggers, you can't withdraw
488
+ 6. **TRUST REQUIRED**: Owner can manipulate credits and recover tokens
489
+
490
+ ### For BasedAI Team:
491
+
492
+ 1. **FIX PRECISION LOSS**: Change credit calculation to avoid division first
493
+ ```solidity
494
+ // Current (BAD):
495
+ uint256 accruedCredits = (stake.amount / stake.rate) * durationInSeconds / 86400;
496
+
497
+ // Fixed (GOOD):
498
+ uint256 accruedCredits = (stake.amount * durationInSeconds) / (stake.rate * 86400);
499
+ ```
500
+
501
+ 2. **ADD OWNERSHIP TRANSFER**: Implement `transferOwnership()` function
502
+
503
+ 3. **USE MULTI-SIG**: Owner should be a multi-sig wallet (Gnosis Safe)
504
+
505
+ 4. **ADD TIMELOCK**: Critical functions should have timelock delay
506
+
507
+ 5. **GAS LIMIT PROTECTION**: Batch `triggerMainnetLive()` to avoid gas limit
508
+
509
+ 6. **CLARIFY DOCUMENTATION**: Explain credit recovery window clearly
510
+
511
+ 7. **REMOVE UNUSED CODE**: `getCurrentRate()` is never used (rates don't increase)
512
+
513
+ 8. **ADD PARTIAL WITHDRAWAL**: Allow users to withdraw specific stakes
514
+
515
+ 9. **PROTECT BRAIN NFTS**: Don't allow owner to recover staked Brain NFTs
516
+
517
+ 10. **ADD EMERGENCY WITHDRAW**: Allow users to emergency withdraw if paused too long
518
+
519
+ ---
520
+
521
+ ## Code Quality Issues
522
+
523
+ ### Issue #1: Unused Function
524
+
525
+ ```solidity
526
+ function getCurrentRate(address tokenAddress) public view returns (uint256) {
527
+ TokenConfig storage config = tokenConfigs[tokenAddress];
528
+ uint256 timeElapsed = block.timestamp - startTime;
529
+ uint256 periods = timeElapsed / config.rateIncreaseInterval;
530
+ return config.initialRate + (config.rateIncreaseAmount * periods);
531
+ }
532
+ ```
533
+
534
+ **Problem**: This function calculates increasing rates, but `stake()` uses `initialRate` directly. Rates never increase!
535
+
536
+ **Fix**: Either use `getCurrentRate()` in `stake()` or remove the function.
537
+
538
+ ---
539
+
540
+ ### Issue #2: Inconsistent Rate Usage
541
+
542
+ ```solidity
543
+ // In stake():
544
+ uint256 currentRate = tokenConfigs[tokenAddress].initialRate;
545
+
546
+ // In stakeBrain():
547
+ uint256 currentRate = tokenConfigs[address(pepeCoin)].initialRate;
548
+ ```
549
+
550
+ **Problem**: Always uses `initialRate`, never `getCurrentRate()`. The rate increase mechanism is broken.
551
+
552
+ ---
553
+
554
+ ### Issue #3: Magic Numbers
555
+
556
+ ```solidity
557
+ _addStake(msg.sender, address(pepeCoin), 100000 * (10 ** 18), brainIds, currentRate);
558
+ ```
559
+
560
+ **Problem**: Hard-coded 100,000 tokens for Brain NFT. Should be a constant.
561
+
562
+ **Fix**:
563
+ ```solidity
564
+ uint256 constant BRAIN_NFT_EQUIVALENT = 100000 * (10 ** 18);
565
+ ```
566
+
567
+ ---
568
+
569
+ ### Issue #4: Array Iteration in Mainnet Trigger
570
+
571
+ ```solidity
572
+ function triggerMainnetLive() external onlyOwner {
573
+ mainnetLive = true;
574
+ for (uint i = 0; i < stakers.length; i++) {
575
+ finalScores[stakers[i]] = getCredits(stakers[i]) + credits[stakers[i]];
576
+ finalScores[stakers[i]] += lastKnownCredits[stakers[i]];
577
+ emit FinalScoreRecorded(stakers[i], finalScores[stakers[i]]);
578
+ }
579
+ emit MainnetActivated();
580
+ }
581
+ ```
582
+
583
+ **Problem**: If `stakers.length` is large (thousands), this will hit gas limit and fail.
584
+
585
+ **Fix**: Batch processing or off-chain calculation with Merkle tree.
586
+
587
+ ---
588
+
589
+ ## Conclusion
590
+
591
+ **VERDICT**: 🟡 **USE WITH CAUTION - TRUST REQUIRED**
592
+
593
+ This contract is:
594
+ - ✅ Well-structured with OpenZeppelin security patterns
595
+ - ✅ Properly protected against reentrancy
596
+ - ✅ Has emergency pause functionality
597
+ - ⚠️ Highly centralized (single owner control)
598
+ - ⚠️ Credit calculation has precision loss bug
599
+ - ⚠️ Complex credit recovery logic (30-day window)
600
+ - ⚠️ Mainnet trigger is irreversible and risky
601
+ - ⚠️ Owner can manipulate credits and recover tokens
602
+
603
+ **For Users**: This is a **PRE-BRIDGE STAKING CONTRACT** for BasedAI mainnet. You must trust:
604
+ 1. BasedAI team won't manipulate credits
605
+ 2. Mainnet will actually launch
606
+ 3. Credits will be honored on L1
607
+ 4. Owner won't recover your staked tokens
608
+ 5. Contract won't be paused indefinitely
609
+
610
+ **For Developers**: This is a reasonably well-implemented staking contract with some bugs (precision loss, unused rate increase) and high centralization. The credit system is complex and could be simplified.
611
+
612
+ **Exploitability**: Not exploitable by external attackers, but owner has extensive control. Users must trust the BasedAI team.
613
+
614
+ **Comparison**: More sophisticated than simple staking contracts, but less secure than enterprise-grade contracts (like Chainlink CCIP). Appropriate for a temporary pre-bridge contract if users trust the team.
615
+
616
+ ---
617
+
618
+ **Audit Complete** ✓
619
+
620
+ **RECOMMENDATION**: ⚠️ **TRUST REQUIRED - FIX PRECISION LOSS BUG**
621
+
622
+ This contract is safe to use if you trust the BasedAI team, but the precision loss bug should be fixed before mainnet launch. Small stakers will earn zero credits with the current implementation.
623
+
624
+ ---
625
+
626
+ ## Additional Notes
627
+
628
+ **BasedAI Bridge Context**:
629
+ - Temporary contract for pre-mainnet staking
630
+ - Credits are off-chain style rewards (not actual tokens)
631
+ - Designed to incentivize early adoption
632
+ - Will be replaced by actual L1 bridge after mainnet
633
+
634
+ **Trust Assumptions**:
635
+ - BasedAI team operates honestly
636
+ - Mainnet will launch as promised
637
+ - Credits will be honored on L1
638
+ - Owner won't abuse powers
639
+ - Contract won't be paused indefinitely
640
+
641
+ **For Maximum Security**:
642
+ - BasedAI should use multi-sig for owner
643
+ - Implement timelock for critical functions
644
+ - Fix precision loss bug
645
+ - Add batch processing for mainnet trigger
646
+ - Provide clear documentation on credit mechanics
647
+ - Regular transparency reports
648
+
649
+ ---
650
+
651
+ **Note**: This audit is based on verified source code from Etherscan. The contract is live and holding user funds ($115k+ at time of audit).