Розробка SocialFi-платформи

Проєктуємо та розробляємо блокчейн-рішення повного циклу: від архітектури смарт-контрактів до запуску DeFi-протоколів, NFT-маркетплейсів та криптобірж. Аудит безпеки, токеноміка, інтеграція з наявною інфраструктурою.
Показано 1 з 1Усі 1306 послуг
Розробка SocialFi-платформи
Складний
від 2 тижнів до 3 місяців
Часті запитання

Напрямки блокчейн-розробки

Етапи блокчейн-розробки

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1285
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1198
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    902
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1122
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    589
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    859

Розробка платформи SocialFi

SocialFi — це конвергенція соціальних мереж і DeFi: користувачі володіють своїм контентом і соціальним графом, монетизація вбудована в протокол, а не контролюється платформою. Friend.tech у 2023 році довів product-market fit: більше $50M обсягу торгівлі за перший місяць на простій механіці—купівлі «ключів» доступу до чатів з конкретними користувачами.

Але Friend.tech також продемонстрував проблему: користувачі—спекулянти, а не учасники соціальної мережі. Побудова стійкої платформи SocialFi означає вирішення проблеми, де соціальна цінність і фінансова механіка посилюють, а не заміняють одна одну.

Архітектурні компоненти SocialFi

1. On-chain соціальний граф

Традиційні соціальні мережі зберігають соціальний граф у централізованих базах даних. SocialFi переносить власність графа в блокчейн. Два підходи:

Lens Protocol. Відкритий протокол для соціального графа на Polygon/PoS. Профіль = NFT. Підписка = NFT. Пост (Publication) = запис в блокчейні. Усі дані належать користувачу, будь-який додаток читає граф. Lens v2 додав модулі монетизації: комісія за колекцію, реферальна, валюта.

Farcaster. Децентралізований протокол на Ethereum + Optimism. Акаунти реєструються в блокчейні, повідомлення зберігаються в p2p мережі (Hubs). Значно дешевше за Lens у газі. Активна екосистема: Warpcast—основний клієнт, Frames—інтерактивні NFT-додатки прямо в стрічці.

Користувацький on-chain граф. Для специфічних продуктів—користувацький контракт. Гнучко, але немає готової екосистеми.

// Спрощений on-chain соціальний граф
contract SocialGraph {
    struct Profile {
        address owner;
        string handle;         // унікальне ім'я @handle
        string metadataURI;    // IPFS CID з аватаром, біо тощо
        uint256 followerCount;
        uint256 createdAt;
    }

    mapping(uint256 => Profile) public profiles;
    mapping(address => uint256) public addressToProfileId;
    mapping(uint256 => mapping(uint256 => bool)) public follows;
    // follows[followerId][profileId] = true/false

    uint256 public nextProfileId = 1;

    event ProfileCreated(uint256 indexed profileId, address indexed owner, string handle);
    event Followed(uint256 indexed followerId, uint256 indexed profileId);

    function createProfile(string calldata handle, string calldata metadataURI)
        external returns (uint256 profileId) {
        require(addressToProfileId[msg.sender] == 0, "Already has profile");
        require(handleToProfileId[handle] == 0, "Handle taken");

        profileId = nextProfileId++;
        profiles[profileId] = Profile({
            owner: msg.sender,
            handle: handle,
            metadataURI: metadataURI,
            followerCount: 0,
            createdAt: block.timestamp
        });
        addressToProfileId[msg.sender] = profileId;
        emit ProfileCreated(profileId, msg.sender, handle);
    }

    function follow(uint256 profileId) external {
        uint256 followerId = addressToProfileId[msg.sender];
        require(followerId != 0, "Must have profile");
        require(!follows[followerId][profileId], "Already following");

        follows[followerId][profileId] = true;
        profiles[profileId].followerCount++;
        emit Followed(followerId, profileId);
    }
}

2. Механіки економіки творців

Bonding Curve токени (модель Friend.tech). Кожен творець має свій токен з bonding curve: ціна зростає при покупці, падає при продажу. Власники токену отримують доступ до виключного контенту/чату.

