CROSS Stake
Stake native CROSS on Mainnet 2.0 with one sentence. View position, stake, unstake (14-day cooldown), withdraw matured principal.
Stake native CROSS with one sentence.Drives the CROSS Mainnet 2.0 native-CROSS staking dApp (operated by OGF (BVI) Ltd.) on CROSS Chain (
612055). View protocol stats, your full position (currently staked / in cooldown / withdrawable), stake / unstake / withdraw matured principal.
Different from cross-rewards.
cross-rewardsstakes WCROSS / game ERC-20s into per-pool reward staker contracts.cross-stake(this skill) bonds native CROSS to the StakeHub system contract. Different assets, different contracts.
Single-pool model. CROSS Mainnet 2.0 has no per-validator delegation surface. The dApp's "Choose validator" UI is cosmetic / off-chain. All on-chain stake calls land in a single contract.
1. Install
The block below is a natural-language prompt to paste into your AI agent — not a terminal command.
Clone https://github.com/to-nexus/skill-cross-stake into a temporary directory and run the install.sh script inside it to install the cross-stake skill into my environment. Tell me the result in one line when you're done.
Bash execution required + Phase-0 capture pending.Read-path works for any wallet once
references/cross-stake.jsonis populated via the playbook inreferences/cross-stake.md. Write-path exits withphase_0_not_captureduntil the registry is filled. Use a throwaway wallet for the capture.
CROSSx Embedded Wallet caveat.stake.ogfcorp.comdefaults to a custodial CROSSx wallet. To use the write-path you must export your private key from CROSSx (or import an external wallet into CROSSx). Read-path subcommands work for any address without auth.
Install all CROSS skills at once
Clone https://github.com/to-nexus/cross-skills-suite into a temporary directory and run the bootstrap.sh script inside it to install every CROSS skill into my environment. Tell me which skills succeeded and which failed.2. Where it runs
✅ Supported · CLI agents with Bash access
Claude Code (CLI) · OpenClaw · Cursor Composer · Codex CLI · Aider · Goose · Gemini CLI · OpenInterpreter · any other Bash-capable CLI.
❌ Not supported · Browser / hosted only
Claude.ai (web) · ChatGPT (web) · Gemini (web) · Copilot Chat (web). Staking signs on-chain txs with viem.
3. What you can do
Read · no auth
| Subcommand | What it does |
|---|---|
🟢 network-stats | Total staked / APR / block reward / emissions. |
🟢 validators | Single-pool redirect / guidance. |
🟢 my-delegation | Full position: staked + cooldown + withdrawable + matures-at. |
🟢 rewards | Rewards (pending + claimed-to-date). |
🟢 history | Event log: delegate / undelegate / claim-rewards. |
Write · signs on-chain tx
| Subcommand | What it does |
|---|---|
🔴 delegate | stake() payable — stake native CROSS. |
🔴 undelegate | Start the 14-day cooldown. Envelope returns withdrawAvailableAt. |
🔴 withdraw | claimUnstake() — claim matured principal. |
🔴 claim-rewards | Currently exits not_supported_by_protocol (dormant). |
4. Try it
Any natural language works. Examples below are in English; phrase your intent in whichever language you prefer — the agent forwards your intent, not the wording.
Show CROSS Mainnet 2.0 staking stats
Show my cross-stake position (use 0x...)
Stake 100 CROSS — confirmed
Unstake 5 CROSS (start the 14-day cooldown)
Withdraw my matured CROSS
Show my staking event history
Show staking rewards5. Command reference
| command | args | auth | mutation | description |
|---|---|---|---|---|
network-stats | — | — | read | Total staked / APR / emissions. |
validators | — | — | read | Single-pool redirect. |
my-delegation | --addr 0x... | — | read | Position summary. |
rewards | --addr 0x... | — | read | Pending + claimed-to-date. |
history | --addr 0x... [--limit 100] | — | read | Event log. |
delegate | <amount> [--confirm] | PK | tx | stake() payable. |
undelegate | <amount> [--confirm] | PK | tx | Start cooldown. |
withdraw | [--confirm] | PK | tx | claimUnstake(). |
claim-rewards | [--confirm] | PK | tx | Currently not_supported_by_protocol. |
Tip.my-delegationis the most useful read subcommand — it tells you exactly what's staked, what's in cooldown, and when each cooldown matures. Run it after every stake / unstake.
6. Safety & credentials
delegate/undelegate/withdrawsign on-chain transactions.
| Rail | What it does |
|---|---|
| Required credential | PRIVATE_KEY (EOA) for write-path. Read-path needs nothing. |
| Chain-id check | Must be 612055 (CROSS Chain). Mismatch → wrong_chain. |
| RPC scheme | https:// only. http:// → insecure_rpc. |
MAX_STAKE_NOTIONAL | Default 1000 CROSS, applies to delegate only. |
CONFIRM_THRESHOLD | Amounts ≥ this (default 10) require explicit --confirm. |
MIN_GAS_NATIVE_CROSS | Default 0.001. Reserved on top of any value-bearing tx. |
| Phase-0 not captured | Write-path exits 3 phase_0_not_captured with missingSlots[] until you fill references/cross-stake.json. |
| Wallet identity warning | WALLET_ADDRESS ≠ PK-derived → soft signerWarn field; does not abort. |
Hosted-agent tip. Use a disposable wallet. For the Phase-0 capture, use a throwaway wallet specifically — never your hot wallet — since you'll be running tx calldata captures against the live site.
7. Troubleshooting
phase_0_not_captured
The skill ships with references/cross-stake.json seeded entirely with nulls. Open references/cross-stake.md and follow the DevTools network-capture playbook against stake.ogfcorp.com. Use a throwaway wallet.
I unstaked but the funds aren't withdrawable.
Native CROSS staking has a 14-day unbonding cooldown. Check my-delegation — withdrawAvailableAt shows the maturity timestamp.
not_supported_by_protocol on claim-rewards.
CROSS Mainnet 2.0 hasn't activated the separate reward-claim endpoint yet — rewards are bundled into delegate / undelegate flows for now. The skill stub stays in place for the day it activates.
Choose validator UI shows me 5 options. Which one does the skill use?
None. The UI is cosmetic — all on-chain stake calls land in a single contract. The skill correctly ignores validator selection.
I exported my key from CROSSx but the tx fails with insecure_rpc.
You set CROSS_RPC_URL=http://.... Change to https://mainnet.crosstoken.io:22001/ (or remove the override).
Updated about 2 hours ago