区块广播:
· 比特币行情 | BTC现价4023.39美元
· FutureNet及其空壳公司被认为是金字塔骗局 华沙检察官已开始追查
· 以太坊未确认交易11071笔
· GitHub用户爆料:以太坊钱包MetaMask泄露地址和浏览动态,没切换到隐私模式会中招
· 前高盛合伙人Mike Novogratz:比特币将开启新一轮牛市
· 俄罗斯已从推迟的数字资产法案中删除了有关加密货币的内容
· 过去一周,EOS Dapp生态用户量最高
· BTC净流入资金近30亿人民币
· 交易所Cryptopia:在宣布遭遇黑客入侵24小时后存入的资金将无法追回
· 当前比特币全网未确认交易为1085笔
· 近7天比特币搜索指数整体环比上升2%
· 印度加密货币爱好者正加紧努力,以实现积极的监管
· 中国平安CEO:区块链等技术令平安集团核心金融业务实现稳健增长
· Scatter钱包存在可欺诈风险,用户需警惕授权恶意交易
· eToro收购丹麦区块链公司Firmo Network
· DragonEx平台钱包遭受黑客入侵,导致用户和平台的数字资产被盗
· 韩国区块链联合会声明:政府只看到虚拟货币消极面是错误的
· 报告:2018年下半年区块链等企业获得融资数量较多
· 巴比特晚间要闻一览
· 浙江金华警方破获特大虚拟货币交易诈骗案,诈骗金额达7000余万元
· 比特币行情 | BTC现价4023.39美元
· FutureNet及其空壳公司被认为是金字塔骗局 华沙检察官已开始追查
· 以太坊未确认交易11071笔
· GitHub用户爆料:以太坊钱包MetaMask泄露地址和浏览动态,没切换到隐私模式会中招
· 前高盛合伙人Mike Novogratz:比特币将开启新一轮牛市
· 俄罗斯已从推迟的数字资产法案中删除了有关加密货币的内容
· 过去一周,EOS Dapp生态用户量最高
· BTC净流入资金近30亿人民币
· 交易所Cryptopia:在宣布遭遇黑客入侵24小时后存入的资金将无法追回
· 当前比特币全网未确认交易为1085笔
· 近7天比特币搜索指数整体环比上升2%
· 印度加密货币爱好者正加紧努力,以实现积极的监管
· 中国平安CEO:区块链等技术令平安集团核心金融业务实现稳健增长
· Scatter钱包存在可欺诈风险,用户需警惕授权恶意交易
· eToro收购丹麦区块链公司Firmo Network
· DragonEx平台钱包遭受黑客入侵,导致用户和平台的数字资产被盗
· 韩国区块链联合会声明:政府只看到虚拟货币消极面是错误的
· 报告:2018年下半年区块链等企业获得融资数量较多
· 巴比特晚间要闻一览
· 浙江金华警方破获特大虚拟货币交易诈骗案,诈骗金额达7000余万元
· 比特币行情 | BTC现价4023.39美元
· FutureNet及其空壳公司被认为是金字塔骗局 华沙检察官已开始追查
· 以太坊未确认交易11071笔
· GitHub用户爆料:以太坊钱包MetaMask泄露地址和浏览动态,没切换到隐私模式会中招
· 前高盛合伙人Mike Novogratz:比特币将开启新一轮牛市
· 俄罗斯已从推迟的数字资产法案中删除了有关加密货币的内容
· 过去一周,EOS Dapp生态用户量最高
· BTC净流入资金近30亿人民币
· 交易所Cryptopia:在宣布遭遇黑客入侵24小时后存入的资金将无法追回
· 当前比特币全网未确认交易为1085笔
· 近7天比特币搜索指数整体环比上升2%
· 印度加密货币爱好者正加紧努力,以实现积极的监管
· 中国平安CEO:区块链等技术令平安集团核心金融业务实现稳健增长
· Scatter钱包存在可欺诈风险,用户需警惕授权恶意交易
· eToro收购丹麦区块链公司Firmo Network
· DragonEx平台钱包遭受黑客入侵,导致用户和平台的数字资产被盗
· 韩国区块链联合会声明:政府只看到虚拟货币消极面是错误的
· 报告:2018年下半年区块链等企业获得融资数量较多
· 巴比特晚间要闻一览
· 浙江金华警方破获特大虚拟货币交易诈骗案,诈骗金额达7000余万元
ChainNode 链节点
区块链教程
大咖分享
比特币开发指南 - P2P点对点网络

