Waves are ERC-721 compliant, meaning that the badges issued to users are NFTs that can be viewed and transferred on any NFT marketplace. The ownership of the contract is set to the deployer, so the project can have advanced on-chain customization with their campaign.
Waves implement a signature verification to restrict the access to the
claim()function only to addresses that satisfy the correct requirements.
When a user tries to claim with Tide frontend, our verifier runs the checks required by the campaign on its wallet and, if all of them are satisfied, signs a message with the claim info and returns it to the user.
The user can then use this signed message as a receipt to claim its badge by calling the claim() function on our contract: when called, the function checks the validity on the signature and mints the NFT to the user.
Having this setup for minting, allows Tide to manage access by integrating off-chain events (e.g., Twitter or Discord interactions) or off-chain listeners (e.g., TheGraph) while giving users full ownership of their credentials.
It also allows projects to have a suite of composable requirements to grant access to the campaigns, while keeping a gas-efficient smart contract.