跟我学习 Solidity 第一篇
开始在以太坊上编写智能合约
Solidity 数据存储如何工作?
引用类型,应明确指定数据位置
如何在Solidity中使用函数
如何在合约里创建合约
如何在智能合约中使用clone工厂模式减少合约部署 gas。
Web3.js 使用的实用介绍
如何使用事件记录数据
Solidity 0.6.5 中关键字 immutable 怎么用?
Solidity 0.6.x 版本中 , 继承的一些新变化。
Solidity 0.6 终于可以捕获错误啦
如何将你的合约升级到Solidity 0.8?
`call()`与`delegatecall()`的异同。在`delegatecall()`的情况下,我们需要关心字段变量的顺序
Solidity的transfer() 是不安全的。
使用工厂模式的利与弊
如何节省gas 使用,是很多智能合约开发者头大的问题,这边文章应该会对大家有帮助。
通过链表来实现O(1) 复杂度的可迭代映射。
以太坊 gas 成本居高不下,每个智能合约开发者都应该了解如何减少 gas 消耗。
减少智能合约的 gas 消耗的8种方法
本文探索了使用可迭代映射来实现排序列表。
本文基于Solidity 0.5.8版本
本文讨论如何使用值数组(Value Array)替换引用数组(Reference Array)来减少 Solidity 智能合约的gas 消耗。
在 Solidity 中,动态值数组是否比引用数组效率更高吗?
本文通过字符串连接函数为例,来看看如何计算及对比 Solidity 函数的 gas 消耗
本文列出了 12 个优化合约字节码的 Solidity 编程技巧。
普通开发者需要了解的优化 [Solidity](https://learnblockchain.cn/article/3512) 合约的基础
如何解决 "Stack Too Deep(堆栈太深)" 的问题
智能合约Gas 优化的几个技术
合约实践:避免区块Gas限制导致问题
你能做些什么来防止合约变得太大?
本文讨论 Solidity 的类特性
RC20-Permit(EIP-2612)下,如何避免 使用进行两步交易:授权+ transferFrom!
对比使用mapping、默克尔树、及离线签名 3 中方式处理白名单的优缺点。
使用检查、影响和交互模式(简称CEI:Checks, Effects, and Interactions)、互斥锁、Pull 支付方式以及gas限制都是防止可重入攻击的有效技术。
CheckMarx 总结了当前最容易出现的 10 个 Solidity 安全问题
是时候用Hardhat EVM 替换ganache了,Hardhat EVM 是一个用于本地开发的以太坊网络,提供了更好的堆栈跟踪功能和console.log() 输出日志。
译者注:这是距今为止行业内最全面的智能合约开发指南,强烈推荐。
译者推荐:这是我看到关于合约升级及治理写的最好的好文章,有点长,但读完必定有收获。原文来自 OpenZeppelin首席开发人员 Santiago Palladino 关于合约升级的报告,本文详细讨论了当前各种升级方式的原理、各自的优缺点,同时列举了采用相应方案的项目,以便大家进行代码级的参考。在最后一部分,作者还提出了多种配合升级的治理方案。
Solidity有两种模式实现升级:透明代理与UUPS代理, 他们的实现由细微差别,本文一起来看一看。
在本文中,通过 7 个任务,如何来编写可升级合约,测试以及自动、活动实施升级。 在 7 个任务中,分别介绍了可升级合约可能遇到的各种情况: 在新实现合约中添加函数、添加状态变量、修改状态变量可见性(修改函数)。
文章非常严谨讨论了各种实现的 gas 消耗,以及低效代码带来的深远影响,并给出了实现方案。
Solidity 优化 - 隐藏的 Gas 成本
在 Solidity 中使用位图,可以为你节省大量的 Gas 费
通过一个 gas 挑战,理解 Gas 优化技巧。
在这篇文章中,详细说明的事件的日志是如何生成,索引是如何影响日志的生成,字符串等变长数据是如何处理的。同时介绍了在前端如何获取事件。
Solidity 编码规范推荐标准, 作者列出了 15 条非常使用的规则, 例如:指定固定的编译器版本、导入代码时指定版本, 并使用命名导入,以及变量命名时注意事项。
你是否知道大端小端的概念,其定义了是高位数据先保存还是地位数据先保存,EVM 是用 大端格式存储数据,我们知道 EVM 使用 32 字节的字来处理数据,当数据不足 32 个字节时,如何填充数据呢?bytes 有哪些操作详见本文。
OpenZeppelin Contracts 5.0 版本:更好的 Gas 效率,更优的代码结构。
文章从比较全面介绍各种优化gas 的方法,如何优化存储、利用退款、数据类型和打包、使用事件、设计函数等。
学习使用模糊测试(Fuzz Test)及不变性测试( Invariant Test)提高合约安全性。
<font color='red' > 这是一份成为智能合约大师的秘籍。</font>
<font color='red' > 现在 150 个学分就可以收获此份秘籍,超值超值!</font>
随着文章的增加逐步上调价格。
全面掌握 Solidity 语言特性,增强实际智能开发能力
只要你已经对以太坊有基本的认识,了解区块链的基本概念。 不管是否刚接触合约开发,还是有过 1、2 年经验的合约开发者,本专栏都将对应有帮助。
2 个专栏
DEFI 协议解析