Planet Linux of Taiwan

12月09日

Jollen's face
Jollen


縮小 展開

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

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...

12月06日

Jollen's face
Jollen


縮小 展開

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

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

12月05日

Jollen's face
Jollen


縮小 展開

Blockchain Developer - 為什麼要挖礦?

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

12月04日

Jollen's face
Jollen


縮小 展開

Blockchain Developer - 建立 Merkle Tree

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

12月03日

Jollen's face
Jollen


縮小 展開

Blockchain Developer - 開始建立 Genesis Block

使用 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...