欢迎所有爱好区块链技术的人加入。

INDEX

最新文章

共 1183 篇

1625

Solidity进阶之静态分析

Ethereum-优秀转载

静态分析是相对容易掌握的工具,对开发复杂的Defi应用非常有帮助。 ## 简介 合约的安全性自动化检测有静态分析、动态分析和形式化验证。静态分析不执行合约代码,通过对合约代码做模式匹配或者语义分析来检测漏洞。动态分析需要执行合约,通过大量的模糊测试来观察合约的状态是否会出现问题。…

1623

Solidity智能合约安全:防止重入攻击的4种方法

Ethereum-优秀转载

使用检查、影响和交互模式(简称CEI:Checks, Effects, and Interactions)、互斥锁、Pull 支付方式以及gas限制都是防止可重入攻击的有效技术。 ## Solidity智能合约安全:防止重入攻击的4种方法 重入是一种编程技术,在这种技术中,一个函…

1620

"Stack Too Deep(堆栈太深)" 解决方案

Ethereum-优秀转载

## 恐怖的三个词 你只需要在合约中添加一个微小的更改即可。你认为这只需要几秒钟。没错,添加代码只花了不到一分钟的时间。你很高兴你快速解决了这个问题,你输入了compile命令。这么小的更改,你确信代码是正确的。 然而,你确看到以下错误消息: InternalCompilerEr…

1618

hardhat config 中optimizer 优化选项

Ethereum-新手教程

启用optimizer (优化器)后, 优化器会尝试去优化代码,如简化复杂的表达式等,例如常量表达式可能直接优化出计算,以便减少代码大小和执行成本。 runs 很多人有误解,它不是指优化器运行多少次,而是指合约函数未来可能会调用多少次,例如某些锁仓合约只会调用一次,可以将runs…

1611

深入Solidity数据存储位置

Ethereum-优秀转载

文章较长,内容很详细、很深入。但是不要吓到,坐下来,喝杯咖啡或你最喜欢的饮料,慢慢体会。 我们来探索Solidity的一个新的和必不可少的部分:数据存储位置。具有挑战性的话题。非常底层,因为它与以太坊虚拟机(EVM)的架构有关。 但通过类比,我们总是可以更好地理解复杂的编程概念、…

1604

深入理解EVM操作码,让你写出更好的智能合约

Ethereum-优秀转载

你的一些编程“好习惯”反而会让你写出低效的智能合约。对于普通编程语言而言,计算机做运算和改变程序的状态顶多只是费点电或者费点时间,但对于 EVM 兼容类的编程语言(例如 Solidity 和 Vyper),执行这些操作都是费钱的!这些花费的形式是区块链的原生货币(如以太坊的 ET…

1592

Solidity 优化 - 隐藏的 Gas 成本

Ethereum-优秀转载

本文将研究以太坊虚拟机(EVM)的内部工作,以说明如何 "利用 "EVM的特殊特性,为用户最小化solidity智能合约的执行成本。社区发布许多关于 solidity开发者可以利用的知识来设计和开发更安全、更节省Gas的智能合约。 本周我们看一下两种不同类型的优化,这些优化相对简…

1579

Web3学习笔记:交易所钱包管理系统

Ethereum-优秀转载

交易所作为web3世界的核心枢纽,托管着大量加密资产,其钱包管理关系到大量用户的资产安全,因此很有必要对其钱包管理系统研究学习一番。这里我整理了一篇个人从产品设计者视角的学习笔记,希望能够帮助到大家学习。 ## 交易所钱包系统组成 交易所钱包系统设计主要需要考虑到**安全性**和…

1571

EIP 1014: CREATE2 指令

Ethereum-优秀转载

# EIP 1014: CREATE2 指令 | 作者 | 类型 | 分类 | 状态 | 创建时间 | | --------------- | --------------- | ---- | ----- | ---------- | | Vitalik Buterin | St…

1570

解构 Solidity 合约 #4: 函数体

Ethereum-优秀转载

这是解构系列另一篇。如果你没有读过前面的文章,请先看一下。我们正在解构一个简单的Solidity合约的EVM字节码。 我们已经走过了很长的路,不是吗?首先,我们理解了合约的创建时间和运行时字节码之间的区别;接下来,我们理解了来自任何调用或交易的执行入口是如何通过函数选择器被路由到…

1563

解构 Solidity 合约 #3:函数包装器

Ethereum-优秀转载

这是解构系列另一篇。如果你没有读过前面的文章,请先看一下。我们正在解构一个简单的Solidity合约的EVM字节码。 在上一篇文章中,我们看到函数选择器在我们的BasicToken.sol合约中是如何充当枢纽作用。它位于合约的入口处,并将执行重定向到调用者想要运行的合约中的匹配函…

1549

解构 Solidity 合约 #2 - 函数选择器

Ethereum-优秀转载

这是解构系列另一篇。如果你没有读过前面的文章,请先看一下。我们正在解构一个简单的Solidity合约的EVM字节码。 在上一篇文章中,我们发现有必要将合约的字节码分为创建时和运行时代码。在对创建部分进行了深入研究之后,现在是时候开始对运行时部分的探索了。 ## 运行时代码 如果你…

1535

解构Solidity合约 #1 - 字节码

Ethereum-优秀转载

## 解构Solidity合约 #1 - 字节码 专栏 理解 EVM - 探究Solidity 背后的秘密 继续加入OpenZepplin 解构合约系列文章。 你在路上,开着你那辆罕见的、完全修复的1969年野马马赫1快速行驶。阳光照射在所有原始的、华丽的镀金轮辋上,闪闪发光。只…

1529

Gas 技巧:Solidity 中利用位图大幅节省Gas费

Ethereum-优秀转载

有过合约开发经验的同学都可能知道的,以太坊中最昂贵的操作是存储数据(SSTORE)。所以大家也应该一直寻找方法来减少存储需求。让我们来探讨一个特别有用的方法:位图 注:在 Uniswap 的代码中,有很多使用位图来优化 gas 的技巧。 ## 如何实现一个简单的位图 假设我们想存…

1528

一文读懂以太坊签名:ECDSA、RLP、EIP155、EIP191、EIP712

Ethereum-优秀转载

## 思维导图 我把以太坊签名分为对消息签名与对交易签名,这两种签名都是基于ECDSA算法与流程,本章就让我们来搞清楚两种签名具体的内容。 ## 签名概述 签名的作用或目的? - 身份认证:证明你拥有地址的私钥; - 不可否认:确认你的确发布过该消息; - 完整性:确保信息没有被…

1510

更好Solidity合约调试工具: console.log

Ethereum-优秀转载

是时候用Hardhat EVM 替换ganache了,Hardhat EVM 是一个用于本地开发的以太坊网络,提供了更好的堆栈跟踪功能和console.log() 输出日志。 Hardhat EVM 是一个用于本地开发的以太坊网络,提供了更好的堆栈跟踪功能和console.log…