<template>
<div>
<button @click="connectWallet">连接钱包</button>
<button @click="signMessage">签名</button>
</div>
</template>
<script>
import Web3 from 'web3';
export default {
data() {
return {
web3: null,
connected: false,
message: 'This is a test message',
signature: '',
};
},
methods: {
async connectWallet() {
if (!window.ethereum) {
console.warn("请安装MetaMask");
return;
}
try {
await window.ethereum.request({ method: 'eth_requestAccounts' });
this.web3 = await new Web3(window.ethereum);
this.connected = true;
console.log("已连接钱包");
} catch (error) {
console.error(error);
}
},
async signMessage() {
if (!this.connected) {
console.warn("请先连接到钱包");
return;
}
const address = (await this.web3.eth.getAccounts())[0];
console.log(address);
const signature = await this.web3.eth.personal.sign(this.message, address);
this.signature = signature;
console.log(signature);
},
},
};
</script>