分享百科

以太坊

视频 AI 总结: 该视频主要讲解了Solidity/EVM 中错误处理机制,与其他语言不同,EVM 在遇到错误时会回滚所有之前的状态变更,除非错误被程序处理。Solidity 提供了几种错误处理方式,包括抛出错误让 EVM 回滚,以及使用 try-catch 捕获外部调用产生的错误。 关键信息: * EVM 的错误处理机制具有原子性,要么全部成功,要么全部失败,不会出现中间状态。 * Solidity 中可以使用 `require` 和 `assert` 进行条件检查,条件不满足时会抛出异常。 * `assert` 用于代码不应该到达的状态,而 `require` 用于检查外部条件。 * 抛出错误时可以指定字符串或自定义错误类型,自定义错误类型 Gas 消耗更低。 * `try-catch` 只能用于捕获外部调用产生的错误,不能捕获合约内部的错误。 * `try-catch` 无法捕获 out-of-gas 错误和调用不存在合约的错误。
5
0
0
19小时前
视频 AI 总结: 该视频主要讲解了以太坊智能合约中参数匹配、数据传递、合约组织、错误处理以及接口与实现的关系等问题。首先解释了合约函数参数的传递方式,通过 input data 传递,并按照特定规则(前四个字节为函数签名,后每 32 字节为一个参数)进行解析。然后讨论了合约的组织方式,以及接口和实现的关系,强调了 ABI 编码在合约调用中的作用。最后,详细解释了错误处理机制,包括 revert、require、assert 和 panic 的使用场景和区别。 关键信息: * 合约参数通过 input data 传递,前四个字节为函数签名,后每 32 字节为一个参数。 * 合约可以 import 其他合约,实现代码复用。 * 编译后的字节码和发送的字节码相同,但链上存储的字节码是构造函数执行后的结果。 * 接口和实现之间并非强制继承关系,ABI 编码是合约调用的基础。 * 错误处理机制包括 revert、require、assert 和 panic,assert 用于断言程序本身的错误。
4
0
0
19小时前
视频 AI 总结: 该视频主要讲解了以太坊智能合约中 ABI 编码的概念和使用方法。ABI 编码是应用程序二进制接口,用于描述合约的函数和参数,使得外部应用能够与合约进行交互。视频详细解释了 ABI 编码的结构,包括函数选择器和参数编码,并通过实例演示了如何使用 ABI 编码调用合约函数。此外,视频还对比了使用 ABI 编码进行底层调用和直接调用合约函数的区别,强调了底层调用的灵活性和安全性。 关键信息: * ABI 编码是合约接口的描述,用于外部应用与合约交互。 * ABI 编码包含函数选择器(函数签名的哈希值前 4 字节)和参数编码。 * 可以通过函数签名计算函数选择器。 * Solidity 提供了 ABI 编码的全局函数,可以获取函数选择器。 * 可以使用 ABI 编码进行底层调用,实现更灵活的合约交互。 * 底层调用需要手动处理错误和类型检查,不如直接调用合约函数安全。 * 可以通过合约类型或接口类型调用合约函数,最终都会转化为 ABI 编码调用。
7
0
0
19小时前
视频 AI 总结: 该视频解答了关于以太坊智能合约中 `transfer` 函数转账的问题。核心内容是解释了 `transfer` 函数的运作机制,以及它与区块链上数据状态的关系。`transfer` 函数实际上是在链上执行的,它会修改合约地址和目标地址在区块链上的余额(balance)数据。 关键信息: * `transfer` 函数的转账操作会上链,修改区块链上的账户余额数据。 * 合约地址的余额和变量由合约代码控制,`transfer` 函数通过代码逻辑修改合约地址和目标地址的余额。 * `transfer` 函数修改的是合约地址下的 balance 数据到目标地址下。 * 所有节点都需要验证转账操作的有效性,但验证过程是异步的。 * EOA 地址转账需要私钥签名。
21
0
0
3天前
视频 AI 总结: 该视频深入浅出地讲解了 EVM 钱包的演变,重点介绍了 EIP-4337 账户抽象、EIP-7702 以及嵌入式钱包。视频旨在帮助开发者理解这些技术标准,并了解它们在构建去中心化应用中的作用。通过对比 EOA 和智能合约钱包的优缺点,视频阐述了 EIP-4337 如何实现账户抽象,以及 EIP-7702 如何将智能合约功能引入 EOA。此外,视频还探讨了嵌入式钱包的不同类型及其安全风险,并推荐开发者使用智能合约钱包以获得更高的安全性和灵活性。 关键信息: * EVM 钱包的两种类型:EOA(外部拥有账户)和智能合约。 * EIP-4337 实现了以太坊上的合约账户抽象,引入了用户操作、捆绑者、入口点、支付者和聚合器等概念。 * EIP-7702 旨在将智能合约功能引入 EOA,与 ERC-4337 兼容,并将在 Petra 升级中上线。 * 嵌入式钱包直接嵌入到应用程序中,提供更便捷的用户体验,有 EOA 钱包、智能合约钱包和智能 EOA 三种类型。 * 推荐开发者使用智能合约钱包,因为它提供了更高的安全性和灵活性。
74
0
0
5天前
视频 AI 总结: 该视频主要解答关于以太坊交易和数据存储的一些疑问,核心内容围绕交易的gas limit、数据存储方式以及节点验证机制展开。视频详细解释了交易失败时的扣费情况,以及合约数据在节点上的存储方式,强调了状态变量存储在所有节点硬盘上,而非EVM内存中。此外,视频还讨论了节点如何验证交易的正确性,以及代码长度与字节码大小的关系。 关键信息: * Gas limit 不足时,交易发起前通常会被用户钱包界面阻止,不会扣费。但若执行过程中 gas 不足,已消耗的 gas 费用会被扣除,交易回滚。 * 合约中的状态变量(如 counter)存储在所有节点的硬盘上,而非 EVM 内存中,形成状态树,根哈希存储在账户存储中。 * EVM 是动态的,每次交易调用合约时会启动一个 EVM 实例,执行完毕后终止。 * 节点通过重新执行交易,比对状态根哈希来验证交易的正确性,防止作恶。 * 代码越长,字节码通常越大,但编译器优化会有些影响。 * 节点存储了从第一个区块到当前高度的所有区块信息。
44
0
0
2025-07-05 12:09
视频 AI 总结: 该视频主要讲解了以太坊中的一些基本概念,包括以太币的单位(ETH、Gwei、Fin、Sub)以及如何在区块链浏览器(如 Etherscan)上查看交易信息。此外,视频还介绍了不同的以太坊网络,包括主网和测试网,以及如何在测试网上领取测试币。最后,视频还对 L2 做了总体总结。 关键信息: * 以太币的单位:ETH(最大单位)、Gwei、Fin、Sub(最小单位)。Gas price 以 Gwei 为单位设置。 * 区块链浏览器:用于查看交易信息,如 input data、from 地址、to 地址、gas 信息等。 * 以太坊网络:主网(有价值的网络)和测试网(如 Sepolia)。测试网可领取测试币。 * 智能合约:在链上运行的程序,编译成字节码后部署到网络上。在 EVM 上执行时根据指令扣费。 * EVM:通过植入虚拟机,扩展了网络的能力。 * Solidity:用于编写合约。
44
0
0
2025-07-05 12:09
视频 AI 总结: 该视频主要讲解了以太坊虚拟机(EVM)的工作原理、gas 机制以及以太坊费用规则的演变。EVM 作为智能合约的执行环境,具有封闭性,只能访问链上数据。为了防止无限循环和图灵停机问题,EVM 引入了 gas 机制,用于衡量和限制程序的执行工作量。以太坊的费用规则经历了从 gas price 到 EIP-1559 的升级,后者将费用分为基础费和优先费,旨在改善用户体验和降低通胀。 关键信息: * EVM 是智能合约的执行环境,类似于 JVM,但具有封闭性,无法直接访问外部数据。 * EVM 通过 gas 机制来衡量和限制程序的执行工作量,防止无限循环和图灵停机问题。 * gas 本身是工作量的单位,程序越复杂,消耗的 gas 就越多。 * 以太坊的费用规则经历了从 gas price 到 EIP-1559 的升级。 * EIP-1559 将费用分为基础费和优先费,基础费会被销毁,优先费会给矿工。 * EIP-1559 改善了用户体验,避免了用户因设置过高的 gas price 而支付不必要的费用。 * 用户支付的手续费是 gas limit 乘以 gas used,再乘以基础费和优先费之和。 * 矿工拿到的是优先费部分,燃烧掉的是基础费部分。 * 节点是运行以太坊客户端程序的机器,客户端程序实现了共识规范。 * 以太坊客户端有两个主要组成部分:执行层(EVM 实现)和共识层。
63
0
0
2025-07-05 12:08
视频 AI 总结: 该视频主要讲解了以太坊中账户的概念,包括外部账户(EOA)和合约账户,以及它们在交易中的作用。EOA 由私钥控制,用于发起交易和支付手续费,而合约账户由代码控制,被动执行。视频还介绍了 MetaMask 钱包的使用,以及交易如何在区块链上进行验证和执行。最后,视频概述了以太坊全局状态的组织方式,以及交易如何改变状态树。 关键信息: * 以太坊有两种账户:外部账户(EOA)和合约账户。 * EOA 由私钥控制,用于发起交易,需要钱包管理私钥。 * 合约账户由代码控制,被动执行,不能主动发起交易。 * 所有交易都需要 EOA 签名,并支付手续费。 * MetaMask 钱包是常用的以太坊开发工具,用于管理 EOA 和发起交易。 * 以太坊的全局状态由所有账户的状态组成,通过状态树进行组织。 * 交易会改变状态树,并生成新的区块。*
75
0
0
2025-07-05 12:08
视频 AI 总结: 该视频主要讲解了以太坊的核心概念,视频回顾了区块链的哈希结构和比特币的局限性,引出以太坊作为可执行程序的区块链平台的优势。重点介绍了以太坊的虚拟机(EVM)如何运行智能合约,以及从 POW 共识机制切换到 POS 质押机制的原因。最后,通过 Remix 在线 IDE 演示了智能合约的编写、编译、部署和执行过程。 关键信息: * 以太坊是一个可以执行程序的区块链网络,弥补了比特币的不足。 * 以太坊的核心是智能合约,它是在网络上运行的程序,可以实现去信任的应用。 * 以太坊使用 POS 共识机制,通过质押资金来保障网络安全,降低能源消耗。 * 以太坊虚拟机(EVM)是运行智能合约的环境,每个节点都内置一个 EVM。 * 智能合约的编写通常使用 Solidity 语言,需要编译成字节码才能在 EVM 上执行。 * Remix 是一个在线 IDE,可以用于编写、编译、部署和执行 Solidity 智能合约。
89
0
0
2025-07-05 12:06
视频 AI 总结: 该视频主要讲解了智能合约的形式化验证,强调其作为最高级别的测试手段,能够彻底证明合约在任何情况下的行为符合预期。与单元测试或模糊测试不同,形式化验证通过布尔公式将智能合约代码转换为 SMT 求解器可解释的形式,从而验证特定不变性。视频还介绍了如何使用 Solidity 内置的 SMT 检查器进行形式化验证,并通过实例演示了如何通过添加 require 语句来限制输入范围,从而使断言通过验证。 关键信息: * 形式化验证基于布尔公式,通过 SMT 求解器检查公式的满足性。 * SMT 检查器通过检查布尔公式的否定的不可满足性来验证断言。 * 可以通过 require 语句限制输入范围,使断言通过形式化验证。 * SMT 检查器不仅可以用于断言验证,还可以用于检查溢出、下溢、除零等潜在问题。 * SMT 检查器有其局限性,对于过于复杂的代码可能无法证明。 * 视频还介绍了如何通过提供价值和建立联系来获取审计机会,以及如何通过参加竞赛来展示自己的能力。
178
0
0
2025-07-03 15:24
视频 AI 总结: 该视频是关于智能合约审计培训的 mob auditing 会议,重点在于使用 mob auditing 的方法来查找智能合约中的漏洞。视频中,讲师带领学员们对一个 Perpetual Protocol 的智能合约实现进行审计,并逐步讲解了 mob auditing 的流程和技巧,最终学员们成功发现了一些关键漏洞。 关键信息: 1. **Mob Auditing 介绍:** 类似于 pair programming,但规模更大,有多人参与,角色包括驱动者(driver)和指导者(dictator),其他人作为 mob 提供想法。 2. **Mob Auditing 流程:** 驱动者分享屏幕并逐行解释代码,指导者提出问题和 edge cases,mob 成员随时提出潜在的 bug 或漏洞,角色定期轮换。 3. **审计目标:** 理解如何开仓、追踪盈亏、平仓实现利润、实现损失、存入和执行流动性。 4. **发现的漏洞:** * `increasePosition` 函数中缺少对最大杠杆的验证,可能导致用户开设过高杠杆的仓位。 * USDC 黑名单问题,可能导致用户无法提取资金。 * 清算费用计算中的舍入误差,可能导致小额仓位无法收取清算费用。 5. **Fuzzing 和 Invariant Testing:** 介绍了 fuzzing 和 invariant testing 的概念,以及如何在 Foundry 中使用它们来发现智能合约中的漏洞。 6. **Echidna 介绍:** 介绍了 Echidna 这一更高级的模糊测试工具,它能够进行更复杂的 invariant testing,并提供代码覆盖率报告和可重现的测试用例。
201
0
0
2025-07-03 15:01
视频 AI 总结: 该视频主要讲解了 ERC-4626 的通货膨胀攻击,OpenZeppelin 如何解决这个问题,以及 AMM 的相关知识,包括 AMM 的数学原理、Uniswap V3 的深度解析,以及与链上 AMM 相关的预言机操纵。视频详细解释了通货膨胀攻击的原理,以及 OpenZeppelin 的实现如何降低攻击的可行性,并提供了调整参数以几乎完全避免该问题的方案。此外,还深入探讨了 AMM 的运作机制,包括常数积公式、流动性提供等,并分析了 Uniswap V3 中范围流动性的概念和实现方式。最后,视频还讨论了预言机操纵攻击,包括攻击方式、防范措施以及 Chainlink 的应用。 关键信息: 1. ERC-4626 通货膨胀攻击的原理和 OpenZeppelin 的解决方案。 2. OpenZeppelin 通过使用虚拟资产和份额来降低通货膨胀攻击的盈利性。 3. AMM 的基本原理,包括常数积公式(x * y = k)和流动性提供。 4. Uniswap V3 的范围流动性概念,以及如何通过调整价格范围来提高资金利用率。 5. 预言机操纵攻击的原理和防范措施,包括时间加权平均价格(TWAP)的应用。 6. Chainlink 作为一种更安全的预言机解决方案。 7. Uniswap V3 中,每个 tick 都遵循一个公式,该公式本质上指出,每个 tick 都对应于必须提高 1.0001 的幂才能获得价格 P 的价格。
159
0
0
2025-07-03 12:16
视频 AI 总结: 该视频主要讲解了智能合约的可升级性,并深入探讨了五种常见的升级模式:永恒存储、透明代理、通用可升级代理(UUPS)、信标代理和钻石标准。视频详细分析了每种模式的原理、优缺点以及潜在的安全风险,例如存储冲突和函数选择器冲突。此外,视频还通过实际代码示例,展示了这些升级模式在智能合约中的应用,并讨论了在选择升级模式时需要考虑的关键因素。 视频中提出的关键信息: 1. **五种升级模式:** 永恒存储、透明代理、UUPS、信标代理和钻石标准。 2. **永恒存储:** 将数据存储与逻辑分离,通过逻辑合约操作数据合约。 3. **透明代理:** 使用代理合约将调用委托给实现合约,实现逻辑升级。 4. **UUPS:** 将升级逻辑放在实现合约中,简化代理合约。 5. **信标代理:** 多个代理合约共享一个信标合约,信标合约指向实现合约。 6. **钻石标准:** 将合约功能分解为多个 facet,通过钻石合约路由调用。 7. **存储冲突:** 升级后,新的实现合约可能覆盖旧的存储变量。 8. **函数选择器冲突:** 代理合约和实现合约可能存在相同函数选择器,导致调用错误。 9. **安全风险:** 访问控制不当、升级逻辑错误等可能导致安全漏洞。 10. **gas 效率:** 不同的升级模式在 gas 消耗方面存在差异。
144
0
0
2025-07-02 22:42
视频 AI 总结: **核心内容概要:** 该视频主要讲解了以太坊 Solidity 智能合约中常见的两种安全漏洞:舍入误差(Rounding Issues)和签名可延展性(Signature Malleability)。视频深入分析了这两种漏洞的根本原因、常见表现形式,并通过实际案例展示了如何识别和防范这些问题。目的是帮助开发者在进行智能合约安全审计时,能够更好地发现和修复潜在的安全风险。 **关键信息:** * **舍入误差:** * 根本原因是 Solidity 不支持浮点数,除法运算会进行截断(Truncation),导致精度丢失。 * 常见场景包括计算平均价格、分配奖励等,如果未充分考虑精度问题,可能导致资金损失或协议被操纵。 * 解决方法包括使用足够的小数位数、采用向上取整或向下取整策略,并根据具体业务逻辑进行调整。 * **签名可延展性:** * 根本原因是 ECDSA 算法中,对于同一个消息,存在多个有效的签名。 * 攻击者可以利用这一特性,篡改签名中的 `s` 值,生成另一个有效的签名,从而重复执行某些操作。 * 解决方法是限制签名中 `s` 值的范围,只接受小于 `n/2` 的 `s` 值,从而避免签名可延展性攻击。 * **案例分析:** * 视频通过两个具体的漏洞案例,详细展示了舍入误差和签名可延展性在实际项目中的表现形式,以及相应的修复方案。 * **安全审计建议:** * 在进行智能合约安全审计时,需要特别关注除法运算和 ECDSA 签名验证,仔细分析是否存在舍入误差和签名可延展性问题。 * 需要充分考虑各种边界情况和异常输入,确保智能合约的安全性。
248
0
0
2025-07-02 22:32
登链社区