Compound Community Portfolio: Pay‑to‑Govern (P2G) Experiment

Hello Compound Community :wave:

I’m excited to share a new experiment I’ve been building: Compound Community Portfolio (CompComm). This is a community‑managed portfolio that doesn’t use token voting. Instead, it pilots a Pay‑to‑Govern (P2G) model where anyone can pay to send messages (proposals) or pay to edit the on‑chain policy that guides an AI agent to perform the execution (or not execution depending on the policy). Those payments go straight into the portfolio, and contributors receive a Management Token (MT) that redeems pro‑rata for WETH from the portfolio at its terminal state.

This work is a natural extension of my earlier CGP project, Compound Actions for Coinbase AgentKit, where I introduced messaging with an AI agent working from a policy (system prompt) to make portfolio decisions. CompComm takes that same foundation and applies it to decentralized portfolio management and governance.

What is CompComm?

CompComm is a minimal, non‑upgradeable on‑chain portfolio with three main parts:

  • Priced Inputs: pay‑per‑message (user prompts) and pay‑per‑policy‑edit (system prompt). Payments are in USDC and increase AUM for the portfolio.
  • Claim‑Bearing Issuance: each paid input mints MT deterministically; holders later redeem pro‑rata in WETH after the consolidation phase. There is no premine.
  • Bounded Execution: an authorized agent can only execute within allowlists (Compound v3 / Uniswap v3) and a fixed timelock that drives the lifecycle: Contribution → Consolidation → Redemption in WETH.

Why Pay‑to‑Govern (P2G)?

DAO governance often struggles with two extremes:

  • Noise or spam when participation is free or cheap.
  • Plutocracy when governance relies on token voting, concentrating power in a few whales.

P2G flips the model:

  • Paying to govern filters out low‑signal proposals.
  • Every governance action grows the portfolio itself by adding investable USDC.
  • MT issuance is strictly tied to these payments, ensuring influence is always backed by real value and issued ONLY to individuals providing that value.

In short: you don’t buy governance power up front, instead you pay to govern and earn a claim on the terminal portfolio in return. Your claim is proportional to your investment in governing.

How it Works in this Experiment

1. Message Flow (User Prompts)

  • Pay a fixed 10 USDC fee per message (user prompt)
  • Vault receives the fee, increasing the AUM of the portfolio
  • 1 MT is minted to the payer and 0.2 MT to the dev treasury, MessagePaid event emitted
  • Authorized agent will act (supply/withdraw on Comet; swap via Uniswap v3) based on the current policy (system prompt)

2. Policy Evolution (System Prompt)

  • Pay 1 USDC per 10 characters changed to edit the on‑chain investment policy.
  • Each 10 characters changed mints MT (1 MT to payer / 0.2 MT to dev treasury), policy version increments
  • Policy is updated, Agent will act based on the new policy (system prompt) in the next message

3. Lifecycle & Guardrails

The authorized agent will be an AI agent running on a virtual server instance using Coinbase’s AgentKit. A front end interface will be available for the community to connect their wallets and send messages. The agent will be reading the policy from on-chain each new message as it’s system prompt before acting. AUM in the portfolio will be timelocked for 18 months, then consolidated to WETH, and finally redeemable by MT holders. The agent will not be able to perform transfers, only allowlisted actions.

  • Contribution (pre‑unlock): allowlisted actions only. Allow actions are:
    • Compound Supply and Withdraw to allowlisted Comet contracts
    • Uniswap Swap between allowlisted tokens
  • Consolidation (post‑unlock): anyone can unwind positions to WETH.
    • Only allows Compound withdraws and swaps to WETH.
  • Redemption: burn MT for pro‑rata WETH.
    • Only allowed after the timelock period and when the portfolio is consolidated to WETH.

Self Funding the Experiment

Each mint event mints an additional 20% MT to the dev treasury multisig. My intent is to use this 20% as lightweight funding for the experiment (ops, infra, audits). Notably, this dev share would only be redeemable for value when the terminal state of the portfolio is reached or a market for MT tokens is established.

How this Extends Previous Work

This experiment directly builds on my CGP‑funded work, Compound Actions for Coinbase AgentKit, and forks the Compound Assistant Github Template. There, I built Supply, Borrow, Repay, and Withdraw actions for a LangGraph-based agent, signed messaging flows for secure interactions, and a simple frontend interface to chat with it and view its contract interactions. CompComm applies that same system to the governance of community portfolios.

