How to choose a distributed system (blockchain) protocol?