Розробка децентралізованого месенджера на блокчейні

Розробка децентралізованого месенджера Головне питання при проектуванні децентралізованого месенджера — що саме децентралізовано? Зберігання повідомлень? Маршрутизація? Identity? Шифрування? Ми пропонуємо професійну розробку децентралізованого месенджера з нуля, де кожен шар дійсно децентралізова

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

Часті запитання

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

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

Розробка децентралізованого месенджера

Головне питання при проектуванні децентралізованого месенджера — що саме децентралізовано? Зберігання повідомлень? Маршрутизація? Identity? Шифрування? Ми пропонуємо професійну розробку децентралізованого месенджера з нуля, де кожен шар дійсно децентралізований, а не маскується блокчейн-обгорткою. Чесна архітектура вимагає явного вибору trade-offs на кожному рівні. Наші інженери з 10-річним досвідом у Web3 допомагають знайти правильний баланс. Більше 90% проєктів у цій області страждають від невірних припущень — наприклад, використовують блокчейн для зберігання повідомлень, що робить їх дорогими та повільними. Ми виправляємо це, застосовуючи гібридну схему.

Які задачі вирішує децентралізований месенджер?

Основна задача — дати користувачам контроль над даними та комунікаціями без посередників. Це критично для конфіденційних переписок, DAO-спільнот, децентралізованих бірж та ігор. Крім того, децентралізовані месенджери стійкі до цензури та блокувань.

Протокольний стек: транспорт, ідентифікація, шифрування

Transport layer — розробка децентралізованого месенджера

XMTP (Extensible Message Transport Protocol) — de facto стандарт для Web3 месенджерів на поточний момент. Поверх Waku (libp2p-based messaging network). Повідомлення зберігаються на XMTP нодах (федеративна мережа), ідентифікація — Ethereum адреса, шифрування — Double Ratchet (як у Signal).

import { Client } from '@xmtp/xmtp-js'; import { Wallet } from 'ethers'; // Створення XMTP ідентифікатора (підпис гаманцем) const xmtpClient = await Client.create(signer, { env: 'production' }); // Перевірка: чи зареєстровано адресу в XMTP const isOnNetwork = await Client.canMessage(recipientAddress); // Створення або відкриття conversation const conversation = await xmtpClient.conversations.newConversation(recipientAddress); // Відправка повідомлення await conversation.send('Hello from Web3'); // Отримання історії const messages = await conversation.messages({ limit: 50 }); // Streaming нових повідомлень for await (const message of await conversation.streamMessages()) { console.log(`${message.senderAddress}: ${message.content}`); } 

Перевага XMTP: готова E2E шифрування, cross-app (повідомлення працюють між різними dApp на базі XMTP: Coinbase Wallet, Converse, Lens), не потрібно будувати p2p інфраструктуру. XMTP інтегрується у 5 разів швидше для MVP порівняно з Waku.

Ідентифікація та управління ключами

XMTP прив'язує ідентифікатор до Ethereum адреси автоматично. При standalone підході потрібна схема key derivation. Визначаємо ключі через HKDF з підпису детермінованого повідомлення:

async function deriveMessagingKeys(signer: ethers.Signer): Promise<{ identityKey: Uint8Array; preKey: Uint8Array; }> { const message = 'MyMessenger Identity Key v1\n\nThis key is used for encrypted messaging.\nSign to generate your keys.'; const signature = await signer.signMessage(message); const keyMaterial = await crypto.subtle.importKey('raw', hexToBytes(signature), 'HKDF', false, ['deriveKey', 'deriveBits']); const identityKeyBits = await crypto.subtle.deriveBits( { name: 'HKDF', hash: 'SHA-256', salt: new Uint8Array(32), info: new TextEncoder().encode('identity-key') }, keyMaterial, 256 ); const preKeyBits = await crypto.subtle.deriveBits( { name: 'HKDF', hash: 'SHA-256', salt: new Uint8Array(32), info: new TextEncoder().encode('pre-key') }, keyMaterial, 256 ); return { identityKey: new Uint8Array(identityKeyBits), preKey: new Uint8Array(preKeyBits) }; } 

Важно: якщо користувач змінює гаманець — він втрачає ключі. Механізм backup критичний.

Шифрування повідомлень

Приклад ECDH + AES-GCM
async function encryptMessage( plaintext: string, senderPrivateKey: Uint8Array, recipientPublicKey: Uint8Array ): Promise<{ ciphertext: Uint8Array; nonce: Uint8Array }> { const sharedSecret = await performECDH(senderPrivateKey, recipientPublicKey); const encryptionKey = await crypto.subtle.importKey( 'raw', sharedSecret, { name: 'AES-GCM' }, false, ['encrypt'] ); const nonce = crypto.getRandomValues(new Uint8Array(12)); const ciphertext = await crypto.subtle.encrypt( { name: 'AES-GCM', iv: nonce }, encryptionKey, new TextEncoder().encode(plaintext) ); return { ciphertext: new Uint8Array(ciphertext), nonce }; } 