What Success for this Experiment Looks Like

  • A steady flow of paid messages and policy edits that both fund the portfolio and surface higher‑signal governance inputs.
  • On‑chain observability of backlog, actions, and policy versions, enabling dashboards and audits.
  • At unlock, a clean consolidation to WETH and pro‑rata redemption for MT holders after 18 months.
  • A thriving CompComm community on Telegram. Join us here: Telegram: Join Group Chat

Feedback Welcome

  • Does P2G feel like a healthier alternative to coin voting for community managed portfolios?
  • Any strong views on the 20% developer share?
    • Again, this share would only be redeemable for value when the terminal state of the portfolio is reached after 18 months or a market for MT tokens is established.
  • Which assets/markets should be on the initial allowlists for Compound v3 and Uniswap v3?
    • This will be on Base so I think all the assets on Compound would be allowed, but I’m not sure about the Uniswap v3 assets.
  • Is there any interest in an initial presale of Management Tokens to help me fund this experiment?

Looking forward to the discussion! I’ve set up a Telegram group if you’re interested in chatting more about it there: Telegram: Join Group Chat

– Mike

3 Likes

GM :sun: and Happy Friday CompComm followers,

I have received some questions like “Why would people pay 10 USDC to message this?” So I have prepared the following Research Note to explain in more detail how the experiment works. It’s all predicated on the portfolio being seeded with 100 USDC, which is part of the launch plan.


This note explains the economic dynamics of sending paid messages to the CompComm agent, how MT is minted, and why there’s a built‑in incentive to interact (especially early on). It also walks through a quick ETH example and solves for the number of messages needed (starting from a 100 USDC seed) for the terminal value per MT to reach 11 USDC/MT when the portfolio simply holds USDC.

CompComm Model Setup

  • Initial portfolio AUM: A₀ = 100 USDC (which the dev provides to kick start the fun)
  • Initial MT supply: S₀ = 0
  • Per message: pay 10 USDC → deposit goes into the vault and mints 1.2 MT total: 1.0 MT to the payer, 0.2 MT to the developer treasury.
  • Terminal redemption: pro‑rata redemption of the portfolio’s assets for WETH (or USDC in this simplified section) per MT.

When there have been n messages in total and the portfolio passively holds USDC, we have:

  • Assets: A(n) = 100 + 10·n
  • Supply: S(n) = 1.2·n
  • Terminal value per MT (post‑n messages):
    V(n) = A(n) / S(n) = (100 + 10n) / (1.2n)

Equivalently: V(n) = 100/(1.2n) + 10/1.2 = 83.33…/n + 8.333…
This shows V(n) decreases with more messages and asymptotically approaches 8.333… USDC/MT as n → ∞ when the portfolio only accumulates USDC.

Early Messages Create a Strong Incentive (Arbitrage‑like)

With no MT outstanding at the start, the first message puts 10 USDC into the vault and mints 1.2 MT total. The portfolio now has 110 USDC and 1.2 MT outstanding, so the terminal value per MT is:

V(1) = 110 / 1.2 = 91.66… USDC/MT

A user who paid 10 USDC for 1 MT now holds a claim worth ~91.66 USDC at terminal redemption (ignoring time/market risk). This huge gap exists because the initial seed (100 USDC) is shared among a very small MT supply. As more messages arrive, supply grows faster than assets on a per‑unit basis (10 USDC vs 1.2 MT → 8.333 USDC/MT), so V(n) trends down.

For reference, after two total messages:

  • Assets A(2) = 120, Supply S(2) = 2.4V(2) = 120 / 2.4 = 50 USDC/MT (still >> 10).

ETH Example: Interaction + Market Performance

Suppose ETH is initially $4,000 and the first message says “Buy ETH with all USDC.”
After the message, the vault has: 10 USDC + 0.0125 ETH (since the original 100 USDC bought 0.0125 ETH). Supply is 1.2 MT.

  • At $4,000/ETH, terminal value per MT is:
    (10 + 0.0125·4000) / 1.2 = (10 + 50) / 1.2 = 60 / 1.2 = 50 USDC/MT.
  • If ETH later rises to $5,000, the same basket is worth 10 + 0.0125·5000 = 72.5 USDC, so:
    72.5 / 1.2 = 60.416… USDC/MT.

