# Verify your discount from public chain data

> You can verify your Gatewayz discount from public Cardano data. A one-file Node script reads Koios: the pool's fees and active stake per epoch from pool_history, and your stake in the pool from pool_delegators_history. For each settled epoch it computes 0.95 × pool fees × your stake ÷ pool active stake, in ADA, to compare with your account history.

**In one line:** Your discount is 95% of the pool's fees times your share of its stake, and you can recompute it with one command.

You can verify your share of the Gatewayz stake pool's rewards yourself, from public Cardano data, with one command. The script reads [Koios](/yield/glossary#koios), a public Cardano API, to get the pool's fees and total active stake for each finished [epoch](/yield/glossary#epoch) and your own stake in the pool, then applies the same formula Gatewayz uses: 95% of the pool's fees, times your share of the pool's stake. The result is in ADA, ready to compare with your discount history.

**Pre-launch.** The program is built and switched off on mainnet. A working demo runs on Cardano's preprod testnet with test ADA, by invitation. Not available to US or Canadian persons. Every participant must confirm they are not a US or Canadian person before linking a wallet.

## Key takeaways

- Your discount for an epoch is 0.95 × the pool's fees × your stake ÷ the pool's active stake.
- The script reads only public data from Koios: `pool_history` for the pool and `pool_delegators_history` for your stake.
- It needs Node 18 or later and has no dependencies.
- It reports ADA; Gatewayz credits USD at the ADA price when it records each epoch, so compare in ADA.
- Until the mainnet pool launches no pool id is published; pass `--pool` to run it against any pool.

## How do you run the check?

Download the script and run it with your [stake address](/yield/glossary#stake-address). It needs Node 18 or later, because it uses Node's built-in `fetch`, and has no dependencies to install.

```bash
curl -sO https://www.gatewayz.ai/yield/verify.mjs && node verify.mjs stake1u...
```

Replace `stake1u...` with your own stake address. Two optional flags change what it reads:

| Flag | Default | What it does |
| --- | --- | --- |
| `--pool pool1...` | The pool id from `GET /delegation/status` | Checks any pool instead of the Gatewayz pool |
| `--epochs N` | 6 | How many settled epochs to show, from 1 to 36 |

Read the script before running it; it is short, and it only makes read-only `GET` requests to Koios and, when no `--pool` is given, to `https://api.gatewayz.ai/delegation/status`.

## What data does the script read?

It reads three public sources, and nothing private. Every number comes from the Cardano chain through Koios, except the pool id, which comes from the Gatewayz status endpoint.

| Source | Field | What it is |
| --- | --- | --- |
| `GET /delegation/status` | `data.cardano.pool_id` | The Gatewayz pool id, used only if you do not pass `--pool` |
| Koios `pool_history` | `pool_fees` | The [pool fees](/yield/glossary#pool-fees): what the pool kept as its fee for that epoch: its [fixed cost](/yield/glossary#fixed-cost) plus [margin](/yield/glossary#margin) |
| Koios `pool_history` | `active_stake` | The pool's total active stake for that epoch |
| Koios `pool_delegators_history` | `amount` | Your active stake in the pool for that epoch |

The script asks `pool_history` for the most recent epochs, newest first, and keeps only epochs where `pool_fees` is present and `active_stake` is set: those are the settled epochs. For each one it asks `pool_delegators_history` for your stake address in that pool and epoch. If you were not delegated that epoch, your stake counts as zero. All Koios amounts are in [lovelace](/yield/glossary#lovelace) (1 ADA = 1,000,000 lovelace), and the script converts them to ADA for display.

## What formula does it apply?

The formula mirrors how Gatewayz splits what it actually received: the pool's fees for the epoch are shared in proportion to stake, and 95% of each wallet's share becomes its discount.

```text
your discount (ADA) = 0.95 × pool_fees × your_stake / pool_active_stake
```

- `pool_fees` is what the pool kept as its fee for the epoch, which is what Gatewayz receives.
- `your_stake / pool_active_stake` is your share of the pool for that epoch, from the [stake snapshot](/yield/glossary#stake-snapshot) the protocol used.
- `0.95` is the program's reward share.

The script prints one line per epoch, then the total over the epochs shown.

## What does a worked example look like?

Here is the arithmetic with illustrative numbers. These are not Gatewayz pool figures; the mainnet pool is not live, and the inputs are chosen only to show the math.

| Input (illustrative) | Value |
| --- | --- |
| Pool fees for the epoch | 1,000 ADA |
| Pool active stake for the epoch | 10,000,000 ADA |
| Your active stake in the pool | 100,000 ADA |

Your share of the pool is 100,000 ÷ 10,000,000 = 1%. Your share of the fees is 1% × 1,000 = 10 ADA. Your discount for that epoch is 0.95 × 10 = 9.5 ADA. If the ADA price was $0.2033 when Gatewayz recorded the epoch (the CoinGecko price used on these pages, as of 2026-10-27), that entry in your history would be about $1.93. The launch limits below still apply on top of the formula.

## How do you compare it with your account history?

Compare in ADA, epoch by epoch. The script shows ADA; `GET /delegation/rewards` shows each credited discount in USD at the ADA price when that epoch was recorded, so convert the USD figure back with that day's price or compare the ADA amounts.

1. Run the script with the same stake address you linked.
2. Call `GET /delegation/rewards` with your API key; see the [API reference](/yield/agents/api).
3. For each epoch, divide the credited USD amount by the ADA price at recording and compare with the script's ADA figure.

Small differences can come from rounding. A missing epoch on one side usually means it is not settled yet. If an epoch is settled on Koios and still differs, send us the epoch number and both figures.

Questions about the program: hello@gatewayz.ai.

Launch limits: at most $5 of discount per account per day, and at most $50 per day across the whole program. Limits may change.

## What are the limitations?

The script is only as complete as the public data it reads, and it cannot see program limits.

- **Unsettled epochs.** Cardano calculates an epoch's rewards a few epochs later, so recent epochs may have no `pool_fees` yet. The script skips them; [Cardano epochs and reward timing](/yield/learn/cardano-epochs-and-reward-timing) explains the lag.
- **Koios data gaps.** If Koios has not indexed an epoch, the script cannot show it. Run it again later.
- **No pool id before launch.** Gatewayz has not published a mainnet pool id yet, so the script stops and asks for `--pool`. You can pass any pool to see how the formula behaves.
- **Program limits.** The per-account and program-wide daily limits can make a credited discount smaller than the formula; the script does not apply them.
- **Price.** It does not fetch ADA prices; compare in ADA.

## Frequently asked questions

### How do I check my share of a Cardano stake pool's rewards?

Divide your active stake in the pool by the pool's active stake for the same epoch, then multiply by the rewards you want to share. Koios publishes both stakes per epoch, through `pool_delegators_history` and `pool_history`, and the Gatewayz script does this for you.

### What does pool_fees mean in Koios pool_history?

It is what the pool kept as its fee for that epoch, its fixed cost plus its margin. For the Gatewayz pool that is what Gatewayz receives, and 95% of it is shared across linked wallets by stake.

### Why does my history show USD but the script shows ADA?

Gatewayz credits each discount in USD at the ADA price when it records the epoch, because inference is priced in dollars. The script reads only chain data, which is in ADA, so compare the ADA amounts or convert at the recording price.

### Can I run the script before Gatewayz launches on mainnet?

Yes, with `--pool` and any pool id. Without it the script stops, because no mainnet pool id has been published yet.

### Does the script need my wallet or API key?

No. It only needs your stake address, which is public, and it makes read-only requests to Koios and the Gatewayz status endpoint.

### Why is the latest epoch missing?

Cardano calculates an epoch's rewards a few epochs after it ends, so recent epochs have no pool fees on Koios yet. The script skips those and shows only settled epochs.

## Sources

- [Koios API spec: pool_history](https://api.koios.rest/koiosapi.yaml), as of 2026-10-27
- [Cardano Docs: Pledging and rewards](https://docs.cardano.org/about-cardano/learn/pledging-rewards), as of 2026-10-27
- [Cardano.org Glossary: Stake Snapshot](https://cardano.org/glossary/stake-snapshot/), as of 2026-10-27
- [Cardano.org: Stake your ada on Cardano (FAQ)](https://cardano.org/stake-pool-delegation/), as of 2026-10-27

## Related

- [How yield-as-inference works](https://www.gatewayz.ai/yield/how-it-works)
- [Is delegating ADA to a stake pool safe?](https://www.gatewayz.ai/yield/security)
- [The risks of ADA delegation with Gatewayz](https://www.gatewayz.ai/yield/risks)
- [Delegation API reference](https://www.gatewayz.ai/yield/agents/api)
- [When do Cardano staking rewards arrive?](https://www.gatewayz.ai/yield/learn/cardano-epochs-and-reward-timing)

---

Discounts are a share of staking rewards Gatewayz actually received, can change at any time, and are not a guaranteed return. Not available to US or Canadian persons. Every participant must confirm they are not a US or Canadian person before linking a wallet. Not investment, legal or tax advice. Figures as of 2026-10-27.

Updated 2026-10-27. Canonical page: https://www.gatewayz.ai/yield/verify
