参考:https://en.bitcoin.it/wiki/Satoshi_Client_Node_Discovery (GFW外)
The Satoshi client discovers the IP address and port of nodes in several different ways.
- Nodes discover their own external address by various methods.
- Nodes receive the callback address of remote nodes that connect to them.
- Nodes makes DNS request to receive IP addresses.
- Nodes can use addresses hard coded into the software.
- Nodes exchange addresses with other nodes.
- Nodes store addresses in a database and read that database on startup.
- Nodes can be provided addresses as command line arguments
- Nodes read addresses from a user provided text file on startup
1.节点用自己的方法区获取其他种子地址。(这点就跟以前的BT种子一样)
2.节点通过调用预设的回调函数,从回调函数获取种子地址。
3.节点通过挖矿专用的域名解析服务器来发现其他节点的地址。
4.有一个可靠的种子地址硬编码到程序里面去
5.可以从其他节点那里获得地址。
6.从数据库里面获取节点地址
7.通过启动矿机程序时通过命令行参数传入地址
8.从本地的初始化文本文件里获取其他节点的地址。
总结:
比特币的底层实现是区块链,而区块链在网络通讯运用的技术是p2p技术。
那么区块链的各个节点(节点由很多个状态模式,所以我们可以认为节点是 矿机,或者客户端)相互发现并构成一个通讯网络的协议也是属于P2P技术的范畴。
既然是P2P技术,无外乎是通过种子来进入这个网络的。
你可以把P2P形成的网络看出是一个QQ群,而群号或者群员的QQ就是进入这个网络的入口,只要能够获得其中一个QQ号我们就有办法加入这个QQ群。那么这个QQ号就是我们所谓的种子了。
不管是群号还是群员的QQ号,我们只要能够获得一个就能加入进去。而获得种子的手段有很多,作为老司机,我相信你有一百种办法获得种子。上面才提了8种,我们可以理解中本聪就是普通程序员,不是老司机,所以才想出8种
网友评论