很多人说中链云区块链挖矿原理效率高,是不是真的

1、IPFS到底是什么

IPFS,其实是一种点對点的分布式文件系统

(1)IPFS是一个运用git分布式、去中心化存储且单一的bittorrent群集。

(2)IPFS是依据内容从而来产生地址它提供了高吞吐量的内嫆寻址存储模型。

(3)IPFS主要是通过默克尔树数据结构来构建版本文件系统

(4)IPFS不存在单独的故障点,节点之间也是不需要相互信任

星際文件系统IPFS(InterPlanetary File System),它其实是一个面向全球、点对点的分布式版本文件系统能将所有具有相同文件系统的计算设备连接在一起,主要目标昰对我们目前统领互联网的超文本传输协议(也就是HTTP)进行补充(更甚者是“取代”)

中链云认为,IPFS的原理就是利用基于内容的地址来替代基于域名的地址简单来说,用户寻找的是存储在某地方的内容而不是某地址,就只需确认验证内容的哈希这样就能过获得速度哽快、安全、健壮、持久的网页。

(1)从成本角度来看HTTP中心化服务器运行,往往维护运行所需的成本较高只要中心化数据库受到DDOS攻击,或者是遭受到不可抗力的损害其所有数据会全部丢失;相较于HTTP而言,IPFS能很大程度上降低服务器存储成本同时服务器的带宽成本也得箌控制。

(2)效率角度来说HTTP是依赖中心化服务网络,服务器比较容易被关闭服务器上文件较易被删掉,而且服务器必须是24小时开机状態才可运行而IPFS是 P2P网络拓扑,整个网域内所有计算机均可作为存储节点就近分布式存储大大提高了网络效率。

(3)安全性:HTTP属于集中化嘚所有流量直接搭载在中心化的服务器上,承载的压力极大容易造成系统崩溃,HTTP还容易遭受DDOS攻击;IPFS的存储方式是去中心化的分片的分咘式存储黑客无法攻击,文件不易丢失安全有保障。

(4)HTTP的客户网络访问很大部分不是本地化存在网络延时;IPFS较大程度使得网络访問速度加快,网络访问本地化体验感会明显提升。

3、IPFS的架构是怎样的

IPFS架构可以分为以下8层:

(1)网络层(Network):用于更好的分散计算。

(2)身份层(Identity):管理节点身份生成和验证

(3)交换层 (Exchange) :一种支持有效块分配的新型块交换协议(BitSwap),模拟可信市场弱化数据复制,防作弊

(4)路由层(Routing):维护信息以定位特定的对等体和对象,响应本地和远程查询默认为DHT,但可更换

(5)文件层(File):由Git启发的蝂本化文件系统层次结构。

(6)命名层(Naming):自我认证的可变名称系统

(7)应用层(Application):IPFS上运行的应用程序。

(8)对象层(Objects):具有链接的内容寻址不可更改对象的Merkle DAG用于表示任意数据结构,例如文件层次和通信系统

以上各协议栈均各司其职,相互搭配协作

4、IPFS生态系統是如何分布的?

A、IPFS-是数据的应用;

5、IPFS有哪些使用场景

A、作为一个挂载的个人同步文件夹,自动进行版本管理&发布并且能备份任何的寫入。

B、一个加密的文件或者共享数据的系统

C、所有软件的版本包管理处。

D、一个数据库:应用能直接将数据写入Merkle DAG的数据模型中获取所有的版本,缓冲以及IPFS提供的分配。

F、一个web CDN(在网页上)

G、一个links永久存在新的永恒的Web。

H、一个加密的CDN

I、虚拟机器的根文件系统。

J、茬不使用SSL的情况下作为一个为大文件的完整性检查CDN。

K、在管理程序下作为VM的启动文件系统。

L、挂载在/ipfs和/ipns下的一个全局文件系统

6、IPFS实現的终极目标

A、运用fuse/内核的模型挂载文件系统

B、一个IPFS库能够导出至个人应用中进行使用

C、命令行工具能直接操作于对象

7、IPFS有何未来展望?

IPFS產生于分布式系统的探索和开源它继承诸多截至目前很有成效的系统中的优质思想。除去BitSwap新协议不谈系统的耦合以及设计的综合性是IPFS嘚一大亮点。

它是去中心化网络基础设施不同类型的应用都可以建立在IPFS上。

IPFS使得Web层次升级发布信息的时候,所有人可以进行发布并苴不会强制必须只允许发布机构进行发布,用户可以信任信息的内容信息的信任与否对于发送者而言,是无关紧要的另一特点就是不會丢失一些具有较长时间的重要文件。最低限度它作为一个全局的,挂载性版本控制文件系统和命名空间,或是成为下代文件共享系統

IPFS,让我们跨进一个永恒Web的世界

Openbazaar:它是一个去中心化的全球性自由买卖市场。Openbazaar是加密学做仲裁担保信任来自于数学,而不非人类現如今,上面已经有人进行匿名交易主要是依靠分布式节点自动进行维护,不存在中心服务器主要是通过Bitcoin进行交易。无域名完全匿洺(包括交易双方)。

Filecoin是一个去中心化存储网络是一个采用了区块链通证体系的IPFS激励层。Filecoin的很多设计都是为IPFS生态服务的。Filecoin是基于IPFS构建嘚一个去中心化存储交易市场因此,它也是IPFS上的一个重要应用

IPFS和Filecoin都是由协议实验室打造的明星项目。IPFS作为一个倡导资源共享的网络唍全依赖参与者的无偿捐献很难保证网站的稳定性,也很难快速推广使用Juan Benet引领的协议实验室项目团队在很早之前就考虑到了这个问题,2015姩5月发布IPFS后同年7月他们就发布Filecoin的首版白皮书,Filecoin就是为成就IPFS而生的

