Разработка платформы creator-токенов
Creator-токены — это токены, выпущенные конкретным человеком (стримером, музыкантом, спортсменом, блогером), которые дают держателям доступ к эксклюзивному контенту, возможность участвовать в голосованиях, получать долю доходов или просто выражать принадлежность к сообществу. Friend.tech довёл эту идею до $100M+ объёма торгов за несколько недель в 2023 году и породил волну клонов. Rally, Roll, Bitclout/DeSo пытались до него.
Технически платформа creator-токенов интереснее, чем кажется. Главный вопрос не «как выпустить ERC-20» — это тривиально. Вопрос в том, как устроить экономику, которая создаёт ценность и для создателя, и для держателей, а не просто pump-and-dump инструмент.
Bonding Curve: экономический механизм
Friend.tech использует bonding curve — автоматический маркет-мейкер, где цена токена (в Friend.tech — «shares») детерминированно определяется текущим supply. Нет order book, нет LP, нет внешней ликвидности.
Простейшая линейная кривая: price = k * supply. При покупке supply растёт → цена растёт. При продаже — наоборот. Friend.tech использовал квадратичную формулу: price = supply² / divisor.
contract CreatorTokenBondingCurve {
uint256 public constant DIVISOR = 16000; // параметр кривой
// Friend.tech formula: цена для N-го токена
function getPrice(uint256 supply, uint256 amount) public pure returns (uint256) {
uint256 sum1 = supply == 0 ? 0 : (supply - 1) * supply * (2 * (supply - 1) + 1) / 6;
uint256 sum2 = (supply + amount - 1) * (supply + amount) * (2 * (supply + amount - 1) + 1) / 6;
uint256 summation = sum2 - sum1;
return summation * 1 ether / DIVISOR;
}
function getBuyPrice(address creator, uint256 amount) public view returns (uint256) {
return getPrice(sharesSupply[creator], amount);
}
function getSellPrice(address creator, uint256 amount) public view returns (uint256) {
return getPrice(sharesSupply[creator] - amount, amount);
}
}
Спред между buy и sell. Из-за монотонно возрастающей кривой buy всегда дороже sell при том же supply. Это встроенный spread — основная защита от мгновенного arbitrage. При покупке 1 токена при supply=100 и немедленной продаже: пользователь получает обратно меньше, чем заплатил (на величину spread).
Протокольная и creator комиссия. Friend.tech брал 10% от каждой транзакции: 5% в протокол, 5% создателю. Это пассивный доход для создателей с каждой покупки/продажи их токена.
uint256 constant PROTOCOL_FEE_PERCENT = 5; // 5%
uint256 constant CREATOR_FEE_PERCENT = 5; // 5%
function buyShares(address creator, uint256 amount) external payable {
uint256 supply = sharesSupply[creator];
require(supply > 0 || creator == msg.sender, "Only creator can buy first share");
uint256 price = getPrice(supply, amount);
uint256 protocolFee = price * PROTOCOL_FEE_PERCENT / 100;
uint256 creatorFee = price * CREATOR_FEE_PERCENT / 100;
require(msg.value >= price + protocolFee + creatorFee, "Insufficient payment");
sharesBalance[creator][msg.sender] += amount;
sharesSupply[creator] = supply + amount;
emit Trade(msg.sender, creator, true, amount, price, protocolFee, creatorFee, supply + amount);
(bool success1,) = protocolFeeDestination.call{value: protocolFee}("");
(bool success2,) = creator.call{value: creatorFee}("");
require(success1 && success2, "Fee transfer failed");
}
Первый токен — продаётся только самому создателю. Это предотвращает создание токена на чужое имя.
Проблемы bonding curve и альтернативы
Манипуляция при launch. Бот покупает первые N токенов создателя до того, как аудитория узнала о создателе. Цена уже высокая → органические покупатели переплачивают → бот продаёт. Mitigation: lock period для первых покупок, максимальная аллокация в первые часы, proof-of-humanity для создателей.
Концентрация у ранних покупателей. Первые держатели имеют самую низкую cost basis и могут в любой момент обвалить цену. Для платформы, ориентированной на долгосрочные сообщества, это системная проблема. Решения: vesting для creator-аллокации, lock-up через governance.
Отсутствие фундаментальной ценности. Если токен не даёт реальных привилегий (контент, доходы, голосование) — он чистая спекуляция. Friend.tech упал в 95%+ от пика когда спекулятивный интерес иссяк и не оказалось utility.
Альтернативные модели:
- Fixed supply с auction. Создатель выпускает фиксированное количество токенов, продаёт через Dutch auction. Прозрачно, нет манипуляции с кривой, но нет continuous market.
- NFT membership. Вместо fungible токенов — NFT с tier-системой. Каждый NFT = membership уровень (Bronze/Gold/Platinum). Нет спекулятивной механики, есть чёткий utility.
- Revenue share token. ERC-20 токен с right to claim долю revenues создателя. Реальный utility, но требует регуляторной проработки (это может быть security).
Utility слой: что делает токен ценным
Без utility creator-токен — это просто спекулятивный инструмент. Список механик, которые реально работают:
Paywall контент. Доступ к exclusive контенту при балансе выше порога. Верификация off-chain через подпись кошелька (token-gating):
// Token-gating middleware
async function checkCreatorTokenAccess(
walletAddress: string,
creatorAddress: string,
requiredBalance: number,
provider: ethers.Provider
): Promise<boolean> {
const contract = new ethers.Contract(PLATFORM_ADDRESS, ABI, provider);
const balance = await contract.sharesBalance(creatorAddress, walletAddress);
return balance >= requiredBalance;
}
Governance в сообществе. Голосование за контент (какую игру стримить, какой трек записать, куда поехать). Вес голоса пропорционален балансу.
Revenue share. Часть доходов создателя (стриминг-платформы, мерч, спонсорство) распределяется держателям. Требует:
- Off-chain сбор данных о доходах
- Oracle или trusted verifier для подтверждения суммы
- Merkle distributor для эффективного распределения
contract CreatorRevenueDistributor {
struct Distribution {
address creator;
uint256 totalAmount;
bytes32 merkleRoot; // root дерева: address -> claim amount
uint256 snapshotBlock;
bool finalized;
}
mapping(uint256 => Distribution) public distributions;
mapping(uint256 => mapping(address => bool)) public claimed;
function claimRevenue(
uint256 distributionId,
uint256 amount,
bytes32[] calldata proof
) external {
Distribution storage dist = distributions[distributionId];
require(!claimed[distributionId][msg.sender], "Already claimed");
bytes32 leaf = keccak256(abi.encodePacked(msg.sender, amount));
require(MerkleProof.verify(proof, dist.merkleRoot, leaf), "Invalid proof");
claimed[distributionId][msg.sender] = true;
payable(msg.sender).transfer(amount);
emit RevenueClaimed(distributionId, msg.sender, amount);
}
}
Ticket гарантии. Держатель N токенов получает guaranteed access к ивентам (концерты, стримы с ограниченным числом зрителей, встречи). Верификация через POAP или специализированный ticket NFT.
Социальный граф и discovery
Creator-токен платформа — это не только контракты. Ключевой компонент — социальные features: discovery новых создателей, лента активности (кто что купил), leaderboard держателей.
On-chain события как социальный граф. Каждый Trade event — это public информация о том, кто поддерживает какого создателя. Индексирование через The Graph:
type Trade @entity {
id: ID!
trader: Bytes!
subject: Bytes! # creator address
isBuy: Boolean!
shareAmount: BigInt!
ethAmount: BigInt!
timestamp: BigInt!
blockNumber: BigInt!
}
type Creator @entity {
id: ID!
address: Bytes!
totalSupply: BigInt!
holders: [Holder!]! @derivedFrom(field: "creator")
totalTradingVolume: BigInt!
}
Social proof механика. Показывать «ваши друзья держат токены X» — мощный growth механизм. Требует знания social graph (Twitter/X API, Lens Protocol, Farcaster). Friend.tech строился на Twitter аккаунтах — социальный граф был встроен.
Мобильное-first: архитектурные решения
Creator-токен платформы почти всегда mobile-first (Friend.tech был только мобильным приложением в начале). Это влияет на архитектуру:
Embedded wallet. Пользователи не хотят устанавливать MetaMask. Privy, Dynamic, Magic — embedded wallet SDKs с email/social login. Ключ хранится в secure enclave или MPC.
Gas abstraction. Пользователь платит в ETH, но процесс должен быть transparent. Account abstraction (EIP-4337) с paymaster — протокол спонсирует первые N транзакций нового пользователя.
Base chain. Friend.tech выбрал Base — Coinbase L2. Низкие комиссии ($0.01–0.10 за транзакцию), быстрое подтверждение, хорошая ликвидность, поддержка Coinbase wallet нативно.
Риски и защиты
Rug pull создателем. Создатель владеет первым токеном (cheap entry), накапливает и продаёт при пике аудитории. Mitigation: lock период для creator shares, public disclosure creator holdings.
Wash trading. Искусственное накручивание объёма торгов для попадания в leaderboard и привлечения внимания. Сложно предотвратить полностью, но: minimum hold period перед sell, fee структура которая делает wash trading убыточным.
Сybersquatting. Регистрация токенов на имена популярных личностей до того как они сами пришли на платформу. Митигация: верификация через OAuth (Twitter, Instagram), только верифицированные аккаунты могут создавать токены.
Сроки разработки
| Компонент | Срок |
|---|---|
| Смарт-контракты (bonding curve, revenue share, governance) | 4–6 недель |
| Backend (индексер, API, social features) | 4–6 недель |
| Embedded wallet интеграция + account abstraction | 2–3 недели |
| Mobile приложение (iOS + Android) | 6–10 недель |
| Creator onboarding + KYC | 1–2 недели |
| Аудит контрактов | 3–4 недели |
MVP с bonding curve, базовым token gating и мобильным приложением: 3–4 месяца. Платформа с revenue share, governance и полноценными social features: 5–7 месяцев.







