more: Jollen 的 Embedded Linux 教育訓練

Jollen's Blog「Blockchain」裡的所有文章!

  

Blockchain Developer - 認識 Genesis Block

jollen 發表於 December 2, 2016 12:45 PM

Merkle tree 是一種 hash tree,用來表示 hash 值的資料結構。Merkle tree 的發明人是 Ralph Merkle,當然這就是這個資料結構的名稱由來... 本文章採用 Markdown 語法撰寫,若無法完整閱讀全文,請點擊這裡。 # Genesis Block Merkle tree 是一種 hash tree,用來表示 hash 值的資料結構。Merkle tree 的發明人是 [Ralph Merkle](https://en.wikipedia.org/wiki/Ralph_Merkle),當然這就是這個資料結構的名稱由來。 Merkle tree 的基本結構是 binary tree(二元樹),每一個 non-leaf 的節點(node),都被標示一個 hash 值。 圖 1:就是一個 binary...

Blockchain Developer - 開始建立 Genesis Block

jollen 發表於 December 3, 2016 4:02 PM

使用 Node.js 發展區塊鏈的下一個動作,就是建立 Genesis Block... 本文章採用 Markdown 語法撰寫,若無法完整閱讀全文,請點擊這裡。 # Blockchain Developer - 開始建立 Genesis Block 使用 Node.js 發展區塊鏈的下一個動作,就是建立 Genesis Block。 ## Step 1:定義區塊資料結構 根據 [[Blockchain Developer - 認識 Genesis Block](http://www.jollen.org/blog/2016/12/blockchain-developer-genesis-block.html)] 的說明,區塊的資料結構包含 4 個欄位如下: * *hash*:區塊的 hash ID * *previousHash*:紀錄前一個區塊的 hash...

Blockchain Developer - 建立 Merkle Tree

jollen 發表於 December 4, 2016 3:42 PM

Merkle tree 用來存放交易資訊(transactions),為了要討論更詳細的 Merkle tree 生成過程,假設現在有 2 筆交易正在等候「處理」... 本文章採用 Markdown 語法撰寫,若無法完整閱讀全文,請點擊這裡。 # Blockchain Developer - 建立 Merkle Tree ## Merkle Tree 的生成過程 Merkle tree 用來存放交易資訊(transactions),為了要討論更詳細的 Merkle tree 生成過程,假設現在有 2 筆交易正在等候「處理」。這 2 筆交易資訊,分別以 ```Tx0``` 與 ```Tx1``` 來表示。 ![圖 1 生成 Merkle...

Blockchain Developer - 為什麼要挖礦?

jollen 發表於 December 5, 2016 11:32 AM

交易(transaction)確認後的資訊以 Merkle tree 來做紀錄,所以就要有 Block 來儲存這個 Merkle tree... 本文章採用 Markdown 語法撰寫,若無法完整閱讀全文,請點擊這裡。 # 為什麼要 Mining? 交易(transaction)確認後的資訊以 Merkle tree 來做紀錄,所以就要有 Block 來儲存這個 Merkle tree。這個時候就需要有新的區塊。 在 Bitcoin 的生態中,mining(挖礦)的主要目的就是「產生新的區塊」,當區塊產生時,就會產生另一個「副作用」:新 Bitcoin 被產生出來。 簡單說,產生新的 Bitcoin 並不是挖礦的主要目的,這只是挖礦的副作用。挖礦的主要目的,是生產區塊來確認並紀錄新的交易資訊。本章的目標,在學習挖礦的基本知識,內容以簡單易懂為原則,並不是介紹如何重新實作 Bitcoin 的挖礦技術。但教學內容會以 Bitcoin 做為實例,輔助說明 mining 技術。 ## Difficulty 眾所皆知,Bitcoin 的挖礦難度是非常高的。這個意思是:產生新的...

Blockchain Developer - 簡單易懂的 Mining 演算法設計

jollen 發表於 December 6, 2016 5:05 PM

假設表 1 是「最後一個 Block」內容,根據先前教學的介紹,要如何挖出新區塊呢... 本文章採用 Markdown 語法撰寫,若無法完整閱讀全文,請點擊這裡。 # 簡單易懂的 Mining 演算法設計 ## Mining 演算法初體驗 表 1 是截至目前為止,範例所設計的 Block 資料結構。假設表 1 是「最後一個 Block」內容,根據先前教學的介紹,要如何挖出新區塊呢? |欄位 |範例 |用途說明 | |--------|--------|--------| |hash |dd0e2b79d79be0dfca96b4ad9ac85600097506f06f52bb74f769e02fcc66dec6 |Block Hash | |previousHash |0000000000000000000000000000000000000000000000000000000000000000 |前一個 Block 的 Hash 值 |...

Blockchain Developer - 簡單易懂的 Memory-Hard Function

jollen 發表於 December 9, 2016 10:50 PM

Bitcoin mining 演算法,就是使用傳統的 SHA-256 函數,而 SHA-256 的優點,也好就是它的一個缺點... 本文章採用 Markdown 語法撰寫,若無法完整閱讀全文,請點擊這裡。 # Blockchain Developer - 簡單易懂的 Memory-Hard Function SHA-256 函數是傳統的 hash 演算法,但是應用在區塊鏈系統時,有一個缺點。Bitcoin mining 演算法,就是使用傳統的 SHA-256 函數,而 SHA-256 的優點,也好就是它的一個缺點。 ## SHA-256 的問題 為了提升 SHA-256 的計算速度,工程師會利用行平行處理(parallelism)的技術。利用平行運算,大幅提升 SHA-256 的運算速度,這樣做不是很好嗎? 然而,這就是一個問題了。簡單來說,一個能平行化的演算法,就能使用硬體來做加速,例如:使用 GPU、FPGA 或是 ASIC。這裡就是「弊端」所在了。從 Proof-of-Work...

Blockchain Developer - 快速認識 Proof-of-Stake

jollen 發表於 February 16, 2017 11:29 PM

除了 Proof-of-Work(PoW)外,還有其它「形成共識」的做法嗎?除了 Proof-of-Work 外,還有一種稱之為 Proof-of-Stake(PoS)的共識系統... 本文章採用 Markdown 語法撰寫,若無法完整閱讀全文,請點擊這裡。 # Blockchain Developer - 快速認識 Proof-of-Stake 前一篇文章提到的 Proof-of-Work 是利用「運算」的方式來取得「共識」。除了 Proof-of-Work(PoW)外,還有其它「形成共識」的做法嗎?除了 Proof-of-Work 外,還有一種稱之為 Proof-of-Stake(PoS)的共識系統。不像 PoW 是以運算做為基礎,PoS 以「權益」做為基礎,來決定挖礦的難度。 除了 PoW 與 PoS 外,還有其它不同的共識系統: * PBFT[1] (Practical Byzantine Fault Tolerance - 拜占庭容錯算法) * Paxos /...

Top | 授權條款 | Jollen's Forum: Blog 評論、討論與搜尋
Copyright(c) 2006 www.jollen.org