Skip to main content

Introduction

XMTP is a messaging protocol and decentralized communication network for blockchain wallets.

Its extensible design enables a diverse set of use cases such as wallet-to-wallet messaging and dapp-to-wallet notifications.

Disclaimer

XMTP is not ready for production. It has not been audited by security experts. Breaking changes should be anticipated frequently. Prior to the stable release, wallets and messages will be forcibly deleted from the network every Monday.

Protocol Overview​

Users send and receive encrypted messages through clients, authenticating by way of a wallet signature. Messages are persisted in nodes of the XMTP Network, enabling portability for one’s communications.

Both clients and nodes are implementated as Waku2 peers, but with more specialized functions and capabilities.

Clients​

The responsibilities of XMTP clients include:

  • encoding and decoding message formats using a standard interface
  • encrypting and decrypting encoded message content
  • submitting and retrieving encrypted messages to and from the network
  • generating secure wallet-based identities capable of encrypting and decrypting messages
  • persisting wallet-based identities locally or with the network

Nodes​

The responsibilities of XMTP nodes include:

  • relaying encrypted messages into replicated storage
  • retrieving encrypted messages from storage and delivering them to clients
  • persisting and advertising wallet-based identities

Usage​

In Q2 2022, XMTP Labs will publicly release a stable v1 of the protocol, network, and JavaScript client SDK for production usage. Applications using this SDK will be able to send and receive messages on behalf of Ethereum wallets via the XMTP v1 Network.

There is currently no cost for using XMTP.

Progressive Decentralization​

In v1, the XMTP Network will be comprised of nodes operated by XMTP Labs, and will include a temporary security layer in which XMTP Labs is capable of:

  • controlling which wallets can register identities with the network layer
  • controlling which wallets can submit messages to the network layer

Future versions of the protocol will replace these controls with a series of features intended to manage spam, reduce the surface area for malicious behavior, and ensure network reliability.

One such control is an economic model for network Sybil resistance. Proposed as "Postage" in our litepaper, this model specifies for message delivery to be free between participants who offer proof of a relationship, while requiring senders to pay to reach wallets they cannot prove a relationship with. The postage system will fund incentives for community-operated nodes, enabling decentralized operation of the network. A configurable long-term storage layer is also envisioned for improving network scalability, message security, and user data portability.

SDK Access​

XMTP Labs is currently distributing a pre-release development version of the SDK to select partners and community members for evaluation, feedback, and community contribution. If you wish to contribute, please explore the XMTP SDK on GitHub.

Questions about the SDK and documentation can be asked in our Discord #developers channel. Please apply here for access.