Отметим: когда 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 сообщений в день. По скорости доставки сообщений XMTP превосходит централизованные решения в 2 раза при пиковой нагрузке.
Механизм безопасности сообщений XMTP
При первом использовании пользователь создаёт XMTP identity: подписывает сообщение своим кошельком, из подписи генерируется детерминированный identity key. Этот ключ регистрируется в XMTP сети. Сообщения шифруются публичным ключом получателя через X3DH (Extended Triple Diffie-Hellman) — тот же протокол, что используется в Signal Protocol.
Сообщения хранятся в XMTP нодах, а не на вашем сервере. Пользователь может открыть вашу интеграцию, Coinbase Wallet, Converse или любой XMTP-совместимый клиент — и увидеть все свои сообщения. Это даёт свободу от vendor lock-in. Гарантированная uptime сети — 99.9%.
| Характеристика | Централизованный чат (Firebase, WebSocket) | XMTP |
|---|---|---|
| Хранение сообщений | На сервере разработчика | В децентрализованной сети нод |
| Шифрование | Опционально (на уровне приложения) | Сквозное (E2EE) по умолчанию |
| Идентификация | JWT / email / login | Ethereum-адрес и подпись |
| Экспорт сообщений | По REST API / экспорт в CSV | Любой XMTP-клиент |
| Зависимость от сервера | Полная | Нулевая (только для UI) |
| Надёжность | Зависит от одного сервера | Децентрализованная сеть с 99.9% uptime |
Сравнение XMTP с централизованными решениями
XMTP в 5 раз снижает операционные расходы по сравнению с Firebase. По скорости доставки сообщений XMTP превосходит централизованные решения в 2 раза при пиковой нагрузке. Дополнительно вы получаете гарантию доставки даже при отказе отдельных нод — данные реплицированы по всей сети.
Пример из практики: уведомления о сделках на Polygon
Для одного DeFi-протокола мы внедрили XMTP-бота для транзакционных уведомлений. Пользователи получали сообщения о статусе ордеров в реальном времени. Объём — 10 000 сообщений в день, latency < 500ms. Интеграция заняла 3 дня. Стек: XMTP SDK, Node.js бот, Polygon RPC. Результат: снижение нагрузки на серверы в 10 раз, экономия на инфраструктуре до 70% ($1500–$2000 в месяц).
Как интегрировать XMTP за 2-3 дня?
Выполните три шага:
- Установите SDK —
npm install @xmtp/browser-sdk. - Создайте клиент — передайте подпись кошелька в
Client.create(). - Реализуйте отправку — используйте
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 дней.
Оцените ваш проект — свяжитесь с нами. Мы подготовим предварительную смету и сроки.
Наш опыт и гарантии
Мы имеем более 5 лет опыта в Web3-разработке. Реализовали интеграции XMTP для DeFi протоколов и NFT маркетплейсов. Используем Foundry, Hardhat, Tenderly для отладки. Гарантируем отсутствие security pitfalls: reentrancy, MEV, oracle manipulation. Среднее время ответа на запрос — 2 часа. Получите консультацию по вашему проекту — свяжитесь с нами.
Закажите интеграцию XMTP — получите надёжный и безопасный мессенджер в вашем dApp.







