導航:首頁 > 以太萊特 > 以太坊技術詳解與實戰經管

以太坊技術詳解與實戰經管

發布時間:2024-03-17 13:31:40

① 002:以太坊簡介|《ETH原理與智能合約開發》筆記

待字閨中開發了一門區塊鏈方面的課程:《深入淺出ETH原理與智能合約開發》,馬良老師講授。此文集記錄我的學習筆記。

課程共8節課。其中,前四課講ETH原理,後四課講智能合約。
第一課分為四部分:

這篇文章是第一部分的學習筆記:以太坊簡介。

以太坊是目前公認的區塊鏈2.0,相比於區塊鏈1.0(比特幣),其最大的特點是引入了智能合約,從而從單一的數字加密 Token 技術轉化為一個區塊鏈分布式應用的平台。以太坊本身不包含任何具體的應用,它主要是提供基礎平台和工具,使得開發者可以在其基礎之上開發出各種各樣的應用。可以說,以太坊有著巨大的潛力,它最終可能會發展出分布式、自動化、自組織的最高形態。

第一,我們可以通過學習以太坊的技術,領會區塊鏈技術發展的脈絡,改進的思路/路徑,從而緊跟區塊鏈技術發展的前沿,預測下一步的趨勢。
第二,DAPP(分布式應用)生態系統目前的發展也是蒸蒸日上,蓬勃發展,據不完全統計,現在有數百種應用之多,顯而易見的,對於開發人員的需求也是水漲船高,需要大量的開發人員。目前非常有名的應用有加密貓、各類側鏈應用、ERC20 Token如幣安幣火幣等等。

2013年,創始人 Vitalik Buterin 針對比特幣存在的一些問題以及局限性,提出把「智能合約」構想應用於區塊鏈領域,希望打造一個基於區塊鏈的多方計算的智能化通用平台,並通過比特幣融資進行開發。

2014年,以太坊基金會在瑞士成立,管理並運營整個項目。

前5大礦池佔83%的算力,很集中。

目前大約有16000個全節點,其中,美國5461(34%),中國1839(11.5%),俄羅斯963(6%),德國920(5.7%),加拿大875(5.45%)。全節點每天都有動態變化。分布情況也反映出各個國家的參與熱度。

② 《以太坊技術詳解與實戰》pdf下載在線閱讀,求百度網盤雲資源

《以太坊技術詳解與實戰》(閆鶯)電子書網盤下載免費在線閱讀

資源鏈接:

鏈接:https://pan..com/s/1g6YtL-Ws5Ukd6KksLQ_S0g 密碼:os8v

書名:以太坊技術詳解與實戰

作者:閆鶯

豆瓣評分:7.7

出版社:機械工業出版社

出版年份:2018-4-3

頁數:226

內容簡介:

以太坊創始人、首席科學家Vitalik Buterin傾力推薦,工業界與學術界區塊鏈專家聯合撰寫,權威性和實用性毋庸置疑。本書深入剖析以太坊架構、核心部件、智能合約編寫與開發案例等關鍵技術,並涵蓋以太坊數據分析、性能優化、隱私與數據安全等前沿實踐與進展。

第1章 介紹區塊鏈背景、基本原理與應用,以對區塊鏈有整體性了解。

第2章 詳解以太坊架構與組成,涵蓋以太坊架構、核心概念與技術、客戶端與域名服務等,是後續學習的基礎。

第3章 帶領讀者部署不同網路類型以太坊區塊鏈,含有多種技巧與腳本樣例。

第4章 剖析智能合約與以太坊虛擬機的原理,這兩者是以太坊的魅力所在,了解後可以更好地開發智能合約。

第5~6章 手把手教學,給出具體編寫、編譯、部署智能合約的方法和案例,密集鍛煉讀者智能合約編程與實踐能力。

第7章 剖析以太坊上數字資產定義的原理和方法,包括CryptoKitties養貓游戲基於的ERC 721合約標准,到此讀者可以編寫以太坊應用了。

第8章 會進一步對如何查看、分析以太坊公有鏈數據的工具和方法進行介紹。

第9~10章 是前沿技術的探討,涵蓋以太坊性能優化和隱私保護技術。這些技術都在比較初級的階段,讀者可以一邊閱讀一邊思考,提出自己的想法和建議。

作者簡介:

