Soulbound Tokens & ENS
Soulbound Tokens (SBTs)
The Concept: Non-Transferable Reputation
Proposed by Vitalik Buterin, E. Glen Weyl, and Puja Ohlhaver (May 2022)
Core idea:
NFTs today:
- Transferable (can sell/trade)
- Financial value (price in ETH)
- Represent ownership of assets
Soulbound Tokens:
- Non-transferable (cannot sell/trade)
- No financial value (priceless, not worthless)
- Represent achievements, credentials, reputation
- Bound to your "Soul" (identity)
Definition:
Soul = Ethereum address representing person/entity
SBT = Token bound to Soul, cannot be transferred
Properties:
✓ Non-transferable (immutable binding)
✓ Publicly visible (verifiable)
✓ Revocable (by issuer if needed)
✓ Composable (multiple SBTs = richer identity)
✗ Cannot be sold
✗ Cannot be given away
SBT Examples
1. Education credentials:
contract DegreeSBT {
struct Degree {
string university;
string degree;
string major;
uint256 graduationYear;
bool revoked;
}
// Soul → Degree
mapping(address => Degree) public degrees;
address public immutable university;
constructor() {
university = msg.sender;
}
// Issue degree (non-transferable)
function issueDegree(
address soul,
string memory degree,
string memory major,
uint256 year
) external {
require(msg.sender == university, "Only university");
require(degrees[soul].graduationYear == 0, "Already has degree");
degrees[soul] = Degree({
university: "Example University",
degree: degree,
major: major,
graduationYear: year,
revoked: false
});
emit DegreeIssued(soul, degree, major, year);
}
// Revoke degree (in case of fraud)
function revokeDegree(address soul) external {
require(msg.sender == university, "Only university");
degrees[soul].revoked = true;
emit DegreeRevoked(soul);
}
// No transfer function! Token is soulbound
}
// Usage:
MIT issues SBT: Computer Science PhD, 2023
Bound to: 0xAlice...
Anyone can verify: Alice has MIT CS PhD
Alice cannot sell it (no transfer)
Alice cannot give it away (bound to her address)
2. Attendance POAPs (Proof of Attendance Protocol):
Event: ETHDenver 2024
Attendees: 15,000 people
Traditional POAP:
- Transferable NFT
- Problem: Can buy on secondary market
- Doesn't prove YOU attended
- Just proves someone attended and sold to you
Soulbound POAP:
- Non-transferable
- Bound to address that claimed at event
- Proves YOU attended
- Cannot be bought/sold
- Real attendance proof
Applications:
- Reputation in communities
- Access to alumni events
- Proof of participation
- Voting weight (attended X conferences)
3. Credit scores:
contract CreditScoreSBT {
struct CreditHistory {
uint256 score; // 300-850
uint256 lastUpdated;
uint256 loansRepaid;
uint256 loansDefaulted;
uint256 totalBorrowed;
}
mapping(address => CreditHistory) public creditScores;
// Update score based on loan performance
function updateScore(
address soul,
bool repaid,
uint256 amount
) external onlyLender {
CreditHistory storage credit = creditScores[soul];
if (repaid) {
credit.loansRepaid++;
credit.score = min(850, credit.score + 10);
} else {
credit.loansDefaulted++;
credit.score = max(300, credit.score - 50);
}
credit.totalBorrowed += amount;
credit.lastUpdated = block.timestamp;
}
// Cannot transfer credit score
// Follows you forever
}
// Benefits:
// - Borrowers build reputation
// - Lenders assess risk
// - Good behavior rewarded
// - Bad behavior penalized
// - Cannot buy fake credit history
4. Work credentials:
Employer: Google
Issues SBT to employee: "Software Engineer, 2020-2024"
Properties:
- Bound to employee's address
- Verifiable by anyone
- Cannot be faked
- Cannot be transferred
- Public or private (encrypted)
Use cases:
- Job applications (prove experience)
- Professional networks (LinkedIn on-chain)
- Access to alumni networks
- Reputation in hiring