Successfully reported this slideshow.
Your SlideShare is downloading. ×

Next Video Build: XMTP Workshop Slides


Check these out next

1 of 32 Ad

More Related Content

Recently uploaded (20)


Next Video Build: XMTP Workshop Slides

  1. 1. Next Video Build Hackathon 2022 Workshop
  2. 2. Overview • • • • • • • Big Picture What is XMTP? Core Concepts SDK Examples Hackathon Ideas Resources
  3. 3. BigPicture
  4. 4. Messagingisubiquitousinourworld. • • • • • • Our goal is to make it easy for developers to add messaging to any web3 project in minutes. This includes: User to user chat 1 to many notifications and messages machine to machine (using PKP from Lit) many to many (group chat) Every team can use XMTP messaging in their submission and be eligible for a prize.
  5. 5. Asanexample…wepowerLensDMs.
  6. 6. AswellasBoson'sdCommerceplatform.
  7. 7. IncludingappsbuiltonLivepeer
  8. 8. And100'sofotherapp'smessaging…
  9. 9. IfyouwanttotryXMTP • • Go to Send me a message at petermdenton.eth It's completely native web3 chat, end to end secure, and soon to be fully decentralized.
  10. 10. WhatisXMTP?
  11. 11. XMTPis… • • • • • • Open, composable, and decentralized communication network for blockchain wallets. This includes messages, notifications, and soon group chat. Built (for now) on top of Waku, Lib p2p Messages are persisted in nodes of the XMTP Network Users can access messages from any client on the network enables a diverse set of use cases such as wallet-to-wallet messaging and dapp-to-wallet notifications.
  12. 12. CoreConcepts
  13. 13. ProtocolOverview • • 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 implemented as Waku2 peers, but with more specialized functions and capabilities.
  14. 14. Clients • • • • • 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
  15. 15. Nodes • • Relaying encrypted messages into replicated storage retrieving encrypted messages from storage and delivering them to clients Persisting and advertising wallet-based identities
  16. 16. XMTPArchitectureOverview(CurrentState) XMTP Network XMTP Client SDK Wallet Inbox Composer XMTP Client SDK App 2 Composer Inbox XMTP Client SDK Composer Inbox App n XMTP Labs Node XMTP Labs Node XMTP Labs Node XMTP Labs Node XMTP Labs Node XMTP Labs Node XMTP Labs Node XMTP Labs Node
  17. 17. XMTPArchitectureOverview(FutureState) XMTP Labs Node XMTP Labs Node XMTP Network 3P Node 3P Node 3P Node 3P Node Inbox 3P Wallets Composer XMTP Client SDK Spam/Safety Graph Identity Inbox Dapps Composer XMTP Client SDK Spam/Safety Graph Identity Inbox NFT Marketplaces Composer XMTP Client SDK Spam/Safety Graph Identity
  18. 18. Chains • XMTP messages are off-chain and therefore interoperable across blockchains whose wallets are supported. Because all EVM chains share the same Ethereum wallet and address format, XMTP is interoperable across EVM chains, including testnets.
  19. 19. SDK
  20. 20. SDKFunctionality • • • • • • • Wallet-based authentication Wallet connection management Key pair generation Key storage Key signing Relationship initiation Conversation initiation • • • • • Message sending Message history retrieval Message streaming Message content validation Message format validation
  21. 21. SupportedWallets • • Because XMTP identities are securely tied to wallets, a connected wallet must be present in order to initialize the client. The SDK does not include a wallet abstraction as it is assumed that developers already have some way of obtaining a wallet connection. (For now) Identities must be generated from and associated with an Ethereum wallet's public address and private key.
  22. 22. ContentTypes • • All messages in XMTP are encoded with a content type to ensure interoperability and consistency of experience across the network. Message payloads are transported as simply a set of bytes. This means they can carry any content type that a developer would want to support, such as plaintext, JSON, or even non-text binary or media content.
  23. 23. ContentTypes • • Content-types are really cool to me… You can extend the payload to have objects that can be encrypted. Opens up so much.
  24. 24. Security • • The SDK enables clients to establish secure, unfalsifiable relationships between identities in which only the parties can decrypt messages sent between them. We have purposely designed the protocol with the ability to replace algorithms or expand the set of supported algorithms in a backward-compatible manner.
  25. 25. HackathonIdeas
  26. 26. Web3VideoChatusingXMTPand LivePeer. • • • Use XMTP and LivePeer to send video messages back and forth between users using XMTP. Think a “MarcoPolo clone using Livepeer and XMTP” Token-gate video content using XMTP chat to send out access codes. Allow users to chat while watching video content using XMTP.
  27. 27. Resources
  28. 28. Resources • • • • • • • Developer Portal - Github JS-SDK Fully-functional React chat app Quick start Docs Discord (
  29. 29. FundraisingWorkshop • • • • December 7th - 8:00 PST | 11:00 EST Fundamentals of raising money, even in bear markets How to find angels for raising money How do term-sheets work Let me know if you'd like to attend!
  30. 30. Roadmap
  31. 31. ProtocolRoadmap • • • Progressive Decentralization In v1, the XMTP Network will be comprised of nodes operated by XMTP Labs, and will include a temporary security 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.
  32. 32. PlatformRoadmap • • • • React Native compatibility for xmtp-js (very soon) Flutter (very very soon) Swift and Kotlin client implementations Server-side client implementations