Marketplace where protocols incentivize vote-escrow token holders, and the dApp around BTRFLY staking and governance.
Hidden Hand is a marketplace for governance incentives, commonly called bribes. Protocols with vote-escrow tokens use it to let others reward their token holders for gauge votes, and holders earn extra yield on their governance tokens. In 2023 it was a Redacted platform: marketplace revenue was shared with rlBTRFLY holders, and Hidden Hand was also the dApp around BTRFLY, where users staked tokens, earned incentives and took part in governance proposals.
Data Subsystems handled frontend development. The app was built on Next.js with Mantine, and the Web3 layer is where the work sat: wallet connection through RainbowKit over wagmi, transaction flows and contract calls through ethers.js and web3.js, and a data layer that reads the protocol's subgraph over GraphQL with graphql-request, cached and kept in sync by TanStack Query so a page full of market numbers does not re-query the chain on every render. The March 2023 version opened on a short explainer and a protocol picker, gave each partner protocol its own market page (Aura, Balancer, Bunni, FloorDAO, Frax, Idle Finance, Ribbon, Saddle and Tokemak at the time), and added a Claim page and wallet connection.
Seen from a participant's side, the app is one loop: connect a wallet, hold the protocol's token and with it the right to vote on where emissions go, watch what that vote is worth on the market, claim it - and, on the market side, let what has been accumulated change hands between participants rather than sit idle.
The site is still up, now powered by Dinero, listing 20 partner markets and a calendar of voting rounds. It also carries a wind-down notice: new markets were offered until 31 December 2025, a claims-only period ran from 1 January to 30 June 2026, and rewards left unclaimed after that deadline expire.
Each protocol market lives on its own URL (/balancer, /aura, /frax and so on), so markets can be linked directly; the live site still uses the same route pattern.
Two read paths, on purpose: GraphQL for what a market page shows - rounds, offers, historical numbers - and direct contract calls for what has to be true at the moment of a transaction.
Wallet connection is the sign-up: there is no account to create, so the whole funnel from visitor to voter is one connect and one transaction.