IPFS是一种点对点(P2P)的分布式文件系统,同时也是一种存储技术更确切的来说它是一种传输协议。Filecoin是一个基于IPFS的去中心化存储项目他们的关系有点类似于区块链与比特币之间的关系。Filecoin的诞生是为了支持IPFS的發展IPFS也需要Filecoin为其丰富生态。IPFS使用的越多Filecoin的需求更大;Filecoin的矿工越多,对IPFS的支持越大

中链云算力是硬件基础矿机的超捷径区块链挖矿原悝方式,门槛低、容易入手、无需管理、省心无忧、性价比高、以小博大、神算矿池、超高效率、免管理代运营以及一键部署、便捷区块鏈挖矿原理等无形优势适合大规模部署,也利于获得更高的单位区块链挖矿原理收益

}

可以读下这篇《比特币与区块链:从原理到应用》

货币的演变——从贝壳到比特币

当社会分工产生之后人类就产生了商品交换的需求。在货币被发明之前人类是以以粅换物的方式进行的。但显然以物换物存在着商品价值无法精确衡量效率低下的问题。试想一下老王扛着一只羊走了一公里山路到老張家里想换几只鸡好过年,但是换 6 只鸡老王觉得亏换 7 只老张又不干。于是人类发明了货币作为一般等价物,货币可以对商品价值进行精确度量利于提高商品交换的效率,老王也再也不用扛着羊走山路了拿着货币去买就好。但是最早的货币是实物货币也就是贝壳、金、银、铜这些东西。能充当实物货币的东西都具有一定的稀缺性即一般人不是那么容易就能搜寻或挖掘到很多的,存量有限后来随著社会经济的发展,交易越来越频繁人们发现实物货币也存在着很多的弊端。比如易损耗保存、携带都很不方便、不安全。于是纸币僦被发明出来了纸币最早在我国北宋年间就出现了,被称为「交子」由官方发行。相较于实物货币本身具有收藏价值纸质货币本身呮是一张纸,并没有什么价值它的价值完全依赖于发行该纸币的政府的信用。因为人们预期拿着这张纸是可以从政府那里换到金子银子嘚看上去这并没有什么问题,但是一旦政府失信纸币也就形同废纸。政府失信的事在历史不是没有发生过比如清朝国库存银紧张时,民众手里的银票就只能打折换银子再比如民国后期,政府疯狂印刷金圆券物价飞涨,民众手里的纸币飞速贬值政府在法定货币上嘚失信相当于掠夺了民众手里的财富。

现代社会是不是所有的财富都需要印刷成纸币在社会上流通呢?也不是纸币所代表的财富只占社会总财富很小的一部分,国家发行纸币的总量只要满足市场交易的需要即可大部分财富是以数字货币的形式存在,每个人的财富只是┅串数字这些数字统统记录在银行的账本上,当然银行的账本现在表现就是计算机里的数据库在这种情况下,假设小李从苏宁买了台價值 3000 元的空调收银的时候只要将小李的银行账户余额 C(小李)-3000,再将苏宁的银行账户余额 C(苏宁)+3000 就可以了当然现在也可能需要支付宝或者银聯等第三方支付提供商做中介完成这笔交易。银行在修改余额即账本数据的时候需要做一些检查,首先需要小李提供账户密码用以证奣小李对账户余额具有使用权,接着银行还要检查小李的账户余额是否大于等于 3000如果余额不足返回交易失败提示。整个交易过程中银荇作为第三方机构,独立完成了这次交易支付由于我们国家的国有银行有政府做信用背书,所以小李和苏宁都选择相信银行不会有欺诈荇为但是不是就完全没有风险了呢?并不是即使银行不会主观上产生欺诈的想法,但同样存在记账错误或是外来恶意攻击的风险。┅旦银行的账本数据发生错误或被恶意篡改小李和苏宁将没有办法证明自己所拥有的准确的财富。

年中本聪在网上发表了比特币白皮書《比特币:?个点对点的电子现金系统》,宣告了比特币的诞生由于刻意隐藏,至今没有人知道中本聪的真实身份但是比特币确是┅个天才式的创造。比特币参考了在它之前被发明的数十种加密数字货币所取得的成果这些货币由于各种原因都失败了,一个主要的原洇是无法解决「双重支付」问题所谓「双重支付」是指同一笔货币被重复支付给不同的账户。中本聪认为之前的加密数字货币之所以失敗主要是因为它们都不同程度上存在一个中心机构,一旦这个中心机构失效整个加密货币系统就崩溃了。所以比特币被设计成一个去Φ心化的系统它运用分布式账本和特有的共识机制解决了「双重支付」问题。

2 比特币与区块链的基本原理

之前已经介绍过数字货币的夲质就是一个账本。当有交易发生资金所有权发生转移(或称价值转移),就通过在这个账本上记账来体现传统货币金融系统,央行承担货币发行的职责商业银行承担放贷和吸储的职责,每笔交易记录、每个账户余额都存在银行的账本上银行此时是作为一个中心机構。比特币系统完全运行在互联网上并没有一个中心机构替用户保存账本。相反每一个持有比特币、运用比特币完成交易的节点(完铨节点)都会在本地保存一份账本,并从网络上接收新的交易数据对自己的账本进行更新所以说,不同于传统货币交易账本由银行私密保存比特币的账本是公开的,分布式存储在每一个参与交易的节点上

比特币系统是一种 P2P 网络系统,网络中并不存在任何中心节点所囿 P2P 网络中的节点地位都是相等的,每个节点从网络接收资源和服务的同时也向网络中的其它节点提供资源和服务想加入比特币网络也很簡单,从比特币官方网站下载比特币客户端并安装到自己的计算机保证本地存储系统有足够的空间来存储公共账本数据,运行比特币客戶端并联入互联网客户端端口会自动连接到若干现有节点,此时这台计算机就可以作为比特币网络中的一个节点存在了初始加入的比特币节点可以从其它节点接收账本数据并保存下来。比特币网络中的节点时时刻刻都是在动态变化的一个节点可以随时选择退出,重新加入时只需要连接其它节点并接收它离开期间新增的交易数据就可以

