漫談Azure Block-Chain-as-a-Service 上集 - 什麼是BlockChain

上集 什麼是BlockChain
Authored by Michael Yen-Chi Ho Current AEM @Microsoft

提到BlockChain(區塊鍊),就要從Bitcoin(比特幣)的發展講起,BitCoin是一種透過密碼學原理,將加密演算法用於創造一個去中心化(Decentralized)的貨幣,使交易雙方能直接透過Peer-to-Peer (P2P)的方式進行自主交易,並且結合匿名公開的方式來記錄下所有交易歷程,並且可透過數位簽證與串聯而成的一種強化電子貨幣。

BitCoin介紹影片

BitCoin由2008開始發展,由一位化名Satoshi Nakamoto(中本聰)的人士所提出的白皮書實作而來,而因為2010年維基解密揭漏了美國的外交電報,遭到全世界的權威集團金融封鎖,在處處受到封殺時,選擇接受當時正興起沒多久的Bitcoin作為捐款媒介,因此做為一個安全隱匿的貨幣故開始大鳴大放。

其中,BlockChain就是最重要的一項技術概念,BlockChain顧名思義就是由很多個Block「區塊」組成的一條Chain 「鍊」,而什麼又是Block呢?Block是一種資料結構單位,裡面包含了許多的資訊,像是[Block的大小、Block的Header、Block的交易數、與Block的一組序號]等,現在全世界總共有將近四十萬個Block,而這些Block來自於創造Bitcoin演算法的核心概念Mining「挖礦」。

比特幣的生成,來自「挖礦」這個機制,比特幣的運作原理,非常相似真實的礦工,在虛擬世界裡面挖掘一個個「區塊」中的礦,若幸運挖到礦之後會收到「獎勵」,並向所有身旁的挖礦者「廣播」他所挖到東西,再由周遭的這些礦工們「驗證」的確有挖到東西,最後這個東西就能夠順利變成具有交易價值的比特幣,並且存放到專門的「電子錢包」(含有能夠執行交易與轉換的私鑰)中。

而挖到含有「礦」的「區塊」後,加密演算法會透過Hash的加密增加下一個礦生成的難度與成熟度,同時繼續串連下一個鄰近的末端「區塊」供挖礦之用,這一個個「區塊」串起來則成為「區塊鍊」。

每一個「區塊」的組成,都會包含交易訊息與Nonce,以及上一個區塊中新的Hash,因此每一個區塊的生成,都重新確認了歷史上所有的區塊,此一機制避免了矛盾交易(因為會在廣播後被視為無效區塊)或是雙重花費(僅有一條鍊上面能夠創造經過Hash後有效的下一個區塊)的問題。

在「挖礦」這件事情上,有專門的演算法跟工具可以讓所有人使用,並且是完全開源(Open Source)的,如同真實的挖礦場景,新的礦工加入開採行列時,會透過下載「區塊鍊」的清冊,了解整個礦池的長相,並且從礦池的末端開始開挖,由於比特幣本身是一種Hash加密演算法的集成,電腦的運算能力成為挖礦的重要關鍵,因此有許多人非常聰明的運用微軟的超大資料中心來挖礦,還教你怎麼一步一步啟用微軟Azure並且在十分鐘內挖到礦

而「挖到礦」代表的是找到實際上BitCoin的,「地址」,也就是在匿名公開的區塊鍊中,用戶的公鑰(Public Key),要取用這個公鑰用戶會秘密產生私鑰(Private Key),地址雖然是公開的,但卻是以匿名制的方式存在,而挖到礦或是交易產生時,只有在Bitcoin生成的地址中加上自己的私鑰才能將BitCoin從一個地址轉移到另一個地址,進行類似「轉匯」的動作,因此在BitCoin中交易資料是相當安全的。

 

然而區塊鍊為什麼會這麼熱門呢?因為區塊鍊不是只有用來做串聯或是告訴你下一個礦在什麼地方,區塊鍊最大的特色在於每一個區塊都會記得匿名的完整交易路徑,這樣的特性可以被運用在非常多不只是金融交易的領域,任何Peer to Peer 的機制都可以採用BlockChain這樣的技術來做到完整的Log,例如帳簿或是合約,更甚至,在物聯網的領域中,也可以做到即時所有Sensor的Tracking。

目前在金融服務上,微軟的Azure是唯一一個符合最豐富全球金融相關法規的公有雲平台,並且微軟更致力於保護使用者的安全與資料的隱私,不會拿去做零售或廣告用途。
而這也是下一章要討論到的Block Chain as a Service on Azure的起始。

參考資料
Bitcoin https://bitcoin.org/en/
Blockchain https://blockchain.info/
硬是要學 https://www.soft4fun.net/tech/trend/bitcoin-mechanism.htm\#axzz3zDLZePoc
Blockchain programming in C# https://blockchainprogramming.azurewebsites.net/
Blockchain programming in C# Booklet
https://aois.blob.core.windows.net/public/Blockchain%20Programming%20in%20CSharp.pdf