對於軟體開發人員,怎樣理解區塊鏈

買賣虛擬貨幣
當提到區塊鏈時,我喜歡用程式碼的方式解釋區塊鏈,以及它與你當前已掌握的開發知識之間的聯絡。儘管現在很多人都在談論區塊鏈,但由於某些原因,似乎很少有人真正理解這種技術在我們現有的開發工具集中的作用。
撇開政治觀點不談,區塊鏈只不過是我們應用程式的一個資料層。將來它可能是惟一的永續性層,當然也不一定非要這樣做,也可以在應用程式中使用多個這種型別的資料層。這裡我向你們推薦一個講座,它主要介紹的是關於我們現在開發建立相互連線的區塊鏈時應該著重關注哪些方面,並解釋了這樣做的必要性。在我們現有的應用程式中,我們使用api在一個或多個資料庫中儲存資訊。區塊鏈專案也是這樣做的,你可以與API(客戶端或伺服器端)進行互動,以在區塊鏈中儲存資料。同樣,我們的資料庫也有相應的模型來構造資料,比如表格、文件模型,你可以給它命名,他們都是用來描述資料的形態的。區塊鏈通常也不一定要遵守這個約定,它們更像是noSql資料庫,你可以在儲存資料時不去關心資料的格式。但是軟體開發經驗告訴我們,使用非層次資料並不一定是個好主意。這就是為什麼我們最終使用Mongoose作為MongoDB的工具,它能夠延遲對資料建模。因此,在區塊鏈專案中使用Convector之類的工具,能夠使編寫模型塑造資料變得非常簡單和直觀。相對於資料庫的另一個優勢(可能是最重要的優勢)是儲存過程。儲存過程是存在於資料庫本身的邏輯(函式),它接收資料的輸入來執行操作。在區塊鏈開發中,這通常被稱為智慧契約或鏈碼。知道如何編寫這些函式以及需要考慮的相關事項是我們所說的區塊鏈開發,當然也不要與區塊鏈核心開發混淆,後者指的是開發區塊鏈技術本身,或者是資料庫引擎。
對軟體開發人員來說還有一個比較好理解的參考是控制版本系統,如GIT。你對資料所做的每一個更改都是版本化的,你可以隨時返回來檢查這些更改。注意:你甚至可以更改區塊鏈的歷史值!就像你在GIT中做了一個rebase來合併提交或更新訊息一樣。但是在GIT和區塊鏈這兩個環境中,你最終會得到已更改提交以及所有後續提交的雜湊值。你會得到完全不同的歷史記錄,沒有人會接受來自你的任何更改,因為你偏離了主分支(公開的區塊鏈版本)。在區塊鏈中沒有—force強制覆蓋歷史記錄。區塊鏈是分散的,智慧契約的執行必須在不同的計算機上發生多次,這是區塊鏈開發人員在使用區塊鏈作為資料層時必須考慮的分散式計算概念的一部分。在智慧契約執行中,可以將其看作GIT中的一個update hook,由包含區塊鏈副本的節點執行,然後再接收你試圖執行的提交。這個hook包含判斷提交作者是否擁有更新儲存庫的許可權的邏輯。你也可以依賴於提交作者的身份驗證,這樣驗證也就只能依靠提交者本人了。由於你的hook會在所有的對等點執行,所以你的操作必須是確定的,因此這裡就需要函數語言程式設計了。你不應該依賴全域性狀態(檔案系統是全域性狀態)或依賴於外部資訊源(如與API的連線或任何網路訪問)生成隨機數。

對於軟體開發人員來說,區塊鏈並不是一種罕見的技術,它的核心功能是建立在我們幾十年前的技術之上的,就像密碼學一樣,GIT本身也遵循著今天大多數區塊鏈所遵循的核心理念。


我希望這篇文章能夠幫助你在不用深入研究那些困擾你的非常複雜的術語的情況下理解這項技術。


更多區塊鏈資訊:http://www.qukuaiwang.com.cn/news

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;