Vote delegation mechanisms without incentive markets actually degrade a DAO's open governance and transparency because:
- People find a way to sell their votes even without a market, but they have to do it with "trust me bro" vaults.
- There is a lack of tooling, visualization, ability to inspect how votes are being delegated - they are being incentivized but it's done off-chain and under the table.
- Newcomers or more casual users do not have fair access to information about how the community is allocating their votes, because you have to map the HCS transactions yourselves to understand why certain voting outcomes happened.
Dark Matter Markets directly addresses all of these points
- On-chain contract manages buyer escrow and seller payouts.
- Agents autonomously negotiate for all parties in the marketplace, understanding the context of your goals (i.e. "I want YES to win", "I want to maximize my earnings") and guardrails/instructions (i.e. "never agree to add a gauge", "always vote yes for airdrops")
- Our website provides tools to inspect the agent behavior & network, including why agents made certain decisions, how they negotiated the sellers against each other, etc.
- We aggregate HCS data to understand who has voted, who has delegated, when, what was the outcome of proposals, etc.
DAOs want to increase voting participation, and providing incentives for voting is one of the most effective ways to do that [0]. One common (but not only) way is by introducing vote delegation. Once there is vote delegation, it is almost an economic certainty that a market will eventually be built on top of it to solve various "off the books" issues, as well as making the incentives accessible to even small shareholders. The in-between period is a golden window of opportunity for malicious actors to secretly buy off voters, while drawing a minimal amount of awareness from the rest of the DAO. Dark Matter Markets intends to shorten the gap for DAOs to provide transparent, inspectable and open incentive markets
[0] Mevni Manarangi Piyarisi and Timofey Shalpegin. Incentives in decentralised autonomous organisations. International Journal of Production Economics, 280:109472, 2025 (pdf)
DAO voting on Hedera typically works by having a topic on HCS where users can provide messages such as VOTE and DELEGATE, with a proposal id.
- A CLI periodically aggregates the HCS topic data via a mirror node (in my case for three chains: localhost, testnet and mainnet) using a REST API. We also retrieve token positions for all participating users. All of this data is stored in Redis.
- A website shows all of the markets created in our system, their proposals and visualizations about the data we have aggregated about them.
- The website accepts log/streaming data from agents in order to render a node graph of the agents, and to let you inspect individual nodes (agents) and connections (communication between a buyer and seller agent).
- Individuals who want to buy must put their money in escrow on-chain to a contract deployed with Hardhat, written in solidity.
- Buyers and sellers run their agents with their respective configurations (so that they know who they represent, what their goals are, what their guardrails are). Agents use Hedera's AgentKit with the Consensus plugin, Google's A2A protocol, langchain, anthropic LLM
- Agents will communicate and negotiate with each other autonomously. Once a deal has been reached, the seller will send a message to the HCS topic delegating their votes to one of three DMM-controlled addresses. These addresses represent the three possible outcomes: YES, NO, ABSTAIN. The reason we do this instead of delegating to the buyer is to prevent them from flipping their vote at the last minute; sellers have control over what kinds of issues they agree to sell their vote for, so it is critical to prevent rugpull manipulation.
Because of how many different pieces there are, there are scripts to bring up and down the entire network of agents at once.
Website: nextjs, react, typescript
CLI: nodejs, typescript
Agents: nodejs, typescript, Hedera Agentkit + Google A2A
Contracts: hardhat, solidity
The deployment (locally for example) looks like this:
- Run Hedera locally
- "docker compose up" to get the website, database and redis running in docker
- Migrate the db and run the db seed
- Deploy the contracts locally
- Run the CLI to retrieve data
- Finally, run the agents with "pnpm agents:start-all" and inspect the network in in the "Interrogate Agents" => "Network View" part of the site.