verifi docs
  • Verifi
  • Getting Started
  • User guides
    • Spaces
      • Create a space
      • Avatar execution setup
    • Proposals
    • Voting
  • Protocol
    • Overview
    • Authenticators
    • Space actions
    • Space controller actions
    • Proposal validation strategies
    • Voting strategies
    • Execution strategies
Powered by GitBook
On this page
  • Ethereum signature authenticator
  • Ethereum transaction authenticator
  • And more!
  1. Protocol

Authenticators

PreviousOverviewNextSpace actions

Last updated 1 year ago

Authenticators are the contracts in charge of authenticating users to create proposals and cast votes.

All proposal creation, proposal update, and vote transactions must be sent to the relevant DAO's space contract via an authenticator.

DAOs are free to write their own custom authenticators that suit their own needs however we provide the following approaches:

Ethereum signature authenticator

Will authenticate a user based on a message signed by an Ethereum private key. Users create an EIP712 signature for the transaction which is checked for validity in this contract.

function authenticate(
    uint8 v,
    bytes32 r,
    bytes32 s,
    uint256 salt,
    address target,
    bytes4 functionSelector,
    bytes calldata data
) external;
  • v,r,s: ECDSA Signature

  • salt : The salt used in the signature to prevention replays (only required for proposal creation and updating).

  • target: The destination space contract.

  • functionSelector: The function selector of the desired action.

  • data: The ABI encoded transaction payload for the action. Refer to the section for more information on the payload contents.

This can work in conjunction with a meta transaction relayer to allow proposal creation or vote costs to be sponsored by the DAO, providing a free end user experience.

Ethereum transaction authenticator

Will authenticate a user by checking if the caller address corresponds to the author or voter address.

function authenticate(address target, bytes4 functionSelector, bytes calldata data) external;
  • target: The destination space contract.

  • functionSelector: The function selector of the desired action.

The core use case for this authenticator is to allow smart contract accounts such as multi-sigs to use Verifi as they have no way to generate a signature and therefore cannot authenticate via signature verification.

And more!

Our modular approach here allows spaces to authenticate users via other authentication methods without any changes to the space contract.

data: The ABI encoded transaction payload for the action. Refer to the section for more information on the payload contents.

Please note, that if you wanted to add sybil resistance to your governance process, this should not be handled by Authenticators, but by or .

Space Actions
Space Actions
Proposal Validation
Voting Strategies