Swarm一个以太坊地址部署多个节点
先说结果:目前不能实现
在分析下原因
我们说关键的几个点
- 由于bee每个节点本地累计nonce,多节点并发可能拿到同样的nonce,如果同时操作同样的交易,则导致交易被覆盖
主要体现在兑换获得相同支票,
这个到容易解决bee\pkg\settlement\swap\transaction\transaction.go
- 同样的以太坊地址导致计算的
swarm network address
swarm public key
从而 p2p address 相同
导致kademlia被拒
https://github.com/ethersphere/bee/issues/1789
https://github.com/ethersphere/bee/issues/1789
还想到用swap-factory-address
各个节点配置统一个合约地址,来绕过
// verify that the supplied factory is valid
err = chequebookFactory.VerifyBytecode(ctx)
if err != nil {
return nil, err
}
if err = chequebookFactory.VerifyBytecode(p2pCtx); err != nil {
return nil, fmt.Errorf("factory fail: %w", err)
}
这官方最近也明确多开违规了
https://docs.ethswarm.org/docs/FAQ/#can-i-use-one-ethereum-addresswallet-for-many-nodes
等忙完稍后再继续跟吧