如何使用JavaScript和Express建立區塊鏈 | 區塊鏈研究實驗室

買賣虛擬貨幣

有人問我是否可以使用JavaScript來構建BlockChain應用程式,並且肯定有可用的資源來構建這樣的應用程式。本文中向大家介紹其實這並沒有那麼複雜。這就像一個普通的專案,但是要遵循更多的規則。



什麼是區塊鏈?



當結合生成有關某些交易或一系列步驟的資訊時,區塊鏈是一組在一起的區塊鏈。例如,每當您進行任何銀行存款或取款交易時,您都將根據您上一次儲存在銀行中的金額執行一項操作,當任何人線上上進行交易時,它都需要與上一個區塊有某種關係。
我們將如何理解這種情況並基於此建立應用程式,這是該塊將如何連線的演示。

與流程圖類似,我們將建立一個應用程式來演示相同的內容。

讓我們建立一個塊



首先,建立一個區塊鏈。首先
我們
需要擁有塊,因此讓我們建立一個名為Block的類。

在第一行,我們正在匯入一個包來為我們處理加密。下面的命令將為我們安裝軟體包。
npm i crypto-js
在構造物件時,這裡有一些引數,即索引,時間戳,事務和foreignHash。
  • index 是為塊提供唯一的識別符號,並透過索引為我們需要的任何資料結構提取塊。

  • timestamp 就是給特定的塊一個建立時間,因為不能更新該塊,所以我們不關心那個的updateAt時間戳。

  • transaction是需要阻止的實際資料。例如,員工總數或總數或發件人詳細資訊等

  • precedingHash 如圖所示,該欄位將負責上一個塊和當前塊之間的連線。

  • hash是將與一起工作的領域,precedingHash以確保我們處在正確的連線軌道上。

最後,有一個函式computeHash可以使用SHA256演算法為我們計算雜湊值。該演算法將獲取所有資料,以確保我們生成的雜湊碼的唯一性。
現在,我們建立了塊,讓我們轉到鏈上。

建立一條鏈



同樣,我們將建立一個鏈類,該鏈類將使用更多方法在其中呼叫該塊。這是整個類的程式碼。

首先,我們建立了一個空的建構函式來為我們初始化一些欄位,包括id [給識別符號],name [給塊一個很酷的名字],blockchain [正在處理所有塊的實際欄位],以及最後一個困難[獲得工作證明]。
在進入程式碼的另一部分之前,我們將研究成因。對於任何區塊鏈專案,我們都需要一個創始來用第一個塊初始化鏈,因為第一個塊的行為類似於構建塊,幷包含該塊其餘部分的第一個雜湊,以用作先前的雜湊。在這裡,我們從上一類建立了一個塊物件,並將其初始值作為參考。
然後,我們建立了一個create()包含少量引數的
name 是透過API命名,
id 是從API提供ID
並genesis賦予初始成因一個值。
那麼我們在obtainLatestBlock()給我們鏈中輸入的最後一個塊,這將幫助我們獲取最後一個塊的雜湊,然後將其分配給鏈中的新元素。
最重要的方法是addNewBlock()在我們的鏈中新增一個新的塊,該方法將塊專案作為引數。首先,我們將獲取區塊鏈的最新雜湊並將其新增到中precedingHash,然後建立一個新雜湊並將其分配給雜湊,我們可以跳過此步驟,因為我們已經將其新增到了Block物件的建構函式中。但是一旦這種方法執行,它將繼續將物品推入我們的區塊鏈生態系統。
最後checkChainValidity(),我們將不使用它,但有助於驗證該塊。
新增控制器和路由


我們將新增3條路線,
建立一個區塊鏈,



POST - /api/blockchain
得到區塊鏈,
GET - /api/blockchain



將新的孩子新增到鏈中
POST - /api/blockchain/append
讓我們為它建立一個控制器檔案,



首先,我們將匯入我們建立的兩個類Block和BlockChain。然後,我們建立了一個名為FlippingCoin的控制器,您可以根據需要命名它。但是,關鍵是我們需要關注3種方法:
  • createNewChain
  • appendNewChild
  • getChain
現在,為了簡單起見,我將跳過資料儲存部分。除了這3個之外,我們還必須驗證該方法以驗證鏈是否具有要建立的正確資料格式。
我們需要呼叫相應的方法來使事情工作。
如下所示新增路線



在這裡,我們確保將方法對映到正確的路線。


讓我們測試一下



讓我們轉到POST路線-/ api / blockchain,
這將根據我們在創世交易中傳遞的任何資料為我們建立一個新的區塊鏈。

讓我們轉到POST路線-/ api / blockchain / append,



在將交易資料傳遞到區塊鏈時,它將新增到鏈中。
最後,我們轉到路由GET-/ api / blockchain /檢查資料是否已更新。

作者:鏈三豐,來源:區塊鏈研究實驗室

免責聲明:

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

推荐阅读