gate-evm-tools 1.0.10 → 1.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -27,11 +27,14 @@
27
27
  - ✅ 获取并更新存储布局信息
28
28
 
29
29
  ### ✅ 升级验证(validate)
30
- - ✅ 验证合约升级的安全性
30
+ - ✅ **自动检测合约类型(代理合约 or 实现合约)**
31
+ - ✅ **代理模式:验证升级安全性并生成 upgradeCalldata**
32
+ - ✅ **实现模式:验证存储布局兼容性并部署新合约**
31
33
  - ✅ 检查存储布局兼容性
32
34
  - ✅ 自动部署新实现合约
33
35
  - ✅ 生成 upgradeToAndCall 的 calldata
34
36
  - ✅ 支持同一合约和不同合约的升级模式
37
+ - ✅ 支持带构造函数参数的合约
35
38
 
36
39
  ### 📋 Calldata 解析(parse)
37
40
  - ✅ 解析 EVM calldata,显示函数名称和参数
@@ -236,6 +239,13 @@ npx gate-tool sync \
236
239
 
237
240
  验证合约升级的安全性,并生成 `upgradeToAndCall` 的 calldata。
238
241
 
242
+ **支持两种模式:**
243
+
244
+ 1. **代理合约模式**:验证升级安全性并生成 upgradeCalldata
245
+ 2. **实现合约模式**:验证代码一致性并部署新合约
246
+
247
+ ##### 模式 1: 代理合约升级验证
248
+
239
249
  ```bash
240
250
  # 不同合约升级(从 CounterUUPS 升级到 CounterUUPSV2)
241
251
  npx gate-tool validate \
@@ -258,7 +268,60 @@ npx gate-tool validate \
258
268
  --new CounterUUPSV2 \
259
269
  --network sepolia \
260
270
  --output ./upgrade-info.json
271
+ ```
272
+
273
+ **输出文件:** `upgradeCalldata.json`
274
+
275
+ 包含:
276
+ - 代理合约地址
277
+ - 旧实现合约地址
278
+ - 新实现合约地址
279
+ - upgradeToAndCall calldata
280
+
281
+ ##### 模式 2: 实现合约验证与部署
282
+
283
+ 验证新合约与链上实现合约的存储布局兼容性,并部署新的实现合约。
284
+
285
+ ```bash
286
+ # 验证存储布局兼容性并部署新合约
287
+ npx gate-tool validate \
288
+ --proxy 0xImplementationAddress \
289
+ --new LedgerImplA \
290
+ --network mainnet
291
+
292
+ # 注意:实现合约模式不需要 --old 参数
293
+ ```
294
+
295
+ **工作流程:**
296
+ 1. 🔍 自动检测地址类型(代理 or 实现)
297
+ 2. 📦 编译合约
298
+ 3. 🔐 **验证存储布局兼容性**(使用 Hardhat Upgrades 插件)
299
+ 4. ✅ 验证通过后部署新的实现合约
300
+ 5. 💾 保存部署信息到 `implementationDeploy.json`
301
+
302
+ **输出文件:** `implementationDeploy.json`
261
303
 
304
+ 包含:
305
+ - 旧实现合约地址
306
+ - **新实现合约地址**(新部署的)
307
+ - 存储布局兼容状态
308
+ - 时间戳和网络信息
309
+
310
+ **使用场景:**
311
+ - ✅ 验证新合约能否安全替换旧实现合约
312
+ - ✅ 确认存储槽位布局兼容
313
+ - ✅ 在验证通过后立即部署新的实现合约
314
+ - ✅ 获取新部署的实现合约地址用于后续升级
315
+
316
+ **重要说明:**
317
+ - 该模式**不是比较代码完全一致**
318
+ - 而是**验证存储布局兼容性**
319
+ - 即使代码有修改(如新增函数、修改逻辑),只要存储布局兼容就可以升级
320
+ - 这是可升级合约的核心安全机制
321
+
322
+ ##### 构造函数参数
323
+
324
+ ```bash
262
325
  # 如果新合约的构造函数需要参数
263
326
  npx gate-tool validate \
264
327
  --proxy 0x1234... \
@@ -278,7 +341,9 @@ npx gate-tool validate \
278
341
  --constructor-args '["0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb", "MyToken", 18, true]'
279
342
  ```
