Trước tiên, ta cần tạo ra một signer thông qua constructor của Wallet như sau:

const signer = new ethers.Wallet(PRIVATE_KEY as string, provider)

Sau đó ta có thể gọi phương thức signMessage để thực hiện việc ký thông điệp:

const message = "Hello World!"
const signature = await signer.signMessage(message)

Để xác thực văn bản đã ký, ta cần dùng hàm verifyMessage:

console.assert(verifyMessage(message, signature) === signer.address)

Hàm hoàn chỉnh:

async function signing() {
  const signer = new ethers.Wallet(PRIVATE_KEY as string, provider)
 
  const message = "Hello World!"
  const signature = await signer.signMessage(message)
 
  console.assert(verifyMessage(message, signature) === signer.address) // Pass
  console.assert(verifyMessage("Hello", signature) === signer.address) // Fail
}
signing()