蓝盟IT外包小贴士,来喽!
比特币使用的是P2P (对等)网络。 这个P2P不是P2P,这里是对等网络体系结构,不是人到人的借款模型。
P2P是指同一网络中的所有计算机彼此对等,各节点共同提供网络服务,不存在特别的节点。 每个网络节点都以平面拓扑相互连接。 在P2P网络中不存在服务侧、集中式服务、分层结构。
传统的网络结构是client-server的模型,所有的客户端都与server交换信息,如果server断开,客户端就没用了。
在P2P网络中,没有服务器的概念,每个节点都充当服务器。 相反,P2P网络在稳定性方面比C-S架构的系统稳定得多。
既然是P2P网络,问题就在于这个P2P网络是如何构建的?节点之间是如何发现的?
做过P2P下载的学生应该问种子的概念,该种子中保存着其他活跃的节点的地址。 通过下载种子,就可以连接对应的节点.
每个节点保存最近连接或活跃的节点,形成了巨大的P2P网络。
同样,比特币的P2P网络也是如此。
新节点是如何发现网络上的对等节点的呢? 虽然比特币网络没有特别的节点,但客户端会保持长期稳定运行的节点列表。 这样的节点被称为“种子节点”
节点必须继续两项工作,即在现有连接丢失时检测新节点,并在其他节点启动时帮助新节点。
我们以前介绍过,比特币世界没有帐户和馀地,只有分散在区块链的UTXO(Unspent Transaction Outputs )。
那么,如果想验证交易的话,需要从历史交易中寻找与该交易相关的所有交易,进行完全全面的验证。
这种问题在所有历史下载后需要数百g的硬盘容量,移动电话和其他轻量的客户端是难以想象的。
SPV出现了。 SPV的全名是“简单支付验证”,称为“简单认证支付”。
虽然SPV保存数据块链的标头而不是整个数据块链,但是因为每个数据块链只有80个字节的标头,所以下载和保存所有数据块标头并不太大。
文/上海蓝盟 IT外包专家