启动本地链并运行ECDSN代码流程及命令

下面是一套从零手动启动本地链并运行本版本代码的最简步骤(按终端/顺序执行)。默认仓库根在 /root/ECDS,运行位置在 testgo 目录。

  一、启动本地以太坊(geth --dev)

  - 终端A(在仓库根):

  cd /root/ECDS

  mkdir -p .devnet/build .devnet/gethdata

  nohup geth --dev --http --http.addr 127.0.0.1 --http.port 8545 --http.api eth,net,web3,txpool --datadir .devnet/gethdata > .devnet/geth.log 2>&1 & echo $! > .devnet/geth_dev.pid

  二、编译并部署合约 MerkleRoots

  - 编译合约(已自带 contracts/MerkleRoots.sol,如已生成可跳过这步):

  solc --overwrite --abi --bin -o .devnet/build contracts/MerkleRoots.sol

  - 部署合约(返回的字符串即合约地址,形如 0x...):

  ADDR=$(geth attach --exec "var abi=$(cat .devnet/build/MerkleRoots.abi); var bin='0x' + '$(tr -d '\n' < .devnet/build/MerkleRoots.bin)'; var C=eth.contract(abi); var i=C.new({from:eth.accounts[0], data:bin, gas:3000000}); var

  tx=i.transactionHash; while (eth.getTransactionReceipt(tx)==null) {}; eth.getTransactionReceipt(tx).contractAddress" http://127.0.0.1:8545); echo "$ADDR"

  三、设置审计进程的上链环境变量

  - 终端B(下文将用于启动审计进程,先导出环境):

  export AC_ETH_RPC=http://127.0.0.1:8545

  export AC_ETH_PRIVKEY=0xb71c71a67e1177ad4e901695e1b4b9ee17ae16c6668d313eac2f96dbcda3f291

  export AC_ETH_CONTRACT=<上一步输出的合约地址或者 $ADDR>

  export AC_ETH_CHAINID=1337

  说明:

  - 以上私钥/地址为 geth --dev 的预置账户(本地开发专用,勿用于生产)。

  四、按三个终端运行审计/存储/客户端

  - 终端B(审计,带 eth 构建标签):

  cd /root/ECDS/testgo

  go run -tags eth ec_auditor_main.go

  - 终端C(存储节点服务):

  cd /root/ECDS/testgo

  go run ec_stornode_main.go

  - 终端D(客户端压测/读写):

  cd /root/ECDS/testgo

  go run ec_client_main.go

  五、查看运行输出

  - 审计输出与上链日志:testgo/ec_auditor_main.out

      - 可见 “auditNo: … sucessfully” 以及 “[EthPublisher] submitted tx=… auditNo=…” 行

  - 存储节点日志:testgo/ec_stornode_main.out

  - 客户端日志:testgo/ec_client_main.out


已添加一键脚本 testgo/run_eth_local.sh,并赋予可执行权限。

  使用方法

  - 在 testgo 目录执行:

      - ./run_eth_local.sh

  - 脚本会自动:

      - 启动 geth --dev(HTTP: 127.0.0.1:8545)并等待就绪

      - 用 solc 编译 contracts/MerkleRoots.sol 到 .devnet/build

      - 使用 geth attach 部署合约,地址写入 .devnet/contract.addr(存在则复用)

      - 若缺少 Go 绑定,调用 abigen 生成 contract/merkle/merkle.go

      - 清理 data/DB/ECDS 下的 LevelDB LOCK 文件(避免 SN 启动失败)

      - 在 testgo 启动三个进程:

          - 审计:go run -tags eth ec_auditor_main.go

      - 设置 AC_ETH_* 环境变量并将 PID 写入 ec_.pid,日志写入 ec_.out

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容