logo
Install Learn Run a node Wallets Earn Develop Smart Contracts Use ID
  • Discourse
  • Installation

    • Downloads - Mainnet
    • Downloads - Testnet
    • Verification instructions
  • Learn

    • Learn about Concordium
      • Identities
        • Company identity creation
      • Accounts
      • Glossary of Concordium Terms
  • Concordium Wallets

    • Deciding between the wallets
      • Transactions overview
    • Wallet FAQs
      • Concordium Wallet for Android FAQ
      • Concordium Wallet for Web FAQ
    • Set up the Concordium Wallet for Web
    • Set up the Concordium Wallet for Android
    • Set up the Concordium Legacy Wallet
    • Create an identity
      • Change identity name
    • Create an account
      • Change account name
    • Send CCD
    • Connect dApps to wallets
      • Proofs and revealing information
    • Tokens in the wallet
    • Shield and unshield CCD on an account
    • Make a shielded transfer on an account
    • Make a backup of identities, accounts, and addresses
    • Export a private key
    • Recover your Wallet
    • Find and share your account address
    • Update your passcode and biometric settings
    • Inspect a release schedule
    • Manage address book
    • Desktop Wallet
      • Set up the Desktop Wallet
        • Set up the LEDGER device and install the Concordium LEDGER App
      • Use the Desktop Wallet
      • Transfer CCD with a schedule in Desktop Wallet
      • Apply a transaction log filter in the Desktop Wallet
      • Update the Desktop Wallet
      • Reset desktop wallet data
      • Shared accounts with multiple credentials in Desktop Wallet
        • Create a credentials file
        • Add credentials to an account
        • Create a multi-signature CCD transfer in the Desktop Wallet
        • Create a scheduled transfer in the Desktop Wallet
        • Sign a transaction proposal
        • View transaction proposals
  • Earn with Concordium

    • How to earn with Concordium
      • Bakers
      • Delegation
      • Delegation FAQ
    • Overview of the baker process
      • Baker management
      • Run a baker node on Windows
      • Run a baker node on macOS
      • Run a baker node on Ubuntu
      • Run a baker node on Docker
      • Become a baker using the Concordium Client
    • Baking in the Desktop Wallet
      • Add a baker account in the Desktop Wallet
      • Update baker keys in the Desktop Wallet
      • Remove a baker account
      • Update the staked amount
      • Update the restake settings
      • Open a baker pool in Desktop Wallet
      • Update a baker pool
    • Baking in Concordium Wallet for Android and Concordium Legacy Wallet
      • Add baker in Concordium Wallet for Android and Concordium Legacy Wallet
      • Change baker options
    • Delegation
      • Delegate to a baker pool or passive delegation
      • Update delegation to a baker pool or passive delegation
      • Remove delegation to a baker pool or passive delegation
  • Develop on Concordium

    • Developer resources
      • SDKs and APIs
      • dApp examples
      • Dashboards and Status Pages
      • Auxiliary Tools
      • gRPC V2 documentation
      • gRPC documentation
    • Run a node on Concordium
      • Ubuntu nodes
        • Run a node on a server with Ubuntu on Mainnet
        • Run a node on a server with Ubuntu on Testnet
        • Troubleshoot a node on a server with Ubuntu
      • MacOS nodes
        • Run and manage a node on macOS
        • Troubleshoot a node on MacOS
      • Windows nodes
        • Run and manage a node on Windows
        • Troubleshoot a node running on Windows
      • Docker nodes
        • Run a node with Docker
        • Troubleshoot a node on a server with Docker
      • Concordium Windows node runner service configuration
    • Concordium Client
    • Concordium Client transactions
    • Querying a node
  • Use Concordium's ID Layer

    • Use ID: Create proofs
    • The gallery with ID authentication
      • Writing the verifying backend
      • Interacting with a wallet
      • Setting up the front end
  • Smart Contracts v1

    • Introduction
      • Smart contract modules
      • Smart contract instances
      • Smart contract schemas
      • Developing smart contracts in Rust
    • Quick start guide
    • Best practices
      • Development best practices
    • Tutorials
      • Setup the development environment
      • Counter
      • PiggyBank
        • Writing the piggy bank smart contract
        • Testing the piggy bank smart contract
        • Deploying the piggy bank smart contract
        • Setting up a front end
      • wCCD
        • Understanding the wCCD token protocol
        • Interacting with the wCCD token protocol
        • Setting up the front end
        • Running your first full dApp
      • Mint an NFT
        • Upload the NFT
        • Intialize, build, and deploy the smart contract
        • Mint and transfer the NFT
      • Mint a semi-fungible token
        • Setup the development environment
        • Smart contract modifications
        • Mint and transfer semi-fungible token
      • NFT marketplace tutorial
        • Build and deploy the smart contract
      • eSealing
        • Exploring the eSealing dapp
    • Contract development guides
      • Install tools for development
      • Setting up a smart contract project
      • Compile a Rust smart contract module
      • Unit test a contract in Rust
      • Return custom errors
      • Locally simulate contract functions
      • Build a contract schema
      • Build using no_std
      • Fallback entrypoints
      • Make a contract upgradeable
    • On-chain guides
      • Deploy a smart contract module
      • Initialize a smart contract instance
      • Interact with a smart contract instance
      • Inspect a smart contract instance
      • Invoke a smart contract instance
    • References
      • Cryptographic primitives
      • Contract host functions
      • Local settings
      • References on-chain
      • Schema JSON representation
      • Simulation contexts
      • Rust contract examples (repo)
      • concordium-std
    • Ethereum developer onboarding
      • FAQs
    • Solana developer onboarding
      • Overview
      • FAQs
  • Smart Contracts v0

    • Introduction
      • Smart contract modules
      • Smart contract instances
      • Smart contract schemas
      • Developing smart contracts in Rust
    • Tutorials
      • Writing the piggy bank smart contract
      • Testing the piggy bank smart contract
    • Contract development guides
      • Install tools for development
      • Setting up a smart contract project
      • Compile a Rust smart contract module
      • Unit test a contract in Rust
      • Return custom errors
      • Locally simulate contract functions
      • Build a contract schema
      • Build using no_std
    • On-chain guides
      • Deploy a smart contract module
      • Initialize a smart contract instance
      • Interact with a smart contract instance
      • Inspect a smart contract instance
    • References
      • Schema JSON representation
      • Simulation contexts
      • Contract host functions
      • References on-chain
      • Local settings
      • Rust contract examples (repo)
      • concordium-std
  • Resources

    • CCDScan
      • CCDScan Blocks overview
      • CCDScan Transactions overview
      • CCDScan Accounts overview
      • CCDScan Staking overview
      • CCDScan Nodes overview
    • Release notes - Mainnet
    • Release Notes - Testnet
    • Testnet reset
      • Node migration after Testnet reset
      • Wallet migration after Testnet reset
      • Client migration after Testnet reset
    • Legal
      • Terms and Conditions for Concordium Desktop Wallet
      • Terms and Conditions for Concordium Wallet for Mobile
      • Terms and Conditions for Concordium Legacy Wallet (previously Concordium Mobile Wallet)
      • Terms and Conditions for Concordium Wallet for Web
      • Third Party Licenses
      • Third-party Software and Hardware Notices
      • Concordium Wallet for Web Third Party Licenses
      • Concordium Desktop Wallet Third Party Licenses
    • Contact Anonymity Revokers and Identity Providers

The gallery with ID authentication#

In this tutorial, you will learn how to write a gallery which requires the user to prove something using their identity to access the images on the site. The gallery consists of a basic React web front end example that displays the images and communicates with a wallet and a Rust backend that can verify the proofs given by the wallet.

In the first part, you will learn how the backend works.

In the second part, you will learn about the front end that interacts with the browser wallet and backend.

In the third part, you will learn how to build and run the example.

Warning

It is suggested to read about creating proofs and the reader is assumed to have basic knowledge of Rust development and some experience with web front end development.

To start the tutorial click here.

previous

Use ID: Create proofs

next

Writing the verifying backend

Copyright 2021 - 2023, Concordium Software ApS