网络的情况可能会很复杂,在收到一份信息(packet)的时候,有不少东西是不肯定的:服务器
信息在互联网中传播,一般要经过不少中转节点,通过各类路径。除非是点对点的IP直连(IPv6),不然没法肯定信息是从哪里发出的,是否有中间人劫持。因此须要经过加密手段来保证信息的真实性,好比在微信聊天的时候,微信服务器会验证双方的身份,你收发的全部消息,都会被加密传输,这个过程是由微信的客户端和服务器来完成。信息被签名以后,咱们才能确保发出人的身份。在访问网站的时候也是同样,域名和证书绑定,DNS服务商有可能劫持一个域名,但没法得到对应的证书,因此HTTPS能够有效地解决DNS劫持。微信
信息内能够包含发出的时间,只要这个时间是可信的就行。但若是信息内没有时间戳,咱们是没法肯定这个信息在什么时候发出的,也没法肯定收到信息的顺序。在传输层使用TCP协议能够确保在一个连接内,内部全部信息的顺序是肯定的(packets有编号)。网络
可靠的信息传输,是指咱们至少要肯定这个信息的发出者,因此必定要有加密和验证手段。网站
其次,要保证这个消息能够发出去,不会半路就丢失,须要有广播机制,全世界最早进的网络节点来广播这个消息(只要消息量足够大,这个成本就可以忽略不及,参考电信系统)。加密
在时间上须要使延迟控制在可接受的范围内,保证信息的时效性不会受损。接口
最后,信息的顺序要能够肯定。ip
overlay 的网络是指创建在现有的 TCP/IP 协议构成的 Internet 之上的网络,属于应用层。Bitcoin的网络便是一种overlay的网络,使用Bitcoin网络的商家,不须要介入第三方的中介服务,只须要本身搭建一个SPV节点,链接到其它的节点(SPV or FullNode),就能够快速地获取到最新的区块头。理论上,SPV节点能够第一时间接收到全部的交易,其只须要保留和本身的地址有关的交易便可,而后经过默克尔树来验证交易是否存在于区块中。当区块体积变得很是大(1G以上),验证整个区块的工做只能由矿工的高级节点来完成,商家只须要保证本身的SPV节点链接到了足够多的矿工节点,确保可以第一时间接收到区块便可,这样就能减小关注了错误的分叉的状况出现。同时,能够加速交易的广播,防止被双花。域名
当IPv6得到普及后,客户和商家能够点对点地传播信息(天涯海角的两我的就像面对面同样讨价还价),每条信息别人不用知道,可是每条信息都有发出者的签名以做为证据。兼顾了隐私和诚信(假名而非匿名)。it
因此,商业友好型的SPV节点应该具备如下功能:class