虽然每个节点都保存有比特币交易账本,但为了保持所有账本副本嘚一致性每笔交易只能安排一个节点记账,其它节点同步新增的交易数据那到底哪个节点拥有记账的资格呢?比特币系统采用了竞争記账的机制所有节点共同参与一个解方程大赛,由于这个方程解空间巨大且无任何求解的规律可言每个参与竞赛的节点只能采用随机嘗试的办法搜索方程的解。这样一来解方程大赛就变成了对各节点计算机运算能力的一场考验,拥有最强大运算能力的节点显然可能更赽找到解一旦某个节点率先找到一个满足要求的解,它就抢到了本次竞赛的记账权这样的解方程竞赛大约每 10 分钟在全网举行一次,抢箌记账权的节点迅速将过去 10 分钟全网发生的交易数据记录到一个新的区块(区块链的基本单位可以看成是一个具有特定数据结构的文件),并将这个区块马上向全网分发网上的其它节点接收到这个区块时,它就意识到本次解方程大赛已经结束了进而马上停止本轮的解方程竞赛,同时开始下一轮解方程大赛

比特币交易的过程完全是匿名的。比特币客户端有钱包的功能比特币钱包并不存储货币,存储嘚是地址和私钥根据非对称加密的原理,一对非对称密钥分为公钥和私钥私钥私密保存,公钥可以公开出来其它节点想给当前节点加密发送消息时,可以用公钥对消息进行加密只有拥有私钥的节点才能对消息解密,这样就保证了信息传输不会被泄漏在比特币网络,每个节点的私钥由钱包加密存储用户也可以备份成其他形式存储。公钥经双 运算得到的字符串被称为地址,其实就是另一种形式的公钥一个比特币地址和它对应的私钥就可以看成一个账户,地址可以看做用户名私钥看做账户密码。拥有私钥的人就拥有这个地址上嘚所有资金比特币的账本数据中并不存在账户余额的概念。事实上账本数据中如果用余额字段来表示每个节点拥有的资产那么余额字段的数据是很容易被恶意篡改的。既然没有余额数据那么交易时就没有办法通过对相关节点余额字段的修改实现。事实上比特币交易Φ「花费」的是在交易中生成的「未使用的交易输出(UTXO)」。每一笔交易转账相当于将一笔钱注册到新的地址上比特币地址并没有余额,有的是遍布在账本里所有注册在这个地址上的 UTXO相当于这个地址所拥有的资金分布在一笔笔交易记录中。比特币客户端显示的账户余额其实是对账本数据中隶属于当前节点的 UTXO 逐一统计得到的结果

比特币将货币、交易、账本全都变成了一种数据结构,所以看一下一笔交易嘚数据结构你会更理解
如表 2-1 所示,一笔交易可以包含多个输入并形成多个输出尚未被「花费」的交易输出即 UTXO (unspent transaction output),所谓「花费」指将這笔钱注册到其它地址(资金所有权转移)时间戳标记这笔交易发生的时间。再来看一下交易输出(表 2-2)和输入(表 2-3)的数据结构
交噫输出的数据结构很简单,主要就是资金总量和锁定脚本资金总量表明了转账了多少钱。锁定脚本其实表明了这笔钱的所有权锁定脚夲里包含的最重要的内容是转账的目标地址,之前我们也介绍过比特币地址其实就是公钥转换得到的。交易输出里包含了目标地址相当於用公钥给这笔钱(交易输出)上了一把锁只有唯一那个有对应钥匙(私钥)的用户才可以使用它。

交易输入的数据结构如表 2-3主要包括指向 UTXO 的指针和解锁脚本。注意到比特币账本里只有交易输出才记录了资金,交易输入只是使用资金时用的那把钥匙其中指向 UTXO 的指针芓段表明要「花费」哪个 UTXO。解锁脚本包含了用户的私钥正确的私钥可以解密 UTXO 锁定脚本中的公钥加密。解锁脚本和锁定脚本一起运行就可鉯正确使用 UTXO 完成交易了
现在小李从苏宁购买了一台空调,需要支付 0.15 比特币小李的比特币客户端里的钱包模块会从所有注册在小李地址仩的 UTXO 中选出一个数额最合适的,假设最合适的 UTXO 的面值是 0.2 比特币现在,小李的钱包就会创建一笔新的交易输入就是面值 0.2 比特币的 UTXO,生成┅笔 0.15 比特币的输出(一个 UTXO)输出锁定脚本包含苏宁的地址。与此同时生成一笔地址为自己的输出 0.04 比特币(另一个 UTXO)也就是找零。但是這里 0.2-0.15-0.04=0.01剩余的 0.01 比特币作为交易费用,用来奖励承担记账工作的节点赢得记账权的节点会自动收集的。

一笔比特币交易的生命周期从它被創建的那一刻开始节点会将这笔交易在比特币网络上广播,收到这笔交易数据的节点会对交易有效性进行独立检验检验内容包括语法囷数据格式是否有误、交易输入和输出是否为空等等。通过独立验证的交易会被放入节点自己的交易池同时继续向其它节点广播,没有通过检验的交易直接被拒绝并不再广播等到这笔交易被网络上的大部分节点验证,可能耗时不到一秒钟交易会最终被一个区块链挖矿原理节点验证并记录到区块链上一个还记录有很多其他交易的区块上(区块链挖矿原理节点:参与解方程大赛并取得当次记账权的节点)。此时这笔交易的交易输出(UTXO)还不能被使用等到区块链中在这个区块之上又生成足够多的区块,交易才成为区块链总账簿的一部分這时交易输出 UTXO 就可以被新的资金拥有者在下一笔交易中使用了,这样就进入下一个交易周期了

2.3 比特币网络与节点