contract CreatorToken {
    // Bonding curve: ціна = (supply^2) / CURVE_FACTOR
    uint256 constant CURVE_FACTOR = 16000;

    mapping(address => uint256) public supply;  // supply[creator] = поточний supply
    mapping(address => mapping(address => uint256)) public balances; // balances[creator][holder]

    uint256 constant PROTOCOL_FEE = 50;  // 0.5%
    uint256 constant CREATOR_FEE = 50;   // 0.5%

    function getBuyPrice(address creator, uint256 amount) public view returns (uint256) {
        uint256 s = supply[creator];
        // Інтеграл: сума від s до s+amount від i=0 до n
        return _getPrice(s, amount);
    }

    function _getPrice(uint256 startSupply, uint256 amount) internal pure returns (uint256) {
        uint256 sum1 = startSupply == 0 ? 0 : (startSupply - 1) * startSupply * (2 * startSupply - 1) / 6;
        uint256 sum2 = (startSupply + amount - 1) * (startSupply + amount) * (2 * (startSupply + amount) - 1) / 6;
        return (sum2 - sum1) * 1 ether / CURVE_FACTOR;
    }

    function buyTokens(address creator, uint256 amount) external payable {
        uint256 price = getBuyPrice(creator, amount);
        uint256 protocolFee = price * PROTOCOL_FEE / 10000;
        uint256 creatorFee = price * CREATOR_FEE / 10000;
        require(msg.value >= price + protocolFee + creatorFee, "Insufficient ETH");

        supply[creator] += amount;
        balances[creator][msg.sender] += amount;

        payable(creator).transfer(creatorFee);
        // protocolFee залишається в контракті / йде в казну
    }
}

Subscription NFT. Місячна підписка на творця через NFT. Контракт перевіряє закінчення при доступі до контенту. ERC-5643—стандарт для поновлювальних NFT підписок.

Post monetization. Модуль Lens Protocol Collect: користувачі платять за збір (mint копія) посту. Творець отримує доходи. Можна налаштувати: безкоштовна збірка, платна збірка, обмежена видання (тільки N копій).

3. Зберігання контенту

On-chain зберігання контенту—занадто дорого для будь-якого масштабу. Стандартні рішення:

IPFS + Pinning. Контент публікується в IPFS, CID зберігається в блокчейні. Pinning через Pinata / web3.storage / власну ноду гарантує доступність. Проблема: якщо ніхто не пінує—дані зникають.

Arweave. Постійне сховище з одноразовою оплатою. «Заплати один раз, зберігай назавжди» модель. AR токен. Використовується Lens Protocol для метаданих. Bundlr (тепер Irys)—JS SDK для завантаження в Arweave.

Ceramic Network. Мутабельні децентралізовані потоки даних. Дані змінювані (можна редагувати профіль), але історія змін зберігається. Використовується в Orbis (Lens-based соціальний додаток).

// Завантажувати контент в Arweave через Irys
import Irys from '@irys/sdk'

async function uploadPost(content: string, mediaFiles: File[]): Promise<string> {
    const irys = new Irys({
        url: 'https://node2.irys.xyz',
        token: 'ethereum',
        key: wallet.privateKey,
    })

    // Завантажуємо медіа
    const mediaUpload = await irys.uploadFolder(mediaFiles)

    // Публікуємо пост з IPFS CID медіа
    const postData = {
        content,
        media: mediaUpload.map(m => `ar://${m.id}`),
        timestamp: Date.now(),
    }

    const receipt = await irys.upload(JSON.stringify(postData), {
        tags: [
            { name: 'Content-Type', value: 'application/json' },
            { name: 'App-Name', value: 'YourSocialFi' },
        ]
    })

    return `ar://${receipt.id}` // зберегти цей URI в блокчейні
}

4. Спільноти з гейтингом токенів

Доступ до контенту, чатів, подій—тільки для власників певних NFT або мінімальної кількості творчих токенів.

// Backend middleware для гейтингу токенів
async function requireTokenAccess(creatorAddress: string, userAddress: string): Promise<boolean> {
    const balance = await creatorToken.read.balances([creatorAddress, userAddress])
    return balance > 0n

    // Або перевірка NFT:
    // const nftBalance = await nftContract.read.balanceOf([userAddress])
    // return nftBalance > 0n
}

// Real-time чат з гейтингом токенів (Sign-In With Ethereum + перевірка токена)
app.use('/chat/:creatorId', async (req, res, next) => {
    const { address } = req.user // з JWT після аутентифікації SIWE
    const hasAccess = await requireTokenAccess(req.params.creatorId, address)
    if (!hasAccess) return res.status(403).json({ error: 'Token required' })
    next()
})

Побудова на Lens Protocol

Lens — найдозріліший соціальний протокол. Використання Lens дає вам готовий соціальний граф без його побудови з нуля.

import { PublicClient, development } from '@lens-protocol/client'

const client = PublicClient.create({ environment: development })

// Отримати профіль
const profile = await client.profile.fetch({ forHandle: 'lens/username' })

