Case studies/Crypto & DeFi
Governance incentives · frontend

Hidden Hand

2021 - 2022 protocol sunset in 2026

Marketplace where protocols incentivize vote-escrow token holders, and the dApp around BTRFLY staking and governance.

Overview

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.

What was built

Stack

Frontend

Next.js
Application framework, with one route per partner protocol market and a separate claim page
Mantine
Component library behind the UI, visible throughout the archived March 2023 markup
@tanstack/react-query
Caching, refetching and de-duplication for market and position data

Web3

wagmi
React hooks over the chain: accounts, connectors, reads and writes
@rainbow-me/rainbowkit
Wallet connection and the account UI on top of wagmi
ethers.js
Ethereum contract interaction behind the markets, claims and staking
web3.js
Wallet and chain access in the dApp, alongside ethers.js

Data

GraphQL + graphql-request
Queries for market, round and position data that the chain itself cannot serve in that shape

Engineering highlights

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.