区块链 -- 入门(比特币原理)

区块链前世今生

说区块链之前,我们先来谈谈 密码朋克 这个神秘组织,这个组织是区块链技术诞生的重要铺垫。该组织参与者是一批神秘的“极客天才”,他们一般情况下通过加密邮件列表进行联系。该邮件列表内上千名用户,主要讨论包括数学、加密技术、计算机技术、政治、哲学等方面的内容。其成员有不少IT精英,比如维基解密创始人Julian Assange、BT下载支付Bram Cohen、万维网发明者Tim Berners-Lee、智能合约概念提出者Nick Szabo、Facebook创始人之一Sean Parker、比特币之父中本聪等。
区块链技术铺垫:

  • Adam Back 发明Hashcash,使用了POW(工作量证明)
  • Haber/Stornetta 提出时间戳方法保证数字文件安全的协议
  • 戴伟 发明了B-money,强调点对点交易和不可更改记录
  • 哈尔-芬尼 推出了 “加密现金”
  • 2008年中本聪《比特币:一个点对点的电子现金系统》

随着比特币的发展,人们发现比特币的底层技术如:点对点的网络、时间戳、加密技术、工作量证明等,不仅可以应用到数字货币,也可以应用到其他领域,最终综合提炼出了区块链技术。

区块链应用场景

资产:数字资产发行、支付(跨境支付)、交易、结算
记账:股权交易、供应链金融、商业积分
不可篡改:溯源、众筹、医疗证明、存在性证明
点对点:共享经济、物联网
隐私:匿名交易

比特币原理

账本如何验证

假设:系统中有很多节点,并且每个节点均记录着账本,如果某一个节点被非法修改,如何验证这个非法修改的节点呢?

Hash

哈希函数:Hash(原始信息)= 摘要信息
特点:

  • 同样的原始信息用同一个哈希函数总能得到相同的摘要信息
  • 原始信息任何微小的变化都会哈希出面目全非的摘要信息
  • 从摘要信息无法逆向推算出原始信息

所以说,只需要将账本序号、时间戳、账本信息作为原始信息,通过Hash函数得到Hash值,保存为如下区块结构,每个节点核对数据时,只需要核对区块链中最后一个区块的hash值,已完成高效的账本验证。

账户所有权问题

一个账户包括:地址、私钥、公钥(三者概念请点击参考这里),拥有私钥便拥有这个账号的所有权。如何在不泄露私钥的前提下,证明拥有该账号交易的所有权?这是需要用到非对称加密技术(交易签名),对交易进行Hash得到摘要,用私钥对摘要进行签名,签名过程如下:

当交易签名完成后,付款节点会以广播的形式,告诉其他节点交易的原始信息以及签名信息,其他节点收到信息之后,会验证签名信息是否是付款方用私钥进行签名产生的。验证如下:

实际上,签名与验证是一个逆运算,如下图:

为什么记账?(挖矿)

记账也就是对交易记录、交易时间、序号进行Hash打包过程,需要消耗计算机资源的,节点完成记账会得到比特币奖励。
挖矿规则

  • 一段时间内只有一人可以记账成功
  • 通过解决密码学难题(即工作量证明)竞争获得唯一记账权
  • 其他节点复制记账结果

工作量证明:

如果得到的Hash值符合挖矿规则,则记账成功。这里阐述一下交易记录集

  • 收集广播中还没有被记录账本的交易
  • 交易的有效性验证
  • 添加一笔给自己转账的交易(挖矿奖励)
共识机制

两个节点同时完成工作量证明,使用谁的区块?累计工作量最大的区块链,延长最长链,如图:

如果3458A与3458B同时完成工作量证明,一些节点收到3458A的节点会以3458A为主链,一些收到3458B的节点会以3458B为主链,如果3459B抢先完成工作量证明,则所有节点会以3459B为主链,便解决了分叉。


版权声明:本文为qq_38962739原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。