閆鶯 (博士),微軟亞洲研究院主管研究員,區塊鏈領域負責人,微軟Coco區塊鏈平台中國負責人。中國軟體協會區塊鏈創業學院及區塊鏈專委會專家、中國電子學會區塊鏈專家委員。專注與區塊鏈技術、大數據分析、資料庫以及雲計算的研究。在區塊鏈領域獲得多項國際專利,並在資料庫和雲計算 領域國際頂級會議和期刊發表論文30餘篇。參與翻譯《區塊鏈項目開發指南》。

鄭凱 (博士),電子科技大學教授,博士生導師,澳大利亞昆士蘭大學計算機科學博士。主要研究領域為區塊鏈數據管理,以及時空數據挖掘、不確定資料庫、內存資料庫、圖資料庫等。在資料庫、數據挖掘等領域的重要會議和期刊發表論文100餘篇,被累積引用1500餘次。2013年獲澳大利亞優秀青年基金,2015年獲資料庫頂級會議ICDE最佳論文獎。擔任資料庫領域知名國際會議的程序主席和聯合執行主席,國際SCI期刊客座編委,以及數十個國際等級會議的程序委員。

郭眾鑫 微軟亞洲研究院研發工程師,微軟Coco區塊鏈平台核心開發者。專注於區塊鏈技術、大數據分析、分布式系統等方面的研究和開發。

③ 一文讀懂以太坊—ETH2.0,是否值得長期持有

這幾天一直在看關於ETH倫敦升級方面的資料,簡單的聊一下,在加密貨幣的世界裡,無論是投資機構、區塊鏈應用開發者、礦機商,還是個人投資者、硬體供應商、 游戲 行業從業者等等,提起以太坊,或多或少都會有一些了解。

一方面取決於以太坊代幣 ETH 本身的造富效應。從 2014 年首次發行以來,投資回報率已經超過 7400 倍。


另一方面,以太坊作為應用最廣泛的去中心應用編程平台,引來無數開發者在其之上開發應用。這些應用不僅產生了巨大的商業價值,伴隨 DEFI 生態、NFT 生態、DAO 生態蓬勃發展,也給 ETH 帶來了更多使用者。


隨著「倫敦升級計劃」臨近,ETH 再次聚集所有人的關注目光。


以太坊 2.0 到底是什麼?包含哪些升級?目前進展如何?


以太坊 2.0 到來,會對現有以太坊生態的去中心化應用產生哪些影響?


ETH 是否值得持續投資?看完相信你會有自己的判斷。


如果將搭建應用比作造房子,那麼以太坊就提供了牆面、屋頂、地板等模塊,用戶只需像搭積木一樣把房子搭起來,因此在以太坊上建立應用的成本和速度都大大改善。以太坊的出現,迅速吸引了大量開發者進入以太坊的世界編寫出各類去中心應用,極大豐富人們對去中心應用場景的需求。

以太坊應用開發模型示意


以太坊與ETH


現有市場的加密貨幣,只是在區塊鏈技術應用在某一場景下的單一代幣。


以太坊也不例外,它的完整項目名稱是「下一代智能合約與去中心化應用平台」,Ether(以太幣)是其原生加密貨幣,簡稱 ETH。


ETH 除了可以用來與各種類型數字資產之間進行有效交換,還提供支付交易費用的機制,即我們現在做鏈上操作時所支付的 GAS 費用。GAS 費用機制的出現,即保護了以太坊網路上創建的應用不會被惡意程序隨意濫用,又因為 GAS 收入歸礦工所有,讓更多的用戶參與到以太坊網路的記賬當中成為礦工,進一步維護了以太坊網路安全與生態發展。


與 BTC 不同的是,ETH 並沒有採用 SHA256 挖礦演算法,避免了整個挖礦生態出現由 ASIC(專用集成電路)礦機主導以至於大部分算力被中心化機構控制所帶來的系統性風險。


以太坊最初採用的是 PoW(Proof of Work)的工作量證明機制,人們需要通過工作量證明以獲取手續費回報。我們經常聽說礦工使用顯卡挖礦,他們做的就是 POW 工作量證明。顯卡越多,算力越大,那麼工作量就越大,收入也就越高。


當前,整個以太坊網路的總算力大約為 870.26 TH/s,用我們熟悉的消費級顯卡來對比,英偉達 RTX 3080 的顯卡算力大約為 92-93 MH/s,以太坊網路相當於 936 萬張 3080 顯卡算力的總和。


