最小代理

微信扫码分享
VibeCoding: 工厂合约与最小代理模式

VibeCoding: 工厂合约与最小代理模式

视频 AI 总结: 1. 课程讲解了工厂合约与多签合约的补充,重点围绕ERC20代币的最小代理模式。工厂合约通过“最小代理”方式创建多个独立代币合约,每个代理共享同一实现合约的逻辑,但拥有独立的数据存储(如名称、发行量)。由于链上代码没有构造函数,代理合约需通过自定义的initialize函数完成初始化,并用bool变量防止重复调用。最后强调了工厂合约能降低部署成本并支持代币的灵活创建。 2. 关键信息: - 工厂合约用于复用实现合约逻辑,通过最小代理(clone)部署多个代理合约,每个代理有独立状态。 - 代理合约没有构造函数,需要单独写initialize函数来做初始化。 - 初始化函数需用bool变量控制只能调用一次,防止被重复初始化篡改数据。 - 工厂合约的部署流程:先创建代理,然后立即调用initialize,初始化后其他人无法再调用。

7 0 0 2026-06-02 09:01
以太坊合约地址推导与创建

以太坊合约地址推导与创建

视频 AI 总结: 这段视频详细讲解了以太坊上合约地址的推导原理、不同创建合约的方式(CREATE、CREATE2、CREATE3)及其应用场景,并介绍了最小代理(Minimal Proxy)如何通过代码复用大幅降低批量部署成本。核心目标是实现可预测、多链一致的合约地址,同时优化Gas消耗。 **关键信息:** 1. **CREATE**:地址由创建者地址与交易 nonce 决定,nonce 不同会导致不同链上相同合约得到不同地址,且地址与合约代码无关。 2. **CREATE2**:引入 salt 和 init code 哈希,地址与 nonce 无关,代码和 salt 相同即可在不同链上得到同一地址;重复创建同一地址会失败(合约已存在)。 3. **CREATE3**:是一个库,先通过 CREATE2 部署部署器合约,再用部署器通过 CREATE 部署最终合约,彻底解除了地址与 nonce 和合约字节码的绑定,适用于字节码可能在不同链上不一致的场景。 4. **最小代理(EIP-1167)**:部署一个极小的代理合约,利用 delegatecall 将调用转发给固定实现合约,实现代码复用,大幅降低批量部署成本;但无法使用构造函数,需额外调用 init 方法初始化。 5. **多链一致性应用**:如 Safe 钱包工厂,使用 CREATE2 和固定 salt(用户地址)确保钱包地址在所有 EVM 链上相同,未部署时也可接收资产。 6. **EVM 合约销毁**:目前已被弃用,合约部署后无法被销毁。

26 0 0 2026-05-30 12:42
VibeCoding: 实现最小代理合约工厂

VibeCoding: 实现最小代理合约工厂

视频 AI 总结: 视频主要讲解了如何使用工厂模式(Factory Pattern)和最小代理(Minimal Proxy)来高效创建和管理多个独立的ERC20代币合约实例。这种方法旨在低成本地部署大量具有独立属性(如名称、发行量、铸造规则)的代币。视频强调了在代理合约中避免使用构造函数(constructor),而应采用独立的初始化(initialize)方法,并通过`delegatecall`进行调用,并讨论了在代币铸造过程中收取费用及优化Gas成本的实践。 关键信息: 1. **工厂模式与最小代理应用:** 视频核心是利用工厂合约(MiniFactory)和最小代理(Minimal Proxy)来批量部署ERC20代币合约,每个代理合约指向一个共享的逻辑合约(ERC20 Mini),从而实现代码复用和Gas成本节约。 2. **避免使用构造函数:** 强调在代理模式下,逻辑合约(ERC20 Mini)不能有构造函数。因为构造函数只在合约部署时执行一次,无法为每个通过代理创建的代币实例进行独立的初始化。 3. **初始化方法替代构造函数:** 替代方案是使用一个独立的`initialize`方法来设置代币的名称、符号、总供应量等属性。该方法通过`delegatecall`在代理合约中被调用,并且需要确保只能被调用一次。 4. **铸造费用与权限控制:** 讨论了在代币铸造(mint)过程中收取费用(mint fee)并将其发送给代币创建者(owner)的机制。同时指出,铸造方法需要添加权限控制,以避免任何人都可以铸造。 5. **Gas优化实践:** 建议将铸造费用和所有者(owner)等相关配置保存在工厂合约中,并考虑使用结构体(Struct)来合并存储变量,以减少跨合约调用和存储成本,从而降低Gas费用。 6. **可升级合约的关联性:** 提及了可升级的ERC20版本(Upgradeable ERC20)也遵循没有构造函数的原则,与代理模式的初始化机制相符。

73 0 0 2026-03-25 07:36