在前文我们已经用 Mutex 和 RWMutex 解决了竞态问题。但是在实际生产中,锁并不是唯一解,甚至在高并发场景下可能不是最佳解。这里我们来探索更多可能性:
Engineering Notes
孟斌的小站
技术博客与学习记录
在日常开发中,我们经常会遇到高并发的业务场景,比如钱包系统的转账。如何保证并发情况下的数据一致性,是 Go 工程师必须掌握的技能之一。今天我用一个简单的钱包转账例子,带大家看看 Go 中数据竞争是怎么发生的,以及如何用 sync.Mutex 和 sync.RWMutex 来解决。
1、课程目标
在本课中,我们将从零开始实现一个 最小可用的 ERC20 代币合约,并逐步扩展功能,包括铸造(mint)、销毁(burn)、权限控制(owner / onlyOwner)。 通过本课,我们可以:
课程目标
- 理解智能合约的主要 Gas 消耗来源
- 掌握常见的 优化技巧与模式
- 通过 Foundry 对比 优化前后 Gas 成本
- 建立“写出高效合约”的思维框架
1、Gas 的构成
在 EVM 中,Gas 主要分为三类:
课程目标
- 理解 Solidity 编译器的存储布局机制
- 学会识别 存储槽冲突、ABI 混淆攻击
- 掌握
selfdestruct等低级指令的风险 - 通过 Foundry 测试模拟攻击与验证
1、存储槽冲突(Storage Slot Collision)
Solidity 使用 32 字节为一个存储槽(storage slot)。在继承或代理合约模式下,如果新旧合约的状态变量定义不一致,就可能发生槽冲突,导致关键数据被覆盖。
引言
区块链合约的“代码即法律”带来了强大的确定性,但同时也意味着:
引言
在区块链上,合约一旦部署便不可修改,这是去中心化的根本保障。但对于复杂应用来说,这却成了一把双刃剑:
引言
在区块链合约中,权限管理是核心问题之一。 如果权限控制不当,可能导致:
从这一课开始,我们将会进入实战环节,通过编写测试来学习 Solidity 合约的各种高级用法。
在复杂的智能合约系统中,代码复用与模块化至关重要。Solidity 提供了 库(Library) 机制,用来组织可重用逻辑,避免重复开发与部署,提升合约的可维护性与安全性。