联盟链必然要求多个账户系统存在,联盟中的每个节点都必须独立保存自己的私钥,则在当前的 gas 系统限制下,每个账户必须有自己的ether存款。

是不是允许多头出块?如果允许多头出块,则各个账户可以预先prefund或者在网络启动的时候充钱,不必考虑货币流通性问题。但多头出块的缺点是,不可抵挡分叉。而且,实际上极有可能还是存在货币流通性问题。

不允许多头出块,则必须由我们自己的中心账户来出块,我们自己来出块的话,其他账户发起合约请求需要的货币需要定期从我们的中心账户提取出来。

如果可以用强一致性的协议来预先持久化所有的写消息,也许可以靠监控把错误恢复过来,当然这也对业务产生了强依赖,业务的写操作必须是可以通过类似反幂等的方式恢复过来的。这就是把Raft分布式强一致性协议当做一个分布式的WAL来用了。ES 不适合拿来当这个 WAL,因为它不是强实时写的。