How to use the Scheme Registrar in Alchemy

How to use the Scheme Registrar in Alchemy

This overview is for advanced Alchemy users with a strong background in blockchain and smart contracts. New users and beginners should read this post to learn how to use Alchemy.

A recent update to Alchemy has added the beginnings of a vital DAO feature: the ability for DAOs to modify their own structure. This comes in the form of the scheme registrar scheme, which enables adding, editing, and removing elements of a DAO called schemes.

Figure 1, the Arc Platform

Schemes, pictured on the right in figure 1, are chunks of smart contract logic that define the actions a DAO can take. A couple of typical examples are:

  • the contribution reward scheme – allows users to submit proposals to send funds to an address, usually in payment for a service.
  • the generic action scheme – allows users to submit proposals to take any action possible on the Ethereum blockchain.

The scheme registrar scheme, as its name suggests, allows users to submit proposals that change the schemes registered in a DAO (specifically, to add, edit, or remove schemes). This means DAOs built on DAOstack will now be able to change their own structure, adding new features, modifying parameters, swapping out voting machines, and more.

Using the Scheme Registrar

At this point, using the scheme registrar’s full capabilities requires some technical know-how, but some basic functions are accessible to all users. Navigating to the scheme registrar and clicking to create a new proposal will lead users to this screen:

Figure 2

The three scheme registrar proposal types are visible here: add scheme, edit scheme, and remove scheme. Each category provides a list of schemes available to it by default. When removing existing schemes, making proposals is straight forward: select the scheme you’d like to remove, fill in the remaining information, and submit the proposal.

Editing or Adding a New Scheme

Scheme registrar proposals to add or edit a scheme may require the use of the permissions check boxes at the bottom of the proposal creation window (figure 2). These check boxes represent the permissions required by the scheme being added or edited:

  • Register other schemes: allows the proposed scheme to register other schemes (just as the scheme registrar can)
  • Add/remove global constraints: allows the proposed scheme to modify the DAOs global constraints.
  • Upgrade the controller: allows the proposed scheme to the upgrade (swap out) the controller contract of the DAO. See Figure 1 for a rough understanding of the role of the controller in a DAO.
  • Call genericCall on behalf of the DAO: allows the proposed scheme to submit custom Ethereum transactions (as the generic action scheme featured in the dxDAO does).

For now, we recommend reading through the smart contracts to fully understand these permissions.

Adding a new scheme requires the user, likely a smart contract developer, to have the address for the scheme they want to add (which they may have attained by writing and deploying the scheme themselves), and then create an “Add Scheme” proposal pointing to that scheme, granting it whichever permissions it requires.

Detailed Example: Changing the Genesis Protocol Parameters

We won’t give a technical example of adding a scheme here, but for editing an existing scheme, we’re providing a step-by-step guide, featuring the example of changing the parameters of the Genesis Protocol for the Genesis DAO. Many of the first DAOs built on DAOstack will be running this protocol, and there are various reasons those DAOs may want to adjust the parameters as they go:

  • If the DAO isn’t satisfied with voter participation on boosted proposals (or wants more boosted proposals so it can have a higher decision frequency) → raise (or lower) the boosting difficulty parameter accordingly
  • If the DAO feels Reputation is stagnating because Reputation is too concentrated in it’s founding members → increase the early voters’ Reputation loss/gain and/or the successful proposer’s Reputation gain.
  • If the DAO’s behavior is too erratic and unpredictable, making it difficult to benefit from GEN prediction or work with partners → increase the early voter’s Reputation loss/gain to strengthen the incentive for early voters to find Schelling points.

Here’s our step-by-step guide for editing your DAO’s Genesis Protocol params using the scheme registrar:

Relevant Ethereum addresses to have on hand:

Genesis DAO Avatar: 0x294f999356ed03347c7a23bcbcf8d33fa41dc830

ContributionReward: 0x6646D0a32D6b9C1d1a7389A6b8da7e5fD780F316

