upgrade/public/sign.js

83 lines
1.9 KiB
JavaScript

import "./styles.css";
import { ethers } from "ethers";
import { SigningKey } from "@ethersproject/signing-key";
import { TypedDataUtils } from "ethers-eip712";
const typedData = {
types: {
EIP712Domain: [
{
name: "name",
type: "string"
},
{
name: "version",
type: "string"
},
{
name: "verifyingContract",
type: "address"
}
],
set: [
{
name: "Action",
type: "string"
},
{
name: "Account",
type: "address"
},
{
name: "MekaCount",
type: "uint256"
},
{
name: "Timestamp",
type: "uint256"
}
]
},
primaryType: "set",
domain: {
name: "MekaVerse",
version: "1.0",
verifyingContract: "0xcdA2B1ec7819Ca1287773C1C90e09b2D2AAa41A4"
},
message: {
Action: "Mekaverse - Registration",
Account: "0xd45E8Cbb5A04C5e98CEb29d8ad9147Ee0D0F3Ec2",
MekaCount: 1,
Timestamp: 1633467780
}
};
const main = async () => {
const digest = TypedDataUtils.encodeDigest(typedData);
const digestHex = ethers.utils.hexlify(digest);
await window.ethereum.enable();
const provider = new ethers.providers.Web3Provider(window.ethereum);
const signer = provider.getSigner();
const myAccount = await signer.getAddress();
const signature = await signer.provider.send("eth_signTypedData_v4", [
myAccount,
JSON.stringify(typedData)
]);
document.getElementById("app").innerHTML = `Signature: ${signature}`;
// const pk =
// "0xff1bc01d7c7afd2a552c0a0ff89dea527484fb97a143469eaaa941b6b4536104";
// const signingKey = new SigningKey(pk);
// let signature = signingKey.signDigest(digest);
// const attestation = `${signature.r.substring(2)}${signature.s.substring(
// 2
// )}${signature.v.toString(16)}`;
// document.getElementById("app").innerHTML = `Attestation: ${attestation}`;
};
main();