比特币运行在互联网上並采用 P2P 协议,P2P 网络又称对等网络网络中每个节点的地位都是相等的。比特币设计的核心原则是去中心化采用 P2P 网络很好的体现了这个核惢原则。虽然比特币网络中每个节点的地位相等但不同节点的功能还是不一样的。但是任何节点都包含四个基本功能中的一个或者多個:钱包、矿工、完整区块链、网络路由节点。

所有节点都是网络路由节点可以对新创建的交易和区块进行验证,对通过验证的交易和區块进行转发

一个具备全部四个功能的节点被称为全节点。全节点在本地存储完整的区块链数据(账本)可以独立的对交易和区块数據进行验证而不需要依赖于其他节点。
全节点同时具备区块链挖矿原理功能即参加算力竞赛(解方程大赛)来赢得记账权的能力。之所鉯称竞争记账权的行为为「区块链挖矿原理」这是为了类比于传统实物货币(金、银)的挖掘开采行为。每个在算力竞赛中获胜的节点能够获得一定数量的比特币做奖励目前是 12.5 个比特币,奖励的数量大约每 4 年会减少一半除全节点之外,也有单独的区块链挖矿原理节点

全节点同时具备钱包功能。钱包是用来生成并保存地址和私钥同时创建交易的模块。

相比于全节点有些节点只存储了部分区块链数據,它通过「简易支付验证(SPV)」的方式来完成交易验证称为 SPV 节点或轻量级节点。SPV 节点一般具备网络路由节点和钱包功能为了让智能掱机这种资源有限的终端具备比特币交易的能力,SPV 节点现在越来越普遍

区块链的英文名字 Block Chain 更容易理解。Block 其实是一个常用的数据量大小的喥量单位比如在 Linux/Unix 系统里有一个数据块(Data Block)的概念,数据块是文件系统读写的最小单元在 Linux/Unix 系统中是 512 个字节,一个文件所占大小就是数据塊的整数倍又比如在 Google 分布式文件系统 HDFS 中,也有一个块(Block)的概念也是数据存储的一个基本单元,不同之处在于 HDFS 为了提高大数据的效率囷集群的吞吐量将一个块的大小设置成 64MB。所以区块链里的“区块”也是指一个数据单元而「链」其实就是将很多数据单元(区块)一個个串联起来,就像一个链表但是链表是通过指针将数据串联起来的,而区块链是通过在每个区块中存储前一个区块的唯一标识符来链接的具体可以看区块和区块头的数据结构。
一个区块主要分为两部分:区块头和交易数据区块头里记录的是这个区块的元数据,具体見区块头数据结构表 2-5交易数据部分记录了从上一个区块被挖出到当前区块被挖出的约 10 分钟时间内,全网发生的所有比特币交易比特币系统中一个区块大小并没有严格限制,区块头的大小固定是 80 个字节平均每个交易至少是 250 个字节,而平均每个区块至少包含超过 500 个交易茭易的数据结构之前已经介绍过,下面来看一下区块头的数据结构
「父区块哈希值」字段存储了前一个区块数据的 Hash 值,严格来说并不昰整个区块数据的 Hash 值,而是区块头数据的 Hash 值其实是运用 SHA256 算法对区块头数据做两次 Hash 运算得出的。由于每个区块头数据具有唯一性它的 Hash 值基本可以作为区块的主标识符。所以将前一个区块(父区块)的标识符存在当前区块的区块头里也就相当于将这两个区块连接了起来。

Merkle 根」字段相当于是区块内所有交易数据的一个数字指纹要得到 Merkle 根先要创建一棵 Merkle 树。假设现在有 AB,CD 四笔交易,创建的 Merkle 树图 2-2
Merkle 树是自底姠上创建的,是一种 Hash 二叉树首先将交易数据输入 SHA256 算法得到每笔交易的 Hash 值 Ha、Hb、Hc、Hd,这四个 Hash 值作为叶子节点将叶子节点 Hash 值两两连接起来继續输入 SHA256 算法可以得到上一层节点的 Hash 值,计算示例如下如果叶子节点个数为奇数,将最后一个节点复制一份
如此循环进行,直到只剩一個节点也就是 Merkle 树根。考虑到 SHA256 算法的特性Merkle 根可以看成是所有交易数据的一个归纳,也可以看成是所有交易数据的数字指纹因为即使任意交易数据被微小篡改,它生成的 Hash 值也会有很大变化而叶子节点 Hash 值的变化,又会影响从该叶子节点连接到 Merkle 根的路径上所有节点 Hash 值的变化最终使 Merkle 根产生很大的变化。因此 Merkle 根可以唯一标识一批交易数据也可以验证一批交易数据是否被篡改过。由于 SHA256 算法输出固定是 32 个字节所以 Merkle 树中所有节点包括 Merkle 树根的值都固定是 32 个字节。Merkle 树在比特币系统中的一个主要用处是可以高效的验证一笔交易是否存在于区块中假设某区块记录了 N 笔交易,利用 Merkle 树可以最多计算 2*log2(N) 次就可以判断一笔交易是否存在于这个区块中

区块头数据结构中的「难度目标」字段是用来動态调节区块链挖矿原理难度的,约两周时间会调整一次为了保证能够在大概在 10 分钟左右的时间挖出一个区块(解出方程)。Nonce 字段也是茬区块链挖矿原理(解方程大赛)时用到的Nonce 字段的值作为方程未知变量的一部分,不断修改 Nonce 字段值以获得满足难度目标的解

区块链就昰就是将包含交易信息的区块从后往前依次连接起来的数据结构。它可以存储在文件系统也可以存储在一个简单数据库。区块链可以被視为一个垂直的栈第一个区块(创世区块)作为栈的底部,后续创建的区块依次向上叠加这样就可以用一些术语,「高度」来表示当湔区块离第一个区块之间的距离用「顶部」表示最新生成的区块,用「深度」表示当前区块距离顶部区块的距离

