EIP-1167 本文的主要参考资料是:https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1167.md 以及 https://learnblockchain.cn 比如关于代理合约,就存在 EIP-1167 的一个专门介绍代理合约知识点的 EIP。 下面我们将主要基于该 EIP-1167 分析: 要解决的问题: 避免重复部署同样的合约代码,取而代之的是只部署一次合约代码,当需要一份拷贝的时候,就只需要部署一个简单的代理合约。 EIP-1167 标准是为了以不可改变的方式简单而廉价地克隆目标合约的功能,它规定了一个最小的字节码实现,它将所有调用委托给一个已知的固定地址。 字节码分析 EIP-1167 标准的字节码如下: 363d3d373d3d3d363d73bebebebebebebebebebebebebebebebebebebebe5af43d82803e903d91602b57fd5bf3
功能介绍 1、自动检测代理模式; 2、自动检测链; 3、多链支持; 4、支持多种代理模式; 5、支持历史检索; 支持的模式 EIP-1967信标代理 EIP-1167最小代理模式 EIP-1822通用可升级代理模式
精确 会计简单 Venus 数据 = 用户真实数据 无需复杂的内部记账 易于审计 成本可接受 首次开仓:+$0.15(部署 proxy) 后续开仓:+$0.03 换来完全的资金安全 3.4 技术实现:EIP -1167 Minimal Proxy 为了优化 gas 成本,我们使用 EIP-1167 标准: import "@openzeppelin/contracts/proxy/Clones.sol"; user] = proxy; } return userProxies[user]; } } 成本对比: 传统部署:~2,000,000 gas ($35) EIP
明白这个函数在做什么:这个函数实际上就是完成了 EIP-1167,最小化 proxy 合约的创建,具体可参考这个链接[3]。 与标准的创建 EIP-1167 合约不同的一点在于,他将函数的参数,如factory,bondingCurve,nft,poolType这四个参数全部硬编码到了部署得到的 proxy 合约代码里面,如这个地址所示 0x64ad353bc90a04361c4810ae7b3701f3beb48d7e poolType: 0x02 然后当有任何的调用到这个 proxy 上时,这个 proxy 会直接将所有的函数调用通过 delegatecall 的方式,调用到其实现合约上,并且与 EIP
其中vault.sol通过createGuard(bytes32)方法,利用EIP-1167创建一个代理合约。 vault.guard()); guard.addPublicOperation("deposit"); guard.addPublicOperation("withdraw"); } 我们知道使用EIP
创建流动性池使用的是LSSVMPairFactory.sol 程序中的createPairETH 函数方法,非常夸张的是,对比uniswap他可以设置的核心参数很多,执行创建会采用EIP-1167 的标准
https://eips.ethereum.org/EIPS/eip-1167 https://mirror.xyz/xyyme.eth/mmUAYWFLfcHGCEFg8903SweY3Sl-xIACZNDXOJ3twz8