簡單區塊鏈系統實現之原理講解
簡單區塊鏈系統實現之程式開發
完整專案位址
使用postman 傳送兩個post請求,**為
請求引數名稱是node,給5000新增鄰居時node值為5001,給5001新增鄰居時node值為5000
正確新增後會返回如下訊息:
正確後兩個終端返回的資訊應該一樣:
],
"length":1
}
使用postman 傳送乙個post請求,**為:
引數為:
amount:交易金額,任意乙個整數就好
這裡只給埠為5000的節點傳送這個新增交易的請求,有人可能有疑問,這樣的話兩個節點的鏈不就不一樣了麼? 不用擔心,後面會使用共識機制來解決衝突
新增交易成功後會返回下面資訊:
隨後進行挖礦,實現這個節點鏈的增長:
使用postman 傳送乙個get請求到
返回如下資訊
,,
]}
可以看到生成了乙個新的區塊,再次檢視5000埠節點的鏈條,返回資訊如下:
,,
]}],
"length":2
}
可見鏈條資訊增長了,並且交易資訊被儲存在了第二個塊中,而且還多個乙個交易:礦工挖礦得到的收益,由系統發放,我們檢視5001節點的鏈,資訊如下,可見,資料不一致產生了:
],
"length":1
}
當兩個鄰居節點發現彼此之間資料不一致的情況下,會依據共識機制來解決衝突,根據共識機制的規則,可知當5000節點解決衝突的時候會保留自己的鏈,5001解決衝突的時候會用長鏈(5000)的鏈來替換自己的鏈(當然替換之前也要對5000的鏈進行合法性判斷)
使用 postman 傳送乙個get請求到 呼叫5000節點的解決衝突功能
返回資訊如下:
返回了鏈條的長度為2,並且說明了在解決衝突的過程中保持了自己的鏈
使用postman 傳送get請求到 呼叫5001節點的解決衝突功能,預期返回應該是5001節點的鏈被替換,結果如下,正是這樣:
再次檢視兩個節點的鏈條資訊,發現結果一致,衝突解決:
,,
,]}]
,"length":2
}
程式實現了區塊鏈的核心功能,模擬了區塊鏈的執行原理,對理解區塊鏈的執行有很大的幫助。 區塊鏈的簡單實現
最近在學習區塊鏈的相關知識,在懂得原理後通過程式設計實現了乙個簡單的區塊鏈程式,希望對以後的學習有所增益,在這裡要感謝b站up主 是落拓呀 的對於區塊鏈的詳細講解,下面附上相關python import hashlib import json from typing import text 區塊 c...
簡單區塊鏈的實現(帶POW挖礦系統)
在it界,2018最火的熱詞相必就是區塊鏈了,c 和go是目前最適合區塊鏈開發的兩種語言,所以咱們學go的肯定得學一點區塊鏈的知識,但是區塊鏈涉及太多密碼學,金融學 p2p網路等知識了,從 切入呢,今天我們就從用go實現一條帶有模擬挖礦系統的簡單區塊鏈。三大模組 還是比較簡單清晰的,主要有三個模組,...
iOS 書寫簡單的區塊鏈程式
區塊鏈 blockchain 是位元幣等流行的加密貨幣背後的技術。區塊鏈的主要概念是去中心化,提供分布式賬本。本文會為你展示如何在 ios macos 中使用 swift 語言建立最基本的區塊鏈。注意 本文不涉及節點 nodes peers 驗證和獎勵等。實現區塊類,生成物件代表乙個區塊,建立如下 ...