使用MVC模式實現區塊鏈開發

banq發表於2018-10-07
Convector是一個開源的區塊鏈Javascript框架,目的透過抽象技術的複雜性來降低區塊鏈使用障礙。下文是他們引入MVC模式的設計思想:

當我們在設計Convector,我們想達到的基本目標之一是使開發人員與blockchain互動儘可能順利。

目前大多數用於區塊鏈開發的語言和庫都使用了很多複雜的術語,區塊鏈開發人員的心智經常被底層區塊鏈技術打擾,區塊鏈開發人員應該關注應用程式邏輯而不是其背後的技術。


今天,區塊鏈開發已經不需要資料庫專家了。明天,區塊鏈開發也不需要專門的區塊鏈專家。
- 沃爾特蒙特斯



原因是:區塊鏈是一種資料儲存,大多數時間都受到一組預定義規則的保護,這些規則通常稱為智慧合約或鏈程式碼。

這就是為什麼在Convector中我們為框架的核心原則選擇一個熟悉的術語,這個術語就是應用開發領域中最成功的模式之一:MVC(模式 - 檢視 - 控制器),它基本上包含一個描述資料的模型和一個控制器。

因此,假設你想建立自己的加密貨幣。其模型的屬性將是:名稱,符號,總供應,餘額,建立者等。它的控制器符合以下方法:轉移,批准,從哪裡移出,mint等。如果你是一個技術嫻熟的人,你已經意識到這些都是以太坊標準ERC-20的概念。

我們已經有了一個非常可靠的模型來說明如何輕鬆地塑造智慧合約。但是,當我們遷移內部應用程式的合同時,我們意識到,如果我們想要使區塊鏈開發變得非常簡單,我們不僅要使得建立變得直接方便,還要使其使用變得方便。

我們發現自己編寫了後端和UI服務,重複了呼叫智慧合約的方法。這不好 :(

我們提出了一個想法,即採用我們已經為智慧合約層建立的相同控制器和模型,並將它們轉移到所有其他層,如伺服器或瀏覽器,這樣我們就可以自信地執行一行程式碼,Token.transfer(100, '0x165DE7FA3E5')

無論我們是否在瀏覽器、伺服器或區塊鏈等不同上下文中,這一條語句會足夠聰明,它會採取必要的步驟來執行區塊鏈交易事務。

因此,我們需要一種方法用於與區塊鏈通訊的邏輯,可根據環境上下文的不同而改變。在瀏覽器中不用安裝區塊鏈資料庫,你所做的只是直接呼叫區塊鏈API的HTTP方法。

控制器需要一個介面卡來解析它們對模型執行的操作。在瀏覽器中,這可能會觸發對後端的HTTP呼叫。在後端,這可能會觸發對區塊鏈的HTTP呼叫。在區塊鏈本身,它實際上執行驗證交易的步驟,即:交易作者可以轉移這些代幣嗎?

模型需要一個可以執行CRUD操作的儲存層。同樣,在瀏覽器中,這可能是向區塊鏈傳送查詢事務或向後端傳送HTTP請求。在後端,可以從生成的資料庫中讀取或查詢區塊鏈。在區塊鏈中,這可能是搜尋區塊的資訊。

好處:

1. 互操作性。在不久的將來,你將定期在同一個應用程式上連線多個區塊鏈,就像現在使用不同的API一樣。能夠在同一框架內與多個區塊鏈交談是我們的目標。現在,Convector正式支援Hyperledger Fabric,但這只是我們想要支援的多個區塊鏈平臺中的第一個。

2. 超越智慧合約。區塊鏈應用程式最常見的方案之一是與現有資料來源(如API和資料庫)整合。由於介面卡/儲存機制允許我們指定與Controller / Model實現分離的通訊協議,因此可以很容易地區分您想要路由到區塊鏈的邏輯操作以及在其他系統上處理的操作。

Taking the MVC Pattern to the Blockchain Developme

相關文章