每个区块的区块头数據经 SHA256 算法得到区块 Hash 值,每个区块的区块 Hash 值并不存在于自身数据当中而是在创建它的子区块(栈内上一层区块)时临时计算得出并存储在孓区块「父区块哈希值」字段中。由于区块 Hash 值可以在区块链中唯一识别出一个区块因此通过「父区块哈希值」就可以引用前一个区块。這样就通过「父区块哈希值」字段将每个区块依次链接起来形成了一条一直可以追溯到首区块(创世区块)的链条见图 2-3。每个区块都只囿一个父区块但可能存在多个子区块,这被称为「区块链分叉」这种情况只在两个矿工几乎同时挖掘出新区块时才可能出现,但也只昰暂时存在很快区块链系统就会选出工作量最大的链条作为主链。
![]() 图 2-3 区块通过引??区块的区块头哈希值的?式以链条的形式进?相連
区块哈希值虽然只是区块头数据的 Hash 值,但是区块头中包含的 Merkle 根字段是对所有交易数据的一个概括上面介绍过,任何对交易数据的微篡妀都会导致 Merkle 根发生很大变化进而导致区块哈希值也发生变化。由于子区块会存储父区块的区块哈希值所以如果父区块任意数据有变动,就会导致子区块数据产生变动而子区块数据变动又会导致孙区块值发生变动,等等以此类推很明显,对区块链中任意区块数据的篡妀都会导致它后续所有区块的数据发生变动除非将后续所有区块都重新生成,否则无法修改区块链中的数据而重新生成区块面临着巨夶的工作量(解出每个区块中的方程),当区块的「深度」到达 6 时由于巨大的工作量导致实际上想篡改这个区块的数据已经变得不可能。这种区块链历史数据不可更改的特性是区块链可信的一个关键原因同时,这也是比特币安全性的一个关键原因

将比特币网络中节点の间竞争记账权的行为称为「区块链挖矿原理」。「区块链挖矿原理」是比特币系统中一个非常聪明的设计它同时实现了三个目标:

(1)一种激励机制,使得比特币节点有动力去记录交易数据

(3)通过工作量证明算法(解方程大赛)使得区块链历史数据实际上不可更改。

之前说节点之间竞争记账权其实是在参加每 10 分钟一场在全网举行的解方程大赛每场竞赛的获胜者将获得本轮记账权,有权创建一个新區块并将前 10 分钟全网发生的比特币交易记录到新区块解方程大赛的规则被一个称为「工作量证明(Proof of Work)」的算法所定义。工作量证明算法萣义每轮竞赛中所有区块链挖矿原理节点独立求解一道包含 Hash 函数的方程谁先求出满足难度目标的解,谁就获胜

什么方程?Hash (区块头数據)= 满足难度目标的哈希值

其实就是通过不断修改区块头中的 Nonce 字段值(通常是递增 1),使得区块头哈希值满足难度目标难度目标就是區块头「难度目标」字段值。这个难度目标字段值通常类似于:哈希函数的输出值十六进制表示以 0 开头从概率角度看,平均随机尝试 16 次鈳以得到一个满足难度目标的解(十六进制数字取值 0 到 F)从数字角度看,要找一个输出小于 0x......0 的输入显然,这个字段的值可以看成一个難度阈值如果将难度阈值继续降低,要找到一个满足要求的解会变得越来越困难2014 年的时候,一个矿工平均要尝试 10^15 次才能找到一个合适嘚 Nonce 使得区块头信息哈希值足够小这几年随着计算机运算能力的快速进步,区块链挖矿原理设备越来越专业难度阈值也设置的越来越小,才能保证全网 10 分钟左右挖出一个新区块难度目标的调整是依据最新的 2016 个区块(约两周时间)与 20160 分钟的比较得出的。

区块链挖矿原理过程中每次尝试虽然是 Nonce 值递增,但其实是在随机尝试这是由哈希函数的三个性质决定的:

(1)不可逆。不可能根据哈希函数的输出值反嶊出输入值

(2)抗碰撞。两个不同的输入值得到相同哈希输出的可能性极低

(3)高灵敏。当输入有微小变化时哈希值输出都会产生巨夶的变化

以上三个性质保证在搜索解时,没有办法用前面的前一步经验来指导后续的搜索只能一直处于随机搜索的状态。这保证了想參与区块链挖矿原理或者说在工作量证明中获胜的节点唯一的选择就是不断提高自己的算力而没有任何其它的「捷径」,而这点正是区塊链安全性的基石

区块链挖矿原理是比特币系统运行的核心环节,但是参与区块链挖矿原理的节点需要投入大量的资源包括区块链挖礦原理设备和电力消耗。显然如果没有激励机制节点是没有动力去区块链挖矿原理的。比特币的设计是节点挖出一个新区块以后,它記录的第一笔交易并不是从全网接收到的交易而是自己创建的一笔特殊交易——创币交易或者称 coinbase 交易。假设 A 节点挖出了一个新区块它創建的创币交易内容类似于「向 A 节点的地址支付 12.5 个比特币」。这 12.5 个全新的比特币是之前不存在于区块链账本中的增量也是作为对区块链挖矿原理节点的奖励。创币交易的特殊在于不消耗 UTXO即没有交易输入只有交易输出。所以给挖出新区块的节点的奖励包括两部分:新币奖勵和交易费用目前矿工获得的主要收益还是新币奖励为主,交易费用占比还比较小

可以看出,区块链挖矿原理设计的高明之处在于它鈈仅是一种激励记账的机制同时解决了加密数字货币新币发行的难题。从 2009 年 1 月每个区块奖励 50 个比特币开始每四年奖励的比特币数量减尐一半(准确地说是 210,000 个区块),直到 2100 万比特币全部发行完毕(大约 2140 年)目前每个新区块奖励 12.5 个比特币。可以看出比特币是一种总量有限的紧缩货币。

2.6 去中心化共识机制

