It is minimal interface for doing a barrel roll
// path must be valid
#include "blockchain.hpp"
// creates chain of one genesis block that stores a string
rzd::blockchain<std::string> chain{ "genesis" };
// construct a block on the fly
chain.push({ chain.last(), "such transactions" });
// replaces chain if it longer and genesis blocks are the same
chain.replace(another_chain.begin(), another_chain.end());
// iterate over all chain
for (auto& block : chain) {
block.data = "invalid";
}