怎么做区块链链是怎样的一种技术

和数软件是专门研发怎么做区块鏈链技术的在2016年研发出点对点交易系统和超级账本系统,现回答您:ico(是initial

offering缩写)首次币发行,源自股票市场的首次公开发行(ipo)概念是怎么做区块链链项目首次发行代币,募集比特币、以太坊等通用数字货币的行为说白了,ico就是众筹项目

你对这个回答的评价是?

丅载百度知道APP抢鲜体验

使用百度知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的答案。

阿里妹导读:很多童鞋反馈怎麼做区块链链技术有点绕,有点晦涩大都是一知半解,理解不够通彻但在阿里技术专家郑吉看来,怎么做区块链链特别是比特币本身并没有使用高大上复杂的新技术,只是对现有技术的组合其天才的地方体现在系统的架构上,体现在把金融学货币学,博弈学甚臸是哲学思想体现在比特币的系统架构上。如果单纯从系统中的技术点着手学习研究那么往往就会觉得有点绕,有点晦涩这就像我们茬平时工作中了解某个系统,如果首先搞清楚业务本身了解清楚系统架构的设计,再去看具体的实现技术从大局到面到点,那么就有豁然开朗的感觉

今天,郑吉将试着帮助大家转换视角从架构的思维分析去解析比特币,从而对怎么做区块链链技术有一个更深入的理解

怎么做区块链链不是一种技术实现,而是一个系统的架构设计使用一系列的技术组合用于完成去中心化的数据存储。比特币在怎么莋区块链链之上融入了金融学货币学,博弈学甚至一定程度的哲学思想,用于电子货币的发行运行和交易。在学习怎么做区块链链の前有一些基础知识需要提前掌握好后面将不再对具体技术展开描述,而是从这个技术解决了什么问题为什么要用这个技术这个角度詓描述。

如果你是一个架构师做一个系统的架构,你首先要搞清楚这个系统要做什么要解决一个什么问题?带着这个问题进行分析設计系统整体的架构。对于比特币也一样首先搞清楚比特币是要做什么,要解决什么问题然后带着这些问题去解析比特币的技术实现。

如果用一句话来描述比特币要做什么那么可以这样描述:做一个去中心化电子货币发行交易系统。这里有三个关键词:

本章针对上述仳特币的三个关键词去中心化,电子货币发行货币交易,进行分析和设计

当今世界的所有货币交易都是有一个第三方可信任的金融機构提供服务处理,任何人不能访问由这个第三方机构中心化存储的数据理论上来说如果这个金融机构发生了欺诈或倒闭,那么存储在這个机构中的货币以及所做的交易就会存在风险。 当然比特币的去中心化不是因为担心这种风险,而是根本就不需要这个第三方机构叻这也是怎么做区块链链的强大颠覆性之一,凡是需要某个第三方可信任的机构需要安全保存处理的数据都可以去中心化安全存储,所有人都可以访问

从技术角度分析,如何做到去中心化

中心化对应的就是分布式,去中心化就是分布式把原先存储在某个第三方机構,中心化存储的数据进行分布式存储。

分布式存储要解决的3个基本问题

2. 数据不可篡改性3. 最终一致性

去中心化的分布式存储是指整个发荇的电子货币以及货币交易数据由不同机构,不通个人的成千上万的计算机共同存储共同维护了同一份相同的数据,只有共同维护的這份相同的数据才是认为最终正确的数据任何个人篡改自己的数据都没有意义,并且存储的数据所有人都可访问

如果做为架构师,你會选择什么样的网络结构去实现这个分布式存储一种方式是可采用类似Hadoop中HDFS的方式,由某个中心节点NameNode进行协调访问但这种方式就会带来單点风险,破坏了中心节点整个体系都将不可访问。或者采用Cassandra无中心化投票机制维护整个集群状态但是这种方式在全球化开放式部署Φ会导致根本无法收敛。

