美文网首页0岁的产品经理区块链研习社一分钟读书俱乐部
一分钟读书俱乐部(四十八):《区块链技术驱动金融》比特币网络

一分钟读书俱乐部(四十八):《区块链技术驱动金融》比特币网络

作者: 全职高手一叶之秋 | 来源:发表于2019-02-28 19:01 被阅读34次

    原文精选:到这里,我们已经讨论了参与者可以发布交易,并将交易纳入区块链,这一切似乎很神奇。事实上,上述整个过程都是通过比特币网络完成的。比特币网络是一个点对点的网络,沿用了很多已有的点对点网络的理念。在比特币网络里,所有的节点都是平等的。没有等级,也没有特殊的节点,或所谓的主节点。它运行在TCP网络上,有一个随意的拓扑结构,每个节点和其他的随机节点相连。新的节点也可以随时加入。可以试着现在就下载比特币节点软件,把你的个人电脑注册为一个节点,这个节点的权限和比特币网络里所有其他节点都是一样的。

    由于随时有新的节点进入,也有旧的节点离开,所以比特币网络事实上一直在变化。并没有强制的规定节点何时明确地离开网络,只要一个节点有3个小时没有音讯,就会慢慢地被其他节点忘记。通过这个方式,网络非常缓和地处理节点下线问题。

    上文提到,每个节点和其他随机节点相连,网络中并不存在一个确定的地理学意义上的拓扑结构。那么一个节点是如何加入网络的呢? 当你启动一个新节点的时候,先向一个你知道的节点发送一个简单的消息。这个节点就是你的种子节点,当然,有多种不同的方法可以查找种子节点。然后你就会问你的种子节点是不是还知道其他什么节点? 在链接到一个新的节点后,你可以重复这个过程许多次,最后你可以选择和哪些节点相连,这时,你就成为比特币网络里一个完全合格的节点了。这些步骤里有很多随机性,理想的情况就是你能和一些随机组的节点相连。为了加入网络成为网络节点,你只需知道一开始怎么和其中一个节点链接就行了。


    读书笔记:

    1,比特币网络是一个点对点的网络,而且所有的节点都是平等的。没有等级,也没有特殊的节点或主节点。

    2,比特币网络运行在TCP网络上,有一个随意的拓扑结构,每个节点和其他的随机节点相连,新的节点也可以随时加入。

    3,由于随时有新节点进入和旧的节点离开,所以比特币网络一直在变化中。

    4,当启动一个新节点的时候,先向一个节点发送消息,这个节点就是你的种子节点。


    原文精选:那加入网络到底有什么好处? 当然是为了维护区块链。当我们发起一个交易的时候,我们想让整个网络都知道。这是通过一个“泛洪”(flooding)的算法完成的[有时候我们称之为“八卦”(gossip)协议]。如果爱丽丝要转账给鲍勃,她的客户端发起一个交易,然后把这笔交易告知所有和她的客户端节点相链接的其他节点,这些节点会进行一系列核验,决定是否接受并转播这笔交易。如果核验通过,这些节点会将这笔交易信息传播给与其相连的其他节点。当节点接收到一个交易信息后,会把交易放入一个交易池,但需要注意的是,交易池里的交易还没有被打包进区块链。如果节点接收到的交易在交易池里已经存在,就不会再次把它传播出去。

    这样,就确保了泛洪协议会自动终结,而不是让一个交易在网络一再被传播永不停止。由于每个交易都有一个独一无二的哈希值,所以节点可以非常方便地查询某个交易是否在自己的交易池里。

    节点接收到一个新交易信息时,如何核验呢? 这里有四个关卡:第一个也是最重要的一个是交易验证,也就是验证交易在当前的区块链中是有效的,节点会针对每个前序交易的输出运行核验脚本,确保脚本的返回值都为真;第二,检查是否有双重支付;第三,如前文所述,节点会检查这笔交易信息是不是已经被本节点接收过;第四,节点只会接收和传递在白名单上的标准脚本。

    读书笔记:

    1, 加入比特币网络后,当我们发起一个交易,并想让整个网络都知道,可以通过一个“泛洪”(flooding)的算法来完成。

    2,节点接收到一个新交易信息时,要进行四重核验:

    第一个交易验证,也就是验证交易在当前的区块链中是有效的;

    第二,检查是否有双重支付;

    第三,节点会检查这笔交易信息是不是已经被本节点接收过;

    第四,节点只会接收和传递在白名单上的标准脚本。



    原文精选:上述所有检查都是合理检查,所有节点很好地执行这些检查能够使网络健康、稳定地运行,但实际上并没有规则强制节点执行这些检查。虽然如此,每个节点还是有必要进行检查的——因为比特币网络是一个点对点的对等网络,任何人都可以随时加入,总有一些节点会发出双重支付,或者非标准脚本的交易,甚至彻底就是非法交易。

    由于网络传递有延迟,不同的节点可能会有不同的交易池。当有双重支付攻击的时候,这个现象会变得十分有意思。假设爱丽丝想把同一个比特币支付给鲍勃与查理,于是,爱丽丝几乎同时发出两笔交易。有些节点先听到爱丽丝→鲍勃交易,有些则先听到爱丽丝→查理交易。当一个节点接收到了这两个交易当中任何一个,它就会把接收到的交易放入交易池中,之后,它听到了另一个交易,看上去像是双重支付交易,这个节点就会把它丢弃掉不再向外传播。结果就是众多的节点会对“哪一个交易应该被纳入区块链”产生分歧。这种情况被称为竞态条件(race condition)。

    好在对于比特币来说,这完全不是问题:打包下一个区块的矿工会打破这个僵局,他会决定哪个交易会最终打包进这个区块。如果爱丽丝→鲍勃的交易进入区块,那些听到爱丽丝→查理的节点会把爱丽丝→查理的交易从交易池里剔除,因为那是一个双重支付;而那些听到爱丽丝→鲍勃的节点也会把这个交易剔除出去,因为这笔交易已经被纳入区块链。因此,一旦这个区块被传播以后,就不再有前面说的分歧了。

    由于每个节点默认保留最早接收到的交易,所以节点在网络上的位置就很重要。如果两个矛盾的交易或区块在网络上两个不同地方被发起,它们会同时向整个网络广播,节点先接收到哪个交易取决于它在网络的位置。

    读书笔记:

    1,由于网络传递有延迟,不同的节点可能会有不同的交易池。

    2,如果众多的节点对“哪一个交易应该被纳入区块链”产生分歧。这种情况被称为竞态条件(race condition)。

    3,由于每个节点默认保留最早接收到的交易,所以节点在网络上的位置就很重要。

    4,比特币网络里打包下一个区块的矿工会解决竞态条件问题。


    一叶之秋带你一分钟速读经典书籍,每天一分钟(只需阅读读书笔记部分),天天获新知。


    一叶之秋——非著名股票分析师

    CCTV证券资讯频道特邀分析师

    币乎,币问内测作者;区分认证分析师

    陀螺财经,币快报专栏作家

    《区块链编年史》 《区块链重塑未来》系列作者

    量价时空战法体系,一分钟读书俱乐部创始人

    公众号:区块链项目评测

    007er

    相关文章

      网友评论

        本文标题:一分钟读书俱乐部(四十八):《区块链技术驱动金融》比特币网络

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