跟我学习 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版本
使用 Cancun 硬分叉加入的 TSTORE 降低 Gas
本文讨论如何使用值数组(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)提高合约安全性。
3 种技术实现白名单: 1. 使用白名单地址映射 2. 使用 Merkel 树来记录白名单地址 3. 使用 Semaphore 的零知识证明生成白名单
使用 Echidna 模糊测试(Fuzzing) 提升智能合约安全性
深入探讨可升级合约的架构
如何将 ERC2612 的 Permit 方式应用到 ERC721 NFT 上。
这是一份成为智能合约大师的秘籍。
现在 150 个学分就可以收获此份秘籍,超值超值!
随着文章的增加逐步上调价格。
全面掌握 Solidity 语言特性,增强实际智能开发能力
只要你已经对以太坊有基本的认识,了解区块链的基本概念。 不管是否刚接触合约开发,还是有过 1、2 年经验的合约开发者,本专栏都将对应有帮助。
DEFI 协议解析