Takeaway: positive portfolio performance raises V(n) and reinforces the incentive to interact (send more messages) because deposits both (a) fund the vault and (b) mint MT that participates in improved terminal value.

How Many Messages Until V(n) = 11 USDC/MT?

Assume we hold only USDC and each message adds 10 USDC while minting 1.2 MT (no price movement). Solve for n such that:

(100 + 10n) / (1.2n) = 11

100 + 10n = 13.2n100 = 3.2nn = 31.25

Because messages are discrete:

  • After 31 messages: V(31) = 410 / 37.2 ≈ 11.02 USDC/MT (just above 11).
  • After 32 messages: V(32) = 420 / 38.4 = 10.9375 USDC/MT (just below 11).

Answer: It takes about 31-32 messages from a 100 USDC seed for the terminal value per MT to fall to ~11 USDC/MT when simply stacking USDC. At 32 messages, supply is 38.4 MT (of which 32 MT to message senders and 6.4 MT to the dev treasury).

Incentive Summary

So, to answer our original question: “Why would people pay 10 USDC to message this?”, consider the following properties of the Compound Community Portfolio system:

  1. Early participation is highly rewarded. With a 100 USDC seed and zero initial MT, early messages capture a large share of seeded value per MT.
  2. Activity feeds activity. As users see elevated V(n) and as performance potentially increases portfolio value, there’s a rational incentive to submit more messages, which adds USDC and mints MT, compounding engagement.
  3. Natural glide‑path. If no alpha is added (holding USDC only), V(n) drifts toward ~8.333 USDC/MT. Performance (e.g., successful trades or yield) counteracts that drift and can maintain V(n) at higher levels, sustaining incentives.

Discussion

As stated before, success for the project means having an active community involved. So, I’d love to get some of the amazing people from the community involved in this thread. To that end, I pose the following prompts here for anyone interested in joining the discussion.

  • Are my maths correct?
  • Should message price or mint rate ever be dynamic (e.g., congestion responsive) to manage V(n) over time? How would that work?
  • Would staged timelocks or rolling “epochs” improve fairness between early and late contributors? How might that work?
  • What dashboards would you like to see to make V(n), backlog, and performance legible in real time?

– Mike

1 Like

gm Mike and thank you this fun community tool design

The math looks solid. The current static price-to-mint rate works reasonably well because it ensures users can’t be completely wiped out by supply inflation alone. Timelock will allow the market to catch up for early arb.

For the timelock every n-th message can create a staged timelock that drips out some percentage of the MT supply at fixed intervals. Now, when the next (n+1) message comes in, it creates a rolling timelock maturity that overlaps with the previous timelock; overlapping unlock schedules.

What do you think about tokenizing this timelock payout stream? Each 10 usdc buy mints an erc721 that has the right to claim the MT distribution?

Sepolia beta is live + call for testers

TL;DR: The Community Portfolio is now live on Sepolia for public testing at https://compcomm.club. You’ll need Sepolia ETH (for gas) and testnet USDC which you can get ≈3 USDC/day from the Compound faucet link inside the app. Simple swaps/withdrawals work today; multi‑step messages also work but may occasionally hit a “replacement transaction underpriced” nonce issue that I’m fixing in Agentkit. Code is fully open‑sourced (frontend, backend, and new contracts) with a 3‑layer security model to keep the funds in the portfolio safe. Early test economics look interesting: MT is currently valued at $1.091 (in ETH at terminal); each message mints 1 MT to the user (+0.2 MT to dev), so there’s a small positive EV on testnet.

CompComm.Club Preview

Chat Preview

Policy Preview

Try it now on Ethereum Sepolia Testnet

What you’ll need

  1. Sepolia ETH (for gas) - use any Sepolia ETH faucet.
  2. Testnet USDC - in‑app link to the Compound Faucet (≈3 USDC/day).

How to test (quick start)

  1. Connect your wallet to Sepolia at https://compcomm.club.

  2. Use the app link to top up testnet USDC.

  3. Send a message to the agent. Examples:

    Swap 1 USDC to COMP
    Swap 0.001 WETH to WBTC
    Withdraw 1 USDC from Compound
    Withdraw 1 USDC from Compound and swap it for WETH
    
  4. Watch the resulting transactions and your MT balance update.