所以比特币采用了一种更加简单直接的方式利用P2P协议维护整个比特币网络集群,不需要某个中心节点协调节点の间的通信不需要所有机器投票维护集群状态。而是通过P2P协议进行节点之间的数据传输任何节点都可以随时加入或者离开比特币网络集群,而不会对比特币网络集群产生影响也不需要特意去修复这个集群中的故障机器。

利用P2P协议进行节点之间数据传输主要有两个功能點

a. 把需要存储的数据广播到所有节点上进行储存
b. 查询整个网络集群中所有节点的最新数据,如果自己节点的数据与大部分节点的数据鈈一致则更新自身的数据与大部分节点存储的数据一致。

比特币是去中心化存储最大的风险是整个比特币网络集群被破坏,篡改了整個网络存储的数据但是上述第二个功能点能够有效的防止这种风险,由于系统会自动更新为整个集群中大部分节点存储的相同数据所鉯要篡改数据,必须要同时篡改整个网络一半以上的数据这不是说做不到,但是比特币利用怎么做区块链链的方式再加上利益博弈机制当你拥有这种能力的时候,也不需要去做篡改这种投入产出比这么低的事了在数据不可篡改性一节中再详细描述。

通过图示看一下比特币网络结构的运行:

Jack把某一笔交易数据往A服务器上提交A服务器验证数据合法性后存储到自身的数据库中,同时把这笔交易数据点对点嘚传输到比特币网络集群的所有BC,DE节点上。A和所有其它的BC,DE节点保持点对点通信,自动更新为这个集群中大多数节点维护的相同嘚数据如果B,CD三台服务器保存的数据相同,但是与AE不一致,则A和E自动更新为与BC,D相同的数据所以Jack的这笔交易,需要等待这个比特币网络集群中所有节点都接受到并且认为合法存储后,才认为这笔交易成功完成当然在现实情况下,不需要等待所有节点都确认完荿通常只需要少数服务器确认完成后即可认为交易完成,因为每个服务器维护的自身与整个网络集群的数据状态当少量服务器都认为與整个集群一致时,此时从概率上就是一致的在最终一致性一节中将继续对这种网络结构下的数据存储进行描述。

在设计了比特币系统運行的网络结构之后需要考虑数据的不可篡改性,因为这种数据存储是去中心化的任何人都可以访问,那么就容易被篡改上节描述叻在这种网络结构的运行机制下,要篡改数据必须同时更改这个网络集群上一半以上的节点数据,如果每个节点没有一个安全的保护机淛的话那是很容易做到被同时修改网络集群中一半以上节点的数据。

先想想如果你是架构师,你会如何设计这个保护机制确保存储嘚数据无法被篡改?在传统上我们把交易数据一条记录一条记录的保存在数据库表中,数据库放在某个第三方机构的服务器上这个第彡方机构给服务器所处的网络,服务器数据库设置了严格的访问限制用于数据的安全性。但是在一个去中心化没有一个机构或者一个囚可以控制系统的访问权限的情况下,如何去保护数据的安全性

一种方式是每个人把自己的插入的这条数据hash后用自己的密钥进行签名,嘫后附带上自己的公钥系统可以用签名和公钥验证插入的数据是否被修改过。如果把数据库表比喻为一本帐本表中的每一条数据就认為是账本中记录的每一笔交易。这里还有两个问题第一,不能随意插入数据如果你没有比特币,但还是插入一条转帐给某人的数据系统需要发现是不合法的,拒绝此次插入请求第二,除了不能随意插入和修改外也需要防止删除数据,上述把每条记录进行签名并不能阻止被恶意删除带着这些问题,如果你是架构师你会做什么样的架构设计实现这些需求?

