调试方法
用 vscode 启动需要调试的 starcoin 进程,假设这个进程为 A,进程链接 dev 网络,启动另一个不需要调试的进程 starcoin B。
假设 A 是有区块的进程,B 需要同步 A 的区块(需要调试 B 则只要 vscode 启动 B 进程即可,也可以用 attach 的方法 同时调试 A 和 B)
vs code 调试设置见:/wiki/spaces/jack/pages/157286401
连接两个 p2p 节点
B 进程需要先和 A 联系上,在 A 节点中使用命令:
node info
此时输出 A 的节点信息,其中 self_address 就是 A 节点的地址,例如:
"self_address": "/ip4/127.0.0.1/tcp/9840/p2p/12D3KooWSkzuSMR5RRXyQVYK1amvXqQPMdZ2wXfKUr8jajgWYrmL"
复制地址 /ip4/127.0.0.1/tcp/9840/p2p/12D3KooWSkzuSMR5RRXyQVYK1amvXqQPMdZ2wXfKUr8jajgWYrmL ,切到 B,执行命令:
node network add_peer /ip4/127.0.0.1/tcp/9840/p2p/12D3KooWSkzuSMR5RRXyQVYK1amvXqQPMdZ2wXfKUr8jajgWYrmL
若成功会返回 OK。
执行:
node network state
也能发现 A 节点在 connectedPeers 这个列表中。
生成区块并同步
我们在 A 中生成一个区块即可触发 B 同步来同步 A 的区块。使用:
dev gen-block
即可,若提示账户不存在或者未解锁则使用 dev get-coin 命令去给 A 节点的账户发 token 或者 account unlock 一下即可。
如果我们事先设置好断点会在 A 的同步代码中暂停,此时就可以一探区块同步究竟了。