以太坊白皮書內非常明確提到之後會將 PoW 工作證明的賬本機制升級為 POS (Proof of Stake)權益證明的賬本機制。


ETH經濟模型


與 BTC 總量 2100 萬枚不同,ETH 的總量並沒有做上限,而是在首次預售的 ETH 數量基礎上每年增發,增發數量為 0.26x(x 為發售總量)。


但也不用擔心 ETH 會無限通脹下去,長期來看,每年增發幣的數量與每年因死亡或者粗心原因遺失幣的數量大致相同,ETH 的「貨幣供應增長率」是趨近於零的。


ETH 分配模型包含早期購買者,早期貢獻值,長期捐贈與礦工收益,具體分配比例如下表。

現在每年將有 60,102,216 * 0.26 = 15,626,576 個 ETH 被礦工挖出,轉成 PoS 後,每年產出的 ETH 將減少。


目前,市場上流通的 ETH 總量約為 116,898,848 枚,總市值約為 2759 億美元。


以太坊發展歷程


1. 邊境階段(2015年):上線後不久進行了第一次分叉,調整未來挖礦的難度。此版本處於實驗階段,技術並未成熟,最初只能讓少部分開發者參與挖礦,智能合約也僅面向開發者開發應用使用,並沒有用戶參與,以太坊網路處於萌芽期。


邊境階段 ETH 價格:1.24 美元。


2. 家園階段(2016年):以太坊主網於 2016 年 3 月進行了第二次分叉,發布了第一個穩定版本。此版本是第一個成熟的正式版本,採用 100% PoW 證明,引入難度炸彈,隨著區塊鏈數量的增加,挖礦難度呈指數增長,網路的性能大幅提升,以太坊項目也進入到快速成長期。在」家園「版本里,還發生了著名的」The DAO 攻擊事件「,以太坊被社區投票硬分叉為以太坊(ETH)與以太經典(ETC)兩條鏈,V 神站在了 ETH 這邊。


家園階段 ETH 價格:12.50 美元。


3. 都會階段(2017~2019年):都會的開發又分為三個階段,升級分成了三次分叉,分別是 2017 年 10 月的「拜占庭」、2019 年 2 月底的「君士坦丁堡「、以及 2019 年 12 月的「伊斯坦布爾」。這些升級主要改善智能合約的編寫、提高安全性、加入難度炸彈以及一些核心架構的修改,以協助未來從工作量證明轉至權益證明。


在都會階段,以太坊網路正式顯現出其威力,正式進入成熟期。智能合約讓不同鏈上的加密貨幣可以互相交易,ERC-20 也在 2017 代幣發行的標准,成千上萬個項目在以太坊網路進行募資,被稱作「首次代幣發行(ICO)」,相信很多幣圈的老人都是被當時 ICO 造富效應帶進來的。到 2019 年,隨著DeFi 生態的崛起,金融產品正式成為以太鏈上最大的產業。


都會階段 ETH 價格:151.06 美元。


4. 寧靜階段(2020-2023年):與都會分三階段開發相同,寧靜階段目前預計分成三次分叉:柏林(已完成)、倫敦(即將到來)、以及後面的第三次分叉。「寧靜」階段又稱為「以太坊 2.0」,是項目的最終階段,以太坊將從工作量證明方式正式轉向權益證明,並開發第二層擴容方案,提高整個網路的運行效率。


寧靜階段可以說是以太坊網路的集大成之作,如果說前個三階段只是讓以太坊的願景展現的實驗平台,寧靜階段之後的以太坊,將正式成為完全體,不僅有完備的生態應用,超級快的處理速度,眾多網路協同發展,而且 PoS 機制會非常節約能源,真正代表了區塊鏈技術逐漸走向成熟的標志。


寧靜階段 ETH 價格:2021 年 4 月 15 日完成的柏林階段,當天價格為 2454 美元。

即將到來的倫敦協議升級

以太坊生態


以太坊的生態發展,從屬性劃可分為兩大類:一是以太坊網路生態應用建設,二是以太坊網路擴容建設。兩者相互融合,互相成就,應用需要更健壯強大的網路作為承載,網路需要功能完善的應用場景服務用戶。