// Публікувати пост через Lens
async function createPost(content: string, contentURI: string) {
    const result = await client.publication.postOnchain({
        contentURI, // ar:// або ipfs:// URI
    })
}

// Читати стрічку
const feed = await client.feed.fetch({ where: { for: profile.id } })

Lens App Development Kit надає React hooks: useProfile, useFeed, usePublication. Повноцінна соціальна платформа на Lens без написання графічного контракту—значно швидше.

Компромис Lens: Polygon L1 (тепер переходить на zkSync), газ не нульовий. Для масових користувачів потрібна gasless інтеграція через Lens Dispatcher (Lens платить газ за перевірені додатки).

Farcaster Frames

Frames—інтерактивні додатки прямо в стрічці Farcaster. Пост може містити кнопки, форми, зображення. Користувач взаємодіє, не виходячи з клієнта. Застосування: mint NFT з посту, голосування в опитуваннях, механіка гри прямо в стрічці.

// Frame метаданні (розширення Open Graph)
export const metadata = {
    other: {
        'fc:frame': 'vNext',
        'fc:frame:image': 'https://your-app.com/frame-image.png',
        'fc:frame:button:1': 'Mint NFT',
        'fc:frame:button:2': 'Share',
        'fc:frame:post_url': 'https://your-app.com/api/frame-action',
    }
}

// Обробник дій Frame
app.post('/api/frame-action', async (req, res) => {
    const { buttonIndex, fid, castId } = req.body.untrustedData
    // Перевіряємо через Farcaster Hub
    const verified = await verifyFrameMessage(req.body)

    if (buttonIndex === 1) {
        // Mint NFT для користувача (по fid → ETH адреса)
        const userAddress = await getAddressForFid(fid)
        await mintNft(userAddress)
        return res.json({ image: 'https://your-app.com/minted.png' })
    }
})

Економіка платформи

Потоки доходів для творців:

  • Комісія торговлі від операцій bonding curve (0.5-2%)
  • Платежі за підписку
  • Комісії за збір контенту
  • Чайові (прямі пожертвування)

Потоки доходів для протоколу:

  • Комісія протоколу від кожної операції (0.5-1%)
  • Преміум функції (верифікація, розширена аналітика)
  • B2B ліцензування

Токен управління. Власники токена управління отримують частку комісій протоколу через staking, беруть участь у голосуваннях DAO (параметри комісій, білих списків програм творців). Створює узгоджені стимули: токен цінний → більше розробників → більше користувачів → більше комісій → токен цінний.

Захист від спаму та опір Sybil

На відкритій платформі без бар'єрів—спам і bot-акаунти. Варіанти захисту:

ETH депозит для створення профілю. Невеликий депозит (0.001-0.01 ETH) при реєстрації, повертається при видаленні. Підвищує вартість атаки Sybil, не блокує реальних користувачів.

Proof of Humanity / Worldcoin. Верифікація унікальності людини. Верифіковані користувачі отримують значок, додатковий доступ або зниження комісії.

Reputation stake. Творець вносить токени як «репутаційний стейк». При поганій поведінці (скарги на спам) стейк може бути скорочено. Аналогічно operator bond в екосистемі restaking.

Стек розробки

Компонент Технологія
Соціальний протокол Lens Protocol / Farcaster / користувацький
Смарт-контракти Solidity + Foundry
Зберігання контенту Arweave (Irys) + IPFS (Pinata)
Real-time чат WebSocket + middleware гейтингу токенів
Фронтенд Next.js + wagmi + Lens SDK / @farcaster/hub-web
Бекенд Node.js + PostgreSQL (індексування подій)
Індексер The Graph (subgraph) / Ponder
Мобільний React Native + WalletConnect

Процес розробки

Стратегія та вибір протоколу (1 тиждень). Будувати на Lens/Farcaster чи користувацький граф? Визначає весь обсяг.

Смарт-контракти (3-5 тижнів). Творчий токен з bonding curve, subscription NFT, механіка збору, токен управління. Аудит—обов'язковий, bonding curve маніпульована при неправильній реалізації.

Бекенд та індексер (3-4 тижні). Subgraph для індексування подій, API для соціальної стрічки, middleware гейтингу токенів, інтеграція IPFS/Arweave.

Фронтенд (4-6 тижнів). Стрічка, профілі, композитор постів, UI торговлі токенів, творча панель керування.

Мобільний (опціонально, 4-6 тижнів). Клієнт React Native з WalletConnect.

MVP на Lens Protocol з базовою монетизацією—2-3 місяці. Повна користувацька платформа SocialFi з власним протоколом—5-8 місяців.