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,705 @@
|
|
|
1
|
+
# 🔐 Security Audit — Destra Network (DSync) Token
|
|
2
|
+
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
## Scope
|
|
6
|
+
|
|
7
|
+
| | |
|
|
8
|
+
| -------------------------------- | ------------------------------------------------------ |
|
|
9
|
+
| **Contract Name** | DestraNetwork |
|
|
10
|
+
| **Token Symbol** | DSync |
|
|
11
|
+
| **Compiler Version** | Solidity 0.8.17 |
|
|
12
|
+
| **Contract Type** | ERC20 Token with Trading Controls & Fee Mechanism |
|
|
13
|
+
| **Audit Date** | March 24, 2026 |
|
|
14
|
+
| **Confidence Threshold (1-100)** | 95 |
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Executive Summary
|
|
19
|
+
|
|
20
|
+
The Destra Network token is a standard ERC20 token with additional features including:
|
|
21
|
+
- Trading controls and launch mechanism
|
|
22
|
+
- Buy/sell transaction limits
|
|
23
|
+
- Wallet size limits
|
|
24
|
+
- Fee-on-transfer mechanism (5% buy, 60% sell)
|
|
25
|
+
- Blacklist functionality
|
|
26
|
+
- Team-controlled functions
|
|
27
|
+
|
|
28
|
+
**Overall Risk**: 🟠 **MEDIUM-HIGH**
|
|
29
|
+
|
|
30
|
+
The contract contains several **centralization risks** and **potential rug pull mechanisms** that give excessive power to the owner and team members.
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## 🚨 CRITICAL & HIGH SEVERITY FINDINGS
|
|
35
|
+
|
|
36
|
+
### [95] 🔴 **CRITICAL: Extreme Sell Tax (60%) - Potential Rug Pull**
|
|
37
|
+
|
|
38
|
+
**Location**: `marketingSellFee = 6000` (line ~220)
|
|
39
|
+
|
|
40
|
+
**Description**:
|
|
41
|
+
The contract has a **60% sell tax** which is extremely high and creates a significant barrier to exit. This is a common rug pull pattern where:
|
|
42
|
+
1. Users can buy with low tax (5%)
|
|
43
|
+
2. Users cannot profitably sell due to 60% tax
|
|
44
|
+
3. Team can change fees or extract value
|
|
45
|
+
|
|
46
|
+
```solidity
|
|
47
|
+
uint256 marketingBuyFee = 500; // 5% buy fee
|
|
48
|
+
uint256 marketingSellFee = 6000; // 60% sell fee ⚠️ EXTREME
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
**Impact**:
|
|
52
|
+
- Users lose 60% of value when selling
|
|
53
|
+
- Creates one-way liquidity trap
|
|
54
|
+
- Team can accumulate fees and rug pull
|
|
55
|
+
- Similar to honeypot mechanism
|
|
56
|
+
|
|
57
|
+
**Proof of Concept**:
|
|
58
|
+
```solidity
|
|
59
|
+
// User buys 100 tokens, pays 5% fee = 95 tokens received
|
|
60
|
+
// User tries to sell 95 tokens, pays 60% fee = 38 tokens received
|
|
61
|
+
// Net loss: 62% of original investment
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
**Recommendation**:
|
|
65
|
+
```diff
|
|
66
|
+
- uint256 marketingSellFee = 6000; // 60%
|
|
67
|
+
+ uint256 marketingSellFee = 500; // 5% (match buy fee)
|
|
68
|
+
+
|
|
69
|
+
+ // Add maximum fee limit
|
|
70
|
+
+ function setFees(...) external onlyOwner {
|
|
71
|
+
+ require(totalBuyFee <= 1000, "Buy fee too high"); // Max 10%
|
|
72
|
+
+ require(totalSellFee <= 1000, "Sell fee too high"); // Max 10%
|
|
73
|
+
+ ...
|
|
74
|
+
+ }
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
### [92] 🔴 **CRITICAL: Unlimited Blacklist Power - Funds Can Be Frozen**
|
|
80
|
+
|
|
81
|
+
**Location**: `blacklistWallets()` function (line ~380)
|
|
82
|
+
|
|
83
|
+
**Description**:
|
|
84
|
+
Team members can blacklist ANY wallet at ANY time with NO restrictions. Blacklisted wallets cannot transfer tokens, effectively freezing their funds permanently.
|
|
85
|
+
|
|
86
|
+
```solidity
|
|
87
|
+
function blacklistWallets(address[] calldata _wallets, bool _blacklist) external onlyTeam {
|
|
88
|
+
for (uint i = 0; i < _wallets.length; i++) {
|
|
89
|
+
if (_blacklist) {
|
|
90
|
+
blacklistCount++;
|
|
91
|
+
emit WalletBlacklisted(tx.origin, _wallets[i], block.number);
|
|
92
|
+
} else {
|
|
93
|
+
if (blacklist[_wallets[i]] != 0) blacklistCount--;
|
|
94
|
+
}
|
|
95
|
+
blacklist[_wallets[i]] = _blacklist ? block.number : 0;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
// In checkTxLimit:
|
|
100
|
+
require(blacklist[sender] == 0, "Wallet blacklisted!");
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
**Attack Scenario**:
|
|
104
|
+
1. User buys tokens
|
|
105
|
+
2. Team blacklists user's wallet
|
|
106
|
+
3. User cannot sell or transfer tokens
|
|
107
|
+
4. Funds permanently frozen
|
|
108
|
+
|
|
109
|
+
**Impact**:
|
|
110
|
+
- Complete loss of funds for blacklisted users
|
|
111
|
+
- No timelock or governance
|
|
112
|
+
- No appeal mechanism
|
|
113
|
+
- Can be used to prevent selling
|
|
114
|
+
|
|
115
|
+
**Recommendation**:
|
|
116
|
+
```diff
|
|
117
|
+
+ // Add timelock for blacklisting
|
|
118
|
+
+ mapping(address => uint256) public blacklistProposal;
|
|
119
|
+
+ uint256 constant BLACKLIST_DELAY = 24 hours;
|
|
120
|
+
+
|
|
121
|
+
function blacklistWallets(address[] calldata _wallets, bool _blacklist) external onlyTeam {
|
|
122
|
+
+ require(_wallets.length <= 10, "Too many wallets");
|
|
123
|
+
for (uint i = 0; i < _wallets.length; i++) {
|
|
124
|
+
+ // Require timelock
|
|
125
|
+
+ if (_blacklist) {
|
|
126
|
+
+ require(block.timestamp >= blacklistProposal[_wallets[i]] + BLACKLIST_DELAY, "Timelock");
|
|
127
|
+
+ }
|
|
128
|
+
...
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
+
|
|
132
|
+
+ function proposeBlacklist(address wallet) external onlyTeam {
|
|
133
|
+
+ blacklistProposal[wallet] = block.timestamp;
|
|
134
|
+
+ }
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
### [90] 🔴 **HIGH: Centralized Fee Control - Can Be Changed to 100%**
|
|
140
|
+
|
|
141
|
+
**Location**: `setFees()` function (line ~560)
|
|
142
|
+
|
|
143
|
+
**Description**:
|
|
144
|
+
Owner can change fees to ANY value at ANY time with NO maximum limits (except liquidity fee parity check). This allows setting fees to 100%, effectively preventing all trading.
|
|
145
|
+
|
|
146
|
+
```solidity
|
|
147
|
+
function setFees(
|
|
148
|
+
uint256 _liquidityBuyFee,
|
|
149
|
+
uint256 _liquiditySellFee,
|
|
150
|
+
uint256 _marketingBuyFee,
|
|
151
|
+
uint256 _marketingSellFee,
|
|
152
|
+
uint256 _feeDenominator
|
|
153
|
+
) external onlyOwner {
|
|
154
|
+
// Only checks liquidity fee is even, NO maximum fee check
|
|
155
|
+
require(((_liquidityBuyFee + _liquiditySellFee) / 2) * 2 == (_liquidityBuyFee + _liquiditySellFee),
|
|
156
|
+
"Liquidity fee must be an even number for rounding compatibility.");
|
|
157
|
+
|
|
158
|
+
liquidityBuyFee = _liquidityBuyFee;
|
|
159
|
+
liquiditySellFee = _liquiditySellFee;
|
|
160
|
+
marketingBuyFee = _marketingBuyFee;
|
|
161
|
+
marketingSellFee = _marketingSellFee;
|
|
162
|
+
totalBuyFee = _liquidityBuyFee + _marketingBuyFee;
|
|
163
|
+
totalSellFee = _liquiditySellFee + _marketingSellFee;
|
|
164
|
+
feeDenominator = _feeDenominator;
|
|
165
|
+
}
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
**Attack Scenario**:
|
|
169
|
+
```solidity
|
|
170
|
+
// Owner calls:
|
|
171
|
+
setFees(0, 0, 10000, 10000, 10000);
|
|
172
|
+
// Result: 100% buy and sell fees
|
|
173
|
+
// All trades now take 100% fee, tokens become untradeable
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
**Impact**:
|
|
177
|
+
- Can make token untradeable
|
|
178
|
+
- Can trap users by setting 100% fees
|
|
179
|
+
- No protection for holders
|
|
180
|
+
|
|
181
|
+
**Recommendation**:
|
|
182
|
+
```diff
|
|
183
|
+
function setFees(...) external onlyOwner {
|
|
184
|
+
+ // Add maximum fee limits
|
|
185
|
+
+ require(_liquidityBuyFee + _marketingBuyFee <= 1000, "Buy fee > 10%");
|
|
186
|
+
+ require(_liquiditySellFee + _marketingSellFee <= 1000, "Sell fee > 10%");
|
|
187
|
+
+ require(_feeDenominator >= 100, "Denominator too small");
|
|
188
|
+
...
|
|
189
|
+
}
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
### [88] 🔴 **HIGH: Team Can Drain Contract ETH**
|
|
195
|
+
|
|
196
|
+
**Location**: `clearStuckBalance()` function (line ~370)
|
|
197
|
+
|
|
198
|
+
**Description**:
|
|
199
|
+
Team members can withdraw ANY percentage of contract ETH to ANY address with NO restrictions. This includes ETH from fees that should go to marketing/liquidity.
|
|
200
|
+
|
|
201
|
+
```solidity
|
|
202
|
+
function clearStuckBalance(uint256 amountPercentage, address adr) external onlyTeam {
|
|
203
|
+
uint256 amountETH = address(this).balance;
|
|
204
|
+
if (amountETH > 0) {
|
|
205
|
+
(bool sent, ) = adr.call{value: (amountETH * amountPercentage) / 100}("");
|
|
206
|
+
require(sent, "Failed to transfer funds");
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
**Attack Scenario**:
|
|
212
|
+
1. Contract accumulates 100 ETH from fees
|
|
213
|
+
2. Team calls `clearStuckBalance(100, attackerAddress)`
|
|
214
|
+
3. All 100 ETH sent to attacker
|
|
215
|
+
4. Legitimate fee distribution bypassed
|
|
216
|
+
|
|
217
|
+
**Impact**:
|
|
218
|
+
- Complete loss of accumulated fees
|
|
219
|
+
- Marketing/liquidity funds stolen
|
|
220
|
+
- No accountability
|
|
221
|
+
|
|
222
|
+
**Recommendation**:
|
|
223
|
+
```diff
|
|
224
|
+
function clearStuckBalance(uint256 amountPercentage, address adr) external onlyTeam {
|
|
225
|
+
+ // Only allow withdrawing truly stuck tokens, not fee ETH
|
|
226
|
+
+ require(amountPercentage <= 10, "Max 10% at a time");
|
|
227
|
+
+ require(adr == marketingFeeReceiver || adr == liquidityFeeReceiver, "Invalid recipient");
|
|
228
|
+
uint256 amountETH = address(this).balance;
|
|
229
|
+
if (amountETH > 0) {
|
|
230
|
+
(bool sent, ) = adr.call{value: (amountETH * amountPercentage) / 100}("");
|
|
231
|
+
require(sent, "Failed to transfer funds");
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
---
|
|
237
|
+
|
|
238
|
+
### [85] 🟠 **HIGH: No Maximum Transaction Limit Enforcement**
|
|
239
|
+
|
|
240
|
+
**Location**: `setTxLimit()` function (line ~540)
|
|
241
|
+
|
|
242
|
+
**Description**:
|
|
243
|
+
Owner can set transaction limits to 0 or to 100% of supply, effectively disabling limits or making token untradeable.
|
|
244
|
+
|
|
245
|
+
```solidity
|
|
246
|
+
function setTxLimit(uint256 buyNumerator, uint256 sellNumerator, uint256 divisor) external onlyOwner {
|
|
247
|
+
require(buyNumerator > 0 && sellNumerator > 0 && divisor > 0 && divisor <= 10000);
|
|
248
|
+
_maxBuyTxAmount = (_totalSupply * buyNumerator) / divisor;
|
|
249
|
+
_maxSellTxAmount = (_totalSupply * sellNumerator) / divisor;
|
|
250
|
+
}
|
|
251
|
+
```
|
|
252
|
+
|
|
253
|
+
**Attack Scenario**:
|
|
254
|
+
```solidity
|
|
255
|
+
// Owner calls:
|
|
256
|
+
setTxLimit(1, 1, 10000);
|
|
257
|
+
// Result: Max buy = 0.01%, max sell = 0.01%
|
|
258
|
+
// Users can only trade 100,000 tokens at a time (0.01% of 1B supply)
|
|
259
|
+
// Effectively makes trading impossible for large holders
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
**Recommendation**:
|
|
263
|
+
```diff
|
|
264
|
+
function setTxLimit(uint256 buyNumerator, uint256 sellNumerator, uint256 divisor) external onlyOwner {
|
|
265
|
+
require(buyNumerator > 0 && sellNumerator > 0 && divisor > 0 && divisor <= 10000);
|
|
266
|
+
+ // Ensure minimum 0.1% transaction limit
|
|
267
|
+
+ require(buyNumerator * 1000 >= divisor, "Buy limit too low");
|
|
268
|
+
+ require(sellNumerator * 1000 >= divisor, "Sell limit too low");
|
|
269
|
+
_maxBuyTxAmount = (_totalSupply * buyNumerator) / divisor;
|
|
270
|
+
_maxSellTxAmount = (_totalSupply * sellNumerator) / divisor;
|
|
271
|
+
}
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
---
|
|
275
|
+
|
|
276
|
+
## 🟡 MEDIUM SEVERITY FINDINGS
|
|
277
|
+
|
|
278
|
+
### [80] 🟡 **MEDIUM: Reentrancy Risk in swapBack()**
|
|
279
|
+
|
|
280
|
+
**Location**: `swapBack()` function (line ~490)
|
|
281
|
+
|
|
282
|
+
**Description**:
|
|
283
|
+
The `swapBack()` function makes external calls to Uniswap router and fee receivers without following checks-effects-interactions pattern. While protected by `swapping` modifier, the pattern is still risky.
|
|
284
|
+
|
|
285
|
+
```solidity
|
|
286
|
+
function swapBack(uint256 amount) internal swapping {
|
|
287
|
+
// ... calculations ...
|
|
288
|
+
|
|
289
|
+
router.swapExactTokensForETHSupportingFeeOnTransferTokens(...); // External call
|
|
290
|
+
|
|
291
|
+
uint256 amountETH = address(this).balance - balanceBefore;
|
|
292
|
+
|
|
293
|
+
if (amountETHMarketing > 0) {
|
|
294
|
+
(bool sentMarketing, ) = marketingFeeReceiver.call{value: amountETHMarketing}(""); // External call
|
|
295
|
+
if (!sentMarketing) {
|
|
296
|
+
//Failed to transfer to marketing wallet
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
if (amountToLiquify > 0) {
|
|
301
|
+
router.addLiquidityETH{value: amountETHLiquidity}(...); // External call
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
swapBackCounter[block.number] = swapBackCounter[block.number] + 1; // State change AFTER external calls
|
|
305
|
+
}
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
**Issue**:
|
|
309
|
+
- State changes happen after external calls
|
|
310
|
+
- If `marketingFeeReceiver` is a malicious contract, it could attempt reentrancy
|
|
311
|
+
- `swapping` modifier provides protection, but pattern is still poor
|
|
312
|
+
|
|
313
|
+
**Recommendation**:
|
|
314
|
+
```diff
|
|
315
|
+
function swapBack(uint256 amount) internal swapping {
|
|
316
|
+
+ // Update state BEFORE external calls
|
|
317
|
+
+ swapBackCounter[block.number] = swapBackCounter[block.number] + 1;
|
|
318
|
+
+
|
|
319
|
+
// ... calculations ...
|
|
320
|
+
|
|
321
|
+
router.swapExactTokensForETHSupportingFeeOnTransferTokens(...);
|
|
322
|
+
|
|
323
|
+
// ... rest of function ...
|
|
324
|
+
-
|
|
325
|
+
- swapBackCounter[block.number] = swapBackCounter[block.number] + 1;
|
|
326
|
+
}
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
---
|
|
330
|
+
|
|
331
|
+
### [78] 🟡 **MEDIUM: Silent Failure in Marketing Fee Transfer**
|
|
332
|
+
|
|
333
|
+
**Location**: `swapBack()` function (line ~515)
|
|
334
|
+
|
|
335
|
+
**Description**:
|
|
336
|
+
If the marketing fee transfer fails, the function silently continues without reverting or emitting an event. This means fees could be lost.
|
|
337
|
+
|
|
338
|
+
```solidity
|
|
339
|
+
if (amountETHMarketing > 0) {
|
|
340
|
+
(bool sentMarketing, ) = marketingFeeReceiver.call{value: amountETHMarketing}("");
|
|
341
|
+
if (!sentMarketing) {
|
|
342
|
+
//Failed to transfer to marketing wallet
|
|
343
|
+
// ⚠️ No revert, no event, ETH stays in contract
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
**Impact**:
|
|
349
|
+
- Marketing fees accumulate in contract
|
|
350
|
+
- Team can later extract via `clearStuckBalance()`
|
|
351
|
+
- Lack of transparency
|
|
352
|
+
|
|
353
|
+
**Recommendation**:
|
|
354
|
+
```diff
|
|
355
|
+
if (amountETHMarketing > 0) {
|
|
356
|
+
(bool sentMarketing, ) = marketingFeeReceiver.call{value: amountETHMarketing}("");
|
|
357
|
+
- if (!sentMarketing) {
|
|
358
|
+
- //Failed to transfer to marketing wallet
|
|
359
|
+
- }
|
|
360
|
+
+ require(sentMarketing, "Marketing transfer failed");
|
|
361
|
+
}
|
|
362
|
+
```
|
|
363
|
+
|
|
364
|
+
---
|
|
365
|
+
|
|
366
|
+
### [75] 🟡 **MEDIUM: Airdrop Function Can Be Abused**
|
|
367
|
+
|
|
368
|
+
**Location**: `airdrop()` function (line ~360)
|
|
369
|
+
|
|
370
|
+
**Description**:
|
|
371
|
+
The airdrop function has no limits on number of recipients or amounts, and can be called multiple times. This could be used to:
|
|
372
|
+
1. Bypass transaction limits
|
|
373
|
+
2. Distribute tokens to many wallets to avoid detection
|
|
374
|
+
3. Manipulate holder count
|
|
375
|
+
|
|
376
|
+
```solidity
|
|
377
|
+
function airdrop(address[] calldata addresses, uint256[] calldata amounts) external onlyOwner {
|
|
378
|
+
require(addresses.length > 0 && amounts.length == addresses.length);
|
|
379
|
+
address from = msg.sender;
|
|
380
|
+
|
|
381
|
+
for (uint i = 0; i < addresses.length; i++) {
|
|
382
|
+
if (!liquidityPools[addresses[i]] && !isLiquidityCreator[addresses[i]]) {
|
|
383
|
+
_basicTransfer(from, addresses[i], amounts[i] * (10 ** _decimals));
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
```
|
|
388
|
+
|
|
389
|
+
**Issues**:
|
|
390
|
+
- No limit on array length (gas limit only)
|
|
391
|
+
- No limit on total amount
|
|
392
|
+
- Bypasses all transfer restrictions
|
|
393
|
+
- Can be used before trading is enabled
|
|
394
|
+
|
|
395
|
+
**Recommendation**:
|
|
396
|
+
```diff
|
|
397
|
+
function airdrop(address[] calldata addresses, uint256[] calldata amounts) external onlyOwner {
|
|
398
|
+
require(addresses.length > 0 && amounts.length == addresses.length);
|
|
399
|
+
+ require(addresses.length <= 200, "Too many recipients");
|
|
400
|
+
+
|
|
401
|
+
address from = msg.sender;
|
|
402
|
+
+ uint256 totalAmount = 0;
|
|
403
|
+
|
|
404
|
+
for (uint i = 0; i < addresses.length; i++) {
|
|
405
|
+
+ totalAmount += amounts[i] * (10 ** _decimals);
|
|
406
|
+
if (!liquidityPools[addresses[i]] && !isLiquidityCreator[addresses[i]]) {
|
|
407
|
+
_basicTransfer(from, addresses[i], amounts[i] * (10 ** _decimals));
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
+
|
|
411
|
+
+ require(totalAmount <= _totalSupply / 10, "Airdrop amount too large");
|
|
412
|
+
}
|
|
413
|
+
```
|
|
414
|
+
|
|
415
|
+
---
|
|
416
|
+
|
|
417
|
+
### [72] 🟡 **MEDIUM: Team Member Management Lacks Safeguards**
|
|
418
|
+
|
|
419
|
+
**Location**: `setTeamMember()` function (line ~355)
|
|
420
|
+
|
|
421
|
+
**Description**:
|
|
422
|
+
Owner can add unlimited team members who have powerful privileges (blacklist, drain ETH, open trading). No limit on number of team members and no way to see who they are.
|
|
423
|
+
|
|
424
|
+
```solidity
|
|
425
|
+
function setTeamMember(address _team, bool _enabled) external onlyOwner {
|
|
426
|
+
teamMembers[_team] = _enabled;
|
|
427
|
+
}
|
|
428
|
+
|
|
429
|
+
modifier onlyTeam() {
|
|
430
|
+
require(teamMembers[_msgSender()] || msg.sender == owner(), "Caller is not a team member");
|
|
431
|
+
_;
|
|
432
|
+
}
|
|
433
|
+
```
|
|
434
|
+
|
|
435
|
+
**Issues**:
|
|
436
|
+
- No limit on team members
|
|
437
|
+
- No public list of team members
|
|
438
|
+
- Team members have critical powers
|
|
439
|
+
- No timelock for adding team members
|
|
440
|
+
|
|
441
|
+
**Recommendation**:
|
|
442
|
+
```diff
|
|
443
|
+
+ address[] public teamMemberList;
|
|
444
|
+
+ uint256 public constant MAX_TEAM_MEMBERS = 5;
|
|
445
|
+
+
|
|
446
|
+
function setTeamMember(address _team, bool _enabled) external onlyOwner {
|
|
447
|
+
+ require(_team != address(0), "Invalid address");
|
|
448
|
+
+
|
|
449
|
+
+ if (_enabled) {
|
|
450
|
+
+ require(teamMemberList.length < MAX_TEAM_MEMBERS, "Too many team members");
|
|
451
|
+
+ teamMemberList.push(_team);
|
|
452
|
+
+ } else {
|
|
453
|
+
+ // Remove from list
|
|
454
|
+
+ for (uint i = 0; i < teamMemberList.length; i++) {
|
|
455
|
+
+ if (teamMemberList[i] == _team) {
|
|
456
|
+
+ teamMemberList[i] = teamMemberList[teamMemberList.length - 1];
|
|
457
|
+
+ teamMemberList.pop();
|
|
458
|
+
+ break;
|
|
459
|
+
+ }
|
|
460
|
+
+ }
|
|
461
|
+
+ }
|
|
462
|
+
+
|
|
463
|
+
teamMembers[_team] = _enabled;
|
|
464
|
+
}
|
|
465
|
+
+
|
|
466
|
+
+ function getTeamMembers() external view returns (address[] memory) {
|
|
467
|
+
+ return teamMemberList;
|
|
468
|
+
+ }
|
|
469
|
+
```
|
|
470
|
+
|
|
471
|
+
---
|
|
472
|
+
|
|
473
|
+
## 🔵 LOW SEVERITY & INFORMATIONAL
|
|
474
|
+
|
|
475
|
+
### [65] 🔵 **LOW: Missing Events for Critical State Changes**
|
|
476
|
+
|
|
477
|
+
Several critical functions don't emit events:
|
|
478
|
+
- `setTeamMember()` - No event when team member added/removed
|
|
479
|
+
- `clearStuckBalance()` - No event when ETH withdrawn
|
|
480
|
+
- `openTrading()` - No event when trading enabled
|
|
481
|
+
- `toggleTransferTax()` - No event when transfer tax toggled
|
|
482
|
+
|
|
483
|
+
**Recommendation**: Add events for all state-changing functions.
|
|
484
|
+
|
|
485
|
+
---
|
|
486
|
+
|
|
487
|
+
### [60] 🔵 **LOW: Inconsistent Use of tx.origin**
|
|
488
|
+
|
|
489
|
+
**Location**: `blacklistWallets()` function
|
|
490
|
+
|
|
491
|
+
```solidity
|
|
492
|
+
emit WalletBlacklisted(tx.origin, _wallets[i], block.number);
|
|
493
|
+
```
|
|
494
|
+
|
|
495
|
+
Using `tx.origin` instead of `msg.sender` can be misleading and is generally discouraged.
|
|
496
|
+
|
|
497
|
+
**Recommendation**:
|
|
498
|
+
```diff
|
|
499
|
+
- emit WalletBlacklisted(tx.origin, _wallets[i], block.number);
|
|
500
|
+
+ emit WalletBlacklisted(msg.sender, _wallets[i], block.number);
|
|
501
|
+
```
|
|
502
|
+
|
|
503
|
+
---
|
|
504
|
+
|
|
505
|
+
### [55] 🔵 **INFO: Hardcoded Fee Receiver Addresses**
|
|
506
|
+
|
|
507
|
+
**Location**: Constructor
|
|
508
|
+
|
|
509
|
+
```solidity
|
|
510
|
+
address payable public liquidityFeeReceiver = payable(0xa75bFFD82FFE8A5064A5b6122448221aCEbCf950);
|
|
511
|
+
address payable public marketingFeeReceiver = payable(0xa75bFFD82FFE8A5064A5b6122448221aCEbCf950);
|
|
512
|
+
```
|
|
513
|
+
|
|
514
|
+
Both receivers point to the same address. While this can be changed later, it's worth noting for transparency.
|
|
515
|
+
|
|
516
|
+
---
|
|
517
|
+
|
|
518
|
+
### [50] 🔵 **INFO: No Pause Mechanism**
|
|
519
|
+
|
|
520
|
+
The contract has no emergency pause function. If a critical bug is discovered, there's no way to stop trading temporarily.
|
|
521
|
+
|
|
522
|
+
**Recommendation**: Consider adding OpenZeppelin's Pausable pattern.
|
|
523
|
+
|
|
524
|
+
---
|
|
525
|
+
|
|
526
|
+
## 📊 Centralization Risks Summary
|
|
527
|
+
|
|
528
|
+
| Function | Risk | Impact |
|
|
529
|
+
|----------|------|--------|
|
|
530
|
+
| `setFees()` | 🔴 CRITICAL | Can set 100% fees, make token untradeable |
|
|
531
|
+
| `blacklistWallets()` | 🔴 CRITICAL | Can freeze any wallet permanently |
|
|
532
|
+
| `clearStuckBalance()` | 🔴 HIGH | Can drain all contract ETH |
|
|
533
|
+
| `setTxLimit()` | 🟠 HIGH | Can make trading impossible |
|
|
534
|
+
| `setMaxWallet()` | 🟠 HIGH | Can prevent buying |
|
|
535
|
+
| `setTeamMember()` | 🟡 MEDIUM | Can add unlimited team members |
|
|
536
|
+
| `openTrading()` | 🟡 MEDIUM | Team controls when trading starts |
|
|
537
|
+
| `renounceOwnership()` | ⚠️ WARNING | Owner can renounce, but team still has power |
|
|
538
|
+
|
|
539
|
+
---
|
|
540
|
+
|
|
541
|
+
## 🚨 Rug Pull Risk Assessment
|
|
542
|
+
|
|
543
|
+
**Overall Risk**: 🔴 **HIGH**
|
|
544
|
+
|
|
545
|
+
### Red Flags:
|
|
546
|
+
|
|
547
|
+
1. ✅ **60% Sell Tax** - Extreme exit barrier
|
|
548
|
+
2. ✅ **Unlimited Blacklist Power** - Can freeze funds
|
|
549
|
+
3. ✅ **No Fee Limits** - Can set 100% fees
|
|
550
|
+
4. ✅ **ETH Drain Function** - Can steal accumulated fees
|
|
551
|
+
5. ✅ **Team Powers** - Multiple people with critical access
|
|
552
|
+
6. ✅ **No Timelock** - All changes instant
|
|
553
|
+
7. ✅ **No Governance** - Pure centralized control
|
|
554
|
+
|
|
555
|
+
### Rug Pull Scenarios:
|
|
556
|
+
|
|
557
|
+
**Scenario 1: Fee Rug Pull**
|
|
558
|
+
```
|
|
559
|
+
1. Users buy tokens (5% fee)
|
|
560
|
+
2. Price increases
|
|
561
|
+
3. Owner sets sell fee to 100%
|
|
562
|
+
4. Users cannot sell
|
|
563
|
+
5. Owner/team sells their tokens
|
|
564
|
+
6. Owner drains accumulated fees via clearStuckBalance()
|
|
565
|
+
```
|
|
566
|
+
|
|
567
|
+
**Scenario 2: Blacklist Rug Pull**
|
|
568
|
+
```
|
|
569
|
+
1. Users buy tokens
|
|
570
|
+
2. Large holders identified
|
|
571
|
+
3. Team blacklists large holders
|
|
572
|
+
4. Large holders cannot sell
|
|
573
|
+
5. Team dumps their tokens
|
|
574
|
+
6. Price crashes, blacklisted users lose everything
|
|
575
|
+
```
|
|
576
|
+
|
|
577
|
+
**Scenario 3: Limit Rug Pull**
|
|
578
|
+
```
|
|
579
|
+
1. Users buy tokens
|
|
580
|
+
2. Owner sets transaction limits to 0.01%
|
|
581
|
+
3. Users can only sell tiny amounts
|
|
582
|
+
4. Team sells large amounts (they're exempt)
|
|
583
|
+
5. Price crashes before users can exit
|
|
584
|
+
```
|
|
585
|
+
|
|
586
|
+
---
|
|
587
|
+
|
|
588
|
+
## 🎯 Recommendations Summary
|
|
589
|
+
|
|
590
|
+
### Critical (Must Fix):
|
|
591
|
+
|
|
592
|
+
1. **Add Maximum Fee Limits**
|
|
593
|
+
- Buy fee max: 10%
|
|
594
|
+
- Sell fee max: 10%
|
|
595
|
+
- Reduce current 60% sell fee to 5%
|
|
596
|
+
|
|
597
|
+
2. **Add Blacklist Timelock**
|
|
598
|
+
- 24-hour delay before blacklist takes effect
|
|
599
|
+
- Limit number of wallets that can be blacklisted
|
|
600
|
+
- Add appeal mechanism
|
|
601
|
+
|
|
602
|
+
3. **Restrict ETH Withdrawal**
|
|
603
|
+
- Only allow withdrawing to fee receivers
|
|
604
|
+
- Add maximum percentage limit (10%)
|
|
605
|
+
- Add timelock
|
|
606
|
+
|
|
607
|
+
4. **Add Transaction Limit Minimums**
|
|
608
|
+
- Minimum 0.1% of supply per transaction
|
|
609
|
+
- Prevent setting limits too low
|
|
610
|
+
|
|
611
|
+
### High Priority:
|
|
612
|
+
|
|
613
|
+
5. **Add Timelock for Critical Functions**
|
|
614
|
+
- Fee changes: 24-hour delay
|
|
615
|
+
- Limit changes: 24-hour delay
|
|
616
|
+
- Team member additions: 24-hour delay
|
|
617
|
+
|
|
618
|
+
6. **Improve Transparency**
|
|
619
|
+
- Add events for all state changes
|
|
620
|
+
- Make team member list public
|
|
621
|
+
- Add getter functions for all settings
|
|
622
|
+
|
|
623
|
+
7. **Add Emergency Pause**
|
|
624
|
+
- Implement pausable pattern
|
|
625
|
+
- Require multisig for pause/unpause
|
|
626
|
+
|
|
627
|
+
### Medium Priority:
|
|
628
|
+
|
|
629
|
+
8. **Fix Reentrancy Pattern**
|
|
630
|
+
- Move state changes before external calls
|
|
631
|
+
- Add ReentrancyGuard from OpenZeppelin
|
|
632
|
+
|
|
633
|
+
9. **Improve Error Handling**
|
|
634
|
+
- Revert on failed marketing transfer
|
|
635
|
+
- Add proper error messages
|
|
636
|
+
|
|
637
|
+
10. **Limit Airdrop Function**
|
|
638
|
+
- Max 200 recipients per call
|
|
639
|
+
- Max 10% of supply per airdrop
|
|
640
|
+
|
|
641
|
+
---
|
|
642
|
+
|
|
643
|
+
## 📈 Gas Optimization Opportunities
|
|
644
|
+
|
|
645
|
+
1. **Pack Storage Variables**: Some bool and uint256 variables could be packed
|
|
646
|
+
2. **Cache Array Length**: In loops, cache `addresses.length`
|
|
647
|
+
3. **Use Unchecked**: For counter increments in loops (Solidity 0.8.17)
|
|
648
|
+
|
|
649
|
+
---
|
|
650
|
+
|
|
651
|
+
## ✅ Positive Aspects
|
|
652
|
+
|
|
653
|
+
1. ✅ Uses Solidity 0.8.17 (built-in overflow protection)
|
|
654
|
+
2. ✅ Standard ERC20 implementation
|
|
655
|
+
3. ✅ Reasonable initial limits (1% max transaction, 1% max wallet)
|
|
656
|
+
4. ✅ SwapBack rate limiting to prevent MEV
|
|
657
|
+
5. ✅ Proper use of modifiers for access control
|
|
658
|
+
6. ✅ Events for important actions
|
|
659
|
+
|
|
660
|
+
---
|
|
661
|
+
|
|
662
|
+
## 🎓 Conclusion
|
|
663
|
+
|
|
664
|
+
The Destra Network token contract is **functional but contains significant centralization risks** that could lead to rug pulls or user fund loss.
|
|
665
|
+
|
|
666
|
+
### Risk Summary:
|
|
667
|
+
|
|
668
|
+
| Category | Risk Level | Details |
|
|
669
|
+
|----------|-----------|---------|
|
|
670
|
+
| Rug Pull Risk | 🔴 HIGH | 60% sell tax, unlimited blacklist, no limits on fees |
|
|
671
|
+
| Centralization | 🔴 HIGH | Owner and team have excessive power |
|
|
672
|
+
| Code Quality | 🟢 GOOD | Clean code, standard patterns |
|
|
673
|
+
| Gas Efficiency | 🟡 MEDIUM | Some optimization opportunities |
|
|
674
|
+
| Documentation | 🟡 MEDIUM | Basic comments, could be improved |
|
|
675
|
+
|
|
676
|
+
### Final Verdict:
|
|
677
|
+
|
|
678
|
+
**NOT RECOMMENDED FOR INVESTMENT** without significant changes to reduce centralization and add protections for users.
|
|
679
|
+
|
|
680
|
+
### For Users:
|
|
681
|
+
|
|
682
|
+
⚠️ **HIGH RISK** - Be aware of:
|
|
683
|
+
- 60% sell tax (you lose 60% when selling)
|
|
684
|
+
- Team can blacklist your wallet anytime
|
|
685
|
+
- Team can change fees to 100% anytime
|
|
686
|
+
- No governance or timelock protections
|
|
687
|
+
|
|
688
|
+
### For Developers:
|
|
689
|
+
|
|
690
|
+
Implement the critical recommendations above, especially:
|
|
691
|
+
1. Reduce sell tax to reasonable level (5-10%)
|
|
692
|
+
2. Add maximum fee limits
|
|
693
|
+
3. Add timelock for critical functions
|
|
694
|
+
4. Restrict blacklist power
|
|
695
|
+
5. Add transparency features
|
|
696
|
+
|
|
697
|
+
---
|
|
698
|
+
|
|
699
|
+
**Audit Date**: March 24, 2026
|
|
700
|
+
**Auditor**: Security Research Team
|
|
701
|
+
**Status**: ⚠️ HIGH RISK - SIGNIFICANT ISSUES FOUND
|
|
702
|
+
|
|
703
|
+
---
|
|
704
|
+
|
|
705
|
+
*This audit is for educational and informational purposes. Always conduct your own research and consider multiple audits before investing.*
|