SuiVerse Complete Tutorials
Choose Your Tutorial Path
Tutorial Categories
🎓 For Learners
- Your First Certificate in 30 Minutes
- Building Your Learning Portfolio
- Maximizing Earnings from Learning
✍️ For Content Creators
👨💻 For Developers
🏢 For Organizations
Tutorial 1: Earn Your First Certificate in 30 Minutes
Overview
Goal: Complete a course and earn your first blockchain-verified certificate
Time: 30 minutes
Cost: ~0.1 SUI for gas + 5 SUI for exam
Reward: NFT Certificate + Searchable credential
Prerequisites
- Computer with Chrome/Brave browser
- 6 SUI in wallet (5 for exam, 1 for gas)
- Basic understanding of blockchain
Step 1: Set Up Wallet (5 minutes)
1. Install Sui Wallet extension
→ Chrome Web Store → Search "Sui Wallet"
→ Click "Add to Chrome"
→ Create new wallet
→ SAVE YOUR SEED PHRASE! (Write it down)
2. Get SUI tokens
Option A: Buy from exchange
→ Binance/OKX/KuCoin → Buy SUI
→ Withdraw to your Sui address
Option B: Swap from another chain
→ Use bridge like Wormhole
→ Send USDC → Swap for SUI
Step 2: Connect to SuiVerse (2 minutes)
1. Visit https://suiverse.org
2. Click "Connect Wallet" (top right)
3. Select "Sui Wallet"
4. Approve connection request
5. You should see your address in the navbar
Verification Check:
// Open console (F12) and verify connection
console.log(window.sui.isConnected()); // Should return true
Step 3: Choose Your First Course (3 minutes)
Recommended Starter Courses:
| Course | Time | Difficulty | Pass Rate |
|---|---|---|---|
| Blockchain Basics | 20 min | Beginner | 92% |
| Intro to Sui | 25 min | Beginner | 88% |
| DeFi Fundamentals | 30 min | Intermediate | 81% |
| NFT Creation | 20 min | Beginner | 90% |
1. Click "Explore Content"
2. Filter by:
→ Difficulty: Beginner
→ Has Exam: Yes
→ Rating: 4+ stars
3. Click on "Blockchain Basics"
4. Click "Start Learning"
Step 4: Complete the Content (15 minutes)
Active Learning Strategy:
1. Read each section carefully
2. Take notes on key points:
- Definitions
- Important numbers
- Key differences
- Use cases
3. Complete interactive elements:
- Code snippets → Try them
- Quizzes → Test yourself
- Examples → Understand them
4. Track your progress:
- Progress bar shows completion
- Green checkmarks = completed
- Time spent is tracked
Example Notes Template:
## Blockchain Basics Notes
### Key Concepts
- Blockchain = Distributed ledger
- Consensus = Agreement mechanism
- Smart Contract = Self-executing code
### Sui Specific
- Object model vs Account model
- Parallel execution
- Sub-second finality
### Questions for Quiz
- What makes Sui fast? → Parallel execution
- What is an object? → Owned piece of data
- Gas fees on Sui? → Fraction of a cent
Step 5: Take the Exam (5 minutes)
Pre-Exam Checklist:
□ Reviewed all notes
□ Completed all content sections
□ Have 5 SUI for exam fee
□ Stable internet connection
□ 10 minutes uninterrupted time
Exam Strategy:
// Time management
const examStrategy = {
totalTime: 10 * 60, // 10 minutes in seconds
questionsCount: 20,
timePerQuestion: 30, // 30 seconds average
approach: [
"1. Read question carefully",
"2. Eliminate obviously wrong answers",
"3. Choose best remaining option",
"4. Flag uncertain ones",
"5. Review flagged at end"
]
};
// Answer selection tips
const tips = {
absolute: "Avoid 'always' or 'never' answers",
longest: "Longest answer often correct",
allAbove: "'All of the above' often correct if 2+ seem right",
firstInstinct: "Trust your first choice unless certain"
};
Step 6: Receive Your Certificate (Instant)
What Happens After Passing:
Verify Your Certificate:
// Check in wallet
1. Open Sui Wallet
2. Click "NFTs" tab
3. See your certificate
// Verify on-chain
1. Copy certificate ID from wallet
2. Go to https://suiexplorer.com
3. Paste ID in search
4. See immutable record
// Share your achievement
1. Go to your profile
2. Click "Share Certificate"
3. Get shareable link
4. Post on LinkedIn/Twitter
Troubleshooting
If Exam Fails to Load:
1. Check wallet is connected
2. Verify you have 5+ SUI
3. Refresh page (Ctrl+F5)
4. Try incognito mode
5. Clear cache and retry
If You Don't Pass (Score Below 70%):
Don't worry!
- See which topics you missed
- Review those sections
- Retake in 7 days for 3 SUI (vs 5 SUI initial)
- 91% pass on second attempt
What's Next?
Your Certificate Value:
- ✅ Permanently on blockchain
- ✅ Verifiable by anyone
- ✅ Searchable by recruiters
- ✅ Adds to your Web3 reputation
- ✅ Counts toward advanced certifications
Tutorial 2: Create Your First Content and Earn
Overview
Goal: Create, publish, and monetize your first educational content
Time: 45 minutes
Cost: 1 SUI validation deposit (refunded if approved)
Potential Earnings: 10-50 SUI/month
Step 1: Choose Your Content Type (5 minutes)
interface ContentTypeDecision {
article: {
effort: "Low",
time: "30 min",
earnings: "$$",
bestFor: "Explaining concepts"
},
project: {
effort: "Medium",
time: "2 hours",
earnings: "$$$",
bestFor: "Teaching by doing"
},
quiz: {
effort: "Low",
time: "20 min",
earnings: "$$$$",
bestFor: "Testing knowledge"
}
}
// For first content, recommend: Article
// Why? Quick to create, easy approval, good for learning the process
Step 2: Research What's Needed (10 minutes)
Market Research Process:
1. Go to SuiVerse Analytics
→ Top Searches (no content exists)
→ High-demand topics
→ Content gaps
2. Check competition
→ Search your topic
→ See what exists
→ Find what's missing
3. Identify your angle
→ Your unique perspective
→ Your experience
→ Better explanation
High-Demand Topics (January 2024):
1. "Sui wallet setup guide" - 1,200 searches, only 2 articles
2. "Move vs Solidity comparison" - 800 searches, no content
3. "DeFi yield farming tutorial" - 600 searches, outdated content
4. "NFT minting costs on Sui" - 500 searches, no clear guide
5. "Sui for Ethereum developers" - 400 searches, needs update
Step 3: Create Your Article (20 minutes)
Article Template:
---
title: How to Set Up Sui Wallet in 5 Minutes
category: Getting Started
tags: [wallet, beginner, setup]
readTime: 5 min
---
## Introduction (100 words)
[Hook: Problem/Question that brought reader here]
[What they'll learn]
[Why it matters]
## Prerequisites
- Computer with Chrome/Brave
- Email address
- 5 minutes
## Step-by-Step Guide
### Step 1: Install the Extension
[Clear instruction]
[Screenshot]
[What to expect]
### Step 2: Create Your Wallet
[Clear instruction]
[Screenshot]
[⚠️ Security warning about seed phrase]
### Step 3: Secure Your Wallet
[Best practices]
[Common mistakes to avoid]
### Step 4: Get Your First SUI
[Multiple options]
[Pros/cons of each]
## Common Issues & Solutions
[Problem 1]: [Solution]
[Problem 2]: [Solution]
## Next Steps
- [Link to next logical content]
- [Related topics]
## Summary
[3-5 key takeaways in bullet points]
Writing Tips:
const writingBestPractices = {
clarity: "Write for 8th grade level",
structure: "Use headers every 2-3 paragraphs",
examples: "Include 2-3 real examples",
visuals: "Add diagrams where helpful",
code: "Test all code snippets",
length: "Aim for 800-1500 words",
seo: "Include keywords naturally 3-5 times"
};
Step 4: Add Interactive Elements (5 minutes)
Enhance Engagement:
## Try It Yourself
```javascript
// Interactive code snippet
// Users can copy and try this
const wallet = await window.sui.connect();
console.log("Connected:", wallet.address);
Quick Quiz
- What should you never share? a) Wallet address b) Seed phrase ✓ c) Transaction ID
Visual Aid
### Step 5: Submit for Validation (3 minutes)
**Pre-Submission Checklist:**
```markdown
□ Spell check completed
□ Grammar check passed
□ Code snippets tested
□ Links working
□ Images loading
□ Proper formatting
□ Unique content (not copied)
□ Adds value
Submission Process:
1. Click "Create Content"
2. Select "Article"
3. Paste your content
4. Add metadata:
- Title (SEO optimized)
- Description (clear value prop)
- Tags (3-5 relevant)
- Category (most appropriate)
5. Preview your content
6. Pay 1 SUI deposit
7. Submit for validation
Step 6: Validation Process (24-48 hours)
What Validators Check:
Typical Feedback Examples:
✅ Approved (Score: 8.5/10)
"Clear explanation, good examples, helpful for beginners.
Minor suggestion: Add troubleshooting section."
⚠️ Needs Revision (Score: 6/10)
"Good start but needs:
1. Test code snippet - line 23 has error
2. Add more detail in Step 3
3. Include security warnings"
Step 7: Post-Publication Optimization (5 minutes)
Immediate Actions:
1. Share on social media
→ Twitter thread explaining article
→ LinkedIn post for professionals
→ Discord announcement
2. Cross-link from related content
→ Find related articles
→ Add "Related Reading" sections
→ Build content network
3. Respond to comments
→ Answer questions quickly
→ Incorporate feedback
→ Build reputation
Track Performance:
// Check daily for first week
const metrics = {
views: "How many people reading",
completion: "% who finish reading",
rating: "User satisfaction",
earnings: "SUI generated",
rank: "Position in category"
};
// Optimization based on data
if (completion < 50%) {
// Content too long or boring
// Break into sections
// Add more examples
}
if (rating < 4.0) {
// Quality issues
// Update based on feedback
// Improve clarity
}
Earnings Projection
Month 1-3: Building Phase
Articles: 5-10
Views/article: 50-100
Earnings: 5-15 SUI/month
Month 4-6: Growth Phase
Articles: 20-30
Views/article: 100-500
Collection bonus: Active
Earnings: 50-100 SUI/month
Month 7-12: Established Creator
Articles: 50+
Views/article: 500-2000
Multiple collections: Yes
Repeat readers: High
Earnings: 200-500 SUI/month
Tutorial 3: Integrate SuiVerse in Your dApp
Overview
Goal: Add educational certificates as requirements in your dApp
Time: 60 minutes
Requirements: Basic TypeScript/React knowledge
Result: Education-gated features in your app
Step 1: Install Dependencies (5 minutes)
# Install required packages
npm install @suiverse/sdk @mysten/sui.js @mysten/dapp-kit
# Install dev dependencies
npm install -D @types/node typescript
Package.json additions:
{
"dependencies": {
"@suiverse/sdk": "^1.0.0",
"@mysten/sui.js": "^0.50.0",
"@mysten/dapp-kit": "^0.11.0"
}
}
Step 2: Initialize SDK (10 minutes)
Create SuiVerse client:
// src/lib/suiverse.ts
import { SuiVerseSDK } from '@suiverse/sdk';
export const suiverse = new SuiVerseSDK({
apiKey: process.env.NEXT_PUBLIC_SUIVERSE_API_KEY!,
network: 'mainnet',
options: {
cacheTime: 5 * 60 * 1000, // 5 minutes
retryAttempts: 3
}
});
// Utility functions
export async function checkUserCertificates(address: string) {
try {
const certs = await suiverse.certificates.getByAddress(address);
return certs;
} catch (error) {
console.error('Failed to fetch certificates:', error);
return [];
}
}
export async function verifyCertificate(
certId: string,
address: string
): Promise<boolean> {
try {
const result = await suiverse.certificates.verify(certId, address);
return result.valid;
} catch (error) {
console.error('Certificate verification failed:', error);
return false;
}
}
Step 3: Create Certificate Gate Component (15 minutes)
// src/components/CertificateGate.tsx
import { useState, useEffect } from 'react';
import { useWallet } from '@mysten/dapp-kit';
import { checkUserCertificates } from '@/lib/suiverse';
interface CertificateGateProps {
requiredCertificates: string[];
children: React.ReactNode;
fallback?: React.ReactNode;
}
export function CertificateGate({
requiredCertificates,
children,
fallback
}: CertificateGateProps) {
const { address } = useWallet();
const [hasAccess, setHasAccess] = useState(false);
const [loading, setLoading] = useState(true);
const [missingCerts, setMissingCerts] = useState<string[]>([]);
useEffect(() => {
async function checkAccess() {
if (!address) {
setHasAccess(false);
setLoading(false);
return;
}
try {
const userCerts = await checkUserCertificates(address);
const certIds = userCerts.map(c => c.collectionId);
const missing = requiredCertificates.filter(
req => !certIds.includes(req)
);
setMissingCerts(missing);
setHasAccess(missing.length === 0);
} catch (error) {
console.error('Access check failed:', error);
setHasAccess(false);
} finally {
setLoading(false);
}
}
checkAccess();
}, [address, requiredCertificates]);
if (loading) {
return (
<div className="flex items-center justify-center p-8">
<div className="animate-spin rounded-full h-12 w-12 border-b-2 border-blue-500" />
</div>
);
}
if (!hasAccess) {
return fallback || (
<div className="bg-yellow-50 border border-yellow-200 rounded-lg p-6">
<h3 className="text-lg font-semibold mb-2">
Education Required 🎓
</h3>
<p className="text-gray-700 mb-4">
Complete these courses to unlock this feature:
</p>
<ul className="space-y-2">
{missingCerts.map(cert => (
<li key={cert} className="flex items-center">
<span className="text-red-500 mr-2">❌</span>
<a
href={`https://suiverse.org/collection/${cert}`}
target="_blank"
rel="noopener noreferrer"
className="text-blue-600 hover:underline"
>
{cert.replace(/-/g, ' ').replace(/\b\w/g, l => l.toUpperCase())}
</a>
</li>
))}
</ul>
</div>
);
}
return <>{children}</>;
}
Step 4: Implement in Your App (10 minutes)
Example: DeFi Trading Interface
// src/pages/trading.tsx
import { CertificateGate } from '@/components/CertificateGate';
import { TradingInterface } from '@/components/TradingInterface';
export default function TradingPage() {
return (
<div className="container mx-auto p-4">
<h1 className="text-3xl font-bold mb-8">Advanced Trading</h1>
{/* Basic trading - no certificate required */}
<section className="mb-8">
<h2 className="text-2xl mb-4">Spot Trading</h2>
<TradingInterface type="spot" />
</section>
{/* Margin trading - requires DeFi certificate */}
<CertificateGate
requiredCertificates={['defi-fundamentals']}
fallback={<MarginTradingLocked />}
>
<section className="mb-8">
<h2 className="text-2xl mb-4">Margin Trading (2x-5x)</h2>
<TradingInterface type="margin" leverage={5} />
</section>
</CertificateGate>
{/* Advanced trading - requires multiple certificates */}
<CertificateGate
requiredCertificates={[
'defi-fundamentals',
'risk-management',
'advanced-trading'
]}
>
<section>
<h2 className="text-2xl mb-4">
Perpetual Futures (up to 20x) 🚀
</h2>
<TradingInterface type="perpetual" leverage={20} />
</section>
</CertificateGate>
</div>
);
}
function MarginTradingLocked() {
return (
<div className="bg-gradient-to-r from-blue-50 to-purple-50 rounded-lg p-8 text-center">
<div className="text-6xl mb-4">🔒</div>
<h3 className="text-2xl font-bold mb-2">
Margin Trading Locked
</h3>
<p className="text-gray-600 mb-6">
Complete DeFi Fundamentals to unlock margin trading and
reduce your liquidation risk by understanding the mechanics.
</p>
<a
href="https://suiverse.org/collection/defi-fundamentals"
className="inline-block bg-blue-600 text-white px-6 py-3 rounded-lg hover:bg-blue-700"
>
Start Learning (20 min) →
</a>
</div>
);
}
Step 5: Add Certificate Display (10 minutes)
// src/components/UserCertificates.tsx
import { useState, useEffect } from 'react';
import { useWallet } from '@mysten/dapp-kit';
import { checkUserCertificates } from '@/lib/suiverse';
export function UserCertificates() {
const { address } = useWallet();
const [certificates, setCertificates] = useState([]);
const [loading, setLoading] = useState(true);
useEffect(() => {
async function loadCertificates() {
if (!address) return;
try {
const certs = await checkUserCertificates(address);
setCertificates(certs);
} catch (error) {
console.error('Failed to load certificates:', error);
} finally {
setLoading(false);
}
}
loadCertificates();
}, [address]);
if (!address) {
return <div>Connect wallet to see certificates</div>;
}
if (loading) {
return <div>Loading certificates...</div>;
}
return (
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
{certificates.map(cert => (
<div
key={cert.id}
className="border rounded-lg p-4 hover:shadow-lg transition-shadow"
>
<div className="flex justify-between items-start mb-2">
<h3 className="font-semibold">{cert.collectionName}</h3>
<span className={`px-2 py-1 rounded text-xs ${
cert.level === 'gold' ? 'bg-yellow-100 text-yellow-800' :
cert.level === 'silver' ? 'bg-gray-100 text-gray-800' :
'bg-orange-100 text-orange-800'
}`}>
{cert.level.toUpperCase()}
</span>
</div>
<div className="text-sm text-gray-600 mb-2">
Score: {cert.score}%
</div>
<div className="text-xs text-gray-500 mb-3">
Earned: {new Date(cert.issuedAt).toLocaleDateString()}
</div>
<div className="flex gap-2">
<a
href={`https://suiverse.org/certificate/${cert.id}`}
target="_blank"
rel="noopener noreferrer"
className="text-blue-600 text-sm hover:underline"
>
View
</a>
<button
onClick={() => navigator.share({
title: `My ${cert.collectionName} Certificate`,
text: `I earned ${cert.score}% on ${cert.collectionName}!`,
url: `https://suiverse.org/certificate/${cert.id}`
})}
className="text-green-600 text-sm hover:underline"
>
Share
</button>
</div>
</div>
))}
{certificates.length === 0 && (
<div className="col-span-full text-center py-8 text-gray-500">
No certificates yet. Start learning to earn your first!
</div>
)}
</div>
);
}
Step 6: Add Learning Incentives (10 minutes)
// src/hooks/useLearningIncentives.ts
import { useState, useEffect } from 'react';
import { useWallet } from '@mysten/dapp-kit';
import { suiverse } from '@/lib/suiverse';
export function useLearningIncentives() {
const { address } = useWallet();
const [incentives, setIncentives] = useState({
multiplier: 1.0,
bonusFeatures: [],
nextMilestone: null
});
useEffect(() => {
async function calculateIncentives() {
if (!address) return;
const certs = await suiverse.certificates.getByAddress(address);
// Calculate multiplier based on education
let multiplier = 1.0;
const bonusFeatures = [];
if (certs.some(c => c.collectionId === 'defi-basics')) {
multiplier += 0.1;
bonusFeatures.push('10% Trading Fee Discount');
}
if (certs.some(c => c.collectionId === 'risk-management')) {
multiplier += 0.2;
bonusFeatures.push('Higher Leverage Limits');
}
if (certs.some(c => c.collectionId === 'advanced-trading')) {
multiplier += 0.3;
bonusFeatures.push('Premium Analytics');
}
// Determine next milestone
const nextMilestone = getNextMilestone(certs.length);
setIncentives({
multiplier,
bonusFeatures,
nextMilestone
});
}
calculateIncentives();
}, [address]);
return incentives;
}
function getNextMilestone(currentCerts: number) {
const milestones = [
{ count: 1, reward: 'Profile Badge' },
{ count: 3, reward: '5% Platform Fee Discount' },
{ count: 5, reward: 'VIP Support Access' },
{ count: 10, reward: 'Governance Voting Rights' }
];
return milestones.find(m => m.count > currentCerts) || null;
}
// Usage in component
export function TradingDashboard() {
const incentives = useLearningIncentives();
return (
<div className="bg-gradient-to-r from-purple-50 to-blue-50 p-4 rounded-lg">
<h3 className="font-bold mb-2">Your Education Benefits</h3>
<div className="mb-3">
<span className="text-sm text-gray-600">Reward Multiplier:</span>
<span className="ml-2 font-bold text-lg">
{incentives.multiplier}x
</span>
</div>
{incentives.bonusFeatures.length > 0 && (
<div className="mb-3">
<span className="text-sm text-gray-600">Active Bonuses:</span>
<ul className="mt-1">
{incentives.bonusFeatures.map(feature => (
<li key={feature} className="text-sm text-green-600">
✓ {feature}
</li>
))}
</ul>
</div>
)}
{incentives.nextMilestone && (
<div className="border-t pt-3">
<p className="text-sm">
Next Milestone: {incentives.nextMilestone.reward}
</p>
<p className="text-xs text-gray-500">
Earn {incentives.nextMilestone.count - certificates.length} more certificates
</p>
</div>
)}
</div>
);
}
Testing Your Integration
// src/__tests__/suiverse-integration.test.ts
import { render, screen, waitFor } from '@testing-library/react';
import { CertificateGate } from '@/components/CertificateGate';
import { suiverse } from '@/lib/suiverse';
jest.mock('@/lib/suiverse');
describe('SuiVerse Integration', () => {
it('should block access without certificate', async () => {
suiverse.certificates.getByAddress.mockResolvedValue([]);
render(
<CertificateGate requiredCertificates={['defi-basics']}>
<div>Protected Content</div>
</CertificateGate>
);
await waitFor(() => {
expect(screen.queryByText('Protected Content')).toBeNull();
expect(screen.getByText(/Education Required/)).toBeInTheDocument();
});
});
it('should allow access with certificate', async () => {
suiverse.certificates.getByAddress.mockResolvedValue([
{ collectionId: 'defi-basics', score: 85 }
]);
render(
<CertificateGate requiredCertificates={['defi-basics']}>
<div>Protected Content</div>
</CertificateGate>
);
await waitFor(() => {
expect(screen.getByText('Protected Content')).toBeInTheDocument();
});
});
});
Deployment Checklist
□ API key secured in environment variables
□ Error handling for API failures
□ Loading states implemented
□ Mobile responsive design
□ Certificate caching enabled
□ Fallback UI for non-certified users
□ Analytics tracking added
□ Performance optimized
More Tutorials Coming Soon
📅 Upcoming Tutorials
- Tutorial 4: Setting Up Talent Recruitment Pipeline
- Tutorial 5: Building Your Learning Portfolio
- Tutorial 6: Maximizing Learning Earnings
- Tutorial 7: Building Profitable Collections
- Tutorial 8: Content Marketing Strategies
- Tutorial 9: Building Certificate Verifier
- Tutorial 10: Creating Educational Quests
- Tutorial 11: Corporate Training Programs
- Tutorial 12: DAO Education Requirements
🎯 Request a Tutorial
Have a specific use case? Request a tutorial:
- Discord:
#tutorial-requests - GitHub: Issue with
tutoriallabel - Email: tutorials@suiverse.org
💡 Pro Tip: Complete tutorials in order for the best learning experience. Each builds on previous concepts!