Bitsocket——BCH實時API,爲BCH帶來無限可能

Unwriter是BCH社區的一個程序員,他開發了不少基於BCH的應用,例如Chainfeed,一個名爲@_Opreturn的Twitter機器人,Read.cash,Bitdb.network等等。除此以外,他仍是「The Simple Ledger Protocol」BCH代幣化方案的開發人員之一。node

昨天他在社交平臺yours上帶來了他的新做品Bitsocket。這是一個強大的通知推送基礎設施,能夠用於構建實時事件驅動的應用程序。程序員

雖然比特幣已經存在了近十年,但開發人員歷來沒有一種簡單而靈活的方式能夠以編程方式實時的收聽,過濾,處理和應對各類比特幣交易模式。最好的狀況是你能夠聽取每個比特幣交易的整個消息,並過濾出你須要的那些,但即使如此,你仍然須要解析每個原始交易,看它是否真正符合你正在尋找的條件。這種方式雖然有效可是弊端也很大,爲了找到須要的信息,須要對每個交易信息進行解析,巨大的工做量對於想要經過它構建應用程序的人來講是一個很是大的阻力。不過Bitsocket的出現改變了這一點。web

Bitsocket容許用戶經過Bitquery訂閱任何實時交易模式,以構建實時BCH事件驅動的應用程序。這是一個過濾器示例,它監聽全部實時交易並將它們轉換爲可消化的API格式:算法

Bitsocket怎麼運做?數據庫

第1步:轉換編程

就像BitDB如何將原始線性BCH交易格式轉換爲能夠查詢的結構化數據庫格式同樣,Bitsocket將每一個傳入的BCH交易轉換爲相同的結構化格式,由同一個模塊TNA提供實時支持。瀏覽器

第2步:準備服務器

與從步驟1獲取數據並將其存儲到MongoDB中的BitDB不一樣,Bitsocket運行內存中實時過濾器和轉換函數,以將交易對象轉換爲每一個訂閱客戶端的特定於應用程序的事件。websocket

請注意,插入Bitsocket的每一個應用程序都訂閱Bitquery對象,而不是依賴於特定的URL端點。網絡

這個內容尋址的 pubsub模型(不像傳統的位置尋址模型,如常規的websockets應用程序)很重要。這意味着您能夠無縫地將一個Bitocket節點切換到另外一個,而且您的應用程序將徹底相同,由於每一個Bitsocket節點都是相同的,而且您的客戶端訂閱了與服務器無關的不可變查詢,而不是與特定服務器端點結合。

第3步:推送

來自上一步驟的每一個轉換事件都經過SSE(服務器發送事件)推送到相應的應用程序。這些應用程序能夠是從移動應用程序到Web應用程序,也能夠是從服務器端應用程序到硬件設備的任何應用程序。

固然,這些應用程序能夠反過來觸發另外一個應用程序,這意味着一切皆有可能。

值得注意的是,經過這種推送範式,「在BCH上構建應用程序」的概念發生了變化。而不是「我正在爲個人應用程序添加BCH支持」,它變成「我正在將個人應用程序安裝到BCH計算機中」。

如何使用?

Bitsocket只不過是一個Web標準的SSE(服務器發送事件)。沒有數據庫可供使用,你只需打開一個SEE與Bitsocket鏈接就能夠了。

這是一個功能齊全的應用程序的示例代碼:

全部瀏覽器以及node.js等服務器端實現都自動支持Bitsocket。不須要學習特殊的技術,由於它只是服務器發送事件,您須要學習的是如何編寫查詢,以便您能夠準確表達您想要收聽的事件類型。此查詢語言稱爲Bitquery。而且是與Bitdb相同的查詢語言。

Bitsocket將帶來什麼可能?

Bitsocket打開了BCH編程的另外一個維度。若是bitdb是基於「拉」的API,則Bitsocket是BCH的「推」API。經過拉和推,二者的組合幾乎涵蓋了BCH網絡上構建的全部的應用程序。

幾個例子:

1.BCH實時應用程序

在最原始的層面上,您能夠將Bitsocket視爲BCH的全局事件發射。最終能夠構建靈活的BCH實時應用程序,將BCH交易用做事件。

