Розробка Soulbound Token (SBT)
Soulbound Token (SBT) — це невідтворюваний NFT. Неможливо продати, передати чи придбати. Токен "прив'язаний до душі" — адреси, яка його отримала. Концепцію запропонували Vitalik Buterin, Glen Weyl та Puja Ohlhaver у 2022 році для представлення репутації, досягнень та кваліфікацій у Web3.
Технічні реалізації
ERC-5192: Мінімальний Soulbound NFT
Офіційний стандарт для soulbound NFT (завершений EIP):
import "@openzeppelin/contracts/token/ERC721/ERC721.sol";
interface IERC5192 {
event Locked(uint256 tokenId);
event Unlocked(uint256 tokenId);
function locked(uint256 tokenId) external view returns (bool);
}
contract SoulboundToken is ERC721, IERC5192 {
mapping(uint256 => bool) private _locked;
function locked(uint256 tokenId) external view override returns (bool) {
return _locked[tokenId];
}
// Перевизначення функцій передачі для блокування передачі
function _beforeTokenTransfer(
address from, address to, uint256 tokenId, uint256 batchSize
) internal override {
require(
from == address(0) || to == address(0),
"SBT: Token is non-transferable"
);
super._beforeTokenTransfer(from, to, tokenId, batchSize);
}
function mint(address to, uint256 tokenId) external onlyOwner {
_locked[tokenId] = true;
_mint(to, tokenId);
emit Locked(tokenId);
}
}
from == address(0) — mint (дозволено). to == address(0) — burn (якщо дозволено).
Варіанти використання та метаданні
Освітні сертифікати: завершений курс, ступень. Метаданні: видавець, дата, назва курсу, оцінка.
Участь у голосуванні DAO: доказ участі. Метаданні: dao_address, proposal_id, голос, часова позначка.
KYC/AML верифіковано: адреса пройшла верифікацію. Метаданні: видавець (Persona, Jumio), термін дії, рівень.
Досягнення: першие 1000 користувачів протоколу, постачальник ліквідності > 1 року, учасник.
POAP (Proof of Attendance Protocol): заходи, конференції. Технічно POAP передаються, але за змістом — soulbound.
Приватність SBT
Публічні SBT розкривають повну історію адреси. Кожен бачить всі кваліфікації власника гаманця. Це проблема приватності.
zkSBT: Zero-Knowledge Soulbound Token. Власник доводить наявність певного типу SBT без розкриття конкретного токена чи інших SBT. Реалізації: Sismo Protocol, Polygon ID.
Твердження: "У мене є SBT верифікації KYC від Persona"
ZK Proof: доводить факт без розкриття адреси чи інших SBT
Відкликання
SBT повинні підтримувати відкликання: якщо верифікація застаріває (застарілий KYC), якщо власник порушує правила.
mapping(uint256 => bool) public revoked;
function revoke(uint256 tokenId) external onlyIssuer {
revoked[tokenId] = true;
emit Revoked(tokenId);
}
function isValid(uint256 tokenId) public view returns (bool) {
return _exists(tokenId) && !revoked[tokenId] && !_isExpired(tokenId);
}
SBT — це будівельний блок для on-chain систем репутації. Розробка базового контракту SBT займає 1-2 дні. З приватністю та відкликанням — 1-2 тижні.







