文章 课程 首页 集训营
更多
  • 视频
  • 百科图谱
  • 问答
  • 提问
  • 专栏
  • 活动
  • 文档
  • 工作
  • 集市
  • 首页
  • 文章
  • 视频
  • 课程
  • 集训营
  • 工作
    • 工作
    • 问答
    • 活动
    • 文档
    • 集市
搜索
  • 登录/注册
Tiny熊
  • 文章
  • 专栏
  • 问答
  • 视频
  • 课程
  • 集市作品
  • 活动
  • 招聘
TA的视频 TA的合集
深入EVM执行机制与合约存储
视频 AI 总结: 本视频深入探讨了以太坊虚拟机(EVM)的执行机制和智能合约的存储布局,这对于优化Gas消耗和未来的合约升级至关重要。视频详细讲解了EVM如何执行合约字节码,以及栈、内存、永久存储等不同存储空间的特性及其Gas成本。重点介绍了通过变量打包、理解SLOAD/SSTORE操作等方式进行Gas优化的策略,并解释了映射和动态数组的存储原理。理解这些底层机制能帮助开发者编写更高效、更安全的智能合约。 关键信息: 1. **EVM执行机制**: * EVM是基于栈的虚拟机,合约字节码被加载执行。 * 通过Calldata加载用户数据,匹配函数选择器执行对应函数。 * SLOAD(读取存储)和SSTORE(写入存储)是核心操作。 * Gas消耗按指令计算,EVM不处理Gas Price和签名,这些在EVM执行前已处理。 2. **存储空间类型与特性**: * **永久存储 (Storage)**:链上持久化,成本高昂(需全网同步)。每个槽位32字节,总计2^256个槽位。Gas成本:首次写入(0->非0)20000,冷数据到热数据额外2100,热数据更新2900,冷数据更新5000。将非0数据设为0可获得Gas返还(最高20%)。常量和事件存储在合约代码中,不占用存储槽。 * **瞬时存储 (Transient Storage, EIP-1153)**:仅在单次交易生命周期内有效,行为类似热存储,成本较低。常用于重入攻击防护,交易结束后数据丢失。 * **内存 (Memory)**:单次函数调用生命周期内有效,成本低于存储,但随使用量呈指数级增长。用于局部变量、参数、返回值等。 * **栈 (Stack)**:EVM内部维护,不可直接编程。数据长度256位,但只能访问栈顶16个元素,过深会导致"stack too deep"错误,可通过拆分函数或使用大括号规避。 3. **存储布局与Gas优化**: * **静态变量打包**:将多个小类型变量(如uint8)打包到同一32字节槽位,减少SSTORE操作,降低Gas。 * **结构体 (Structs)**:自动进行变量打包优化。 * **映射 (Mapping)**:数据离散存储,槽位通过哈希计算,无法直接遍历。 * **动态数组 (Dynamic Arrays)**:长度存储在槽位,元素存储在哈希计算出的起始位置,短数组可紧凑打包。 * **优化权衡**:打包可节省存储Gas,但可能增加计算Gas(掩码、移位)。 * **内联汇编**:可直接操作存储槽位进行极致Gas优化,但牺牲代码可读性。 4. **私有变量**:合约中的私有变量仅限制Solidity访问,链上数据公开,通过槽位仍可读取。
30
0
0
18小时前
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)也遵循没有构造函数的原则,与代理模式的初始化机制相符。
11
0
0
1天前
以太坊账户抽象:EIP-4337与EIP-7702
视频 AI 总结: 本视频深入探讨了以太坊账户抽象(AA)的概念,旨在解决外部拥有账户(EOA)在用户体验上的局限性,如私钥管理、单笔交易限制及手续费支付不便等。视频介绍了两种主要的解决方案:EIP-4337 和 EIP-7702。它们都致力于让账户具备更灵活的签名方式、批量交易、社交恢复及手续费代付等功能,从而提升Web3应用的易用性和普及度。 关键信息: 1. **EOA的局限性:** * 交易只能由EOA发起(EIP-3607约束)。 * 一次只能签署一笔交易,导致多步操作(如Approve+Deposit)需多次交易。 * 用户需自行保管私钥/助记词,且必须用ETH支付Gas,缺乏社交恢复机制。 2. **账户抽象的目标:** 融合EOA的便捷性与合约账户(CA)的灵活性,消除两者区别,提供更友好的用户体验。 3. **早期尝试(EIP-86, EIP-2938):** 因涉及核心协议修改且时机不佳(以太坊重心在PoW转PoS),未能成功实施。 4. **EIP-4337(应用层方案):** * 无需修改以太坊核心协议,通过引入`UserOperation`、`Bundler`(代替EOA发起交易)和`Paymaster`(代付手续费)等角色在应用层实现。 * 支持灵活签名(如Passkey)、批量交易、社交恢复和手续费代付。 * **缺点:** 用户需部署新的合约账户(有Gas成本),且在不同链上可能不一致,导致采用率不高。 5. **EIP-7702(协议层方案):** * 通过修改协议层(引入新的交易类型),允许EOA在交易签名时临时转换为合约账户行为。 * 利用`DELEGATECALL`机制,让EOA能借用委托合约的代码逻辑执行多笔操作。 * **优点:** 复用现有EOA,Gas成本较低(无需部署新合约),支持批量交易、手续费代付和灵活签名。被认为是比EIP-4337更具前景的方案,且已在MetaMask等钱包中得到应用。 * **对EIP-3607的修改:** 允许带有特定代码前缀的EOA发起交易。 6. **EIP-4337与EIP-7702对比:** * **协议变更:** 4337无需协议变更,7702需要(引入新交易类型)。 * **账户复用:** 4337需创建新合约账户,7702可复用现有EOA。 * **Gas成本:** 4337较高(部署合约),7702较低。 * **签名依赖:** 4337不依赖EOA签名算法,7702仍依赖EOA签名。 7. **未来展望:** 提及EIP-8xxx(Flame Tax)作为未来可能的账户抽象标准,但尚未上线。
20
0
0
1天前
合约地址推导、确定性部署与最小代理模式
视频 AI 总结: 视频深入探讨了以太坊虚拟机(EVM)上的合约部署策略。首先指出 `CREATE` 操作码因依赖 `nonce` 导致多链部署地址不一致的问题。接着介绍了 `CREATE2`,它通过引入 `salt` 参数实现可预测的合约地址,便于多链地址统一。视频还讲解了 `CREATE3` 库,它能确保即使合约字节码在不同链上存在差异,也能获得一致的合约地址。最后,讨论了利用最小代理合约(`delegatecall`)实现大规模、低成本地部署相同合约,通过复用单一实现合约来节省Gas。 关键信息: 1. **CREATE 操作码的局限性:** 合约地址由创建者地址和 `nonce` 决定,导致在不同链上部署相同合约时,因 `nonce` 不同而产生不同的合约地址,可能出现地址错位问题。 2. **CREATE2 操作码的优势:** 合约地址由创建者地址、`salt`(盐)和合约字节码决定。`salt` 可控,实现可预测的合约地址,便于多链地址统一,并允许预先计算或“挖”出靓号地址。 3. **CREATE3 库:** 解决 `CREATE2` 在合约字节码因 EVM 版本差异或链特定值而无法保持一致时的问题。其原理是先用 `CREATE2` 部署一个简单的、字节码一致的“部署器”合约,再由该部署器用 `CREATE` 部署目标合约,从而实现与目标合约字节码无关的多链确定性地址。 4. **最小代理合约 (Minimal Proxy) / `delegatecall`:** 用于大规模部署相同合约,通过部署一个极小的代理合约,其代码通过 `delegatecall` 调用一个已部署的“实现合约”中的逻辑。实现合约只需部署一次,多个代理合约可复用其代码,大幅节省 Gas 成本。 5. **应用场景:** CREATE2 适用于 Permit2、合约钱包;最小代理合约适用于 ERC-20 代币工厂、Meme 币部署等需要大量部署相同合约的场景。
19
0
0
2天前
VibeCoding: 接入 Permit2
视频 AI 总结: 这个视频主要讲解了如何在编程作业中应用Permit2合约。Permit2是一个独立的智能合约,其核心作用是为那些不自带Permit方法的旧版ERC-20代币提供离线授权能力。它充当中间人,用户授权Permit2后,其他协议可通过Permit2验证签名来转移用户代币,实现离线签名转账,类似Uniswap的机制。视频演示了在TokenBank合约中集成Permit2,通过添加`DepositWithPermit2`方法。内容还涉及签名调试的挑战(AI可辅助)、Permit2的部署与测试环境配置,强调其让所有代币支持离线签名的作用。 关键信息: 1. **Permit2的核心功能**:Permit2是一个独立的智能合约,旨在让不具备Permit方法的旧版ERC-20代币也能实现离线授权(即通过签名而非链上交易进行授权)。 2. **Permit2的工作机制**:用户首先授权Permit2合约无限额度来管理其代币。随后,其他协议可以通过Permit2合约验证用户的离线签名,从而转移用户的代币,无需用户每次都进行链上Approve操作。 3. **应用场景**:Permit2广泛应用于需要离线签名授权的DApp,例如Uniswap等去中心化交易所。 4. **集成方式**:在目标合约(如视频中的TokenBank)中添加一个方法(如`DepositWithPermit2`),该方法内部调用Permit2合约的签名验证功能,并根据验证结果执行代币转账。 5. **部署与测试**:Permit2在主网和测试网都有固定的部署地址。在本地开发时,可以选择部署Permit2合约或使用Fork模式进行测试。 6. **签名调试挑战**:签名内容(如多余空格、字符差异)的微小错误都可能导致签名匹配失败,且难以调试。视频中提到AI在生成签名内容方面比人工更细致,能减少此类错误。 7. **AI交互建议**:与AI交互时,应尽量一次性清晰地表达需求,避免多次补充,因为AI没有长期记忆,多次交互可能导致上下文丢失。 8. **测试环境考量**:在测试中,可以选择模拟(Mock)Permit2合约或使用真实部署的Permit2合约,后者更贴近生产环境。
4
0
0
2天前
VibeCoding: Permit 离线签名应用
视频 AI 总结: 视频主要讲解了如何在智能合约中实现和应用“Permit”功能,以优化用户体验和降低交易成本。内容涵盖了ERC-2612标准Token的Permit存款机制,以及自定义离线签名在NFT白名单购买中的应用。视频通过与AI编程助手的互动,逐步演示了合约的开发、修改、部署和前端集成,并重点对比了传统`approve`模式与Permit模式在交易笔数和费用上的差异,强调了离线签名在提升效率和降低链上存储成本方面的优势。 关键信息: * **ERC-2612 Permit 标准:** 允许用户通过一次离线签名授权代币转账,取代传统的 `approve` 和 `transferFrom` 两步操作,从而节省 Gas 费用并提升用户体验。 * **离线签名 (EIP-712):** 核心机制是用户在链下对结构化数据进行签名,然后将签名和数据一同提交到链上合约进行验证和执行,广泛应用于授权存款、白名单验证等场景。 * **传统 `approve` 与 Permit 模式对比:** * `approve` 模式:需要两次链上交易(授权 + 实际操作),成本较高。 * Permit 模式:只需一次链下签名和一次链上交易,显著降低 Gas 成本和操作步骤。 * **应用场景:** * **代币银行存款:** 用户通过 Permit 授权将代币存入 `TokenBank` 合约。 * **NFT 白名单购买:** 管理员在链下为用户生成白名单签名,用户凭签名进行购买,避免了将整个白名单存储在链上的高昂成本。 * **实现细节:** * 利用 OpenZeppelin 库中的 `ERC20Permit` 模块简化 ERC-2612 的实现。 * 在 `TokenBank` 合约中添加 `PermitDeposit` 方法来处理 Permit 授权的存款。 * 自定义签名规则和结构(如 `Permitted By`)以适应特定业务逻辑(如 NFT 白名单)。 * 强调签名过程在链下(如后端服务或测试脚本)进行,以避免链上存储和计算成本。 * 开发环境使用 Foundry,并借助 AI 编程助手进行代码生成、修改、测试和部署。 * **优势:** 降低交易费用、优化用户交互流程、避免高昂的链上数据存储成本(如动态白名单)。
5
0
0
2天前
离线签名应用与ERC20-Permit
视频 AI 总结: 本视频深入探讨了如何在智能合约中运用离线签名技术,旨在优化用户体验并扩展功能。它详细介绍了EIP-191和EIP-712标准,分别用于区分交易与消息签名及处理结构化数据。核心应用包括ERC-20 Permit,允许接收方支付Gas费并实现一次性授权转账;以及Permit2,使所有ERC-20代币都能支持离线授权,显著降低用户操作门槛和Gas成本。签名本质是私钥对数据哈希的数学运算,可在链上安全验证。 关键信息: 1. **离线签名概念**:签名是一种数学运算,通过私钥对数据哈希进行操作,本身不消耗Gas费,可在链下完成,然后将签名结果提交到链上进行验证。 2. **签名标准**: * **EIP-191**:用于区分交易签名和普通消息签名,通过在消息前添加特定前缀(如`\x19`)来避免混淆。 * **EIP-712**:定义了结构化数据的签名标准,确保不同平台对同一结构化数据(如JSON)哈希结果的一致性,并包含域分隔符(Domain Separator)以防止跨合约或跨链重放攻击。 3. **应用场景与优势**: * **接收方支付Gas**:通过离线签名,可以实现由交易接收方或第三方支付Gas费,解决了用户没有原生代币(如ETH)无法进行操作的问题。 * **ERC-20 Permit (EIP-2612)**:允许用户通过离线签名授权代币支出,取代传统的链上`approve`交易,从而将“授权”和“转账”合并为一笔链上交易,提升用户体验并节省Gas。 * **Permit2**:由Uniswap提出,是一个通用的中转合约。用户只需一次性将所有代币授权给Permit2,之后所有协议(如Uniswap、Aave)都可以通过离线签名授权Permit2来调度用户的代币,无需用户再进行多次`approve`操作。 4. **签名验证**:合约内验证签名需要重建与签名时完全一致的数据哈希过程,包括编码标准(如EIP-191或EIP-712)和数据结构。 5. **安全性考量**:离线签名需要引入Nonce(防止重放攻击)和有效期(Expiry)等机制来确保安全性,防止签名被重复使用或滥用。 6. **局限性**:离线签名无法实现跨链操作,因为不同区块链是独立的系统。
26
0
0
2026-03-19 23:15
VibeCoding: 简单多签的实现
视频 AI 总结: 视频回顾了上一节课的多签钱包作业,重点讲解了其核心功能:提案(Proposal)、确认(Confirm)和执行(Execute)。提案是将待执行动作提交到合约,确认则由多位所有者进行,当确认人数达到预设门槛后即可执行。本次作业采用链上确认方式,与未来将讲解的离线签名方案有所区别。视频详细分析了合约的构造函数、提案结构、确认逻辑及执行条件,并通过测试用例展示了多签钱包的运作流程,强调了合约在约束多方行为、保障资金安全方面的作用。 视频中提出了哪些关键信息: 1. **多签钱包核心功能:** * **提案 (Proposal):** 将要执行的动作(包括目标合约、ABI编码数据、可选的ETH转账值)提交到合约。提案者必须是所有者,提案会记录ID和初始确认数。 * **确认 (Confirm):** 所有者对提案进行确认,增加确认计数,并记录确认者。一人不能重复确认。 * **执行 (Execute):** 当提案未被执行且确认数达到预设的多签门槛时,即可通过 `call` 方法执行提案。 2. **多签门槛:** 可自定义,例如“2/3”表示3个所有者中需2人确认。 3. **实现方式:** 本次作业采用**链上确认**方式,即所有确认操作都在链上进行。 4. **与离线签名的区别:** 视频强调,实际应用(如Safe)常使用**离线签名**,这是一种不同的实现方式,将在后续课程中讲解。 5. **合约作用:** 通过代码(如多签钱包)来约束多方行为,确保资金或操作需经多方同意,从而保障资产安全和实现治理。 6. **代码审查:** 详细分析了合约的构造函数、`Proposal` 结构体、`confirm` 函数和 `execute` 函数的逻辑,并检查了测试用例以验证功能。
3
0
0
2026-03-19 22:50
交易所钱包开发
视频 AI 总结: 视频详细阐述了中心化交易所(CEX)钱包系统的构建与安全机制。核心内容围绕用户充值、提现两大功能展开,并深入探讨了私钥管理、区块链重组处理、资金分级管理以及全面的风险控制策略。系统通过多层隔离和验证,旨在保障用户资产安全,同时兼顾交易效率和可审计性,展示了一个复杂但高度安全的托管钱包架构。 关键信息: 1. **私钥安全管理:** 采用离线签名机(Signer)存储私钥,通过HD钱包(BIP32/44)派生地址,助记词仅在启动时热加载至内存,不进行物理存储,极大提升安全性。 2. **充值处理与重组应对:** 扫描区块链监听用户充值,不直接更新余额,而是记录详细交易流水(区块高度、交易哈希)。通过比对区块哈希识别并处理区块链重组(Reorg),确保数据一致性;也可选择等待足够区块确认以降低重组风险。 3. **资金分级与多签管理:** 设立多层级热钱包与冷钱包,资金根据阈值自动在不同安全等级的钱包间划拨。采用多签机制,分散私钥管理风险,并可引入自动化机器人(Bot)辅助交易提案与验证,进一步提升安全性与效率。 4. **提现逻辑优化:** 智能选择热钱包进行提现,避免单一钱包交易拥堵,并精细化管理Nonce。系统支付Gas费用,可根据用户等级(VIP)调整Gas策略。支持批量转账(如通过合约或EIP-7702)以节省Gas。 5. **全面风险控制(风控):** 引入数据库网关(DB Gateway)限制直接写入,关键操作(充值、提现)需业务系统与独立风控模块双重签名验证。风控模块独立验证链上交易、检查黑名单、余额及提现规则,防止内部欺诈或外部攻击。
26
0
0
2026-03-19 00:06
智能合约钱包与多签
视频 AI 总结: 视频主要介绍了智能合约钱包,作为外部账户(EOA)的替代方案。合约钱包不仅能持有资金,还能调用其他合约,并提供多项高级功能。其核心优势包括批量操作(multicall)、密钥轮换、社交恢复以及最重要的多重签名(多签)。多签钱包允许资金或操作由多个授权方共同管理,需达到预设的签名门槛(如N-of-M)才能执行,视频通过SAFE多签钱包进行了演示。 视频中提出的关键信息: * **合约钱包的核心能力与优势:** * **资金持有与合约交互:** 智能合约账户与外部账户(EOA)类似,可持有资金(balance)并调用其他合约。 * **批量操作(Multicall):** 允许在一个交易中调用多个外部合约方法,实现批量处理。 * **密钥管理:** 支持密钥轮换和社交恢复功能,提高安全性与可控性。 * **自定义逻辑:** 允许在合约代码中实现复杂的自定义功能,如账户恢复机制。 * **多重签名(多签)钱包:** * **典型应用:** 是智能合约钱包最广泛的应用之一,用于共同管理资金或操作。 * **工作原理:** 设定N个所有者中的M个(N-of-M)签名门槛,达到门槛后方可执行交易。 * **操作流程:** 一位所有者发起提案(Proposal),其他所有者进行确认(Confirm/Approve),达到门槛后任何所有者均可执行。 * **演示平台:** 视频以SAFE多签钱包为例进行了演示。 * **技术实现细节(简述):** * 合约钱包需包含 `receive` 函数以接收ETH转账。 * 通过底层 `call` 方法实现对任意外部合约函数(如ERC20转账、银行存款)的调用。 * 外部调用时需对函数签名和参数进行ABI编码。 * 最终的签名确认仍需通过MetaMask等外部工具完成,合约本身不进行椭圆曲线签名。
11
0
0
2026-03-18 22:43
  • ‹
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • ...
  • 42
  • 43
  • ›
Tiny熊
Tiny熊
0xD682...E8AB
贡献值: 22895 学分: 952117
登链社区发起人 通过区块链技术让世界变得更好而尽一份力。
2287 关注 1308 粉丝
关于
关于我们
社区公约
学分规则
Github
伙伴们
DeCert
ChainTool
GCC
UpChain
合作
广告投放
发布课程
联系我们
友情链接
关注社区
Discord
Twitter
Youtube
B 站
公众号

关注不错过动态

微信群

加入技术圈子

©2026 登链社区 版权所有 | Powered By Tipask|
粤公网安备 44049102496617号 粤ICP备17140514号 粤B2-20230927 增值电信业务经营许可证

发送私信

请将文档链接发给晓娜,我们会尽快安排上架,感谢您的推荐!

提醒

检测到你当前登录的账号还未绑定手机号
请绑定后再发布
去绑定
编辑封面图
封面预览

创建课程

编辑封面图
建议尺寸: 1920*1080
编辑封面图
封面预览