首先我们明确下什么是区块链,区块链的本质是分布式的数据库,记录的所有交易可以为所有参与者共享。区块链技术作为一种新型在线交易系统被应用到比特币的交易,不过我们心里要有数,那就是区块链技术是可以应用到其他的电子资产交易中。
为什么说区块链技术是新型的交易系统,那是相对于传统的交易方式来说的。说到传统的在线交易方式,我们首先想到的应该是支付宝,网银等。
总的说来传统在线交易的方式依赖第三方信任机构的支持,而这些第三方机构扮演的角色主要在三个方面,分别是验证交易,保护交易和记录交易。大家可以回忆下马云爸爸是如何在这三个方面参与到你与他人的交易中的,在此就不多啰嗦了。同样区块链技术和比特币系统也要满足这三方面角色的,下面我们来分析下如何实现的。
比特币的交易通过密码验证机制(非对称加密体系)解决了交易双方的信任问题。每笔交易都通过数字签名得到保护。
每笔交易都会被广播到比特币网络中的每个节点,最终被验证确认后记录到“公开账本”上。验证节点在记录任何交易之前需要做两件事。第一件是交易中的比特币属于发起交易人的,第二件是发起交易人有足够的比特币完成这笔交易。前者通过数字签名验证,后者通过发起者的公钥查询发起者在“公开账本”中每笔交易来保证发起者拥有足够的余额。
一切看来都完美进行,照理比特币现在可以大规模推广了。但是由于在点对点的比特币网络中无法保证交易的处理顺序。比特币交易存在着所说的“双重支付”问题。
想象一下Alice有2个比特币,Alice向Blob支付2比特币,同时又向星巴克支付1比特币。两笔交易正常的情况下应该是第一笔交易成功,第二笔交易由于发起者余额不足而失败。但是在比特币的网络中,由于两笔交易可能会在不同的时间被不同的节点所处理,就会出现如下的情况:第一笔交易在北京的某个节点处理,验证通过。第二笔交易在上海的某个节点处理,同样通过。
为了解决这个问题人们提出区块链技术,在比特币系统中订单交易被分组存储在称为区块(block)中,在同一个区块中的交易被认为时间是相同的。区块链用来连接不同的区块,不同的区块按照有序的方式连接,每个区块都存储上一个区块的哈希值(hash value)。
如何保证谁是区块链中下一个区块?有可能多个区块在不同节点同时产生,我们不能依赖区块产生的时间来插入链表。这么办?比特币通过引入解题来解决这个问题,思路就是:一个区块会被区块链接受,除非他为一个非常特殊的数学难题提供一个答案,即比特币所说的“工作证明”。什么是工作证明呢?举个例子,节点产生哈希值必须前40位为零,那么节点在计算哈希值时就会比平时需要更多的计算量。节点产生区块需要证明他付出了足够的艰辛努力才能得到应有的尊重,你可能会觉得设计区块链的人非常无聊,不过你可以去回忆下上海地铁高峰期如何处理涌现出人流量过大的情况,不就是通过设计围栏增加入站时间。同理要求节点解决难题的目的就是让区块不要那么快加入区块链。
继续我们前面的两笔交易,这时两笔交易的区块由于同时加入区块链,他们就存在一次竞争。规则是谁先连接下一个区块则谁先生效,另一个失败。如果这两个区块链又都同时连接到下一个区块,则存在二次竞争,依次三次竞争,四次竞争。。。显然这种策略随着比特币在大规模推广的过程中会限制了比特币的发展,通过“工作证明”的机制会将竞争的概率大幅度降低。那些努力计算的节点被称为“矿工”,当然为了鼓励“矿工”,这些计算节点会有经济报酬,也就产生”挖矿”行业。
网友评论