Mastering Bitcoin: Programming the Open Blockchain - Andreas Antonopoulos