โ† All skills
Tencent SkillHub ยท Developer Tools

Chia WalletConnect - Telegram Verification

Telegram Web App for Chia wallet verification via WalletConnect and Sage. Enables cryptographic proof of wallet ownership through signature verification using MintGarden API.

skill openclawclawhub Free
0 Downloads
0 Stars
0 Installs
0 Score
High Signal

Telegram Web App for Chia wallet verification via WalletConnect and Sage. Enables cryptographic proof of wallet ownership through signature verification using MintGarden API.

โฌ‡ 0 downloads โ˜… 0 stars Unverified but indexed

Install for OpenClaw

Quick setup
  1. Download the package from Yavira.
  2. Extract the archive and review SKILL.md first.
  3. Import or place the package into your OpenClaw setup.

Requirements

Target platform
OpenClaw
Install method
Manual import
Extraction
Extract archive
Prerequisites
OpenClaw
Primary doc
SKILL.md

Package facts

Download mode
Yavira redirect
Package format
ZIP package
Source platform
Tencent SkillHub
What's included
README.md, SKILL.md, cli.js, lib/challenge.js, lib/verify.js, package-lock.json

Validation

  • Use the Yavira download entry.
  • Review SKILL.md after the package is downloaded.
  • Confirm the extracted package contains the expected setup assets.

Install with your agent

Agent handoff

Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.

  1. Download the package from Yavira.
  2. Extract it into a folder your agent can access.
  3. Paste one of the prompts below and point your agent at the extracted folder.
New install

I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete.

Upgrade existing

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. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run.

Trust & source

Release facts

Source
Tencent SkillHub
Verification
Indexed source record
Version
1.0.0

Documentation

ClawHub primary doc Primary doc: SKILL.md 28 sections Open source page

Chia WalletConnect Skill

Verify Chia wallet ownership via Telegram using WalletConnect integration with Sage Wallet.

What It Does

This skill provides a Telegram Mini App (Web App) that enables users to: Connect their Sage Wallet via WalletConnect v2 Sign a challenge message cryptographically Verify wallet ownership via MintGarden's signature verification API Return verification status to your Telegram bot Use Cases: NFT-gated Telegram groups Airdrop eligibility verification Web3-style authentication DAO voting authentication Proof of token holdings

Architecture

/verify command โ†’ Web App button โ†’ WalletConnect โ†’ Sage signs โ†’ Verification The user never leaves Telegram. The entire flow happens in-app via the Telegram Web App API.

Installation

# Install via ClawdHub clawdhub install chia-walletconnect # Install dependencies cd skills/chia-walletconnect npm install # Make CLI executable chmod +x cli.js

Step 1: Deploy Web App

Deploy the webapp/ folder to a public HTTPS URL: Vercel (Recommended): cd skills/chia-walletconnect/webapp vercel # Copy the URL (e.g., https://chia-verify.vercel.app) Netlify: cd skills/chia-walletconnect/webapp netlify deploy --prod Your Server: # Start Express server npm start # Expose via ngrok or reverse proxy

Step 2: Register with BotFather

Message @BotFather Send /newapp or /editapp Select your bot Web App URL: Enter deployed URL Short Name: verify

Step 3: Add to Bot

Using Clawdbot Message Tool // Send /verify command handler message({ action: 'send', target: chatId, message: 'Click below to verify your Chia wallet:', buttons: [[{ text: '๐ŸŒฑ Verify Wallet', web_app: { url: 'https://your-app.vercel.app' } }]] }); Handling Verification Response // In your bot's web_app_data handler bot.on('web_app_data', async (msg) => { const data = JSON.parse(msg.web_app_data.data); const { address, message, signature, publicKey, userId } = data; // Verify signature const { verifySignature } = require('./skills/chia-walletconnect/lib/verify'); const result = await verifySignature(address, message, signature, publicKey); if (result.verified) { // Wallet verified! Grant access, record verification, etc. message({ action: 'send', target: msg.chat.id, message: `โœ… Wallet verified!\n\nAddress: ${address}` }); // Store verification // await db.saveVerification(userId, address); } else { message({ action: 'send', target: msg.chat.id, message: `โŒ Verification failed: ${result.error}` }); } });

CLI Usage

The skill includes a CLI for testing: # Generate challenge message node cli.js challenge xch1abc... telegram_user_123 # Verify signature manually node cli.js verify xch1abc... "message" "signature" "pubkey" # Validate address format node cli.js validate xch1abc... # Start development server node cli.js server

MintGarden Signature Verification

Endpoint: POST https://api.mintgarden.io/address/verify_signature { "address": "xch1abc...", "message": "Verify ownership of Chia wallet:...", "signature": "hex_signature", "pubkey": "hex_public_key" } Response: { "verified": true }

CHIP-0002 Methods (WalletConnect)

MethodPurposechip0002_getPublicKeysFetch public keys from walletchip0002_signMessageRequest message signaturechia_getCurrentAddressGet current receive address

Verification Flow

1. User sends /verify to bot 2. Bot responds with Web App button 3. User taps button โ†’ Mini App opens in Telegram 4. Mini App initializes WalletConnect 5. User connects Sage Wallet 6. Challenge message generated (includes nonce + timestamp) 7. User signs message in Sage Wallet 8. Signature sent back to bot via Telegram.WebApp.sendData() 9. Bot verifies signature with MintGarden API 10. Bot confirms verification success/failure Time: ~5-10 seconds for full flow (user-dependent)

Environment Variables

Create .env in skill folder: PORT=3000 WALLETCONNECT_PROJECT_ID=your-project-id MINTGARDEN_API_URL=https://api.mintgarden.io

Get WalletConnect Project ID

