首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在geth代码文件中,生成固定的enode id的实现在哪里?

在geth代码文件中,生成固定的enode id的实现在哪里?
EN

Ethereum用户
提问于 2018-07-29 14:04:32
回答 1查看 200关注 0票数 1

生成enode id的过程似乎是:“-> Generate -> add The IP and port”。如果我重新启动计算机,节点id也会发生变化。如果我想修复这个节点id (比如引导键),我该如何做,这个过程的实现在哪里?

EN

回答 1

Ethereum用户

回答已采纳

发布于 2018-07-29 14:45:13

我建议你看看node/node.go

代码语言:javascript
复制
// Start create a live P2P node and starts running it.
func (n *Node) Start() error {
    n.lock.Lock()
    defer n.lock.Unlock()

    // Short circuit if the node's already running
    if n.server != nil {
        return ErrNodeRunning
    }
    if err := n.openDataDir(); err != nil {
        return err
    }

    // Initialize the p2p server. This creates the node key and
    // discovery databases.
    n.serverConfig = n.config.P2P
    n.serverConfig.PrivateKey = n.config.NodeKey()
    n.serverConfig.Name = n.config.NodeName()
    n.serverConfig.Logger = n.log
    if n.serverConfig.StaticNodes == nil {
        n.serverConfig.StaticNodes = n.config.StaticNodes()
    }
    if n.serverConfig.TrustedNodes == nil {
        n.serverConfig.TrustedNodes = n.config.TrustedNodes()
    }
    if n.serverConfig.NodeDatabase == "" {
        n.serverConfig.NodeDatabase = n.config.NodeDB()
    }
    running := &p2p.Server{Config: n.serverConfig}
    n.log.Info("Starting peer-to-peer node", "instance", n.serverConfig.Name)

还有cmd/bootnode/main.go

代码语言:javascript
复制
case *genKey != "":
    nodeKey, err = crypto.GenerateKey()
    if err != nil {
        utils.Fatalf("could not generate key: %v", err)
    }
    if err = crypto.SaveECDSA(*genKey, nodeKey); err != nil {
        utils.Fatalf("%v", err)
    }
    return
票数 0
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/55399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档