一文弄懂區塊鍊和以太坊智能合約的由來和運行原理。
如果提到區塊鍊和以太坊智能合約,相信大家都會很開心的表示我聽說過!但是你真的了解它的由來和運行原理嗎?今天小編就來為大家解答。
區塊鏈、比特幣、以太坊、智能合約,這四者的關係是:
區塊鏈公認誕生於比特幣白皮發布之後,即區塊鏈技術中的大多數理念,都是由比特幣而來。
所以說比特幣技術是區塊鏈技術的開端,而設計這一令人驚嘆的開發者中本聰的真實身份至今仍是個謎。
在區塊鏈技術發展的早期階段,區塊鏈技術中僅有少數的幾個幣種同時其屬性基本上只有一個—虛擬貨幣。這極大的限制了區塊鏈技術的發展。
而以太坊的出現帶來了智能合約,自從有了智能合約之後,人們有了在區塊鏈上進行創造的工具,可以開發自己Dapp,開發遊戲,發展DeFi等等。
因此以太坊是區塊鏈技術進一步發展的產物,而智能合約則是進步的工具,使得人們第一次有了抓手可以在區塊鍊鍊世界中方便快捷的進行創作。
讓我們再來看看區塊鏈的運行原理。現代區塊鏈從比特幣中應運而來,所以,了解了比特幣的基本原理,就可以從中窺見區塊鏈的基本原理。
早在2008年,一位自稱是Satoshi Nakamoto的人,在網絡上發布了“bitcoin:a peer-to-peer electronic cash system”一文,這標誌了比特的正式誕生。
比特幣的設計初衷以及解決的問題是:在一個互不信任且匿名的網絡環境中,通過非對稱加密、哈希函數、簽名等一系列手段解決人與人之間的信任問題。
現有的區塊鏈平台中,根據接入標準的不同可以分為三大類平台:
公有鏈:即任何人可以無任何限制的加入這條區塊鏈並獲取其中的所有數據。
聯盟鏈:針對某些群體進行有限開放,且加入後所有權限不同,內設專門的記賬節點和普通節點等。
私有鏈:個人或少數群體的本地區塊鏈。
而公有鏈中的代表,其中應用最為廣泛的是比特幣和以太坊。
我們以比特幣交易的一個過程,如圖所示來講解區塊鏈的運行原理。
比特幣運行原理
當一個身處比特幣網絡的A發出一筆交易請求後,他會向全網進行報播,讓全世界的電腦或礦機來爭奪這筆交易的記賬權,即形成一個新的區塊,當然一個區塊中往往不止有一筆交易。
那麼交易是如何被打包記賬並記錄進新的區塊中的呢?在此之前,我們首先要了解一個區塊都由哪些部分組成。
如圖二所示,一個區塊主要由區塊頭和交易列表組成。
區塊的組成
首先A會向全網報播這裡有一個區塊需要打包,此時經過特定算法(SHA256)將交易信息和數據進行重新包裝的同時得出一個重要的哈希值—Merkle樹根的哈希值。
關於Merkle樹根哈希值,它可以用於驗證交易信息和數據不被篡改,是區塊中的一個重要參數。
任何兩個交易信息或數據組成可以表示為一個哈希值,此時我們把這兩個哈希值看成一棵樹上的兩個片葉子。
兩片葉子連接的部分稱為葉根,此時,葉根也可以表示為一個哈希值,這個哈希值顯然是由兩筆交易的信息和數據的哈希值決定的,而Merkle樹根很形象的理解為多個交易兩兩組成哈希值,像樹一樣有很多葉子。
然而樹根只有一個,即交易信息和數據的哈希值對應葉子,Merkle樹根哈希值對應樹的根部。
而Merkle樹根的哈希值還有一個特點:任何交易信息和數據變動都會引起Merkle樹根哈希值的巨變,只要有一片葉子,即一筆交易信息和數據被篡改,那麼Merkle樹根的哈希值一定會發生改變。
所以經過一系列的包裝打包,交易信息就已經被打包成塊,等待被記錄在區塊鏈的一個新塊中了。
此時對礦工來說,搶奪記賬權以獲得第一個打包區塊上鍊的區塊獎勵是對其主要的激勵手段。
因為區塊中的第一筆交易信息是這個地址或節點因為第一個找到隨機數,系統給了它一定數量的比特幣,即是你打包區塊後獲得的獎勵,也就是我們俗稱的Mining。
比特幣網絡是通過讓所有的礦工參與計算一個隨機數,如圖所示,來判定到底是誰有這個記賬權。
隨機數的計算
即礦工需要找到一個隨機數nonce讓他與Merkle哈希值和其他區塊必要信息組合起來進行哈希計算後,得出一個符合難度要求的哈希值。
由於SHA256算法是非線性的,只有運用窮舉法,即不斷的選取隨機數進行計算直到計算出來的哈希值滿足難度要求。
而誰先計算出來一個隨機數nonce並經過其他礦工的驗證,誰就擁有了記賬權而可以獲得區塊獎勵,這其中需要消耗巨大的計算能力,這也就是我們常說的工作證明。
鏈金研究員總結
區塊鏈技術的簡單工作原理是運用分佈式賬本、非對稱加密、SHA256等密碼學技術,對現實中存在的各種信息和交易進行包裝重組。
通過POW或POS等證明方式使得礦工或者記賬員將信息記錄在唯一的區塊鏈上,使得信息有了不可篡改性和擁有全網的共識機制,即全部的參與者都認為這筆交易真實可信且不可篡改。
因此區塊鏈技術也被稱為去中心化的技術革命,因為在區塊鏈上不需要任何權威的機構或者個人,一切都是由共識或者證明決定並證實的。