一种货币体系很重要的组成部分就是要有一份所有参与者一致信任的账本这在传统货币体系中很容易實现,银行作为货币体系的中心结构保存这样一份账本并在新交易发生时维持对账本的更新。但比特币网络是由分布在互联网上的数以萬计的节点组成并没有中心机构来保存账本,那么那么多节点之间如何形成一份一致认可的账本中本聪的一个主要创新就在于设计了┅种去中心化共识机制,解决了古老的「拜占庭将军难题」即如何在不可信的环境中在异步节点之间达成共识。共识是网络中数以万计嘚独立节点遵守了简单的规则独立异步地交互形成的产物,主要包括以下四个方面:

(1)每个节点对接收到的交易的有效性进行独立检驗

(2)每个节点通过工作量证明算法竞争记账权并对近期的交易独立打包记录到新区块

(3)每个节点对接收到的新区块进行独立检验并组裝到区块链

(4)每个节点独立地选择区块链在工作量证明机制下选择累计工作量最大的区块链

节点对交易数据的独立检验所遵循的规则嘟是统一规定好的,可能的诈骗、错误等无效交易无法在网络中继续传播

工作量证明算法一方面实现了比特币账本不会被中心节点所控淛,另一方面实现区块链历史数据实际不可更改这两点之前已经介绍过。

每个完全节点独立保存并更新区块链所以当节点从网络接收箌一个新区块时,它要检验并决定是否组装到本地的区块链上检验的内容包括:

(1)区块的数据结构语法上有效

(2)区块头的哈希值小於目标难度(确认包含足够的工作量证明)

(3)第?个交易(有且只有第?个)是创币交易

(4)使用检查清单验证区块内的交易并确保它們的有效性。

每个节点对每个新区块的独立检验确保了矿工无法欺诈假设一个欺诈矿工创建一笔交易向自己支付一大笔比特币。接收到這个区块的节点基于相同的检验规则将很快能发现从而选择拒绝这个新区块,这样这个欺诈矿工不仅不会得到额外的钱反而会浪费区塊链挖矿原理耗费的大量投入。

去中心化共识会遇到的一个情况就是区块链「分叉」当两个节点几乎同时挖出新区块时。由于互相都没囿收到对方的新区块所以它们会将自己挖出的新区块广播出去。网络上的其它节点就可能在几乎同时接收到两个新区块而且都可以有效的组装到现有区块链上。这个时候节点会把两个区块都保存下来形成区块链的两条分叉。「分叉」只是暂时现象解决办法就是看这兩条分叉谁的工作量累计的更快,节点独立地选择累计工作量最大的链作为主链当所有节点都独立选择最长的链作为区块链主链时,很赽全网节点就会重新达成共识

去中心化共识唯一的隐患是可能遭受「共识攻击」,典型的是「51% 攻击」之前介绍过,工作量证明算法使嘚区块链历史数据实际上不可更改因为区块的生成需要巨大的工作量,背后需要巨大的算力支撑但是一旦网络中有超过一半的算力被攻击者掌控,它就可能篡改交易数据针对记录目标交易的区块,攻击者重新构造一个新区块并故意与之形成分叉,在新区块中攻击鍺可以重新生成一笔与目标交易数额相等但支付地址不同的交易,如果支付地址改为自己掌握的节点地址就可以把这笔钱转给自己在后續的累计工作量竞赛中,攻击者利用自己掌握的超过一半算力获胜进而使得故意分叉的链条成为全网的主链,最终实现交易欺诈所以為了保证大额交易安全,建议在大宗商品交易用比特币支付时接收方要等到记录此交易的区块深度超过 6 时,再进行商品交付

3 区块链的應用与发展

区块链是比特币的底层技术之一,比特币是区块链的一个应用也是目前为止区块链最成功的应用。在比特币里区块链被看荿是一个分布式的公开账本。区块链可以存储账本当然也可以存储其它数据,比如合约、证书、法律文件等等所以本质上区块链是一個分布式数据库,可以应用在很多领域但是并不是说区块链只是一个数据库,相反区块链数据存储成 flat file 和 Google 的 LevelDB 数据库都不是区块链的创新點。区块链的核心创新点是去中心化共识机制区块链为了实现去中心化共识机制用到了很多的技术,包括 P2P 协议、非对称加密技术、哈希加密技术、时间戳、Merkle 树、UTXO、工作量证明算法(PoW)等所以,可以将区块链技术看成是一个技术集合

区块链脱胎于比特币,早期大家的关紸点主要是以比特币为代表的加密数字货币这两年大家越来越关注区块链技术在各个领域的应用。很多人认为区块链的现状就像早期嘚互联网,区块链技术给人类社会带来的影响将不亚于互联网所以我们讲区块链不仅仅是指比特币里的区块链技术,还包括很多在它之仩的创新和发展

比特币的区块链技术在应用时存在的四个主要问题是:

(1)脚本语言太复杂,开发难度大

(2)生态系统基础比较差。既没有完善的开发工具也没有文档和教程。

(3)脚本语言并非图灵完备图灵完备指一切可计算的问题都可以用该语言描述并计算。由於没有图灵完备限制了比特币脚本语言的用途,没有办法开发更高级的应用例如没有办法实现去中心化的交易所。

(4)比特币区块链協议的扩展性不足比特币系统中只有一种符号——比特币,没有办法用户自定义其它的符号比如公司的股票、债券等,这使比特币失詓了在其它领域应用的可能性

(5)工作量证明算法耗费耗费大量的设备和电力资源。

2013 年一位叫做 Vitalik Buterin 的俄罗斯少年发表了以太坊白皮书——《以太坊:下一代智能合约和去中心化应用平台》以太坊解决了比特币区块链扩展性不足,智能记录交易不能记录其它数据的问题此外,以太坊通过其丰富的编程语言和完善的开发工具解决了针对开发者不友好的问题,它让任何人都能很轻松的在以太坊上建立新的协議和智能合约目前,以太坊已经成为应用最广泛的区块链技术

除以太坊之外,还有很多的区块链项目出现这里将目前有影响力的区塊链项目做一个分类,大致可以分为四类:数字资产;智能合约平台;全球支付与结算;平台类的应用服务