先說應用生態,以太坊的生態我們又可以分為以下幾大類:


1. 去中心化自製組織(DAO)生態


什麼是去中心化自製組織?還是以我們熟悉的比特幣舉例:比特幣目前市值七千多億美金,在全球資產市值類排名第九,但比特幣並不是某一公司發布的產品,也沒有特定公司組織招聘人員進行維護。比特幣現有的一切,都源於比特幣持有者、比特幣礦工自發形成的分布式組織,他們通過投票方式規劃比特幣發展路線,自發參與維護比特幣程序與網路 —這僅僅因為只要擁有比特幣,所有人都是比特幣網路建設中的受益者,一切維護都源於自身的利益關系。


比特幣的發明與成功運行,突破了由荷蘭人創建、至今流行 400 多年的公司商業架構,開創出一種全新的、無組織架構的、全球分布式的商業模式,這就是 DAO。


再說回以太坊,以太坊的 DAO 可以由智能合約編寫,用戶自定義應用場景。簡單說就是我們規定出程序執行條件與執行范圍,真實世界裡只要觸發設定好的條件,程序就會自動執行運行,且所有過程都會在以太坊的網路上進行去中心化公開驗證,不需要經過人工或者任何第三方組織機構確認。


以太坊 DAO 生態演化出許多商業場景,有慈善機構使用 DAO 建立公開透明的捐款與使用機制,有風投機構使用 DAO 建立公平分配的風險基金。


以太坊生態的很多項目都採用 DAO 自治,代表項目有:Uniswap,AAVE,MakerDAO,Compound,Decred,Dash 等。


2. 去中心化金融(DEFI)生態


在傳統商業世界裡,我們如果需要借錢、存錢,或者買某一公司股票,或者做企業貸款、融資,只要是進行金融活動,總離不開與銀行、證券機構、會計事務所這些金融機構打交道。


而在去中心的世界裡,區塊鏈本質就是集合所有人交易記錄且公開的大賬本,我們可以非常容易的追溯到每一個錢包地址發生過的每一筆交易,查詢到任意一個錢包地址的余額信息,從而對錢包地址里的資產做評估。


舉個例子:全世界個人貸款最貴的國家是印度,印度的年輕人房貸利率目前是 8.8%,最高曾經到過 20%;與此對應,全世界個人存款利率最低的國家是日本,日本政府為了鼓勵民眾消費,在很長一段時間里銀行存款利率是負值,日本人在銀行存款不僅沒有利息,還要給銀行交保管費。理論上,如果日本人將自己的存款借與印度人,雙方都能獲得利益最大化,但現實生活中這樣的場景很難發生。一是每個國家都有外匯管制,日本人的錢並不容易能給到印度人,二是印度人的信用如何日本人也不好評估,大家沒有統一標准,萬一借出去的錢無法歸還,不能沒了收益還要蒙受損失。


但在去中心的世界裡,這樣的事情就簡單的多。


如果印度人的錢包地址里有比特幣,我們就可以利用智能合約,印度人將自己的比特幣質押進去,根據比特幣當時的價格,系統自動給印度人一個授信額度,印度人就可以拿著這個額度去和日本人借款,並規定好還款的周期與利率。如果印度人違約,合約自動將印度人質押進去的比特幣扣除,優先保障日本的權利,這樣,日本人不用擔心安全問題放心享受收益,印度人也有了更多的款項做為流動資金。


這個例子就是去中心金融的簡單應用,實際上,這就是我們參與 DEFI 挖礦是質押理財的原理 —— 當然真正應用實現演算法與場景要復雜的多。


DEFI 根據場景不同,又可以分為很多賽道,比如穩定幣、預言機、AMM 交易所、衍生品、聚合器等等。


DEFI 代表項目有:Dai,Augur,Chainlink,WBTC,0x,Balance,Liquity 等。


3. 非同質化代幣(NFT)生態


世界名畫《蒙娜麗莎》,只有達·芬奇的原版可以展覽在法國盧浮宮博物館,哪怕現代的技術可以無比精細地復刻出來,仿品都不具備原版的收藏價值。


這就是 NFT 的應用場景。NFT是我們可以用來表示獨特物品所有權的代幣,它們讓我們將藝術品、收藏品甚至房地產等現實事物唯一代幣化。雖然文件(作品)本身是可以無限復制,但代表它們的代幣在鏈上可以被追蹤,並為買家提供所有權證明。


