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, ",&#