理解账户抽象 #3 - 钱包创建
前面 2 篇我们介绍了账户抽象,第一篇:如何使用智能合约钱包来实现 EOA 钱包一样的功能,第二篇 : 介绍如何使用第三方来代为支付手续费。 ## 钱包创建 我们还没有解决的问题是每个用户的钱包合约首先是如何在区块链上如何生成的。部署合约的 "传统" 方式是使用EOA来发送一个没…
欢迎所有爱好区块链技术的人加入。
CATEGORY
Ethereum-优秀转载Ethereum-开源推荐Ethereum-新手教程
共 253 篇
前面 2 篇我们介绍了账户抽象,第一篇:如何使用智能合约钱包来实现 EOA 钱包一样的功能,第二篇 : 介绍如何使用第三方来代为支付手续费。 ## 钱包创建 我们还没有解决的问题是每个用户的钱包合约首先是如何在区块链上如何生成的。部署合约的 "传统" 方式是使用EOA来发送一个没…
理解账户抽象第二篇,看看如何使用第三方代替自己支付。 在本系列的第一篇中,我们从头开始创建了就有EOA的功能的智能合约钱包,并通过允许用户选择自己的自定义验证逻辑进行改进。但是现在,钱包仍然需要支付Gas,这意味着钱包所有者需要找到一种方法来获得一些ETH,然后才能在链上执行任何…
本文提供一个新的视角来理解账户抽象(Account Abstraction)。通过从零开始设计智能合约钱包,你会明白几个简单选择之后,让 EIP-4337 如此复杂的原因。 ## 理解账户抽象 - #1 通过从零开始设计智能合约钱包,你会明白几个简单选择之后,让 ERC-4337…
简单概括,KZG Ceremony 是实现 EIP-4844 不可绕过的一个初始化环节,而 EIP-4844 是实现以太坊sharding过程中的先行版本。 ## 一、Sharding: 以太坊扩容的长久之计 - Sharding 从数据可用性角度扩容,而 rollup 主要从执…
这一讲,我们将介绍选择器碰撞攻击,它是导致跨链桥 Poly Network 被黑的原因之一。在2021年8月,Poly Network在ETH,BSC,和Polygon上的跨链桥合约被盗,损失高达6.11亿美元。这是2021年最大的区块链黑客事件,也是历史被盗金额榜单上第2名,仅…
## 回调函数 Solidity支持两种特殊的回调函数,receive()和fallback(),他们主要在两种情况下被使用: - 接收ETH - 处理合约中不存在的函数调用(代理合约proxy contract) 我们这一讲主要介绍接收ETH的情况。 ### 接收ETH函数 r…
ABI (Application Binary Interface,应用二进制接口)是与以太坊智能合约交互的标准。数据基于他们的类型编码;并且由于编码后不包含类型信息,解码时需要注明它们的类型。 Solidity中,ABI编码有4个函数:abi.encode, abi.encod…
实例验证下call,delegatecall,两种方式下msg.sender和数据storage存储位置的区别 ### 合约A ### 合约B ### call 测试 B合约地址:0x086866663330344C7D1C51Bf19FF981AF3cB5782 A合约地址:0…
方案的具体讲解来自《智能合约安全审计入门篇 —— 访问私有数据》,本片文章将在QEasyWeb3测试链上进行数据验证 ## 测试合约 ## 部署合约 通过https://remix.ethereum.org/ 进行部署,具体操作不做详细讲解 ### 网络配置 QEasyWeb3的…
了解如何访问合约中的私有数据(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…
启用optimizer (优化器)后, 优化器会尝试去优化代码,如简化复杂的表达式等,例如常量表达式可能直接优化出计算,以便减少代码大小和执行成本。 runs 很多人有误解,它不是指优化器运行多少次,而是指合约函数未来可能会调用多少次,例如某些锁仓合约只会调用一次,可以将runs…
文章较长,内容很详细、很深入。但是不要吓到,坐下来,喝杯咖啡或你最喜欢的饮料,慢慢体会。 我们来探索Solidity的一个新的和必不可少的部分:数据存储位置。具有挑战性的话题。非常底层,因为它与以太坊虚拟机(EVM)的架构有关。 但通过类比,我们总是可以更好地理解复杂的编程概念、…
你的一些编程“好习惯”反而会让你写出低效的智能合约。对于普通编程语言而言,计算机做运算和改变程序的状态顶多只是费点电或者费点时间,但对于 EVM 兼容类的编程语言(例如 Solidity 和 Vyper),执行这些操作都是费钱的!这些花费的形式是区块链的原生货币(如以太坊的 ET…
本文将研究以太坊虚拟机(EVM)的内部工作,以说明如何 "利用 "EVM的特殊特性,为用户最小化solidity智能合约的执行成本。社区发布许多关于 solidity开发者可以利用的知识来设计和开发更安全、更节省Gas的智能合约。 本周我们看一下两种不同类型的优化,这些优化相对简…