美文网首页
【白皮书系列】比特币白皮书(五)

【白皮书系列】比特币白皮书(五)

作者: 9abda844c1aa | 来源:发表于2018-07-12 21:51 被阅读0次

    [5. 网络]

    The steps to run the network are as follows:
    [译] 网络遵循以下几条规则:

    1. New transactions are broadcast to all nodes.
      [1] 新的交易会广播到所有的节点。
      [注] 这个好像可以解答我们之前在第三节中关于在不同的节点上广播交易来通过交易手续费区别对待来进行双重支付可能性的问题:
      如先支付一笔比特币转账给A,但是我提供很少的矿工费,从而形成打包成区块的时间会更久。在另外一个地方(考虑到交易会广播出去,我在一个没有接收到我的上一笔交易的节点附近)再用这笔比特币转账给B,这时我提供矿工费多一些,保证能够在转账给A的交易打包之前打包形成区块。这样由于没有时间的概念,从而实现双重支付。
      那么,上述的这种情况不会得逞。是因为虽然可以实现在第一笔(交易1)节点(我们认为是节点X)将交易广播出去,第一笔交易并未到达另一个节点(我们称为节点Y)之前,我们在节点Y上进行交易(交易2)的情况。但是,节点Y也会把交易2进行广播,在同时拥有交易1和交易2的节点就会进行验证,通过时间戳(虽然目前我们还不清楚里面到底有没有包含时间)来验证两笔交易的先后顺序。从而确定哪一笔交易是有效的,哪一笔交易是无效的。随着时间的推进,整个网络也会达成共识。从而解决或避免这种双重支付的方法。

    2. Each node collects new transactions into a block.
      [译] 每个节点收集新的交易到区块中。
      [注] 个人理解是节点会首先验证交易的有效性,再进行放入到区块中。
      [问题] 这里新的交易是指全网验证有效的,还是收到了一笔新的交易,并不需全网的共识就加入到区块中(交易不多,不存在堵塞的情况下)?
      [思考] 现实中,交易往往存在堵塞,毕竟比特币网络每秒只能处理8笔左右的交易。并且应该需要网络的共识,不然就会产生上述的问题:即如果把没有达成共识的交易进行打包放到区块中,可能会利用节点间的信息差实现双重支付。

    3. Each node works on finding a difficult proof-of-work for its block.
      [译] 每个节点工作来寻找一个在自己区块中的有足够难度的工作量证明。
      [问题] 工作量证明不是全网络同一个工作量的难题吗?难不成每个节点是不一样的?还是说基于自己区块的交易信息来添加一些信息来实现该工作量证明?如果是这样的话,则就解决了上节中的问题:可以进行提前埋伏好工作量证明来快速实现工作量证明。因为工作量证明与区块中的交易信息有关,每次打包的交易信息不同,对应的工作量证明也不同。所以,无法提前埋伏好。这样,也不需要很多登记的工作量证明难度。只需要连续若干个0的方式来调节就可以。

    4. When a node finds a proof-of-work, it broadcasts the block to all nodes.
      [译] 当一个节点发现了一个工作量证明的结果时,它就广播这个区块到整个节点网络。
      [注] 这个是针对算力分配均衡的比特币网络,大家都比较均衡,争相争取最长的链,来获取挖矿的收益。而对于一些算力分配不均衡的数字货币,一些大算力的节点可以进行隐藏区块攻击: 节点算力大,出块速度明显有优势,则可以先不进行广播,而是积攒几个区块之后进行广播(如积攒了3个区块之后再进行广播)。由于出块的速度快,一次性出3个块的这条链成为了最长的链(假设,除了这个节点之后的网络里只出了两个块)。这样就保证了这3个区块的收益都是这个算力最大的节点的。而其他节点之前出的2个块由于不是最长的链,所以也无法获得出块的收益。从而实现了算力大的节点形成了对网络中的其他的节点的攻击。

    5. Nodes accept the block only if all transactions in it are valid and not already spent.
      [译] 其他节点只会接收这样的区块:区块中的所有交易是有效的并且交易中的钱是之前没有被花过的。

    6. Nodes express their acceptance of the block by working on creating the next block in the chain, using the hash of the accepted block as the previous hash.
      [译] 节点通过如下的方式来表示认可该区块:在这个区块的后面创造新的区块,即将这个可接收的区块作为前一个区块进行哈希。

    [注] 比特币网络中只认可最长的链,所以所有的节点都会追逐最长的链,最长的链上添加区块才会获得收益。如果同时有了两个相同长的链,那么节点会同时保存两个链,并在其中一个链中进行创造新的链,并且实时查看网络上是否有更长的链了。如果有,则放弃目前的工作,转向去在那个新发现的最长的链上创造新的区块。这也是交易被确认6次才会被认为这个交易是成功的不可逆的原因。因为交易被确认2次3次的时候,可能网络上还有更长的链出现的可能。

    相关文章

      网友评论

          本文标题:【白皮书系列】比特币白皮书(五)

          本文链接:https://www.haomeiwen.com/subject/hpxdpftx.html