
Surgence, one of the leading marketing agencies in the web3 space, needed a custom smart contract for the Surgence Cohort Badge, a free-to-mint community badge designed around participation, recognition, and access.
The badge was created as a soulbound NFT, meaning it could be minted or revoked, but not transferred between wallets. This made it better suited for reputation, cohort membership, and participation history than a standard tradable NFT.
The goal was to give eligible community members a simple way to claim their badge while giving the Surgence team admin-level controls for eligibility, issuance, metadata updates, and revocation when needed.
The project needed a free mint experience without opening the contract to unlimited public claiming. Only approved wallets should be able to mint, each wallet should only be able to claim once, and the token should not become a tradable asset after minting.
Surgence also needed operational flexibility. Their team needed the ability to update the whitelist, issue badges manually, pause or activate minting, and revoke badges if required, all without redeploying the contract.
Because the badge was tied to community incentives and access to agency-related opportunities, transfer restrictions were important. The badge had to represent the original wallet's participation rather than something that could be sold or moved later.
The smart contract was written in Solidity using ERC721A for efficient NFT minting, OpenZeppelin Ownable for admin permissions, and Merkle proof verification for whitelist-gated claims.
The mint function checks whether minting is live, confirms that the wallet has not already claimed, verifies the wallet against the current Merkle root, and then mints the badge to the approved address.
To enforce the soulbound behavior, the contract overrides token transfer logic so tokens can only move during minting or burning. Normal wallet-to-wallet transfers are blocked, keeping the badge tied to the original recipient.
The contract also includes admin badge issuance, badge revocation through burning, metadata URI updates, mint state controls, whitelist root updates, and a public view function to check whether a wallet has already claimed.
The contract was structured around a non-transferable ERC721A badge model with clear owner permissions and a simple claim flow for eligible users.
Merkle proof verification was used to allow approved wallets to claim without storing a large whitelist directly on-chain.
Transfer hooks were overridden so badges could only be minted or burned, preventing secondary transfers between wallets.
Owner functions were added for manual badge issuance, mint activation, whitelist updates, metadata updates, and revocation.
The contract was prepared around a clean minting flow that could support the community campaign and track claimed wallets.
The badge contract supported 184 successful cohort badge mints for eligible community members.
The minting flow completed without failed transactions during the campaign.
The contract created a non-transferable badge model for community participation, access, and cohort recognition.
Placeholder quote from the founder about the Surgence Cohort Badge and the value of the smart contract implementation. Placeholder highlighted quote from the founder.