Для групового чату — симетричний ключ групи, зашифрований публічними ключами кожного учасника (sealed sender модель).

Forward secrecy через Double Ratchet

Статичний ECDH ключ — слабкість: компрометація ключа розкриває всю історію. Double Ratchet вирішує це: кожне повідомлення шифрується новим ефемерним ключем. XMTP реалізує його внутрішньо — це одна з причин вибирати його замість самостійної реалізації.

Як вибрати протокол передачі: XMTP чи Waku?

Критерій XMTP Waku (standalone)
E2E шифрування Вбудоване (Double Ratchet) Потребує реалізації
Cross-app Так (спільна мережа) Ні
Групові чати MLS v3 (нативні) Потребує реалізації
Складність інтеграції Низька (SDK) Висока (налаштування нод)
Контроль над інфраструктурою Федеративна Повний

XMTP краще для швидкої інтеграції та сумісності. Waku — для повного контролю та кастомної маршрутизації.

Зберігання, сповіщення та групова архітектура

Як зберігати повідомлення?

Проблема: блокчейн дорогий. Варіанти:

Сховище Децентралізація Вартість Швидкість
XMTP nodes Федеративна Безкоштовно ~200ms
IPFS + Filecoin Висока ~$0.01/GB/місяць 1-5 сек
Ceramic/ComposeDB Висока Безкоштовно (light) ~500ms
Arweave Максимальна ~$0.005/MB одноразово 2-30 сек
Власний сервер Ні Дешево <50ms

Для реального UX — гібридна схема: повідомлення в XMTP/Waku (fast, p2p), архівні — в IPFS з Filecoin pinning.

Push сповіщення

Waku та XMTP не мають нативного push. Для мобільних сповіщень потрібен PUSH service. XMTP підтримує Push через @xmtp/react-native-sdk + XMTP push service (можна self-host). Для web: Service Worker + Web Push API.

Групові чати

XMTP v3 (MLS — Messaging Layer Security) додає нативні групи з E2E шифруванням та forward secrecy для всієї групи. Управління membership потребує оновлення групового ключа при кожній зміні складу.

// XMTP v3 Group API const group = await xmtpClient.conversations.newGroup([member1, member2, member3]); await group.send('Hello group'); await group.addMembers([newMemberAddress]); 

On-chain компонент: що варто зберігати в блокчейні

Розумно on-chain тільки:

  • Публічні ключі (identity registration) — один раз
  • Group registry (якщо публічні групи)
  • Token-gated access — перевірка володіння NFT/токенами для входу в group chat

ENS інтеграція: резолвити name.eth → адреса → XMTP перевірка через canMessage.

Структура фронтенду

src/ components/ ConversationList/ MessageThread/ MessageInput/ ContactSearch/ hooks/ useXmtpClient useConversations useMessages stores/ 

React Query + Zustand для кешування. Повідомлення кешуються локально (IndexedDB), streaming додає нові без перезавантаження.

Орієнтири за термінами розробки

XMTP-based месенджер (1-на-1 чати, ENS резолвінг, базовий UI) — 2-3 тижні. Групові чати (MLS v3), push сповіщення, token-gated rooms — ще 2-3 тижні. Повноцінний продукт з file sharing, read receipts, mobile-адаптацією — 2-3 місяці.

Що входить в роботу

  • Аналіз архітектури: вибір протоколу (XMTP/Waku), визначення рівнів децентралізації.
  • Реалізація бекенду: налаштування XMTP нод або Waku relay, інтеграція з IPFS.
  • Інтеграція з гаманцями: MetaMask, WalletConnect, Phantom (Solana).
  • Шифрування та управління ключами: Double Ratchet, backup seed.
  • Фронтенд: React для web, React Native для mobile, адаптивний UI.
  • Розгортання та тестування: смарт-контракти (якщо потрібно), аудит безпеки (Tenderly, Slither).
  • Документація та навчання: передача репозиторію, readme, навчання вашої команди.

Чому варто довірити розробку нам?

  • 5 років на ринку децентралізованих технологій.
  • Більш ніж 15 Web3-проєктів у портфоліо, включаючи DeFi та NFT маркетплейси.
  • Інженери з сертифікатами Matter Labs та Ethereum Foundation.
  • Ми гарантуємо роботу за специфікацією та виправляємо bugs протягом гарантійного терміну.

Замовте розробку під ключ — ми оцінимо ваш проєкт безкоштовно. Зв'яжіться з нами для консультації, допоможемо вибрати архітектуру під ваш бюджет.