比特币开发指南 - P2P点对点网络

西西副船长船龄 4.7年来源
 17803  3

P2P网络

比特币网络使用简单的方法来执行对等节点的发现和节点间的通信。以下章节适用于全节点和SPV客户端,不同的是SPV通过布鲁姆过滤器(Bloom filters )执行块的发现。

对等节点发现

比特币的核心部分维护一个在启动时可以连接的对等节点列表。当一个完整的节点第一次启动时,它必须被自举(bootstrapped)到网络。这个过程如今在比特币的核心部分通过一个短名单上的DNS种子自动执行。选项-dnsseed可以被用来定义这种行为,默认的设置是1DNS请求返回一个可连接的IP地址列表。比特币客户端从那里可以连接到整个比特币网络。

自举的另外一种方法是使用参数-seednode=<ip>。通过这个参数,用户可以预先定义连接到哪个服务器,并在建立对等节点列表之后断开连接。另外一个方法是启动比特币核心配置-connect=<ip>参数来选择连接到哪些对等节点(未被配置的IP将不会被连接)添加对等节点的最后一种方法是通过参数-addnode=<ip>添加一个单独的节点到对等节点列表

自举过程完成后,节点向其对等节点发送一个包含其自身IP地址的addr消息。其对等的每个节点向它们自己的对等节点转发这个信息,以便进一步扩大连接池。

通过getpeerinfo命令可以查看某个节点所连接的对等节点及相关的数据

连接到对等节点

节点通过发送version消息连接到一个对等节点。消息version 包含了节点的版本信息、块信息和距离远程节点的时间。一旦这个消息被对等节点收到,它必须回复一个verack。如果它愿意建立对等关系,它发送自己的version消息

一旦建立对等关系,节点可以向远程节点发送getaddraddr消息来获得其它的对等节点信息。为了维持与对等节点的连接,节点默认情况下每30分钟内会给对等节点至少发送一次信息。如果超过90分钟没有收到回复,节点会认为连接已经断开。

 

块广播

在与对等节点建立连接,双方互发包含最新块哈希值的getblocks消息。如果某个节点坚信其拥有最新的块信息或者有更长的链,它将发送一个inv消息,其中包含至多500个最新块的哈希值,以此来表明它的链更长。收到的节点使用getdata来请求块的详细信息,而远程的节点通过命令block来发送这些信息。在500个块的信息被处理完之后,节点可以通过getblocks请求更多的块信息。这些块在被接收节点认证之后得到确认。

新块的确认也可通过矿工并发布的块来发现。其扩散过程和上述类似。通过之前的连接,新块以inv息发布出去,接收节点可以通过getdata请求这些块的详细信息

交易广播

和对等节点的交易通过inv息来实现。如果收到了getdata信息,那么交易通过发送tx实现。对等节点收到有效的交易的信息后会通过类似的方式将其扩散。如果交易的信息在一段时间内没有被放进块中,那么交易将被从内存池中清除,而原节点将重新发送交易信息。

行为不的节点

对于所有的广播,那些行为不端的节点(占用带宽和通过发布错误信息来浪费计算资源)将收到惩罚。如果一个节点惩罚分数超过门限值-banscore=<n>,它将被禁止加入网络若干秒。这个时间由参数-bantime=<n>定义,默认值是86400秒,即24小时。

警告

为了应对可能出现的bug和攻击,比特币开发者提供了比特币警告服务RSS。比特币用户通过命令getinfo可以查看针对其特定客户端版本的错误信息。

这些信息通过allert消息尽可能多扩散出去给每一个连接的对等节点。

错误信息采用特定的ECDSA私有密钥签名,只被极少数的开发者控制。

补充资源:如果你想了解各种消息的详细结构和所有的消息类别,可以参考比特币Wiki上的协议说明

  • 全部
  • 最佳
登录 账号发表你的看法,还没有账号?立即免费 注册
推荐教程
换一批