Run a Sentry
Live
Live on testnet. sentry.gullychain.xyz mints free testnet Sentry Keys. Testnet keys have no monetary value, cannot be bought or sold for money, and never convert into mainnet keys or tokens. There is no paid sale.
A Sentry Key is a licence to run the Gully Sentry watcher: a small program that reads every assertion GullyChain's validator posts to the rollup on Arbitrum Sepolia, compares it with GullyChain itself, and signs a heartbeat for each key every 10 minutes. A wrong block hash or send root is a mismatch: the watcher alerts (webhook or Telegram) and reports it.
#1. Claim a free key
- Open sentry.gullychain.xyz and Sign in with Gully (Gully ID, optional but recommended).
- Connect the wallet that will hold the key.
- Check the eligibility list and press Claim free key. You sign one message; Gully Labs pays the mint gas.
| Rule | Why |
|---|---|
| One free key per Gully ID account | Enforced on-chain: the mint order id is bound to your Gully ID |
| One free key per wallet | Enforced on-chain (maxTotal = 1) |
| The wallet needs history: at least one transaction on GullyChain or Arbitrum Sepolia, or it is your Gully wallet | Same rule as the faucet; stops throwaway-address farming |
| Not offered in sanctioned regions | Compliance |
Direct calls to the sale contract are refused (NotEligible): free keys only come through the site.
#2. Run the watcher
The watcher is one JavaScript file, served from the Sentry site with its SHA-256. You need Node.js 20+ or Docker.
curl -fsSLO https://sentry.gullychain.xyz/downloads/gully-sentry.mjs
curl -fsSL https://sentry.gullychain.xyz/downloads/gully-sentry.mjs.sha256 | sha256sum -c -
node gully-sentry.mjs init # creates the operator hot key, prints its addressDelegate your key to the operator address on the Run a sentry page (one transaction from the wallet that holds the key), then start it:
SENTRY_KEY_CONTRACT=0xa24bF9f0eA1AE5F5226d8F7e714cEa3537aa30Ac SENTRY_TOKEN_IDS=<your key> node gully-sentry.mjs runDocker, in the folder that holds the file:
docker run -d --restart unless-stopped --name gully-sentry -v gully-sentry:/data \
-v "$PWD/gully-sentry.mjs:/app/gully-sentry.mjs:ro" \
-e SENTRY_KEY_FILE=/data/operator.key -e SENTRY_CONFIG=/data/gully-sentry.json \
-e SENTRY_KEY_CONTRACT=0xa24bF9f0eA1AE5F5226d8F7e714cEa3537aa30Ac -e SENTRY_TOKEN_IDS=<your key> \
node:22-alpine node /app/gully-sentry.mjs runUse your own RPC for the strongest check: SENTRY_L3_RPC=https://rpc.gullyrpc.xyz/<project>/evm/485590 (Gully RPC (opens in a new tab)) or your own Nitro node. Within 10 minutes your key shows its last heartbeat on the Run page and on the network view.
#Contracts (GullyChain Testnet, 485590)
| Contract | Address |
|---|---|
| Gully Sentry Key, tGSK (ERC-721, soulbound until unlock) | 0xa24bF9f0eA1AE5F5226d8F7e714cEa3537aa30Ac |
| SentrySale (free tier only, KYC gate on for direct buys) | 0x8eef397b2A8cb66e71D5C931a102c8Be29b36595 |
| SentryRewards (epoch Merkle distributor, no reward model live yet) | 0x2911b6A19350b72A158Af338729adDb5FeE29A21 |
All three are verified on verify.gullychain.xyz. Rewards are not promised; see the risk disclosure.