- 區(qū)塊鏈:以太坊DApp開發(fā)實戰(zhàn)
- 林冠宏
- 1592字
- 2019-08-23 10:18:45
1.1 認識區(qū)塊鏈
1.1.1 區(qū)塊鏈的概念
我們一般意識形態(tài)中的鏈是鐵鏈,由鐵鑄成,一環(huán)扣一環(huán)。區(qū)塊鏈也可以這么理解,只不過它不是由鐵鑄成,而是由擁有一定數據結構的塊連接而成,呈鏈狀結構,這種結構就是鏈表。
區(qū)塊抽象到計算機語言中就是一個對象、一個結構體、一個類,同樣類中也可以定義屬性、變量和方法,但區(qū)塊里包括的內容可以自己來定義。比如,以太坊公鏈的區(qū)塊結構,它有變量,我們就可以自己進行定義。以下是我們設置一個區(qū)塊包括變量的例子。

上述的type Block struct表示定義一個區(qū)塊,其中定義了變量Number、PreHash、Hash、Value、Create。
當鏈表中的每個數據個體是上述區(qū)塊的時候就構成了一條區(qū)塊鏈。區(qū)塊是區(qū)塊鏈每一環(huán)的實體。這是一種最簡單的區(qū)塊鏈。如圖1-1所示,其中箭頭的方向代表的是子塊關聯父塊,也可以將箭頭反過來,表示父塊連接子塊。

圖1-1 正常形態(tài)的鏈
由于鏈中的區(qū)塊包含數據,例如上面的Value變量,因此我們能夠在這個區(qū)塊被打包到鏈中的時候向Value填充值,此后我們通過訪問這個區(qū)塊內部的數據可對它打包的數據進行讀取,然后輸出,展示給用戶。
在上面的例子中,我們用來存儲打包到區(qū)塊中的數據變量只有一個Value,那么請想象一下,如果把Value換成一個數組或者更多變量,這個區(qū)塊就會變得更復雜,它的功能也會跟著變得更多。
此外,鏈中的區(qū)塊被規(guī)定是唯一的,即相同區(qū)塊號的區(qū)塊不能以同一個身份(以太坊中允許有區(qū)塊號一樣的不同含義塊)在同一條鏈中出現兩次,如果出現了,那么鏈會將其糾正過來。
下面是網上對區(qū)塊鏈的定義解釋:
“區(qū)塊鏈是分布式數據存儲、點對點傳輸、共識機制、加密算法等計算機技術的新型應用模式。”
這個概念其實是一個廣義的解釋,筆者更趨向于把這個解釋理解為區(qū)塊鏈節(jié)點程序,而不是區(qū)塊鏈,因為一個區(qū)塊鏈的節(jié)點服務程序就包含了這個概念中的各個模塊,實際上還有很多其他的模塊。
一般來說,區(qū)塊鏈公鏈包含但不限于下面的技術模塊:
(1)數據加密簽名技術模塊。
(2)共識機制技術模塊。
(3)分布式數據存儲技術模塊。
(4)點對點通信傳輸技術模塊。
(5)智能合約技術模塊。
(6)應用程序接口技術模塊。
當我們把這些模塊技術實現的代碼整合到一個程序中時,它便是一個區(qū)塊鏈應用,例如某一條公鏈。
那么是不是區(qū)塊鏈應用一定要全部實現這些技術模塊呢?不是的,你可以開發(fā)自己的區(qū)塊鏈公鏈,哪怕是超級簡單的雛形,只要是鏈狀的區(qū)塊存儲應用,就可以稱為區(qū)塊鏈。請記住,任何一個復雜的區(qū)塊鏈應用,例如知名的公鏈,都是在簡單的模型上進行技術的添磚加瓦打造出來的。此外,區(qū)塊鏈的各個技術模塊所包含的知識點也是非常豐富的,可以說每一個知識點都屬于一個領域。
1.1.2 鏈的分類
區(qū)塊鏈的鏈分類通常有3類,即公有鏈、私有鏈和聯盟鏈。這3類鏈的主要區(qū)別是:
(1)公有鏈的維護節(jié)點比較多,節(jié)點網絡對所有人開放,任何人都可以進行特定的數據訪問。
(2)私有鏈是面向個人或某個組織的。
(3)聯盟鏈是多個組織團體的節(jié)點聯合在一起維護的,對組織開放。
目前被廣泛接受、認可、有價值的“代幣”(Token)幾乎都是基于公有鏈的。
不同種類的公有鏈之間要實現相互通信,比如比特幣公鏈和以太坊公鏈進行BTC兌換ETH的交易,需要借助技術手段來實現,例如跨鏈通信技術。
1.1.3 區(qū)塊鏈能做什么
從區(qū)塊鏈普遍的去中心化的特點來看,在節(jié)點網絡中,如果某條公鏈的合法節(jié)點數目達到一定的數量級,那么我們可以認為當前公鏈的去中心化程度接近100%,這意味著鏈上的數據不會再被篡改了,于是我們所傳遞到鏈上被保存在區(qū)塊中的數據會一直存在下去,真實而永久。
基于這個特點,我們可以將區(qū)塊鏈應用到數據的溯源存儲方面。除此之外,還可以根據區(qū)塊鏈具體提供的功能進行各種應用。例如,以太坊公鏈,它是區(qū)塊鏈,而且提供了智能合約這類具備圖靈完備的功能模塊,我們可以基于它來開發(fā)智能合約去中心化應用DApp,其中最為普遍的便是ERC20智能合約所對應的“代幣”。
要理解區(qū)塊鏈能做什么,可以從實際的區(qū)塊鏈應用所具備的特點進行思考,從而得出答案。
- Java范例大全
- JavaScript+jQuery網頁特效設計任務驅動教程(第2版)
- Interactive Data Visualization with Python
- 精通軟件性能測試與LoadRunner實戰(zhàn)(第2版)
- FLL+WRO樂高機器人競賽教程:機械、巡線與PID
- Instant Ext.NET Application Development
- Bootstrap for Rails
- 創(chuàng)意UI:Photoshop玩轉APP設計
- Java并發(fā)編程之美
- Scala編程實戰(zhàn)
- Angular Design Patterns
- Getting Started with the Lazarus IDE
- 面向對象分析與設計(第3版)
- Unity虛擬現實開發(fā)圣典
- JSP編程教程