我正在尝试使用我的DAPP的wallet connect签名和验证消息。到目前为止,我已经尝试使用以太和web3来包装WalletConnect,并且在移动设备上使用的是metamask和trust wallet应用程序。到目前为止,这些方法都无效。
function do_this_cron() {
file_put_contents('/home/vagrant/Code/wordpress/test.log', "schedule event run\n", FILE_APPEND);
}
add_action( 'my_new_event', 'do_this_cron' );
$time = time() + MINUTE_IN_SECONDS * 2;
$ret = wp_schedule_single_event($time, 'my_new_event');
var_dump($ret) // always returns true
您可以在此处找到一些代码沙箱
此链接用于ethersjs https://codesandbox.io/s/peaceful-cdn-jtkvb?file=/src/App.vue
此链接(适用于web3) https://codesandbox.io/s/objective-franklin-gkr3s?file=/src/App.vue
任何帮助将不胜感激!
答案 0 :(得分:1)
对于WalletConnectProvider
,我有同样的问题,但它适用于低级连接器调用:
var rawMessage = "Hello World";
var rawMessageLength = new Blob([rawMessage]).size
var message = ethers.utils.toUtf8Bytes("\x19Ethereum Signed Message:\n" + rawMessageLength + rawMessage)
message = ethers.utils.keccak256(message)
var params = [
await this.signer.getAddress(),
message
]
this.signature = await this.wc.connector.signMessage(params);
this.verified = ethers.utils.verifyMessage(rawMessage, this.signature);
this.wc
是对walletConnectProvider
答案 1 :(得分:1)
如@Vyacheslav 所述,不是调用较低级别的连接器调用,另一种选择是直接调用personal_sign。
// configure web3, e.g. with web3Modal or in your case WalletConnect
const web3 = await web3Modal.connect();
const provider = new providers.Web3Provider(web3);
const signer = provider.getSigner()
const address = await signer.getAddress();
let signedMessage;
if (web3.wc) {
signedMessage = await provider.send(
'personal_sign',
[ ethers.utils.hexlify(ethers.utils.toUtf8Bytes(rawMessage)), address.toLowerCase() ]
);
}
else {
signedMessage = await signer.signMessage(rawMessage)
}
const verified = ethers.utils.verifyMessage(rawMessage, signedMessage);