美文网首页区块链研习社
只字不差地阅读比特币原版白皮书(六)——网络(Network)

只字不差地阅读比特币原版白皮书(六)——网络(Network)

作者: c92c227e63d3 | 来源:发表于2018-07-21 17:07 被阅读59次

    上一篇文章对比特币白皮书的工作量证明进行了只字不差地研读,点此回顾工作量证明

    通过对工作量证明的研读,我们知道了:

    • “挖矿”是什么?——寻找随机数,让区块哈希值的前N位都是0。

    • 为什么不能比特币的信息很难被篡改?因为一旦篡改就牵一发而动全身,需要对改动对象以后的所有区块重新做一次PoW,而这个工作量是非常庞大的,没有超过全网一半以上的算力不可能实现。

    • 为什么PoW保证了比特币的安全性?想做恶的人没能力(算力),有能力(算力)的人根本不想作恶,是既得利益者,系统安全的守护者。

    这一章一起来研读网络篇(Network)

    The steps to run the network are as follows:

    1. New transactions are broadcast to all nodes.
    2. Each node collects new transactions into a block.
    3. Each node works on finding a difficult proof-of-work for its block.
    4. When a node finds a proof-of-work, it broadcasts the block to all nodes.
    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个条件:

    1. 每一笔新的交易都会被全网广播。
    2. 每个节点会将新的交易放进区块里。
    3. 每个节点都会为了生成自己的区块去完成工作量证明。
    4. 当一个节点完成了工作量证明后,就会广播给其他所有的节点。
    5. 只有区块中所有的交易都是有效的并且没有被双重支付,这个区块才会被节点接受。
    6. 节点接受一个区块的方式就是在生成下一个区块的时候,会将这个区块的哈希值添加到下一个区块中,从而得到下一个区块的哈希值。

    Nodes always consider the longest chain to be the correct one and will keep working on extending it.

    全网的节点总是会把最长的那条链当做正确的那条,并且会持续在这条链的基础上生成后续的区块。

    If two nodes broadcast different versions of the next block simultaneously, some nodes may receive one or the other first.

    如果两个节点同时向外广播两个不同版本的区块信息,一些节点可能先收到的是A,在收到B,而其他节点可能刚好反过来。

    一般情况下,会是某一个节点先完成工作量证明,找到满足条件的随机数。但是小概率也会发生同时或者相差时间很少的情况下,同时完成并向外广播。这个时候其他节点可能收到的信息先后顺序就不一样了。

    In that case, they work on the first one they received, but save the other branch in case it becomes longer.

    在这种情况下,节点们就按照自己先收到的区块继续工作(向前生成区块),但是也保留着另外一个区块,可能未来这个区块往前延伸的链成为最长的链。

    The tie will be broken when the next proof-of-work is found and one branch becomes longer; the nodes that were working on the other branch will then switch to the longer one.

    这种僵持的两条链并行的情况将会在下一次完成工作量证明产生最长的那条链的时候结束,那些没有在最长链上工作的节点也将切换回来,重新回到最长的链上继续工作。

    矿工们回到最长链上之后,那个曾经被保留的区块也就被丢弃了,这个区块也被叫做孤块。区块中的交易信息,将会被重新打包到区块里,进入到最长链中。

    New transactions broadcasts do not necessarily need to reach all nodes. As long as they reach many nodes, they will get into a block before long.

    新的交易信息在向外广播时并不是一定要传达给所有的节点。只要有很多节点接收到,他们很快就会生成一个新的区块。

    Block broadcasts are also tolerant of dropped messages. If a node does not receive a block, it will request it when it receives the next block and realizes it missed one.

    节点就算没有接收到整个区块的信息也是可以接受的。如果一个节点没有收到区块的信息,那他会在收到下一个区块的时候发现自己漏掉了上个区块的信息,他就会要求同步上一个区块的信息了。

    因为每一个区块之间都是通过哈希值互相关联并且确定先后顺序的。如果你收到一个区块,其中包含的上个区块的哈希值你是没有见过的,这个时候你就意识到你缺少上一个区块了,就会要求同步这个信息。

    这一章的内容比较简单,可以看做是对比特币白皮书前半部分的一个总结。

    通过数字签名,可以确定一笔转账发起人的身份和付款人的确拥有需要转出的比特币。虽然确定了交易双方的所有权,但是还需要解决双重支付的问题。

    在传统方案中,会借助中心化组织来解决问题,比如银行会记录每一笔转账信息。但是在去中心化的点对点网络中,解决双重支付就需要一个公开的账本,和一个网络系统来共同维护这个账本。

    该账本和网络系统具有三个特点:

    • 所有交易全网公开
    • 利用时间戳服务,对所有交易进行时间上的排序,形成一条交易链
    • 通过工作量证明(PoW),让矿工们利用算力来竞争获得记账的机会

    每一个网络节点都将自己收到的交易信息放到一个区块中,同时每一个节点也需要为自己打包的区块找到合适的随机数(nonce)来生成符合要求的哈希值,让自己的区块进入全网接受的最长链(即挖矿)。

    比特币白皮书上半部分总结

    相关文章:
    只字不差地阅读比特币原版白皮书(一)——摘要
    只字不差地阅读比特币原版白皮书(二)——介绍篇
    只字不差地阅读比特币原版白皮书(三)——交易篇(Transactions)
    只字不差地阅读比特币原版白皮书(四)——时间戳(Timestamp Server)
    只字不差地阅读比特币原版白皮书(五)——工作量证明(Proof-of-Work)
    什么是哈希(Hash)?
    什么是数字签名(digital signatures)?
    石油和比特币能被挖完吗?

    相关文章

      网友评论

      • 小宁静致远:俊,今天看了你<<只字不差地阅读比特币原版白皮书>>系列文章的第6篇--网络 (Network), 内容非常丰富, 中英结合, 清晰明了, 图文并茂, 非常棒!
        看到你这么认真的学习区块链, 一定是被它迷上了! 我想你一定是个区块链投资者:
        是的, 区块链来到这个时代, 将从技术上带给我们人类和人性颠覆性的改善. 它的影响力至少可以用工业革命级别来形容. 做为我们个体, 就像20年前, 使用互联网一样, 我们应该多学习区块链,了解和掌握这个即将影响我们每个人的技术革命和生产力变革.

        祝愿你早日完成这个系列文章, 也祝愿你对区块链的信任带给正反馈和价值.

      本文标题:只字不差地阅读比特币原版白皮书(六)——网络(Network)

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