Sign up

How the UniRep smart contract can help user and attester sign up.

User Signs Up

User signs up by providing an identity commitment. It also inserts a state leaf into the state tree.

function userSignUp(uint256 identityCommitment) external

If user signs up through an attester (msg.sender is a registered attester) and the attester sets the airdrop amount airdropAmount non-zero, the user will have a one non-zero leaf in his user state. The non-zero leaf is computed by

const hasSignedUp = 1
const airdroppedLeaf = hash(airdropPosRep, 0, 0, hasSignedUp)

Attester Signs up

Attester can sign up through attesterSignUp and attesterSignUpViaRelayer.

function attesterSignUp() external override

If an attester signs up through his wallet or another smart contract, UniRep smart contract will record the msg.sender and assign an attester ID to the address.

function attesterSignUpViaRelayer(
    address attester,
    bytes calldata signature
) external override

The attester can also sign up through another relayer, but he has to provide the address of the attester who wants to sign up and the signature. The attester signs over his's own address concatenated with this contract address, then the UniRep smart contract will verify the signature by verifySignature.

Last updated