我爱编程

比特币运行机制简介

2018-04-13  本文已影响0人  ironman_

什么是比特币:

不同于传统货币,比特币是完全虚拟的。它不但没有实体,本质上也没有一种虚拟物品代表比特币。比特币隐含在收发币的转账记录中。用户只要有证明其控制权的密钥,用密钥解锁,就可以发送比特币。这些密钥通常存储在计算机的数字钱包里。拥有密钥是使用比特币的唯一条件,这让控制权完全掌握在每个人手中。(所以如果秘钥丢失,这个地址上的比特币也就永远的丢失了,谁都没办法交易这个地址上的比特币。同样的如果私钥泄露,唯一的方式是尽快重新生成一个地址,然后把泄露的地址上的币转入新地址)

也就是你有一个账号,这个账号有多少钱记录在公开的分布式账本上。

比特币是一个分布式的点对点网络系统。因此没有“中央”服务器,也没有中央发行机构。比特币是通过“挖矿”产生的,挖矿就是验证比特币交易的同时参与竞赛来解决一个数学问题。任何参与者(比如运行一个完整协议栈的人)都可以做矿工,用他们的电脑算力来验证和记录交易。平均每10分钟就有人能验证过去这10分钟发生的交易,他将会获得新币作为工作回报。本质上,挖矿把央行的货币发行和结算功能进行分布式,用全球化的算力竞争来取代对中央发行机构的需求。

比特币系统包含调节挖矿难度的协议。挖矿——在比特币网络中成功写入一个区块交易——的难度是动态调整的,保证不管有多少矿工(多少CPU)挖矿,平均每10分钟只有一个矿工成功

比特币协议还规定,每四年新币的开采量减半,同时限制比特币的最终开采总量为2,100万枚。这样,流通中的比特币数量非常接近一条曲线,并将在2140年比特币将达到2,100万枚。由于比特币的开采速度随时间递减,从长期来看,比特币是一种通货紧缩货币。此外,不能通过“印刷”新比特币来实现“通货膨胀”。

比特币的构成:

比特币发展史

2008年,一位化名为中本聪的人,在一篇名为《比特币:一个点对点的电子现金系统》的论文中首先提出了比特币。中本聪结合以前的多个数字货币发明,如B-money和HashCash,创建了一个完全去中心化的电子现金系统,不依赖于通货保障或是结算交易验证保障的中央权威。关键的创新是利用分布式计算系统(称为“工作量证明”算法)每隔10分钟进行一次的全网“选拔”,能够使去中心化的网络同步交易记录。这个能优雅的解决双重支付问题,即一个单一的货币单位可以使用两次。此前,双重支付问题是数字货币的一个弱点,并通过一个中央结算机构清除所有交易来处理。
根据中本聪发表的一篇涉及比特币网络运行的论文,比特币网络自从被许多其他的程序员修订之后,于2009年启动。分布式计算,为比特币提供了成倍增长的安全性和韧性,现在超过了世界顶级超级电脑的联合处理能力。根据比特币兑美元汇率,比特币的总市场估值为50至100亿美元。目前从全网来看,比特币处理的最大交易额为1.5亿美元,这笔交易及时处理和转账,没有缴纳任何手续费。
中本聪在2011年4月退出公众视野,将比特币代码开发与网络建设的重任留给了欣欣向荣的社区成员。而“中本聪”究竟是谁,时至今日仍然是未解之谜。然而,比特币系统的运行,既不依赖于中本聪,也不依赖于其他任何人——比特币系统依赖于完全透明的数学原理。这项发明本身就是开创性的,它已经蔓延到了分布式计算、经济学、计量经济学领域。

一个分布式计算问题的解决方案

中本聪的此项发明,对“拜占庭将军”问题也是一个可行的解决方案,这是一个在分布式计算中未曾解决的问题。简单来说,这个问题包括了试图通过在一个不可靠、具有潜在威胁的网络中,通过信息交流来达成一个行动协议共识。中本聪的解决方案是使用工作量证明的概念在没有中央信任机构下达成共识,这代表了分布式计算的科学突破,并已经超越了货币广泛的适用性。它可以用来达成去中心化的网络共识来公正选举、彩票、资产登记,以及数字化公证等等。

交易

简单来说,交易告知全网:比特币的持有者已授权把比特币转帐给其他人。而新持有者能够再次授权,转移给该比特币所有权链中的其他人,产生另一笔交易来花掉这些比特币,后面的持有者在花费比特币也是用类似的方式。

交易也包含了每一笔被转移的比特币(输入)的所有权证明,它以所有者的数字签名形式存在,并可以被任何人独立验证。在比特币术语中,“消费”指的是签署一笔交易:转移一笔以前交易的比特币给以比特币地址所标识的新所有者。

