Skip to main content

SuiVerse Complete Tutorials

Choose Your Tutorial Path

Tutorial Categories

🎓 For Learners

✍️ 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:

CourseTimeDifficultyPass Rate
Blockchain Basics20 minBeginner92%
Intro to Sui25 minBeginner88%
DeFi Fundamentals30 minIntermediate81%
NFT Creation20 minBeginner90%
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

  1. 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

  1. Tutorial 4: Setting Up Talent Recruitment Pipeline
  2. Tutorial 5: Building Your Learning Portfolio
  3. Tutorial 6: Maximizing Learning Earnings
  4. Tutorial 7: Building Profitable Collections
  5. Tutorial 8: Content Marketing Strategies
  6. Tutorial 9: Building Certificate Verifier
  7. Tutorial 10: Creating Educational Quests
  8. Tutorial 11: Corporate Training Programs
  9. Tutorial 12: DAO Education Requirements

🎯 Request a Tutorial

Have a specific use case? Request a tutorial:


💡 Pro Tip: Complete tutorials in order for the best learning experience. Each builds on previous concepts!