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,547 @@
|
|
|
1
|
+
reward pool
|
|
2
|
+
2. Corrupting weight calculations
|
|
3
|
+
3. Unfair reward distribution
|
|
4
|
+
|
|
5
|
+
Combined with the DSync token's 60% sell tax, this creates an **EXTREME RISK** ecosystem that users should avoid entirely.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
**Audit Date**: March 24, 2026
|
|
10
|
+
**Status**: 🔴 CRITICAL VULNERABILITIES FOUND
|
|
11
|
+
**Recommendation**: DO NOT USE - WITHDRAW IMMEDIATELY IF STAKED
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
*This audit is based on decompiled bytecode. Original source code verification is strongly recommended.*
|
|
16
|
+
x fair share
|
|
17
|
+
**Difficulty**: Medium
|
|
18
|
+
**Status**: Exploitable NOW
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## ✅ Conclusion
|
|
23
|
+
|
|
24
|
+
The DSync staking contract contains **CRITICAL vulnerabilities** that make it **UNSAFE FOR USE**.
|
|
25
|
+
|
|
26
|
+
### Risk Summary:
|
|
27
|
+
|
|
28
|
+
| Category | Risk Level |
|
|
29
|
+
|----------|-----------|
|
|
30
|
+
| Reward Calculation | 🔴 CRITICAL |
|
|
31
|
+
| Weight Tracking | 🔴 CRITICAL |
|
|
32
|
+
| Code Quality | 🔴 CRITICAL (unverified) |
|
|
33
|
+
| Combined with Token | 🔴 EXTREME |
|
|
34
|
+
|
|
35
|
+
### Final Verdict:
|
|
36
|
+
|
|
37
|
+
**DO NOT USE** - The contract has critical bugs that allow:
|
|
38
|
+
1. Draining the entireperiod to end
|
|
39
|
+
4. Calls claimRewards()
|
|
40
|
+
5. Due to bug, receives rewards based on inflated weight
|
|
41
|
+
6. Drains 80-90% of reward pool
|
|
42
|
+
7. Other stakers get nothing
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
**Estimated Profit**: 80-90% of reward pool
|
|
46
|
+
**Difficulty**: Easy
|
|
47
|
+
**Status**: Exploitable NOW
|
|
48
|
+
|
|
49
|
+
### Scenario 2: Weight Manipulation
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
1. Attacker creates multiple stakes
|
|
53
|
+
2. Unstakes them strategically
|
|
54
|
+
3. Weight tracking becomes corrupted
|
|
55
|
+
4. Attacker's remaining stakes have inflated weight
|
|
56
|
+
5. Claims disproportionate rewards
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
**Estimated Profit**: 2-5Reward calculation bug allows draining pool
|
|
60
|
+
2. 🔴 Weight tracking is broken
|
|
61
|
+
3. 🔴 Combined with 60% sell tax on DSync token
|
|
62
|
+
4. 🔴 Unverified contract
|
|
63
|
+
5. 🔴 No emergency mechanisms
|
|
64
|
+
|
|
65
|
+
**If you have already staked**:
|
|
66
|
+
- Unstake immediately (accept the penalty)
|
|
67
|
+
- Do NOT claim rewards (may fail or be incorrect)
|
|
68
|
+
- Exit the ecosystem entirely
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## 🎯 Exploit Scenarios
|
|
73
|
+
|
|
74
|
+
### Scenario 1: Reward Pool Drain
|
|
75
|
+
|
|
76
|
+
```
|
|
77
|
+
1. Attacker stakes large amount (e.g., 10M DSync)
|
|
78
|
+
2. Chooses 360-day lock (4x weight)
|
|
79
|
+
3. Waits for reward L
|
|
80
|
+
- Correct the add/subtract logic in unstake()
|
|
81
|
+
- Current logic corrupts weight tracking
|
|
82
|
+
|
|
83
|
+
3. **VERIFY CONTRACT ON ETHERSCAN** 🔴 CRITICAL
|
|
84
|
+
- Users cannot audit unverified contracts
|
|
85
|
+
- Transparency is essential for trust
|
|
86
|
+
|
|
87
|
+
4. **ADD MAXIMUM STAKE LIMITS** 🟠 HIGH
|
|
88
|
+
- Prevent whale domination
|
|
89
|
+
- Ensure fair reward distribution
|
|
90
|
+
|
|
91
|
+
5. **IMPROVE PARAMETER NAMING** 🟠 HIGH
|
|
92
|
+
- Rename confusing parameters
|
|
93
|
+
- Reduce user error risk
|
|
94
|
+
|
|
95
|
+
### For Users:
|
|
96
|
+
|
|
97
|
+
⚠️ **EXTREME RISK** - Do NOT use this staking contract:
|
|
98
|
+
|
|
99
|
+
1. 🔴 Component | Individual Risk | Combined Risk |
|
|
100
|
+
|-----------|----------------|---------------|
|
|
101
|
+
| DSync Token | 🔴 HIGH (60% sell tax) | 🔴 CRITICAL |
|
|
102
|
+
| Staking Contract | 🔴 CRITICAL (reward bug) | 🔴 CRITICAL |
|
|
103
|
+
| **Overall System** | - | 🔴 **EXTREME RISK** |
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
## 🚨 CRITICAL RECOMMENDATIONS
|
|
108
|
+
|
|
109
|
+
### Immediate Actions Required:
|
|
110
|
+
|
|
111
|
+
1. **FIX REWARD CALCULATION BUG** 🔴 CRITICAL
|
|
112
|
+
- Separate weight accumulation from loop counter
|
|
113
|
+
- This bug allows draining the entire reward pool
|
|
114
|
+
|
|
115
|
+
2. **FIX WEIGHT UPDATE LOGIC** 🔴 CRITICAity**
|
|
116
|
+
|
|
117
|
+
The decompiled code uses generic variable names (v0, v1, etc.) making it hard to audit. Original source code should be verified on Etherscan.
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## 📊 Connection to DSync Token
|
|
122
|
+
|
|
123
|
+
**YES - This is the official DSync staking contract**
|
|
124
|
+
|
|
125
|
+
Evidence:
|
|
126
|
+
1. Token address: `0xf94e7d0710709388bce3161c32b4eea56d3f91cc` (DSync)
|
|
127
|
+
2. Penalties sent to dead address (consistent with burn mechanism)
|
|
128
|
+
3. Lock periods match typical staking contracts
|
|
129
|
+
4. Reward mechanism uses ETH (not DSync tokens)
|
|
130
|
+
|
|
131
|
+
**Combined Risk Assessment**:
|
|
132
|
+
|
|
133
|
+
|iods.
|
|
134
|
+
|
|
135
|
+
**Gas Cost**: Could exceed block gas limit for users with 10+ stakes.
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## 🔵 LOW & INFORMATIONAL
|
|
140
|
+
|
|
141
|
+
### [60] 🔵 **LOW: No Events for Critical Actions**
|
|
142
|
+
|
|
143
|
+
Missing events:
|
|
144
|
+
- `setEligibilityThreshold()` - Has event but not standard
|
|
145
|
+
- Weight updates - Has events but could be more detailed
|
|
146
|
+
|
|
147
|
+
### [55] 🔵 **LOW: Hardcoded Token Address**
|
|
148
|
+
|
|
149
|
+
Token address is hardcoded: `0xf94e7d0710709388bce3161c32b4eea56d3f91cc`
|
|
150
|
+
|
|
151
|
+
This makes the contract inflexible and non-upgradeable.
|
|
152
|
+
|
|
153
|
+
### [50] 🔵 **INFO: Decompiled Code Qual*MEDIUM: No Emergency Withdrawal**
|
|
154
|
+
|
|
155
|
+
**Description**:
|
|
156
|
+
If there's a critical bug, users have no way to emergency withdraw their stakes without waiting for the lock period or paying penalties.
|
|
157
|
+
|
|
158
|
+
**Recommendation**: Add emergency withdrawal function (owner-controlled with timelock).
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
### [70] 🟡 **MEDIUM: Weight Calculation Complexity**
|
|
163
|
+
|
|
164
|
+
**Description**:
|
|
165
|
+
The weight calculation loops through ALL future periods and updates weights. This is gas-intensive and could fail for users with many stakes or long lock perds, which could cause issues.
|
|
166
|
+
|
|
167
|
+
```solidity
|
|
168
|
+
function 0x1003() private {
|
|
169
|
+
if (block.timestamp < _rewardPeriods[_depositRewards].field2) {
|
|
170
|
+
return;
|
|
171
|
+
} else {
|
|
172
|
+
v0 = 0x166f(_depositRewards);
|
|
173
|
+
_depositRewards = v0;
|
|
174
|
+
// ...
|
|
175
|
+
_rewardPeriods[_depositRewards].field0 = 0; // ⚠️ 0 rewards
|
|
176
|
+
// ...
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
**Issue**:
|
|
182
|
+
- New period starts with 0 rewards
|
|
183
|
+
- If owner doesn't deposit immediately, period is wasted
|
|
184
|
+
- Users may stake expecting rewards but get none
|
|
185
|
+
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
### [72] 🟡 *ys)
|
|
189
|
+
2. Owner changes threshold to 1,728,000 seconds (20 days)
|
|
190
|
+
3. User's stake is no longer eligible for rewards
|
|
191
|
+
4. User loses expected rewards
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
**Recommendation**: Threshold should only apply to new stakes, not existing ones.
|
|
195
|
+
|
|
196
|
+
---
|
|
197
|
+
|
|
198
|
+
## 🟡 MEDIUM SEVERITY FINDINGS
|
|
199
|
+
|
|
200
|
+
### [75] 🟡 **MEDIUM: Reward Period Auto-Increment Logic**
|
|
201
|
+
|
|
202
|
+
**Location**: `0x1003()` function
|
|
203
|
+
|
|
204
|
+
**Description**:
|
|
205
|
+
The function automatically creates new reward periods when the current one ends. However, it initializes the new period with 0 rewarligibilityThreshold()` function
|
|
206
|
+
|
|
207
|
+
**Description**:
|
|
208
|
+
Owner can change the eligibility threshold at any time. Users who staked when threshold was low may become ineligible if threshold is raised.
|
|
209
|
+
|
|
210
|
+
```solidity
|
|
211
|
+
function setEligibilityThreshold(uint256 varg0) public nonPayable {
|
|
212
|
+
require(msg.sender == _owner);
|
|
213
|
+
require(varg0 >= 0x69780 && varg0 <= 0x1a5e00); // 432,000 to 1,728,000 seconds
|
|
214
|
+
_eligibilityThreshold = varg0;
|
|
215
|
+
}
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
**Attack Scenario**:
|
|
219
|
+
```
|
|
220
|
+
1. User stakes with threshold = 432,000 seconds (5 da`.
|
|
221
|
+
|
|
222
|
+
---
|
|
223
|
+
|
|
224
|
+
### [82] 🟠 **HIGH: No Maximum Stake Limit**
|
|
225
|
+
|
|
226
|
+
**Location**: `stake()` function
|
|
227
|
+
|
|
228
|
+
**Description**:
|
|
229
|
+
There's no limit on how much a single user can stake. A whale could stake the entire supply and dominate all rewards.
|
|
230
|
+
|
|
231
|
+
**Impact**:
|
|
232
|
+
- Centralization of rewards
|
|
233
|
+
- Small stakers get negligible rewards
|
|
234
|
+
- Whale can manipulate reward distribution
|
|
235
|
+
|
|
236
|
+
**Recommendation**: Add maximum stake per user (e.g., 1% of total supply).
|
|
237
|
+
|
|
238
|
+
---
|
|
239
|
+
|
|
240
|
+
### [80] 🟠 **HIGH: Eligibility Threshold Can Lock Users Out**
|
|
241
|
+
|
|
242
|
+
**Location**: `setEakeValue) public nonPayable {
|
|
243
|
+
// _poolId is actually the AMOUNT
|
|
244
|
+
// _stakeValue is actually the LOCK PERIOD
|
|
245
|
+
|
|
246
|
+
require(_poolId > 0, Error('Cannot stake 0 amount')); // Confirms _poolId is amount
|
|
247
|
+
|
|
248
|
+
// Transfer tokens
|
|
249
|
+
transferFrom(msg.sender, address(this), _poolId); // Using _poolId as amount
|
|
250
|
+
}
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
**Impact**:
|
|
254
|
+
- Users may call function incorrectly
|
|
255
|
+
- Front-end developers may implement wrong
|
|
256
|
+
- High risk of user error
|
|
257
|
+
|
|
258
|
+
**Recommendation**: Rename parameters to `_amount` and `_lockPeriodn is still risky
|
|
259
|
+
|
|
260
|
+
**Recommendation**: Move external call to the very end, after all state changes.
|
|
261
|
+
|
|
262
|
+
---
|
|
263
|
+
|
|
264
|
+
## 🟠 HIGH SEVERITY FINDINGS
|
|
265
|
+
|
|
266
|
+
### [85] 🟠 **HIGH: Confusing Parameter Names in stake()**
|
|
267
|
+
|
|
268
|
+
**Location**: `stake()` function
|
|
269
|
+
|
|
270
|
+
**Description**:
|
|
271
|
+
The parameters are named `_poolId` and `_stakeValue` but they actually represent:
|
|
272
|
+
- `_poolId` = Amount of tokens to stake
|
|
273
|
+
- `_stakeValue` = Lock-in period in seconds
|
|
274
|
+
|
|
275
|
+
This is extremely confusing and error-prone.
|
|
276
|
+
|
|
277
|
+
```solidity
|
|
278
|
+
function stake(uint256 _poolId, uint256 _stotalWeights[varg0] = v17;
|
|
279
|
+
_hasClaimed[msg.sender][varg0] = 1; // ⚠️ Set BEFORE external call
|
|
280
|
+
|
|
281
|
+
// External call
|
|
282
|
+
v18, v19 = msg.sender.call().value(v15).gas(msg.gas); // ⚠️ External call
|
|
283
|
+
require(v18, Error('ETH transfer failed'));
|
|
284
|
+
|
|
285
|
+
emit RewardClaimed(msg.sender, varg0, v15);
|
|
286
|
+
stor_1 = 1; // Reset reentrancy guard
|
|
287
|
+
}
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
**Issue**:
|
|
291
|
+
- `_hasClaimed` is set to 1 before the external call
|
|
292
|
+
- If the call fails, the state is already changed
|
|
293
|
+
- Reentrancy guard provides protection, but patter*Description**:
|
|
294
|
+
The function sends ETH to `msg.sender` using `.call()` BEFORE updating the `_hasClaimed` mapping. While there's a reentrancy guard (`0xfd9()`), the state updates happen after the external call.
|
|
295
|
+
|
|
296
|
+
```solidity
|
|
297
|
+
function claimRewards(uint256 varg0) public nonPayable {
|
|
298
|
+
0xfd9(); // Reentrancy guard
|
|
299
|
+
// ... calculations ...
|
|
300
|
+
|
|
301
|
+
// State changes
|
|
302
|
+
v16 = _SafeSub(_rewardPeriods[varg0].field0, v15);
|
|
303
|
+
_rewardPeriods[varg0].field0 = v16;
|
|
304
|
+
v17 = _SafeSub(_totalWeights[varg0], v0);
|
|
305
|
+
_td cause funds to go to wrong period
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
**Recommendation**:
|
|
309
|
+
```diff
|
|
310
|
+
function depositRewards(uint256 _amount) public payable {
|
|
311
|
+
require(msg.sender == _owner);
|
|
312
|
+
+ require(_amount == _depositRewards, Error('Invalid reward period'));
|
|
313
|
+
require(msg.value > 0, Error('No ETH deposited'));
|
|
314
|
+
0x1003();
|
|
315
|
+
- require(_amount == _depositRewards, Error('Invalid reward period'));
|
|
316
|
+
// ...
|
|
317
|
+
}
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
---
|
|
321
|
+
|
|
322
|
+
### [88] 🔴 **HIGH: Reentrancy Risk in claimRewards()**
|
|
323
|
+
|
|
324
|
+
**Location**: `claimRewards()` function
|
|
325
|
+
|
|
326
|
+
*owner, OwnableUnauthorizedAccount(msg.sender));
|
|
327
|
+
0x1003(); // May increment _depositRewards
|
|
328
|
+
require(msg.value > 0, Error('No ETH deposited'));
|
|
329
|
+
require(_amount == _depositRewards, Error('Invalid reward period')); // ⚠️ Check after modification
|
|
330
|
+
// ...
|
|
331
|
+
}
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
**Attack Scenario**:
|
|
335
|
+
```
|
|
336
|
+
1. Owner calls depositRewards(5) with 10 ETH
|
|
337
|
+
2. 0x1003() increments _depositRewards from 5 to 6
|
|
338
|
+
3. Check fails: 5 != 6
|
|
339
|
+
4. Transaction reverts
|
|
340
|
+
5. Owner must call again with depositRewards(6)
|
|
341
|
+
6. But timing issues coul: Redistribute penalties to reward pool or burn properly.
|
|
342
|
+
|
|
343
|
+
---
|
|
344
|
+
|
|
345
|
+
### [90] 🔴 **HIGH: No Validation of Reward Period in depositRewards()**
|
|
346
|
+
|
|
347
|
+
**Location**: `depositRewards()` function
|
|
348
|
+
|
|
349
|
+
**Description**:
|
|
350
|
+
The function requires `_amount == _depositRewards` but this check is AFTER the owner check and AFTER calling `0x1003()` which may modify `_depositRewards`. This could lead to rewards being deposited to wrong period.
|
|
351
|
+
|
|
352
|
+
```solidity
|
|
353
|
+
function depositRewards(uint256 _amount) public payable {
|
|
354
|
+
require(msg.sender == _is wasteful and reduces circulating supply unnecessarily.
|
|
355
|
+
|
|
356
|
+
```solidity
|
|
357
|
+
if (v24) { // If there's a penalty
|
|
358
|
+
MEM[MEM[64] + 36] = address(0xdead); // ⚠️ Send to dead address
|
|
359
|
+
MEM[MEM[64] + 68] = v24;
|
|
360
|
+
0x1310(100 + MEM[64], 0xa9059cbb,
|
|
361
|
+
address(0xf94e7d0710709388bce3161c32b4eea56d3f91cc),
|
|
362
|
+
address(0xf94e7d0710709388bce3161c32b4eea56d3f91cc));
|
|
363
|
+
}
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
**Issues**:
|
|
367
|
+
- Penalty tokens are permanently lost
|
|
368
|
+
- Could be redistributed to stakers instead
|
|
369
|
+
- Reduces token utility
|
|
370
|
+
|
|
371
|
+
**Recommendation**
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
v10 = 0x166f(v10);
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
```
|
|
378
|
+
|
|
379
|
+
**Impact**:
|
|
380
|
+
- Weights are always subtracted, never added
|
|
381
|
+
- Total weights become incorrect
|
|
382
|
+
- Reward calculations become wrong
|
|
383
|
+
- Users may receive more or less rewards than deserved
|
|
384
|
+
|
|
385
|
+
---
|
|
386
|
+
|
|
387
|
+
### [92] 🔴 **CRITICAL: Early Withdrawal Penalty Sent to Dead Address**
|
|
388
|
+
|
|
389
|
+
**Location**: `unstake()` function
|
|
390
|
+
|
|
391
|
+
**Description**:
|
|
392
|
+
When users unstake early, the penalty is sent to the DEAD address (0x000...dEaD) instead of being redistributed or burned properly. This 0; // Always true
|
|
393
|
+
if (!False) {
|
|
394
|
+
v13 = v15 = block.timestamp >= v12;
|
|
395
|
+
}
|
|
396
|
+
if (!v13) {
|
|
397
|
+
// ... eligibility checks ...
|
|
398
|
+
if (v17) {
|
|
399
|
+
if (!0) { // ⚠️ Always true - wrong branch!
|
|
400
|
+
v22 = _SafeSub(_totalWeights[v10], v6);
|
|
401
|
+
_totalWeights[v10] = v22;
|
|
402
|
+
} else { // Never executed
|
|
403
|
+
v23 = _SafeAdd(_totalWeights[v10], v6);
|
|
404
|
+
_totalWeights[v10] = v23;
|
|
405
|
+
}L: Weight Manipulation in Unstake - Double Counting**
|
|
406
|
+
|
|
407
|
+
**Location**: `unstake()` function
|
|
408
|
+
|
|
409
|
+
**Description**:
|
|
410
|
+
The unstake function updates weights for ALL periods in a range, but the logic for adding/subtracting weights is inverted. The condition `if (!0)` always evaluates to true, causing weights to be SUBTRACTED when they should be added.
|
|
411
|
+
|
|
412
|
+
```solidity
|
|
413
|
+
function unstake(uint256 _amount) public nonPayable {
|
|
414
|
+
// ...
|
|
415
|
+
while (v10 <= v9) {
|
|
416
|
+
v12 = 0x1401(v10); // Get period end time
|
|
417
|
+
v13 = v14 = ! v0 = _SafeAdd(v0, v13); // BUG
|
|
418
|
+
+ totalUserWeight = _SafeAdd(totalUserWeight, v13); // FIX
|
|
419
|
+
}
|
|
420
|
+
v0 += 1;
|
|
421
|
+
}
|
|
422
|
+
- require(v0 > 0, Error('No eligible stakes for rewards'));
|
|
423
|
+
+ require(totalUserWeight > 0, Error('No eligible stakes for rewards'));
|
|
424
|
+
// ...
|
|
425
|
+
- v14 = _SafeMul(_rewardPeriods[varg0].field0, v0);
|
|
426
|
+
+ v14 = _SafeMul(_rewardPeriods[varg0].field0, totalUserWeight);
|
|
427
|
+
v15 = _SafeDiv(v14, _totalWeights[varg0]);
|
|
428
|
+
}
|
|
429
|
+
```
|
|
430
|
+
|
|
431
|
+
---
|
|
432
|
+
|
|
433
|
+
### [95] 🔴 **CRITICAcalculation
|
|
434
|
+
claimRewards(periodId);
|
|
435
|
+
|
|
436
|
+
// Result: Attacker drains most/all of the reward pool
|
|
437
|
+
```
|
|
438
|
+
|
|
439
|
+
**Recommendation**:
|
|
440
|
+
```diff
|
|
441
|
+
function claimRewards(uint256 varg0) public nonPayable {
|
|
442
|
+
// ...
|
|
443
|
+
v0 = v1 = 0;
|
|
444
|
+
+ uint256 totalUserWeight = 0;
|
|
445
|
+
while (v0 < _userStakes[msg.sender].length) {
|
|
446
|
+
// ... eligibility checks ...
|
|
447
|
+
if (eligible) {
|
|
448
|
+
v13 = _SafeMul(_userStakes[msg.sender][v0].field0, uint8(v8));
|
|
449
|
+
- : v0 = 0 + 4,000,000 + 1 = 4,000,001
|
|
450
|
+
- Loop exits
|
|
451
|
+
|
|
452
|
+
Reward = (totalRewards * 4,000,001) / totalWeights
|
|
453
|
+
|
|
454
|
+
This is MUCH higher than intended!
|
|
455
|
+
```
|
|
456
|
+
|
|
457
|
+
**Impact**:
|
|
458
|
+
- Users can claim rewards far exceeding their fair share
|
|
459
|
+
- Contract can be drained of all ETH rewards
|
|
460
|
+
- First claimers get disproportionate rewards
|
|
461
|
+
|
|
462
|
+
**Proof of Concept**:
|
|
463
|
+
```solidity
|
|
464
|
+
// Attacker stakes 1,000,000 tokens for 360 days
|
|
465
|
+
stake(1000000e18, 360 days);
|
|
466
|
+
|
|
467
|
+
// Wait for reward period to end
|
|
468
|
+
// Claim rewards - will receive 4,000,000x weight instead of proper ough stakes
|
|
469
|
+
- Weight is ADDED to `v0`: `v0 = _SafeAdd(v0, v13)`
|
|
470
|
+
- Then `v0` is incremented by 1: `v0 += 1`
|
|
471
|
+
- Result: `v0` becomes the sum of all weights, not the count
|
|
472
|
+
|
|
473
|
+
**Attack Scenario**:
|
|
474
|
+
```
|
|
475
|
+
User has 2 stakes:
|
|
476
|
+
- Stake 1: 1,000,000 tokens, 360 days (weight = 4x = 4,000,000)
|
|
477
|
+
- Stake 2: 1,000,000 tokens, 360 days (weight = 4x = 4,000,000)
|
|
478
|
+
|
|
479
|
+
Loop iteration:
|
|
480
|
+
- i=0: v0 = 0 + 4,000,000 + 1 = 4,000,001
|
|
481
|
+
- i=1: Loop exits (4,000,001 >= 2)
|
|
482
|
+
|
|
483
|
+
Final v0 = 4,000,001 (should be 8,000,000)
|
|
484
|
+
|
|
485
|
+
But if user has only 1 stake:
|
|
486
|
+
- i=0< _userStakes[msg.sender].length) {
|
|
487
|
+
// ... eligibility checks ...
|
|
488
|
+
if (eligible) {
|
|
489
|
+
// Calculate weight
|
|
490
|
+
v13 = _SafeMul(_userStakes[msg.sender][v0].field0, uint8(v8));
|
|
491
|
+
v0 = _SafeAdd(v0, v13); // ⚠️ BUG: Adding weight to loop counter!
|
|
492
|
+
}
|
|
493
|
+
v0 += 1; // Also incrementing by 1
|
|
494
|
+
}
|
|
495
|
+
// v0 now contains inflated value
|
|
496
|
+
v15 = _SafeDiv(v14, _totalWeights[varg0]); // Reward calculation
|
|
497
|
+
}
|
|
498
|
+
```
|
|
499
|
+
|
|
500
|
+
**The Bug**:
|
|
501
|
+
- Loop counter `v0` is used to iterate thrAL VULNERABILITIES
|
|
502
|
+
|
|
503
|
+
### [98] 🔴 **CRITICAL: Reward Calculation Overflow - Infinite Rewards Exploit**
|
|
504
|
+
|
|
505
|
+
**Location**: `claimRewards()` function
|
|
506
|
+
|
|
507
|
+
**Description**:
|
|
508
|
+
The reward calculation has a critical bug where user weights are ADDED to the loop counter instead of being accumulated separately. This causes the loop to iterate incorrectly and can lead to massive reward inflation.
|
|
509
|
+
|
|
510
|
+
```solidity
|
|
511
|
+
function claimRewards(uint256 varg0) public nonPayable {
|
|
512
|
+
// ...
|
|
513
|
+
v0 = v1 = 0; // Initialize counter
|
|
514
|
+
while (v0 TICAL**
|
|
515
|
+
|
|
516
|
+
---
|
|
517
|
+
|
|
518
|
+
## 🚨 CRITICbe incomplete or inaccurate. The contract handles user funds and ETH rewards.
|
|
519
|
+
|
|
520
|
+
**Connection to DSync Token**: YES - This is the staking contract for the DSync token (0xf94e7d0710709388bce3161c32b4eea56d3f91cc) which has a 60% sell tax.
|
|
521
|
+
|
|
522
|
+
---
|
|
523
|
+
|
|
524
|
+
## Executive Summary
|
|
525
|
+
|
|
526
|
+
The DSync staking contract allows users to stake DSync tokens for various lock periods (30, 90, 180, 360 days) and earn ETH rewards. The contract has several **CRITICAL vulnerabilities** that could lead to loss of user funds.
|
|
527
|
+
|
|
528
|
+
**Overall Risk**: 🔴 **CRId3f91cc |
|
|
529
|
+
| **Compiler Version** | Solidity 0.8.28 |
|
|
530
|
+
| **Analysis Type** | Decompiled Bytecode Analysis |
|
|
531
|
+
| **Audit Date** | March 24, 2026 |
|
|
532
|
+
| **Confidence Threshold** | 85 (decompiled code) |
|
|
533
|
+
|
|
534
|
+
---
|
|
535
|
+
|
|
536
|
+
## ⚠️ CRITICAL WARNING
|
|
537
|
+
|
|
538
|
+
This contract is **UNVERIFIED** on Etherscan. Analysis is based on decompiled bytecode which may | |
|
|
539
|
+
| -------------------------------- | ------------------------------------------------------ |
|
|
540
|
+
| **Contract Type** | Staking Contract (Decompiled) |
|
|
541
|
+
| **Token** | DSync - 0xf94e7d0710709388bce3161c32b4eea56— DSync Staking Contract (Decompiled)
|
|
542
|
+
|
|
543
|
+
---
|
|
544
|
+
|
|
545
|
+
## Scope
|
|
546
|
+
|
|
547
|
+
| # 🔐 Security Audit
|