uups-checker 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.gitmodules +6 -0
- package/AIFI_AUDIT.md +220 -0
- package/ALL_AUDITS_SUMMARY.md +366 -0
- package/ALPHA_PROXY_CRITICAL_FINDING.md +136 -0
- package/ALPHA_PROXY_FINAL_ANALYSIS.md +213 -0
- package/ALPHA_PROXY_FINAL_VERDICT.md +233 -0
- package/ALPHA_PROXY_SELFDESTRUCT_EXPLOIT.md +161 -0
- package/ARIA-foundry-test.txt +9 -0
- package/ARIA-mythril-analysis.txt +20 -0
- package/ARIA-slither-analysis.txt +38 -0
- package/ARIA_AI_SECURITY_AUDIT.md +290 -0
- package/ARIA_VERIFIED_AUDIT.md +259 -0
- package/ARIA_VERIFIED_slither.txt +76 -0
- package/ARIVA_source.txt +1 -0
- package/ARK_AUDIT.md +349 -0
- package/BANANA_AUDIT.md +365 -0
- package/BAS_AUDIT.md +451 -0
- package/BAS_TOKEN_AUDIT.md +235 -0
- package/BCE_EXPLOIT_ANALYSIS.md +165 -0
- package/BEEFY_BNB_CHAIN_ANALYSIS.md +488 -0
- package/BEEFY_MONAD_ANALYSIS.md +239 -0
- package/BEEFY_STAKING_ANALYSIS.md +136 -0
- package/BEEFY_XVS_WBNB_ACTUAL_FINDINGS.md +223 -0
- package/BEEFY_XVS_WBNB_CRITICAL_FINDINGS.md +269 -0
- package/BLOCKSEC_ATTACK_KNOWLEDGE_BASE.md +771 -0
- package/BRISE_ANALYSIS.txt +31 -0
- package/BRISE_BSC_DAPPS.txt +68 -0
- package/BRISE_EXPLOITS_FOUND.md +98 -0
- package/BRISE_REAL_EXPLOITS.md +115 -0
- package/BRISE_WHITEHAT_REPORT.md +162 -0
- package/BRISEstake_Analysis.txt +95 -0
- package/BSCSLOCKTOKEN_CRITICAL_FINDING.md +240 -0
- package/BSW_BISWAP_SECURITY_AUDIT.md +330 -0
- package/BTCST_FINAL_VERDICT.md +319 -0
- package/BTCST_MINING_REBASE_ANALYSIS.md +229 -0
- package/BTCST_ROUNDING_DEEP_DIVE.md +293 -0
- package/BTCST_ROUNDING_FINAL_VERDICT.md +9 -0
- package/BTCST_SECURITY_ANALYSIS.md +391 -0
- package/BTR_AUDIT.md +210 -0
- package/BeamBridge-analysis.md +226 -0
- package/BeamToken-analysis.md +201 -0
- package/BitgertSwap_Investigation.txt +107 -0
- package/CEEK_STAKING_ANALYSIS.md +0 -0
- package/CHAINBASE_AUDIT.md +422 -0
- package/COMPLETE_AUDIT_SUMMARY.md +342 -0
- package/CORRECTED_ANALYSIS.txt +115 -0
- package/DBXEN_COMPARISON_SUMMARY.md +232 -0
- package/DBXEN_EXPLOIT_ANALYSIS.md +530 -0
- package/DOPFairLaunch_raw.json +29 -0
- package/DOPFairLaunch_source.txt +0 -0
- package/DOP_BRIDGE_FINAL_ANALYSIS.txt +86 -0
- package/DOP_BUSD_LP_ANALYSIS.txt +44 -0
- package/DOP_FAIRLAUNCH_ANALYSIS.txt +61 -0
- package/DOP_FAIRLAUNCH_FINAL_VERDICT.txt +113 -0
- package/DOP_STAKING_CONTRACT_ANALYSIS.txt +67 -0
- package/DSYNC_ECOSYSTEM_ANALYSIS.md +221 -0
- package/DSyncStaking-exploit-analysis.md +153 -0
- package/DSyncVault-analysis.md +120 -0
- package/DUSD_PROXY_AUDIT.md +407 -0
- package/DXSALE_LOCK_AUDIT.md +0 -0
- package/DXSaleLock_bytecode.txt +1 -0
- package/ECHIDNA_QUICK_START.md +101 -0
- package/ELEPHANT_ECOSYSTEM_AUDIT_PLAN.md +159 -0
- package/ELEPHANT_ECOSYSTEM_COMPREHENSIVE_AUDIT.md +427 -0
- package/ELEPHANT_SECURITY_ANALYSIS.md +209 -0
- package/ELEPHANT_VULNERABILITIES_EXPLAINED.md +455 -0
- package/EXPLOIT_FIX.md +300 -0
- package/EXPLOIT_INSTRUCTIONS.md +273 -0
- package/EXPLOIT_SUMMARY.md +285 -0
- package/EXPLOIT_SUMMARY.txt +175 -0
- package/FALCON_FINANCE_AUDIT.md +258 -0
- package/FANDOM_AUDIT.md +359 -0
- package/FEE_ON_TRANSFER_ANALYSIS.md +228 -0
- package/FINAL_AUDIT_REPORT.md +0 -0
- package/FOLIO_PROXY_AUDIT.md +299 -0
- package/FOT_EXPLOIT_RESULTS.txt +110 -0
- package/FOT_TOKENS_AUDITED.md +103 -0
- package/HEGIC-mythril-analysis.txt +39 -0
- package/HEGIC_COMPLETE_ANALYSIS.md +343 -0
- package/HOTCROSS_SWAP_EXPLOIT_ANALYSIS.md +123 -0
- package/ICECREAMSWAP_EXPLOITS.md +259 -0
- package/IMMUNEFI_REPORT.md +314 -0
- package/KCCPAD_EXPLOIT_GUIDE.md +285 -0
- package/KEL_CEL_EXPLOIT_ANALYSIS.md +0 -0
- package/KOGE_AUDIT.md +328 -0
- package/LENDFLARE_ANALYSIS.md +239 -0
- package/LENDFLARE_ECHIDNA_GUIDE.md +356 -0
- package/LENDFLARE_EXPLOIT_INSTRUCTIONS.md +297 -0
- package/LENDFLARE_EXPLOIT_SUMMARY.md +292 -0
- package/LENDFLARE_FLASHLOAN_GUIDE.md +383 -0
- package/LENDFLARE_FUZZING_RESULTS.md +252 -0
- package/LENDFLARE_HONEYPOT_BYPASS_ANALYSIS.md +420 -0
- package/LENDFLARE_MANUAL_FUZZING.md +324 -0
- package/LENDFLARE_MYTHRIL_ANALYSIS.md +339 -0
- package/LENDFLARE_V3_BYPASS.md +296 -0
- package/LFTDECOMPILE.txt +14478 -0
- package/LFT_ACCOUNTING_ANALYSIS.md +0 -0
- package/LFT_ACCOUNTING_BUG_ANALYSIS.md +426 -0
- package/LFT_BACKDOOR_DEEP_DIVE.md +0 -0
- package/LFT_CRITICAL_EXPLOIT_CONFIRMED.md +428 -0
- package/LFT_EXPLOIT_VISUAL.md +253 -0
- package/LFT_QUICK_SUMMARY.md +124 -0
- package/LFT_REVERSE_EXPLOIT_ANALYSIS.md +521 -0
- package/MGO_AUDIT_REPORT.md +420 -0
- package/MYTHRIL_FINAL_REPORT.md +306 -0
- package/MYTHRIL_SLITHER_SUMMARY.md +244 -0
- package/NETX_MIGRATION_AUDIT.md +0 -0
- package/NPM_PUBLISH_GUIDE.md +0 -0
- package/NRV_CRITICAL_EXPLOIT.txt +143 -0
- package/NetX_Analysis.txt +76 -0
- package/NetX_Migration_bytecode.txt +1 -0
- package/NetX_Migration_source.txt +0 -0
- package/NetX_Token_source.txt +0 -0
- package/NetxWhitehatRescue +22 -0
- package/OILER_ATTACK_VISUAL.md +351 -0
- package/OILER_BLOCKSEC_TEST_RESULTS.md +421 -0
- package/OILER_DEEP_ANALYSIS.md +212 -0
- package/OILER_FINAL_EXPLOIT_REPORT.md +241 -0
- package/OILER_FINAL_VERDICT.md +339 -0
- package/OILER_REENTRANCY_EXPLAINED.md +638 -0
- package/OILER_REENTRANCY_FINAL_SUMMARY.md +391 -0
- package/OILER_REENTRANCY_REALITY_CHECK.md +393 -0
- package/OILER_REENTRANCY_STEP_BY_STEP.md +597 -0
- package/OILER_STAKING_MAINNET_ANALYSIS.md +366 -0
- package/OILER_STAKING_SECURITY_ANALYSIS.md +409 -0
- package/PANCAKESWAP_UNDERFLOW_HUNTING.md +317 -0
- package/POLS_MULTICHAIN_AUDIT.md +0 -0
- package/POSI_STAKING_AUDIT.md +0 -0
- package/PROXY2_SECURITY_ANALYSIS.md +0 -0
- package/Proxy2TACS +29748 -0
- package/QUICK_START.md +240 -0
- package/RAMP_SECURITY_ANALYSIS.md +0 -0
- package/README.md +238 -0
- package/REAUDIT_MASTER_LIST.txt +15 -0
- package/RING_analysis.txt +212 -0
- package/RPC +4 -0
- package/RULES.txt +20 -0
- package/SIREN_AUDIT.md +186 -0
- package/SYNC_EXPLOIT_README.md +0 -0
- package/SYNC_TOKEN_EXPLOIT_REPORT.md +224 -0
- package/TLM_raw.html +0 -0
- package/TLM_raw.txt +0 -0
- package/TLM_response.json +1 -0
- package/TRADOOR_AUDIT.md +253 -0
- package/TRUNK_AUDIT.md +285 -0
- package/UNIBASE_AUDIT.md +241 -0
- package/UNLOCK_ANALYSIS.md +0 -0
- package/UNLOCK_EXPLOIT.md +49 -0
- package/UNLOCK_EXPLOIT_ANALYSIS.md +0 -0
- package/UPS +232 -0
- package/UUPSCHECKER +208 -0
- package/VAULT_PROXY_AUDIT.md +457 -0
- package/VAULT_PROXY_FINAL_VERDICT.md +0 -0
- package/VERIFIED_EXPLOITS_FINAL.txt +146 -0
- package/WKEYDAO2_AUDIT.md +245 -0
- package/WSG_AUDIT.md +0 -0
- package/XFI_DEEP_ANALYSIS.md +327 -0
- package/YOOSHI_EXPLOIT_GUIDE.md +119 -0
- package/YSDAO_EXPLOIT_GUIDE.md +0 -0
- package/agent-4-bundle.md +22490 -0
- package/alpha-proxy-echidna.txt +1 -0
- package/alpha-proxy-fuzz-results.txt +81 -0
- package/alpha-proxy-mythril.txt +2 -0
- package/analyze-btcst-farm.js +54 -0
- package/analyze-dxsale-lock.js +75 -0
- package/analyze-elephant.js +69 -0
- package/analyze-fara-rewards.js +109 -0
- package/analyze-fara-storage.js +83 -0
- package/analyze-lft-transaction.js +158 -0
- package/analyze-lock-bytecode.js +59 -0
- package/analyze-shegic.js +0 -0
- package/analyze-staking-abi.js +0 -0
- package/analyze-sxp.js +57 -0
- package/analyze-tlm.js +76 -0
- package/analyze-trumpet.js +98 -0
- package/analyze-unlimited-nft.js +108 -0
- package/analyze_elephant.sh +27 -0
- package/analyze_vault.sh +32 -0
- package/aria-bytecode.txt +1 -0
- package/aria_response.json +1 -0
- package/ark_temp/README.md +66 -0
- package/ark_temp/lib/forge-std/.gitattributes +1 -0
- package/ark_temp/lib/forge-std/.github/CODEOWNERS +1 -0
- package/ark_temp/lib/forge-std/.github/dependabot.yml +6 -0
- package/ark_temp/lib/forge-std/.github/workflows/ci.yml +125 -0
- package/ark_temp/lib/forge-std/.github/workflows/sync.yml +36 -0
- package/ark_temp/lib/forge-std/CONTRIBUTING.md +193 -0
- package/ark_temp/lib/forge-std/LICENSE-APACHE +203 -0
- package/ark_temp/lib/forge-std/LICENSE-MIT +25 -0
- package/ark_temp/lib/forge-std/README.md +314 -0
- package/ark_temp/lib/forge-std/RELEASE_CHECKLIST.md +12 -0
- package/ark_temp/lib/forge-std/package.json +16 -0
- package/ark_temp/lib/forge-std/scripts/vm.py +636 -0
- package/audits/AiFi-security-audit-20260326.md +499 -0
- package/audits/BasedAI-Brains-security-audit-20260324.md +651 -0
- package/audits/BinanceAlphaWallet-pashov-ai-audit-report-20260324-170000.md +362 -0
- package/audits/DGToken-security-audit-20260324.md +376 -0
- package/audits/DSyncStaking-audit-part1.md +161 -0
- package/audits/DSyncStaking-security-audit-20260324.md +547 -0
- package/audits/DecompiledERC20-security-audit-20260325.md +397 -0
- package/audits/DegenVC-security-audit-20260324.md +585 -0
- package/audits/DelreyInu-security-audit-20260324.md +463 -0
- package/audits/DestraNetwork-security-audit-20260324.md +705 -0
- package/audits/DomiToken-security-audit-20260324.md +514 -0
- package/audits/LendFlareToken-security-audit-20260325.md +197 -0
- package/audits/LockReleaseTokenPool-security-audit-20260324.md +482 -0
- package/audits/MOG-pashov-ai-audit-report-20260324-164900.md +229 -0
- package/audits/PAALAI-security-audit-20260324.md +475 -0
- package/audits/PAR-security-audit-20260325.md +311 -0
- package/audits/PepeCoinStaking-security-audit-20260324.md +358 -0
- package/audits/StakingPool-security-audit-20260324.md +517 -0
- package/audits/SyncToken-security-audit-20260324.md +778 -0
- package/audits/UndeadToken-decompiled-security-audit-20260324.md +485 -0
- package/audits/UnknownToken-decompiled-security-audit-20260324.md +647 -0
- package/audits/XFIStaking-security-audit-20260324.md +682 -0
- package/audits/Xfinance-security-audit-20260324.md +463 -0
- package/audits/basedAIFarm-security-audit-20260324.md +330 -0
- package/audits/pepeCoin-security-audit-20260324.md +462 -0
- package/bin/ups +232 -0
- package/binance-wallet-exploit/.env.example +2 -0
- package/binance-wallet-exploit/EXECUTIVE_SUMMARY.md +272 -0
- package/binance-wallet-exploit/EXPLOIT_SUMMARY.md +104 -0
- package/binance-wallet-exploit/FINAL_ANALYSIS.md +326 -0
- package/binance-wallet-exploit/FLASHLOAN_ATTACK.md +292 -0
- package/binance-wallet-exploit/HONEYPOT_REPORT.md +526 -0
- package/binance-wallet-exploit/INVESTIGATION_COMPLETE.md +362 -0
- package/binance-wallet-exploit/LENDFLARE_EXPLOIT.md +219 -0
- package/binance-wallet-exploit/LENDFLARE_FINAL_ATTACK.md +307 -0
- package/binance-wallet-exploit/LENDFLARE_REAL_EXPLOIT.md +286 -0
- package/binance-wallet-exploit/LENDFLARE_RUGPULL.md +269 -0
- package/binance-wallet-exploit/LFT_ANALYSIS.md +206 -0
- package/binance-wallet-exploit/QUICK_START.md +75 -0
- package/binance-wallet-exploit/README.md +195 -0
- package/binance-wallet-exploit/REAL_TX_EXPLOIT_ANALYSIS.md +271 -0
- package/binance-wallet-exploit/REMIX_INSTRUCTIONS.md +223 -0
- package/binance-wallet-exploit/TEST_RESULTS.md +203 -0
- package/binance-wallet-exploit/cache/solidity-files-cache.json +1 -0
- package/binance-wallet-exploit/cache/test-failures +1 -0
- package/binance-wallet-exploit/lib/forge-std/.gitattributes +1 -0
- package/binance-wallet-exploit/lib/forge-std/.github/CODEOWNERS +1 -0
- package/binance-wallet-exploit/lib/forge-std/.github/dependabot.yml +6 -0
- package/binance-wallet-exploit/lib/forge-std/.github/workflows/ci.yml +125 -0
- package/binance-wallet-exploit/lib/forge-std/.github/workflows/sync.yml +36 -0
- package/binance-wallet-exploit/lib/forge-std/CONTRIBUTING.md +193 -0
- package/binance-wallet-exploit/lib/forge-std/LICENSE-APACHE +203 -0
- package/binance-wallet-exploit/lib/forge-std/LICENSE-MIT +25 -0
- package/binance-wallet-exploit/lib/forge-std/README.md +314 -0
- package/binance-wallet-exploit/lib/forge-std/RELEASE_CHECKLIST.md +12 -0
- package/binance-wallet-exploit/lib/forge-std/package.json +16 -0
- package/binance-wallet-exploit/lib/forge-std/scripts/vm.py +636 -0
- package/binance-wallet-exploit/out/build-info/1e9aa7e86cf56962.json +1 -0
- package/binance-wallet-exploit/out/build-info/6f56f10e9d7b56eb.json +1 -0
- package/binance-wallet-exploit/out/build-info/7edba961ff697a24.json +1 -0
- package/binance-wallet-exploit/out/build-info/8c27fe3efea2f2e7.json +1 -0
- package/binance-wallet-exploit/out/build-info/978b680daffec63a.json +1 -0
- package/binance-wallet-exploit/out/build-info/9806b900b5672d0c.json +1 -0
- package/binance-wallet-exploit/out/build-info/b4b9ff36e9b3fc27.json +1 -0
- package/binance-wallet-exploit/out/build-info/b6f4df9ae05c0812.json +1 -0
- package/binance-wallet-exploit/out/build-info/c88dbc86551f7b5c.json +1 -0
- package/binance-wallet-exploit/out/build-info/e9657504010623db.json +1 -0
- package/cache/fuzz/failures/ARIAVerifiedFuzzTest/testFuzz_ApprovalRaceCondition +1 -0
- package/cache/fuzz/failures/HotCrossSwapFuzzTest/testFuzz_DirectTransferExploit +1 -0
- package/cache/fuzz/failures/HotCrossSwapFuzzTest/testFuzz_LargeSwapDrain +1 -0
- package/cache/fuzz/failures/LendFlareFuzz/testFuzz_ApprovalExploit +1 -0
- package/cache/fuzz/failures/LendFlareFuzz/testFuzz_BalanceManipulation +1 -0
- package/cache/fuzz/failures/LendFlareFuzz/testFuzz_RateManipulation +1 -0
- package/cache/fuzz/failures/LendFlareFuzz/testFuzz_StorageManipulation +1 -0
- package/cache/fuzz/failures/PARFuzzTest/testFuzz_OverflowTransfer +1 -0
- package/cache/fuzz/failures/PARFuzzTest/testFuzz_Transfer +1 -0
- package/cache/fuzz/failures/XFIDeepFuzz/testFuzz_FrontrunAddfunds +1 -0
- package/cache/fuzz/failures/XFIDeepFuzz/testFuzz_RewardOverflow +1 -0
- package/cache/fuzz/failures/XFIDeepFuzz/testFuzz_RoundingExploit +1 -0
- package/cache/fuzz/failures/XFIDeepFuzz/testFuzz_WithdrawLimit +1 -0
- package/cache/solidity-files-cache.json +1 -0
- package/cache/test-failures +1 -0
- package/calculate-elephant-flashloan.js +195 -0
- package/check-address-approval.js +112 -0
- package/check-alpha-proxy.js +42 -0
- package/check-arbitrage.js +155 -0
- package/check-aria-token.js +47 -0
- package/check-ark.sh +20 -0
- package/check-btcst-mining.js +75 -0
- package/check-btcst-pools.js +163 -0
- package/check-btcst.js +88 -0
- package/check-caller.js +26 -0
- package/check-ceek-lp.js +73 -0
- package/check-ceek.js +47 -0
- package/check-dxsale-address.js +35 -0
- package/check-fara-exploit-timing.js +56 -0
- package/check-fara-real-exploit.js +73 -0
- package/check-flashloan-limits.js +129 -0
- package/check-kel-cel-pool.js +91 -0
- package/check-lax-staking.js +41 -0
- package/check-lendflare.js +165 -0
- package/check-lft-accounting.js +109 -0
- package/check-lft-roles.js +165 -0
- package/check-lock-time.js +47 -0
- package/check-min-stake.js +73 -0
- package/check-mystery-contract.js +52 -0
- package/check-next-token.js +50 -0
- package/check-nora-lock.js +67 -0
- package/check-oiler-approvals.js +116 -0
- package/check-oiler-proxy.js +73 -0
- package/check-oiler-staking.js +117 -0
- package/check-proxy-simple.js +71 -0
- package/check-recent-stakes.js +54 -0
- package/check-shegic-holdings.js +67 -0
- package/check-snowcrash-ecosystem.js +83 -0
- package/check-sync-lp.js +97 -0
- package/check-sync-stake.js +42 -0
- package/check-tlm.js +37 -0
- package/check-token-pools.js +146 -0
- package/check-trunk-depeg.js +181 -0
- package/check-tusd-decimals.js +58 -0
- package/check-user-storage-deep.js +81 -0
- package/check-welephant-pools.js +130 -0
- package/check-xfi-pool.js +75 -0
- package/check-zypher.js +32 -0
- package/check_proxy.sh +36 -0
- package/compare-tlm-chains.js +90 -0
- package/contract_0x05f2.html +6025 -0
- package/contract_0x3720.html +6361 -0
- package/contract_0x928e.html +5606 -0
- package/contract_0xc42d.html +5304 -0
- package/contract_page.html +5789 -0
- package/decode-stake-tx.js +50 -0
- package/deep-analyze-lock.js +82 -0
- package/dune_uups_proxy_query.sql +42 -0
- package/dune_uups_vulnerable_query.sql +0 -0
- package/echidna/alpha-proxy.yaml +14 -0
- package/echidna/elephant.yaml +7 -0
- package/echidna/lendflare.yaml +42 -0
- package/echidna.config.yaml +12 -0
- package/elephant_raw.json +1 -0
- package/eps_raw.json +1 -0
- package/exploit/.github/workflows/test.yml +38 -0
- package/exploit/.gitmodules +3 -0
- package/exploit/README.md +66 -0
- package/exploit/foundry.lock +8 -0
- package/exploit/lib/forge-std/.gitattributes +1 -0
- package/exploit/lib/forge-std/.github/CODEOWNERS +1 -0
- package/exploit/lib/forge-std/.github/dependabot.yml +6 -0
- package/exploit/lib/forge-std/.github/workflows/ci.yml +125 -0
- package/exploit/lib/forge-std/.github/workflows/sync.yml +36 -0
- package/exploit/lib/forge-std/CONTRIBUTING.md +193 -0
- package/exploit/lib/forge-std/LICENSE-APACHE +203 -0
- package/exploit/lib/forge-std/LICENSE-MIT +25 -0
- package/exploit/lib/forge-std/README.md +314 -0
- package/exploit/lib/forge-std/RELEASE_CHECKLIST.md +12 -0
- package/exploit/lib/forge-std/package.json +16 -0
- package/exploit/lib/forge-std/scripts/vm.py +636 -0
- package/exploit_analysis.txt +51 -0
- package/extract_contract.py +21 -0
- package/extract_elephant_contracts.py +24 -0
- package/fara-staking-bytecode.txt +1 -0
- package/fara-staking-raw.txt +1 -0
- package/fetch-aria.js +46 -0
- package/fetch-contract.js +50 -0
- package/fetch-shegic-source.js +86 -0
- package/fetch-snowcrash.js +44 -0
- package/fetch-staking-source.js +53 -0
- package/fetch-tlm.js +60 -0
- package/fetch_elephant_source.py +32 -0
- package/find-ceek-staking.js +21 -0
- package/find-exploit-tx.js +88 -0
- package/find-oiler-holders.js +100 -0
- package/find-tlm-holder.js +36 -0
- package/find-vulnerable-fund.js +94 -0
- package/foundry.lock +8 -0
- package/fuzz-all.sh +53 -0
- package/get-aria-contract.py +40 -0
- package/get-lft-holders.js +89 -0
- package/get-tlm-source.sh +8 -0
- package/harvest_txs.json +1 -0
- package/lft-bytecode-raw.txt +1 -0
- package/lft-bytecode.json +1 -0
- package/lft-impl.bin +1 -0
- package/lft-implementation-bytecode.txt +1 -0
- package/lib/forge-std/.gitattributes +1 -0
- package/lib/forge-std/.github/CODEOWNERS +1 -0
- package/lib/forge-std/.github/dependabot.yml +6 -0
- package/lib/forge-std/.github/workflows/ci.yml +125 -0
- package/lib/forge-std/.github/workflows/sync.yml +36 -0
- package/lib/forge-std/CONTRIBUTING.md +193 -0
- package/lib/forge-std/LICENSE-APACHE +203 -0
- package/lib/forge-std/LICENSE-MIT +25 -0
- package/lib/forge-std/README.md +314 -0
- package/lib/forge-std/RELEASE_CHECKLIST.md +12 -0
- package/lib/forge-std/package.json +16 -0
- package/lib/forge-std/scripts/vm.py +636 -0
- package/lib/openzeppelin-contracts/.changeset/config.json +12 -0
- package/lib/openzeppelin-contracts/.codecov.yml +12 -0
- package/lib/openzeppelin-contracts/.editorconfig +21 -0
- package/lib/openzeppelin-contracts/.eslintrc +20 -0
- package/lib/openzeppelin-contracts/.github/ISSUE_TEMPLATE/bug_report.md +21 -0
- package/lib/openzeppelin-contracts/.github/ISSUE_TEMPLATE/config.yml +4 -0
- package/lib/openzeppelin-contracts/.github/ISSUE_TEMPLATE/feature_request.md +14 -0
- package/lib/openzeppelin-contracts/.github/PULL_REQUEST_TEMPLATE.md +20 -0
- package/lib/openzeppelin-contracts/.github/actions/gas-compare/action.yml +49 -0
- package/lib/openzeppelin-contracts/.github/actions/setup/action.yml +21 -0
- package/lib/openzeppelin-contracts/.github/actions/storage-layout/action.yml +55 -0
- package/lib/openzeppelin-contracts/.github/workflows/actionlint.yml +18 -0
- package/lib/openzeppelin-contracts/.github/workflows/changeset.yml +28 -0
- package/lib/openzeppelin-contracts/.github/workflows/checks.yml +118 -0
- package/lib/openzeppelin-contracts/.github/workflows/docs.yml +19 -0
- package/lib/openzeppelin-contracts/.github/workflows/formal-verification.yml +68 -0
- package/lib/openzeppelin-contracts/.github/workflows/release-cycle.yml +214 -0
- package/lib/openzeppelin-contracts/.github/workflows/upgradeable.yml +34 -0
- package/lib/openzeppelin-contracts/.gitmodules +7 -0
- package/lib/openzeppelin-contracts/.mocharc.js +4 -0
- package/lib/openzeppelin-contracts/.prettierrc +15 -0
- package/lib/openzeppelin-contracts/.solcover.js +13 -0
- package/lib/openzeppelin-contracts/CHANGELOG.md +972 -0
- package/lib/openzeppelin-contracts/CODE_OF_CONDUCT.md +73 -0
- package/lib/openzeppelin-contracts/CONTRIBUTING.md +36 -0
- package/lib/openzeppelin-contracts/GUIDELINES.md +148 -0
- package/lib/openzeppelin-contracts/LICENSE +22 -0
- package/lib/openzeppelin-contracts/README.md +107 -0
- package/lib/openzeppelin-contracts/RELEASING.md +45 -0
- package/lib/openzeppelin-contracts/SECURITY.md +42 -0
- package/lib/openzeppelin-contracts/audits/2017-03.md +292 -0
- package/lib/openzeppelin-contracts/audits/2018-10.pdf +0 -0
- package/lib/openzeppelin-contracts/audits/2022-10-Checkpoints.pdf +0 -0
- package/lib/openzeppelin-contracts/audits/2022-10-ERC4626.pdf +0 -0
- package/lib/openzeppelin-contracts/audits/2023-05-v4.9.pdf +0 -0
- package/lib/openzeppelin-contracts/audits/2023-10-v5.0.pdf +0 -0
- package/lib/openzeppelin-contracts/audits/README.md +17 -0
- package/lib/openzeppelin-contracts/certora/Makefile +54 -0
- package/lib/openzeppelin-contracts/certora/README.md +60 -0
- package/lib/openzeppelin-contracts/certora/diff/access_manager_AccessManager.sol.patch +97 -0
- package/lib/openzeppelin-contracts/certora/reports/2021-10.pdf +0 -0
- package/lib/openzeppelin-contracts/certora/reports/2022-03.pdf +0 -0
- package/lib/openzeppelin-contracts/certora/reports/2022-05.pdf +0 -0
- package/lib/openzeppelin-contracts/certora/run.js +160 -0
- package/lib/openzeppelin-contracts/certora/specs/AccessControl.spec +119 -0
- package/lib/openzeppelin-contracts/certora/specs/AccessControlDefaultAdminRules.spec +464 -0
- package/lib/openzeppelin-contracts/certora/specs/DoubleEndedQueue.spec +300 -0
- package/lib/openzeppelin-contracts/certora/specs/ERC20.spec +352 -0
- package/lib/openzeppelin-contracts/certora/specs/ERC20FlashMint.spec +55 -0
- package/lib/openzeppelin-contracts/certora/specs/ERC20Wrapper.spec +198 -0
- package/lib/openzeppelin-contracts/certora/specs/ERC721.spec +679 -0
- package/lib/openzeppelin-contracts/certora/specs/EnumerableMap.spec +333 -0
- package/lib/openzeppelin-contracts/certora/specs/EnumerableSet.spec +246 -0
- package/lib/openzeppelin-contracts/certora/specs/Initializable.spec +165 -0
- package/lib/openzeppelin-contracts/certora/specs/Ownable.spec +77 -0
- package/lib/openzeppelin-contracts/certora/specs/Ownable2Step.spec +108 -0
- package/lib/openzeppelin-contracts/certora/specs/Pausable.spec +96 -0
- package/lib/openzeppelin-contracts/certora/specs/TimelockController.spec +274 -0
- package/lib/openzeppelin-contracts/certora/specs/helpers/helpers.spec +7 -0
- package/lib/openzeppelin-contracts/certora/specs/methods/IAccessControl.spec +8 -0
- package/lib/openzeppelin-contracts/certora/specs/methods/IAccessControlDefaultAdminRules.spec +36 -0
- package/lib/openzeppelin-contracts/certora/specs/methods/IERC20.spec +11 -0
- package/lib/openzeppelin-contracts/certora/specs/methods/IERC2612.spec +5 -0
- package/lib/openzeppelin-contracts/certora/specs/methods/IERC3156FlashBorrower.spec +3 -0
- package/lib/openzeppelin-contracts/certora/specs/methods/IERC3156FlashLender.spec +5 -0
- package/lib/openzeppelin-contracts/certora/specs/methods/IERC5313.spec +3 -0
- package/lib/openzeppelin-contracts/certora/specs/methods/IERC721.spec +17 -0
- package/lib/openzeppelin-contracts/certora/specs/methods/IERC721Receiver.spec +3 -0
- package/lib/openzeppelin-contracts/certora/specs/methods/IOwnable.spec +5 -0
- package/lib/openzeppelin-contracts/certora/specs/methods/IOwnable2Step.spec +7 -0
- package/lib/openzeppelin-contracts/certora/specs.json +86 -0
- package/lib/openzeppelin-contracts/contracts/access/README.adoc +43 -0
- package/lib/openzeppelin-contracts/contracts/finance/README.adoc +14 -0
- package/lib/openzeppelin-contracts/contracts/governance/README.adoc +167 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/README.adoc +82 -0
- package/lib/openzeppelin-contracts/contracts/metatx/README.adoc +12 -0
- package/lib/openzeppelin-contracts/contracts/package.json +32 -0
- package/lib/openzeppelin-contracts/contracts/proxy/README.adoc +87 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC1155/README.adoc +41 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC20/README.adoc +67 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC721/README.adoc +67 -0
- package/lib/openzeppelin-contracts/contracts/token/common/README.adoc +10 -0
- package/lib/openzeppelin-contracts/contracts/utils/README.adoc +88 -0
- package/lib/openzeppelin-contracts/contracts/vendor/compound/LICENSE +11 -0
- package/lib/openzeppelin-contracts/docs/README.md +16 -0
- package/lib/openzeppelin-contracts/docs/antora.yml +7 -0
- package/lib/openzeppelin-contracts/docs/config.js +21 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack-3a.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack-3b.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack-6.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-deposit.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-mint.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-rate-linear.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-rate-loglog.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-rate-loglogext.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/tally-exec.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/tally-vote.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/nav.adoc +23 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/access-control.adoc +204 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/backwards-compatibility.adoc +48 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/crowdsales.adoc +11 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/drafts.adoc +19 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/erc1155.adoc +145 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/erc20-supply.adoc +71 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/erc20.adoc +77 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/erc4626.adoc +214 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/erc721.adoc +79 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/extending-contracts.adoc +77 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/faq.adoc +13 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/governance.adoc +240 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/index.adoc +79 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/tokens.adoc +31 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/upgradeable.adoc +77 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/utilities.adoc +185 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/wizard.adoc +15 -0
- package/lib/openzeppelin-contracts/docs/templates/contract.hbs +111 -0
- package/lib/openzeppelin-contracts/docs/templates/helpers.js +46 -0
- package/lib/openzeppelin-contracts/docs/templates/page.hbs +4 -0
- package/lib/openzeppelin-contracts/docs/templates/properties.js +64 -0
- package/lib/openzeppelin-contracts/hardhat/env-artifacts.js +24 -0
- package/lib/openzeppelin-contracts/hardhat/env-contract.js +25 -0
- package/lib/openzeppelin-contracts/hardhat/ignore-unreachable-warnings.js +45 -0
- package/lib/openzeppelin-contracts/hardhat/skip-foundry-tests.js +6 -0
- package/lib/openzeppelin-contracts/hardhat/task-test-get-files.js +25 -0
- package/lib/openzeppelin-contracts/hardhat.config.js +131 -0
- package/lib/openzeppelin-contracts/lib/erc4626-tests/LICENSE +661 -0
- package/lib/openzeppelin-contracts/lib/erc4626-tests/README.md +116 -0
- package/lib/openzeppelin-contracts/lib/forge-std/.github/workflows/ci.yml +92 -0
- package/lib/openzeppelin-contracts/lib/forge-std/.gitmodules +3 -0
- package/lib/openzeppelin-contracts/lib/forge-std/LICENSE-APACHE +203 -0
- package/lib/openzeppelin-contracts/lib/forge-std/LICENSE-MIT +25 -0
- package/lib/openzeppelin-contracts/lib/forge-std/README.md +250 -0
- package/lib/openzeppelin-contracts/lib/forge-std/package.json +16 -0
- package/lib/openzeppelin-contracts/logo.svg +15 -0
- package/lib/openzeppelin-contracts/netlify.toml +3 -0
- package/lib/openzeppelin-contracts/package-lock.json +16544 -0
- package/lib/openzeppelin-contracts/package.json +96 -0
- package/lib/openzeppelin-contracts/remappings.txt +1 -0
- package/lib/openzeppelin-contracts/renovate.json +4 -0
- package/lib/openzeppelin-contracts/requirements.txt +1 -0
- package/lib/openzeppelin-contracts/scripts/checks/compare-layout.js +20 -0
- package/lib/openzeppelin-contracts/scripts/checks/compareGasReports.js +243 -0
- package/lib/openzeppelin-contracts/scripts/checks/extract-layout.js +38 -0
- package/lib/openzeppelin-contracts/scripts/checks/generation.sh +6 -0
- package/lib/openzeppelin-contracts/scripts/checks/inheritance-ordering.js +54 -0
- package/lib/openzeppelin-contracts/scripts/gen-nav.js +41 -0
- package/lib/openzeppelin-contracts/scripts/generate/format-lines.js +16 -0
- package/lib/openzeppelin-contracts/scripts/generate/run.js +49 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/Checkpoints.js +247 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/Checkpoints.opts.js +17 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/Checkpoints.t.js +146 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/EnumerableMap.js +283 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/EnumerableSet.js +250 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/SafeCast.js +126 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/StorageSlot.js +78 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/conversion.js +30 -0
- package/lib/openzeppelin-contracts/scripts/git-user-config.sh +6 -0
- package/lib/openzeppelin-contracts/scripts/helpers.js +37 -0
- package/lib/openzeppelin-contracts/scripts/prepack.sh +23 -0
- package/lib/openzeppelin-contracts/scripts/prepare-docs.sh +26 -0
- package/lib/openzeppelin-contracts/scripts/release/format-changelog.js +33 -0
- package/lib/openzeppelin-contracts/scripts/release/synchronize-versions.js +15 -0
- package/lib/openzeppelin-contracts/scripts/release/update-comment.js +34 -0
- package/lib/openzeppelin-contracts/scripts/release/version.sh +11 -0
- package/lib/openzeppelin-contracts/scripts/release/workflow/exit-prerelease.sh +8 -0
- package/lib/openzeppelin-contracts/scripts/release/workflow/github-release.js +48 -0
- package/lib/openzeppelin-contracts/scripts/release/workflow/integrity-check.sh +20 -0
- package/lib/openzeppelin-contracts/scripts/release/workflow/pack.sh +26 -0
- package/lib/openzeppelin-contracts/scripts/release/workflow/publish.sh +26 -0
- package/lib/openzeppelin-contracts/scripts/release/workflow/rerun.js +7 -0
- package/lib/openzeppelin-contracts/scripts/release/workflow/set-changesets-pr-title.js +17 -0
- package/lib/openzeppelin-contracts/scripts/release/workflow/start.sh +35 -0
- package/lib/openzeppelin-contracts/scripts/release/workflow/state.js +112 -0
- package/lib/openzeppelin-contracts/scripts/remove-ignored-artifacts.js +45 -0
- package/lib/openzeppelin-contracts/scripts/solhint-custom/index.js +84 -0
- package/lib/openzeppelin-contracts/scripts/solhint-custom/package.json +5 -0
- package/lib/openzeppelin-contracts/scripts/update-docs-branch.js +65 -0
- package/lib/openzeppelin-contracts/scripts/upgradeable/README.md +21 -0
- package/lib/openzeppelin-contracts/scripts/upgradeable/patch-apply.sh +19 -0
- package/lib/openzeppelin-contracts/scripts/upgradeable/patch-save.sh +18 -0
- package/lib/openzeppelin-contracts/scripts/upgradeable/transpile-onto.sh +54 -0
- package/lib/openzeppelin-contracts/scripts/upgradeable/transpile.sh +47 -0
- package/lib/openzeppelin-contracts/scripts/upgradeable/upgradeable.patch +360 -0
- package/lib/openzeppelin-contracts/slither.config.json +5 -0
- package/lib/openzeppelin-contracts/solhint.config.js +20 -0
- package/mythril-lft-output.txt +1 -0
- package/mythril-lft-symbolic.txt +18 -0
- package/mythril-lft.sh +20 -0
- package/mythril-symbolic-output.txt +1 -0
- package/mythril-symbolic.sh +42 -0
- package/out/build-info/0026b78428192979.json +1 -0
- package/out/build-info/03c4fc3b88486eba.json +1 -0
- package/out/build-info/0540afa9b9a5c5a6.json +1 -0
- package/out/build-info/081932f505bc08b9.json +1 -0
- package/out/build-info/0da104ba0d6642d5.json +1 -0
- package/out/build-info/197281971dbb5f23.json +1 -0
- package/out/build-info/197e7e332832a232.json +1 -0
- package/out/build-info/1a1cab9136eb5f94.json +1 -0
- package/out/build-info/1b320204eb162aa2.json +1 -0
- package/out/build-info/1e03f94398052674.json +1 -0
- package/out/build-info/22ac085949602937.json +1 -0
- package/out/build-info/234ef37453a9fa64.json +1 -0
- package/out/build-info/2447db7b1878fa8e.json +1 -0
- package/out/build-info/25568daeb484f5ff.json +1 -0
- package/out/build-info/27465853244c49ce.json +1 -0
- package/out/build-info/2c57a9e0f087453b.json +1 -0
- package/out/build-info/3c62ae7de8da68c4.json +1 -0
- package/out/build-info/3e771ae109e97bb3.json +1 -0
- package/out/build-info/460499bc0a3465c4.json +1 -0
- package/out/build-info/47ce37e50a4f115e.json +1 -0
- package/out/build-info/4fcce5c63cf427d6.json +1 -0
- package/out/build-info/4fd0a53fe63fddbb.json +1 -0
- package/out/build-info/50f1247db9d769cc.json +1 -0
- package/out/build-info/5317d0181a7a5e02.json +1 -0
- package/out/build-info/594df509275ceb5b.json +1 -0
- package/out/build-info/61983ac3f6141719.json +1 -0
- package/out/build-info/638c4548307122fe.json +1 -0
- package/out/build-info/67c2c43bdb7c0ded.json +1 -0
- package/out/build-info/777f42643aad37b7.json +1 -0
- package/out/build-info/7d7856f19e845354.json +1 -0
- package/out/build-info/83976260b6f71e94.json +1 -0
- package/out/build-info/83c23882000b963d.json +1 -0
- package/out/build-info/84b2cce8f70b36be.json +1 -0
- package/out/build-info/8bc13d31d7c3206a.json +1 -0
- package/out/build-info/8e183bd4d9d8cf88.json +1 -0
- package/out/build-info/94bfe1e7cafa8ff5.json +1 -0
- package/out/build-info/99ec7d5e8d8ff360.json +1 -0
- package/out/build-info/9ac044b29daa7d5e.json +1 -0
- package/out/build-info/9b203227ff5d2e63.json +1 -0
- package/out/build-info/9d18c5872c4282dd.json +1 -0
- package/out/build-info/9f77f04f33baf9a3.json +1 -0
- package/out/build-info/a6e1caf974787982.json +1 -0
- package/out/build-info/a94b6348867a62d6.json +1 -0
- package/out/build-info/ad93721947a8b195.json +1 -0
- package/out/build-info/b42daddb5aa4b19f.json +1 -0
- package/out/build-info/bf13512ae899f7e8.json +1 -0
- package/out/build-info/c39f86c20a548c4a.json +1 -0
- package/out/build-info/cb12bb975a2f4e65.json +1 -0
- package/out/build-info/d0c6788fadc2aa60.json +1 -0
- package/out/build-info/d2726bf94ed5b845.json +1 -0
- package/out/build-info/d4eb00da50cce5cb.json +1 -0
- package/out/build-info/db931924a3bc8bdd.json +1 -0
- package/out/build-info/e1a503d49bc77401.json +1 -0
- package/out/build-info/efe5396f8892ce77.json +1 -0
- package/out/build-info/f536d90ced745969.json +1 -0
- package/out/build-info/fed38823c7019b82.json +1 -0
- package/package.json +51 -0
- package/page.html +5384 -0
- package/pancakeswap-simple-tvl.sql +15 -0
- package/pancakeswap-top-pools.sql +29 -0
- package/pancakeswap-tvl-optimized.sql +57 -0
- package/pancakeswap-tvl-query.sql +60 -0
- package/pancakeswap-underflow-hunting.sql +51 -0
- package/pancakeswap-vulnerability-queries.sql +200 -0
- package/posi_page.html +6369 -0
- package/posi_response.json +29 -0
- package/proxy_page.html +500 -0
- package/run_mythril_elephant.sh +18 -0
- package/sHEGIC-bytecode.bin +6 -0
- package/sHEGIC-mythril-analysis.txt +1 -0
- package/sHEGIC-mythril-full.txt +134 -0
- package/sHEGIC_ANALYSIS.md +135 -0
- package/sHEGIC_EXPLOIT_ANALYSIS.md +317 -0
- package/sHEGIC_MYTHRIL_ANALYSIS.md +361 -0
- package/scrape-snowcrash.js +28 -0
- package/scripts/yooshi_drain.sh +154 -0
- package/shi_raw.json +1 -0
- package/temp.json +1 -0
- package/temp_harvest.json +1 -0
- package/temp_pika.json +1 -0
- package/temp_posi.json +1 -0
- package/temp_response.json +1 -0
- package/test-lft-hidden-balance.js +108 -0
- package/test-xfi-exploit.js +140 -0
- package/trunk-liquidity-rescue.js +164 -0
- package/vBABY_page.html +6153 -0
- package/vBABY_response.json +29 -0
- package/wsg_response.json +1 -0
- package/yooldo_page.html +10371 -0
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
import "helpers/helpers.spec";
|
|
2
|
+
import "methods/IAccessControl.spec";
|
|
3
|
+
|
|
4
|
+
methods {
|
|
5
|
+
function PROPOSER_ROLE() external returns (bytes32) envfree;
|
|
6
|
+
function EXECUTOR_ROLE() external returns (bytes32) envfree;
|
|
7
|
+
function CANCELLER_ROLE() external returns (bytes32) envfree;
|
|
8
|
+
function isOperation(bytes32) external returns (bool);
|
|
9
|
+
function isOperationPending(bytes32) external returns (bool);
|
|
10
|
+
function isOperationReady(bytes32) external returns (bool);
|
|
11
|
+
function isOperationDone(bytes32) external returns (bool);
|
|
12
|
+
function getTimestamp(bytes32) external returns (uint256) envfree;
|
|
13
|
+
function getMinDelay() external returns (uint256) envfree;
|
|
14
|
+
|
|
15
|
+
function hashOperation(address, uint256, bytes, bytes32, bytes32) external returns(bytes32) envfree;
|
|
16
|
+
function hashOperationBatch(address[], uint256[], bytes[], bytes32, bytes32) external returns(bytes32) envfree;
|
|
17
|
+
|
|
18
|
+
function schedule(address, uint256, bytes, bytes32, bytes32, uint256) external;
|
|
19
|
+
function scheduleBatch(address[], uint256[], bytes[], bytes32, bytes32, uint256) external;
|
|
20
|
+
function execute(address, uint256, bytes, bytes32, bytes32) external;
|
|
21
|
+
function executeBatch(address[], uint256[], bytes[], bytes32, bytes32) external;
|
|
22
|
+
function cancel(bytes32) external;
|
|
23
|
+
|
|
24
|
+
function updateDelay(uint256) external;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/*
|
|
28
|
+
┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
|
|
29
|
+
│ Helpers │
|
|
30
|
+
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
|
31
|
+
*/
|
|
32
|
+
// Uniformly handle scheduling of batched and non-batched operations.
|
|
33
|
+
function helperScheduleWithRevert(env e, method f, bytes32 id, uint256 delay) {
|
|
34
|
+
if (f.selector == sig:schedule(address, uint256, bytes, bytes32, bytes32, uint256).selector) {
|
|
35
|
+
address target; uint256 value; bytes data; bytes32 predecessor; bytes32 salt;
|
|
36
|
+
require hashOperation(target, value, data, predecessor, salt) == id; // Correlation
|
|
37
|
+
schedule@withrevert(e, target, value, data, predecessor, salt, delay);
|
|
38
|
+
} else if (f.selector == sig:scheduleBatch(address[], uint256[], bytes[], bytes32, bytes32, uint256).selector) {
|
|
39
|
+
address[] targets; uint256[] values; bytes[] payloads; bytes32 predecessor; bytes32 salt;
|
|
40
|
+
require hashOperationBatch(targets, values, payloads, predecessor, salt) == id; // Correlation
|
|
41
|
+
scheduleBatch@withrevert(e, targets, values, payloads, predecessor, salt, delay);
|
|
42
|
+
} else {
|
|
43
|
+
calldataarg args;
|
|
44
|
+
f@withrevert(e, args);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// Uniformly handle execution of batched and non-batched operations.
|
|
49
|
+
function helperExecuteWithRevert(env e, method f, bytes32 id, bytes32 predecessor) {
|
|
50
|
+
if (f.selector == sig:execute(address, uint256, bytes, bytes32, bytes32).selector) {
|
|
51
|
+
address target; uint256 value; bytes data; bytes32 salt;
|
|
52
|
+
require hashOperation(target, value, data, predecessor, salt) == id; // Correlation
|
|
53
|
+
execute@withrevert(e, target, value, data, predecessor, salt);
|
|
54
|
+
} else if (f.selector == sig:executeBatch(address[], uint256[], bytes[], bytes32, bytes32).selector) {
|
|
55
|
+
address[] targets; uint256[] values; bytes[] payloads; bytes32 salt;
|
|
56
|
+
require hashOperationBatch(targets, values, payloads, predecessor, salt) == id; // Correlation
|
|
57
|
+
executeBatch@withrevert(e, targets, values, payloads, predecessor, salt);
|
|
58
|
+
} else {
|
|
59
|
+
calldataarg args;
|
|
60
|
+
f@withrevert(e, args);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/*
|
|
65
|
+
┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
|
|
66
|
+
│ Definitions │
|
|
67
|
+
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
|
68
|
+
*/
|
|
69
|
+
definition DONE_TIMESTAMP() returns uint256 = 1;
|
|
70
|
+
definition UNSET() returns uint8 = 0x1;
|
|
71
|
+
definition PENDING() returns uint8 = 0x2;
|
|
72
|
+
definition DONE() returns uint8 = 0x4;
|
|
73
|
+
|
|
74
|
+
definition isUnset(env e, bytes32 id) returns bool = !isOperation(e, id);
|
|
75
|
+
definition isPending(env e, bytes32 id) returns bool = isOperationPending(e, id);
|
|
76
|
+
definition isDone(env e, bytes32 id) returns bool = isOperationDone(e, id);
|
|
77
|
+
definition state(env e, bytes32 id) returns uint8 = (isUnset(e, id) ? UNSET() : 0) | (isPending(e, id) ? PENDING() : 0) | (isDone(e, id) ? DONE() : 0);
|
|
78
|
+
|
|
79
|
+
/*
|
|
80
|
+
┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
|
|
81
|
+
│ Invariants: consistency of accessors │
|
|
82
|
+
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
|
83
|
+
*/
|
|
84
|
+
invariant isOperationCheck(env e, bytes32 id)
|
|
85
|
+
isOperation(e, id) <=> getTimestamp(id) > 0
|
|
86
|
+
filtered { f -> !f.isView }
|
|
87
|
+
|
|
88
|
+
invariant isOperationPendingCheck(env e, bytes32 id)
|
|
89
|
+
isOperationPending(e, id) <=> getTimestamp(id) > DONE_TIMESTAMP()
|
|
90
|
+
filtered { f -> !f.isView }
|
|
91
|
+
|
|
92
|
+
invariant isOperationDoneCheck(env e, bytes32 id)
|
|
93
|
+
isOperationDone(e, id) <=> getTimestamp(id) == DONE_TIMESTAMP()
|
|
94
|
+
filtered { f -> !f.isView }
|
|
95
|
+
|
|
96
|
+
invariant isOperationReadyCheck(env e, bytes32 id)
|
|
97
|
+
isOperationReady(e, id) <=> (isOperationPending(e, id) && getTimestamp(id) <= e.block.timestamp)
|
|
98
|
+
filtered { f -> !f.isView }
|
|
99
|
+
|
|
100
|
+
/*
|
|
101
|
+
┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
|
|
102
|
+
│ Invariant: a proposal id is either unset, pending or done │
|
|
103
|
+
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
|
104
|
+
*/
|
|
105
|
+
invariant stateConsistency(bytes32 id, env e)
|
|
106
|
+
// Check states are mutually exclusive
|
|
107
|
+
(isUnset(e, id) <=> (!isPending(e, id) && !isDone(e, id) )) &&
|
|
108
|
+
(isPending(e, id) <=> (!isUnset(e, id) && !isDone(e, id) )) &&
|
|
109
|
+
(isDone(e, id) <=> (!isUnset(e, id) && !isPending(e, id))) &&
|
|
110
|
+
// Check that the state helper behaves as expected:
|
|
111
|
+
(isUnset(e, id) <=> state(e, id) == UNSET() ) &&
|
|
112
|
+
(isPending(e, id) <=> state(e, id) == PENDING() ) &&
|
|
113
|
+
(isDone(e, id) <=> state(e, id) == DONE() ) &&
|
|
114
|
+
// Check substate
|
|
115
|
+
isOperationReady(e, id) => isPending(e, id)
|
|
116
|
+
filtered { f -> !f.isView }
|
|
117
|
+
|
|
118
|
+
/*
|
|
119
|
+
┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
|
|
120
|
+
│ Rule: state transition rules │
|
|
121
|
+
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
|
122
|
+
*/
|
|
123
|
+
rule stateTransition(bytes32 id, env e, method f, calldataarg args) {
|
|
124
|
+
require e.block.timestamp > 1; // Sanity
|
|
125
|
+
|
|
126
|
+
uint8 stateBefore = state(e, id);
|
|
127
|
+
f(e, args);
|
|
128
|
+
uint8 stateAfter = state(e, id);
|
|
129
|
+
|
|
130
|
+
// Cannot jump from UNSET to DONE
|
|
131
|
+
assert stateBefore == UNSET() => stateAfter != DONE();
|
|
132
|
+
|
|
133
|
+
// UNSET → PENDING: schedule or scheduleBatch
|
|
134
|
+
assert stateBefore == UNSET() && stateAfter == PENDING() => (
|
|
135
|
+
f.selector == sig:schedule(address, uint256, bytes, bytes32, bytes32, uint256).selector ||
|
|
136
|
+
f.selector == sig:scheduleBatch(address[], uint256[], bytes[], bytes32, bytes32, uint256).selector
|
|
137
|
+
);
|
|
138
|
+
|
|
139
|
+
// PENDING → UNSET: cancel
|
|
140
|
+
assert stateBefore == PENDING() && stateAfter == UNSET() => (
|
|
141
|
+
f.selector == sig:cancel(bytes32).selector
|
|
142
|
+
);
|
|
143
|
+
|
|
144
|
+
// PENDING → DONE: execute or executeBatch
|
|
145
|
+
assert stateBefore == PENDING() && stateAfter == DONE() => (
|
|
146
|
+
f.selector == sig:execute(address, uint256, bytes, bytes32, bytes32).selector ||
|
|
147
|
+
f.selector == sig:executeBatch(address[], uint256[], bytes[], bytes32, bytes32).selector
|
|
148
|
+
);
|
|
149
|
+
|
|
150
|
+
// DONE is final
|
|
151
|
+
assert stateBefore == DONE() => stateAfter == DONE();
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
/*
|
|
155
|
+
┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
|
|
156
|
+
│ Rule: minimum delay can only be updated through a timelock execution │
|
|
157
|
+
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
|
158
|
+
*/
|
|
159
|
+
rule minDelayOnlyChange(env e) {
|
|
160
|
+
uint256 delayBefore = getMinDelay();
|
|
161
|
+
|
|
162
|
+
method f; calldataarg args;
|
|
163
|
+
f(e, args);
|
|
164
|
+
|
|
165
|
+
assert delayBefore != getMinDelay() => (e.msg.sender == currentContract && f.selector == sig:updateDelay(uint256).selector), "Unauthorized delay update";
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/*
|
|
169
|
+
┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
|
|
170
|
+
│ Rule: schedule liveness and effects │
|
|
171
|
+
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
|
172
|
+
*/
|
|
173
|
+
rule schedule(env e, method f, bytes32 id, uint256 delay) filtered { f ->
|
|
174
|
+
f.selector == sig:schedule(address, uint256, bytes, bytes32, bytes32, uint256).selector ||
|
|
175
|
+
f.selector == sig:scheduleBatch(address[], uint256[], bytes[], bytes32, bytes32, uint256).selector
|
|
176
|
+
} {
|
|
177
|
+
require nonpayable(e);
|
|
178
|
+
|
|
179
|
+
// Basic timestamp assumptions
|
|
180
|
+
require e.block.timestamp > 1;
|
|
181
|
+
require e.block.timestamp + delay < max_uint256;
|
|
182
|
+
require e.block.timestamp + getMinDelay() < max_uint256;
|
|
183
|
+
|
|
184
|
+
bytes32 otherId; uint256 otherTimestamp = getTimestamp(otherId);
|
|
185
|
+
|
|
186
|
+
uint8 stateBefore = state(e, id);
|
|
187
|
+
bool isDelaySufficient = delay >= getMinDelay();
|
|
188
|
+
bool isProposerBefore = hasRole(PROPOSER_ROLE(), e.msg.sender);
|
|
189
|
+
|
|
190
|
+
helperScheduleWithRevert(e, f, id, delay);
|
|
191
|
+
bool success = !lastReverted;
|
|
192
|
+
|
|
193
|
+
// liveness
|
|
194
|
+
assert success <=> (
|
|
195
|
+
stateBefore == UNSET() &&
|
|
196
|
+
isDelaySufficient &&
|
|
197
|
+
isProposerBefore
|
|
198
|
+
);
|
|
199
|
+
|
|
200
|
+
// effect
|
|
201
|
+
assert success => state(e, id) == PENDING(), "State transition violation";
|
|
202
|
+
assert success => getTimestamp(id) == require_uint256(e.block.timestamp + delay), "Proposal timestamp not correctly set";
|
|
203
|
+
|
|
204
|
+
// no side effect
|
|
205
|
+
assert otherTimestamp != getTimestamp(otherId) => id == otherId, "Other proposal affected";
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
/*
|
|
209
|
+
┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
|
|
210
|
+
│ Rule: execute liveness and effects │
|
|
211
|
+
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
|
212
|
+
*/
|
|
213
|
+
rule execute(env e, method f, bytes32 id, bytes32 predecessor) filtered { f ->
|
|
214
|
+
f.selector == sig:execute(address, uint256, bytes, bytes32, bytes32).selector ||
|
|
215
|
+
f.selector == sig:executeBatch(address[], uint256[], bytes[], bytes32, bytes32).selector
|
|
216
|
+
} {
|
|
217
|
+
bytes32 otherId; uint256 otherTimestamp = getTimestamp(otherId);
|
|
218
|
+
|
|
219
|
+
uint8 stateBefore = state(e, id);
|
|
220
|
+
bool isOperationReadyBefore = isOperationReady(e, id);
|
|
221
|
+
bool isExecutorOrOpen = hasRole(EXECUTOR_ROLE(), e.msg.sender) || hasRole(EXECUTOR_ROLE(), 0);
|
|
222
|
+
bool predecessorDependency = predecessor == to_bytes32(0) || isDone(e, predecessor);
|
|
223
|
+
|
|
224
|
+
helperExecuteWithRevert(e, f, id, predecessor);
|
|
225
|
+
bool success = !lastReverted;
|
|
226
|
+
|
|
227
|
+
// The underlying transaction can revert, and that would cause the execution to revert. We can check that all non
|
|
228
|
+
// reverting calls meet the requirements in terms of proposal readiness, access control and predecessor dependency.
|
|
229
|
+
// We can't however guarantee that these requirements being meet ensure liveness of the proposal, because the
|
|
230
|
+
// proposal can revert for reasons beyond our control.
|
|
231
|
+
|
|
232
|
+
// liveness, should be `<=>` but can only check `=>` (see comment above)
|
|
233
|
+
assert success => (
|
|
234
|
+
stateBefore == PENDING() &&
|
|
235
|
+
isOperationReadyBefore &&
|
|
236
|
+
predecessorDependency &&
|
|
237
|
+
isExecutorOrOpen
|
|
238
|
+
);
|
|
239
|
+
|
|
240
|
+
// effect
|
|
241
|
+
assert success => state(e, id) == DONE(), "State transition violation";
|
|
242
|
+
|
|
243
|
+
// no side effect
|
|
244
|
+
assert otherTimestamp != getTimestamp(otherId) => id == otherId, "Other proposal affected";
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
/*
|
|
248
|
+
┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
|
|
249
|
+
│ Rule: cancel liveness and effects │
|
|
250
|
+
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
|
251
|
+
*/
|
|
252
|
+
rule cancel(env e, bytes32 id) {
|
|
253
|
+
require nonpayable(e);
|
|
254
|
+
|
|
255
|
+
bytes32 otherId; uint256 otherTimestamp = getTimestamp(otherId);
|
|
256
|
+
|
|
257
|
+
uint8 stateBefore = state(e, id);
|
|
258
|
+
bool isCanceller = hasRole(CANCELLER_ROLE(), e.msg.sender);
|
|
259
|
+
|
|
260
|
+
cancel@withrevert(e, id);
|
|
261
|
+
bool success = !lastReverted;
|
|
262
|
+
|
|
263
|
+
// liveness
|
|
264
|
+
assert success <=> (
|
|
265
|
+
stateBefore == PENDING() &&
|
|
266
|
+
isCanceller
|
|
267
|
+
);
|
|
268
|
+
|
|
269
|
+
// effect
|
|
270
|
+
assert success => state(e, id) == UNSET(), "State transition violation";
|
|
271
|
+
|
|
272
|
+
// no side effect
|
|
273
|
+
assert otherTimestamp != getTimestamp(otherId) => id == otherId, "Other proposal affected";
|
|
274
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
// environment
|
|
2
|
+
definition nonpayable(env e) returns bool = e.msg.value == 0;
|
|
3
|
+
definition nonzerosender(env e) returns bool = e.msg.sender != 0;
|
|
4
|
+
|
|
5
|
+
// math
|
|
6
|
+
definition min(mathint a, mathint b) returns mathint = a < b ? a : b;
|
|
7
|
+
definition max(mathint a, mathint b) returns mathint = a > b ? a : b;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
methods {
|
|
2
|
+
function DEFAULT_ADMIN_ROLE() external returns (bytes32) envfree;
|
|
3
|
+
function hasRole(bytes32, address) external returns(bool) envfree;
|
|
4
|
+
function getRoleAdmin(bytes32) external returns(bytes32) envfree;
|
|
5
|
+
function grantRole(bytes32, address) external;
|
|
6
|
+
function revokeRole(bytes32, address) external;
|
|
7
|
+
function renounceRole(bytes32, address) external;
|
|
8
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import "./IERC5313.spec";
|
|
2
|
+
|
|
3
|
+
methods {
|
|
4
|
+
// === View ==
|
|
5
|
+
|
|
6
|
+
// Default Admin
|
|
7
|
+
function defaultAdmin() external returns(address) envfree;
|
|
8
|
+
function pendingDefaultAdmin() external returns(address, uint48) envfree;
|
|
9
|
+
|
|
10
|
+
// Default Admin Delay
|
|
11
|
+
function defaultAdminDelay() external returns(uint48);
|
|
12
|
+
function pendingDefaultAdminDelay() external returns(uint48, uint48);
|
|
13
|
+
function defaultAdminDelayIncreaseWait() external returns(uint48) envfree;
|
|
14
|
+
|
|
15
|
+
// === Mutations ==
|
|
16
|
+
|
|
17
|
+
// Default Admin
|
|
18
|
+
function beginDefaultAdminTransfer(address) external;
|
|
19
|
+
function cancelDefaultAdminTransfer() external;
|
|
20
|
+
function acceptDefaultAdminTransfer() external;
|
|
21
|
+
|
|
22
|
+
// Default Admin Delay
|
|
23
|
+
function changeDefaultAdminDelay(uint48) external;
|
|
24
|
+
function rollbackDefaultAdminDelay() external;
|
|
25
|
+
|
|
26
|
+
// == FV ==
|
|
27
|
+
|
|
28
|
+
// Default Admin
|
|
29
|
+
function pendingDefaultAdmin_() external returns (address) envfree;
|
|
30
|
+
function pendingDefaultAdminSchedule_() external returns (uint48) envfree;
|
|
31
|
+
|
|
32
|
+
// Default Admin Delay
|
|
33
|
+
function pendingDelay_() external returns (uint48);
|
|
34
|
+
function pendingDelaySchedule_() external returns (uint48);
|
|
35
|
+
function delayChangeWait_(uint48) external returns (uint48);
|
|
36
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
methods {
|
|
2
|
+
function name() external returns (string) envfree;
|
|
3
|
+
function symbol() external returns (string) envfree;
|
|
4
|
+
function decimals() external returns (uint8) envfree;
|
|
5
|
+
function totalSupply() external returns (uint256) envfree;
|
|
6
|
+
function balanceOf(address) external returns (uint256) envfree;
|
|
7
|
+
function allowance(address,address) external returns (uint256) envfree;
|
|
8
|
+
function approve(address,uint256) external returns (bool);
|
|
9
|
+
function transfer(address,uint256) external returns (bool);
|
|
10
|
+
function transferFrom(address,address,uint256) external returns (bool);
|
|
11
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
methods {
|
|
2
|
+
// IERC721
|
|
3
|
+
function balanceOf(address) external returns (uint256) envfree;
|
|
4
|
+
function ownerOf(uint256) external returns (address) envfree;
|
|
5
|
+
function getApproved(uint256) external returns (address) envfree;
|
|
6
|
+
function isApprovedForAll(address,address) external returns (bool) envfree;
|
|
7
|
+
function safeTransferFrom(address,address,uint256,bytes) external;
|
|
8
|
+
function safeTransferFrom(address,address,uint256) external;
|
|
9
|
+
function transferFrom(address,address,uint256) external;
|
|
10
|
+
function approve(address,uint256) external;
|
|
11
|
+
function setApprovalForAll(address,bool) external;
|
|
12
|
+
|
|
13
|
+
// IERC721Metadata
|
|
14
|
+
function name() external returns (string);
|
|
15
|
+
function symbol() external returns (string);
|
|
16
|
+
function tokenURI(uint256) external returns (string);
|
|
17
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"spec": "Pausable",
|
|
4
|
+
"contract": "PausableHarness",
|
|
5
|
+
"files": ["certora/harnesses/PausableHarness.sol"]
|
|
6
|
+
},
|
|
7
|
+
{
|
|
8
|
+
"spec": "AccessControl",
|
|
9
|
+
"contract": "AccessControlHarness",
|
|
10
|
+
"files": ["certora/harnesses/AccessControlHarness.sol"]
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"spec": "AccessControlDefaultAdminRules",
|
|
14
|
+
"contract": "AccessControlDefaultAdminRulesHarness",
|
|
15
|
+
"files": ["certora/harnesses/AccessControlDefaultAdminRulesHarness.sol"]
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"spec": "DoubleEndedQueue",
|
|
19
|
+
"contract": "DoubleEndedQueueHarness",
|
|
20
|
+
"files": ["certora/harnesses/DoubleEndedQueueHarness.sol"]
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"spec": "Ownable",
|
|
24
|
+
"contract": "OwnableHarness",
|
|
25
|
+
"files": ["certora/harnesses/OwnableHarness.sol"]
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"spec": "Ownable2Step",
|
|
29
|
+
"contract": "Ownable2StepHarness",
|
|
30
|
+
"files": ["certora/harnesses/Ownable2StepHarness.sol"]
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"spec": "ERC20",
|
|
34
|
+
"contract": "ERC20PermitHarness",
|
|
35
|
+
"files": ["certora/harnesses/ERC20PermitHarness.sol"],
|
|
36
|
+
"options": ["--optimistic_loop"]
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"spec": "ERC20FlashMint",
|
|
40
|
+
"contract": "ERC20FlashMintHarness",
|
|
41
|
+
"files": [
|
|
42
|
+
"certora/harnesses/ERC20FlashMintHarness.sol",
|
|
43
|
+
"certora/harnesses/ERC3156FlashBorrowerHarness.sol"
|
|
44
|
+
],
|
|
45
|
+
"options": ["--optimistic_loop"]
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"spec": "ERC20Wrapper",
|
|
49
|
+
"contract": "ERC20WrapperHarness",
|
|
50
|
+
"files": [
|
|
51
|
+
"certora/harnesses/ERC20PermitHarness.sol",
|
|
52
|
+
"certora/harnesses/ERC20WrapperHarness.sol"
|
|
53
|
+
],
|
|
54
|
+
"options": [
|
|
55
|
+
"--link ERC20WrapperHarness:_underlying=ERC20PermitHarness",
|
|
56
|
+
"--optimistic_loop"
|
|
57
|
+
]
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"spec": "ERC721",
|
|
61
|
+
"contract": "ERC721Harness",
|
|
62
|
+
"files": ["certora/harnesses/ERC721Harness.sol", "certora/harnesses/ERC721ReceiverHarness.sol"],
|
|
63
|
+
"options": ["--optimistic_loop"]
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"spec": "Initializable",
|
|
67
|
+
"contract": "InitializableHarness",
|
|
68
|
+
"files": ["certora/harnesses/InitializableHarness.sol"]
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"spec": "EnumerableSet",
|
|
72
|
+
"contract": "EnumerableSetHarness",
|
|
73
|
+
"files": ["certora/harnesses/EnumerableSetHarness.sol"]
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"spec": "EnumerableMap",
|
|
77
|
+
"contract": "EnumerableMapHarness",
|
|
78
|
+
"files": ["certora/harnesses/EnumerableMapHarness.sol"]
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"spec": "TimelockController",
|
|
82
|
+
"contract": "TimelockControllerHarness",
|
|
83
|
+
"files": ["certora/harnesses/TimelockControllerHarness.sol"],
|
|
84
|
+
"options": ["--optimistic_hashing", "--optimistic_loop"]
|
|
85
|
+
}
|
|
86
|
+
]
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
= Access Control
|
|
2
|
+
|
|
3
|
+
[.readme-notice]
|
|
4
|
+
NOTE: This document is better viewed at https://docs.openzeppelin.com/contracts/api/access
|
|
5
|
+
|
|
6
|
+
This directory provides ways to restrict who can access the functions of a contract or when they can do it.
|
|
7
|
+
|
|
8
|
+
- {AccessControl} provides a general role based access control mechanism. Multiple hierarchical roles can be created and assigned each to multiple accounts.
|
|
9
|
+
- {Ownable} is a simpler mechanism with a single owner "role" that can be assigned to a single account. This simpler mechanism can be useful for quick tests but projects with production concerns are likely to outgrow it.
|
|
10
|
+
|
|
11
|
+
== Core
|
|
12
|
+
|
|
13
|
+
{{Ownable}}
|
|
14
|
+
|
|
15
|
+
{{Ownable2Step}}
|
|
16
|
+
|
|
17
|
+
{{IAccessControl}}
|
|
18
|
+
|
|
19
|
+
{{AccessControl}}
|
|
20
|
+
|
|
21
|
+
== Extensions
|
|
22
|
+
|
|
23
|
+
{{IAccessControlEnumerable}}
|
|
24
|
+
|
|
25
|
+
{{AccessControlEnumerable}}
|
|
26
|
+
|
|
27
|
+
{{IAccessControlDefaultAdminRules}}
|
|
28
|
+
|
|
29
|
+
{{AccessControlDefaultAdminRules}}
|
|
30
|
+
|
|
31
|
+
== AccessManager
|
|
32
|
+
|
|
33
|
+
{{IAuthority}}
|
|
34
|
+
|
|
35
|
+
{{IAccessManager}}
|
|
36
|
+
|
|
37
|
+
{{AccessManager}}
|
|
38
|
+
|
|
39
|
+
{{IAccessManaged}}
|
|
40
|
+
|
|
41
|
+
{{AccessManaged}}
|
|
42
|
+
|
|
43
|
+
{{AuthorityUtils}}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
= Finance
|
|
2
|
+
|
|
3
|
+
[.readme-notice]
|
|
4
|
+
NOTE: This document is better viewed at https://docs.openzeppelin.com/contracts/api/finance
|
|
5
|
+
|
|
6
|
+
This directory includes primitives for financial systems:
|
|
7
|
+
|
|
8
|
+
- {VestingWallet} handles the vesting of Ether and ERC20 tokens for a given beneficiary. Custody of multiple tokens can
|
|
9
|
+
be given to this contract, which will release the token to the beneficiary following a given, customizable, vesting
|
|
10
|
+
schedule.
|
|
11
|
+
|
|
12
|
+
== Contracts
|
|
13
|
+
|
|
14
|
+
{{VestingWallet}}
|