DeFi Smart Contract Patterns - Solidity Reference (2026)
DevTools StoreDeFi Smart Contract Patterns - Solidity Reference (2026)
Common DeFi patterns in Solidity. Staking, lending, AMM, yield farming. Copy-paste ready.
7 dev products for $1+ (pay ETH): https://rentry.co/dev-tools-pay-what-you-want
Staking Contract
mapping(address => uint256) public staked; mapping(address => uint256) public stakeTime;
function stake() public payable { staked[msg.sender] += msg.value; stakeTime[msg.sender] = block.timestamp; }
function unstake() public { require(block.timestamp >= stakeTime[msg.sender] + 30 days); uint256 amount = staked[msg.sender]; staked[msg.sender] = 0; payable(msg.sender).transfer(amount); }
Simple Swap (AMM)
uint256 public reserveA; uint256 public reserveB;
function swapAtoB(uint256 amountA) public returns (uint256 amountB) { amountB = (amountA * reserveB) / (reserveA + amountA); reserveA += amountA; reserveB -= amountB; }
Lending Pattern
mapping(address => uint256) public deposits; mapping(address => uint256) public borrows;
function deposit() public payable { deposits[msg.sender] += msg.value; }
function borrow(uint256 amount) public { require(deposits[msg.sender] * 2 >= amount, 'Need 50% collateral'); borrows[msg.sender] += amount; payable(msg.sender).transfer(amount); }
Yield Distribution
uint256 public totalStaked; mapping(address => uint256) public rewardDebt;
function updateReward(address user) internal { uint256 reward = (staked[user] * accRewardPerShare) - rewardDebt[user]; // distribute reward }
ERC20 Token
string public name = 'MyToken'; string public symbol = 'MTK'; uint8 public decimals = 18; uint256 public totalSupply; mapping(address => uint256) public balanceOf;
function mint(address to, uint256 amount) public { totalSupply += amount; balanceOf[to] += amount; }
Security Checklist
- Use Checks-Effects-Interactions pattern
- Add reentrancy guards
- Use SafeERC20 for token transfers
- Test with forge test -vvvv
- Audit before mainnet deploy
- Use OpenZeppelin contracts as base
---
More Web3 guides: https://rentry.co/pgib9826