02 2025 档案
摘要:在现代的 JavaScript 和 Node.js 项目中,package.json 文件是项目配置的核心,它包含了项目的依赖项、脚本和其他重要信息。在依赖管理中,dependencies 和 devDependencies 是两个关键的字段。了解它们的区别和用途对开发和部署过程至关重要。 什么是
阅读全文
摘要:1. 引言 在 Solidity 智能合约开发中,using A for B; 是一种 扩展类型接口(Extending Type Interface) 的用法,它允许类型 B 直接使用库 A 中的函数。这种机制可以提高代码的可读性、可复用性,并减少冗余代码。 本文将深入解析 using A for
阅读全文
摘要:在使用 Ethers.js 进行智能合约开发时,我们经常需要让不同的账户调用合约方法,比如: 部署者 部署合约 用户A 进行交互 攻击者B 试图恶意调用 在这些情况下,Ethers.js 提供了 connect(signer) 方法,使我们能够灵活地切换调用者身份。本文将详细介绍 connect 的
阅读全文
摘要:Delegatecall 简介 1.1.什么是 delegatecall ? .delegatecall() 是 Solidity 中的一个方法,用于从一个原始合约中调用目标合约中的一个函数。然而,与其他方法不同的是,当使用.delegatecall()在目标合约中执行函数时,上下文从原始合约中传递
阅读全文
摘要:1. 什么是 CREATE2? CREATE2 是以太坊虚拟机(EVM)中的一个操作码(opcode),用于确定性地创建合约,使合约地址可预测。这与 CREATE 操作码不同,CREATE2 允许在合约部署前 计算出合约的地址,这对于智能合约钱包、工厂合约和 Layer 2 解决方案至关重要。 CR
阅读全文
摘要:在使用 Hardhat 和 Ethers.js 进行智能合约开发时,我们经常会看到 artifacts/ 目录,这个目录里存放的是 Solidity 合约的编译产物,包括 ABI、字节码和元数据。本篇博客将详细介绍 artifacts 是什么、它的目录结构,以及如何在部署合约时使用它。 1. 什么是
阅读全文
摘要:问题描述 在开发 ERC20 代币时,我们经常会遇到代币精度(decimals)与实际显示数值不一致的困惑。以下是一个具体案例分析。 合约代码 contract ERC20Coin is ERC20 { uint8 private immutable _decimals; uint256 priva
阅读全文