Skip to main content
Version: v1.2

SignUpTokenGatekeeper

This contract allows to gatekeep MACI signups by requiring new voters to own a certain ERC721 token

token​

contract SignUpToken token

the reference to the SignUpToken contract

maci​

address maci

the reference to the MACI contract

registeredTokenIds​

mapping(uint256 => bool) registeredTokenIds

a mapping of tokenIds to whether they have been used to sign up

AlreadyRegistered​

error AlreadyRegistered()

custom errors

NotTokenOwner​

error NotTokenOwner()

OnlyMACI​

error OnlyMACI()

constructor​

constructor(contract SignUpToken _token) public payable

creates a new SignUpTokenGatekeeper

Parameters​

NameTypeDescription
_tokencontract SignUpTokenthe address of the SignUpToken contract

setMaciInstance​

function setMaciInstance(address _maci) public

Adds an uninitialised MACI instance to allow for token signups

Parameters​

NameTypeDescription
_maciaddressThe MACI contract interface to be stored

register​

function register(address _user, bytes _data) public

Registers the user if they own the token with the token ID encoded in _data. Throws if the user does not own the token or if the token has already been used to sign up.

Parameters​

NameTypeDescription
_useraddressThe user's Ethereum address.
_databytesThe ABI-encoded tokenId as a uint256.