因此,本课将深入探讨 多种权限控制模式,并通过实战示例,演示如何安全地在 Solidity 中实现访问控制。
从这一课开始,我们将会进入实战环节,通过编写测试来学习 Solidity 合约的各种高级用法。
在复杂的智能合约系统中,代码复用与模块化至关重要。Solidity 提供了 库(Library) 机制,用来组织可重用逻辑,避免重复开发与部署,提升合约的可维护...
这个也是OpenZeppelin UUPS/Transparent Proxy 的核心思路
staticcall 的底层指令是 STATICCALL,它会禁止在调用期间修改状态。
在以太坊的世界里,合约函数调用不是“直接调用函数”,而是发送一段经过 ABI 编码的二进制数据。这些数据不仅包含了调用哪个函数的信息,还包括函数参数的序列化内容...
在 Solidity 智能合约开发中,失败并不可怕,可怕的是失败后状态不明确、资金不安全、调用方摸不着头脑。EVM 的一个重要特性是:当合约执行中发生错误时,会...
在 Solidity 的世界里,大多数函数都有明确的名字、参数和用途。但还有两个比较特别的“隐形入口”函数:receive() 和 fallback()。
在 Solidity 中,我们无法像 JavaScript 那样 console.log("...") 来查看运行状态。但我们有事件(Event)机制——既是合...
模块化开发是大型合约系统不可或缺的组成部分。本课简单剖析 Solidity 中的继承(Inheritance)、接口(Interface)、抽象合约(Abstr...
在 Solidity 中,函数的可见性不仅决定了“谁可以调用”,更深层地影响到合约之间的交互方式、函数的 ABI 暴露、安全性设计和 gas 成本。本课还将介绍...
在 Solidity 编程中,变量的“声明”远远不只是类型和名字,更关键的是 —— 存储位置(data location)。错误使用 memory、storag...
在现实应用中,Solidity 合约往往不是孤岛。我们需要调用其他合约的函数,获取信息或发起操作。这种合约间交互会引入新的风险点。本课将系统讲解如何调用外部合约...
在智能合约的开发过程中,错误处理 是确保系统健壮性、安全性和可预测行为的关键环节。本课我们将深入探讨 Solidity 中三种主要的错误处理机制:
在 Solidity 中,事件(event)不是控制台输出,也不是日志记录函数,而是链上广播机制。
在上一课中,我们已经完成了一个最简单的合约部署流程。这一课我们将重点学习与合约交互,包括如何调用函数、读取状态和修改变量。
我们可以使用 anvil 在本地启动一条测试链来部署我们的合约,通过 http://127.0.0.1:8545就可以访问测试链:
写 Solidity 合约 ≠ 打开浏览器写点 JS。它更像嵌入式开发,要“部署到虚拟硬件”(即 EVM)中运行。你需要一个能编译、部署、调试、测试的本地环境。
不变量测试是一种软件测试方法,专注于验证系统在各种条件下某些属性或状态始终保持不变。在区块链和DeFi应用中,这种测试方法尤为重要,因为智能合约一旦部署到链上就...
在2024年的技术浪潮中,DeepSeek-R1与VS Code的深度整合标志着智能编程工具从"辅助插件"到"核心生产力引擎"的质变。本文基于6个月的真实项目实...