GenesisProtocol: 0x374026A48D777CB0FFdCCdB9a919c0Aa7cE8a0fc

Configuring the Genesis Protocol:

Finding the voting configuration params hash

  1. Get the voting configuration params hash from GenesisProtocol:
  • Go to “Read Contract” for the GenesisProtocol on Etherscan (
  • Go to “getParametersHash”.
  • Fill in _params & _voteOnBehalf fields. Example below:
    • _params: [50, 2592000, 345600, 86400, 1200, 172800, 50000000000, 4, 150000000000, 10, 0]
    • _voteOnBehalf: 0x0000000000000000000000000000000000000000
      • _params explained:
50, // queuedVoteRequiredPercentage
2592000, // queuedVotePeriodLimit
345600, // boostedVotePeriodLimit
86400, // preBoostedVotePeriodLimit
1200, // thresholdConst
172800, // quietEndingPeriod
50000000000, // proposingRepReward
4, // votersReputationLossRatio
150000000000, // minimumDaoBounty
10, // daoBountyConst
0, // activationTime
  1. Save the result.
  • 0xde924589f841ec9b5ea74a57f0063166c5330e7d40152ebb6d9b8c9f42a89254
  1. See if these params are already in storage:
  1. Set the voting configuration params in GenesisProtocol:

Configuring ContributionReward with the New Parameters:

  1. Get the voting configuration params hash from ContributionReward:
  • Go to “Read Contract” for the ContributionReward scheme on Etherscan (
  • Go to “getParametersHash”.
  • Fill in _voteApproveParams with the hash from step #2 (0xde924589f841ec9b5ea74a57f0063166c5330e7d40152ebb6d9b8c9f42a89254).
  • Fill in _intVote with the GenesisProtocol’s address: 0x374026A48D777CB0FFdCCdB9a919c0Aa7cE8a0fc
  1. Save the result.
  • 0x30af646ac2ff59d1b576cec062219f9d28accd6c7e3935135573817b01b8c719
  1. See if the params are already in storage.
  1. Set the voting configuration params in ContributionReward

Proposing the new configuration in Alchemy:

Finding the scheme registrar in Alchemy. Please note that currently schemes that are not supported by Alchemy’s client display as “Unsupported Scheme at…”

  1. Go to the Genesis DAO’s Scheme Registrar scheme (

  2. Create an “Edit Scheme” proposal.

  3. Fill in the fields with the relevant information:

  • Title: Change Genesis Protocol Voting Params
  • Description: Paste some info to help voters better understand (maybe the configuration params you used when setting things up).
  • URL: Etherscan Tx URL, or the URL of a document further describing your proposal.
  • Scheme: ContributionReward
  • ParametersHash: Use the params hash you stored in step #6.

For different DAOs, follow this same process but make the proposal in that DAO (the DAO must be using the Genesis Protocol as its voting machine). Special thanks to Jordan Ellis of dOrg for the step-by-step guide.

What’s Next

In terms of user experience, the Scheme Registrar is still in its early stages, and we expect only more technical users will want to dive into the full details. Despite that, we felt it was important to put out this initial guide, because we know some DAOs may want to take advantage of the Scheme Registrar’s flexibility right away.

This is the beginning of DAOs having the power to radically self-define, increasing their autonomy and increasing the DAO ecosystem’s iterative speed. We need more experimentation to uncover the best DAO structures, and the ability for DAO’s to self-change will help us learn those lessons more quickly.

Look forward to upcoming guides covering other new schemes and features in Alchemy as they are rolled out.


Updated link for 9. "Go to the Genesis DAO’s Scheme Registrar scheme ":

I don’t see _voteOnBehalf… help!

1 Like

It’s in there! Right under params. You’re just putting in a null address anyway since we’re assuming people aren’t using that right now (it’s for sort of putting in voting middleware, if I understand correctly).