# BUY Pulse reproducibility sample

This packet lets an independent reader reproduce one narrow, sealed BUY Pulse
result directly from Robinhood Chain JSON-RPC data:

- UTC interval: `2026-07-31T14:40:00Z` through, but not including,
  `2026-07-31T14:45:00Z`
- inclusive block range: `24,256,026` through `24,259,027`
- BUY contract: `0x0e8720B8cD84F95b4b6696adbFA8063c4B8B94F2`
- canonical Uniswap V3 pool:
  `0x8e8fa19C2ec1DDF5048fa3119953D6F21856Bb18`
- sealed BUY Pulse snapshot:
  `7f1731a4b0a2943ae7d5555eee37333e6f7b816f678f8e25cf9427b1c12fc812`
- expected result: **3 classified BUY transactions from 3 distinct observed
  transaction-sender addresses**

The packet uses only public onchain data. It contains no database credentials,
private endpoints, API keys, wallet keys, private messages, or non-public
analytics.

## Reproduce the result

Node.js 18 or newer is sufficient. The verifier has no package dependencies,
does not connect a wallet, and never sends a transaction.

```bash
export ROBINHOOD_RPC_URL="https://rpc.mainnet.chain.robinhood.com"
node verify.mjs
```

You may substitute any Robinhood Chain JSON-RPC endpoint that serves the pinned
historical blocks. A successful run prints `BUY Pulse reproduction: PASS` and
exits with status 0. A disagreement prints every failed assertion and exits
non-zero.

Run the offline unit tests with:

```bash
npm test
```

An optional provider-native Envio HyperSync query and exact comparator live in
[`providers/envio/`](providers/envio/README.md). The dated attempt currently
records HTTP 401 because Envio requires an API token; it contains no provider
result and makes no match claim. Once a token is supplied outside the
repository, the runner reports raw logs, classified transaction hashes,
observed-address counts, and every discrepancy against the fixed manifest.

## What the verifier does

1. Confirms chain ID `4663`.
2. Confirms the hashes and UTC timestamps of the two boundary blocks and the
   first block after the interval.
3. Reads `token0()` and `token1()` from the pinned Uniswap V3 pool. Those pool
   parameters are immutable; the verifier tries the historical block first and
   falls back to `latest` if a non-archive RPC cannot execute historical calls.
4. Reads every Uniswap V3 `Swap` log emitted by that pool in the inclusive
   block range, in provider-friendly chunks.
5. Classifies a BUY transaction when BUY's signed pool delta is negative,
   meaning BUY left the pool.
6. Deduplicates by BUY contract and transaction hash, retaining the final
   matching swap log.
7. Reads each matching transaction and uses its normalized `from` address as
   the observed address. The swap recipient is only a fallback if a transaction
   record is unavailable.
8. Reads exact block timestamps and compares the resulting transaction hashes,
   block/log positions, timestamps, target-token deltas, and observed-address
   set with `sample-manifest.json`.

The exact classifier and expected records are data, not hidden code. See
[`sample-manifest.json`](sample-manifest.json).

## What this establishes

The public RPC record for this pool and block range reproduces the sample's
three BUY classifications and three distinct observed addresses. It also
provides a small independent reconciliation target for data providers.

An address is not a person. “Three observed addresses” does not mean three
verified humans, three app users, or three independent economic actors. The
result does not identify which interface, wallet software, or social post led
to a transaction.

## Scope

This is a deliberately small sample. It reproduces the BUY count contributed
by the canonical BUY pool, not the sealed snapshot's complete 11-token,
64-pool ecosystem total of 172 transactions. The source snapshot reports one
BUY pool observed and the same three addresses for BUY. Reproducing the entire
ecosystem snapshot would also require the complete time-pinned route registry
for all tracked assets.

Read [`LIMITATIONS.md`](LIMITATIONS.md) before citing the result. Corrections
are recorded in [`CORRECTIONS.md`](CORRECTIONS.md).

## Independence and non-endorsement

This packet is published by The Buy Button project, which also operates BUY
Pulse and is therefore not an independent auditor. Running it against an
independently chosen RPC makes the data retrieval reproducible; it does not
turn the publisher into a neutral party.

The project and this packet are independent of and unaffiliated with
Robinhood. References to Robinhood Chain identify the public network. This is
not an audit, certification, exchange review, endorsement, investment
recommendation, or guarantee of token safety, price, liquidity, or future
operation.

## Files

- `sample-manifest.json` — canonical, machine-readable sample and expected
  output
- `verify.mjs` — dependency-free read-only JSON-RPC verifier
- `test/verify.test.mjs` — offline classifier and manifest tests
- `LIMITATIONS.md` — explicit methodological and interpretation limits
- `CORRECTIONS.md` — versioned correction policy and log
- `CITATION.cff` — citation metadata
- `SHA256SUMS` — release-file digests (the digest list intentionally excludes
  itself)
- `LICENSE` — MIT license for this packet
- `providers/envio/` — exact independent-provider query, honest blocked
  attempt, token-gated runner, comparator tests, and separate checksums

Questions or corrections: `security@hoodbuybutton.com`.