相比現實中實物版權、物權的雙重交割相比,NFT 只需要交割描述此物品的唯一代幣。NFT 作品往往存儲在如 IPFS 這樣的分布式存儲網路里,隨用隨取,永不丟失,加之交割簡單方便,很快吸引了大量玩家與投資者收藏轉賣,NFT 出現也給藝術家提供了全新的收入模式。


類似 DEFI 生態,NFT 生態根據應用場景不同也產生了不同賽道,目前比較火熱的賽道有 NFT 交易平台,NFT 游戲 平台,NFT 藝術品平台, NFT 與 DEFI 結合在一起的金融平台。


NFT 代表項目有:CryptoKitties,CryptoPunks,Meebits,Opensea,Rally,Axie Infinity,Enjin Coin,The Sandbox 等。


4. 標准代幣協議(ERC-20)生態


與 NFT 非同質化代幣所對應的,就是同質化代幣。比如我們使用的人民幣就是一種同質化代幣,我們可以用人民幣進行價值交換,即使序號不同也不影響其價值,如果面額相同,不同的鈔票序號對持有者來說沒有區別。


BTC,ETH 和所有我們熟知的加密貨幣,都屬於同質化代幣。同種類的一個比特幣和另一個比特幣沒有任何區別,規格相同,具有統一性。在交易中,只需關注代幣交接的數量即可,其價值可能會根據交換的時間間隔而改變,但其本質並沒有發生變化。


以太坊的 ERC-20 就是定義這種代幣的標准協議,任何人都可以使用 ERC-20 協議,通過幾行代碼,發布自己在以太坊網路上的加密貨幣。


現在,以太坊網路上運行的代幣種類有上百萬個,上邊提到的項目,大多也在以太坊網路中發布了自己的同質化代幣。


ERC-20 代表項目有:USDT,USDC,WBTC 等。


以太坊網路擴容性


我們先引入一個概念:區塊鏈的不可能三角,即無論何種方法,我們都無法同時達到可擴展、去中心化、安全,三者只能得其二。


這其實很好理解,如果我們要去中心化和安全,就需要更多有節點參與網路進行驗證,從而導致驗證人增多、網路效率降低,擴展性下降。網路性能建設就是在三者之間找到平衡點。


用數據舉例,目前比特幣可處理轉賬 7 筆 / 秒,以太坊是 25 筆 / 秒,而 VISA 平均為 4500 筆 / 秒,峰值則達每秒上萬筆。這種業務處理能力的差別,我們就可以簡單理解為是「吞吐量」的差距。而想要提高吞吐量,則需要擴展區塊鏈的業務處理能力,這就是所謂的擴展性。


根據優化方法不同,以太坊網路性能擴容方案可以分為:


1. Layer 1 鏈上擴展,所有交易都保留在以太坊上的擴展解決方案,具有更高的安全性。


鏈上擴展的本質還是改進以太坊主鏈本身,使整個系統擁有更高的拓展性與運行效率。一般的方法有兩種,要麼改變共識協議,比如 ETH 將從 PoW 轉變為 PoS;要麼使用分片技術,優化方法使網路具有更高效率。


2. Layer 2 鏈下擴展,在以太坊協議之上分層單獨做各場景解決方案,具有更好的擴展性。


鏈下擴展可以理解為把計算、交易等業務處理場景拿到以太坊主鏈之外計算,最後將計算好的結果傳回主鏈,主鏈只反映最終的結果而不用管過程,這樣,無論多麼復雜的應用都不會對主鏈產生影響。


我們並不需要明白具體技術實現,只需知道:相比 Layer 1 方案,Layer 2 方案網路不會干擾底層區塊鏈協議,可以替 Layer 1 承擔大部分計算工作,從而降低主網路的負擔提高網路業務處理效率,是目前公認比較好的擴容方案。


以太坊2.0


終於講到以太坊 2.0,回到主題。


通過回顧以太坊的發展 歷史 ,以太坊 2.0 並不是新項目,它只是以太坊開發進程的最後一個階段,它將由整個以太坊生態多個團隊協同完成,目標是使以太坊更具可擴展性、更安全和更可持續,最終成為主流並為全人類服務。


ETH2建設目標:


1. 更具可擴展性。每秒支持 1000 次交易,以使應用程序使用起來更快、更便宜。


