繁体
2:用
a支付10btc给c。
有的读者应该会觉得,那我们就采信先收到的
易信息1,忽略与之矛盾的脚印信息2不就行了。
但问题是,因为网络链路的复杂
,所以很可能存在
分用
先收到
易信息1,又有
分用
先收到
易信息2。如果依靠先后顺序辨别有效
,那么就会存在不同用
记录的
易信息不一致。
所以为了解决这个问题,中本聪才提
了区块链的概念。
每个用
如果愿意,都可以整理自己从网络中接收到的
易信息,然后检查其是否合理,也就是每笔
易是否由足够余,然后数字签名是否正确后,再将
易记录打包成一个区块。
因此每个
易记录都是以区块的形式存储,然后再广播到系统中的其他用
中。
而区块之间相互连接,形成一条由系统内全
用
共同维护的区块链。
因此其他用
收到广播的区块时,就会把这个区块加到自己维护的账本,也就是区块链的尾
。
但如果只是这样,并没有解决任何问题。互联网节
遍布全球,广播过程也需要时间,因此肯定会存在不同节
收到不同区块存储的问题。
所以如此一来这个网络就
了。
而为了降低传播时间的影响,一个简单
暴的方式就是从系统设计中就限制区块生成的速度。
所以比特币系统的
心思想采就是用算力限制区块的生成速度。
比特币系统要求,每个用
在发布新区块前,必须先完成一个任务。
这个任务就是
据前一区块的一些信息加上新区快的一些信息,生成一个字符串s,选择一个字符串b,与s合并成“bc”,且要求“bc”的哈希映
满足某个条件,比如映
结果的前72位为0。
所以上面的第二步,除了一个个试以外是没有捷径的,而且结果是否满足要求可以快速试
。
举个例
就相当于给你一个银行卡,让你挨个试密码。
那你没有任何办法,只能000000到999999挨个试验,最后虽然能试
来,但也会
费大量时间。
而且你把试
来的结果告诉别人后,别人可以很快验证你的结果是否正确。
但是时间恰好是我们宇宙中最稀缺的资源。
因此可以调节这个难度,比如使得系统中所有平均每二十分钟才会有一台设备完成要求的任务,猜
符合要求的字符串b。
如此一来,撞车的概率就会大大降低。补充一句,这个难度是不断调节的,以适应
件算力的提升。
虽然概率大大降低,但仍然无法排除存在撞车的概率。因此,区块链验证中最
心的思想就是——相信最长的区块链。
也就是在原有的到区块链n的情况后,短时间内
现了两个不同的区块,这个时候,我们需要
的只有一件事情,那就是等待。
因为同时产生区块的小概率事件,总不可能连续发生。