# Community signals — Monad testnet

> Current status reviewed September 29, 2026. See [the release index](README.md) for shipped versus planned features, network, wallet signing and deployment boundaries. Older dated experiments below are retained as history.

Orb trade rooms now have a **Signals** panel. A member writes a short thesis about
the `oBASE/oQUOTE` demonstration market, chooses direction, target change and a
one-to-sixty-minute window, confirms an onchain commitment with their Orb Wallet,
then shares a compact card in the room. Another wallet can follow the signal.
The card can be independently checked against the contract's code, room scope,
note hash and recorded terms. A wallet confirms each state-changing action;
following a signal does not place a trade or delegate signing power.

The close is intentionally conservative. Anyone may settle during the 120-second
window after expiry using the market price at that transaction's block. If nobody
settles in time, the signal is **unresolved**, not a win or a loss. The price is a
manipulable demo AMM reserve ratio, not a BTC price, independent oracle, TWAP or
reliable trading-reputation input. No funds are staked, awarded or traded by this
board. In particular, follower counts are not proof of unique humans. Do not
present this prototype as a prediction market or financial performance record.

Each room has its own onchain index, so a busy room does not hide older signals
from another. Pages contain at most 20 items. The visible panel refreshes from a
single consistent-block snapshot and stops polling when the tab is hidden.

## Build and deployment

`npm run signals:compile` compiles only `OrbSignalBoard.sol`. Compiling it
together with the existing economy contracts would change their Solidity
metadata hashes and break exact-bytecode verification of already deployed
contracts. `npm run signals:test` tests a second wallet, room indexing and all
resolution states on a **local** EVM. It does not measure Monad throughput.

The deploy script reads the ignored `.env.arena.local` containing the existing
testnet deployer, RPC and `ORB_SHARED_MARKET_CONTRACT`. Run
`npm run signals:deploy:check` for a chain, code and balance check, then
`npm run signals:deploy:testnet` to publish to chain 10143. The script persists
the signed transaction in ignored `work/signal-board-deployment.json` before
broadcast so a restart can resume without deploying a second copy. It verifies
the runtime bytecode and market binding before writing the public
`ORB_SIGNAL_BOARD_CONTRACT` address to `.env.arena.local`. Configure that public
address in the local Orb and Oracle Orb environments, then restart **Orb**.
This is separate from the normal Órbita service and database.

To demonstrate with two wallets: enter the same trade room; the first wallet
opens and shares a signal, the second uses **Follow with my wallet**, then
verify the card. After the stated close, settle within two minutes to record
the current demo price and outcome. Moving the demo market price with a swap
is possible but demonstrates only the prototype mechanics, not predictive skill.