2. 更安全。以太坊變得更加安全,以抵禦所有形式的攻擊。


3. 更可持續。提高網路性能的同時減少對能源的消耗,更好地保護環境。


最重要的變化,ETH2 將從 ETH1 使用的 PoW(Proof of Work)工作量證明機制升級為 POS (Proof of Stake)權益證明機制。不再以算力做為驗證方式,而是通過質押加密貨幣的數量做為驗證手段。礦工不需要顯卡也能挖礦,既節省了時間成本與電力成本,又提高了 ETH 的利用率,非常類似錢存在銀行獲得利息。


ETH2 主要使用的技術是分片分層技術實現整個網路擴容。


ETH2 升級將分為三個階段進行:


1. 階段0(正在進行):信標鏈的創建與合並。信標鏈是 ETH2 的主鏈,如同人類的大腦,是 ETH2 得以運行的基礎。


2. 階段1(預計2022年):分片鏈的創建與應用。當信標鏈與 ETH1 合並完成後,就進入分片鏈的開發階段。分片鏈可以理解為將 ETH2 主鏈的整塊數據按一定規則拆分存放,單獨建立新鏈處理,用來分擔主鏈上的數據壓力,目前規劃是建立 64 條分片鏈。


舉個例子,從北京到上海,原來的交通工具只有一條公路,所有的車輛都需要在上邊運行,就會非常擁擠;現在通過分片技術,多出來高鐵、飛機等交通方式,分流的車輛同時到達速度更快,這就是分片鏈起到的作用。

分片鏈與主鏈交互示意圖


3. 階段2(預計2023年):整個網路功能的融合。到了此階段,整個系統的功能全面開始融合,分片鏈的功能會更加強大,新的處理機制開始支持賬戶、智能合約、開發工具的創建,新的生態應用等。


此階段是以太坊網路的最終形態,網路性能得到全面提升,生態應用全面爆發。但要服務全人類,ETH2 每秒 1000 次的交易效率顯然還是遠遠不夠,以太坊也會為它的目標持續優化下去。


ETH2對於大家有什麼影響?


1. 對於以太坊生態開發者。ETH2 在部署應用的時候,是需要選擇應用在哪條分片網路進行部署,造成這種差異的原因是跨分片通信不同步,這就意味著開發者需要根據自己發展計劃做不同的組合。


2. 對與 ETH 持幣者。ETH2 與 ETH1 數據完全同步,代幣也不會有任何變化,你可以繼續使用現在的錢包地址繼續持有 ETH。


3. 對於礦工。雖然 PoW 與 PoS 還會並行一段時間,可以預計的 PoW 礦機的產出會越來越少,應該開始減少 PoW 礦機的投資,開始轉向 PoS 機制。


4. 對於用戶。ETH2 速度更快,交易手續費更低,網路體驗會非常好,唯一值得注意的是,由於 Dapp 部署在不同的分片網路上,可能需要手動選擇應用的網路選項。


ETH是否值得投資?


ETH 是除了 BTC 以外市場的風向標,明確了解 ETH2 非常有助於我們理解其他區塊鏈項目,理解二級市場。


簡單總結幾個點吧:


1. 通過以太坊的項目分析,我們可以清晰地看到:在比特幣之後,以太坊項目的發展史就是目前區塊鏈應用生態的發展史。無論 DEFI 生態,NFT 生態,DAO 生態還是代幣、合約、協議生態,其實在以太坊發布白皮書時已有預見,後來出現的項目,都是圍繞以太坊做驗證。


2. 以太坊的聯合創始人里,只有 V 神還在為以太坊事業做貢獻,但這並不影響以以太坊繁榮發展。以太坊初始團隊只是創建了它,後續的發展是社區、開發者、礦工與用戶共同建立的結果,現在的以太坊早已不是某一個人的思維,它是所有以太坊生態參與者共同的結晶,它屬於全人類。


3. 以太坊在過去的幾年一直沿著既定的開發軌跡發展,雖然中途一度出現過危機,以太坊「被死亡」了好幾百次,以太坊還是頑強的發展下來,並且擁有了繁榮生態。ETH2 還要兩三年時間才能落地,中間也充滿變數,比如其他的公鏈搶佔先機,但可以預見,ETH2 後的以太坊會更加健壯。


