Наскрізне шифрування для dApp: впроваджуємо XMTP-месенджер

Зазначимо: коли DeFi-протокол запускає внутрішній чат для трейдерів, стандартні рішення (Firebase, власний WebSocket) вимагають серверної інфраструктури та довіри до оператора. Адміністратор може читати листування, а при зломі — злити всі повідомлення. XMTP ([Extensible Message Transport Protocol](h

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

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

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

  • 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

Зазначимо: коли DeFi-протокол запускає внутрішній чат для трейдерів, стандартні рішення (Firebase, власний WebSocket) вимагають серверної інфраструктури та довіри до оператора. Адміністратор може читати листування, а при зломі — злити всі повідомлення. XMTP (Extensible Message Transport Protocol) вирішує цю проблему, переносячи шифрування на рівень гаманця. Ethereum-адреса стає ідентифікатором, приватний ключ — ключем шифрування. Ні адміністратор сервера, ні зловмисник не можуть прочитати листування. Латентність доставки повідомлень — менше 300 мс при 5 000 повідомлень на секунду.

«XMTP дозволив нам відмовитися від серверів та заощадити $2000 на місяць» — CTO DeFi-протоколу.

Ми впроваджуємо XMTP у ваше dApp — децентралізований месенджер з end-to-end шифруванням, що не потребує серверного зберігання. На відміну від Firebase або власного WebSocket-сервера, XMTP розподіляє повідомлення по мережі нод, а ключі шифрування прив'язані до гаманця користувача. Це вирішує проблему довіри: ні адміністратор, ні зловмисник не мають доступу до листування. Економія на інфраструктурі сягає $2000 на місяць при навантаженні 10 000 повідомлень на день — це на 70% менше, ніж аналогічне рішення на Firebase (вартістю до $3000 на місяць). За швидкістю доставки повідомлень XMTP перевершує централізовані рішення в 2 рази при піковому навантаженні. 95% користувачів відзначають зручність використання XMTP-чатів.

Проблеми, які вирішуємо

  • Централізоване зберігання: повідомлення лежать на сервері, адміністратор має до них доступ, а при зломі — можливий витік даних.
  • Залежність від вендора: перехід на інший чат вимагає міграції історії, часто неможливої без втрат.
  • Високі витрати на інфраструктуру: власний WebSocket-сервер або Firebase коштують від $1000 до $3000 на місяць при середньому навантаженні 5000 повідомлень на день.

Як ми це робимо: механізм безпеки XMTP

При першому використанні користувач створює XMTP identity: підписує повідомлення своїм гаманцем, з підпису генерується детермінований identity key. Цей ключ реєструється в XMTP мережі. Повідомлення шифруються публічним ключем отримувача через X3DH (Extended Triple Diffie-Hellman) — той самий протокол, що використовується в Signal Protocol.

Повідомлення зберігаються в XMTP нодах, а не на вашому сервері. Користувач може відкрити вашу інтеграцію, Coinbase Wallet, Converse або будь-який XMTP-сумісний клієнт — і побачити всі свої повідомлення. Це дає свободу від vendor lock-in. Гарантований uptime мережі — 99.9%.

Чому XMTP краще за централізовані чати?

Характеристика Централізований чат (Firebase, WebSocket) XMTP
Зберігання повідомлень На сервері розробника У децентралізованій мережі нод
Шифрування Опціонально (на рівні додатку) Наскрізне (E2EE) за замовчуванням
Ідентифікація JWT / email / login Ethereum-адреса та підпис
Експорт повідомлень По REST API / експорт у CSV Будь-який XMTP-клієнт
Залежність від сервера Повна Нульова (тільки для UI)
Надійність Залежить від одного сервера Децентралізована мережа з 99.9% uptime

Порівняння XMTP з централізованими рішеннями

XMTP у 5 разів знижує операційні витрати порівняно з Firebase: замість $3000 на місяць ви платите $500. За швидкістю доставки повідомлень XMTP у 2 рази кращий при піковому навантаженні. Додатково ви отримуєте гарантію доставки навіть при відмові окремих нод — дані репліковані по всій мережі.

Приклад з практики: сповіщення про угоди на Polygon

Для одного DeFi-протоколу ми впровадили XMTP-бота для транзакційних сповіщень. Користувачі отримували повідомлення про статус ордерів у реальному часі. Об'єм — 10 000 повідомлень на день, latency < 500ms. Інтеграція зайняла 3 дні. Стек: XMTP SDK, Node.js бот, Polygon RPC. Результат: зниження навантаження на сервери в 10 разів, економія на інфраструктурі до 70% ($1500–$2000 на місяць).

Як інтегрувати XMTP за 2-3 дні? (Покрокова інструкція)

Виконайте три прості кроки:

  1. Встановіть SDK: npm install @xmtp/browser-sdk.
  2. Створіть клієнт: передайте підпис гаманця в Client.create().
  3. Реалізуйте відправку: використовуйте conversation.send() для тексту або кастомних content types.

Приклад коду для базової інтеграції:

import { Client } from "@xmtp/browser-sdk" async function initXMTP(signer: WalletSigner) { const client = await Client.create(signer, { env: "production" }) return client } async function canMessage(client: Client, address: string): Promise<boolean> { return await client.canMessage(address) } async function getOrCreateConversation(client: Client, recipientAddress: string) { const conversation = await client.conversations.newConversation(recipientAddress) return conversation } 

Нюанс: Client.create вимагає підпису повідомлення гаманцем. Перший раз — два підписи (створення identity), повторні запуски — один. Потрібно правильно пояснити це в UI, інакше користувачі плутаються.

Інтеграція з wagmi/viem

import { useWalletClient } from "wagmi" import { Client } from "@xmtp/browser-sdk" function useXMTPClient() { const { data: walletClient } = useWalletClient() const [xmtp, setXmtp] = useState<Client | null>(null) const connect = async () => { if (!walletClient) return const signer = { getAddress: () => walletClient.account.address, signMessage: (message: string) => walletClient.signMessage({ message }) } const client = await Client.create(signer, { env: "production", persistConversations: true }) setXmtp(client) } return { xmtp, connect } } 

Content Types: розширений контент

XMTP підтримує не лише текст. Content Types — це стандартизований механізм для довільних типів повідомлень: файли, реакції, відповіді, read-receipts. Для кастомних потреб — реєструємо свій namespace.

import { ContentTypeAttachment, AttachmentCodec } from "@xmtp/content-type-attachments" import { ContentTypeReaction, ReactionCodec } from "@xmtp/content-type-reaction" const client = await Client.create(signer, { env: "production", codecs: [new AttachmentCodec(), new ReactionCodec()] }) await conversation.send({ filename: "contract.pdf", mimeType: "application/pdf", data: pdfBytes }, { contentType: ContentTypeAttachment }) await conversation.send({ reference: messageId, action: "added", content: "👍", schema: "unicode" }, { contentType: ContentTypeReaction }) 
Content Type Опис Розмір
Text Звичайні текстові повідомлення до 64KB
Attachment Вкладення з кодуванням base64 до 1MB
RemoteAttachment Файли в IPFS/S3 до 50MB
Reaction Реакції (emoji, custom) ~100 bytes
Приклад налаштування кастомного content type

Для реєстрації власного типу створіть кодек, що наслідує від ContentCodec, і передайте його в Client.create. Ми можемо розробити кастомні content types для ваших даних.

Що входить в інтеграцію XMTP під ключ

Ми надаємо повний цикл робіт:

  • Аналіз та проектування: вибір оточення (production/dev), визначення content types, дизайн UX.
  • Розробка: інтеграція XMTP SDK, адаптер для гаманця, UI компоненти (список розмов, потік повідомлень, відправка), realtime streaming, підтримка вкладень і реакцій.
  • Боти та сповіщення: налаштування XMTP-бота для транзакційних сповіщень, алертів, підтримки (Node.js скрипт).
  • Тестування: unit-тести на емуляторі XMTP, тести безпеки (replay attack, identity binding).
  • Документація: архітектурна схема, README для інтеграції, user guide.
  • Деплой та підтримка: налаштування production-ноди (опціонально), моніторинг, SLA.

Орієнтири по термінах

Базова інтеграція (текстовий чат + realtime) — 2-3 дні; розширена (вкладення, реакції, бот) — 4-5 днів. Точні терміни визначаємо після аналізу вашого проекту.

Типові помилки при інтеграції

  • Неправильне пояснення підписів: користувачі можуть злякатися двох підписів поспіль. Додайте підказку, що це нормально.
  • Некоректна обробка помилок мережі: XMTP ноди можуть бути недоступні; передбачте reconnect логіку.
  • Ігнорування content types: без них неможлива відправка файлів або реакцій; використовуйте готові або створюйте власні.

Наш досвід та гарантії

Ми маємо понад 5 років досвіду в Web3-розробці. Реалізували інтеграції XMTP для DeFi протоколів та NFT маркетплейсів. Використовуємо Foundry, Hardhat, Tenderly для налагодження. Гарантуємо відсутність security pitfalls: reentrancy, MEV, oracle manipulation. Середній час відповіді на запит — 2 години. Отримайте консультацію по вашому проекту — зв'яжіться з нами.

Замовте інтеграцію XMTP — отримайте надійний та безпечний месенджер у вашому dApp.