You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GoQuorum快速入门教程私有交易环节执行失败求助

解决GoQuorum私有交易环节"method handler crashed"问题

问题核心原因

日志中的PrivateTransactionManager is not enabled是关键诱因——尽管你在初始化时选择启用私有交易,但WSL2环境下可能存在容器服务启动异常、配置生成错误或端口映射失效,导致私有交易管理器(PTM,即Tessera)未正常运行;而address was not present in access list during sstore op是PTM未工作引发的连锁错误,私有交易的访问列表无法正确生成。

分步修复方案

1. 检查Tessera服务状态

进入quickstart生成的根目录(默认是quorum-dev-quickstart),执行命令验证Tessera容器状态:

docker-compose ps | grep tessera
  • 若容器状态为Exited或Restarting,重启服务:
    docker-compose restart tessera
    

2. 验证节点PTM配置

查看节点配置文件(比如quorum-dev-quickstart/configs/node1/config.toml),确认存在以下配置段:

[PrivateTransactionManager]
    enabled = true
    url = "http://tessera-node1:9081"
  • 若配置缺失,说明初始化时配置生成出错,彻底重置环境后重新初始化:
    cd quorum-dev-quickstart
    docker-compose down -v
    rm -rf ./quorum-dev-quickstart
    npx quorum-dev-quickstart
    # 重新执行初始化步骤,务必确认选择"启用私有交易"选项
    

3. 修正私有交易脚本的访问列表

修改smart_contracts/privacy/scripts/private_tx.js中的交易参数,确保privateFor字段包含正确的参与节点公钥:

  • 节点公钥可从tessera容器的密钥目录获取,比如quorum-dev-quickstart/configs/tessera-node2/keys/publicKey
  • 示例修正后的交易代码:
    const tx = {
      from: accounts[0],
      to: contractAddress,
      data: contract.methods.set(100).encodeABI(),
      privateFor: ["替换为实际的Tessera节点公钥"]
    };
    

4. 排查WSL2 Docker集成问题

确保Docker Desktop与WSL2的集成已正确开启:

  • 打开Docker Desktop → 设置 → Resources → WSL Integration,勾选你正在使用的Ubuntu发行版
  • 重启Docker Desktop和WSL2终端后,重新执行私有交易脚本

内容的提问来源于stack exchange,提问作者Andres Olivares

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 16:22:16