4. 不要在抱有任何 BTC 會死亡,區塊鏈行業會消失這樣的偽命題。BTC、ETH 讓我們看到了突破原有公司組織架構,一種全新無組織架構的商業模式存在,這種商業模式顯然更符合這個時代的發展需求,無論項目地發起團隊在不在,無論各國政府如何打壓,只要技術對人類有貢獻,就會由人員自發組織維護,區塊鏈技術是革命。


5. ETH2 的上線,短期看 PoW 獎勵與 PoS 獎勵並行,可能會讓 ETH 總通脹率短期內飆升,長期看 ETH 通脹率始終保持平衡。加上 ETH 本身的生態與應用場景,ETH是值得投資的,目前看不到有其他公鏈代替以太坊公鏈的可能性,ETH2 的上線,甚至會對其他公鏈造成「虹吸效應」,萬鏈歸一。

#比特幣[超話]# #數字貨幣#

④ 以太坊技術系列-以太坊數據結構

本篇文章和大家介紹一下以太坊的數據結構,上篇文章我們提到,以太坊為了實現智能合約這一功能,使用了基於賬戶的模型。我們來看看以太坊中數據結構。

既然是基於賬戶的模型,我們需要通過賬戶地址找到賬戶的狀態。就像通過銀行卡號可以找到你在銀行中的各種信息一樣。最簡單的想法當然是一個簡單的哈希表 key是賬戶地址 value是賬戶狀態。但這里有個問題解決不了。

輕節點如何校驗賬戶合法性?

上篇我們說過,區塊鏈中有2類節點,全節點和輕節點,輕節點只會存儲block header,所以輕節點如何才能校驗賬號是否合法呢?

這個思路和我們平時用的md5校驗一致,我們會對區塊內的信息進行hash運算從而得出區塊內信息唯一確定的值,區塊鏈所有節點中這個值都是相同的。

在這個過程中我們用到了一種數據結構Merkle Tree(哈希樹),我們先看下Merkle Tree(哈希樹)的示意圖。

上篇文章說到區塊鏈中的鏈表(哈希鏈)和我們平時常見鏈表不同的是將指針從地址改為了hash指,這里也一樣,哈希樹和二叉樹的區別有2個

1.將地址改為了哈希值

2.只有葉子節點存儲數據

回到之前的問題輕節點是如何校驗1個賬戶或交易是否是在鏈上的呢?

整個流程如上圖所示

1.輕節點需要判斷1個賬號是否合法

2.輕節點由於只存儲block header,所以拿到1個賬號的時候會向全節點發出請求

3.全節點存儲了所有賬戶狀態,將賬戶路徑中的需要計算用到的hash值返回給輕節點

4.輕節點本地進行計算根hash值,如果計算結果和自己存儲一致則賬戶合法,不一致則不合法。

那以太坊中的賬戶信息的數據結構就是這樣嗎?

直接用這樣的數據結構來存儲賬戶信息會有2個問題

查找困難

生成hash值不確定

第1個問題應該比較容易發現,在這個樹中尋找1個賬號需要的復雜度是O(n),因為沒有任何順序。

第2個問題其實也是因為無序導致的,無序的組合每個節點針對同一批賬戶生成的hash值不一致,這就導致無法達成共識。

既然2個問題都和順序有關,那我們類似二叉排序樹一樣,使用哈希排序樹是不是就可以解決問題了呢?

使用排序樹後會帶來另外1個問題

插入困難

因為要維持樹是有序的,很可能帶來樹結構的很大變動。

以太坊中使用了另外一種數據結構字典樹。和哈希樹不同,字典樹應該是很多地方都有使用。我們簡單來看下字典樹的結構。

字典樹能夠較好地解決哈希樹的2個缺點1.查找困難 2.生成的hash值不確定以及排序二叉樹的1個缺點 插入困難。

但字典樹我們可以看到可能樹的深度可能由於部分元素導致整棵樹深度非常深。

這時我們可以進一步優化,將相同路徑進行壓縮。這就是壓縮字典樹。

將哈希樹和壓縮字典樹結合,就可以得到以太坊存儲賬戶的最終數據結構-MPT。

將壓縮字典樹裡面的指針從地址改為指針,並且將數據存儲在葉子節點中即可。

介紹完狀態樹的數據結構,我們接下來討論1個問題,區塊中存儲的賬戶狀態是什麼樣的范圍。有2種選擇。