这里就开始要引出怎么做区块链链的设计叻上面把数据库表比喻为一本帐本,如果系统中只有一张表也就是一本帐本,那么这本帐本中的数据很容被更改如果让系统每10分钟洎动生成一张表,也就是生成一本新帐本新的交易记录都记录在新帐本中。 并且创建这个新帐本需要一定的条件用当前帐本的顺序号,上一个帐本的所有记录的hash值系统时间戳(10分钟一个维度),再找一个随机值几个数据加在一起Hash后满足一定的条件,比如开始多少位都昰0那么系统就接收这个新帐本。产生的新帐本通过帐本顺序号串在上个帐本之后形成一个帐本的链式结构,新的帐本依赖于上一个帐夲的数据和当前系统时间戳因此一旦新帐本产生后,历史帐本的数据就无法被篡改因为一旦篡改,就与之后的帐本对不上帐本被破壞,按照上节网络结构中描述的自动更新为网络集群中大部分节点维护的相同的帐本

一旦形成了链式帐本后就无法去更改某个历史帐本Φ的数据,更改了某个历史帐本那么在它之后的所有帐本都需要更改,但是每个帐本都是根据当前的系统时间戳验证hash值是否满足条件才能接收所以无法去篡改历史帐本的数据。所能做的只能另外投入非常大的代价再构建一个比特币集群这个集群超过当前的集群,那么數据就自动按照新构建的集群为准这就是多个帐本的相互保护机制比单个帐本更难以被篡改。后续货币的发行和交易中再会描述当你囿能力重新构建一个新的比特币网络集群用于去攻击篡改数据时,你获得的收益将远远低于你投入的成本

为了防止上个帐本的数据被篡妀,产生新的帐本需要依赖于上一个帐本中的所有交易记录的hash值这样一旦上个帐本的数据发生变化就与新帐本对应不上。但是帐本中所囿交易记录计算hash值是一件耗时的计算因此比特币采用了merkle树对某个帐本中的所有交易记录进行hash计算。它主要是解决帐本中交易记录hash计算的效率问题如下图HA,HB...HP是具体的交易记录,每相临的两条交易记录向上形成一个Hash值再与相邻的节点再往上形成hash值,一直到树根形成所有交易記录的唯一hash值

之前描述的网络结构和本节描述的帐本链式结构,本质上都是用于解决去中心化的数据安全存储

是分布式存储就绕不开CAP悝论,比特币也一样比特币采用P2P协议进行节点之间的数据传输,放弃了CAP中的Consistency采用了AP两个维度。如果放弃了Consistency这个属性那么就产生了拜占庭将军问题,这么多节点如何达成数据一致性拜占庭军队都是一个个小分队组成,每个小分队都有一个将军负责将军们通过号令兵傳达一系列行动,但是当中出现一些叛将故意破坏号令怎么办?

分布式存储系统和拜占庭将军问题一样做到一致性是很难的,在比特幣开放式的全球化部署的系统集群更是如此所以比特币放弃了强一致性,并且通过P2P点对点通信没有中心节点,整个集群中的服务器故障离开,加入集群都不会对整个集群产生影响

上节中描述了帐本的产生基本机制,用当前帐本的顺序号上一个帐本的所有记录的hash值,系统时间戳(10分钟一个维度)再找一个随机值,几个数据加在一起Hash后满足一定的条件比如开始多少位都是0,那么系统就接收这个新帐夲这就是这个集群中所有节点的共识,所有节点只接收这样的帐本而寻找这个随机值是需要庞大的计算能力。在比特币中称它为Proof-of-Work(POW)挖矿

当每隔10分钟找到这个值,就是生成了新的帐本但网络集群都是开放的,可能同时找到了两个值在集群中少部分节点中产生了2个帳本,针对这种情况比特币系统设计为:整个网络集群采用少数服从多数原则集群中大部分采用了哪个帐本,少数节点服从多数节点丟弃没被大多数采用的帐本,达到最终一致性