交易是将钱从交易输入移至输出。输入是指钱币的来源,通常是之前一笔交易的输出。交易的输出则是通过关联一个密钥的方式将钱赋予一个新的所有者。目的密钥被称为是安全锁(Encumbrance)。这样就给资金强加了一个要求:有签名才能在以后的交易中赎回资金。一笔交易的输出可以被当做另一笔新交易的输入,这样随着钱从一个地址被移动到另一个地址的同时形成了一条所有权链。

也就是账号只是一个地址,而这个地址有多少钱写在分布式账本上,如果没有私钥就没办法去使用这个地址上的钱(没办法将地址上的金额划分给另外的地址也就是没办法交易),如果私钥丢失了那么这个地址上的金额也就永远的丢失了,谁都没办法使用这笔金额。

挖矿和共识

比特币里一个重要的角色是旷工,每一个节点都可以成为旷工。挖矿有几个重要的作用:保护比特币系统的安全,发放新币。
计算一个随机数作为工作量证明(或者说让区块被推翻有门槛)一旦算出了比特币网络中规定的随机数,就可以将自己打包的区块(其中包括给自己的奖励)全网广播。其他节点会验证这个随机数是否符合算力要求,符合的话就会承认这个区块,即在这个区块后面添加新的区块。

所有的交易都会被写入到区块链中,只有被打包的交易才可以作为下一笔交易的输入被交易。一般比特币有一个确认数即被一个区块打包了并且这个区块后面生成了一个新区块,那么认为基本就是交易成功,但是如果是大额交易,最好等到6个确认,即这个交易被打包的区块后面又生成了6个区块,这个时候如果想要推翻之前的那笔交易(比如再支付给另外地一个人)那就需要很大的工作量证明了。在区块链的白皮书里计算了这种攻击(双重支付攻击)成功的概率在正常情况下是很低的。

挖矿是一种将结算所去中心化的过程,每个结算所对处理的交易进行验证和结算。挖矿保护了比特币系统的安全,并且实现了在没有中心机构的情况下,也能使整个比特币网络达成共识。

挖矿这个发明使比特币变得很特别,这种去中心化的安全机制是点对点的电子货币的基础。铸造新币的奖励和交易费是一种激励机制,它可以调节矿工行为和网络安全,同时又完成了比特币的货币发行。

区块链是如何做到防止篡改的

区块链的数据结构:区块链是由包含交易信息的区块从后向前有序链接起来的数据结构。区块被从后向前有序地链接在这个链条里,每个区块都指向前一个区块。

对每个区块头进行SHA256哈希,就生成一个区块哈希,通过这个哈希值,可以识别出区块链中的对应区块。区块头中是包含父区块哈希字段的,由于区块头里面包含“父区块哈希值”字段,所以当前区块的哈希值也受到该字段的影响。如果父区块的身份标识发生变化,子区块的身份标识也会跟着变化。当父区块有任何改动时,父区块的哈希值也发生变化。父区块的哈希值发生改变将迫使子区块的“父区块哈希值”字段发生改变,从而又将导致子区块的哈希值发生改变。而子区块的哈希值发生改变又将迫使孙区块的“父区块哈希值”字段发生改变,又因此改变了孙区块哈希值,等等以此类推。所以如果想要改变一个已经存在的区块就要改变这个区块所有的子区块,而改变这些区块需要很多的“工作量证明”,而如果有这个算力还不如直接挖矿收益大(如果攻击是以收益为目的的话),这也就保证了比特币的不可篡改,或者说篡改需要很大的代价。

区块链里面以最长的链条作为正式链,其他节点都会以这个链条为准往后挖矿,因为最长的链拥有最多的区块,拥有最多的工作量证明。所以如果想要双重支付(修改支付数据)那就是要新分叉出一个链然后想办法赶上最长的链。

虚拟货币的发展

比特币是2009年发布的,社区也一直在积极维护,之后出现了很多创新型的各种山寨币,他们有的直接基于比特币的代码,有的则是完全新的东西,但是都独立运行在自己的网络中。

不基于CPU算力的工作量证明而是基于RAM空间(消耗内存)的工作量证明

有的为了更快交易,比如出块速度比比特币快,发行量比比特币大。

有的为了不浪费挖矿的算力(比特币挖矿计算出来的东西除了证明工作量之外毫无意义),采用多目的挖矿,去计算一些有意义的内容,比如寻找素数、计算蛋白质褶皱结构等。

有的则是致力于更加匿名的虚拟货币。其实比特币还不够匿名,利用大数据分析可以很容易地得到某一比特币地址的消费习惯。

非货币型竞争币区块链是区块链设计模式的另类实现,并不主要作为货币使用。当然不少这种区块链的确含有货币,只不过它们的货币仅是一种象征,用于分配其他东西,比如一种资源或者一份合约。比如以太坊,域名币。

参考文章(摘抄自):

上一篇下一篇

猜你喜欢

热点阅读