首页 > 解决方案 > 如何使用web3的个人扩展签署个人消息?

问题描述

我正在用物质公司的 web3swift 制作一个 Dapp。我遇到的一种方法是 web3.Personal 扩展之一:

public func signPersonalMessage(message: Data, from: 
    web3swift.EthereumAddress, password: String = default) -> 
    Result.Result<Data, web3swift.Web3Error>

我正在尝试这样:

let web3 = Web3.InfuraMainnetWeb3()
let res = web3.personal.signPersonalMessage(message: msgHash!, 
    from: self.keystore.getAddress()!, password: password)

但我得到的总是一个 Web3ConnectionError。我猜一定没有正确的方式。那么,获取 web3.Personal 的可用实例并调用 signPersonalMessage 方法的任何提示?谢谢 :)

顺便说一句,Web3.Utils.signPersonalMessage 方法不是我要找的。

标签: iosethereumweb3swift

解决方案


请检查您是否有一个附加到 web3 对象的密钥库。如果没有本地密钥库,则将消息发送到远程节点进行签名,但 Infura 节点不包含任何私钥。

如果问题仍然存在,请 在 gitHub repo 上打开一个问题。

PS 我是 web3swift 的作者,所以将所有问题都保留在 github 上可以让我更好地响应


推荐阅读