Programmable blockchain