文章 视频 课程 百科图谱 集训营
更多
  • 问答
  • 提问
  • 发表文章
  • 专栏
  • 活动
  • 文档
  • 工作
  • 集市
  • 发现
  • 文章
  • 问答
  • 视频
  • 课程
  • 集训营
  • 专栏
  • 活动
  • 工作
  • 文档
  • 集市
搜索
  • 登录/注册
Tiny熊
  • 文章
  • 专栏
  • 问答
  • 视频
  • 课程
  • 集市作品
  • 活动
  • 招聘
TA的视频 TA的合集
Solidity 库、代码复用与事件
视频 AI 总结: 该视频主要讲解了Solidity中的库(Library)的概念、代码复用方式、import 语句以及事件(Event)的使用。库用于封装可复用的函数,类似于合约但更特殊,通过 `library` 关键字定义。代码复用可以通过继承(abstract 合约)或组合(library)实现。`import` 语句用于导入代码,包括第三方库如 OpenZeppelin,提高效率和安全性。事件用于合约与外部状态的沟通,通过 `emit` 关键字触发,外部程序可监听事件以了解链上状态变化。 关键信息: * **库(Library)**:用于代码复用,通过 `library` 关键字定义,可以封装函数。 * **代码复用方式**:继承(abstract 合约)和组合(library)。 * **Internal vs. External 库函数**:Internal 函数的代码会被嵌入到调用合约中,External 函数需要单独部署,并通过委托调用。 * **Import 语句**:用于导入代码,支持相对路径、URL 路径(IPFS)。 * **OpenZeppelin**:常用的第三方库,包含权限、代理、Token 等模块。 * **事件(Event)**:用于合约与外部状态的沟通,通过 `emit` 关键字触发,外部程序可监听事件以了解链上状态变化。 * **Index 索引**:事件的参数可以使用 Index 索引,提高过滤效率。
22
0
0
2天前
ERC-20:以太坊代币标准
视频 AI 总结: 该视频主要讲解了以太坊中 ERC-20 标准,以及如何在实际应用中与 Token 和 NFT 进行交互。视频详细解释了 ERC-20 标准的定义、作用,以及如何使用它来表示同质化代币,并介绍了 ERC-20 的关键接口和实现原理。此外,视频还对比了 ETH 和 ERC-20 Token 的区别,并布置了一个关于 Token Bank 的作业,旨在让大家实践合约之间的相互调用和 Token 的使用。 关键信息: * ERC-20 是一种用于表示同质化代币的标准,定义了代币的基本接口,如发行总量、余额查询、转账等。 * ERC 是 EIP(以太坊改进提案)的一个子类,用于定义以太坊网络的应用标准。 * ERC-20 定义了 Token 的标准接口,使得不同的合约可以方便地进行交互。 * ETH 是原生币,余额反映在账户空间下,而 ERC-20 Token 是智能合约实现的,余额保存在合约的 Mapping 中。 * 在合约中,通常使用整数来表示代币数量,需要注意精度问题,例如使用 10 的 18 次方来表示小数点后 18 位的精度。 * ETH 转账和 Token 转账的交易结构不同,Token 转账是与合约进行交互,调用合约中的转账函数。 * OpenZeppelin 已经实现了许多 ERC 标准,可以直接使用或扩展。 * 作业:编写一个 Token Bank 合约,实现 Token 的存储和提取功能,并思考如何解决 Token Bank 如何知道每个用户存了多少 Token 的问题。
22
0
0
2天前
Solidity ABI 底层调用:call, delegatecall
视频 AI 总结: 该视频主要讲解了 Solidity 中 ABI 底层调用的相关知识,并对 `call`、`delegatecall` 底层调用方式进行了详细对比。核心内容是解释了这些底层调用与高级函数调用之间的区别,以及它们在处理 gas 限制、上下文切换和错误处理方面的不同行为。理解这些底层调用对于进行更高级的合约交互和优化至关重要。 关键信息: * **ABI 编码**:任何合约调用都会转换为 ABI 编码,包含函数选择器和参数编码。 * **`call` 调用**:底层调用,需手动检查返回值,不受 gas 限制,可以向合约转账,会切换上下文。 * **`delegatecall` 调用**:保持上下文的底层调用,相当于借用目标合约的代码在当前合约上下文中执行。 * **`staticcall` 调用**:模拟调用,不会修改状态变量,用于只读操作,会切换上下文。 * **错误处理**:底层调用失败不会抛出异常,而是通过返回值表示。 * **转账建议**:推荐使用 OpenZeppelin 的 `sendValue` 方法进行转账,避免 gas 限制问题。
34
0
0
2天前
QA:staticcall与实践方法
视频 AI 总结: 该视频主要讲解了 Solidity 中的 Static Call 的概念和使用场景,以及 View 方法的调用方式。老师通过实际代码演示,解释了 Static Call 的模拟执行特性,并强调了实践在学习智能合约开发中的重要性。同时,老师还推荐了一些开源项目,鼓励学生通过实践来加深对智能合约的理解,并建议从较早的版本入手,逐步学习复杂的逻辑。 关键信息: * Static Call 用于模拟执行合约调用,不改变链上状态,主要用于获取返回值或进行预判。 * Static Call 在实际生产环境中用得很少,但在需要预先知道调用结果时可以使用。 * View 方法调用不需要签名,不消耗 GAS fee (GAS price 为 0),常用于获取链上数据。 * Static Call 只能调用 View 和 Pure 方法,不能调用修改状态的方法。 * 学习智能合约开发的关键在于实践,建议从开源项目的早期版本入手,并尝试实现一些简单的项目,如 Uniswap、Token 投票、多签合约等。
14
0
0
2天前
Solidity/EVM 错误处理
视频 AI 总结: 该视频主要讲解了Solidity/EVM 中错误处理机制,与其他语言不同,EVM 在遇到错误时会回滚所有之前的状态变更,除非错误被程序处理。Solidity 提供了几种错误处理方式,包括抛出错误让 EVM 回滚,以及使用 try-catch 捕获外部调用产生的错误。 关键信息: * EVM 的错误处理机制具有原子性,要么全部成功,要么全部失败,不会出现中间状态。 * Solidity 中可以使用 `require` 和 `assert` 进行条件检查,条件不满足时会抛出异常。 * `assert` 用于代码不应该到达的状态,而 `require` 用于检查外部条件。 * 抛出错误时可以指定字符串或自定义错误类型,自定义错误类型 Gas 消耗更低。 * `try-catch` 只能用于捕获外部调用产生的错误,不能捕获合约内部的错误。 * `try-catch` 无法捕获 out-of-gas 错误和调用不存在合约的错误。
38
0
0
6天前
QA:合约参数处理、接口与错误处理
视频 AI 总结: 该视频主要讲解了以太坊智能合约中参数匹配、数据传递、合约组织、错误处理以及接口与实现的关系等问题。首先解释了合约函数参数的传递方式,通过 input data 传递,并按照特定规则(前四个字节为函数签名,后每 32 字节为一个参数)进行解析。然后讨论了合约的组织方式,以及接口和实现的关系,强调了 ABI 编码在合约调用中的作用。最后,详细解释了错误处理机制,包括 revert、require、assert 和 panic 的使用场景和区别。 关键信息: * 合约参数通过 input data 传递,前四个字节为函数签名,后每 32 字节为一个参数。 * 合约可以 import 其他合约,实现代码复用。 * 编译后的字节码和发送的字节码相同,但链上存储的字节码是构造函数执行后的结果。 * 接口和实现之间并非强制继承关系,ABI 编码是合约调用的基础。 * 错误处理机制包括 revert、require、assert 和 panic,assert 用于断言程序本身的错误。
24
0
0
6天前
合约接口描述与编码 - ABI
视频 AI 总结: 该视频主要讲解了以太坊智能合约中 ABI 编码的概念和使用方法。ABI 编码是应用程序二进制接口,用于描述合约的函数和参数,使得外部应用能够与合约进行交互。视频详细解释了 ABI 编码的结构,包括函数选择器和参数编码,并通过实例演示了如何使用 ABI 编码调用合约函数。此外,视频还对比了使用 ABI 编码进行底层调用和直接调用合约函数的区别,强调了底层调用的灵活性和安全性。 关键信息: * ABI 编码是合约接口的描述,用于外部应用与合约交互。 * ABI 编码包含函数选择器(函数签名的哈希值前 4 字节)和参数编码。 * 可以通过函数签名计算函数选择器。 * Solidity 提供了 ABI 编码的全局函数,可以获取函数选择器。 * 可以使用 ABI 编码进行底层调用,实现更灵活的合约交互。 * 底层调用需要手动处理错误和类型检查,不如直接调用合约函数安全。 * 可以通过合约类型或接口类型调用合约函数,最终都会转化为 ABI 编码调用。
38
0
0
6天前
Solidity 接口与继承
视频 AI 总结: 该视频主要讲解了 Solidity 中的接口和继承,以及它们在代码组织和复用中的作用。接口定义了一组函数签名,用于合约间的调用,无需了解对方的具体实现。继承允许合约复用父合约的代码,提高代码的可读性和可维护性。视频还介绍了抽象合约,它允许定义部分实现的函数,供子合约继承和重写。 关键信息: * 接口是函数签名的集合,用于合约间的调用,无需了解对方的具体实现。 * 继承允许合约复用父合约的代码,提高代码的可读性和可维护性。 * `interface` 关键字用于定义接口,接口中只能声明函数,不能实现。 * `is` 关键字用于实现继承,子合约会复制父合约的代码。 * 抽象合约可以定义部分实现的函数,供子合约继承和重写。 * `virtual` 关键字表示函数可以被重写,`override` 关键字表示函数重写了父合约的实现。 * 私有变量在父合约中定义,子合约虽然继承了该变量,但是无法直接访问。 * 合约调用最终会转化为链上的字节码,只需要知道函数选择器即可调用。
36
0
0
6天前
Solidity构造函数、字节码与自定义修改器
视频 AI 总结: 该视频主要讲解了Solidity中的构造函数、字节码以及自定义修改器的使用。首先解释了构造函数在合约部署时的作用,以及编译、创建和链上字节码的区别。然后详细介绍了自定义修改器(modifier)的概念和用法,包括如何使用`modify`关键字定义修改器,以及修改器如何扩展函数的功能,并展示了带参数和嵌套修改器的用法。最后,强调了修改器实际上是语法糖,会在编译时扩展代码,增加合约的字节码大小,并提供了一种替代方案,即将修改器逻辑改为私有函数来实现类似效果。 关键信息: * 构造函数在合约部署时运行一次,用于初始化合约状态。 * 字节码有编译后的字节码、创建字节码(包含编译后的字节码和参数)和链上字节码(运行构造函数后的结果)三种形式。 * 自定义修改器(modifier)可以用来扩展函数的功能,例如添加条件检查。 * 修改器是语法糖,会在编译时将修改器的代码插入到函数中,增加合约的字节码大小。 * 可以使用私有函数来实现类似修改器的效果,以减少合约的字节码大小。
45
0
0
6天前
QA: 关于 transfer 函数的执行
视频 AI 总结: 该视频解答了关于以太坊智能合约中 `transfer` 函数转账的问题。核心内容是解释了 `transfer` 函数的运作机制,以及它与区块链上数据状态的关系。`transfer` 函数实际上是在链上执行的,它会修改合约地址和目标地址在区块链上的余额(balance)数据。 关键信息: * `transfer` 函数的转账操作会上链,修改区块链上的账户余额数据。 * 合约地址的余额和变量由合约代码控制,`transfer` 函数通过代码逻辑修改合约地址和目标地址的余额。 * `transfer` 函数修改的是合约地址下的 balance 数据到目标地址下。 * 所有节点都需要验证转账操作的有效性,但验证过程是异步的。 * EOA 地址转账需要私钥签名。
35
0
0
2025-07-09 08:57
  • ‹
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • ...
  • 30
  • 31
  • ›
Tiny熊
Tiny熊
0xD682...E8AB
贡献值: 22447 学分: 453836
登链社区发起人 通过区块链技术让世界变得更好而尽一份力。
2279 关注 1082 粉丝
关于
关于我们
社区公约
学分规则
Github
伙伴们
DeCert
ChainTool
GCC
合作
广告投放
发布课程
联系我们
友情链接
关注社区
Discord
Twitter
Youtube
B 站
公众号

关注不错过动态

微信群

加入技术圈子

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

发送私信

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

提醒

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