venus-wallet 代码解析 笔记
- 必须开启一个wallet http服务才能产生公私钥,也就是说直接用cmd无法产生本地账户。不方便。
- 不依赖别的任何服务。可以通过websocket连接gateway,为其服务。wallet-event/listenevent.go:NewAPIRegisterHub()方法会连接gateway,为其提供WalletList和WalletSign两个接口服务。
- 通过build/builder.go文件的代码把storage/wallet.go中的wallet类注册到rpc server中为外部提供钱包的各种api服务。同时也是通过build/builder.go文件的代码把common/api_common.go中的Common类注册到rpc server中为外部提供各种auth服务。
- auth服务提供了外部用户访问wallet服务是的权限控制能力。
- 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呐??
版权声明
本文仅代表作者观点,不代表区块链技术网立场。
本文系作者授权本站发表,未经许可,不得转载。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。