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/BTR_AUDIT.md
ADDED
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
# BTR Token Security Audit
|
|
2
|
+
|
|
3
|
+
**Contract:** BTR Token
|
|
4
|
+
**Proxy:** `0xfed13d0c40790220fbde712987079eda1ed75c51`
|
|
5
|
+
**Implementation:** `0xc8b5a0c5453c15157328b6cc1f1452be032a41f1`
|
|
6
|
+
**Chain:** BSC (BNB Smart Chain)
|
|
7
|
+
**Compiler:** v0.8.24+commit.e11b9ed9 (1000 optimization runs)
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## EXECUTIVE SUMMARY
|
|
12
|
+
|
|
13
|
+
**Risk Rating: 6/10 - MEDIUM-HIGH RISK (UUPS Upgradeable + Role Control)**
|
|
14
|
+
|
|
15
|
+
BTR is a UUPS upgradeable proxy token with role-based access control, pausable transfers, mint quota limits, and whitelist functionality. The contract can be upgraded by admin at any time, and has multiple privileged roles that control critical functions.
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## CONTRACT OVERVIEW
|
|
20
|
+
|
|
21
|
+
```solidity
|
|
22
|
+
Token Name: BTR token
|
|
23
|
+
Symbol: BTR
|
|
24
|
+
Decimals: 18
|
|
25
|
+
Total Supply: 62,748,844.828 BTR
|
|
26
|
+
Max Supply: 1,000,000,000 BTR
|
|
27
|
+
Mint Quota: 500,000,000 BTR
|
|
28
|
+
Standard: ERC20 + UUPS Upgradeable + Pausable + Permit
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### Key Features:
|
|
32
|
+
- **UUPS Upgradeable**: Admin can upgrade implementation
|
|
33
|
+
- **Role-Based Access**: MINTER, BURNER, PAUSER, DEFAULT_ADMIN
|
|
34
|
+
- **Pausable**: Can freeze transfers for non-whitelisted
|
|
35
|
+
- **Mint Quota**: Capped at 500M (50% of max supply)
|
|
36
|
+
- **Whitelist**: Bypass pause restrictions
|
|
37
|
+
- **ERC20Permit**: Gasless approvals
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## SECURITY ANALYSIS
|
|
42
|
+
|
|
43
|
+
### ⚠️ CRITICAL ISSUES
|
|
44
|
+
|
|
45
|
+
1. **UUPS UPGRADEABLE CONTRACT** 🚨
|
|
46
|
+
```solidity
|
|
47
|
+
contract BTRToken is ... UUPSUpgradeable
|
|
48
|
+
```
|
|
49
|
+
- Admin can upgrade implementation at ANY time
|
|
50
|
+
- No timelock or delay
|
|
51
|
+
- Can completely change token behavior
|
|
52
|
+
- **Users have ZERO protection against malicious upgrades**
|
|
53
|
+
- Same risk as DUSD proxy
|
|
54
|
+
|
|
55
|
+
2. **BURNER_ROLE CAN BURN FROM ANY ADDRESS** 🚨
|
|
56
|
+
```solidity
|
|
57
|
+
function burn(address account, uint256 amount) public onlyRole(BURNER_ROLE) {
|
|
58
|
+
_burn(account, amount);
|
|
59
|
+
}
|
|
60
|
+
```
|
|
61
|
+
- BURNER_ROLE can burn tokens from ANY address without approval
|
|
62
|
+
- **This is a CRITICAL backdoor**
|
|
63
|
+
- Users cannot protect their funds
|
|
64
|
+
- Similar to DUSD's 0x83536352 function
|
|
65
|
+
|
|
66
|
+
3. **PAUSABLE TRANSFERS**
|
|
67
|
+
```solidity
|
|
68
|
+
function pause() external onlyRole(PAUSER_ROLE) whenNotPaused
|
|
69
|
+
```
|
|
70
|
+
- PAUSER_ROLE can freeze all transfers
|
|
71
|
+
- Only whitelisted addresses can transfer when paused
|
|
72
|
+
- Users can be locked out of their funds
|
|
73
|
+
|
|
74
|
+
4. **UNLIMITED MINTING (UP TO QUOTA)**
|
|
75
|
+
```solidity
|
|
76
|
+
function mint(address to, uint256 amount) public onlyRole(MINTER_ROLE) {
|
|
77
|
+
require(totalSupply() + amount <= mintQuota, "minting exceeds max quota");
|
|
78
|
+
_mint(to, amount);
|
|
79
|
+
}
|
|
80
|
+
```
|
|
81
|
+
- MINTER can mint up to 500M tokens
|
|
82
|
+
- Current supply: 62.7M (12.5% of quota used)
|
|
83
|
+
- Can mint 437M more tokens (7x current supply)
|
|
84
|
+
- Massive dilution risk
|
|
85
|
+
|
|
86
|
+
5. **ADMIN CONTROL OVER ROLES**
|
|
87
|
+
```solidity
|
|
88
|
+
function setMinter(address minter, bool enabled) public onlyRole(DEFAULT_ADMIN_ROLE)
|
|
89
|
+
function setBurner(address burner, bool enabled) public onlyRole(DEFAULT_ADMIN_ROLE)
|
|
90
|
+
function setWhitelister(address whitelister, bool enabled) public onlyRole(PAUSER_ROLE)
|
|
91
|
+
```
|
|
92
|
+
- Admin can grant/revoke all roles
|
|
93
|
+
- Can add new minters/burners anytime
|
|
94
|
+
- No restrictions on role management
|
|
95
|
+
|
|
96
|
+
### 🔍 CODE QUALITY
|
|
97
|
+
|
|
98
|
+
**GOOD:**
|
|
99
|
+
- OpenZeppelin Upgradeable contracts
|
|
100
|
+
- Role-based access control
|
|
101
|
+
- Mint quota limit (500M cap)
|
|
102
|
+
- Max supply constant (1B)
|
|
103
|
+
- ERC20Permit support
|
|
104
|
+
- Whitelist for pause bypass
|
|
105
|
+
|
|
106
|
+
**BAD:**
|
|
107
|
+
- UUPS upgradeable (can change everything)
|
|
108
|
+
- Burner can burn from any address
|
|
109
|
+
- No timelock on upgrades
|
|
110
|
+
- Pausable (can freeze users)
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
## ON-CHAIN STATE
|
|
115
|
+
|
|
116
|
+
```
|
|
117
|
+
Name: BTR token
|
|
118
|
+
Symbol: BTR
|
|
119
|
+
Total Supply: 62,748,844.828 BTR
|
|
120
|
+
Mint Quota: 500,000,000 BTR (437M remaining)
|
|
121
|
+
Max Supply: 1,000,000,000 BTR
|
|
122
|
+
Paused: false
|
|
123
|
+
Owner: 0x760eB3f1dbBF07Bf3132A28b8B4ACB458266FB4c
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## ATTACK VECTORS
|
|
129
|
+
|
|
130
|
+
### ❌ NO USER-EXPLOITABLE BUGS
|
|
131
|
+
|
|
132
|
+
Standard OZ implementation with proper access controls.
|
|
133
|
+
|
|
134
|
+
### ⚠️ ADMIN ABUSE SCENARIOS
|
|
135
|
+
|
|
136
|
+
1. **Burn User Funds** 🚨
|
|
137
|
+
- BURNER calls `burn(victim, amount)`
|
|
138
|
+
- Burns tokens from victim without approval
|
|
139
|
+
- Victim loses funds permanently
|
|
140
|
+
- **NO USER PROTECTION**
|
|
141
|
+
|
|
142
|
+
2. **Malicious Upgrade** 🚨
|
|
143
|
+
- Admin deploys malicious implementation
|
|
144
|
+
- Upgrades via UUPS
|
|
145
|
+
- New implementation steals all funds
|
|
146
|
+
- No timelock or warning
|
|
147
|
+
|
|
148
|
+
3. **Freeze All Transfers**
|
|
149
|
+
- PAUSER calls `pause()`
|
|
150
|
+
- All non-whitelisted transfers blocked
|
|
151
|
+
- Users cannot sell or move funds
|
|
152
|
+
|
|
153
|
+
4. **Mint 437M More Tokens**
|
|
154
|
+
- MINTER mints up to quota (500M)
|
|
155
|
+
- 7x current supply dilution
|
|
156
|
+
- Price crashes
|
|
157
|
+
|
|
158
|
+
5. **Whitelist Manipulation**
|
|
159
|
+
- Admin adds addresses to whitelist
|
|
160
|
+
- Those addresses bypass pause
|
|
161
|
+
- Can trade while others frozen
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
## COMPARISON TO PREVIOUS AUDITS
|
|
166
|
+
|
|
167
|
+
| Feature | BTR | DUSD | ARK | wkeyDAO2 |
|
|
168
|
+
|---------|-----|------|-----|----------|
|
|
169
|
+
| Upgradeable | YES 🚨 | YES 🚨 | NO ✅ | NO ✅ |
|
|
170
|
+
| Burn from any | YES 🚨 | YES 🚨 | NO ✅ | NO ✅ |
|
|
171
|
+
| Pausable | YES | NO | NO | NO |
|
|
172
|
+
| Mint Quota | 500M | Unlimited | Unlimited | Unlimited |
|
|
173
|
+
| Governance | Active | Active | Renounced ✅ | Active |
|
|
174
|
+
| Risk Level | 6/10 | 9/10 | 3/10 | 6/10 |
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
## FINAL VERDICT
|
|
179
|
+
|
|
180
|
+
**Risk Rating: 6/10 - MEDIUM-HIGH RISK**
|
|
181
|
+
|
|
182
|
+
BTR has TWO critical vulnerabilities:
|
|
183
|
+
1. 🚨 **BURNER_ROLE can burn from any address** without approval
|
|
184
|
+
2. 🚨 **UUPS upgradeable** - admin can change all logic
|
|
185
|
+
|
|
186
|
+
Combined with pausable transfers and 7x dilution potential, this token requires complete trust in the admin team.
|
|
187
|
+
|
|
188
|
+
### Summary of Risks:
|
|
189
|
+
1. 🚨 **BURNER can burn from any address** (no approval needed)
|
|
190
|
+
2. 🚨 **UUPS upgradeable** (can change everything)
|
|
191
|
+
3. ⚠️ **Pausable** (can freeze transfers)
|
|
192
|
+
4. ⚠️ **437M tokens can still be minted** (7x dilution)
|
|
193
|
+
5. ⚠️ **Admin controls all roles**
|
|
194
|
+
6. ⚠️ **No timelocks** or user protections
|
|
195
|
+
|
|
196
|
+
### Recommendation:
|
|
197
|
+
**HIGH CAUTION** - This is effectively a custodial token. Admin can:
|
|
198
|
+
- Burn your tokens at any time
|
|
199
|
+
- Freeze your funds
|
|
200
|
+
- Mint 7x more supply
|
|
201
|
+
- Upgrade to malicious implementation
|
|
202
|
+
|
|
203
|
+
Better than DUSD (9/10) due to mint quota, but worse than ARK (3/10) due to upgradeability.
|
|
204
|
+
|
|
205
|
+
---
|
|
206
|
+
|
|
207
|
+
**Audit Date:** March 26, 2026
|
|
208
|
+
**Auditor:** Kiro AI Security Analysis
|
|
209
|
+
**Tools Used:** Manual Code Review, On-Chain Verification
|
|
210
|
+
**Status:** COMPLETE - CRITICAL VULNERABILITIES FOUND
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
# Beam Bridge (LayerZero OFT) - Security Analysis
|
|
2
|
+
|
|
3
|
+
## Contract Type
|
|
4
|
+
**LayerZero Omnichain Fungible Token (OFT) Bridge** - ProxyOFTWithFee
|
|
5
|
+
|
|
6
|
+
This is a cross-chain bridge that allows transferring tokens between different blockchains using LayerZero protocol.
|
|
7
|
+
|
|
8
|
+
## Key Components
|
|
9
|
+
- **LayerZero Integration**: Cross-chain messaging
|
|
10
|
+
- **Fee Mechanism**: Configurable fees per destination chain
|
|
11
|
+
- **Dust Removal**: Handles decimal precision differences
|
|
12
|
+
- **Failed Message Storage**: Retry mechanism for failed transfers
|
|
13
|
+
- **Upgradeable**: Initializable pattern
|
|
14
|
+
|
|
15
|
+
## Connection to Beam
|
|
16
|
+
|
|
17
|
+
**YES** - This is the official Beam token bridge:
|
|
18
|
+
- Bridges the BeamToken across chains
|
|
19
|
+
- Uses LayerZero for cross-chain communication
|
|
20
|
+
- Implements fee-on-transfer for bridging
|
|
21
|
+
|
|
22
|
+
## Critical Findings
|
|
23
|
+
|
|
24
|
+
### ❌ NOT EXPLOITABLE - Well-Designed Bridge
|
|
25
|
+
|
|
26
|
+
This is a **professionally implemented LayerZero bridge** with proper security measures.
|
|
27
|
+
|
|
28
|
+
### ✅ GOOD: Proper Access Controls
|
|
29
|
+
|
|
30
|
+
```solidity
|
|
31
|
+
function sendFrom(...) {
|
|
32
|
+
require(msg.sender == address(_from),
|
|
33
|
+
Error('ProxyOFTWithFee: owner is not send caller'));
|
|
34
|
+
// Only token owner can bridge their tokens
|
|
35
|
+
}
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### ✅ GOOD: Trusted Remote Validation
|
|
39
|
+
|
|
40
|
+
```solidity
|
|
41
|
+
function lzReceive(...) {
|
|
42
|
+
require(msg.sender == _lzEndpoint);
|
|
43
|
+
require(keccak256(_srcAddress) == keccak256(trustedRemote));
|
|
44
|
+
// Only accepts messages from trusted sources
|
|
45
|
+
}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### ✅ GOOD: Failed Message Handling
|
|
49
|
+
|
|
50
|
+
```solidity
|
|
51
|
+
function retryMessage(...) {
|
|
52
|
+
require(_@_storeFailedMessage_2669[...] != 0);
|
|
53
|
+
require(keccak256(_payload) == storedHash);
|
|
54
|
+
// Can retry failed cross-chain transfers
|
|
55
|
+
}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### 🟡 MEDIUM: Centralized Fee Control
|
|
59
|
+
|
|
60
|
+
**Issue**: Owner can set fees up to 100% per chain.
|
|
61
|
+
|
|
62
|
+
```solidity
|
|
63
|
+
function setFeeBp(uint16 _dstChainId, bool _enabled, uint16 _feeBp) {
|
|
64
|
+
require(msg.sender == _owner);
|
|
65
|
+
require(_feeBp <= 10000); // Max 100%
|
|
66
|
+
_@quoteOFTFee_4451[_dstChainId].field0_0_1 = _feeBp;
|
|
67
|
+
}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
**Impact**: Owner could set 100% bridge fee, effectively blocking transfers to specific chains.
|
|
71
|
+
|
|
72
|
+
### 🟡 MEDIUM: Outbound Amount Tracking
|
|
73
|
+
|
|
74
|
+
**Issue**: `_outboundAmount` tracks tokens locked in bridge. If accounting is wrong, could cause issues.
|
|
75
|
+
|
|
76
|
+
```solidity
|
|
77
|
+
function @_debitFrom_5456(...) {
|
|
78
|
+
_outboundAmount = _outboundAmount + amount;
|
|
79
|
+
require(_outboundAmount <= uint64.max);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
function @_creditTo_5492(...) {
|
|
83
|
+
_outboundAmount = _outboundAmount - amount;
|
|
84
|
+
}
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
**Risk**: If `_outboundAmount` becomes incorrect, `circulatingSupply()` will be wrong.
|
|
88
|
+
|
|
89
|
+
### 🔵 LOW: Dust Handling
|
|
90
|
+
|
|
91
|
+
```solidity
|
|
92
|
+
function @_removeDust_3791(uint256 varg0) {
|
|
93
|
+
dust = varg0 % _@_sd2ld_3768;
|
|
94
|
+
cleanAmount = varg0 - dust;
|
|
95
|
+
// Dust is returned to sender
|
|
96
|
+
}
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
**Good**: Properly handles decimal precision differences between chains.
|
|
100
|
+
|
|
101
|
+
## Risk Assessment
|
|
102
|
+
|
|
103
|
+
### For Users: 🟢 LOW RISK
|
|
104
|
+
|
|
105
|
+
**This is a legitimate bridge** with:
|
|
106
|
+
- ✅ Proper LayerZero integration
|
|
107
|
+
- ✅ Access controls
|
|
108
|
+
- ✅ Failed message retry
|
|
109
|
+
- ✅ Dust handling
|
|
110
|
+
- ⚠️ Centralized fee control (owner can change fees)
|
|
111
|
+
|
|
112
|
+
### For Attackers: ❌ NOT EXPLOITABLE
|
|
113
|
+
|
|
114
|
+
**Cannot**:
|
|
115
|
+
- Bridge without owning tokens
|
|
116
|
+
- Bypass trusted remote checks
|
|
117
|
+
- Manipulate cross-chain messages
|
|
118
|
+
- Steal locked tokens
|
|
119
|
+
- Bypass fee mechanism
|
|
120
|
+
|
|
121
|
+
### Centralization Risks: 🟡 MEDIUM
|
|
122
|
+
|
|
123
|
+
**Owner Powers**:
|
|
124
|
+
- Set bridge fees (0-100%)
|
|
125
|
+
- Set trusted remotes
|
|
126
|
+
- Set minimum gas limits
|
|
127
|
+
- Change fee owner
|
|
128
|
+
- Pause specific chains (via high fees)
|
|
129
|
+
|
|
130
|
+
## Comparison to Other Beam Contracts
|
|
131
|
+
|
|
132
|
+
| Contract | Type | Risk | Exploitable |
|
|
133
|
+
|----------|------|------|-------------|
|
|
134
|
+
| BeamToken | Governance Token | 🟡 MEDIUM | ❌ NO |
|
|
135
|
+
| BeamBridge | LayerZero OFT | 🟢 LOW | ❌ NO |
|
|
136
|
+
|
|
137
|
+
## How It Works
|
|
138
|
+
|
|
139
|
+
### Bridging Flow
|
|
140
|
+
|
|
141
|
+
**Sending Tokens**:
|
|
142
|
+
```
|
|
143
|
+
1. User calls sendFrom(amount, dstChain, recipient)
|
|
144
|
+
2. Bridge takes fee (if configured)
|
|
145
|
+
3. Bridge locks tokens (increases _outboundAmount)
|
|
146
|
+
4. Bridge sends LayerZero message to destination
|
|
147
|
+
5. Destination bridge receives message
|
|
148
|
+
6. Destination bridge unlocks/mints tokens to recipient
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
**Receiving Tokens**:
|
|
152
|
+
```
|
|
153
|
+
1. LayerZero endpoint calls lzReceive()
|
|
154
|
+
2. Bridge validates trusted remote
|
|
155
|
+
3. Bridge decodes payload
|
|
156
|
+
4. Bridge unlocks tokens (decreases _outboundAmount)
|
|
157
|
+
5. Bridge transfers tokens to recipient
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
### Fee Mechanism
|
|
161
|
+
|
|
162
|
+
```solidity
|
|
163
|
+
// Per-chain fees
|
|
164
|
+
chainIdToFeeBps[chainId] = (feeBp, enabled)
|
|
165
|
+
|
|
166
|
+
// Default fee (if chain-specific not set)
|
|
167
|
+
defaultFeeBp = X
|
|
168
|
+
|
|
169
|
+
// Fee calculation
|
|
170
|
+
if (chainFeeEnabled) {
|
|
171
|
+
fee = amount * chainFeeBp / 10000
|
|
172
|
+
} else {
|
|
173
|
+
fee = amount * defaultFeeBp / 10000
|
|
174
|
+
}
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
## Potential Issues (Theoretical)
|
|
178
|
+
|
|
179
|
+
### 1. Fee Manipulation
|
|
180
|
+
|
|
181
|
+
**Scenario**: Owner sets 100% fee for a chain
|
|
182
|
+
**Impact**: Users cannot bridge to that chain
|
|
183
|
+
**Likelihood**: LOW (would damage protocol reputation)
|
|
184
|
+
|
|
185
|
+
### 2. Accounting Error
|
|
186
|
+
|
|
187
|
+
**Scenario**: `_outboundAmount` becomes incorrect due to bug
|
|
188
|
+
**Impact**: `circulatingSupply()` returns wrong value
|
|
189
|
+
**Likelihood**: LOW (code appears correct)
|
|
190
|
+
|
|
191
|
+
### 3. LayerZero Dependency
|
|
192
|
+
|
|
193
|
+
**Scenario**: LayerZero protocol has vulnerability
|
|
194
|
+
**Impact**: Bridge could be exploited
|
|
195
|
+
**Likelihood**: LOW (LayerZero is audited)
|
|
196
|
+
|
|
197
|
+
## Conclusion
|
|
198
|
+
|
|
199
|
+
**Beam Bridge is a LEGITIMATE, WELL-DESIGNED cross-chain bridge**
|
|
200
|
+
|
|
201
|
+
✅ **Strengths**:
|
|
202
|
+
- Professional LayerZero implementation
|
|
203
|
+
- Proper access controls
|
|
204
|
+
- Failed message retry mechanism
|
|
205
|
+
- Dust handling for decimal differences
|
|
206
|
+
- Trusted remote validation
|
|
207
|
+
|
|
208
|
+
⚠️ **Concerns**:
|
|
209
|
+
- Centralized fee control (owner can set 100%)
|
|
210
|
+
- Depends on LayerZero security
|
|
211
|
+
- Owner has significant power
|
|
212
|
+
|
|
213
|
+
❌ **NOT Exploitable**:
|
|
214
|
+
- Cannot bypass access controls
|
|
215
|
+
- Cannot manipulate cross-chain messages
|
|
216
|
+
- Cannot steal locked tokens
|
|
217
|
+
- Requires token ownership to bridge
|
|
218
|
+
|
|
219
|
+
**Overall Assessment**: 🟢 **LOW RISK** - Professional implementation
|
|
220
|
+
|
|
221
|
+
**Recommendation**:
|
|
222
|
+
- For users: SAFE TO USE (trust LayerZero + Beam team)
|
|
223
|
+
- For attackers: NOT EXPLOITABLE
|
|
224
|
+
- For investors: Check fee settings before bridging
|
|
225
|
+
|
|
226
|
+
This is a legitimate part of the Beam ecosystem, NOT a scam like DSync.
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
# BeamToken - Security Analysis
|
|
2
|
+
|
|
3
|
+
## Contract Type
|
|
4
|
+
**ERC20 Governance Token** with:
|
|
5
|
+
- ERC20Votes (voting/delegation)
|
|
6
|
+
- ERC20Permit (gasless approvals)
|
|
7
|
+
- AccessControl (role-based permissions)
|
|
8
|
+
- Mint/Burn capabilities
|
|
9
|
+
|
|
10
|
+
## Key Roles
|
|
11
|
+
- **DEFAULT_ADMIN_ROLE**: `0x0` - Can grant/revoke roles
|
|
12
|
+
- **MINTER_ROLE**: `0x9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6`
|
|
13
|
+
- **BURNER_ROLE**: `0x3c11d16cbaffd01df69ce1c404f6340ee057498f5f00246190ea54220576a848`
|
|
14
|
+
|
|
15
|
+
## Connection to DSync?
|
|
16
|
+
|
|
17
|
+
**UNLIKELY** - This appears to be a different token (BeamToken) based on:
|
|
18
|
+
- Error messages reference "BeamToken"
|
|
19
|
+
- Different architecture (governance token vs simple ERC20)
|
|
20
|
+
- No hardcoded DSync addresses
|
|
21
|
+
|
|
22
|
+
However, it could be part of the same ecosystem or a related project.
|
|
23
|
+
|
|
24
|
+
## Critical Findings
|
|
25
|
+
|
|
26
|
+
### ✅ GOOD: Self-Transfer Protection
|
|
27
|
+
|
|
28
|
+
```solidity
|
|
29
|
+
function @_transfer_4158(uint256 varg0, address varg1, address varg2) private {
|
|
30
|
+
require(this != varg1, Error('BeamToken._transfer: transfer to self not allowed'));
|
|
31
|
+
// ...
|
|
32
|
+
}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
**Good**: Prevents contract from transferring to itself (avoids locked funds).
|
|
36
|
+
|
|
37
|
+
### ✅ GOOD: Mint to Self Protection
|
|
38
|
+
|
|
39
|
+
```solidity
|
|
40
|
+
function mint(address to, uint256 amount) public payable {
|
|
41
|
+
require(_@revokeRole_179[MINTER_ROLE].field0[msg.sender]);
|
|
42
|
+
require(this != to, Error('BeamToken.mint: unable to mint tokens to itself'));
|
|
43
|
+
// ...
|
|
44
|
+
}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
**Good**: Prevents minting to contract address.
|
|
48
|
+
|
|
49
|
+
### 🟡 MEDIUM: Centralized Minting
|
|
50
|
+
|
|
51
|
+
**Issue**: Anyone with MINTER_ROLE can mint unlimited tokens.
|
|
52
|
+
|
|
53
|
+
```solidity
|
|
54
|
+
function mint(address to, uint256 amount) public payable {
|
|
55
|
+
require(_@revokeRole_179[MINTER_ROLE].field0[msg.sender]);
|
|
56
|
+
@_mint_989(amount, to);
|
|
57
|
+
// No cap on total supply (except uint224 limit)
|
|
58
|
+
}
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
**Impact**:
|
|
62
|
+
- Minters can inflate supply
|
|
63
|
+
- No maximum supply cap
|
|
64
|
+
- Centralization risk
|
|
65
|
+
|
|
66
|
+
**Mitigation**: Only uint224 limit prevents overflow:
|
|
67
|
+
```solidity
|
|
68
|
+
require(uint224.max >= _totalSupply,
|
|
69
|
+
Error('ERC20Votes: total supply risks overflowing votes'));
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### 🟡 MEDIUM: Centralized Burning
|
|
73
|
+
|
|
74
|
+
**Issue**: Anyone with BURNER_ROLE can burn tokens from ANY address.
|
|
75
|
+
|
|
76
|
+
```solidity
|
|
77
|
+
function burn(address account, uint256 amount) public payable {
|
|
78
|
+
require(_@revokeRole_179[BURNER_ROLE].field0[msg.sender]);
|
|
79
|
+
@_burn_1061(amount, account); // Burns from 'account', not msg.sender!
|
|
80
|
+
}
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
**Impact**:
|
|
84
|
+
- Burner can destroy anyone's tokens
|
|
85
|
+
- No approval required
|
|
86
|
+
- Centralization risk
|
|
87
|
+
|
|
88
|
+
**This is UNUSUAL** - Most tokens only allow burning your own tokens or with approval.
|
|
89
|
+
|
|
90
|
+
### 🔵 LOW: Domain Separator Hardcoded for Chain 1
|
|
91
|
+
|
|
92
|
+
```solidity
|
|
93
|
+
function @_domainSeparatorV4_2843() private {
|
|
94
|
+
if (CHAINID() != 1) {
|
|
95
|
+
// Calculate dynamically
|
|
96
|
+
return keccak256(...);
|
|
97
|
+
} else {
|
|
98
|
+
return 0x80f6c502ddcafd105fafa433e909f45b207b3b1e9c638eb3081aa80cc0f9ce28;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
**Issue**: Hardcoded for Ethereum mainnet (chain ID 1). If deployed on other chains, uses dynamic calculation.
|
|
104
|
+
|
|
105
|
+
**Impact**: Minor - just an optimization for mainnet.
|
|
106
|
+
|
|
107
|
+
## Is This Exploitable?
|
|
108
|
+
|
|
109
|
+
### ❌ NOT Exploitable by Outsiders
|
|
110
|
+
|
|
111
|
+
**Why**:
|
|
112
|
+
1. **Mint requires MINTER_ROLE** - Can't mint without permission
|
|
113
|
+
2. **Burn requires BURNER_ROLE** - Can't burn without permission
|
|
114
|
+
3. **Standard ERC20** - No transfer restrictions or honeypot mechanisms
|
|
115
|
+
4. **Good access control** - Role-based permissions work correctly
|
|
116
|
+
|
|
117
|
+
### ⚠️ Exploitable by Role Holders
|
|
118
|
+
|
|
119
|
+
**If you have MINTER_ROLE**:
|
|
120
|
+
- Mint unlimited tokens to yourself
|
|
121
|
+
- Dilute other holders
|
|
122
|
+
- Dump on market
|
|
123
|
+
|
|
124
|
+
**If you have BURNER_ROLE**:
|
|
125
|
+
- Burn anyone's tokens
|
|
126
|
+
- Destroy competitor holdings
|
|
127
|
+
- Manipulate supply
|
|
128
|
+
|
|
129
|
+
**If you have DEFAULT_ADMIN_ROLE**:
|
|
130
|
+
- Grant yourself MINTER_ROLE and BURNER_ROLE
|
|
131
|
+
- Complete control over token
|
|
132
|
+
|
|
133
|
+
## Risk Assessment
|
|
134
|
+
|
|
135
|
+
### For Regular Users: 🟡 MEDIUM RISK
|
|
136
|
+
|
|
137
|
+
**Risks**:
|
|
138
|
+
- Minters can inflate supply
|
|
139
|
+
- Burners can destroy your tokens
|
|
140
|
+
- Centralized control
|
|
141
|
+
|
|
142
|
+
**Protections**:
|
|
143
|
+
- Standard ERC20 (no honeypot)
|
|
144
|
+
- Self-transfer protection
|
|
145
|
+
- Voting/governance capabilities
|
|
146
|
+
|
|
147
|
+
### For Attackers: ❌ NOT EXPLOITABLE
|
|
148
|
+
|
|
149
|
+
**Cannot**:
|
|
150
|
+
- Mint without MINTER_ROLE
|
|
151
|
+
- Burn without BURNER_ROLE
|
|
152
|
+
- Bypass access control
|
|
153
|
+
- Exploit transfer logic
|
|
154
|
+
|
|
155
|
+
### For Role Holders: ✅ FULL CONTROL
|
|
156
|
+
|
|
157
|
+
**Can**:
|
|
158
|
+
- Mint unlimited tokens (MINTER_ROLE)
|
|
159
|
+
- Burn anyone's tokens (BURNER_ROLE)
|
|
160
|
+
- Grant/revoke roles (DEFAULT_ADMIN_ROLE)
|
|
161
|
+
|
|
162
|
+
## Comparison to DSync
|
|
163
|
+
|
|
164
|
+
| Feature | BeamToken | DSync |
|
|
165
|
+
|---------|-----------|-------|
|
|
166
|
+
| Type | Governance Token | Simple ERC20 |
|
|
167
|
+
| Sell Tax | None | 60% |
|
|
168
|
+
| Blacklist | None | Yes (unlimited) |
|
|
169
|
+
| Mint | Role-based | None |
|
|
170
|
+
| Burn | Role-based (any address) | None |
|
|
171
|
+
| Voting | Yes | No |
|
|
172
|
+
| Honeypot | No | Yes (sell tax) |
|
|
173
|
+
| Risk Level | 🟡 MEDIUM | 🔴 HIGH |
|
|
174
|
+
|
|
175
|
+
## Conclusion
|
|
176
|
+
|
|
177
|
+
**BeamToken is a STANDARD GOVERNANCE TOKEN** with:
|
|
178
|
+
|
|
179
|
+
✅ **Good**:
|
|
180
|
+
- No honeypot mechanisms
|
|
181
|
+
- No sell tax
|
|
182
|
+
- Self-transfer protection
|
|
183
|
+
- Standard ERC20 implementation
|
|
184
|
+
- Voting/delegation capabilities
|
|
185
|
+
|
|
186
|
+
⚠️ **Concerns**:
|
|
187
|
+
- Centralized minting (unlimited)
|
|
188
|
+
- Centralized burning (can burn anyone's tokens)
|
|
189
|
+
- Role holders have significant power
|
|
190
|
+
|
|
191
|
+
❌ **Not Exploitable**:
|
|
192
|
+
- Requires privileged roles
|
|
193
|
+
- Standard access control
|
|
194
|
+
- No external attack vectors
|
|
195
|
+
|
|
196
|
+
**Overall**: This is a legitimate governance token with centralization risks, NOT a scam like DSync. However, users should trust the team holding MINTER_ROLE and BURNER_ROLE.
|
|
197
|
+
|
|
198
|
+
**Recommendation**:
|
|
199
|
+
- For users: MEDIUM RISK - Depends on who holds roles
|
|
200
|
+
- For attackers: NOT EXPLOITABLE - Need privileged access
|
|
201
|
+
- For investors: Check who has MINTER_ROLE and BURNER_ROLE before investing
|