完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
比特币是一个价值传输网络,参与比特币系统运作的人(包括用户),就是网络中一个个节点,节点彼此等权,没有中心,相互之间连接完全自由,各自保存着完全一致的比特币账本,运行着遵循相同规则的比特币程序。任何人都可以加入比特币网络,新加入比特币网络的节点,都可以向原有节点要一份比特币账本。
用比特币付款,需要向比特币网络广播付款信息(这里的“广播”意思是向比特币网络中多个节点发送付款信息),收到信息的节点验证信息后会继续广播,一传十,十传百,转瞬间付款信息就会传遍全网,然后由某一记账者记入区块链账本中。 那么,为什么就有人来记比特币的账呢?既然谁都可以记账,那又以谁的账为准呢?怎么确保账本的真实性呢?比特币又是怎么发行出来的呢? 首先,按照比特币的规则,记账是有奖励的。一部分奖励是账单里用户出的手续费,手续费以比特币支付,这个手续费由用户自己定,可高可低,给得高,记账者就倾向于先记这笔手续费高的账。另一部分奖励则是区块奖励,打包一个区块,就获得一定的区块奖励。按照比特币的规则,区块奖励起初为50个比特币,每出210000个区块后,奖励减半,差不多每4年减半一次。区块奖励一方面调动了大家去记账,另一方面也完成了比特币的发行。按照上述规则,我们可以通过这个式子计算比特币的总量,就是210000×50×(1+1/2+1/4+……),总共2100万个。区块奖励和手续费是记账者按照比特币的规则自己记给自己的。 有了奖励,而且奖励颇丰,大家当然抢着去记账。为确定以谁的账本为准,比特币有个最长链原则,谁的区块链账本最长,就以谁的账本为准。制造区块需要进行大量计算,最长链实际就是凝聚着最大工作量的链。最长链也是最新的账本,记录着最多的账单。 记账者把账单收集起来(记账者会先验证账单真伪,还会验证付款者有无足够的币进行支付),打包成一个区块。区块由区块头和区块体组成,区块头里有个记账者自定的随机数,有个难度目标,还有些别的信息。记账者换上不同的随机数,对区块头进行哈希运算,得到区块头的哈希值,算出的一个个哈希值就像生成了一个个随机数一样,大小毫无规律,谁先试出小于难度目标的哈希值,他就将该哈希值对应的区块加在区块链上,广播给别人,这时候他的链就更长了,大家验证区块无误后,就都以他的区块账本为准,并继续广播该区块至全网。表明以该区块为准的方式,就是将该区块头哈希值纳入自己要计算的下一个区块头中。 这个区块头和区块体是什么关系呢?区块体里记录了具体的账单,包括记账者自己所得区块奖励和手续费的账单。区块头则相当于该区块的身份信息,里面有版本号、上一个区块头的哈希值、时间戳、难度目标、随机数,还有一个Merkle树根哈希值,Merkle树根哈希值由区块体里的账单经过一系列哈希运算得到,相当于区块体里那些账单的摘要信息,只要账单稍有变化,Merkle树根哈希值就会大不相同。同样,只要区块头稍有变化,区块头哈希值就会大不相同。通过Merkle树根哈希值,区块体和区块头紧密联系在了一起,账单无法篡改;区块头的哈希值前后衔接,又保证了区块链环环相扣,无法篡改。 这个哈希运算和哈希值是怎么回事呢?哈希算法又被称为摘要算法,输入任何数据,经过哈希运算后,都会得到一个固定长度的输出值,称为该输入数据的哈希值,一个输入数据的哈希值是唯一且确定的。哈希运算还有两大特点。第一,哈希运算的结果,就像生成了一个随机数一样,只要输入数据稍有变动,哈希值就会大不相同,比如输入一本书的内容,只要多加一个字,哈希值就会面目全非。第二,哈希运算不可逆,输入数据后可以很快算出哈希值,但给出哈希值,就没法反推它的输入数据。反推输入数据在逻辑上也是不可能的,因为输入数据无限,哈希值有限,一个哈希值对应着多个输入数据。 哈希运算和哈希值有各种类型,争夺比特币记账权时算的哈希值是个256位的二进制数。按照比特币的规则,区块头哈希值须小于难度目标,记账者换上不同随机数,对区块头进行哈希运算,算出哈希值就像生成随机数一样,每个数位都可能是0或1,总共有2^256种可能,要求算出的哈希值比难度目标小,就好比在这2^256个数中随机抽出一个数,要求其小于难度目标。算出的哈希值比难度目标小的概率是:难度目标/2^256。要试出比难度目标小的哈希值,平均试验次数为:2^256/难度目标。 算出的哈希值前面数位0越多,值就越小,所以也可以不太严谨地认为,算出的哈希值前面若干数位都是0,就可以满足小于难度目标的要求。例如,哈希值前面70位都为0就小于难度目标(此时难度目标的值是2^186)。算出哈希值就像生成随机数一样,每个数位上出现1和0的概率各是1/2,一次就试出前面70位都是0的哈希值,概率是1/2^70(也可以通过2^186/2^256算得),想增大试出的概率只能做更多哈希运算。全世界想获得比特币奖励的人都会加入比特币网络,收集账单,打包成区块,进行哈希运算,全世界总共要计算2^70次才有一次机会(不同的人打包的区块里账单不一样,Merkle树根哈希值不一样,即使不同的人输入的随机数一样,计算出的区块头哈希值还是不一样,这样就能避免大家出现重复计算的情况,保证全世界平均计算2^70次,算出一次前面70位都是0的哈希值)。谁先试出了前面70位都是0的哈希值,他就立马将该哈希值对应的区块广播出去。大家一接收到该区块,验证无误后,就继续广播该区块,并以此为准,在此基础上继续收集账单继续计算,争夺下一个区块的记账权。区块链就这样在大家的齐心协力下不断延长,全网的节点都有一份相同且实时更新的区块链账本。验证、广播、记账等过程,都是由各个节点的比特币程序根据比特币规则自动执行的。 这种试出符合要求的哈希值并获得记账权和比特币奖励的行为,被称为挖矿,专门进行这种计算的机器,就称为矿机,干挖矿这行的人,就叫矿工,记账的手续费,就叫矿工费。 至于难度目标到底是多少,则是由比特币的程序每隔2016个区块就自动调节一次的,根据之前出块速度和之前难度目标反推全网算力,再根据全网算力设置一个合适的难度目标,让全网平均10分钟能出一个块。这样一来,谁的计算能力强,谁在单位时间内计算次数多,谁就有更大的概率试出符合要求的哈希值,获得记账权和比特币奖励,这种共识机制也被称为工作量证明(PoW)。在工作量证明的机制下,挖矿需要耗费巨大电力。 世界各地的矿工竞相寻找便宜的电力,修建矿场,布置矿机,就形成了目前浩浩荡荡的挖矿局面。由于现在全网算力很高,挖矿难度很大,单枪匹马已经很难挖到矿了,于是大家把算力集中到一个个矿池,矿池更容易挖到矿,然后再按各自贡献的算力大小相应分配收益。 可以看出,比特币的区块链账本是传遍了全网的,保存在全网的,大家都验证过了的,区块链通过Merkle树根哈希值和区块头哈希值环环相扣,累积了巨大的工作量,账本真实可靠,无法篡改,无法销毁。比特币用于转账或支付只需发出一条信息就行了,不用经过任何中心机构,可以轻易地全世界流通。 我们也可以看出,想试出哈希值有多么困难,只要求哈希值前面70位是零,都要试上2^70≈1.18×10^21次才有一次机会,若想试出整个哈希值,全世界所有超级计算机计算能力翻一亿倍,一起算上几万亿年,也试不出来。这些算法,就是比特币安全性的保障。 |
|
|
|
听起来是有点晦涩难懂,我们找个通俗易懂的比喻好了。我们平时在淘宝上购买商品,一般不会担心商家会有欺诈行为,因为淘宝作为平台会保证这次交易的安全可靠。此时,淘宝就是一个值得信任的中心,我们的交易都是以这个中心为节点进行——把钱交给淘宝,确认收货后,淘宝再把钱转给商家。不过,万一有一天,淘宝倒闭了,众多的商家和买家就会遭受财产损失。这是中心化交易系统,也就是我们目前使用的交易系统存在的潜在风险,而区块链技术则可以消除这种风险,解决人与人之间信任危机。在区块链交易系统中,当你和商家发生了交易,系统中包括你和商家在内的所有人都会在自己的小本本上记录这次交易。如果你交了钱,但商家不交货,那么所有人小本本的交易证明,都会证明他是一个违约的骗子。如果他想篡改这次交易,企图骗大家说你没有付钱,那么,他只修改自己的小本本是没有用的,只有把50%以上人的小本本都修改了,多数压倒少数,他才能得逞。如果系统中的人足够多,这种修改量显然是难以做到的。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
“0元购”智元灵犀X1机器人,软硬件全套图纸和代码全公开!资料免费下载!
3429 浏览 2 评论
1394 浏览 0 评论
【实操文档】在智能硬件的大模型语音交互流程中接入RAG知识库
6690 浏览 1 评论
防止AI大模型被黑客病毒入侵控制(原创)聆思大模型AI开发套件评测4
1086 浏览 0 评论
不可错过!人工神经网络算法、PID算法、Python人工智能学习等资料包分享(附源代码)
3403 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 17:01 , Processed in 0.949404 second(s), Total 72, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号