Seeking Advice on Credential Delivery and Wallet Requirements

Thank you very much for releasing such an interesting product as open source.

I have tried out cert‑issuer v3.

From the perspective of putting this product into practical use, I have two questions about how to integrate it with a wallet, so I’ve opened this ticket:

  • Protocol for delivering issued credentials to the Recipient
    Do you currently have any recommendations or assumptions about how to hand off the issued credential to the recipient?
    I’m considering combining it with a protocol such as OpenID’s Verifiable Credential Issuance or DIF’s WACI; if you have any thoughts or guidance on that, or are aware of any existing attempts, I would greatly appreciate it.

  • Does the Recipient need a pre‑existing crypto wallet like MetaMask?
    Or would it be sufficient for them to have something like an “identity wallet” whose sole purpose is to store credentials?
    I’m considering generating the public key shown in the example below within the recipient’s own identity wallet.
    cert-issuer/examples/data-testnet/unsigned_certificates/verifiable-credential.json at 827e02f41f42f02f3ca61c7659b6e59ffe0bfe1f · blockchain-certificates/cert-issuer · GitHub

Thank you for your time and attention. Any insights would be greatly appreciated.

Hi @ozk,

Thanks for your interest and questions.

At this moment, and for the foreseeable future, Blockcerts does not enforce nor recommend a specific delivery channel, so it would be up to the implementer to chose whichever solution fits their system the best. Any channel which is made for delivering VCs is fit I believe, but some implementers use things as simple as emails too.

I wasn’t part of the inception of the project and the choice of an HD wallet so my knowledge is not thorough.

A pre-existing wallet is not a condition to be a recipient of a blockcerts. Technically we only expect a public key from the recipient, and it can be a blockchain address or a did for instance. No transaction is ever made directly towards the recipient, the public key is an identifier of the recipient.
The transaction in itself is from the issuer to the issuer, and is just a way to imprint onto the blockchain the data from the issuance (merkle root).

Blockcerts wallet is made so it can hold the Blockcerts credentials, and Blockcerts v3 offers a lot of flexibility to be “just” a Verifiable Credentials anchored on the Blockchain (Blockcerts also allows off chain signatures: EcdsaSecp256k1Signature2019, Eddsa25519Signature2020, Ecdsa-sd-2023 are also supported, although we don’t provide signature libraries as they already exist open source from other vendors, only verification). The wallet is based of an HD wallet, and generates a seed phrase for the user as well as a public key under the form of a Bitcoin address (even if the issuance is made on the ETH or any other chain, again the address acts as the recipient’s identifier).

Hope that helps

1 Like