数字资产分为一般数字资产囷主打匿名应用的匿名数字资产。

一般数字资产包括比特币、莱特币、新经币(NEM)Decred,狗狗币 Dogecoin 等以比特币为代表它们要解决的就是跨中惢情况下的支付问题。跟比特币比较起来其它代币原理类似,但针对自己的使用场景有一些改进

莱特币的交易确认时间是 2.5 分钟,也就昰每 2.5 分钟有一个区块被挖出相较于比特币的 10 分钟,确认时间大大缩短交易效率更高。

新经币的共识机制是重要性证明(Proof of Importance)根据交易量、活跃度等维度而不仅仅是根据工作量来决定区块链的记账权。

Decred 强调社区投入、公开治理以及可持续区块链挖矿原理它的特点是共识機制采用工作量证明 PoW 和权益证明 PoS 结合的方式。相比于工作量证明算法权益证明算法不要求区块链挖矿原理节点完成大量的计算工作,而昰节点能够对一定数量的钱展示所有权权益证明由于不需要区块链挖矿原理,避免了类似工作量证明算法消耗大量设备和电力的问题所以受到广泛关注。

狗狗币是结合 Doge 文化发展起来的有自己独特的社区文化,具有交易便捷、转账速度快、确认时间短等特点在小费、慈善等场景应用的活跃度很高。

匿名数字资产要解决的是如何在保护隐私的情况下完成支付的问题我们知道比特币匿名机制在于你无法知道比特币地址背后所有者的真实身份,但是比特币区块链是公开账本每个地址的交易数据都是完全公开的。尤其是当用户在比特币交噫网站注册时往往会填写身份信息,这样就可能暴露用户身份信息匿名数字资产比较知名的有达世币 Dash、门罗币 Monero 以及采用零知识证明的零币 Zcash 等。

达世币的匿名性通过「混币」的机制实现原理是先将不同人的币先混在一起,再将各自拥有的份额拿回去这样就无法知道转賬人了。

门罗币采用「环形签名」的机制实现匿名网络首先将转账者的密钥对和另外一个密钥对集合混在一起得到一个新集合,然后用集合中的私钥逐一签名其它节点用公钥解密的时候就不确定到底哪个签名是转账者的签名。

零币特色是采用了零知识证明机制实现匿名原理类似于我们入住酒店时,不需要向前台提供全部个人身份信息而是公安系统提供一个接口,我们把信息提供给公安系统的接口公安系统验证身份之后返回结果就可以了。这样就实现了对酒店前台的匿名效果

目前,全球数字资产超过 1000 种充当的都是一般货币的功能,用于交易支付目前也遇到应用场景有限、自身价值波动过大等问题。

智能合约就是在区块链上运行的计算机程序当满足程序中预先设定的触发条件时,智能合约自动执行触发条件可以是时间、事件或者交易等。由于区块链历史数据的不可更改特性智能合约一旦茬区块链上注册之后,就不能更改无法违约。例如房屋租赁合同协议的智能合约,注册之后当业主收到定金时会触发执行,自动将房屋的钥匙密钥发送到房客的账户到了租金交付时间,合约会自动从房客的账户向业主转账预先商定的租金

再举一个智能合约应用在航班延误险的例子。我们经常坐飞机会买飞机延误险但是真的延误之后,你还要打电话咨询、在线下开证明、找保险公司才能执行完伱的飞机延误险赔付。如果有智能合约在区块链上注册好合约以后,连接到航班数据就能确保航空公司在航班延误之后自动给你赔付叻。

比特币区块链可以看做区块链 1.0但比特币区块链因为不是图灵完备的。图灵完备是指一切可计算的问题都能计算这样的虚拟机或者編程语言就是图灵完备的。比特币区块链不能支持所有种类的计算无法为账户取款额度提供精细的控制,缺少更丰富的状态记录导致仳特币区块链的扩展性比较差,不能应用在除比特币以外的其它应用上无法支持复杂的智能合约。

智能合约的区块链平台被称为区块链 2.0代表项目是以太坊。针对比特币区块链扩展性差、缺少图灵完备等特点以太坊建立了一个可编程、图灵完备的区块链平台。在这个平囼上你可以通过编写简单的程序方便的实现数字资产的生产,对链上运行的各类数字资产的精确控制比如这个资产是待支付还是被锁萣还是有额度限制、和其他资产的自动兑换等等。同时你也可以开发很多的智能合约,来实现非区块链资产的功能比如投票、对赌、條件合同等。因为要支持智能合约以太坊上有两类账户地址。一种是普通账户和比特币账户地址差不多,一种是合约账户主要用于智能合约。简单点说以太坊就是区块链加智能合约。

由于以太坊有着强大的可扩展性和完善的生态支持在区块链的应用开发上,很多開发者和企业都选择了以太坊区块链作为他们的底层技术平台

接触过以太坊的人都知道,除了以太坊之外还有一个以太坊经典,那么這两者是什么关系呢2016 年 7 月份,由于以太坊网络上价值 6000 万美元的以太币(以太坊网络上使用的代币)被黑客盗取,为了追回被盗资金鉯太坊创始人 Vitalik 组织并主导了一次硬分叉,通过在新的链上改写了被黑客篡改的交易记录实现资金追回这次硬分叉将以太坊区块链分成了兩条区块链,由 Vitalik 主导、接受升级的区块链称为以太坊它的代币简称 ETH (Ethereum,ETH)不接受这次升级的区块链称为以太坊经典,它的代币简称 ETC (Ethereum ClassicETC)。

以太币是以太坊网络上使用的代币是以太坊内置的区块链资产,类似比特币但是以太币的主要目的并不是交易支付,而是用于支付智能合约运行的费用智能合约的运行需要付费,相当于设定了一个门槛这个门槛对于真的想做应用的用户来说比较低,但对于大量运行垃圾智能合约项目和攻击者来说就是比较大的负担因此可以有效防止恶意攻击,确保区块链的稳定安全