上一章节去中心化中,主要描述了一个去中心化系统如何做到安全的数据存储,不被篡妀它主要采用了P2P网络结构+怎么做区块链链式结构解决了数据的安全存储。但是对于一个货币还需要解决一个货币的发行,如何发行发行给谁?如何让比特币系统能够让所有的人自发的运行下去货币的发行需要公平,公开公正,而且货币不能发行到某个第三方机構中任何人只要符合一定的条件就能获取发行的货币。想一想如果你是架构师,你会如何设计系统去发行货币

本质上讲,比特币系統自身就可以寻找一个随机值产生新的帐本。但是比特币把发行货币和寻找新帐本背后的计算力结合在一起寻找新帐本需要消耗计算仂,谁找到了符合新帐本条件的随机值代表了他消耗了大量的计算力,新帐本一旦被系统接收那么系统自动在该新帐本中记录一条转帳给他一定个数比特币的纪录,就完成了货币的发行

比特币的运行必须依赖于新帐本的产生,而谁找到新帐本谁就能获得系统自动生荿的转帐纪录,也就是获得了一定数量的比特币这就是挖矿。这也就激励了人们不断的投入到挖矿中不断的挖出新帐本,通过激励维歭着比特币系统的运行

这里体现设计天才的地方是,比特币融入了金融学货币学,博弈学通过系统形成了一定的运行机制,激励着囚们让这个系统能够自发的运行下去

上节电子货币发行一节中描述了,谁通过算力找到了新的帐本系统就会自动记一笔账,转一定数量的比特币给谁他也就获得了比特币。那么如何确认记录的这笔交易是属于你的而不被别人拿走呢?做为架构师的你如何解决这个问題

比特币采用了非对称加密技术对用户的帐户操作,公钥就是用户的帐户号码谁找到了新帐本,系统自动往新帐本发现者的公钥帐户记一条特定数量比特币的纪录。当用户要消费比特币时需要用私钥进行签名,系统会用帐户号码也就是公钥验证签名是否正确并且根据用户的帐户号码从历史的交易中计算出当前帐户中的真实金额,确保用户操作的资金在帐户真实金额之内这里的设计有两个要点

  1. 插入的每一条纪录都需要用私钥签名,系统用帐户号码也就是公钥进行验证签名是否正确验证正确则认为合法。

  2. 如果满足第一个条件則验证插入的纪录中转帐金额是否正确,验证的方式是对该公钥以往的所有交易纪录进行计算得出该帐户当前的金额如果不超过该金额徝则为合法。图示如下:

这种机制能够保证只能对自己的帐户进行操作再结合P2P网络结构下的最终一致性原则,以及帐本的链式结构一個攻击者需要建立超过目前比特币网络集群,并且算力超过目前的集群下才能创建另外一个帐本分之而且也只能更改自己的帐户,所以這种攻击投入和产出的收益极低而对于比特币系统来说,你构建了庞大的集群以及强大的算力即使攻击成功了,获得了一部分的收益反过来却让比特币系统更加的稳健了。

比特币系统解决了去中心化的安全存储问题解决了货币的发行问题,解决了货币交易的帐户安铨问题后就构建了一个当前的比特币电子虚拟货币系统了。而比特币使用的怎么做区块链链被认为是一个颠覆性的技术革命性的技术,那他的颠覆性体现在什么地方呢它不是技术上面的颠覆,主要是在思想层面上的商业运作模式层面上的革命性。就比如一个国家从集权式的到民主式的转变对这个国家和社会就是一个革命性的变化。而怎么做区块链链技术带来两个基本功能:


1. 去中心化的数据存储
2. 保證帐户的安全性

理论上让原先需要通过某个第三方机构提供的数据服务都可以革命性更改为去中心化的方式提供服务,比如比特币可以替代各个国家的法币使用怎么做区块链链这种特性也会衍生出各行各业的商业模式颠覆性的变化。


我要回帖

更多关于 怎么做区块链 的文章

 

随机推荐