OpenZepplin 已经成为如今合约开发的事实标准,很难找到一个完全不使用它而完全从零自行打造合约系统的例子。除非要开发一个竞品,摆脱它既无必要,也不经济,同时还浪费时间。 在一般语境下,OpenZepplin 指代的其实是:Op...
## 什么是代币金库 `ERC4626` 代币金库(`Vault`)是 `ERC20` 的拓展。本质上可以理解为一个智能合约,支持把资产托管进去这个合约中,合约代表你去赚钱,赚到的钱按份额分配。 `ERC4626` 继承于 `ERC20`,基本接口和 `ERC20` 一致,但...
如果投票是根据某人持有的代币数量来衡量的,那么恶意行为者就可以使用他们的代币进行投票,然后将代币转移到另一个地址,用该地址进行投票,依此类推。如果每个地址都是一个智能合约,那么黑客可以在一笔交易中完成...
以下是一个在 [Foundry](https://learnblockchain.cn/article/9780) 环境中使用 OpenZeppelin 安全创建和验证 ECDSA 签名的最小示例(可以直接复制粘贴)。 ## 合约:Verifier.sol ```solidity // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "@openzeppelin/...
## 向后兼容性 OpenZeppelin Contracts 使用语义化版本控制来传递其 API 和存储布局的向后兼容性。Patch 和 minor 更新通常是向后兼容的,但极少数情况下会有例外,如下文详述。应该假定 major 更新与以前的版本不兼容。在本页中,我...
## 基本概念 Solidity是一种面向对象的编程语言,它支持合约之间的继承。继承允许一个合约获取另一个合约的所有非私有属性和函数,这样就可以重复使用代码,降低重复工作量。 ## 继承关键字 在Solidity中,继承是通过`is`...
## Vyper bug 以太坊基金会在对Vyper编译器进行安全审计的时候,发现基于Python编写的Vyper代码实现尚存在bug且修复难度大,因此决定暂时把该项目独立出去,让Vyperlang团队自主解决问题。 ## 以太坊基金会迎来新成员 学术咖Bar...
NFT 市场虽然很火,但高昂的 gas 费用和繁琐的操作步骤一直让用户头疼。每次交易都得授权,gas 费蹭蹭往上涨,体验不太好。为了解决这些问题,我写了一个 NFT 市场应用:“NFT Market Plus”,使用了 `ERC20Permit` 和 `EIP-712` 来优化 ...
# 交易回滚攻击 ## 原理分析 [以太坊 EVM](https://learnblockchain.cn/article/1229) 支持交易回滚,合约可以使不满足条件的调用失败,从而回滚部分或者整个交易。 - 交易回滚 使用 `assert()`,`require()` 和 `revert()` 可以使不满足条...
# 可扩展的 \`Safe\` 架构 本文档概述了一个\*可扩展的\* \`Safe\` 架构,旨在增加 \`Safe\` 的新型集成/应用。 以下指导原则已被**严格**采用: 1. \`SafeProxy\` 的状态**绝对不能**被修改,以确保最大程度的安全性。 2. 架构内不使用 \`...
> 📚 作者:Henry > 🧱 系列:《[ERC 系列标准全景图解](https://learnblockchain.cn/column/141/intro)》 · 第 3 篇 > 👨💻 受众:Web3 前端工程师 / 区块链开发者 / Web3入门者 > 👉 系列持续更新中,建议收藏专栏或关注作者 ## 🧠 为什...
### 0. 版本 [openzeppelin]:v4.8.3,[forge-std]:v1.5.6 #### 0.1 draft-ERC20Permit.sol Github: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.8.3/contracts/token/ERC20/extensions/draft-ERC20Permit.sol ERC20Permit库是ERC20的拓展。本库通过permit方法允许...
# 1. **简介** 如果您想自动获取 ERC20 代币的元数据,我们有一个方便的解决方案:Chainbase API 的 **`getTokenMetadata`**。使用此 API,您可以轻松获取任何 ERC20 代币的元数据,只需提供其合约地址即可。 在本文中,我们将介绍使...