💼 需要智能合约审计? 查看我们的GitHub →

ERC4626应该如何理解

什么是ERC4626 ERC4626是一种以太坊上的标准化代币,这种类型的合约首先是基于ERC20的,但是在普通ERC20代币的基础上增加了份额的概念。 每一个ERC4626的参与者根据自身支付的潜在资产的数量获得相应比例的份额,假设存在三个参与者: alice -> 1e18 bob -> 2e18 eve -> 3e18 分别支付了1~3e18的ETH ,那么他们获得的份额应该也是按照这个比例,这使得用户在将份额转化为潜在资产的时候也是按照比例兑付的。 这种潜在资产转化为份额和份额转化为潜在资产的计算公式可以简单的总结为: shares = shares * (totalAssets() + 1) / totalSupply assets = assets * totalSupply / (totalAssets() + 1) 其中share表示份额,totalAssets代表当前合约中存在的潜在资产的总额,totalSupply代表总的shares数量也就是当前合约的mint数量的总和。 常用函数 deposit function deposit(uint256 assets, address receiver) public virtual returns (uint256) { uint256 maxAssets = maxDeposit(receiver); if (assets > maxAssets) { revert ERC4626ExceededMaxDeposit(receiver, assets, maxAssets); } uint256 shares = previewDeposit(assets); _deposit(_msgSender(), receiver, assets, shares); return shares; } 根据用户支付的潜在资产的数量,计算接收者最终获得的份额数量。 mint function mint(uint256 shares, address receiver) public virtual returns (uint256) { uint256 maxShares = maxMint(receiver); if (shares > maxShares) { revert ERC4626ExceededMaxMint(receiver, shares, maxShares); } uint256 assets = previewMint(shares); _deposit(_msgSender(), receiver, assets, shares); return assets; } 和deposit不同这里直接输入的是用户想要获得的份额,根据这个份额的值和上诉的计算公式获得用户需要支付的潜在资产的数量。 这里一般需要用户先将潜在资产ERC20像当前合约进行授权。 ...

October 22, 2025 · coffiasd