im2.0 是一种全新的通信协议,它的目的是让不同的区块链和分布式账本之间能够互相通信,从而实现更高效的数据交换。由于im2.0采用了更先进的通信协议,所以比以前的im1.0更稳定、更高效。
在以太坊上运行的智能合约,通常需要通过web3js等客户端库向合约发起调用,在区块链网络上执行该合约,并返回执行结果。而如果想要在不同的以太坊节点之间进行合约调用,则需要通过网络进行通信。当然如果采用普通的http请求传输,这样不仅效率低下,而且非常不安全。因此可以采用im2.0进行远程调用,将合约调用请求直接发送到其他节点上运行。
为了使以太坊节点之间能够使用im2.0进行通信,需要进行如下设置:
config.toml
文件中增加以下配置[network.im2]
network-id="im2"
# Wrap the consensus engine in the im2.0 protocol
engine.im2.enable=true
engine.im2.maddr="/ip4/0.0.0.0/tcp/0"
engine.im2.node="/ip4/{your ip}/tcp/46659/im2"
# Start the im2.0 protocol listeners
swarm.im2.listen-addr="/ip4/{your ip}/tcp/46658/im2"
geth --datadir . --networkid 4569 --rpc --rpcport 8546 --rpccorsdomain "*"
let maddr = "/ip4/{your ip}/tcp/46658/im2";
let node = ipfs({repo: "ipfs"}, callback);
node.swarm.connect(maddr, (err, res) =