Step-by-step guide for demonstrating ZKCred at RE{DEFINE} Hackathon
cd frontend
npm run build # Ensure build succeeds
npm run dev # Start dev server- Install Xverse Wallet browser extension
- Create or import a Bitcoin wallet
- Have some testnet BTC (not required for demo, but good to have)
- Open http://localhost:3000
- Have a second tab ready for Starkscan to show transactions
Talking Points:
- "ZKCred enables Bitcoin holders to create verifiable credentials that prove their holdings tier without revealing their wallet address or exact balance"
- "This solves the privacy problem of proving you're a 'whale' without doxxing yourself"
- Show the tier system: Shrimp, Crab, Fish, Whale
- Click "Connect Wallet" button in sidebar
- Xverse popup appears → Approve connection
- Show that wallet is connected (address displayed)
Talking Point:
- "We use BIP-322 message signing for ownership verification"
-
In the chat, type:
"I want to prove I'm a whale without revealing my wallet"
-
AI responds explaining the credential system
-
Type:
"Create a BTC tier credential for me"
-
AI proposes credential issuance with tool_use block
Talking Points:
- "The AI agent understands your intent and guides you through the process"
- "No technical knowledge required - just chat naturally"
-
Review the proposed credential details:
- Type: BTC Holdings
- Tier: (based on mock/real balance)
-
Click "Approve & Sign" button
-
Xverse popup → Sign the message
-
Watch the credential being issued:
- "Issuing credential..." loading state
- Success card appears with:
- Tier emoji and name
- Credential ID
- Transaction hash (clickable link)
-
Click transaction hash → Opens Starkscan showing on-chain transaction
Talking Points:
- "The signature proves wallet ownership"
- "The credential is stored on Starknet - fully on-chain"
- "Only the tier is revealed, never the actual balance"
- Click "My Credentials" in sidebar
- Show credential card with:
- Tier badge (e.g., Whale)
- Credential ID
- Issue date
- Status (Active)
Talking Point:
- "Credentials are stored locally and can be shared by ID"
- Copy the credential ID
- Click "Verify" in sidebar
- Paste the credential ID
- Click "Verify Credential"
- Show verification result:
- Valid/Invalid status
- Tier information
- Issue date
Talking Points:
- "Anyone can verify a credential without knowing who owns it"
- "Verification reads directly from Starknet"
- "Perfect for gated access, airdrops, or reputation systems"
Show the architecture:
- Frontend: Next.js + sats-connect
- AI Agent: AWS Bedrock (Claude) with tool_use
- Contracts: Cairo on Starknet Sepolia
- CredentialRegistry: stores credentials
- CredentialVerifier: helper functions
Show Starkscan contract pages:
- Ensure Xverse extension is installed
- Try refreshing the page
- Check browser console for errors
- Ensure correct network (Bitcoin mainnet)
- Try disconnecting and reconnecting wallet
- Check
.env.localhas valid Starknet private key - Check AWS credentials are set
- Check network connectivity to Starknet Sepolia
- Double-check credential ID (copy full string)
- Ensure the credential was actually issued (check transaction)
Before starting the demo:
- Frontend running (
npm run dev) - Xverse wallet installed and unlocked
-
.env.localconfigured with all keys - Starkscan tab ready
- Good internet connection
- Browser console open (for debugging if needed)
- Privacy First: "Prove your tier, not your wallet"
- User Friendly: "Just chat - no technical knowledge needed"
- Fully On-Chain: "Credentials live on Starknet, verifiable by anyone"
- Interoperable: "Use credentials across any dApp that integrates"
Q: Why Starknet?
"Starknet's low fees make credential issuance affordable, and Cairo's type safety ensures contract correctness."
Q: How is privacy preserved?
"We store a hash of the wallet address, never the actual address. Only the tier is publicly visible."
Q: Can credentials be revoked?
"Yes, the contract owner can revoke credentials if needed."
Q: What's the real-world use case?
"Whale-only airdrops, tiered access to communities, credit scoring without doxxing, reputation systems."
Q: How do you determine the tier?
"Currently using mock data for the hackathon. In production, we'd integrate a BTC balance oracle or use signed attestations."