分享百科

构造函数

视频 AI 总结: 该视频主要讲解了Solidity中的构造函数、字节码以及自定义修改器的使用。首先解释了构造函数在合约部署时的作用,以及编译、创建和链上字节码的区别。然后详细介绍了自定义修改器(modifier)的概念和用法,包括如何使用`modify`关键字定义修改器,以及修改器如何扩展函数的功能,并展示了带参数和嵌套修改器的用法。最后,强调了修改器实际上是语法糖,会在编译时扩展代码,增加合约的字节码大小,并提供了一种替代方案,即将修改器逻辑改为私有函数来实现类似效果。 关键信息: * 构造函数在合约部署时运行一次,用于初始化合约状态。 * 字节码有编译后的字节码、创建字节码(包含编译后的字节码和参数)和链上字节码(运行构造函数后的结果)三种形式。 * 自定义修改器(modifier)可以用来扩展函数的功能,例如添加条件检查。 * 修改器是语法糖,会在编译时将修改器的代码插入到函数中,增加合约的字节码大小。 * 可以使用私有函数来实现类似修改器的效果,以减少合约的字节码大小。
22
0
0
3天前
视频 AI 总结: 该视频主要讲解了 Solidity 中特殊的函数,包括访问器函数、构造函数、receiver 函数和 fallback 函数。重点介绍了 receiver 和 fallback 函数的特性和使用场景,强调了它们是被动执行的回调函数,以及在合约接收以太币或找不到用户要调用的函数时被调用的机制。 关键信息: 1. **访问器函数**:public 状态变量会自动生成 get 函数。 2. **构造函数**:在合约初始化时运行一次,部署后不存在于链上。 3. **Receiver 函数**:在合约接收以太币时被调用,无法主动调用。 4. **Fallback 函数**:在 EVM 找不到用户要调用的函数时被调用,也可作为接收以太币的备选方案。 5. **转账与 Gas 限制**:使用 transfer 转账时,会限制 gas 消耗为 2300,可能导致 receiver 或 fallback 函数执行失败。 6. **合约调用流程**:根据是否有附加数据,EVM 会检查合约中是否存在对应的函数,否则调用 fallback 函数。 7. **tx.origin 与 msg.sender**:tx.origin 是整个交易的发起者,msg.sender 是直接调用合约的地址。
30
0
0
6天前
登链社区