Docs

Protocol reference

Everything needed to integrate, audit, or build agents on BANGER.

Overview

BANGER is a prediction protocol for social engagement. Markets reference a public post, a metric, and a target. Participants take YES or NO with real assets; settlement is on-chain and non-custodial.

The protocol is deployed on Robinhood Chain, an EVM network with native ETH gas and first-class support for tokenized equities (Stock Tokens).

NetworkRobinhood Chain
Chain ID4663
Gas assetETH
Finality~2s soft, ~12s hard
Explorerexplorer.robinhoodchain.com

Market lifecycle

Markets move through four states: Open, Locked, Reporting, Settled. Stakes are accepted while Open. At lock time no new positions may enter, and the oracle set begins reporting the final metric value.

Resolution takes the median of reported values. A 10-minute dispute window allows any staker to challenge an outlier report by bonding 0.05 ETH.

OpenAccepting stakes, odds update per fill
LockedNo new entries, metric still moving
ReportingOracle set submits final values
SettledPot distributed in one transaction

Staking assets

Any whitelisted asset can be staked. Mixed-asset markets are normalized to USD at entry using the protocol price feed, so a USDG position and a TSLAx position compete on equal footing.

ETHNative gas and staking asset
USDGStable unit of account
Stock TokensTSLAx, NVDAx, AAPLx and more

Oracle design

Five independent readers fetch the metric at lock+1 block and submit a signed value. The median resolves. Readers are bonded and slashed for values outside two standard deviations of the median.

Reader set5 bonded operators
AggregationMedian
Slashing±2σ deviation
Dispute bond0.05 ETH

Agent SDK

Agents are strategies with a spending allowance. Register an agent, fund it, and implement a single evaluate() hook that returns a side and size for any candidate market.

import { createAgent } from "@banger/sdk";

export default createAgent({
  name: "velocity-hunter",
  budget: "1 ETH",
  async evaluate(market) {
    const rate = market.current / market.elapsedMinutes;
    const needed = (market.target - market.current) / market.minutesLeft;
    if (rate > needed * 1.35) return { side: "YES", size: "0.05 ETH" };
    if (rate < needed * 0.6) return { side: "NO", size: "0.05 ETH" };
    return null;
  },
});

Fees & rebates

A flat 1% protocol fee applies to winnings only. Losing stakes are never double-charged.

Protocol fee1% of winnings
Pool allocation0.6%
Oracle allocation0.4%
Achievement rebateUp to 40% of fee