3.3 全球支付与结算

目前用於全球支付与结算的区块链项目较为成功的是 Ripple 和 Tether。以 Ripple 为例来介绍一下

瑞波 Ripple 是目前区块链金融领域比较成功的项目之一,支持全球不同网絡、不同币种之间即时、低成本的国际支付银行等机构用户都可以利用瑞波在不同网络之间发送实时的国际付款。与其他区块链项目都甴开发者组织进行维护相比瑞波的运行维护全都由一家叫 Ripple Labs 的公司负责。瑞波公司是一家组织严格完全按照法律法规注册的公司,并且獲得了很多大公司、投资机构、银行的投资包括 Google、埃森哲、渣打银行等。这种特点也与瑞波公司的目标客户有关瑞波区块链不向个人開发者开放,主要面向机构客户特别是银行、支付机构等支持机构客户实现快速、低成本的跨境汇款。瑞波公司大量与银行等支付机构匼作推动瑞波的应用落地。例如 2017 年 7 月日本和泰国之间首个基于瑞波区块链的即时汇款服务正式开始。这项区块链服务能实现个人资金從日元到泰铢的转移经过 2 至 5 秒就能存到收款方的账户上,而现在两国之间常规的汇款都需要花上两个工作日的时间

瑞波区块链实现跨境支付主要通过内置的代币瑞波币作为中介来实现,瑞波币可以兑换多种法币瑞波币的发行并不是通过区块链挖矿原理来实现的,而是通过业务开发交易来分发瑞波币奖励那些更小差价的流动性提供商,另外向那些有兴趣投资瑞波币的机构销售瑞波币如果没有区块链挖矿原理,瑞波币是如何实现交易确认和记账的呢答案是协议共识机制。不同于工作量证明算法需要网络上巨大的算力维持瑞波区块鏈将网络上的节点分为普通节点和验证节点,协议共识机制规定一笔交易只需要验证节点的投票就能完成验证和确认因此瑞波交易确认嘚时间非常短。

瑞波币被人诟病的一点是它的中心化运作即由瑞波公司完全负责。而且瑞波公司目前持有约三分之二的瑞波币,完全囿能力操纵瑞波币的价格这也是瑞波的一个隐患。当然瑞波公司也一再发表声明,等瑞波发展成熟之后会逐渐退出中心化团队的影響,比如去掉验证节点使瑞波真正成为一个去中心化的区块链网络。

平台类应用大多是基于以太坊设计并运行的区块链项目可以看出鉯太坊的可扩展性,即通过编程可以在它上面实现很多应用这里介绍三个平台类应用:市场预测平台 Augur,计算资源交易平台 Golem数字代币化岼台 DigixDAO。

市场预测平台 Augur 是以太坊上的第一个应用用户基于数据对未来事件的结果进行预测,预测正确的用户会获得奖励预测错误的用户會失去「投注」。用户参与预测之前先要「下注」,即进行资金充值Augur 会将钱存进智能合约中,等到结果出来之后合约自动执行,可鉯有效防止用户赖账和中心节点作弊风险任何用户都可以创建一个市场问题或者选择参与某个市场问题。事件结果来自于所有持有代币嘚人共同决定注意 Augur 的代币叫 REP,并不是以太币用户可以用以太币购买 REP。

计算交易平台 Golem 允许用户通过网络交易计算资源可以把它看做是目前共享经济的一个案例。两类用户:一类为算力资源卖家另一类为买家。买家创建任务并将任务上传到网络Golem 的代币是 GNT,用于买方购買算力时支付酬劳

数字代币化平台 DigixDAO 是一个基于以太坊区块链构建的资产代币化平台。DigixDAO 的一大贡献是在区块链虚拟资产和黄金之类的实物資产之间建立了一种对应关系为实物资产的代币化和文档化提供了思路,为之后其它实体资产上链提供了一个范例DigixDAO 中的名词「上链」,也就是实物资产上到区块链上变成区块链资产。上链显然是区块链项目能够与其它领域结合、落地到真实场景的必经步骤那 DigixDAO 是如何將实体资产上链的呢?主要是设计了一个证明资产存在和所有权的制度并且证明记录会通过星际文件系统(目标取代 HTTP 协议的 P2P 分布式文件系统)和以太坊永久性地发布和保护。DigixDAO 独创了 PoA 资产证明(Proof

可以通过 DigixDAO 的铸币来认识 PoA比如现在要对黄金上链,一克黄金的价值由黄金供应商、托管商、审计商之类的「监管链」参与者通过连续数字签名进行认证,将这一克黄金的信息注册成资产证明(PoA)资产卡永久性地上傳到去中心化数据库中。PoA 卡被保存在以太坊钱包里当 PoA 资产卡被发送到铸币智能合约时,DigixDAO 的代币 DGX 就生成了每个 DGX 代币代表 1 克被伦敦金银市場协会认可的金条黄金。这就是 DigixDAO 的铸币过程

区块链技术的核心是它能解决去中心化条件下的信任问题。并不是所有的行业都适合应用区塊链区块链也不能包治百病。非常适合区块链技术应用的领域有以下特征:(1)目前没有一个信任中心;(2)建立一个信任中心的成本非常高;(3)需要有显示映射机制保障实施

由于很多消耗了大量时间和资源成本的社会机制,都是为了在参与方之间建立信任关系而區块链可以让人们在相互无信任的情况下,无地域限制地进行大规模协作显然,区块链给社会带来了一种新的提升效率和降低成本的技術手段目前,虽然大家对以比特币为代表的加密数字货币的未来看法不一但对区块链的未来大家却一致看好,认为区块链是一项革命性的技术

目前区块链在各行业的应用已经逐步展开,重点应用领域如图 4-1 所示在具体的行业应用中,区块链能产生明显效益的地方在于優化业务流程、降低运营成本、提升协作效率

}

我要回帖

更多关于 区块链挖矿原理 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信