I can provide an article in Metamask to validate the “Personal_sign” field.
Valid your personal login in the Metamask background
Metamask is a popular Ethereum wallet application that allows users to interact safely with the Ethereum network. One of its services is the ability to sign personal messages, which serves as a form of user identification.
In this article, we discuss how to enforce the “PERSONAL_SIGN” field in the Metamask wallpaper, ensuring that it accurately depict the user’s identity on the blockchain.
Understand the personal sign
The “PERSONAL_SIGN” field is used to check the authenticity of messages sent by users. Cryptography is produced with algorithm and can be used to confirm that the message has been sent to the desired recipient.
However, when Metamask describes personal messages in the client -side javascript code, it uses the “Ethers” directory, which provides a high level of interface for interaction with Ethereum contracts. Unfortunately, the Ethers library does not provide direct access to the underlying Blockchain metadata, including user identity.
Validation of personal sign using Blockchain metadata
In the wallpaper of the Metamask, we need to access the Blockchain metadata to validate the “PERSONAL_SIGN” field and check that it suits the expected signature. We can take the following steps to achieve this:
- Get the Blockchain metadata
: We need to obtain the metadata of Blockchain, including user identity, from the Ethereum network.
- Check the personal signal : Once we have received the blockchain data, we can compare the “Personal_sign” field with the expected signature.
Here is an example of how to do this in the Metamask background:
`Javascript
Const metamask = needed ('@metamask/client-api');
Const Ethers = Requirement ('Ethers');
// Get the metadat -block chain
Async function getblockchainetata () {
Const provider = waiting for metamask.getpovider ();
Const chain = wait for the service provider.getchainid ();
CONST BLOCKCHAINMETAATA = Wait the service provider.getchainide metatata (chainid);
// Get user identity from the blockchain of metadat
Const userids = [];
for (Const id in blockchainmetata.userids) {
Userids.Push (blockchainmetatata.userids [id]);
}
Return {userids};
}
// check your personal sign
ASYNC Function VerifyPersonalsign (user ID, expected personalsign) {
// Get the user's Ethereum account address
CONST ACCOARDADDRESS = Waiting for metamask.getaccounts () [0] .dress;
// Create a new EIP-711 signature object with the user ID and the expected personal indication
Const Signature = Ethers.utils.sigs.eip712signature (
“Personal sign”,
[Accountligaddress, Userids.join (',')],
Expected PPPSONALSIGN,
);
// Check the signature with the Ethereum EIP-712 directory
If (waiting for the signature.verify (blockchainmetadata.chainid) {
Return is true;
} Else {
Returns are false;
}
}
Example Use the case
In this example, we can create a new metamask wallpaper that query blockchain metadata and check the personal signal with the “Verifypersonalsign” function. This feature can be used to validate user identities on the client -side javascript code:
“ Javascript
Const metamask = needed (‘@metamask/client-api’);
Const Ethers = Requirement (‘Ethers’);
// Create a new Metamask backrest
Async function CreateBacend () {
Const provider = waiting for metamask.getpovider ();
// Get the metadat -block chain
CONST USERIDS = Waiting for GetBlockchain Method ();
// Check the personal sign of each user
Be isvalid = true;
Userids.Foreach ((userid, index) => {{
CONST Expected Personalsign = Ethers.utils.sigs.eip712signature (
“Personal sign”,
[Userid, userids.join (‘,’)],
Useride,
);
If (!