说明
本人是刚学 libp2p, 这些博客 不能当作是教程或者是引导
。
也许会有大量错误,欢迎大佬指导。
此博客源码 imjoel/go-libp2p-learn
搭建一个简单的穿透服务
搭建穿透服务一共需要3步,
- 生成一个节点ID
- 创建一个 Host
- 等待连接
1. 生成节点ID 不用多说,github.com/libp2p/go-libp2p-examples 上有示例, 下面是我将目标代码整合成了一个方法
import (
crand "crypto/rand"
"github.com/libp2p/go-libp2p-core/crypto"
"io"
mrand "math/rand"
)
func generateIdentity(seed int64) (identity crypto.PrivKey, err error) {
var r io.Reader
if seed == 0 {
r = crand.Reader
} else {
r = mrand.New(mrand.NewSource(seed))
}
identity, _, err = crypto.GenerateKeyPairWithReader(crypto.RSA, 2048, r)
return identity, err
}
2. 要创建一个 Host 很简单,如果要创建一个 relay host
只需要指定 OptActive
和 OptHop
选项即可. 下面是我抽出来的创建 relay host
的函数
import (