Noise是一个用Go写的去中心化的P2P网络(A decentralized P2P networking stack written in Go.)
是perlin公司开发的一个基础P2P网络,Perlin平台由三个主要部分组成: 一个算力资源加密证明机制,一个基于DAG的分布式账本,以及一个高度并行的盲计算框架。他们的白皮书刚刚发布,相关代码只有Noise项目,其他还未完成。其代币目前基于ERC20,也基本没上交易所。
实现的主要功能:
- 通过对等体之间的实时双向流传输。基于KCP / TCP和Protobufs。
- NAT遍历/自动端口转发(NAT-PMP,UPnP)。
- 用于对等身份和签名的NaCL / Ed25519方案。
- Kademlia受DHT启发的节点发现。
- 请求/响应和消息传递RPC。
- 使用glog记录日志。
- 插件系统
项目提供的测试效果图:

下面看主要代码。
func main() {
flag.Set("logtostderr", "true")
portFlag := flag.Int("port", 3000, "port to listen to")
hostFlag := flag.String("host", "localhost", "host to listen to")
protocolFlag := flag.String("protocol", "tcp", "protocol to use (kcp/tcp)")
peersFlag := flag.String("peers", "", "peers to connect to")
flag.Parse() //解析启动参数
port := uint16(*portFlag)
host := *hostFlag
protocol := *protocolFlag
peers := strings.Split(*peersFlag, ",")
keys := ed25519.RandomKeyPair() //生产ed25519的公私钥
glog.Infof("Private Key: %s", keys.PrivateKe

本文详细分析了Noise,一个用Go编写的去中心化P2P网络项目,涉及实时双向流传输、NAT遍历、节点发现、身份验证等功能。文章通过discovery.Plugin、ChatPlugin等关键代码部分的解析,展示了Noise如何实现代理身份验证、Kademlia DHT节点发现和RPC通信。同时,介绍了项目构建网络、监听和广播消息的流程。
最低0.47元/天 解锁文章
2079

被折叠的 条评论
为什么被折叠?



