比特币区块链

区块链首次出现在中本聪的论文《Bitcoin:A Peer-to-Peer Electronic Cash System》中,是比特币这一去中心化的交易体系的底层技术。所以这一周围绕这篇论文,主要看了架构在区块链上的比特币交易体系的底层数据结构,以及交易的流程,以及相关技术概述。

  这篇报告主要包括electronic coin,transaction,block结构,交易流程,以及区块链相关技术。

1.      Electronic Coin:

论文中将电子货币定义为一个链式结构。链式结构末端记录了拥有者的ID(这里是拥有者的公钥)。如图在第一笔交易中0将属于自己的货币转给1,该交易记录了上一个交易的hash值以及1的公钥,0在这笔交易上用自己的私钥进行签名,表示拥有者0同意这笔交易。该签名可以用0的公钥进行验证。该货币现在归1所有。

  由于电子货币只是文件,不具有实体,因而拥有者可以多次花费这笔钱,因为别人不知道这笔钱是否已经花过。传统的电子交易依赖于第三方(例如支付宝),该第三方拥有所有的交易记录,因而可以查找历史纪录来确保该电子货币没有被花费。比特币由于交易存在于每一个结点中,因而每一次交易可以在不需要权威机构的情况下验证其是否合法。

 

2.      比特币的交易数据结构

Input:可以有一个或多个,是某一个已确认交易中output的值。

Previous tx:是被引用交易的hash值,index是引用该交易中输入的索引(这个应该是为了在检查一个input是否合法时,便于找到这个被引用交易的所在)

Output:可以有一个或多个,在该地址中存在着比特币,也即在需要使用比特币的时候可以引用该output。

Value:从输入地址向输出地址转入的比特币数量。

Scriptsig和scriptPubKey共同使用来验证引用某一个地址比特币的用户确实拥有(过)该比特币。假设A->B转入一笔钱,在交易前B向A发送的是B经过hash并且经过处理后的简化的公钥(也即B的钱包地址)所以在当交易完成,B需要使用该交易得到的比特币的时候需要出示自己的完整的公钥以及利用scriptsig生成签名,前者证实该交易的输出确实属于该公钥,后者证明该用户确实是该公钥的合法持有人。Scriptsig和scriptPubKey还可以经过其他组合来确定更加复杂的规则来验证input引用的合法性(这一点稍后还需细看)

 

3.     Block结构

区块包括版本号,上一个区块头的hash值以及该区块所包含的全部交易所建立的merkle树的根节点的hash值(该树的所有叶子结点是完全对称的,如果交易数量不够,可以用前一个交易来补充,如上图)时间戳(纪录该区块的生成时间,时间戳对于以后区块链的发展作用较大,比如确定某一知识产权的原创性),难度值(当前工作量证明PoW的难度值,难度值取决于区块头hash后前导零的个数),随机数(矿工为了争夺该区块的记账权,寻求一个随机数,使得加上该随机数后区块头的hash值的前导零个数小于系统的要求)。交易数据(是该区块内所有交易数据的完整信息,以Merkle树的形式存储)。

中本聪的论文中提出,为了节省空间,可以将区块中自己不需要的交易或者很久以前的交易信息删除,且不改变根hash的值,如图

 

4.     交易及矿工记账流程

交易流程

假设A转给B一笔账。

1. 首先B通过钱包,生成自己的公钥和私钥,将公钥经过一系列处理生成160位的钱包地址签名后发给用户A。

2. 用户A根据B的地址生成一笔交易。

3. 接着A向邻居节点广播消息,邻居节点验证消息的合法性(即该交易的Input为某个交易的output的引用,且未被引用过,而且input的value总和大于output的value总和)如果合法则记录到自己的区块中并且继续广播,如果不合法则抛弃该消息。

结点记账以一个区块时间为单位。

在一个区块时间内:

1.     结点收集全网的交易记录到一个待确认的区块中。

2.     矿工开始基于自己的区块解PoW问题

3.     当某一个矿工解出了该问题,他广播自己的区块,其他结点验证该矿工的区块中所有交易的合法性及随机数,只有当区块内所有的交易均为合法交易且随机数正确,该结点接受该区块,将其链入自己的区块后作为下一轮竞争时的上一块(previous hash)(且链入并不代表该交易已经确认,需要等到他之后链入五个区块才可以确认该交易不可更改)。

 

5.区块链相关技术

这一周所查阅的网页资料均将区块链技术分为四大部分P2P网络,非对称加密及数字签名,哈希算法以及工作量证明。

1) P2P网络:网络上交易的广播以及矿工发现结点后的广播都依赖于P2P网络。

2) 非对称加密:公钥与私钥一一对应,用公钥加密的文件需要对应的私钥才能解密,通过私钥对文件进行过签名,可以验证该文件确实由该用户发送且未被更改(因为hash的随机性)。每一笔交易前公钥私钥的生成以及每一笔交易的input合法性的确认需要依赖于非对称加密技术。

3) 哈希算法:交易接收方在交易前发送的钱包地址是哈希算法将公钥hash且经过一系列处理的结果。区块链交易的链式由前一个区块的hash值字段连接,区块头中merkle树根结点更是需要hash算法的参与,以及工作量证明中寻找随机数依然依赖于hash算法。

4) 工作量证明:矿工通过解决一个hash难题来证明自己做的工作因而在结点间达成共识,使得各个结点存储相同区块链的拷贝。

 

 

参考文献:

Satoshi Nakamoto,Bitcoin:A Peer-to-Peer Electronic Cash System

沈鑫,裴庆祺,刘雪峰,区块链技术综述

卿苏德,姜莹,王秋野:区块链的技术原理和意义

袁勇,王飞跃:区块链技术发展现状与展望

张偲:区块链技术原理、应用及建议

 

 

你可能感兴趣的:(区块链)