{
  "schemaVersion": "1.0",
  "item": {
    "slug": "xian-node-skill",
    "name": "Xian Node",
    "source": "tencent",
    "type": "skill",
    "category": "AI 智能",
    "sourceUrl": "https://clawhub.ai/Endogen/xian-node-skill",
    "canonicalUrl": "https://clawhub.ai/Endogen/xian-node-skill",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/xian-node-skill",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=xian-node-skill",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "references/genesis-template.md",
      "scripts/generate_validator_key.py",
      "scripts/node_status.py"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "slug": "xian-node-skill",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-04T13:26:28.521Z",
      "expiresAt": "2026-05-11T13:26:28.521Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=xian-node-skill",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=xian-node-skill",
        "contentDisposition": "attachment; filename=\"xian-node-skill-0.1.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "xian-node-skill"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/xian-node-skill"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/xian-node-skill",
    "agentPageUrl": "https://openagent3.xyz/skills/xian-node-skill/agent",
    "manifestUrl": "https://openagent3.xyz/skills/xian-node-skill/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/xian-node-skill/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Xian Node Skill",
        "body": "Deploy and manage Xian blockchain nodes — an L1 with native Python smart contracts on CometBFT."
      },
      {
        "title": "Quick Reference",
        "body": "TaskCommandJoin mainnetmake setup && make core-build && make core-up && make init && make configure CONFIGURE_ARGS='--genesis-file-name genesis-mainnet.json --seed-node-address <seed> --copy-genesis'Start nodemake core-shell then make up inside containerView logspm2 logs --lines 100 (inside container)Stop nodemake down (inside container) or make core-down (stop container)Check synccurl -s localhost:26657/status | jq '.result.sync_info'"
      },
      {
        "title": "1. Clone and Build",
        "body": "git clone https://github.com/xian-network/xian-stack.git\ncd xian-stack\nmake setup CORE_BRANCH=mainnet CONTRACTING_BRANCH=mainnet\nmake core-build\nmake core-up"
      },
      {
        "title": "2. Initialize CometBFT",
        "body": "make init"
      },
      {
        "title": "3. Configure Node",
        "body": "Mainnet:\n\nmake configure CONFIGURE_ARGS='--moniker \"my-node\" --genesis-file-name \"genesis-mainnet.json\" --seed-node-address \"c3861ffd16cf6708aef6683d3d0471b6dedb3116@152.53.18.220\" --copy-genesis'\n\nTestnet:\n\nmake configure CONFIGURE_ARGS='--moniker \"my-node\" --genesis-file-name \"genesis-testnet.json\" --seed-node-address \"<testnet-seed>\" --copy-genesis'\n\nValidator node (add private key):\n\nmake configure CONFIGURE_ARGS='--moniker \"my-validator\" --genesis-file-name \"genesis-mainnet.json\" --validator-privkey \"<your-privkey>\" --seed-node-address \"...\" --copy-genesis'\n\nService node (with BDS - Blockchain Data Service):\n\nmake configure CONFIGURE_ARGS='--moniker \"my-service\" --genesis-file-name \"genesis-mainnet.json\" --seed-node-address \"...\" --copy-genesis --service-node'"
      },
      {
        "title": "4. Start Node",
        "body": "make core-shell   # Enter container\nmake up           # Start pm2 processes\npm2 logs          # Watch sync progress\nexit              # Leave shell (node keeps running)"
      },
      {
        "title": "1. Build Stack",
        "body": "git clone https://github.com/xian-network/xian-stack.git\ncd xian-stack\nmake setup CORE_BRANCH=mainnet CONTRACTING_BRANCH=mainnet\nmake core-build\nmake core-up\nmake init"
      },
      {
        "title": "2. Generate Validator Keys",
        "body": "Inside container (make core-shell):\n\n# Generate new validator key\npython -c \"\nfrom nacl.signing import SigningKey\nimport secrets\nsk = SigningKey(secrets.token_bytes(32))\nprint(f'Private key: {sk.encode().hex()}')\nprint(f'Public key:  {sk.verify_key.encode().hex()}')\n\""
      },
      {
        "title": "3. Create Genesis File",
        "body": "Create genesis.json with initial validators and state. See references/genesis-template.md."
      },
      {
        "title": "4. Configure as Genesis Validator",
        "body": "make configure CONFIGURE_ARGS='--moniker \"genesis-validator\" --genesis-file-name \"genesis-custom.json\" --validator-privkey \"<privkey>\"'"
      },
      {
        "title": "5. Start Network",
        "body": "make core-shell\nmake up\n\nOther nodes join using your node as seed."
      },
      {
        "title": "Inside Container Commands",
        "body": "CommandDescriptionmake upStart xian + cometbft via pm2make downStop all pm2 processesmake restartRestart nodemake logsView pm2 logsmake wipeClear node data (keeps config)make dwuDown + wipe + init + up (full reset)"
      },
      {
        "title": "Monitoring",
        "body": "Sync status:\n\ncurl -s localhost:26657/status | jq '.result.sync_info'\n\nResponse fields:\n\nlatest_block_height: Current height\ncatching_up: true if still syncing\nearliest_block_height: Lowest available block\n\nNode info:\n\ncurl -s localhost:26657/status | jq '.result.node_info'\nmake node-id   # Get node ID for peering\n\nValidators:\n\ncurl -s localhost:26657/validators | jq '.result.validators'"
      },
      {
        "title": "Docker Commands",
        "body": "CommandDescriptionmake core-upStart containermake core-downStop containermake core-shellEnter container shellmake core-bds-upStart with BDS (PostgreSQL + GraphQL)"
      },
      {
        "title": "Ports",
        "body": "PortService26656P2P (peering)26657RPC (queries)26660Prometheus metrics5000GraphQL (BDS only)"
      },
      {
        "title": "Troubleshooting",
        "body": "Database lock error (resource temporarily unavailable):\n\n# Duplicate pm2 processes - clean up:\npm2 delete all\nmake up\n\nSync stuck:\n\n# Check peer connections\ncurl -s localhost:26657/net_info | jq '.result.n_peers'\n\n# Verify seed node is reachable\nmake wipe\nmake init\n# Re-run configure with correct seed\n\nContainer not starting:\n\nmake core-down\nmake core-build --no-cache\nmake core-up"
      },
      {
        "title": "File Locations",
        "body": "PathContents.cometbft/CometBFT data + config.cometbft/config/genesis.jsonNetwork genesis.cometbft/config/config.tomlNode configuration.cometbft/data/Blockchain dataxian-core/Xian ABCI applicationxian-contracting/Python contracting engine"
      },
      {
        "title": "Test Your Node",
        "body": "After syncing, verify your node works with xian-py:\n\npip install xian-py\n\nfrom xian_py import Xian, Wallet\n\n# Connect to your local node\nxian = Xian('http://localhost:26657')\n\n# Query balance\nbalance = xian.get_balance('your_address')\nprint(f\"Balance: {balance}\")\n\n# Get contract state\nstate = xian.get_state('currency', 'balances', 'some_address')\nprint(f\"State: {state}\")\n\n# Create wallet and send transaction\nwallet = Wallet()  # or Wallet('your_private_key')\nxian = Xian('http://localhost:26657', wallet=wallet)\nresult = xian.send(amount=10, to_address='recipient_address')\n\nFor full SDK docs (contracts, HD wallets, async) — see xian-py."
      },
      {
        "title": "Resources",
        "body": "xian-network/xian-stack — Docker setup\nxian-network/xian-core — Core node\nxian-network/xian-py — Python SDK\nCometBFT docs — Consensus engine\nxian.org — Project site"
      }
    ],
    "body": "Xian Node Skill\n\nDeploy and manage Xian blockchain nodes — an L1 with native Python smart contracts on CometBFT.\n\nQuick Reference\nTask\tCommand\nJoin mainnet\tmake setup && make core-build && make core-up && make init && make configure CONFIGURE_ARGS='--genesis-file-name genesis-mainnet.json --seed-node-address <seed> --copy-genesis'\nStart node\tmake core-shell then make up inside container\nView logs\tpm2 logs --lines 100 (inside container)\nStop node\tmake down (inside container) or make core-down (stop container)\nCheck sync\tcurl -s localhost:26657/status | jq '.result.sync_info'\nSetup: Join Existing Network\n1. Clone and Build\ngit clone https://github.com/xian-network/xian-stack.git\ncd xian-stack\nmake setup CORE_BRANCH=mainnet CONTRACTING_BRANCH=mainnet\nmake core-build\nmake core-up\n\n2. Initialize CometBFT\nmake init\n\n3. Configure Node\n\nMainnet:\n\nmake configure CONFIGURE_ARGS='--moniker \"my-node\" --genesis-file-name \"genesis-mainnet.json\" --seed-node-address \"c3861ffd16cf6708aef6683d3d0471b6dedb3116@152.53.18.220\" --copy-genesis'\n\n\nTestnet:\n\nmake configure CONFIGURE_ARGS='--moniker \"my-node\" --genesis-file-name \"genesis-testnet.json\" --seed-node-address \"<testnet-seed>\" --copy-genesis'\n\n\nValidator node (add private key):\n\nmake configure CONFIGURE_ARGS='--moniker \"my-validator\" --genesis-file-name \"genesis-mainnet.json\" --validator-privkey \"<your-privkey>\" --seed-node-address \"...\" --copy-genesis'\n\n\nService node (with BDS - Blockchain Data Service):\n\nmake configure CONFIGURE_ARGS='--moniker \"my-service\" --genesis-file-name \"genesis-mainnet.json\" --seed-node-address \"...\" --copy-genesis --service-node'\n\n4. Start Node\nmake core-shell   # Enter container\nmake up           # Start pm2 processes\npm2 logs          # Watch sync progress\nexit              # Leave shell (node keeps running)\n\nSetup: Create New Network\n1. Build Stack\ngit clone https://github.com/xian-network/xian-stack.git\ncd xian-stack\nmake setup CORE_BRANCH=mainnet CONTRACTING_BRANCH=mainnet\nmake core-build\nmake core-up\nmake init\n\n2. Generate Validator Keys\n\nInside container (make core-shell):\n\n# Generate new validator key\npython -c \"\nfrom nacl.signing import SigningKey\nimport secrets\nsk = SigningKey(secrets.token_bytes(32))\nprint(f'Private key: {sk.encode().hex()}')\nprint(f'Public key:  {sk.verify_key.encode().hex()}')\n\"\n\n3. Create Genesis File\n\nCreate genesis.json with initial validators and state. See references/genesis-template.md.\n\n4. Configure as Genesis Validator\nmake configure CONFIGURE_ARGS='--moniker \"genesis-validator\" --genesis-file-name \"genesis-custom.json\" --validator-privkey \"<privkey>\"'\n\n5. Start Network\nmake core-shell\nmake up\n\n\nOther nodes join using your node as seed.\n\nNode Management\nInside Container Commands\nCommand\tDescription\nmake up\tStart xian + cometbft via pm2\nmake down\tStop all pm2 processes\nmake restart\tRestart node\nmake logs\tView pm2 logs\nmake wipe\tClear node data (keeps config)\nmake dwu\tDown + wipe + init + up (full reset)\nMonitoring\n\nSync status:\n\ncurl -s localhost:26657/status | jq '.result.sync_info'\n\n\nResponse fields:\n\nlatest_block_height: Current height\ncatching_up: true if still syncing\nearliest_block_height: Lowest available block\n\nNode info:\n\ncurl -s localhost:26657/status | jq '.result.node_info'\nmake node-id   # Get node ID for peering\n\n\nValidators:\n\ncurl -s localhost:26657/validators | jq '.result.validators'\n\nDocker Commands\nCommand\tDescription\nmake core-up\tStart container\nmake core-down\tStop container\nmake core-shell\tEnter container shell\nmake core-bds-up\tStart with BDS (PostgreSQL + GraphQL)\nPorts\nPort\tService\n26656\tP2P (peering)\n26657\tRPC (queries)\n26660\tPrometheus metrics\n5000\tGraphQL (BDS only)\nTroubleshooting\n\nDatabase lock error (resource temporarily unavailable):\n\n# Duplicate pm2 processes - clean up:\npm2 delete all\nmake up\n\n\nSync stuck:\n\n# Check peer connections\ncurl -s localhost:26657/net_info | jq '.result.n_peers'\n\n# Verify seed node is reachable\nmake wipe\nmake init\n# Re-run configure with correct seed\n\n\nContainer not starting:\n\nmake core-down\nmake core-build --no-cache\nmake core-up\n\nFile Locations\nPath\tContents\n.cometbft/\tCometBFT data + config\n.cometbft/config/genesis.json\tNetwork genesis\n.cometbft/config/config.toml\tNode configuration\n.cometbft/data/\tBlockchain data\nxian-core/\tXian ABCI application\nxian-contracting/\tPython contracting engine\nTest Your Node\n\nAfter syncing, verify your node works with xian-py:\n\npip install xian-py\n\nfrom xian_py import Xian, Wallet\n\n# Connect to your local node\nxian = Xian('http://localhost:26657')\n\n# Query balance\nbalance = xian.get_balance('your_address')\nprint(f\"Balance: {balance}\")\n\n# Get contract state\nstate = xian.get_state('currency', 'balances', 'some_address')\nprint(f\"State: {state}\")\n\n# Create wallet and send transaction\nwallet = Wallet()  # or Wallet('your_private_key')\nxian = Xian('http://localhost:26657', wallet=wallet)\nresult = xian.send(amount=10, to_address='recipient_address')\n\n\nFor full SDK docs (contracts, HD wallets, async) — see xian-py.\n\nResources\nxian-network/xian-stack — Docker setup\nxian-network/xian-core — Core node\nxian-network/xian-py — Python SDK\nCometBFT docs — Consensus engine\nxian.org — Project site"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/Endogen/xian-node-skill",
    "publisherUrl": "https://clawhub.ai/Endogen/xian-node-skill",
    "owner": "Endogen",
    "version": "0.1.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/xian-node-skill",
    "downloadUrl": "https://openagent3.xyz/downloads/xian-node-skill",
    "agentUrl": "https://openagent3.xyz/skills/xian-node-skill/agent",
    "manifestUrl": "https://openagent3.xyz/skills/xian-node-skill/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/xian-node-skill/agent.md"
  }
}