83 lines
1.9 KiB
JavaScript
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();
|