280
343
 
281
- **注意:** `validate` 命令会在链上部署新的实现合约(仅用于验证),但不会升级代理合约。请使用生成的 calldata 通过多签钱包执行升级。
344
+ **注意:**
345
+ - 代理模式:会部署新实现合约(仅用于验证),但不会升级代理合约。请使用生成的 calldata 通过多签钱包执行升级。
346
+ - 实现模式:会部署新实现合约并返回地址,可用于后续的手动升级操作。
282
347
 
283
348
  **构造函数参数格式说明:**
284
349
 
@@ -428,4 +493,141 @@ npx gate-tool parse \
428
493
  | `--contract <name>` | `-c` | 合约名称(从 artifacts 查找 ABI) | - |
429
494
  | `--abi-path <path>` | - | 自定义 ABI 文件路径 | - |
430
495
  | `--output <path>` | `-o` | 输出 JSON 文件路径 | - |
431
- **ABI 来源优先级**:直接提供的 abi > abiPath > contractName
496
+ **ABI 来源优先级**:直接提供的 abi > abiPath > contractName
497
+
498
+ ---
499
+
500
+ ## 五、完整使用示例
501
+
502
+ ### 场景 1: 验证实现合约存储布局并部署新版本
503
+
504
+ 假设你有一个已部署的实现合约,需要验证新合约的存储布局兼容性并部署新版本:
505
+
506
+ ```bash
507
+ # 1. 从 .openzeppelin 文件中找到实现合约地址
508
+ cat .openzeppelin/unknown-10088.json | grep "address"
509
+
510
+ # 2. 验证存储布局兼容性并部署新合约
511
+ npx gate-tool validate \
512
+ --proxy 0x40397e8F64561AabC793514F1b28B01A2ebE6875 \
513
+ --new LedgerImplA \
514
+ --network gateLayer
515
+
516
+ # 输出示例:
517
+ # ✅ 验证成功!
518
+ #
519
+ # 存储布局验证与部署结果:
520
+ # ────────────────────────────────────────────────────────────
521
+ # 旧实现合约: 0x40397e8F64561AabC793514F1b28B01A2ebE6875
522
+ # 新实现合约: 0x1234567890abcdef1234567890abcdef12345678
523
+ # 存储布局: ✅ 兼容
524
+ #
525
+ # 输出文件: /path/to/implementationDeploy.json
526
+ # ────────────────────────────────────────────────────────────
527
+
528
+ # 3. 查看部署信息
529
+ cat implementationDeploy.json
530
+ ```
531
+
532
+ **输出文件内容:**
533
+ ```json
534
+ {
535
+ "type": "implementation",
536
+ "oldImplementationAddress": "0x40397e8F64561AabC793514F1b28B01A2ebE6875",
537
+ "newImplementationAddress": "0x1234567890abcdef1234567890abcdef12345678",
538
+ "contractName": "LedgerImplA",
539
+ "storageLayoutCompatible": true,
540
+ "timestamp": "2024-01-01T00:00:00.000Z",
541
+ "network": "gateLayer"
542
+ }
543
+ ```
544
+
545
+ ### 场景 2: 代理合约升级流程
546
+
547
+ ```bash
548
+ # 1. 验证升级安全性并生成 calldata
549
+ npx gate-tool validate \
550
+ --proxy 0xProxyAddress \
551
+ --old CounterUUPS \
552
+ --new CounterUUPSV2 \
553
+ --network mainnet
554
+
555
+ # 输出示例:
556
+ # ✅ 验证成功!
557
+ #
558
+ # 升级信息摘要:
559
+ # ────────────────────────────────────────────────────────────
560
+ # 代理合约: 0xProxyAddress
561
+ # 旧实现: 0xOldImpl
562
+ # 新实现: 0xNewImpl
563
+ #
564
+ # Calldata: 0x4f1ef286000000000000000000000000...
565
+ #
566
+ # 输出文件: /path/to/upgradeCalldata.json
567
+ # ────────────────────────────────────────────────────────────
568
+
569
+ # 2. 使用生成的 calldata 在多签钱包中执行升级
570
+ # - 打开多签钱包(如 Gnosis Safe)
571
+ # - 使用 upgradeCalldata.json 中的 target 和 calldata
572
+ # - 提交交易并收集签名
573
+
574
+ # 3. 升级完成后,同步本地状态
575
+ npx gate-tool sync \
576
+ --proxy 0xProxyAddress \
577
+ --contract CounterUUPSV2 \
578
+ --network mainnet
579
+ ```
580
+
581
+ ### 场景 3: 检查多个合约的字节码
582
+
583
+ ```bash
584
+ # 1. 准备配置文件 contractInfo.json
585
+ cat > contractInfo.json << EOF
586
+ {
587
+ "contracts": {
588
+ "mainnet": {
589
+ "Vault": "0x1234...",
590
+ "Token": "0x5678..."
591
+ },
592
+ "sepolia": {
593
+ "Vault": "0xabcd..."
594
+ }
595
+ }
596
+ }
597
+ EOF
598
+
599
+ # 2. 执行检查
600
+ npx gate-tool check
601
+
602
+ # 3. 查看报告
603
+ cat bytecode-check-report.json
604
+ ```
605
+
606
+ ### 场景 4: 解析升级交易的 calldata
607
+
608
+ ```bash
609
+ # 1. 从多签钱包获取待执行的 calldata
610
+ # 2. 解析 calldata 查看具体操作
611
+ npx gate-tool parse \
612
+ --to 0xProxyAddress \
613
+ --contract CounterUUPS \
614
+ --calldata 0x4f1ef286000000000000000000000000...
615
+
616
+ # 输出示例:
617
+ # 📋 Calldata 解析结果
618
+ # ════════════════════════════════════════════════
619
+ # 目标合约: 0xProxyAddress
620
+ # 合约名称: CounterUUPS
621
+ #
622
+ # 函数名称: upgradeToAndCall
623
+ # 函数签名: upgradeToAndCall(address,bytes)
624
+ #
625
+ # 参数列表:
626
+ # ────────────────────────────────────────────────
627
+ # 1. newImplementation (address)
628
+ # 0x1234567890abcdef1234567890abcdef12345678
629
+ #
630
+ # 2. data (bytes)
631
+ # 0x
632
+ # ════════════════════════════════════════════════
633
+ ```
@@ -1 +1 @@
1
- {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAS9C;;GAEG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,eAAe,iBA2I7D"}
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAS9C;;GAEG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,eAAe,iBAyJ7D"}
@@ -14,20 +14,19 @@ export async function validateUpgrade(options) {
14
14
  try {
15
15
  // 1. 验证必需参数
16
16
  if (!options.proxy) {
17
- throw new Error('必须提供代理合约地址(--proxy)');
18
- }
19
- if (!options.old) {
20
- throw new Error('必须提供旧合约名称(--old)');
17
+ throw new Error('必须提供合约地址(--proxy)');
21
18
  }
19
+ // --old 参数现在是可选的(实现合约模式不需要)
20
+ // 只有 --new 是必需的
22
21
  if (!options.new) {
23
22
  throw new Error('必须提供新合约名称(--new)');
24
23
  }
25
24
  // 验证地址格式
26
25
  if (!isValidAddress(options.proxy)) {
27
- throw new Error('代理合约地址格式无效(应为 0x 开头的 40 位十六进制地址)');
26
+ throw new Error('合约地址格式无效(应为 0x 开头的 40 位十六进制地址)');
28
27
  }
29
28
  // 验证合约名称格式
30
- if (!isValidContractName(options.old)) {
29
+ if (options.old && !isValidContractName(options.old)) {
31
30
  throw new Error('旧合约名称格式无效');
32
31
  }
33
32
  if (!isValidContractName(options.new)) {
@@ -86,7 +85,7 @@ export async function validateUpgrade(options) {
86
85
  console.log('');
87
86
  const result = await validateAndGenerateCalldata({
88
87
  proxyAddress: options.proxy,
89
- oldContractName: options.old,
88
+ oldContractName: options.old || options.new, // 如果没有 --old,使用 --new
90
89
  newContractName: options.new,
91
90
  outputPath: options.output,
92
91
  constructorArgs: constructorArgs,
@@ -94,16 +93,30 @@ export async function validateUpgrade(options) {
94
93
  });
95
94
  // 6. 显示成功信息
96
95
  console.log(chalk.green.bold('\n✅ 验证成功!\n'));
97
- console.log(chalk.cyan('升级信息摘要:'));
98
- console.log(chalk.gray('─'.repeat(60)));
99
- console.log(`${chalk.white('代理合约:')} ${chalk.yellow(result.proxyAddress)}`);
100
- console.log(`${chalk.white('旧实现:')} ${chalk.gray(result.oldImplementation)}`);
101
- console.log(`${chalk.white('新实现:')} ${chalk.green(result.newImplementation)}`);
102
- console.log('');
103
- console.log(`${chalk.white('Calldata:')} ${chalk.cyan(result.calldata)}`);
104
- console.log('');
105
- console.log(`${chalk.white('输出文件:')} ${chalk.gray(result.outputFile)}`);
106
- console.log(chalk.gray(''.repeat(60)));
96
+ if (result.type === 'proxy') {
97
+ // 代理合约升级模式
98
+ console.log(chalk.cyan('升级信息摘要:'));
99
+ console.log(chalk.gray(''.repeat(60)));
100
+ console.log(`${chalk.white('代理合约:')} ${chalk.yellow(result.proxyAddress)}`);
101
+ console.log(`${chalk.white('旧实现:')} ${chalk.gray(result.oldImplementation)}`);
102
+ console.log(`${chalk.white('新实现:')} ${chalk.green(result.newImplementation)}`);
103
+ console.log('');
104
+ console.log(`${chalk.white('Calldata:')} ${chalk.cyan(result.calldata)}`);
105
+ console.log('');
106
+ console.log(`${chalk.white('输出文件:')} ${chalk.gray(result.outputFile)}`);
107
+ console.log(chalk.gray('─'.repeat(60)));
108
+ }
109
+ else {
110
+ // 实现合约验证模式
111
+ console.log(chalk.cyan('存储布局验证与部署结果:'));
112
+ console.log(chalk.gray('─'.repeat(60)));
113
+ console.log(`${chalk.white('旧实现合约:')} ${chalk.gray(result.oldImplementationAddress)}`);
114
+ console.log(`${chalk.white('新实现合约:')} ${chalk.green(result.newImplementationAddress)}`);
115
+ console.log(`${chalk.white('存储布局:')} ${chalk.green('✅ 兼容')}`);
116
+ console.log('');
117
+ console.log(`${chalk.white('输出文件:')} ${chalk.gray(result.outputFile)}`);
118
+ console.log(chalk.gray('─'.repeat(60)));
119
+ }
107
120
  }
108
121
  catch (error) {
109
122
  spinner.fail('验证失败');
@@ -1 +1 @@
1
- {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/commands/validate.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,10 @@ export interface ValidateOptions {
10
10
  * 验证升级合约的安全性并生成 upgradeToAndCall 的 calldata
11
11
  * 不执行实际的升级操作
12
12
  *
13
+ * 支持两种输入模式:
14
+ * 1. 代理合约地址:验证升级安全性,生成 upgradeCalldata
15
+ * 2. 实现合约地址:只比较本地代码和链上代码,不生成 upgradeCalldata
16
+ *
13
17
  * 支持两种升级模式:
14
18
  * 1. 同一合约升级:直接修改现有合约文件(如 CounterUUPS.sol),OLD 和 NEW 使用相同的合约名称
15
19
  * 2. 不同合约升级:从一个合约升级到另一个合约(如 CounterUUPS -> CounterUUPSV2)
@@ -17,6 +21,14 @@ export interface ValidateOptions {
17
21
  * @param options - 验证选项
18
22
  */
19
23
  export declare function validateAndGenerateCalldata(options: ValidateOptions): Promise<{
24
+ type: string;
25
+ oldImplementationAddress: string;
26
+ newImplementationAddress: any;
27
+ storageLayoutCompatible: boolean;
28
+ outputFile: string;
29
+ success: boolean;
30
+ } | {
31
+ type: string;
20
32
  proxyAddress: string;
21
33
  oldImplementation: string;
22
34
  newImplementation: any;
@@ -1 +1 @@
1
- {"version":3,"file":"validateAndGenerateCalldata.d.ts","sourceRoot":"","sources":["../../src/core/validateAndGenerateCalldata.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,GAAG,EAAE,CAAC;IACxB,GAAG,EAAE,GAAG,CAAC;CACV;AAED;;;;;;;;;GASG;AACH,wBAAsB,2BAA2B,CAAC,OAAO,EAAE,eAAe;;;;;;;GAkRzE"}
1
+ {"version":3,"file":"validateAndGenerateCalldata.d.ts","sourceRoot":"","sources":["../../src/core/validateAndGenerateCalldata.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,GAAG,EAAE,CAAC;IACxB,GAAG,EAAE,GAAG,CAAC;CACV;AA6BD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,2BAA2B,CAAC,OAAO,EAAE,eAAe;;;;;;;;;;;;;;;GA0CzE"}
@@ -1,10 +1,39 @@
1
1
  import { validateUpgradeSafety } from '@openzeppelin/upgrades-core';
2
2
  import * as path from 'path';
3
3
  import * as fs from 'fs';
4
+ /**
5
+ * 检测地址是代理合约还是实现合约
6
+ */
7
+ async function detectContractType(address, hre) {
8
+ try {
9
+ // 尝试读取 ERC1967 implementation slot
10
+ const implementationSlot = '0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc';
11
+ const rawImplementationAddress = await hre.ethers.provider.getStorage(address, implementationSlot);
12
+ // 如果 slot 不是 0,说明是代理合约
13
+ if (rawImplementationAddress !== '0x0000000000000000000000000000000000000000000000000000000000000000') {
14
+ const implementationAddress = '0x' + rawImplementationAddress.slice(-40);
15
+ // 进一步验证:检查这个地址是否是有效的合约地址
16
+ const implCode = await hre.ethers.provider.getCode(implementationAddress);
17
+ if (implCode !== '0x') {
18
+ return 'proxy';
19
+ }
20
+ }
21
+ // 如果读不到有效的 implementation,说明是实现合约
22
+ return 'implementation';
23
+ }
24
+ catch (error) {
25
+ console.log('⚠️ 检测失败,默认当作实现合约处理');
26
+ return 'implementation';
27
+ }
28
+ }
4
29
  /**
5
30
  * 验证升级合约的安全性并生成 upgradeToAndCall 的 calldata
6
31
  * 不执行实际的升级操作
7
32
  *
33
+ * 支持两种输入模式:
34
+ * 1. 代理合约地址:验证升级安全性,生成 upgradeCalldata
35
+ * 2. 实现合约地址:只比较本地代码和链上代码,不生成 upgradeCalldata
36
+ *
8
37
  * 支持两种升级模式:
9
38
  * 1. 同一合约升级:直接修改现有合约文件(如 CounterUUPS.sol),OLD 和 NEW 使用相同的合约名称
10
39
  * 2. 不同合约升级:从一个合约升级到另一个合约(如 CounterUUPS -> CounterUUPSV2)
@@ -13,11 +42,227 @@ import * as fs from 'fs';
13
42
  */
14
43
  export async function validateAndGenerateCalldata(options) {
15
44
  const { proxyAddress, oldContractName, newContractName, outputPath, constructorArgs, hre } = options;
16
- const PROXY_ADDRESS = proxyAddress;
45
+ const CONTRACT_ADDRESS = proxyAddress; // 可能是代理或实现合约地址
17
46
  const OLD_CONTRACT_NAME = oldContractName;
18
47
  const NEW_CONTRACT_NAME = newContractName;
19
48
  const CONSTRUCTOR_ARGS = constructorArgs || [];
20
- console.log('\n🔍 开始升级安全性验证流程...');
49
+ console.log('\n🔍 开始合约验证流程...');
50
+ console.log('=====================================\n');
51
+ // Step 0: 检测合约类型
52
+ console.log('🔍 Step 0: 检测合约类型...');
53
+ const contractType = await detectContractType(CONTRACT_ADDRESS, hre);
54
+ if (contractType === 'proxy') {
55
+ console.log('✅ 检测到代理合约(Proxy Contract)');
56
+ console.log(' 将执行升级验证流程');
57
+ }
58
+ else {
59
+ console.log('✅ 检测到实现合约(Implementation Contract)');
60
+ console.log(' 将执行代码比对流程');
61
+ }
62
+ console.log('');
63
+ // 根据合约类型选择不同的处理流程
64
+ if (contractType === 'implementation') {
65
+ return await validateImplementationContract({
66
+ implementationAddress: CONTRACT_ADDRESS,
67
+ contractName: NEW_CONTRACT_NAME,
68
+ constructorArgs: CONSTRUCTOR_ARGS,
69
+ outputPath,
70
+ hre
71
+ });
72
+ }
73
+ else {
74
+ return await validateProxyUpgrade({
75
+ proxyAddress: CONTRACT_ADDRESS,
76
+ oldContractName: OLD_CONTRACT_NAME,
77
+ newContractName: NEW_CONTRACT_NAME,
78
+ constructorArgs: CONSTRUCTOR_ARGS,
79
+ outputPath,
80
+ hre
81
+ });
82
+ }
83
+ }
84
+ /**
85
+ * 验证实现合约:验证存储布局兼容性并部署新合约
86
+ */
87
+ async function validateImplementationContract(options) {
88
+ const { implementationAddress, contractName, constructorArgs, outputPath, hre } = options;
89
+ console.log('📋 实现合约信息:');
90
+ console.log('=====================================');
91
+ console.log('旧实现合约地址:', implementationAddress);
92
+ console.log('新合约名称:', contractName);
93
+ if (constructorArgs.length > 0) {
94
+ console.log('构造函数参数:', constructorArgs);
95
+ }
96
+ console.log('=====================================\n');
97
+ // Step 1: 清理并编译合约
98
+ console.log('🔨 Step 1: 清理并编译合约...');
99
+ const buildInfoDir = path.join(process.cwd(), 'artifacts/build-info');
100
+ try {
101
+ console.log(' 🧹 清理旧的编译文件...');
102
+ await hre.run('clean');
103
+ console.log(' 🔧 编译合约...');
104
+ await hre.run('compile', { quiet: true });
105
+ console.log(' ✅ 编译完成\n');
106
+ }
107
+ catch (error) {
108
+ console.error(' ❌ 编译失败:', error.message);
109
+ throw error;
110
+ }
111
+ // 检查 build-info 文件
112
+ if (!fs.existsSync(buildInfoDir)) {
113
+ throw new Error('build-info 目录不存在');
114
+ }
115
+ const buildInfoFiles = fs.readdirSync(buildInfoDir).filter(f => f.endsWith('.json'));
116
+ if (buildInfoFiles.length === 0) {
117
+ throw new Error('build-info 目录中没有文件');
118
+ }
119
+ console.log(`📂 找到 ${buildInfoFiles.length} 个 build-info 文件\n`);
120
+ // Step 2: 导入链上实现合约信息(临时)
121
+ console.log('🔐 Step 2: 导入链上实现合约信息...');
122
+ console.log('');
123
+ let forceImportSuccess = false;
124
+ const openzeppelinDir = path.join(process.cwd(), '.openzeppelin');
125
+ const chainId = (await hre.ethers.provider.getNetwork()).chainId;
126
+ const openzeppelinFile = path.join(openzeppelinDir, `unknown-${chainId}.json`);
127
+ // 备份现有的 .openzeppelin 文件(如果存在)
128
+ let backupData = null;
129
+ if (fs.existsSync(openzeppelinFile)) {
130
+ console.log('📋 检测到已存在的 .openzeppelin 文件,将备份...');
131
+ backupData = JSON.parse(fs.readFileSync(openzeppelinFile, 'utf8'));
132
+ }
133
+ try {
134
+ // 尝试 forceImport 链上的实现合约
135
+ console.log(`📥 导入实现合约: ${implementationAddress}`);
136
+ // 获取链上实现合约的工厂(猜测合约名,或使用通用方法)
137
+ const OldContractFactory = await hre.ethers.getContractFactory(contractName);
138
+ const importOptions = {
139
+ kind: 'uups',
140
+ unsafeAllow: [
141
+ 'delegatecall',
142
+ 'constructor',
143
+ 'missing-public-upgradeto',
144
+ 'state-variable-immutable',
145
+ 'missing-initializer'
146
+ ],
147
+ };
148
+ if (constructorArgs.length > 0) {
149
+ importOptions.constructorArgs = constructorArgs;
150
+ }
151
+ await hre.upgrades.forceImport(implementationAddress, OldContractFactory, importOptions);
152
+ console.log('✅ 实现合约信息导入成功');
153
+ console.log('');
154
+ forceImportSuccess = true;
155
+ }
156
+ catch (importError) {
157
+ console.log('⚠️ 导入失败,尝试继续验证...');
158
+ console.log(` 错误: ${importError.message}`);
159
+ console.log('');
160
+ }
161
+ // Step 3: 验证存储布局兼容性
162
+ console.log('🔐 Step 3: 验证存储布局兼容性...');
163
+ console.log('');
164
+ try {
165
+ const NewContractFactory = await hre.ethers.getContractFactory(contractName);
166
+ const validateOptions = {
167
+ kind: 'uups',
168
+ unsafeAllow: [
169
+ 'delegatecall', // 允许 delegatecall
170
+ 'constructor', // 允许 constructor
171
+ 'missing-public-upgradeto', // 允许缺少 upgradeTo 函数
172
+ 'state-variable-immutable',
173
+ "missing-initializer"
174
+ ],
175
+ unsafeSkipStorageCheck: false,
176
+ };
177
+ if (constructorArgs.length > 0) {
178
+ validateOptions.constructorArgs = constructorArgs;
179
+ }
180
+ // 使用实现合约地址作为"代理"地址进行验证
181
+ // Hardhat Upgrades 会读取该地址的合约并与新合约比较存储布局
182
+ await hre.upgrades.validateUpgrade(implementationAddress, NewContractFactory, validateOptions);
183
+ console.log('✅ 存储布局兼容性验证通过!');
184
+ console.log(' ℹ️ 已验证:存储布局兼容、可以安全升级');
185
+ console.log('');
186
+ }
187
+ catch (error) {
188
+ console.error('❌ 存储布局验证失败:', error.message);
189
+ console.error('');
190
+ console.error('⚠️ 存储布局不兼容,不能升级!');
191
+ // 恢复备份
192
+ if (backupData) {
193
+ console.log('🔄 恢复 .openzeppelin 文件备份...');
194
+ fs.writeFileSync(openzeppelinFile, JSON.stringify(backupData, null, 2));
195
+ }
196
+ else if (forceImportSuccess && fs.existsSync(openzeppelinFile)) {
197
+ console.log('🧹 清理临时导入的 .openzeppelin 文件...');
198
+ fs.unlinkSync(openzeppelinFile);
199
+ }
200
+ throw error;
201
+ }
202
+ // 清理:恢复原始的 .openzeppelin 文件
203
+ if (backupData) {
204
+ console.log('🔄 恢复 .openzeppelin 文件到原始状态...');
205
+ fs.writeFileSync(openzeppelinFile, JSON.stringify(backupData, null, 2));
206
+ console.log('');
207
+ }
208
+ else if (forceImportSuccess && fs.existsSync(openzeppelinFile)) {
209
+ console.log('🧹 清理临时导入的 .openzeppelin 文件...');
210
+ fs.unlinkSync(openzeppelinFile);
211
+ console.log('');
212
+ }
213
+ // Step 4: 部署新的实现合约
214
+ console.log('📦 Step 4: 部署新的实现合约...');
215
+ try {
216
+ if (constructorArgs.length > 0) {
217
+ console.log('📝 构造函数参数:', constructorArgs);
218
+ }
219
+ const ContractFactory = await hre.ethers.getContractFactory(contractName);
220
+ // 部署实现合约(如果有构造函数参数,传递它们)
221
+ const newImplementation = constructorArgs.length > 0
222
+ ? await ContractFactory.deploy(...constructorArgs)
223
+ : await ContractFactory.deploy();
224
+ await newImplementation.waitForDeployment();
225
+ const newImplementationAddress = await newImplementation.getAddress();
226
+ console.log('✅ 新实现合约部署完成:', newImplementationAddress);
227
+ console.log('');
228
+ // 保存结果
229
+ const outputData = {
230
+ type: 'implementation',
231
+ oldImplementationAddress: implementationAddress,
232
+ newImplementationAddress: newImplementationAddress,
233
+ contractName: contractName,
234
+ storageLayoutCompatible: true,
235
+ timestamp: new Date().toISOString(),
236
+ network: (await hre.ethers.provider.getNetwork()).name
237
+ };
238
+ const finalOutputPath = outputPath || path.join(process.cwd(), 'implementationDeploy.json');
239
+ fs.writeFileSync(finalOutputPath, JSON.stringify(outputData, null, 2));
240
+ console.log('💾 部署信息已保存到:', finalOutputPath);
241
+ console.log('');
242
+ return {
243
+ type: 'implementation',
244
+ oldImplementationAddress: implementationAddress,
245
+ newImplementationAddress: newImplementationAddress,
246
+ storageLayoutCompatible: true,
247
+ outputFile: finalOutputPath,
248
+ success: true
249
+ };
250
+ }
251
+ catch (error) {
252
+ console.error('❌ 验证失败:', error.message);
253
+ throw error;
254
+ }
255
+ }
256
+ /**
257
+ * 验证代理合约升级:原有逻辑
258
+ */
259
+ async function validateProxyUpgrade(options) {
260
+ const { proxyAddress, oldContractName, newContractName, constructorArgs, outputPath, hre } = options;
261
+ const PROXY_ADDRESS = proxyAddress;
262
+ const OLD_CONTRACT_NAME = oldContractName;
263
+ const NEW_CONTRACT_NAME = newContractName;
264
+ const CONSTRUCTOR_ARGS = constructorArgs;
265
+ console.log('\n🔍 开始代理合约升级验证流程...');
21
266
  console.log('=====================================\n');
22
267
  // 检查是否是同一个合约的升级
23
268
  const isSameContract = OLD_CONTRACT_NAME === NEW_CONTRACT_NAME;
@@ -166,7 +411,11 @@ export async function validateAndGenerateCalldata(options) {
166
411
  // 验证新实现合约是否可以安全升级
167
412
  // 这会从链上读取当前实现合约并与新合约进行比较
168
413
  const validateOptions = {
169
- kind: 'uups'
414
+ kind: 'uups',
415
+ // 允许 delegatecall 和 constructor(根据实际情况调整)
416
+ unsafeAllow: ['delegatecall', 'constructor'],
417
+ // 如果还有其他不安全操作,可以添加:
418
+ // 'state-variable-immutable', 'state-variable-assignment', 'external-library-linking', 'selfdestruct'
170
419
  };
171
420
  // 如果有构造函数参数,添加到验证选项中
172
421
  if (CONSTRUCTOR_ARGS.length > 0) {
@@ -236,6 +485,7 @@ export async function validateAndGenerateCalldata(options) {
236
485
  console.log('');
237
486
  console.log('=====================================\n');
238
487
  return {
488
+ type: 'proxy',
239
489
  proxyAddress: PROXY_ADDRESS,
240
490
  oldImplementation: OLD_IMPLEMENTATION,
241
491
  newImplementation: newImplementationAddress,
@@ -1 +1 @@
1
- {"version":3,"file":"validateAndGenerateCalldata.js","sourceRoot":"","sources":["../../src/core/validateAndGenerateCalldata.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validateAndGenerateCalldata.js","sourceRoot":"","sources":["../../src/core/validateAndGenerateCalldata.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -54,12 +54,12 @@ program
54
54
  // validate 命令
55
55
  program
56
56
  .command('validate')
57
- .description('验证合约升级安全性并生成 calldata')
58
- .requiredOption('--proxy <address>', '代理合约地址')
59
- .requiredOption('--old <name>', '旧合约名称')
57
+ .description('验证合约升级安全性并生成 calldata(支持代理合约和实现合约)')
58
+ .requiredOption('--proxy <address>', '合约地址(代理合约或实现合约)')
59
+ .option('--old <name>', '旧合约名称(代理模式时使用)')
60
60
  .requiredOption('--new <name>', '新合约名称')
61
61
  .option('-n, --network <name>', '网络名称')
62
- .option('-o, --output <path>', '输出文件路径 (默认: ./upgradeCalldata.json)')
62
+ .option('-o, --output <path>', '输出文件路径 (默认: ./upgradeCalldata.json 或 ./bytecodeComparison.json)')
63
63
  .option('--constructor-args <args>', '新合约构造函数参数(JSON数组格式,例如: \'["arg1", 100]\')')
64
64
  .action(async (options) => {
65
65
  try {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gate-evm-tools",
3
- "version": "1.0.10",
3
+ "version": "1.0.11",
4
4
  "description": "Gate 智能合约工具集 - 字节码检查、合约升级验证、合约状态同步",
5
5
  "type": "module",
6
6
  "bin": {