As we are aware that blockchain is a decentralized application and it is tough to implement user identity mechansim in decentralized application so we use digital signature to verify the identity of a user. A digital signature comprise of a public key and encrypted message. A digital signature is issued by a trusted certificate authority and we can verify the digital signature from that authority. My question is so how can it make sure in blockchain network that a digitally signed transaction is done by an authentic blockchain user.

3 Answers 3


This article can be useful for your study and possibly give an answer for your query:



frozeman started a new ERC last month to discuss user identification:

The following describes standard functions for a unique identity for humans, groups, objects and machines. This identity can hold keys to sign actions (transactions, documents, logins, access, etc), and claims, which are attested from third parties (issuers) and self attested, as well as a proxy function to act directly on the blockchain.


And he talked about this during devcon3:

Fabian Vogelsteller (author of ERC20) will be talking about his new work on standard functions for a unique identity for humans and machines. https://www.youtube.com/watch?v=pkwYVagytuA&index=7&list=PLaM7G4Llrb7zOVvbMYqEXSYCFIoRql_vE


how does digital signature functionality in blockchain fulfill the requirement of user identification?

It doesn't.

the requirement of user identification

Who says that is a requirement?

Breaking it down:

Ethereum is a pseudo-anonymous system. I say "pseudo" to dispell possible assumptions about confidentiality on the network. Owing to meta-data leakage and other factors, true anonymity is a challenge to maintain and there is, therefore, no hard assurance that the network maintains anonymity.

However, the network has no requirement to associate signing keys with individuals, organizations or other actors, and doesn't.

an authentic blockchain user

What is an authentic blockchain user? From the perspective of the network, it is anyone or anything with knowledge of a private key. No one is checking "authenticity."


It is possible to design an business process and an application that addresses the linkage of signing keys to verified people and organizations. Those are not inherent to Ethereum itself.

Generally speaking, one can:

  • Restrict access to a contract based on whether or not an approving authority has granted access.
  • Develop a process for verifying who's who.
  • As part of that process, have the user cryptographically sign a message with their signing key, thereby proving that they have knowledge of it.
  • The verifier uses privileged access in the access-controlled contract to flip a bit that admits the ethereum address that the AML/KYC process was concerned with.

Simple example:

pragma solidity 0.7.6;

// SPDX-License-Identifier: UNLICENSED

contract KYCOnly {
    address public KYCVerifier;
    mapping(address => bool) public isAllowed;
    modifier onlyVerifier {
        require(msg.sender == KYCVerifier, "403");

    modifier onlyKYCedAccounts {
        require(isAllowed[msg.sender], "You need to KYC first. Talk to the KYC verifier.");
    constructor() {
        KYCVerifier = msg.sender; // contract deployer will have this priviledge
    function admittanceContract(address user, bool allowed) public onlyVerifier {
        isAllowed[user] = allowed;
    function doSomething() public onlyKYCedAccounts {
        // You only get here if the KYC Verifier lets you get here

Hope it helps.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.