原文:《Buidler DAO:Push Protocol 如何填補web3 通信空白》
作者:JasonChen、Rui,Buidler DAO
文章速覽:
01/ 前言
02/ 名稱和定位的改變
03/ 為什麼需要去中心化的通信協議
04/ Web2 與PUSH 消息推送邏輯對比
05/ 協議架構:用戶、頻道、訂閱者
06/ 如何集成PUSH Protocol
07/ 未來重要發展方向
前言
Push Protocol 是一款Web3 的去中心化通信協議,它使任何智能合約、dApp 甚至傳統服務都可以向錢包地址發送通知,當然前提是這些錢包地址選擇接收這些渠道的消息,它可以應用於Web3 的全場景中,包括DeFi 的資產清算、ens 的域名到期包括媒體的新聞推送等,目前已經為6 萬的訂閱者發送了1770 萬條消息,是去中心化通訊賽道的頭部項目。
名稱和定位的改變
於2022 年9 月前PUSH 的名字叫EPNS,中文的含義是「以太坊消息通知服務」,通過名字我們可以看出在此之前它是針對於以太坊的項目,並且那時候它對自己的定位是服務而非協議,所以這個舊的名字拆解為3 部分:以太坊、消息通知和服務,而新的名字也恰恰是打破了這三部分,隨著它開始支持Polygon 等其他鏈,它將突破以太坊到其他L1 與L2,其次應用場景不僅限於通知而在於一切消息推送場景,最後因為支持多鍊和多場景所以它不再是某一個具體的服務而是成為了協議,所以繼續叫EPNS 會限制自己的業務與品牌,於是改名為Push Protocol。
為什麼需要去中心化的通信協議
消息推送已經融入了傳統Web2 的方方面面,從IM 聊天、到新聞、再到各種營銷信息、通知提示等等,不論是應用場景還是技術上都已經非常成熟,但是在Web3 中大家卻很少有用到具備消息推送能力的Dapp,涉及到通知的需求大多是用郵件解決的,主要原因是:
- 目前Dapp 大多數都是PC 端的網頁形式,移動端發展極其緩慢,因為消息推送是即時性的,移動端的缺失制約了消息推送場景的發展,反觀Web2 也是在移動互聯網出現後消息推送才大範圍應用。
- Web3 的基建層的消息推送目前確實是一塊發展窪地,能看到的成熟解決方案不多。
即使如此Web3 依然有大量需要消息推送的場景,比如DeFi 價格變動、投票結果通知等,以及如Lens Protocol 這類社交協議產品也集成了Push Protocol,因為用戶之間所產生的關注、點贊等也存在大量的通知場景,包括CoinDesk 也進行了集成,每次CoinDesk 博客上發布新文章時,用戶都會收到通知,從而快速的了解行業動向,所以隨著Web3 的發展消息推送的場景將會越來越多。
Web2 與PUSH 消息推送邏輯對比
大家的手機每天會收到很多APP 給你發送的消息,包括社交軟件的好友消息、新聞媒體的頭條事件、電商平台的折扣優惠等等,它們是怎麼實現的呢?下圖為iPhone 手機中的APP 對你的手機發送消息的流程,核心是APNS(Apple Push Notification Service)作為中轉服務,分為3 個階段:
階段1:上游項目方把要發送的消息和接收的iPhone 標識打包,發給APNS。
階段2:APNS 在註冊Push 服務的iPhone 列表中,查找有相應標識的iPhone,並把消息發到iPhone。
階段3:iPhone 把發來的消息傳遞給應用程序,並且按照設定彈出Push 通知。
下圖為Push Protocol 的原理,其實會發現結構上和Web2 的APNS 是一致的,最上層的dapp、服務器和智能合約這三類處於輸入層,即消息產生的源頭,把消息傳入Push Protocol 後,內部的節點會監聽協議智能合約中的事件並將消息中轉給對應的接收者。
簡單來說,可以理解成合約、後端服務等上游可以在需要消息推送的地方埋一段EPNS 的代碼,並傳入對應消息內容,Push Protocol 就會將這個消息傳遞給對應地址,當然你必須還要在下游有個前端負責接收並展示消息,Push Protocol 作為協議層只負責消息的分發過程,當然Push Protocol 為了便於用戶使用也做了一個插件形式的消息盒子,用戶經Push Protocol 所收到的消息也會展示在裡面。
PUSH 的架構:用戶、頻道、訂閱者
在Push Protocol 中主要有3 個概念:用戶、頻道和訂閱者。
- 用戶:指所有在EPNS 中的實體包括合約、錢包、人員等
- 頻道:在Push Protocol 中進行註冊的消息發送方,用戶需要訂閱頻道後才可以收到對應的消息
- 訂閱者:產生了訂閱行為的用戶
如下圖所示當我打開Push Protocol 的操作台後,並點擊channels 欄目右側會出現很多頻道,這些頻道就是用戶所創建的消息發送方。
我可以選擇點擊加入和退出某個頻道,加入時需要簽名成為該頻道的訂閱者,完成簽名後頻道內所產生的消息就會發送至我的錢包地址中,用戶可以隨時取消訂閱,所以用戶掌握絕對的消息獲取權,不用擔心被濫發消息,並且頻道要發送通知必須承擔費用,以ETH 或DAI 支付,這在一定程度上也可以防止垃圾消息的發送。
我們能看到現在頻道的多樣性非常強,不光幾乎大多數主流的Web3 產品和協議如Snapshot、MakerDAO 等都入駐了,甚至還有如連載小說也入駐了,所以Push Protocol 應用場景的想像空間還是非常大的。
需要質押50 $PUSH 才可以申請成為頻道,其中10 $PUSH 用於創建合約的協議費用,其餘的Token會存儲在頻道所有者的合約池中,一旦頻道停用池子中的Token將返還。
頻道可以發出3 中消息類型,廣播通知、丁香通知和子集通知。
- 廣播通知:一次性將消息發送給該頻道的所有訂閱者
- 定向通知:可以發送給特定的錢包地址,當然前提是它們訂閱了該頻道
- 子集通知:定向通知的變種,通知某一組訂閱者
如何集成PUSH Protocol
Push Protocol 支持通過智能合約、PUSH dApp、SDK 等多種方式發送消息,我們以智能合約為例,首先需要導入IPUSHCommInterface 合約接口。
並定義頻道的地址,每個用戶創建的頻道都會分配一個頻道地址,然後設置接收地址,你可以指定某些訂閱地址,也可以直接設置為廣播模式即所有訂閱者都會接收。
這樣當你的合約代碼執行到對應位置時就可以完成一次消息內容的觸發,由Push Protocol 的節點進行內容的中轉。消息發出去後,下游的需要對消息進行接收然後展示,接收的方式Push Protocol 給出了三種。
獲得的消息數據格式如下,包括消息接收地址、消息內容、類型等信息。
除此以外Push Protocol 還做了自己的Web3 原生聊天軟件,如下圖所示可以實現文本、表情、附件的內容髮送,並且該聊天能力支持SDK 集成,任何dapp 都可以接入後具備原生的Web3 聊天功能。
未來重要發展方向
PUSH 允許所有的dApp、智能合約、後端、協議甚至任何分佈式技術直接與用戶的錢包地址進行通信,目前PUSH 的合作方在各個重要領域都有涉及:
DeFi 通過PUSH 發送交易相關的信息:去中心化金融活動一直是Web3 的主體。可以利用PUSH 的場景:日常狀態時發一些用戶教育以及了解最新的動態和池子;緊急狀態時例如貸款或者抵押品接近清算時,需要用PUSH 提醒他們的用戶採取行動;參與活動時可以提醒用戶關於獎池的變化,以及獲獎情況等。
DAO 組織利用PUSH 進行治理與投票:去中心化自治組織在日常中經常需要大量的提案、投票、公示,但是使用Discord 等平台的現狀是,人們會屏蔽或忽視重要的信息,使用PUSH 可以端對端的提醒用戶參與DAO 治理。
GameFi 利用PUSH 進行用戶激勵:玩家和平台可以進行直接通信,並且通過PUSH 可以實現所有的NFT 空投、獎勵、升級進展都作為通知以激勵用戶,鼓勵留存。
數據分析協議結合PUSH 進行更及時的用戶告知:市面上有大量的Web3 數據分析協議,通過結合PUSH,用戶可以直接自定義自己的需求,例如追踪聚合交易平台的某NFT 交易量、讀取sushiswap 的swap 和配對、當某nft 地板價下跌時進行通知等。
總而言之,在任何重要的ToC 領域都可能有PUSH 的一席之地,例如法律協議簽署時需要實時通知進展、交易平台倒台事件需要第一時間通知用戶、安全合約審計的結果可以直接廣播給社區等等。
經歷了兩年的發展,Push Protocol 已經成為了消息推送賽道的頭部項目,也成為Web3 行業中不可缺少的重要基礎設施。在未來希望看到PUSH 在跨鏈的端對端通信中有所發展,Buidler DAO 也將在Web3 的通信路上助力其蓬勃發展。