diff --git a/mpc-core-kit-web/implicit-flow-examples/mpc-core-kit-popup-flow-example/package-lock.json b/mpc-core-kit-web/implicit-flow-examples/mpc-core-kit-popup-flow-example/package-lock.json index a29e287e..96f9e380 100644 --- a/mpc-core-kit-web/implicit-flow-examples/mpc-core-kit-popup-flow-example/package-lock.json +++ b/mpc-core-kit-web/implicit-flow-examples/mpc-core-kit-popup-flow-example/package-lock.json @@ -15,6 +15,7 @@ "@web3auth/mpc-core-kit": "3.2.4", "bn.js": "^5.2.1", "eccrypto": "^1.1.6", + "ethers": "^6.13.4", "firebase": "^10.14.0", "jsrsasign": "^10.8.6", "react": "^18.3.1", @@ -5359,7 +5360,6 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "license": "MIT", "dependencies": { "@adraffy/ens-normalize": "1.10.1", "@noble/curves": "1.2.0", diff --git a/mpc-core-kit-web/implicit-flow-examples/mpc-core-kit-popup-flow-example/package.json b/mpc-core-kit-web/implicit-flow-examples/mpc-core-kit-popup-flow-example/package.json index 4cd3ae5f..24ea0f1b 100644 --- a/mpc-core-kit-web/implicit-flow-examples/mpc-core-kit-popup-flow-example/package.json +++ b/mpc-core-kit-web/implicit-flow-examples/mpc-core-kit-popup-flow-example/package.json @@ -10,6 +10,7 @@ "@web3auth/mpc-core-kit": "3.2.4", "bn.js": "^5.2.1", "eccrypto": "^1.1.6", + "ethers": "^6.13.4", "firebase": "^10.14.0", "jsrsasign": "^10.8.6", "react": "^18.3.1", diff --git a/mpc-core-kit-web/implicit-flow-examples/mpc-core-kit-popup-flow-example/src/App.tsx b/mpc-core-kit-web/implicit-flow-examples/mpc-core-kit-popup-flow-example/src/App.tsx index 73d12ec2..eab93479 100644 --- a/mpc-core-kit-web/implicit-flow-examples/mpc-core-kit-popup-flow-example/src/App.tsx +++ b/mpc-core-kit-web/implicit-flow-examples/mpc-core-kit-popup-flow-example/src/App.tsx @@ -25,6 +25,7 @@ import { initializeApp } from "firebase/app"; import { getAuth, signInWithEmailAndPassword } from "firebase/auth"; import "./App.css"; +import { ethers, TypedDataEncoder } from "ethers"; // IMP START - SDK Initialization // IMP START - Dashboard Registration @@ -324,6 +325,60 @@ function App() { ); uiConsole(signedMessage); }; + + + const signTypedData = async () => { + const ethersProvider = new ethers.BrowserProvider(evmProvider); + const signer = await ethersProvider.getSigner(); + + // All properties on a domain are optional + const domain = { + // name: "Ether Mail", + // version: "1", + // chainId: 1, + // verifyingContract: "0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC", + }; + + // The named list of all type definitions + const types = { + Person: [ + { name: "name", type: "string" }, + { name: "wallet", type: "address" }, + ], + Mail: [ + { name: "from", type: "Person" }, + { name: "to", type: "Person" }, + { name: "contents", type: "string" }, + ], + }; + + // The data to sign + const value = { + from: { + name: "Cow", + wallet: "0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826", + }, + to: { + name: "Bob", + wallet: "0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB", + }, + contents: "Hello, Bob!", + }; + + const payload = TypedDataEncoder.getPayload(domain, types, value); + + // delete payload.types.EIP712Domain; + + // console.log("payload", JSON.stringify(payload)); + // const result = await ethersProvider.send("eth_signTypedData_v4", [signer.address.toLowerCase(), JSON.stringify(payload)]); + // console.log("result", result); + + const web3 = new Web3(evmProvider); + const signedMessage = await web3.eth.signTypedData( (await web3.eth.getAccounts())[0], payload); + uiConsole(signedMessage); + const signedTypedData = await signer.signTypedData(domain, types, value); + uiConsole(signedTypedData); + }; // IMP END - Blockchain Calls const criticalResetAccount = async (): Promise => { @@ -389,6 +444,11 @@ function App() { Sign Message +
+ +