How to add Proof of Personhood in your Scroll dApp

Scroll is leading the way in building a scalable, secure, and open Layer 2 ecosystem using zero-knowledge rollups. As a zkEVM-based L2, it's fully compatible with Ethereum and designed to bring fast finality, low fees, and high throughput to developers building the next wave of onchain applications.

But when access is easy and cheap, Sybil attacks become a real threat. Whether you’re building a DeFi protocol, an identity credential platform, a social app, or even a gamified dApp, ensuring every wallet belongs to a unique human is essential.

That’s where Humanode Biomapper comes in. Biomapper allows your dApp on Scroll to verify uniqueness without KYC, identity documents, or violating user privacy. Just cryptographic proof that an EVM address = one real, living human.

Why Sybil Resistance Matters on Scroll

Scroll's low-fee, permissionless nature makes it ideal for experimentation, but it also opens the door to bots and multi-wallet farming:

  • Sybil-resistant airdrops: Prevent single users from claiming multiple rewards.
  • Credential systems: Ensure each SBT, badge, or attestation is tied to a real person.
  • DAO governance: One wallet = one vote only works when wallets are tied to real people.
  • Contests, games, and incentives: Reward real community participation, not bots.

Biomapper helps solve these issues with a private, secure biometric uniqueness layer, built to complement Scroll’s zero-knowledge vision.

Why Biomapper Fits Seamlessly into the Scroll Ecosystem

Biomapper is designed with privacy and cryptographic trust in mind:

  • Private Biometric Verification: Biometric scans are processed in an AMD SEV-SNP secured Confidential Virtual Machine (CVM). Even Humanode can't access them.
  • No Identity Exposure: There’s no need to know who a user is, only that they’re real and unique.
  • One Person = One Wallet: A user’s biometric data is linked to a single EVM wallet address per generation, and Sybil attacks are cryptographically blocked.

Biomapper doesn't require any centralized attestations or identity documents. Just liveness, uniqueness, and a wallet. That’s it.

Biomapper concepts to know before you integrate

  • Generations: Biomapper operates in fixed-time periods. Each generation resets all previous mappings.
  • Integration Flow: Users biomap once, bridge that mapping to Scroll, and use it across any dApp on Scroll that supports Biomapper.

How to integrate Biomapper in your Scroll dApp

Step 1: Install the Biomapper SDK

npm install --save @biomapper-sdk/core @biomapper-sdk/libraries @biomapper-sdk/events

Or using yarn:

yarn add @biomapper-sdk/core @biomapper-sdk/libraries @biomapper-sdk/events

Or with Foundry:

forge install humanode-network/biomapper-sdk

Step 2: Import Required Interfaces



// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

import { IBridgedBiomapperRead } from "@biomapper-sdk/core/IBridgedBiomapperRead.sol";

import { IBiomapperLogRead } from "@biomapper-sdk/core/IBiomapperLogRead.sol";

import { BiomapperLogLib } from "@biomapper-sdk/libraries/BiomapperLogLib.sol";

Step 3: Connect to the deployed Biomapper contract on Scroll

Biomapper is already deployed on Scroll. Here’s an example of how to connect and enforce uniqueness.

Example: Sybil-resistant SBT Minting

pragma solidity ^0.8.0;

import "@biomapper-sdk/core/IBridgedBiomapperRead.sol";

contract UniqueCredentialIssuer {

    IBridgedBiomapperRead public biomapper;

    mapping(address => bool) public hasMinted;

    constructor(address _biomapperAddress) {

        biomapper = IBridgedBiomapperRead(_biomapperAddress);

    }

    function mintCredential() external {

        require(biomapper.isBridgedUnique(msg.sender), "Not a unique human");

        require(!hasMinted[msg.sender], "Already minted");

        hasMinted[msg.sender] = true;

        // Call SBT minting logic here

    }

}

Step 4: Use Mocks for Local Testing

Use MockBridgedBiomapper for local development to simulate uniqueness checks.

function generationsBridgingTxPointsListItem(uint256 ptr) external view returns (GenerationBridgingTxPoint memory);

Refer to the SDK for full mock testing setup.

< a href="https://biomapper.hmnd.app" target="_blank">Verify Your Uniqueness< / a>

Once users are verified, they return to your dApp with proof of uniqueness.

Deployment and Rollout

  • Deploy your contracts on Scroll.
  • Reference the correct deployed Biomapper contract address.
  • Link your frontend to the Biomapper verification UI.
  • Test everything thoroughly before going live.

That’s it…

Scroll is scaling Ethereum with zero-knowledge tech, and Biomapper is here to make sure the humans on it are real. No KYC. No identity exposure. Just cryptographic proof of personhood.

Biomapper is now live on Scroll. Add it to your dApp to enable Sybil resistance and build with confidence.

Resources