Visit WalletConnect Cloud Create a new project Copy your Project ID Update in webapp/app.js Default Project ID: The skill includes 6d377259062295c0f6312b4f3e7a5d9b (Dracattus reference). For production, use your own.

What's Protected

โœ… Challenge nonces prevent replay attacks โœ… Timestamps expire after 5 minutes โœ… MintGarden cryptographic verification โœ… No private keys ever requested โœ… HTTPS enforced by Telegram

Best Practices

Store verifications securely โ€” Use encrypted database Rate limit โ€” Prevent spam verification attempts Link to Telegram user ID โ€” Prevent address spoofing Implement cooldown โ€” 1 verification per user per day Log attempts โ€” Audit trail for security

Production Checklist

Deploy to HTTPS URL (required by Telegram) Use your own WalletConnect Project ID Enable CORS only for your domain Add rate limiting on webhook endpoints Store verifications in persistent database Implement retry logic for network errors Set up monitoring/alerts

Files

chia-walletconnect/ โ”œโ”€โ”€ webapp/ โ”‚ โ”œโ”€โ”€ index.html # Telegram Web App UI โ”‚ โ”œโ”€โ”€ app.js # WalletConnect logic โ”‚ โ””โ”€โ”€ styles.css # Styling โ”œโ”€โ”€ lib/ โ”‚ โ”œโ”€โ”€ challenge.js # Challenge generation โ”‚ โ””โ”€โ”€ verify.js # MintGarden API client โ”œโ”€โ”€ server/ โ”‚ โ””โ”€โ”€ index.js # Express webhook server โ”œโ”€โ”€ cli.js # CLI interface โ”œโ”€โ”€ package.json # Dependencies โ”œโ”€โ”€ SKILL.md # This file โ””โ”€โ”€ README.md # Full documentation

Web App Doesn't Load

Verify HTTPS deployment (Telegram requires SSL) Check URL is publicly accessible Test URL directly in browser Review browser console for errors

WalletConnect Connection Fails

Ensure Sage Wallet is latest version Try manual URI paste instead of QR Check WalletConnect Project ID is valid Verify Sage supports WalletConnect v2

Signature Verification Fails

Ensure message format matches exactly Confirm public key corresponds to address Check MintGarden API is operational Verify signature encoding (hex)

"No Public Key" Error

Some wallets don't expose pubkey via WalletConnect Public key is optional for verification Signature verification works without it

Simple Verification Bot

// Clawdbot skill handler const { verifySignature } = require('./lib/verify'); // /verify command if (message.text === '/verify') { await message({ action: 'send', target: message.chat.id, message: 'Verify your Chia wallet:', buttons: [[{ text: '๐ŸŒฑ Connect Wallet', web_app: { url: process.env.WEB_APP_URL } }]] }); } // Handle web app data bot.on('web_app_data', async (msg) => { const { address, message: challengeMsg, signature, publicKey } = JSON.parse(msg.web_app_data.data); const result = await verifySignature(address, challengeMsg, signature, publicKey); if (result.verified) { // Grant access await grantAccess(msg.from.id, address); await message({ action: 'send', target: msg.chat.id, message: `โœ… Verified! Welcome, ${address.substring(0, 12)}...` }); } else { await message({ action: 'send', target: msg.chat.id, message: `โŒ Verification failed` }); } });

NFT Gating

// Check if user owns specific NFT collection const { verifySignature } = require('./skills/chia-walletconnect/lib/verify'); const mintGarden = require('./skills/mintgarden'); // Assume mintgarden skill exists bot.on('web_app_data', async (msg) => { const { address, message, signature, publicKey } = JSON.parse(msg.web_app_data.data); // Verify signature first const verifyResult = await verifySignature(address, message, signature, publicKey); if (!verifyResult.verified) { return bot.sendMessage(msg.chat.id, 'โŒ Invalid signature'); } // Check NFT ownership const nfts = await mintGarden.getNFTsByAddress(address); const hasRequiredNFT = nfts.some(nft => nft.collection_id === 'col1required...' ); if (hasRequiredNFT) { // Grant access to private group await inviteToGroup(msg.from.id); bot.sendMessage(msg.chat.id, 'โœ… Access granted! Check your invites.'); } else { bot.sendMessage(msg.chat.id, 'โŒ You need a Wojak NFT to join!'); } });

Performance

StageTimeWalletConnect Init~1-2sConnection ApprovalUser actionSign Request~2-5sMintGarden Verify~0.5-1sTotal~5-10s

Dependencies

@walletconnect/sign-client โ€” WalletConnect v2 @walletconnect/utils โ€” WalletConnect helpers @walletconnect/types โ€” TypeScript types express โ€” Web server node-fetch โ€” HTTP client cors โ€” CORS middleware dotenv โ€” Environment config

Version

1.0.0

License

MIT โ€” Koba42 Corp

Links

MintGarden API: https://api.mintgarden.io/docs WalletConnect: https://docs.walletconnect.com/ Telegram Web Apps: https://core.telegram.org/bots/webapps Sage Wallet: https://www.sagewallet.io/ CHIP-0002: https://github.com/Chia-Network/chips/blob/main/CHIPs/chip-0002.md Built with ๐ŸŒฑ by Koba42 Corp

Category context

Code helpers, APIs, CLIs, browser automation, testing, and developer operations.

Source: Tencent SkillHub

Largest current source with strong distribution and engagement signals.

Package contents

Included in package
3 Scripts2 Docs1 Config
  • SKILL.md Primary doc
  • README.md Docs
  • cli.js Scripts
  • lib/challenge.js Scripts
  • lib/verify.js Scripts
  • package-lock.json Config