聊聊区块链
链客,专为开发者而生,有问必答!
此文章来自 区块链技术社区 ,未经允许拒绝转载。
在聊区块链(Blockchain)之前,我先推荐两本书,《区块链 从数字货币到信用社会》、《区块链 技术驱动金融》。
前一本是属于概念普及型,适合概览的去了解区块链,从区块链的基础到智能合约、以及应用都全面的进行了介绍,通俗易懂。后面一本就稍微深入一些,讲解了基本技术原理、算法、生态,但读起来也没有什么门槛。建议两本结合起来读,会对区块链理解的更为深刻一些。这两本书我都读过,所以这篇文章也算是一个读书心得。
区块链技术的产生和发展是离不开比特币的。因为比特币的诞生,区块链才得以公布于众,而且到目前为止,比特币还是区块链技术最成功的应用。但需要注意的一点是,比特币里的区块链是为比特币体系所定制的,所以比特币的区块链技术并不完全等同于区块链技术。目前基于区块链技术所实现的加密数字货币有上百种,但比特币的市值占所有加密数字货币市值的90%,比特币最为主流。
说到区块链,都是知道区块链的几个特性:去中心化、公开透明、可追溯、匿名性、不可篡改等。那区块链到底是什么呢,用一个专业的术语描述应该为:
区块链是一个去中心化的分布式数据库,该数据库由一串使用密码学方法产生的数据区块有序链接而成,区块中包含有一定时间内产生的无法被篡改的数据记录信息。
区块链有哪些分类呢,可以范围三大类:
公共区块链:所有人都可以访问、发送交易。例如比特币、以太坊等
共同体区块链:又称为联盟链,参与的节点是有约定的、合作关系。例如超级账本、区块链联盟R3CEV
私有区块链:参与的节点只是有限范围、特定用户。例如Eris Industries
区块链的工作流程主要有以下步骤:
发送节点将新的数据记录向全网广播
接收节点对收到的数据记录信息进行检验,比如记录信息是否合法,通过检验后,数据记录将被纳入一个区块中
全网所有的接收节点对区块执行共识算法(有工作量证明法、权益证明法等)
区块通过共识算法过程后被正式纳入区块链中存储,全网节点均表示接受该区块,而表示接受的方法,就是将该区块的随机散列值视为最新的区块散列值,新区块的制造者将以区块链为基础进行延长
如果是没有接触过比特币的同学,对上述流程可能不太容易理解,这里我就以比特币举个例子:
先简单的说说节点,节点分为发送节点和接收节点,发送节点在比特币体系里就是用于提交交易信息的用户,如果有新的交易要提交,那么发送节点就会在比特币网络进行交易信息的广播。接收节点在比特币体系里面就是通常指矿工,矿工是需要一直监听比特币网络里是否有交易广播。
矿工收到广播的交易信息后,需要校验这个信息的签名等内容是否合法。如果校验通过后,就需要将收到的所有交易信息按照一定的规则组装成一个数据块,也就是区块。
刚刚组装的区块还只是在自己这里,还未被纳入比特币网络中正式的区块链中。如何才能被正式纳入呢,这里就涉及到共识算法了。因为每个矿工都可能组装了自己的区块,在每10分钟之内,只可能有一个区块被纳入正式区块链,那么所有的矿工就要根据规则在最短的时间内使自己的区块被其它矿工认可,谁最先做到,那么谁的区块就会被正式纳入。
能纳入区块链的规则就是共识算法,比特币中使用的共识算法是工作量证明法,即让所有的矿工都去寻找一个随机数,这个随机数是通过Hash算法算出来的,并且算出来的随机数需要满足一定的条件才是大家认可的随机数(需要满足该随机数能使整个区块的哈希值小于目标值),谁先计算/猜到这个随机数,它的区块就能被全网接受。
然后这个区块就可以纳入正式区块链,放到链条的最后面,然后各个节点再开始挖下一个区块,就这么一直接龙下去。
能挖到有效区块的节点,是可以获得奖励的,这个奖励主要有2部分组成,一个是比特币体系约定的,目前是每挖到一个奖励25比特币,另一个奖励就是交易手续费了,前面提到了交易信息的提交节点需要付这一笔交易手续费,也是比特币的形式。
通过以上,应该可以对区块链技术流程有一个初步的认识了。
但聊到区块链,就不得不提起一个重要的概念“智能合约”,区块链技术的可支持编程合约、具去中心化、不可篡改、透明可追踪等优点天然适合于智能合约。也可以说,智能合约是区块链技术的特性之一。
智能合约:是一套以数字形式定义的承诺,承诺了数字资产并包含了合约参与者约定的权力和义务,由计算机系统自动执行。
智能合约是区块链中非常重要的一个特性,内容也非常的多,就不在本文中详述了,有兴趣的同学可以找一下相关资料深入研究一下。