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
package/TRUNK_AUDIT.md
ADDED
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
# TRUNK (Elephant Dollar) - Security Audit Report
|
|
2
|
+
|
|
3
|
+
## Contract Information
|
|
4
|
+
- **Name:** ElephantDollar (TRUNK)
|
|
5
|
+
- **Address:** 0xdd325C38b12903B727D16961e61333f4871A70E0
|
|
6
|
+
- **Compiler:** Solidity 0.6.12
|
|
7
|
+
- **Type:** Mintable/Burnable Stablecoin
|
|
8
|
+
|
|
9
|
+
## Executive Summary
|
|
10
|
+
|
|
11
|
+
**VERDICT: MEDIUM RISK - Centralization Concerns**
|
|
12
|
+
|
|
13
|
+
TRUNK is a mintable stablecoin with whitelist-based minting controls. The contract has significant centralization risks due to owner privileges and whitelist requirements.
|
|
14
|
+
|
|
15
|
+
## Contract Overview
|
|
16
|
+
|
|
17
|
+
TRUNK is described as "Elephant Money Stable" and serves as a partially collateralized stablecoin (75% BUSD, 25% ELEPHANT). The contract implements:
|
|
18
|
+
- Mintable token with whitelist control
|
|
19
|
+
- Burnable functionality
|
|
20
|
+
- Owner time-lock mechanism
|
|
21
|
+
- Participant tracking
|
|
22
|
+
|
|
23
|
+
## Detailed Findings
|
|
24
|
+
|
|
25
|
+
### CRITICAL ISSUES
|
|
26
|
+
|
|
27
|
+
#### 1. Unlimited Minting by Whitelisted Addresses
|
|
28
|
+
**Severity:** CRITICAL
|
|
29
|
+
**Location:** `mint()` function
|
|
30
|
+
|
|
31
|
+
```solidity
|
|
32
|
+
function mint(address _to, uint256 _amount) public override returns (bool) {
|
|
33
|
+
require(_amount > 0 && totalSupply_.add(_amount) <= targetSupply);
|
|
34
|
+
super.mint(_to, _amount);
|
|
35
|
+
// ...
|
|
36
|
+
}
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
**Issue:**
|
|
40
|
+
- Whitelisted addresses can mint unlimited tokens up to `targetSupply` (2^256 - 1)
|
|
41
|
+
- No rate limiting or daily caps
|
|
42
|
+
- Single compromised whitelist address = total supply manipulation
|
|
43
|
+
|
|
44
|
+
**Impact:**
|
|
45
|
+
- Hyperinflation risk
|
|
46
|
+
- Collateral backing can be diluted
|
|
47
|
+
- Price manipulation
|
|
48
|
+
|
|
49
|
+
**Recommendation:**
|
|
50
|
+
- Implement minting caps per address/time period
|
|
51
|
+
- Add multi-sig requirement for large mints
|
|
52
|
+
- Implement collateral verification before minting
|
|
53
|
+
|
|
54
|
+
#### 2. Centralized Whitelist Control
|
|
55
|
+
**Severity:** HIGH
|
|
56
|
+
**Location:** `Whitelist` contract
|
|
57
|
+
|
|
58
|
+
```solidity
|
|
59
|
+
function addAddressToWhitelist(address addr) onlyOwner public returns(bool success)
|
|
60
|
+
function removeAddressFromWhitelist(address addr) onlyOwner public returns(bool success)
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
**Issue:**
|
|
64
|
+
- Owner has unilateral control over who can mint
|
|
65
|
+
- No timelock on whitelist changes
|
|
66
|
+
- No transparency on whitelist additions
|
|
67
|
+
|
|
68
|
+
**Impact:**
|
|
69
|
+
- Owner can add malicious minters
|
|
70
|
+
- Centralization risk
|
|
71
|
+
- Trust dependency
|
|
72
|
+
|
|
73
|
+
**Recommendation:**
|
|
74
|
+
- Implement multi-sig for whitelist changes
|
|
75
|
+
- Add timelock for whitelist modifications
|
|
76
|
+
- Emit detailed events for transparency
|
|
77
|
+
|
|
78
|
+
### HIGH SEVERITY ISSUES
|
|
79
|
+
|
|
80
|
+
#### 3. Owner Lock/Unlock Mechanism Vulnerability
|
|
81
|
+
**Severity:** HIGH
|
|
82
|
+
**Location:** `lock()` and `unlock()` functions
|
|
83
|
+
|
|
84
|
+
```solidity
|
|
85
|
+
function lock(uint256 time) public virtual onlyOwner {
|
|
86
|
+
_previousOwner = _owner;
|
|
87
|
+
_owner = address(0);
|
|
88
|
+
_lockTime = now + time;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
function unlock() public virtual {
|
|
92
|
+
require(_previousOwner == msg.sender);
|
|
93
|
+
require(now > _lockTime);
|
|
94
|
+
_owner = _previousOwner;
|
|
95
|
+
}
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
**Issue:**
|
|
99
|
+
- Uses `now` (deprecated, should be `block.timestamp`)
|
|
100
|
+
- `_previousOwner` can unlock even if not current owner
|
|
101
|
+
- No event emission on unlock
|
|
102
|
+
|
|
103
|
+
**Impact:**
|
|
104
|
+
- Potential ownership recovery issues
|
|
105
|
+
- Unclear ownership state
|
|
106
|
+
|
|
107
|
+
**Recommendation:**
|
|
108
|
+
- Use `block.timestamp` instead of `now`
|
|
109
|
+
- Add events for lock/unlock
|
|
110
|
+
- Consider removing this mechanism in favor of standard Ownable
|
|
111
|
+
|
|
112
|
+
#### 4. No Collateral Verification
|
|
113
|
+
**Severity:** HIGH
|
|
114
|
+
**Location:** Entire contract
|
|
115
|
+
|
|
116
|
+
**Issue:**
|
|
117
|
+
- Contract claims 75% BUSD / 25% ELEPHANT backing
|
|
118
|
+
- No on-chain verification of collateral
|
|
119
|
+
- Minting doesn't check collateral reserves
|
|
120
|
+
|
|
121
|
+
**Impact:**
|
|
122
|
+
- Unbacked tokens can be minted
|
|
123
|
+
- Peg can break
|
|
124
|
+
- User funds at risk
|
|
125
|
+
|
|
126
|
+
**Recommendation:**
|
|
127
|
+
- Implement collateral verification in mint function
|
|
128
|
+
- Add reserve ratio checks
|
|
129
|
+
- Create redemption mechanism
|
|
130
|
+
|
|
131
|
+
### MEDIUM SEVERITY ISSUES
|
|
132
|
+
|
|
133
|
+
#### 5. Solidity 0.6.12 - Outdated Version
|
|
134
|
+
**Severity:** MEDIUM
|
|
135
|
+
|
|
136
|
+
**Issue:**
|
|
137
|
+
- Using Solidity 0.6.12 (released 2020)
|
|
138
|
+
- Missing modern security features
|
|
139
|
+
- Known compiler bugs
|
|
140
|
+
|
|
141
|
+
**Recommendation:**
|
|
142
|
+
- Upgrade to Solidity 0.8.x
|
|
143
|
+
- Use SafeMath built-in overflow protection
|
|
144
|
+
- Implement latest security patterns
|
|
145
|
+
|
|
146
|
+
#### 6. Participant Tracking Gas Inefficiency
|
|
147
|
+
**Severity:** MEDIUM
|
|
148
|
+
**Location:** `transfer()` and `transferFrom()`
|
|
149
|
+
|
|
150
|
+
```solidity
|
|
151
|
+
if (stats[_to].txs == 0) {
|
|
152
|
+
participants += 1;
|
|
153
|
+
}
|
|
154
|
+
stats[_to].txs += 1;
|
|
155
|
+
stats[_from].txs += 1;
|
|
156
|
+
totalTxs += 1;
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
**Issue:**
|
|
160
|
+
- Every transfer updates multiple storage variables
|
|
161
|
+
- High gas costs for users
|
|
162
|
+
- Stats tracking not essential for token functionality
|
|
163
|
+
|
|
164
|
+
**Recommendation:**
|
|
165
|
+
- Make stats tracking optional
|
|
166
|
+
- Use events instead of storage for analytics
|
|
167
|
+
- Consider removing if not actively used
|
|
168
|
+
|
|
169
|
+
### LOW SEVERITY ISSUES
|
|
170
|
+
|
|
171
|
+
#### 7. Approve Race Condition
|
|
172
|
+
**Severity:** LOW
|
|
173
|
+
**Location:** `approve()` function
|
|
174
|
+
|
|
175
|
+
**Issue:**
|
|
176
|
+
- Standard ERC20 approve race condition
|
|
177
|
+
- `increaseApproval` and `decreaseApproval` provided but not standard
|
|
178
|
+
|
|
179
|
+
**Recommendation:**
|
|
180
|
+
- Document the race condition
|
|
181
|
+
- Encourage use of increase/decrease approval
|
|
182
|
+
- Consider implementing EIP-2612 (permit)
|
|
183
|
+
|
|
184
|
+
## Gas Optimization Opportunities
|
|
185
|
+
|
|
186
|
+
1. **Remove Stats Tracking:** Save ~20k gas per transfer
|
|
187
|
+
2. **Pack Storage Variables:** Optimize struct layout
|
|
188
|
+
3. **Use Immutable for Constants:** `targetSupply` could be immutable
|
|
189
|
+
|
|
190
|
+
## Centralization Risks
|
|
191
|
+
|
|
192
|
+
### Owner Powers:
|
|
193
|
+
- Add/remove whitelist addresses (unlimited minting control)
|
|
194
|
+
- Renounce ownership (lock contract permanently)
|
|
195
|
+
- Lock/unlock ownership
|
|
196
|
+
|
|
197
|
+
### Whitelist Powers:
|
|
198
|
+
- Mint unlimited tokens up to max supply
|
|
199
|
+
- No accountability or transparency
|
|
200
|
+
|
|
201
|
+
## Testing Recommendations
|
|
202
|
+
|
|
203
|
+
### Unit Tests:
|
|
204
|
+
```solidity
|
|
205
|
+
// Test minting limits
|
|
206
|
+
function testMintingCap() public
|
|
207
|
+
function testWhitelistMinting() public
|
|
208
|
+
function testNonWhitelistCannotMint() public
|
|
209
|
+
|
|
210
|
+
// Test ownership
|
|
211
|
+
function testOwnershipLock() public
|
|
212
|
+
function testOwnershipUnlock() public
|
|
213
|
+
|
|
214
|
+
// Test collateral (if implemented)
|
|
215
|
+
function testCollateralRatio() public
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
### Integration Tests:
|
|
219
|
+
- Test with actual BUSD/ELEPHANT reserves
|
|
220
|
+
- Verify peg mechanism
|
|
221
|
+
- Test redemption flows
|
|
222
|
+
|
|
223
|
+
## Comparison with Industry Standards
|
|
224
|
+
|
|
225
|
+
### vs DAI:
|
|
226
|
+
- DAI has over-collateralization
|
|
227
|
+
- DAI has liquidation mechanisms
|
|
228
|
+
- DAI is decentralized via MakerDAO
|
|
229
|
+
|
|
230
|
+
### vs USDC:
|
|
231
|
+
- USDC has 1:1 backing
|
|
232
|
+
- USDC has regular attestations
|
|
233
|
+
- USDC has regulatory compliance
|
|
234
|
+
|
|
235
|
+
### TRUNK Issues:
|
|
236
|
+
- No on-chain collateral verification
|
|
237
|
+
- Centralized minting
|
|
238
|
+
- No redemption mechanism visible
|
|
239
|
+
|
|
240
|
+
## Recommendations Summary
|
|
241
|
+
|
|
242
|
+
### Immediate Actions:
|
|
243
|
+
1. Implement minting caps and rate limits
|
|
244
|
+
2. Add collateral verification to mint function
|
|
245
|
+
3. Implement multi-sig for whitelist changes
|
|
246
|
+
4. Add redemption mechanism
|
|
247
|
+
|
|
248
|
+
### Short-term Improvements:
|
|
249
|
+
1. Upgrade to Solidity 0.8.x
|
|
250
|
+
2. Add comprehensive events
|
|
251
|
+
3. Implement timelock for critical operations
|
|
252
|
+
4. Create emergency pause mechanism
|
|
253
|
+
|
|
254
|
+
### Long-term Enhancements:
|
|
255
|
+
1. Decentralize minting via governance
|
|
256
|
+
2. Implement on-chain collateral proofs
|
|
257
|
+
3. Add liquidation mechanisms
|
|
258
|
+
4. Create transparent reserve reporting
|
|
259
|
+
|
|
260
|
+
## Risk Assessment
|
|
261
|
+
|
|
262
|
+
| Risk Category | Level | Justification |
|
|
263
|
+
|--------------|-------|---------------|
|
|
264
|
+
| Centralization | HIGH | Owner controls all minting via whitelist |
|
|
265
|
+
| Collateral | HIGH | No on-chain verification |
|
|
266
|
+
| Smart Contract | MEDIUM | Standard implementation but outdated |
|
|
267
|
+
| Economic | HIGH | Unlimited minting potential |
|
|
268
|
+
| Operational | MEDIUM | Depends on off-chain processes |
|
|
269
|
+
|
|
270
|
+
## Conclusion
|
|
271
|
+
|
|
272
|
+
TRUNK is a functional mintable stablecoin but has significant centralization and collateral verification issues. The contract relies heavily on trust in the owner and whitelisted minters. Without on-chain collateral verification and redemption mechanisms, users must trust that the claimed 75% BUSD / 25% ELEPHANT backing exists.
|
|
273
|
+
|
|
274
|
+
**Key Concerns:**
|
|
275
|
+
1. Unlimited minting by whitelisted addresses
|
|
276
|
+
2. No on-chain collateral verification
|
|
277
|
+
3. Centralized control
|
|
278
|
+
4. No redemption mechanism
|
|
279
|
+
5. Outdated Solidity version
|
|
280
|
+
|
|
281
|
+
**Recommendation:** Users should verify off-chain that adequate collateral exists before using TRUNK. The project should prioritize implementing on-chain collateral verification and decentralizing minting controls.
|
|
282
|
+
|
|
283
|
+
---
|
|
284
|
+
|
|
285
|
+
**Auditor Notes:** This audit is based on static analysis of the verified source code. A full audit would include dynamic testing, economic modeling, and verification of off-chain collateral claims.
|
package/UNIBASE_AUDIT.md
ADDED
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
# Unibase (UB) Token Security Audit
|
|
2
|
+
|
|
3
|
+
**Contract:** Unibase (UBOFT)
|
|
4
|
+
**Address:** `0x40b8129B786D766267A7a118cF8C07E31CDB6Fde`
|
|
5
|
+
**Chain:** BSC (BNB Smart Chain)
|
|
6
|
+
**Compiler:** v0.8.22+commit.4fc1097e (200 optimization runs)
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## EXECUTIVE SUMMARY
|
|
11
|
+
|
|
12
|
+
**Risk Rating: 4/10 - MEDIUM RISK (LayerZero OFT + Owner Control)**
|
|
13
|
+
|
|
14
|
+
Unibase is a LayerZero OFT (Omnichain Fungible Token) that enables cross-chain transfers. It's a simple wrapper around LayerZero's OFT standard with owner control over cross-chain configuration. Similar risk profile to CHAINBASE.
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## CONTRACT OVERVIEW
|
|
19
|
+
|
|
20
|
+
```solidity
|
|
21
|
+
Token Name: Unibase
|
|
22
|
+
Symbol: UB
|
|
23
|
+
Decimals: 18
|
|
24
|
+
Total Supply: 1,999,999,282.405 UB (~2 billion)
|
|
25
|
+
Standard: LayerZero OFT (Omnichain Fungible Token)
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### Key Features:
|
|
29
|
+
- **LayerZero OFT**: Cross-chain token transfers
|
|
30
|
+
- **Owner Control**: Can set peers and delegate
|
|
31
|
+
- **No Mint/Burn**: Standard supply (no admin mint)
|
|
32
|
+
- **No Pause**: Transfers always work
|
|
33
|
+
- **No Fees**: Standard ERC20 transfers
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## SECURITY ANALYSIS
|
|
38
|
+
|
|
39
|
+
### ✅ STRENGTHS
|
|
40
|
+
|
|
41
|
+
1. **Simple Implementation**
|
|
42
|
+
```solidity
|
|
43
|
+
contract UBOFT is OFT {
|
|
44
|
+
constructor(...) OFT(...) Ownable(_delegate) {}
|
|
45
|
+
}
|
|
46
|
+
```
|
|
47
|
+
- Minimal custom code
|
|
48
|
+
- Inherits from LayerZero OFT
|
|
49
|
+
- No complex logic
|
|
50
|
+
|
|
51
|
+
2. **No Mint Function**
|
|
52
|
+
- Fixed supply at deployment
|
|
53
|
+
- Cannot be inflated
|
|
54
|
+
- No dilution risk
|
|
55
|
+
|
|
56
|
+
3. **No Pause Function**
|
|
57
|
+
- Transfers always work
|
|
58
|
+
- Cannot freeze users
|
|
59
|
+
|
|
60
|
+
4. **No Trading Fees**
|
|
61
|
+
- Standard ERC20 transfers
|
|
62
|
+
- No hidden costs
|
|
63
|
+
|
|
64
|
+
5. **LayerZero Standard**
|
|
65
|
+
- Well-audited OFT implementation
|
|
66
|
+
- Proven cross-chain protocol
|
|
67
|
+
- Used by many projects
|
|
68
|
+
|
|
69
|
+
### ⚠️ MEDIUM RISKS
|
|
70
|
+
|
|
71
|
+
1. **OWNER CONTROL OVER CROSS-CHAIN**
|
|
72
|
+
```solidity
|
|
73
|
+
function setPeer(uint32 _eid, bytes32 _peer) external onlyOwner
|
|
74
|
+
```
|
|
75
|
+
- Owner: 0xc82C31b242d49dB07F9282295b6E8e391771A588
|
|
76
|
+
- Can set peer contracts on other chains
|
|
77
|
+
- Wrong peer = lost funds in cross-chain transfers
|
|
78
|
+
- Can redirect cross-chain transfers
|
|
79
|
+
|
|
80
|
+
2. **DELEGATE CONTROL**
|
|
81
|
+
```solidity
|
|
82
|
+
function setDelegate(address _delegate) external onlyOwner
|
|
83
|
+
```
|
|
84
|
+
- Owner can change delegate
|
|
85
|
+
- Delegate has special permissions in LayerZero
|
|
86
|
+
- Can affect cross-chain operations
|
|
87
|
+
|
|
88
|
+
3. **CROSS-CHAIN RISKS**
|
|
89
|
+
- Depends on LayerZero security
|
|
90
|
+
- Relayer/oracle trust assumptions
|
|
91
|
+
- Bridge exploits possible
|
|
92
|
+
- Peer contract risks on other chains
|
|
93
|
+
|
|
94
|
+
4. **OWNER NOT RENOUNCED**
|
|
95
|
+
- Owner: 0xc82C31b242d49dB07F9282295b6E8e391771A588
|
|
96
|
+
- Can modify cross-chain config
|
|
97
|
+
- Cannot be disabled
|
|
98
|
+
|
|
99
|
+
### ✅ LOW RISKS
|
|
100
|
+
|
|
101
|
+
1. **No Upgradeable Proxy**
|
|
102
|
+
- Contract is immutable
|
|
103
|
+
- Cannot change token logic
|
|
104
|
+
- Better than DUSD/BTR
|
|
105
|
+
|
|
106
|
+
2. **Fixed Supply**
|
|
107
|
+
- No mint function
|
|
108
|
+
- Supply locked at ~2B
|
|
109
|
+
- No inflation
|
|
110
|
+
|
|
111
|
+
3. **Standard ERC20**
|
|
112
|
+
- No custom transfer logic
|
|
113
|
+
- No blacklist
|
|
114
|
+
- No pause
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## LAYERZERO OFT SPECIFICS
|
|
119
|
+
|
|
120
|
+
**What is OFT?**
|
|
121
|
+
- Omnichain Fungible Token
|
|
122
|
+
- Burns on source chain, mints on destination
|
|
123
|
+
- Uses LayerZero messaging protocol
|
|
124
|
+
- Enables cross-chain transfers
|
|
125
|
+
|
|
126
|
+
**Key Functions:**
|
|
127
|
+
- `send()` - Send tokens cross-chain (burns on source)
|
|
128
|
+
- `lzReceive()` - Receive tokens cross-chain (mints on dest)
|
|
129
|
+
- `setPeer()` - Configure trusted contracts on other chains
|
|
130
|
+
- `quoteSend()` - Get cross-chain transfer fee
|
|
131
|
+
|
|
132
|
+
**Risks:**
|
|
133
|
+
- Peer misconfiguration = lost funds
|
|
134
|
+
- LayerZero exploit = all chains affected
|
|
135
|
+
- Relayer/oracle compromise
|
|
136
|
+
- Destination chain peer contract risks
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## ON-CHAIN STATE
|
|
141
|
+
|
|
142
|
+
```
|
|
143
|
+
Name: Unibase
|
|
144
|
+
Symbol: UB
|
|
145
|
+
Total Supply: 1,999,999,282.405 UB
|
|
146
|
+
Decimals: 18
|
|
147
|
+
Owner: 0xc82C31b242d49dB07F9282295b6E8e391771A588
|
|
148
|
+
LayerZero Endpoint: (BSC endpoint)
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## ATTACK VECTORS
|
|
154
|
+
|
|
155
|
+
### ❌ NO USER-EXPLOITABLE BUGS
|
|
156
|
+
|
|
157
|
+
Standard LayerZero OFT implementation. No obvious exploits.
|
|
158
|
+
|
|
159
|
+
### ⚠️ OWNER ABUSE SCENARIOS
|
|
160
|
+
|
|
161
|
+
1. **Malicious Peer Configuration**
|
|
162
|
+
- Owner sets peer to malicious contract
|
|
163
|
+
- Users send tokens cross-chain
|
|
164
|
+
- Malicious peer steals funds
|
|
165
|
+
- Tokens lost forever
|
|
166
|
+
|
|
167
|
+
2. **Peer Removal**
|
|
168
|
+
- Owner removes peer for a chain
|
|
169
|
+
- Users cannot bridge back
|
|
170
|
+
- Funds stuck on destination chain
|
|
171
|
+
|
|
172
|
+
3. **Delegate Manipulation**
|
|
173
|
+
- Owner changes delegate
|
|
174
|
+
- New delegate has special permissions
|
|
175
|
+
- Could affect cross-chain operations
|
|
176
|
+
|
|
177
|
+
### 🔍 LAYERZERO PROTOCOL RISKS
|
|
178
|
+
|
|
179
|
+
1. **Relayer/Oracle Compromise**
|
|
180
|
+
- LayerZero uses relayers and oracles
|
|
181
|
+
- If compromised, can fake messages
|
|
182
|
+
- Could mint unlimited tokens
|
|
183
|
+
|
|
184
|
+
2. **Destination Chain Risks**
|
|
185
|
+
- Peer contracts on other chains
|
|
186
|
+
- If peer is malicious, funds lost
|
|
187
|
+
- No way to verify peer security
|
|
188
|
+
|
|
189
|
+
3. **Bridge Exploits**
|
|
190
|
+
- Cross-chain bridges are high-value targets
|
|
191
|
+
- Historical exploits (Wormhole, Ronin, etc.)
|
|
192
|
+
- OFT inherits these risks
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
## COMPARISON TO PREVIOUS AUDITS
|
|
197
|
+
|
|
198
|
+
| Feature | UB | CHAINBASE | ARK | BTR |
|
|
199
|
+
|---------|-----|-----------|-----|-----|
|
|
200
|
+
| Type | LayerZero OFT | LayerZero OFT | Standard ERC20 | UUPS Proxy |
|
|
201
|
+
| Upgradeable | NO ✅ | NO ✅ | NO ✅ | YES 🚨 |
|
|
202
|
+
| Mint Function | NO ✅ | YES | YES | YES |
|
|
203
|
+
| Owner Control | Peers only | Peers only | Renounced ✅ | Full |
|
|
204
|
+
| Cross-Chain | YES | YES | NO | NO |
|
|
205
|
+
| Risk Level | 4/10 | 3/10 | 3/10 | 6/10 |
|
|
206
|
+
|
|
207
|
+
---
|
|
208
|
+
|
|
209
|
+
## FINAL VERDICT
|
|
210
|
+
|
|
211
|
+
**Risk Rating: 4/10 - MEDIUM RISK**
|
|
212
|
+
|
|
213
|
+
Unibase is a standard LayerZero OFT with minimal custom code. The main risks are:
|
|
214
|
+
1. Owner control over cross-chain peer configuration
|
|
215
|
+
2. LayerZero protocol dependencies
|
|
216
|
+
3. Cross-chain bridge risks
|
|
217
|
+
|
|
218
|
+
No user-exploitable bugs. Better than upgradeable tokens (BTR, DUSD) but has cross-chain complexity.
|
|
219
|
+
|
|
220
|
+
### Summary of Risks:
|
|
221
|
+
1. ⚠️ **Owner controls cross-chain peers** (can misconfigure)
|
|
222
|
+
2. ⚠️ **LayerZero protocol risks** (relayer/oracle trust)
|
|
223
|
+
3. ⚠️ **Cross-chain bridge risks** (historical exploits)
|
|
224
|
+
4. ✅ **No mint function** (fixed supply)
|
|
225
|
+
5. ✅ **Not upgradeable** (immutable logic)
|
|
226
|
+
6. ✅ **No pause/blacklist** (free transfers)
|
|
227
|
+
|
|
228
|
+
### Recommendation:
|
|
229
|
+
**MODERATE CAUTION** - Safe for single-chain use. Cross-chain transfers require trust in:
|
|
230
|
+
- Owner's peer configuration
|
|
231
|
+
- LayerZero protocol security
|
|
232
|
+
- Destination chain peer contracts
|
|
233
|
+
|
|
234
|
+
Similar to CHAINBASE (3/10) but slightly higher risk due to larger supply and less established project.
|
|
235
|
+
|
|
236
|
+
---
|
|
237
|
+
|
|
238
|
+
**Audit Date:** March 26, 2026
|
|
239
|
+
**Auditor:** Kiro AI Security Analysis
|
|
240
|
+
**Tools Used:** Manual Code Review, LayerZero OFT Analysis
|
|
241
|
+
**Status:** COMPLETE
|
|
File without changes
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# DXSale Lock UNLOCK EXPLOIT
|
|
2
|
+
|
|
3
|
+
## The Bug in unlockToken()
|
|
4
|
+
|
|
5
|
+
```solidity
|
|
6
|
+
// From bytecode analysis:
|
|
7
|
+
uint256 timeSinceLastUnlock = block.timestamp - lock.lastUnlock;
|
|
8
|
+
uint256 vestedAmount = (timeSinceLastUnlock * lock.v3) / lock.v4;
|
|
9
|
+
|
|
10
|
+
if (vestedAmount > lock.v4) {
|
|
11
|
+
vestedAmount = lock.v4;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
uint256 unlockAmount = (vestedAmount * lock.vestingPercentage) / 100;
|
|
15
|
+
lock.v4 -= unlockAmount;
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## The Critical Flaw
|
|
19
|
+
|
|
20
|
+
During lock creation:
|
|
21
|
+
- v2 = slot 2 storage value (likely a constant like 100 or 1000)
|
|
22
|
+
- v3 = (amount / v2) * (unlockTime - createdAt) / amount
|
|
23
|
+
- v4 = (amount / v2) / vestingPercentage
|
|
24
|
+
|
|
25
|
+
**v3 simplifies to**: `(unlockTime - createdAt) / v2`
|
|
26
|
+
**v4 becomes**: `amount / (v2 * vestingPercentage)`
|
|
27
|
+
|
|
28
|
+
## EXPLOIT VECTOR
|
|
29
|
+
|
|
30
|
+
The unlock calculation `vestedAmount = (timeSinceLastUnlock * v3) / v4` can be manipulated:
|
|
31
|
+
|
|
32
|
+
1. If v2 is large, v3 becomes tiny (integer division rounds down)
|
|
33
|
+
2. If vestingPercentage is large (50, 100), v4 becomes tiny
|
|
34
|
+
3. The division `/ v4` can cause vestedAmount to be HUGE
|
|
35
|
+
4. Then `lock.v4 -= unlockAmount` can underflow or allow draining
|
|
36
|
+
|
|
37
|
+
## ATTACK
|
|
38
|
+
|
|
39
|
+
Call unlockToken() repeatedly with small time intervals. Each call:
|
|
40
|
+
- Calculates vestedAmount based on time passed
|
|
41
|
+
- Due to broken math, can unlock more than intended
|
|
42
|
+
- v4 tracking is wrong, allowing multiple unlocks
|
|
43
|
+
|
|
44
|
+
## POC
|
|
45
|
+
|
|
46
|
+
1. Create lock with vestingPercentage = 100 (makes v4 very small)
|
|
47
|
+
2. Wait minimal time
|
|
48
|
+
3. Call unlockToken() - broken math allows unlock
|
|
49
|
+
4. Repeat until all tokens drained
|
|
File without changes
|