Blockchain and smart contracts