先快速学习区块链的概念、区块链的本质、区块链的作用,以及区块链常见的问题。这部分区块链的课程都是纯理论的内容,不涉及到编程。学习完区块链相关理论知识,对区块链有了大概了解之后,就逐渐进入跟编程相关的课程,我们将带领大家从代码层面上深入认识比特币。
重点讲解区块链的骨骼——密码学算法,包括比特币地址生成算法、ECDSA交易签名算法。
讲解区块链的灵魂——共识算法,并用代码给大家讲解比特币是如何挖矿的。
讲解区块链的精髓——比特币交易。
学习区块链开发必须从学习比特币开始,本套视频可以带领大家彻底掌握比特币的核心技术,从而为学习以太坊和超级账本打下根基,并为区块链开发奠定基础。
章节介绍:
第1章想真正了解区块链,需要从了解区块链家族开始。本章重点讲解了区块链的起源思想去中心化以及在去中心化思想下发展起来的一些列技术。了解了去中心化及其相关技术,才能对区块链的演变、发展及其特性有更深刻的理解。区块链源自于金融,本章讲解了跟金融相关的知识——借贷、众筹、ICO,这为深入了解比特奠定了基础。
第2章本章给大家讲解了区块链的第一个产品——比特币的发展经历、起源思想。对区块链的本质、核心技术、应用场景、对未来的影响进行了简要的介绍。目的是希望大家能对区块链技术有一个整体上的认识。本章能帮助大家快速了解区块链,起到区块链扫盲的作用。
第3章学习区块链的过程中,阅读区块链相关文章时,常常会看到很多新的概念或者名词。常见的概念或名词,我们都会在后续课程中详细地讲解。但是倘若没有一个整体上的认知,那么学习的过程总是磕磕绊绊,所以本章将区块链,尤其是比特币中常见的问题进行了整理。目的是让大家快速地了解区块链核心的理论,为后续课程抽丝剥茧对这些概念和问题进行详细讲解打下基础。
第4章比特币系统中,中本聪利用已有的密码学算法,设计了一套非常巧妙地密码算法。本章将带领大家初探让人叹为观止的密码学领域,主要讲解了加密中的哈希算法、RSA非对称加密、数字签名及Base64编码及解码。本章案例均采用Java语法来实现。之所以选择Java语法,因为Java程序员受众多,学习本章内容接受程度高。更关键是Java这种派语言,语法严谨,代码书写复杂。若掌握了复杂的写法,那么再看使用Javascript、Python、Go等代码自然就相对容易多了。后续我们会推出Go编程语言教学视频,在其中的《Go安全编程》一章中,我们会讲解Go语言实现哈希算法、数字签名及验证技术。
第5章比特币地址是比特币系统中非常关键的地方,而比特币地址是通过一套复杂的加密算法和流程生成的。本章给大家讲解利用加密算法,实现比特币地址的生成。
第6章为了保证区块链交易数据的安全性,区块链中必须对交易进行完善的加密。比特币系统交易的安全性全靠ECDSA(椭圆曲线数字签名算法)来实现交易签名和交易验证。本章给大家讲解ECDSA如何实现交易签名和验证。
第7章区块链这种基于互联网的去中心化系统,需要解决的首要问题就是如何实现不同节点上数据的一致性和正确性,这就需要借鉴已有的分布式系统中实现状态共识的算法。在80年代出现的分布式系统共识算法是区块链共识算法的基础。而共识算法是区块链的灵魂,本章给大家讲解共识算法。
第8章讲解完共识算法的理论,那么本章就带领大家通过编程来进一步理解PoW共识算法。比特币中使用的PoW共识算法就是俗称的“挖矿”。中本聪发明的挖矿算法是比特币系统中浓墨重彩的一笔,让比特币系统充满神秘气息。本章带领大家学习挖矿的原理、挖矿目标难度值的计算,并通过代码来模拟挖矿过程。
第9章比特币是世界上知名的区块链产品,学习区块链必须从比特币开始。想透彻了解区块链就必须了解比特币系统的架构。本章带领大家先对比特币系统的整体架构进行了梳理,然后再教大家安装和使用BitcoinCore核心客户端和bitcoind命令行客户端。安装比特币客户端后,带领大家申请比特币,然后在比特币测试链上真正体会比特币交易的魅力。通过bitcoin-cli命令行的学习,引领大家进入到比特币系统的核心技术领域。而掌握bitcoin-cli命令行的用法,也为后续基于比特币系统的开发奠定了基石。
第10章交易是比特币系统的核心,比特币交易的原理及交易脚本是区块链的精髓。区块上的数据主要就是区块头和交易信息,交易记录的保存则是区块链真正的价值体现。如何才能看懂看似杂乱的区块原始十六进制文件?关键就是要能做到正确解析区块的数据结构以及交易的数据结构。本章将带领大家深入了解比特币交易,学习交易脚本,而这也正是区块链2.0的智能合约的雏形。然后再带着大家学习各种交易脚本类型下数据结构的解析。这样我们就再也不用看到区块原始数据而一头雾水了。学会正确解析区块数据,也为后续的开发打下坚实的基础。
第11章学习比特币交易,不仅要掌握交易原理、交易脚本,还需要掌握使用RPC接口进行调用。本章我们先讲解如何在regtest环境下搭建比特币私链,然后讲解比特币交易的构造流程以及如何在程序中通过JSONRPC接口调用来实现比特币交易。而RPC接口调用又涉及到node.js安装配置、npm安装bitcoin包以及在程序中调用RPC接口。