Subnet 21: AdTAO
AdTAO is Bittensor Subnet 21, operated by the team behind PPC Rebel. The subnet functions as a verifiable prediction market for Google Ads campaign outcomes. Its core task is counterfactual impact prediction: given a structured description of an advertising account and an action that has been applied to it, miners forecast how the account’s key metrics will shift over the following 7 and 14 days. Every prediction is timelock-encrypted and committed on chain before the outcome is measurable, and every scoring step is cryptographically anchored to on-chain data that any observer can independently verify. The full protocol is documented in the SN21 GitHub repository and its accompanying whitepaper.
How the Mechanism Works
Each prediction cycle in AdTAO is organized around an episode — a structured package of data
describing a real Google Ads account at a specific moment. An episode contains the account’s 60-day
historical campaign time series, metadata about its current goal and spend tier, and an action
bundle describing the intervention whose effect is being predicted. Phase 1 covers four action
types: budget changes, bid strategy switches, target value adjustments such as changes to a target
cost-per-acquisition or target return on ad spend, and campaign pauses. The supported action types
are defined in
hope/constants.py in the
public repository.
Miners receive the episode and return probabilistic distributions — P10, P50, and P90 estimates — for how the primary goal metric will change at each prediction horizon. The task demands calibrated uncertainty rather than a single point estimate; miners who are systematically overconfident or underconfident are penalized accordingly.
To prevent manipulation, miner submissions are protected by a two-layer encryption scheme. Each prediction archive is encrypted with AES-GCM. The AES key is then timelock-encrypted to a future round of the drand quicknet beacon, a distributed randomness beacon operated by the League of Entropy. The ciphertext hash, the locked key, and an archive URL are committed on chain at submission time. This construction makes retroactive changes to a prediction detectable from chain state alone; no one, including the subnet operator, can alter a submitted prediction without leaving a verifiable trace.
Validators retrieve predictions after the timelock reveals, verify each submission passes an
eight-check scoreability rule, and score miners across four components. Quantile accuracy carries
50% of the total score and is measured via pinball loss and the Continuous Ranked Probability Score
applied to the P10/P50/P90 distributions against actual outcomes. Calibration contributes 20% and
evaluates interval coverage with a convex width penalty that discourages over-wide prediction
intervals. Directional accuracy carries 15% and checks whether the predicted sign of change matches
what actually happened. Goal accuracy makes up the remaining 15% and applies a Brier score to the
probability the miner assigned to the campaign missing its stated goal. A miner whose aggregate
score fails to exceed the conditional-prior baseline — a simple historical reference model — earns
zero emission for that epoch regardless of absolute score. The full scoring specification is in
SN21_REWARD_MECHANISM.md.
At launch, the default validator runner applies simple score normalization with a 95% burn directed
to UID 0. A tiered emissions model — with participation gates, EMA-based tier placement, and
differentiated pool shares — is implemented in
hope/validator/tiered_weights.py
and becomes the runner default after the first scheduled review. Full details are in the
reward mechanism specification.
A shadow validator runs the same open-source scoring code on a separate hotkey and commits its own artifacts each epoch. Any divergence between the primary and shadow scorer is publicly auditable. Because every scoring input is committed to chain as a Merkle root, anyone can re-run the open-source verifier script against any past epoch and either confirm or contradict the validator’s reported scores.
Participating as a Miner
Miners on Subnet 21 compete by submitting calibrated probabilistic forecasts for Google Ads campaign metric changes. Effective participation requires a model that can ingest structured account snapshots — including historical spend and conversion time series, bid strategy context, and the specific action being applied — and produce well-calibrated P10/P50/P90 distributions for two time horizons.
The baseline requirement means that miners whose models fail to outperform a conditional-prior reference earn no emission, regardless of submission volume. Prospective miners should review the miner quickstart guide and the whitepaper before registering a hotkey. Hardware requirements are listed in the repository README and are modest relative to compute-intensive subnets, since the primary task is inference rather than large-scale model training.
Participating as a Validator
Validators on AdTAO retrieve miner prediction archives after each timelock reveal, apply the scoreability filter, and run the open-source scoring library against the released outcomes. The scoring code has no Bittensor dependency and can be audited and tested independently. Validators then submit timelocked weight commits through the standard Yuma Consensus commit-reveal mechanism.
The shadow-validator design means that primary validator scoring is cross-checked each epoch by a second independent run of the same code. Validators whose weights diverge significantly from consensus are penalized through the standard Yuma Consensus accountability mechanism. Setup instructions are available in the validator setup guide.
On-Chain Identity
Subnet 21 is registered on the Bittensor mainnet under the name AdTAO, operated by PPC Rebel under
owner coldkey 5HjCYVfrWSkzTfJM5rkWBW3qTTJqXEFUzZrKty5hodpgfjyW. The subnet supports 256 neurons.
The registered on-chain site is adtao.io, and the registered GitHub repository
is ippcteam/SN21-adtao. Live on-chain data including
metagraph state, neuron counts, and alpha token pool information is available at
taostats.io/subnets/21.
Relationship to Yuma Consensus
Subnet 21 uses Yuma Consensus to aggregate the timelocked weight commits that validators submit each epoch into the per-block TAO emissions distributed to miners and validators on the network. The Yuma Consensus documentation describes how validator weight submissions are processed to produce consensus weights for each miner registered on the subnet.
In AdTAO’s context, validators run the open-source scoring library against released prediction outcomes and submit weights through a commit-reveal mechanism. The shadow-validator design provides an independent cross-check: a second run of the same code commits its own weight artifacts each epoch, and any divergence from the primary scorer is publicly auditable from chain state. Yuma Consensus aggregates weight submissions across the validator set into a consensus ranking. The Emission documentation describes how those consensus weights determine each miner’s share of the per-block emission.
Development Stage Context
The Introduction to Bittensor describes subnet development as moving from localnet to testnet and then mainnet. For AdTAO (SN21), that sequence changes how readers should interpret Google Ads forecast examples and prediction-market scoring outcomes.
In localnet, AdTAO-compatible miners and validators can be developed and tested in an isolated environment. Localnet forecast evaluation results and emission outcomes do not represent production subnet performance.
On testnet, AdTAO-compatible forecast submission and validation workflows can be exercised in a shared, non-production network. Testnet scoring results and validator weights are separate from mainnet subnet state.
On mainnet, AdTAO (SN21) is the live production subnet where miners submit calibrated probabilistic forecasts of Google Ads campaign outcomes and validators score their accuracy to determine real Bittensor emissions. The AdTAO repository is the registered project repository for SN21 on the production network.
The Bittensor Networks reference separates mainnet, testnet, and localnet. A forecast evaluation result or emission outcome from one environment should not be read as representing production subnet performance in another environment.
Miner and Validator Roles
Subnet 21 operates under the standard Bittensor two-role structure. Miners supply the subnet’s capability and validators evaluate those contributions and set weights. Reward distribution follows Yuma Consensus.
Reader Boundary
Subnet 21 AdTAO should not be read as generic Bittensor subnet documentation, a Google Ads management service, or proof that one forecast guarantees campaign outcomes. It names one subnet’s calibrated Google Ads prediction competition on netuid 21 (Understanding Subnets, Glossary: Netuid).
Timelock Encryption Commits Predictions Before Outcomes
The SN21 repository describes miner archives being AES-encrypted and timelock-locked to a future drand beacon round before outcomes are measurable (SN21 reward mechanism).
Submitted predictions are therefore fixed on chain before scoring can use realized campaign results.
Shadow Validator Cross-Checks Primary Scoring
The repository runs a second validator hotkey with the same open-source scoring code and commits parallel weight artifacts each epoch (SN21 repository).
Divergence between primary and shadow scores is intended to be auditable from public chain state.
Validator Weights Still Flow Through Yuma Consensus
Subnet 21 uses Yuma Consensus to convert validator weight submissions into emission shares each tempo (Yuma Consensus, Emission).