Multi‑op messages may sporadically hit “replacement transaction underpriced” due to nonce handling. I’m updating the Agentkit actions to improve nonce management; feel free to stress‑test and report when you hit it (tx hash, steps, and timestamps help a lot).

Call for Beta Testers

I’m looking for folks to try some of the simple interactions above and also try multi‑operation messages. The more real‑world phrasing and edge cases, the better.

If you do give it a try, please share if you have any issues or errors:

  • the exact message you sent,
  • your expected outcome,
  • what happened (tx hashes, screenshots),
  • and any UI/UX rough edges.

Open issues to help me triage the issue and if you want to contribute, PRs are welcome in the repo. There’s several open github issues as well for anyone looking to contribute.

Shout‑outs to the Contributors

Part of the grant required 2 additional dev contributions - we’re lucky to have had 3:

  • fawarano - added an About page to the compound-assistant template that this project builds on.
  • deluxeRaph (@villagefarmer) - contributed to the MessageManager smart contract in this repo.
  • johhonn - contract review, resolved a critical issue, and delivered gas optimizations for onchain policy edits.

Big thanks to all three - exactly the kind of collaboration this experiment is meant to spark.

Codebase Published to Github :rocket:

You can find the codebase for this project in the Compound Community Portfolio Github repo. The repo now includes:

  • a modified frontend for composing and publishing messages onchain,
  • a backend agent that reads messages from chain and executes allowed operations, and
  • brand‑new MessageManager / VaultManager contracts that demonstrate a secure agent system end‑to‑end.

Security Model to prevent rug pulls :shield:

I this section I highlight one of the core contributions of this project: a security model for agent-managed portfolios to prevent rug pulls. It takes a 3-layer approach to security:

  1. Onchain‑first messaging & payment

    • The frontend publishes messages to the blockchain.
    • The backend only reads messages from chain and will only process messages paid via MessageManager.
    • The backend no longer accepts messages from a web endpoint - the chain enforces validity and payment before any processing.
  2. Strictly scoped agent tools

    • The backend agent is only given tools for operations on the VaultManager (the onchain portfolio).
    • No generic transfer tools are given to the agent, removing the possibility of tricking the agent into arbitrary sends.
    • The agent itself also doesn’t hold any significant amount of funds, just the gas required to execute the actions.
  3. Vault constraints at the contract level

    • A single withdraw path: MT redemption, which is timelocked, physically prevents the agent from withdrawing funds from the vault.
    • Asset allowlist for swaps prevents interaction with malicious tokens sent to the vault.
    • Action allowlists (e.g., Uniswap and Compound) and an allowlist of Compound Comet markets.

Because anyone can message the agent, the system is designed so that “hack attempts” can’t rug funds; they’ll just end up paying the fee and adding 10 USDC per attempt to the portfolio (on testnet), while messages that violate security policy (and onchain investment policy) simply won’t execute.

Beta‑test economics :money_bag:

Current MT redeemable value (terminal, in ETH): $1.091. Each valid message costs 1 USDC and mints 1 MT to the sender (+0.2 MT to the developer).

  • This implies a small positive expected value ≈ $1.09, before accounting for dilution from the 1.2 MT total minted per interaction.
  • Example to date: 45 interactions yields 54 MT total supply. One of my test wallets made 5 interactions and currently shows 5 MT (~$5.45), i.e., +9% so far for my participation.

This is testnet; token prices can deviate from mainnet and may fluctuate. Treat the economics as an experiment to explore pay‑to‑govern dynamics rather than a promise of returns.

What’s next :soon_arrow:

  • Ship the Agentkit nonce‑handling update to eliminate underpriced replacement errors allowing for more complex messages.
  • Collect feedback from testers to refine prompts, UI, and action ergonomics.
  • Continue to address a growing list of open isssues and encouraging open source contributions by adding help wanted labels to the issues. I have found in the past that adding “help wanted” labels to issues has led to a significant increase in contributions from the OS community on Github.

Feedback Welcome

Questions, bugs, or ideas? Drop them in this thread or open an issue/PR: https://github.com/mikeghen/comp-comm-portfolio. Thanks for testing!

1 Like