├── .github └── workflows │ └── ci.yml ├── .gitignore ├── .gitmodules ├── LICENSE ├── README.md ├── foundry.toml ├── patterns ├── abi-decode-with-selector │ ├── ApproveRestrictedWallet.sol │ ├── README.md │ └── array.drawio.png ├── assembly-tricks-1 │ └── README.md ├── basic-proxies │ ├── ProxyWallet.sol │ ├── README.md │ └── etherscan-proxy.png ├── big-data-storage │ ├── OnChainPfp.sol │ └── README.md ├── bitmap-nonces │ ├── README.md │ ├── TransferRelay.sol │ └── nonces-slots.drawio.svg ├── commit-reveal │ ├── README.md │ └── SealedAuctionMint.sol ├── eip712-signed-messages │ ├── ERC721.sol │ ├── MintVouchers.sol │ ├── README.md │ └── metamask-721.png ├── erc20-compatibility │ ├── ERC20Compatibility.sol │ └── README.md ├── erc20-permit │ ├── PermitSwap.sol │ ├── README.md │ ├── metamask-permit-sign-prompt.png │ └── permit-flow.png ├── error-handling │ ├── PooledExecute.sol │ ├── README.md │ └── solidity-call-reverts.png ├── eth_call-tricks │ ├── README.md │ ├── swap-forwarder │ │ ├── .gitignore │ │ ├── Contracts.sol │ │ ├── README.md │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── run.ts │ │ ├── tsconfig.json │ │ └── yarn.lock │ └── wallet-unlock-swap-forwarder │ │ ├── .gitignore │ │ ├── Contracts.sol │ │ ├── README.md │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── run.ts │ │ ├── tsconfig.json │ │ └── yarn.lock ├── explicit-storage-buckets │ ├── ExplicitStorageBuckets.sol │ ├── README.md │ └── storage-slots.png ├── factory-proofs │ ├── FactoryProofs.sol │ └── README.md ├── flash-loans │ ├── FlashLoanPool.sol │ ├── README.md │ └── flash-loan-flow.drawio.svg ├── initializing-upgradeable-contracts │ ├── InitializedProxyWallet.sol │ ├── README.md │ └── initializer.png ├── merkle-proofs │ ├── MerkleProofs.sol │ ├── README.md │ ├── merkle-proof.png │ └── merkle-tree.png ├── multicall │ ├── README.md │ ├── TeamFarm.sol │ └── multicall-flow.png ├── nft-receive-hooks │ ├── NftReceiveHooksAuction.sol │ ├── README.md │ ├── allowance-auction.png │ └── hook-auction.png ├── off-chain-storage │ ├── OffChainAuction.sol │ └── README.md ├── only-delegatecall-no-delegatecall │ ├── DelegateCallModifiers.sol │ ├── README.md │ └── parity-self-destruct.png ├── packing-storage │ ├── .gitkeep │ ├── PackedStoragePayouts.sol │ ├── README.md │ └── slot-storage.png ├── permit2 │ ├── Permit2Vault.sol │ ├── README.md │ ├── erc20-transferFrom.png │ ├── erc2612-permit.png │ └── permit2-permitTransferFrom.png ├── readonly-delegatecall │ ├── README.md │ └── ReadOnlyDelegatecall.sol ├── reentrancy │ ├── AppleDAO.sol │ └── README.md ├── separate-allowance-targets │ ├── AllowanceTarget.sol │ ├── README.md │ ├── allowance-target.png │ └── direct-allowance.png └── stack-too-deep │ ├── README.md │ ├── StackTooDeep.sol │ └── error.png └── test ├── AllowanceTarget.t.sol ├── AppleDAO.t.sol ├── ApproveRestrictedWallet.t.sol ├── AssemblyTricks1.t.sol ├── DelegateCallModifiers.t.sol ├── ERC20Compatibility.t.sol ├── ExplicitStorageBuckets.t.sol ├── FactoryProofs.t.sol ├── FlashLoanPool.t.sol ├── InitializedProxyWallet.t.sol ├── MerkleProofs.t.sol ├── MintVouchers.t.sol ├── NftReceiveHooksAuction.t.sol ├── OffChainAuction.t.sol ├── OnChainPfp.t.sol ├── PackedStoragePayouts.t.sol ├── Permit2Vault.t.sol ├── PermitSwap.t.sol ├── PooledExecute.t.sol ├── ProxyWallet.t.sol ├── ReadOnlyDelegatecall.t.sol ├── SealedAuctionMint.t.sol ├── StackTooDeep.t.sol ├── TeamFarm.t.sol ├── TestUtils.sol └── TransferRelay.t.sol /.github/workflows/ci.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/.github/workflows/ci.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | out 3 | cache 4 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/.gitmodules -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/README.md -------------------------------------------------------------------------------- /foundry.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/foundry.toml -------------------------------------------------------------------------------- /patterns/abi-decode-with-selector/ApproveRestrictedWallet.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/abi-decode-with-selector/ApproveRestrictedWallet.sol -------------------------------------------------------------------------------- /patterns/abi-decode-with-selector/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/abi-decode-with-selector/README.md -------------------------------------------------------------------------------- /patterns/abi-decode-with-selector/array.drawio.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/abi-decode-with-selector/array.drawio.png -------------------------------------------------------------------------------- /patterns/assembly-tricks-1/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/assembly-tricks-1/README.md -------------------------------------------------------------------------------- /patterns/basic-proxies/ProxyWallet.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/basic-proxies/ProxyWallet.sol -------------------------------------------------------------------------------- /patterns/basic-proxies/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/basic-proxies/README.md -------------------------------------------------------------------------------- /patterns/basic-proxies/etherscan-proxy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/basic-proxies/etherscan-proxy.png -------------------------------------------------------------------------------- /patterns/big-data-storage/OnChainPfp.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/big-data-storage/OnChainPfp.sol -------------------------------------------------------------------------------- /patterns/big-data-storage/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/big-data-storage/README.md -------------------------------------------------------------------------------- /patterns/bitmap-nonces/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/bitmap-nonces/README.md -------------------------------------------------------------------------------- /patterns/bitmap-nonces/TransferRelay.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/bitmap-nonces/TransferRelay.sol -------------------------------------------------------------------------------- /patterns/bitmap-nonces/nonces-slots.drawio.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/bitmap-nonces/nonces-slots.drawio.svg -------------------------------------------------------------------------------- /patterns/commit-reveal/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/commit-reveal/README.md -------------------------------------------------------------------------------- /patterns/commit-reveal/SealedAuctionMint.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/commit-reveal/SealedAuctionMint.sol -------------------------------------------------------------------------------- /patterns/eip712-signed-messages/ERC721.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/eip712-signed-messages/ERC721.sol -------------------------------------------------------------------------------- /patterns/eip712-signed-messages/MintVouchers.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/eip712-signed-messages/MintVouchers.sol -------------------------------------------------------------------------------- /patterns/eip712-signed-messages/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/eip712-signed-messages/README.md -------------------------------------------------------------------------------- /patterns/eip712-signed-messages/metamask-721.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/eip712-signed-messages/metamask-721.png -------------------------------------------------------------------------------- /patterns/erc20-compatibility/ERC20Compatibility.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/erc20-compatibility/ERC20Compatibility.sol -------------------------------------------------------------------------------- /patterns/erc20-compatibility/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/erc20-compatibility/README.md -------------------------------------------------------------------------------- /patterns/erc20-permit/PermitSwap.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/erc20-permit/PermitSwap.sol -------------------------------------------------------------------------------- /patterns/erc20-permit/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/erc20-permit/README.md -------------------------------------------------------------------------------- /patterns/erc20-permit/metamask-permit-sign-prompt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/erc20-permit/metamask-permit-sign-prompt.png -------------------------------------------------------------------------------- /patterns/erc20-permit/permit-flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/erc20-permit/permit-flow.png -------------------------------------------------------------------------------- /patterns/error-handling/PooledExecute.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/error-handling/PooledExecute.sol -------------------------------------------------------------------------------- /patterns/error-handling/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/error-handling/README.md -------------------------------------------------------------------------------- /patterns/error-handling/solidity-call-reverts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/error-handling/solidity-call-reverts.png -------------------------------------------------------------------------------- /patterns/eth_call-tricks/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/eth_call-tricks/README.md -------------------------------------------------------------------------------- /patterns/eth_call-tricks/swap-forwarder/.gitignore: -------------------------------------------------------------------------------- 1 | **.log 2 | node_modules 3 | js 4 | -------------------------------------------------------------------------------- /patterns/eth_call-tricks/swap-forwarder/Contracts.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/eth_call-tricks/swap-forwarder/Contracts.sol -------------------------------------------------------------------------------- /patterns/eth_call-tricks/swap-forwarder/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/eth_call-tricks/swap-forwarder/README.md -------------------------------------------------------------------------------- /patterns/eth_call-tricks/swap-forwarder/package-lock.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/eth_call-tricks/swap-forwarder/package-lock.json -------------------------------------------------------------------------------- /patterns/eth_call-tricks/swap-forwarder/package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/eth_call-tricks/swap-forwarder/package.json -------------------------------------------------------------------------------- /patterns/eth_call-tricks/swap-forwarder/run.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/eth_call-tricks/swap-forwarder/run.ts -------------------------------------------------------------------------------- /patterns/eth_call-tricks/swap-forwarder/tsconfig.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/eth_call-tricks/swap-forwarder/tsconfig.json -------------------------------------------------------------------------------- /patterns/eth_call-tricks/swap-forwarder/yarn.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/eth_call-tricks/swap-forwarder/yarn.lock -------------------------------------------------------------------------------- /patterns/eth_call-tricks/wallet-unlock-swap-forwarder/.gitignore: -------------------------------------------------------------------------------- 1 | **.log 2 | node_modules 3 | js 4 | -------------------------------------------------------------------------------- /patterns/eth_call-tricks/wallet-unlock-swap-forwarder/Contracts.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/eth_call-tricks/wallet-unlock-swap-forwarder/Contracts.sol -------------------------------------------------------------------------------- /patterns/eth_call-tricks/wallet-unlock-swap-forwarder/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/eth_call-tricks/wallet-unlock-swap-forwarder/README.md -------------------------------------------------------------------------------- /patterns/eth_call-tricks/wallet-unlock-swap-forwarder/package-lock.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/eth_call-tricks/wallet-unlock-swap-forwarder/package-lock.json -------------------------------------------------------------------------------- /patterns/eth_call-tricks/wallet-unlock-swap-forwarder/package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/eth_call-tricks/wallet-unlock-swap-forwarder/package.json -------------------------------------------------------------------------------- /patterns/eth_call-tricks/wallet-unlock-swap-forwarder/run.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/eth_call-tricks/wallet-unlock-swap-forwarder/run.ts -------------------------------------------------------------------------------- /patterns/eth_call-tricks/wallet-unlock-swap-forwarder/tsconfig.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/eth_call-tricks/wallet-unlock-swap-forwarder/tsconfig.json -------------------------------------------------------------------------------- /patterns/eth_call-tricks/wallet-unlock-swap-forwarder/yarn.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/eth_call-tricks/wallet-unlock-swap-forwarder/yarn.lock -------------------------------------------------------------------------------- /patterns/explicit-storage-buckets/ExplicitStorageBuckets.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/explicit-storage-buckets/ExplicitStorageBuckets.sol -------------------------------------------------------------------------------- /patterns/explicit-storage-buckets/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/explicit-storage-buckets/README.md -------------------------------------------------------------------------------- /patterns/explicit-storage-buckets/storage-slots.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/explicit-storage-buckets/storage-slots.png -------------------------------------------------------------------------------- /patterns/factory-proofs/FactoryProofs.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/factory-proofs/FactoryProofs.sol -------------------------------------------------------------------------------- /patterns/factory-proofs/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/factory-proofs/README.md -------------------------------------------------------------------------------- /patterns/flash-loans/FlashLoanPool.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/flash-loans/FlashLoanPool.sol -------------------------------------------------------------------------------- /patterns/flash-loans/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/flash-loans/README.md -------------------------------------------------------------------------------- /patterns/flash-loans/flash-loan-flow.drawio.svg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/flash-loans/flash-loan-flow.drawio.svg -------------------------------------------------------------------------------- /patterns/initializing-upgradeable-contracts/InitializedProxyWallet.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/initializing-upgradeable-contracts/InitializedProxyWallet.sol -------------------------------------------------------------------------------- /patterns/initializing-upgradeable-contracts/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/initializing-upgradeable-contracts/README.md -------------------------------------------------------------------------------- /patterns/initializing-upgradeable-contracts/initializer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/initializing-upgradeable-contracts/initializer.png -------------------------------------------------------------------------------- /patterns/merkle-proofs/MerkleProofs.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/merkle-proofs/MerkleProofs.sol -------------------------------------------------------------------------------- /patterns/merkle-proofs/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/merkle-proofs/README.md -------------------------------------------------------------------------------- /patterns/merkle-proofs/merkle-proof.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/merkle-proofs/merkle-proof.png -------------------------------------------------------------------------------- /patterns/merkle-proofs/merkle-tree.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/merkle-proofs/merkle-tree.png -------------------------------------------------------------------------------- /patterns/multicall/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/multicall/README.md -------------------------------------------------------------------------------- /patterns/multicall/TeamFarm.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/multicall/TeamFarm.sol -------------------------------------------------------------------------------- /patterns/multicall/multicall-flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/multicall/multicall-flow.png -------------------------------------------------------------------------------- /patterns/nft-receive-hooks/NftReceiveHooksAuction.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/nft-receive-hooks/NftReceiveHooksAuction.sol -------------------------------------------------------------------------------- /patterns/nft-receive-hooks/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/nft-receive-hooks/README.md -------------------------------------------------------------------------------- /patterns/nft-receive-hooks/allowance-auction.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/nft-receive-hooks/allowance-auction.png -------------------------------------------------------------------------------- /patterns/nft-receive-hooks/hook-auction.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/nft-receive-hooks/hook-auction.png -------------------------------------------------------------------------------- /patterns/off-chain-storage/OffChainAuction.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/off-chain-storage/OffChainAuction.sol -------------------------------------------------------------------------------- /patterns/off-chain-storage/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/off-chain-storage/README.md -------------------------------------------------------------------------------- /patterns/only-delegatecall-no-delegatecall/DelegateCallModifiers.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/only-delegatecall-no-delegatecall/DelegateCallModifiers.sol -------------------------------------------------------------------------------- /patterns/only-delegatecall-no-delegatecall/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/only-delegatecall-no-delegatecall/README.md -------------------------------------------------------------------------------- /patterns/only-delegatecall-no-delegatecall/parity-self-destruct.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/only-delegatecall-no-delegatecall/parity-self-destruct.png -------------------------------------------------------------------------------- /patterns/packing-storage/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /patterns/packing-storage/PackedStoragePayouts.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/packing-storage/PackedStoragePayouts.sol -------------------------------------------------------------------------------- /patterns/packing-storage/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/packing-storage/README.md -------------------------------------------------------------------------------- /patterns/packing-storage/slot-storage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/packing-storage/slot-storage.png -------------------------------------------------------------------------------- /patterns/permit2/Permit2Vault.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/permit2/Permit2Vault.sol -------------------------------------------------------------------------------- /patterns/permit2/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/permit2/README.md -------------------------------------------------------------------------------- /patterns/permit2/erc20-transferFrom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/permit2/erc20-transferFrom.png -------------------------------------------------------------------------------- /patterns/permit2/erc2612-permit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/permit2/erc2612-permit.png -------------------------------------------------------------------------------- /patterns/permit2/permit2-permitTransferFrom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/permit2/permit2-permitTransferFrom.png -------------------------------------------------------------------------------- /patterns/readonly-delegatecall/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/readonly-delegatecall/README.md -------------------------------------------------------------------------------- /patterns/readonly-delegatecall/ReadOnlyDelegatecall.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/readonly-delegatecall/ReadOnlyDelegatecall.sol -------------------------------------------------------------------------------- /patterns/reentrancy/AppleDAO.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/reentrancy/AppleDAO.sol -------------------------------------------------------------------------------- /patterns/reentrancy/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/reentrancy/README.md -------------------------------------------------------------------------------- /patterns/separate-allowance-targets/AllowanceTarget.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/separate-allowance-targets/AllowanceTarget.sol -------------------------------------------------------------------------------- /patterns/separate-allowance-targets/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/separate-allowance-targets/README.md -------------------------------------------------------------------------------- /patterns/separate-allowance-targets/allowance-target.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/separate-allowance-targets/allowance-target.png -------------------------------------------------------------------------------- /patterns/separate-allowance-targets/direct-allowance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/separate-allowance-targets/direct-allowance.png -------------------------------------------------------------------------------- /patterns/stack-too-deep/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/stack-too-deep/README.md -------------------------------------------------------------------------------- /patterns/stack-too-deep/StackTooDeep.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/stack-too-deep/StackTooDeep.sol -------------------------------------------------------------------------------- /patterns/stack-too-deep/error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/patterns/stack-too-deep/error.png -------------------------------------------------------------------------------- /test/AllowanceTarget.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/test/AllowanceTarget.t.sol -------------------------------------------------------------------------------- /test/AppleDAO.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/test/AppleDAO.t.sol -------------------------------------------------------------------------------- /test/ApproveRestrictedWallet.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/test/ApproveRestrictedWallet.t.sol -------------------------------------------------------------------------------- /test/AssemblyTricks1.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/test/AssemblyTricks1.t.sol -------------------------------------------------------------------------------- /test/DelegateCallModifiers.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/test/DelegateCallModifiers.t.sol -------------------------------------------------------------------------------- /test/ERC20Compatibility.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/test/ERC20Compatibility.t.sol -------------------------------------------------------------------------------- /test/ExplicitStorageBuckets.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/test/ExplicitStorageBuckets.t.sol -------------------------------------------------------------------------------- /test/FactoryProofs.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/test/FactoryProofs.t.sol -------------------------------------------------------------------------------- /test/FlashLoanPool.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/test/FlashLoanPool.t.sol -------------------------------------------------------------------------------- /test/InitializedProxyWallet.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/test/InitializedProxyWallet.t.sol -------------------------------------------------------------------------------- /test/MerkleProofs.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/test/MerkleProofs.t.sol -------------------------------------------------------------------------------- /test/MintVouchers.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/test/MintVouchers.t.sol -------------------------------------------------------------------------------- /test/NftReceiveHooksAuction.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/test/NftReceiveHooksAuction.t.sol -------------------------------------------------------------------------------- /test/OffChainAuction.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/test/OffChainAuction.t.sol -------------------------------------------------------------------------------- /test/OnChainPfp.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/test/OnChainPfp.t.sol -------------------------------------------------------------------------------- /test/PackedStoragePayouts.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/test/PackedStoragePayouts.t.sol -------------------------------------------------------------------------------- /test/Permit2Vault.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/test/Permit2Vault.t.sol -------------------------------------------------------------------------------- /test/PermitSwap.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/test/PermitSwap.t.sol -------------------------------------------------------------------------------- /test/PooledExecute.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/test/PooledExecute.t.sol -------------------------------------------------------------------------------- /test/ProxyWallet.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/test/ProxyWallet.t.sol -------------------------------------------------------------------------------- /test/ReadOnlyDelegatecall.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/test/ReadOnlyDelegatecall.t.sol -------------------------------------------------------------------------------- /test/SealedAuctionMint.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/test/SealedAuctionMint.t.sol -------------------------------------------------------------------------------- /test/StackTooDeep.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/test/StackTooDeep.t.sol -------------------------------------------------------------------------------- /test/TeamFarm.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/test/TeamFarm.t.sol -------------------------------------------------------------------------------- /test/TestUtils.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/test/TestUtils.sol -------------------------------------------------------------------------------- /test/TransferRelay.t.sol: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dragonfly-xyz/useful-solidity-patterns/HEAD/test/TransferRelay.t.sol --------------------------------------------------------------------------------