Jollen's Blog「Blockchain」裡的所有文章!
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...
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...
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...
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 的挖礦難度是非常高的。這個意思是:產生新的...
jollen 發表於 December 6, 2016 5:05 PM
假設表 1 是「最後一個 Block」內容,根據先前教學的介紹,要如何挖出新區塊呢... 本文章採用 Markdown 語法撰寫,若無法完整閱讀全文,請點擊這裡。 # 簡單易懂的 Mining 演算法設計 ## Mining 演算法初體驗 表 1 是截至目前為止,範例所設計的 Block 資料結構。假設表 1 是「最後一個 Block」內容,根據先前教學的介紹,要如何挖出新區塊呢? |欄位 |範例 |用途說明 | |--------|--------|--------| |hash |dd0e2b79d79be0dfca96b4ad9ac85600097506f06f52bb74f769e02fcc66dec6 |Block Hash | |previousHash |0000000000000000000000000000000000000000000000000000000000000000 |前一個 Block 的 Hash 值 |...
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...
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 /...
jollen 發表於 April 28, 2017 3:57 PM
本文章採用 Markdown 語法撰寫,若無法完整閱讀全文,請點擊這裡。 當你的 IoT 資料,將資料送至中央化的 IoT Platform 時,原本該屬於你的資料所有權、使用權與儲存地,將會默默超出自已的可控制範圍。 # 從 IoT Architecture 看物聯網區塊鏈 IEEE 在 2017 年 1 月發佈一篇 Newsletter 分析 IoT Blockchain 的技術挑戰 [1],文中提到,從 IoT Architecture 的角度,可以看到 IoT Blockchain 的幾個主要技術挑戰。簡單來說,一個「Decentralized」的 IoT Architecture 將會有機會克服當中的一些技術挑戰。 將 Blockchain 技術應用在 IoT 架構中時,需要「Decentralized」的...
jollen 發表於 April 30, 2017 1:06 PM
本文章採用 Markdown 語法撰寫,若無法完整閱讀全文,請點擊這裡。 Decentralized 物聯網架構,需要 P2P 的通訊架構。 # 邁向 Decentralized 的關鍵 在 IoT 架構裡,實作 Peer-to-Peer (P2P) 網路有技術上的挑戰嗎?實作 Peer-to-Peer IoT Networking 的目標,是為了讓 IoT Devices 間能建立 P2P 架構的通訊方式,這就是技術上的挑戰了。讓 IoT Devices 能形成一個 P2P 網路,技術上似乎不太困難;不過,如果更深入技術細節來討論,就會發現許多學問。 第一、應用層的考量。IoT 裝置間必須以 Application Layer Protocols 來通訊,例如:HTTP。所以,我們需要能在 IoT 裝置上運行一個「Application Server」,也就是說,必須有一個「Programming...
jollen 發表於 May 20, 2017 12:03 AM
My paper titled “Flowchain: A Distributed Ledger Designed for Peer-to-Peer IoT Networks and Real-time Data Transactions” has been accepted by the 2nd International Workshop on Linked Data and Distributed Ledgers, as co-located at ESWC 2017, taking in place in Portoroz,...
jollen 發表於 June 6, 2017 1:54 AM
本文章採用 Markdown 語法撰寫,若無法完整閱讀全文,請點擊這裡。 MCS Lite 導入了我開發的 Devify 框架,所以也有 Servient 玩法喔。 # 認識 Servient Servient 概念非常簡單:IoT Device 能同時扮演 Client 與 Server 的角色。這個 ```Client + Server = Servient``` 的觀念,是 Decentralized 與 P2P 非常重要的底層技術。 從 IoT Architecture 的觀念來說,並不是去辨別(identify)每一個物聯網裝置要扮演 Client 或 Server 哪一個角色,而是來開發一個能讓裝置扮演 ```Client...
jollen 發表於 June 15, 2017 8:12 PM
本文章採用 Markdown 語法撰寫,若無法完整閱讀全文,請點擊這裡。 Flowchain 使用一個稱為 Chord 的 P2P 通訊協定,[flowchain-chord](https://github.com/jollen/flowchain-chord) 是一份 Node.js 的實作。 近來受到相當程度討論的去中心化(Decentralized)概念,則是基於 Peer-to-Peer 通訊網路的分散式系統。Peer-to-Peer 的研究在 2000 年左右,就已經有相關的研究論文發表。Decentralized 與 Block Store 的觀念,在這裡論文裡已經被提出討論。可見這二個目前廣為討論的觀念(Decentralized 與 Block Store)都不是新鮮技術了。 ## 關於 DHT 與 Chord Protocol Chord[1] 是一個 DHT(distributed hash table)通訊協定,在 peer-to-peer 通訊網路中,DHT 指的是節點(nodes)的 store,用來儲存「資料的負責節點」。因此,Chord...
jollen 發表於 June 15, 2017 8:15 PM
本文章採用 Markdown 語法撰寫,若無法完整閱讀全文,請點擊這裡。 Chord 能運用在 Peer-to-Peer 的 IoT 網路,但是有些技術細節必須從軟體架構的層面解決。第一個會面的技術問題,就是「Churn」現象。 ## 進進出出 所謂的 Churn 現象就是:在 Peer-to-Peer 網路中,隨時都有節點(node)加入或離開(進進出出)。對於 Churn 的處理,要根據不同的 P2P 演算法來進行研究。Chord 如何處理 Churn 問題,以及 Handling Churn 的效能分析,過去已經有許多研究論文提出解決方法。 至於 [Flowchain 區塊鏈](https://flowchain.io) 當然也有針對 Churn 進行研究。在 Flowchain 裡面,處理 Churn 現象的方式,是以擴充 Chord Protocols 的方式來進行處理;這方面的研究,已經撰寫成學術論文,並且被 [AIoTAS...
jollen 發表於 June 15, 2017 8:17 PM
本文章採用 Markdown 語法撰寫,若無法完整閱讀全文,請點擊這裡。 Heterogenous Hardware 的觀念非常簡單:各式各樣的硬體裝置。 ## 各式各樣的硬體裝置 Heterogenous Hardware 的目標更為單純:「Write once, run everywhere」。對 IoT Blockchain 來說,是否能打造一套能在各式各樣硬體裝置上執行的軟體框架,會是一個關鍵議題。 使用 JavaScript 來實作 IoT 系統是一個流行,但更實質的原因,則是為了 Heterogenous Hardware。如圖一,Flowchain 以及它的底層通訊系統(Devify)都是 100% 的 JavaScript 實作,這可以解決基本的移植性問題。以現今的 IoT Device 硬體技術來說,Flowchain 能安裝在 Microcontroller、Microprocessor 與 Cloud Server 上。 ## Flowchain...
jollen 發表於 September 30, 2017 2:24 PM
DLT 有一個更耳熟能詳的名字,叫做區塊鏈... 本文章採用 Markdown 語法撰寫,若無法完整閱讀全文,請點擊這裡。 # Distributed Ledger Technology (DLT) DLT 有一個更耳熟能詳的名字,叫做區塊鏈。簡單來說,根據 Wikipedia 上的定義 [1],區塊鏈(Blockchain)就是一種 Distributed Ledger 的資料結構(Data Structure): ``` a Blockchain is only one type of data structure considered to be a distributed ledger. ``` 也就是說,DLT 可以延用 Blockchain 資料結構設計,也可以根據應用的不同,設計全新的資料結構;無論是採用...
jollen 發表於 October 19, 2017 1:36 PM
本文章採用 Markdown 語法撰寫,若無法完整閱讀全文,請點擊這裡。 ![](https://i.imgur.com/4Xei5MLl.jpg) 為什麼區塊鏈是 Web 3.0 的概念?因為 Web 3.0 有一個重要的概念,就是 P2P Internet。區塊鏈除了能為 Web 3.0 提供 P2P Internet 基礎建設外,也因為區塊鏈本身「天然特性」,還能提供 Web 3.0 所需的 Trusted Computing 與 Cryptography 技術。 Trusted computing 與 cryptography 在 IoT 領域,能提供絕佳的 Data security 與 Data privacy 環境。因此,一個建立在...
jollen 發表於 October 23, 2017 1:51 PM
本文章採用 Markdown 語法撰寫,若無法完整閱讀全文,請點擊這裡。 ![](http://i.imgur.com/kY9P4vUh.jpg) 關心 Blockchain、更別忘了 Web 3.0。IoT Blockchain 近期在台灣產業界受到不少關注。許多報導與活動,都在討論物聯網區塊鏈的機會與方向;我則是在 ESWC 發表 IoT Blockchain 的具體成果與程式碼。 ESWC (Extended Semantic Web Conference) 是歐洲主要的 Semantic Web 學術會議,今年在 Piran (斯洛維尼亞) 舉辦的 ESWC 2017 已經邁入第 14 屆。這次參加 ESWC 2017 全程 5 天的會議,學習來自各界的研究成果分享,非常有收獲。 ![](http://i.imgur.com/YMtxyXFh.jpg) 在與 ESWC...
jollen 發表於 October 23, 2017 1:57 PM
本文章採用 Markdown 語法撰寫,若無法完整閱讀全文,請點擊這裡。 ![2](https://user-images.githubusercontent.com/1126021/31872573-aaf66a08-b782-11e7-8c39-da838ba47d8a.jpg) 這是今年(2017)第二篇有關 Blockchain 的論文。在加拿大多倫多 ISCA 2017 的 Advances in IoT Architecture and Systems (AIoTAS 2017) 研討會上,發表了一篇有關 P2P IoT 的研究文:Devify: Decentralized Internet of Things Software Framework for a Peer-to-Peer and Interoperable IoT Device。這篇論文也會出版在 2018 年的 ACM SIGBED Review...
jollen 發表於 April 11, 2018 8:55 PM
本文章採用 Markdown 語法撰寫,若無法完整閱讀全文,請點擊這裡。 不久前(2018 年 1 月),Ethereum 才剛針對 ERC 20 提出的 ERC 827 擴充標準;近期,ERC-891 代幣標準橫空出世。即使 ERC 891 仍只是一個 EIP(Ethereum Improvement Proposal),但筆者認為這是一個相當值得關注的提案。 ![2018-04-11 6 56 07](https://user-images.githubusercontent.com/1126021/38612682-12376bb4-3dba-11e8-9269-46fda7881303.png) 第一、ERC 891 提案的重心,在於一個稱為 PPoW(Pseudo proof-of-work)的觀念。技術上,ERC 891 與 ERC 827 相同,都是 ERC 20 的延伸(Extension);但 ERC 891...