智能合约安全审计入门篇 —— 访问私有数据
了解如何访问合约中的私有数据(private 数据) ## 前置知识 我们先来了解一下 solidity 中的三种数据存储方式: ### 1. storage(存储) - storage 中的数据被永久存储。其以键值对的形式存储在 slot 插槽中。 - storage 中的数据…
欢迎所有爱好区块链技术的人加入。
CATEGORY
共 108 篇
了解如何访问合约中的私有数据(private 数据) ## 前置知识 我们先来了解一下 solidity 中的三种数据存储方式: ### 1. storage(存储) - storage 中的数据被永久存储。其以键值对的形式存储在 slot 插槽中。 - storage 中的数据…
多签名钱包常被缩写为 “Multisig wallet”,多签钱包最大的特点是需由多个私钥持有者的授权才能进行钱包交易。本文会为你详细介绍什么是多签钱包、多签钱包的应用场景、多签钱包的工作原理及Gnosis Safe 多签钱包的使用流程 ## 什么是多签钱包? 多签名钱包常被缩写…
在以太坊中对智能合约进行编程与常规开发人员所用的编程有很大不同,并且缺乏基本处理错误工具一直是一个问题,经常导致智能合约逻辑“破裂”。 当EVM中的交易执行触发revert时,所有状态更改都将回滚并中止执行。 因此,来自现代编程语言的开发人员在编写Solidity时,都可能最终会…
静态分析是相对容易掌握的工具,对开发复杂的Defi应用非常有帮助。 ## 简介 合约的安全性自动化检测有静态分析、动态分析和形式化验证。静态分析不执行合约代码,通过对合约代码做模式匹配或者语义分析来检测漏洞。动态分析需要执行合约,通过大量的模糊测试来观察合约的状态是否会出现问题。…
使用检查、影响和交互模式(简称CEI:Checks, Effects, and Interactions)、互斥锁、Pull 支付方式以及gas限制都是防止可重入攻击的有效技术。 ## Solidity智能合约安全:防止重入攻击的4种方法 重入是一种编程技术,在这种技术中,一个函…
ERC20-Permit(EIP-2612)下,如何避免 使用进行两步交易:授权+ transferFrom! ## 快进至EIP-2612 从那时起,DAI和Uniswap一直在朝着名为EIP-2612的新标准的方向发展,该标准可以取消 approve + transferFr…
## 恐怖的三个词 你只需要在合约中添加一个微小的更改即可。你认为这只需要几秒钟。没错,添加代码只花了不到一分钟的时间。你很高兴你快速解决了这个问题,你输入了compile命令。这么小的更改,你确信代码是正确的。 然而,你确看到以下错误消息: InternalCompilerEr…
文章较长,内容很详细、很深入。但是不要吓到,坐下来,喝杯咖啡或你最喜欢的饮料,慢慢体会。 我们来探索Solidity的一个新的和必不可少的部分:数据存储位置。具有挑战性的话题。非常底层,因为它与以太坊虚拟机(EVM)的架构有关。 但通过类比,我们总是可以更好地理解复杂的编程概念、…
你的一些编程“好习惯”反而会让你写出低效的智能合约。对于普通编程语言而言,计算机做运算和改变程序的状态顶多只是费点电或者费点时间,但对于 EVM 兼容类的编程语言(例如 Solidity 和 Vyper),执行这些操作都是费钱的!这些花费的形式是区块链的原生货币(如以太坊的 ET…
本文将研究以太坊虚拟机(EVM)的内部工作,以说明如何 "利用 "EVM的特殊特性,为用户最小化solidity智能合约的执行成本。社区发布许多关于 solidity开发者可以利用的知识来设计和开发更安全、更节省Gas的智能合约。 本周我们看一下两种不同类型的优化,这些优化相对简…
Foundry是一个Solidity框架,用于构建、测试、模糊、调试和部署Solidity智能合约。在这个Foundry教程中,我们将介绍以下内容。 - Foundry简介 [视频] - Foundry入门 - 使用Foundry的Hardhat - 使用 Solidity 测试…
刚看了篇文章,感觉还可以,分享一下,原文在此: tx.origin vs msg.sender. I have been recently playing ethernaut… | by David Kathoh | Medium 吃过亏的人肯定知道。 **msg.sende**…
交易所作为web3世界的核心枢纽,托管着大量加密资产,其钱包管理关系到大量用户的资产安全,因此很有必要对其钱包管理系统研究学习一番。这里我整理了一篇个人从产品设计者视角的学习笔记,希望能够帮助到大家学习。 ## 交易所钱包系统组成 交易所钱包系统设计主要需要考虑到**安全性**和…
# EIP 1014: CREATE2 指令 | 作者 | 类型 | 分类 | 状态 | 创建时间 | | --------------- | --------------- | ---- | ----- | ---------- | | Vitalik Buterin | St…
这是解构系列另一篇。如果你没有读过前面的文章,请先看一下。我们正在解构一个简单的Solidity合约的EVM字节码。 我们已经走过了很长的路,不是吗?首先,我们理解了合约的创建时间和运行时字节码之间的区别;接下来,我们理解了来自任何调用或交易的执行入口是如何通过函数选择器被路由到…
这是解构系列另一篇。如果你没有读过前面的文章,请先看一下。我们正在解构一个简单的Solidity合约的EVM字节码。 在上一篇文章中,我们看到函数选择器在我们的BasicToken.sol合约中是如何充当枢纽作用。它位于合约的入口处,并将执行重定向到调用者想要运行的合约中的匹配函…
这是解构系列另一篇。如果你没有读过前面的文章,请先看一下。我们正在解构一个简单的Solidity合约的EVM字节码。 在上一篇文章中,我们发现有必要将合约的字节码分为创建时和运行时代码。在对创建部分进行了深入研究之后,现在是时候开始对运行时部分的探索了。 ## 运行时代码 如果你…
## 解构Solidity合约 #1 - 字节码 专栏 理解 EVM - 探究Solidity 背后的秘密 继续加入OpenZepplin 解构合约系列文章。 你在路上,开着你那辆罕见的、完全修复的1969年野马马赫1快速行驶。阳光照射在所有原始的、华丽的镀金轮辋上,闪闪发光。只…
有过合约开发经验的同学都可能知道的,以太坊中最昂贵的操作是存储数据(SSTORE)。所以大家也应该一直寻找方法来减少存储需求。让我们来探讨一个特别有用的方法:位图 注:在 Uniswap 的代码中,有很多使用位图来优化 gas 的技巧。 ## 如何实现一个简单的位图 假设我们想存…
## 思维导图 我把以太坊签名分为对消息签名与对交易签名,这两种签名都是基于ECDSA算法与流程,本章就让我们来搞清楚两种签名具体的内容。 ## 签名概述 签名的作用或目的? - 身份认证:证明你拥有地址的私钥; - 不可否认:确认你的确发布过该消息; - 完整性:确保信息没有被…