A scripting language for DAOs

Name of Project: A scripting language for DAOs

Proposal in one sentence: Integrating human computation algorithms in Web3 algorithmic flows.

Description of the project and what problem is it solving: Some applications require or benefit from human intelligence (e.g. data annotation, content moderation, consumer research).
This projects intends to build standardized primitives and interfaces (think OpenZeppelin) for human intelligence tasks in DAOs, and their integration in automated algorithmic flows, beyond yay/nay voting on proposals.

Promising results, reported in the early 2010’s with Amazon’s mechanical Turk, showed how the intelligence of crowds can be integrated to software. However, Turkit, the software kit born out of these early efforts, did not have much applications beyond academia.

Independently, the advent of DAOs shows promises for decentralized, coordinated decision-making. However, current modular DAO tools, such as the DAOstack seem to have made the following, limiting design choices:
• Human intelligence tasks are limited to a binary vote on proposals (yay or nay), with limited modularity regarding the aggregation procedure for votes.
• Integration in software are one-off; limited to a submission of a proposal for voting and eventual call to a contract based on the result of the vote.
• Submissions are made by human operators and do not make use of artificial intelligence.
• The stack is limited to Web3 and does not consider e.g. Discord as part of the scope of the tooling for DAOs.

The standardization and expansion of tasks requiring human intelligence can allow for the expression and rapid development of a wide-range of applications, in a unified language. Examples can be found in the Section Example Applications at the end of this proposal.

Definition of terms
• Human Intelligence Primitive (HIP, after TurKit): a fundamental decision problem submitted to individual members of a DAO, and an aggregation procedure for individual submissions.
• Scheme (after DAOstack): A procedure performed by the machine with the output of a HIP as input, and/or a call to a HIP as output.

Grant Objectives:
Explore some or all of the following improvements to the DAOstack and produce the corresponding tooling:
• A taxonomy of interesting atomic problems for Human Intelligence Primitives. The following classical problems are considered:
P1. Choice: Selecting the best alternative in a finite set. Yay/Nay is here, with a two-set.
P2. Ranking: Ranking alternatives in a finite set.
P3. Sorting: Assigning alternatives from a finite set to ordered classes (e.g. Good, Average, Bad).
P4. Classification: Assigning alternatives from a finite set to unordered classes (e.g. Dog, Cat, Bird).
P5. Search: Generating a string from an infinite set (e.g. recommend a movie to watch tonight, show me a completion hash for this tutorial).
• A wider set of aggregation procedures corresponding to these problems
(see the literature on Multicriteria Decision Analysis). Aggregation can be token-weighted, or one address/one vote.
• Allowing for arbitrary logic and iterations between HIPs and schemes.
• Extending schemes beyond a contract call.
• Augmenting the stack with artificial intelligence (e.g. an AI trained on Dune Analytics identifies interesting investment opportunities and creates a proposal for the DAO to pursue them).
• Extending the scope of the stack to Discord bots (e.g. Discord mod elections, an interesting product in its own right).

Grant Deliverables:

  • Grant Deliverable 1: A standardized framework for Human Intelligence Primitives and their integration in Web3 applications.

  • Grant Deliverable 2: Solidity interfaces and contract instances for primitives P1 to P5.

  • Grant Deliverable 3: Examples of applications in pseudo-code. See Example Applications at the end of this proposal.

  • Grant Deliverable 4: possible academic publication related to this framework.

Funding Requested: 1000 USD

Project Lead: Nassim Dehouche.


Twitter: https://twitter.com/ndehouche

This proposal is born out of a discussion with Richard Blythman, and benefitted from many of his ideas. He will hopefully be involved in the delivery of the project. We also happily welcome contributors from the Algovera community. Please reach out on Discord.

Value add for Algovera community:

  1. A standardized framework and contract interfaces for the rapid development of DAO governance tools, crowd work platforms, and other applications utilizing human intelligence.
  2. Open-source Solidity code.
  3. (Possibly) academic publications in reputed Computer Science journals and conferences that would increase the profile and credibility of Algovera among investors and other stakeholders.

Example applications:
If successful, this endeavor would essentially provide a common language that can automate/modularize services as disparate as http://earn.com/, the Mechanical Turk, Customer Surveys, Discord Mod Elections, Human-Annotated Datasets, what have you…
Examples follow.
Building annotated-datasets for machine learning:
•Creator chooses minimum and maximum participants and their rewards and pays fee corresponding to the primitives needed.
•Calls a classification primitive.
•Some aggregation procedure (e.g. most common category for an object among participants)
•Contract pays participants and delivers results.
Discord Mod Elections (Pure Web2 example):
•Discord bot calls for candidates (Search primitive).
•Calls a ranking primitive.
•Some aggregation procedure (e.g. Condorcet).
•Automatically assigns mod roles based on the results of the vote.
•Creator chooses minimum and maximum participants and their rewards and pays fee corresponding to the primitives needed.
•Calls a search primitive (generating a string corresponding to the completion hash for a course). •No aggregation.
•Contract pays participants and delivers results.
Customer surveys:
•Creator chooses minimum and maximum participants and their rewards and pays fee corresponding to the primitives needed.
•Calls a ranking primitive for say different designs of a product.
•Some aggregation procedure (e.g. Borda count). •Calls a ranking primitive for say different designs of a product.
•Contract pays participants and delivers results.


Hello everyone, this is an overdue update on this project.

  • Work on the initial DAOkit contract has been completed. It can now be used by any DAO to create microservices powered by human-intelligence.
  • The previous test app was deployed on the now defunct Kovan network. You can find a new test app, deployed on the Mumbai testnet here. These are some toy use cases, the contract itself is not limited to any particular front-end usage.
  • This blogpost shows, for instance, how you can create an on-chain ranking survey, in two lines of Solidity code.
  • The latest version of the DAOkit source-code is on Github.
  • We have presented this work at the Web3 workshop at NeurIPS. The manuscript is here.
  • We are forming a small lab around the DAOkit, in which we intend to explore research ideas around Human-augmented Artificial Intelligence (e.g. using the DAOkit for social science research), and develop other standard contracts facilitating symbiosis between DAOs and AI (Large Language Models as input or output for the DAOkit sounds particularly interesting right now). If this resonates and you would like to jam around these ideas, please reach out to me on Discord.
  • Our focus now, will be on getting DAO communities to test the DAOkit, and improve it. If you have any contacts or have a Collab Manager temperament, please contact me.
1 Like