What is blockchain and how to design a blockchain envionment?