Metamask: Is it possible to validate the Metamask personal_sign in the back end?
I can give an article about the approval of the personal_Sign field in Metamask.
Valid Personal Sign in Metamk Back
Metamk is a popular Ethereum wallet application that allows users to interact safely with the Ethereum Network. One of its characteristics is the ability to sign personal messages that serve as the type of user identification.
In this article, we will discuss how to approve the Metamask “Personign_Sign” setback field, ensuring that the user’s identity in the block chain precisely reflects.
Understand the personal sign
Country personal_signIt is used to verify the authenticity of the messages sent by users. It is generated using a cryptographic algorithm and can be used to confirm that the report has been sent by the planned recipient.
However, when Metamk signs personal reports in the Customer JavaScript code, use the 'Esters' library, which provides a high level interface for interaction with Ethereum contracts. Unfortunately, the Ether Library does not provide direct access to underlying blockchain metadata, including user's identity.
Personal sign approval using Metadatus Blockchain
To confirm the personal background_Sign, we need to reach Blockchain metadata and verify that it is in line with the expected firm. We can use the following steps to achieve this:
1
Obtain blockchain metadatus
: We need to obtain blockchain metadata from the Ethereum network, including user's identity.
- Check the personal brand : When we have blockchain metadata, we can compare the "personal_Sign" field with the expected firm.
Here is an example of how you can present it to the back of Metamasca:
JavaScript
Const metamk = ask ('@metamk/client-opi');
Const ether = ask (Éter ');
// Obtain blockchain metadata
Function async getblockChainmetadata () {
Const a provider = wait metamk.getprovider ();
Const chaind = expect a service provider.Getchainid ();
CONST BLOCKCHAINMETADATA = Wait a service provider .Getchainidadadata (Chainid);
// Obtain user identity of blockchain metadata
Const userdomeids = [];
for (const id blockchainmetadata.userids) {
Userids.push (blockchainmetadata.userids [ID]);
}
return {userids};
}
// Verify your personal brand
ASYNC VERIFYPEERSIGNS (Userids, Personalized for Expected) function {
// Obtain the user's Ethereum account address
Constcidedress = wait metamk.getacc - [) [0] .address;
// Create a new EIP-711 signature object with the user ID and the estimated personal sign
Const sign signing = ethhers.utils.sigs.eip712signature (
"Personal sign",
[ACCOUNDDRESS, Userids.join (',')],
Designed, Capersonalsign,
);
// Verify the firm using the EPHEREUM EIP-712 Library
If (waiting signature.verify (blockchainmetadata.chainid)) {
return the truth;
} Others {
return false;
}
}
Example of use of use
In this example, we can create a new back of MetamSk, which recovers blockchain metadata and verifies the personal brand using the verifypersign function. Then we can use this function to confirm the user's identity in the Customer's lateral JavaScript code:
` JavaScript
Const metamk = ask (‘@metamk/client-opi’);
Const ether = ask (Éter ‘);
// Create a new Metamask Backend
ASYNC CREATEBackEnd Function () {
Const a provider = wait metamk.getprovider ();
// Obtain blockchain metadata
Const userids = wait getblockChain metadata ();
// Verify the personal sign of each user
Allow Isvalid = True;
Userids.Foreach ((Userid, Index) => {
Constant was expected
“Personal sign”,
[Userid, Userids.join (‘,’)],
User ID,
);
Yeah (!