venus-wallet 代码解析 笔记

必须开启一个wallethttp服务才能产生公私钥,也就是说直接用cmd无法产生本地账户。不方便。不依赖别的任何服务。可以通过websocket连接gateway,为其服务。wallet-event/listenevent.go:NewAPIRegisterHub()方法会连接gateway,

  1. 必须开启一个wallet http服务才能产生公私钥,也就是说直接用cmd无法产生本地账户。不方便。
  2. 不依赖别的任何服务。可以通过websocket连接gateway,为其服务。wallet-event/listenevent.go:NewAPIRegisterHub()方法会连接gateway,为其提供WalletList和WalletSign两个接口服务。
  3. 通过build/builder.go文件的代码把storage/wallet.go中的wallet类注册到rpc server中为外部提供钱包的各种api服务。同时也是通过build/builder.go文件的代码把common/api_common.go中的Common类注册到rpc server中为外部提供各种auth服务。
  4. auth服务提供了外部用户访问wallet服务是的权限控制能力。
  5. storage/wallet.go:wallet类进行walletnew方法调用时,会通过w.bus.Publish("wallet:add_address", addr)通知gateway。通知方法是
    _ = bus.Subscribe("wallet:add_address", func(addr address.Address) {  
    log.Infof("wallet add address %s", addr)  
    err := apiRegister.AddNewAddress(context.TODO(), []address.Address{addr})  
    if err != nil {  
      log.Errorf("cannot add address %s, %s", addr, err.Error())  
    }  
    })

    但是为什么要通知gateway呐??

点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
杜满想Elvin
杜满想Elvin
老程序员,区块链架构师