# dApp onboards a user with VCs

There are 3 protocols that are used in these interactions:

* Wallet - dApp: it is the synchronization between a crypto wallet and a dApp. The wallet must confirm that it owns the private key associated with its address by signing a payload. We use Beacon.
* Wallet - Verifier: this is the protocol that makes it possible to produce a VP and then transfer it to the verifier from the wallet. We use verifiable presentation request.
* Verifier - Application : we use OpenID authorization code flow with PKCE.

<figure><img src="https://sandbox-doc.readthedocs.io/en/latest/_images/dapp_onboard_user.png" alt=""><figcaption></figcaption></figure>