利用bitquery(bitsocket的查詢語言)的表達能力,能夠構建BCH實時應用程序:

1)監視某個交易哈希並觸發某些操做(當個人地址收到錢時,爲用戶提供惟一的連接)

2)監聽在特定位置具備特定推送數據的交易模式(當有關於「糖果」主題的memo.cash帖子時,從該自動售貨機分配糖果)

3)當某種交易模式發生時,向iOS或Android設備發送推送通知。

4)聆聽交易圖的模式並對其進行操做(例如,「若是地址B從地址D接收C金額,則運行代碼A」)

5)更多(Bitquery是圖靈完整的可編程查詢語言,所以您能夠設置各類過濾器)

2.觸發第三方API

若是您只是將Bitsocket視爲BCH的單一的全局事件發射,那麼一切都會變得清晰。您能夠構建監聽BCH事件並觸發任何事情的應用程序。

這包括觸發非BCH第三方API ,如Twitter,Github,Facebook,SMS或您擁有的企業API。

這能夠產生各類現有應用和BCH的有趣組合。或者將BCH歸入其工做流程的現有企業以更實時的方式與客戶打交道。

3.觸發BCH交易

若是咱們能夠從Bitocket事件觸發任何邏輯,那麼就會引起一個問題:爲何不使用該事件來觸發另外一個事件(BCH交易)?

是! 咱們能夠構建從BCH(帶有bitquery)監聽特定事件模式的應用程序,並在知足條件時將消息發送回BCH(以BCH交易的形式)。經過這種方式,您能夠輕鬆地構建複雜的自主應用程序,不管您想要哪一種方式,均可以循環進出BCH。

4.BCH交易的IPC(進程間通訊)

讓咱們深刻一點。BCH能夠看做一臺計算機,BCH交易做爲「事件」,爲全部插入BCH的程序提供動力。透視的這種微小變化確實打開了各類潛力的大門。

首先,咱們能夠將這些BCH應用程序視爲插入BCH的單個全局計算機的「外部進程」。這些過程並不老是必須直接嵌入計算機中。就像早期計算機時代的軟盤和磁帶同樣,您能夠將這些應用視爲與計算機(BCH)鏈接以執行某些任務的外部設備。就像軟盤和磁盤同樣,程序的算法存儲在外部,但實際的計算是在CPU(BCH)上進行的。

這意味着咱們能夠經過它讓一個應用程序以BCH交易的形式將事件發送到另外一個應用程序,將BCH交易用做BCH計算機的IPC(進程間通訊)。這是一個例子:

App A被編程爲在有傳入事件A時觸發事件B.

應用程序B被編程爲在有傳入事件B時觸發事件C.

App A也被編程爲在有傳入的事件C時運行動做X.

如今有了這個設置,讓咱們假設您經過製做與「事件A」的簽名匹配的BCH交易來觸發「事件A」。

用戶經過進行BCH交易來觸發事件A.

應用程序A當即被事件A的bitsocket通知,並觸發事件B.

而後Bitsocket將事件B發送給App B.

應用B觸發事件C.

App A也在監聽事件C,它能夠確認整個往返並最終運行動做X.

這只是一個例子。但經過這種方式,能夠構建一組來自多方的徹底獨立的應用程序,這些應用程序使用BCH做爲中央消息總線和BCH交易做爲進程間調用自主地相互通訊。

Bitsocket:BCH應用程序的消息總線

若是BCH是計算機,Bitdb將是隨存隨取的存儲器,Bitsocket將成爲消息總線。兩個項目的目標正是下降外部世界與BCH互動的障礙。您能夠在幾個小時內逐步構建BCH應用程序。

雖然Bitsocket只是基於BCH的一個開發工具,可是經過對Bitsocket的瞭解,Bitsocket將爲BCH生態將來的開發工做提供不少便利,帶來不少可能性。這些正是BCH社區所須要的。歡迎開發者們使用BCH的這些開發工具爲BCH帶來更多的應用程序,從而推進BCH生態的壯大。

相關文章
相關標籤/搜索