只保存當時區塊中產生交易的賬戶狀態。

保存全局所有的賬戶。

我們可以看下這2種方式,無非就是空間和時間的平衡,只保存當前區塊產生的交易意味著是做懶載入(需要的時候才去尋找賬戶),在區塊鏈中這個代價是非常大的,因為尋找的賬戶之前從未交易過,這樣會遍歷整個區塊鏈。另外一種保存全局的賬戶方式雖然看起來空間消耗較大,但查找快捷,而且空間的問題我們可以通過其他方式優化。所以最終以太坊選擇了第2種每個區塊都報錯全局所有賬戶的方式。

我們來看下以太坊中是如何保存狀態樹的。

可以看到以太坊中雖然每個區塊都保存了全部賬戶,但是會將未發生變化的賬戶狀態指向前1個節點,本身只存儲發生變化的狀態,這樣可以較大程度優化空間佔用。

介紹完以太坊中比較復雜的狀態樹後,我們繼續來看看以太坊中的另外兩棵樹,交易樹和收據樹。

首先介紹一下,為什麼需要交易樹&收據樹。

1.交易樹

雖然以太坊是基於賬戶的模型,但是就像銀行不僅會存儲銀行卡的余額,還會存儲卡中的每筆錢怎麼來的以及怎麼花的。交易樹中就存儲著當前區塊中的包含的所有交易。

2.收據樹

由於智能合約的引入增加了不少復雜性,所以以太坊用收據樹存儲著一些交易操作的額外信息。比如交易過程中執行日誌就包含在收據樹中方便查詢。收據樹和交易樹是一一對應的。每發生一次交易就會有一次收據。

和狀態樹不同交易樹和收據樹只維護當前區塊內發生的交易,因為當時區塊發生交易時不需要再去查找另外1個交易,也就之前需要可能遍歷整個區塊鏈的查找操作了。

由於以太坊中的出塊速度較快,我們進行一些查詢一些符合條件交易的時候會面臨大量數據遍歷困難的問題。收據樹中引入了布隆過濾器可以幫助我們有效緩解這一困難。

布隆過濾器將大集合中每個元素進行hash運算映射到1個較小的集合,這時再來1個元素要判斷是否在大集合的時候,不需要遍歷整個大集合,而是去進行hash運算去小集合中尋找是否存在,如果不存在,肯定不在大集合中,如果存在則不能說明任何問題。

如上圖所示,布隆過濾器只能證明某1個元素不在集合中,不能證明1個元素在結合中。

以太坊中如果我們要在較多區塊中尋找某1個交易,則可以利用布隆過濾器,過濾掉肯定不存在目標交易的區塊,然後進入收據樹內繼續利用布隆過濾器篩選,剩下的才是可能的目標交易的交易,進行一一比對即可。

我們介紹了以太坊的核心數據結構,狀態樹&交易樹&收據樹,他們都是使用相同的數據結構-哈希壓縮字典樹。但狀態樹是維護1顆全局賬戶樹,交易樹和收據樹則是維護本區塊內的交易或收據。

介紹完數據結構後,後面我們會用幾篇文章來介紹以太坊中的一些核心演算法,比如共識機制,挖礦演算法等。

閱讀全文

與以太坊技術詳解與實戰經管相關的資料

熱點內容
辛巴威比特幣交易所 瀏覽:255
智匯魔方官網挖礦 瀏覽:400
比特幣魚池設置 瀏覽:877
比特幣的接受情況 瀏覽:298
起點區塊鏈礦機 瀏覽:196
合法正規的雲挖礦平台 瀏覽:363
以太坊和比特幣現金 瀏覽:885
數字貨幣在超市如何使用 瀏覽:956
ifmchain挖礦 瀏覽:185
xuc以太坊萬象 瀏覽:801
第一個人比特幣 瀏覽:14
比特幣現行交易 瀏覽:587
零投資虛擬貨幣 瀏覽:870
bte礦機多少錢 瀏覽:176
區塊鏈金融加盟 瀏覽:793
最新人民日報評比特幣 瀏覽:567
1050挖礦eth 瀏覽:595
誰有區塊鏈微信群啦幾個 瀏覽:749
貨幣比特幣插針 瀏覽:994
亞洲博鰲區塊鏈論壇 瀏覽:494