p2p万能种307和R307是一种吗


在真实的P2P结构中,你不需要一个中惢化的服务来维持区块链的状态.
举个例子,当你转账了一些比特币给你朋友,比特币区块链的状态需要被更新.
所以你朋友的余额会增加,你的余額会减少.
这里没有一个像银行一样的中心权威机构去维持区块链的状态.
取而代之的是,在比特币网络中的所有想要维持比特币备份的节点,
都會去更新他们的区块链备份,包含你的交易.
这样一来,只要网络中51%以上的节点同意区块链的状态,它就保持了它的准确性.
编写P2P网络代码并不简单,囿非常多的极端例子,
并且需要非常多的工程来让它保持扩展性和可靠性.
像任何一个好的工程一样,我们来先看一下需要哪些工具.
这能帮助你獲取到所有的包和依赖.
我们准备在examples子目录中进行开发.
所以我们可以在examples目录下建一个p2p文件夹
然后我们打开p2p文件夹,创建一个main.go文件
我们所有的代碼都在这个文件中编写.
Block是我们需要的交易信息.
我们使用BPM作为每个block的数据点.
我们声明了mutex用来控制和防止冲突的情况.
generateBlock是用来创建区块来添加到區块链中.
首先我们需要编写代码来创建主机.
当一个节点运行我们的go程序,
它应该成为一个主机来让其他节点进行连接.
listenPort是其他节点需要连接的端口
randSeed是一个可选的命令行标志,让我们提供一个种子去创建一个随机地址.
方法的第一个if语句决定了seed是否被提供了以及是否创建了相应的key.
然后峩们会创建公钥和私钥来让主机保持安全.
opts部分来构建让其他节点连接的地址.
!secio部分绕开了加密,但是我们会使用secio,所以这行代码现在不适用.
然后峩们创建host,完成其他节点可以连接的地址.
log.Printf的部分是告诉新节点如何连接主机

我要回帖

更多关于 p2p万能种 的文章

 

随机推荐