為了防止交易重播,ETH(ETC)節點要求每筆交易必須有一個nonce數值。每一個賬戶從同一個節點發起交易時,這個nonce值從0開始計數,發送一筆nonce對應加1。當前面的nonce處理完成之後才會處理後面的nonce。注意這里的前提條件是相同的地址在相同的節點發送交易。
以下是nonce使用的幾條規則:
● 當nonce太小(小於之前已經有交易使用的nonce值),交易會被直接拒絕。
● 當nonce太大,交易會一直處於隊列之中,這也就是導致我們上面描述的問題的原因;
● 當發送一個比較大的nonce值,然後補齊開始nonce到那個值之間的nonce,那麼交易依舊可以被執行。
● 當交易處於queue中時停止geth客戶端,那麼交易queue中的交易會被清除掉。
第一個欄位 AccountNonce ,直譯就是賬戶隨機數。它是以太坊中很小但也很重要的一個細節。以太坊為每個賬戶和交易都創建了一個Nonce,當從賬戶發起交易的時候,當前賬戶的Nonce值就被作為交易的Nonce。這里,如果是普通賬戶那麼Nonce就是它發出的交易數,如果是合約賬戶就是從它的創建合約數。
為什麼要使用這個Nonce呢?其主要目的就是為了防止重復攻擊(Replay Attack)。因為交易都是需要簽名的,假定沒有Nonce,那麼只要交易數據和發起人是確定的,簽名就一定是相同的,這樣攻擊者就能在收到一個交易數據後,重新生成一個完全相同的交易並再次提交,比如A給B發了個交易,因為交易是有簽名的,B雖然不能改動這個交易數據,但只要反復提交一模一樣的交易數據,就能把A賬戶的所有資金都轉到B手裡。
當使用賬戶Nonce之後,每次發起一個交易,A賬戶的Nonce值就會增加,當B重新提交時,因為Nonce對不上了,交易就會被拒絕。這樣就可以防止重復攻擊。當然,事情還沒有完,因為還能跨鏈實施攻擊,直到EIP-155引入了chainID,才實現了不同鏈之間的交易數據不兼容。事實上,Nonce並不能真正防止重復攻擊,比如A向B買東西,發起交易T1給B,緊接著又提交另一個交易T2,T2的Gas價格更高、優先順序更高將被優先處理,如果恰好T2處理完成後剩餘資金已經不足以支付T1,那麼T1就會被拒絕。這時如果B已經把東西給了A,那A也就攻擊成功了。所以說,就算交易被處理了也還要再等待一定時間,確保生成足夠深度的區塊,才能保證交易的不可逆。
Price 指的是單位Gas的價格,所謂Gas就是交易的消耗,Price就是單位Gas要消耗多少以太幣(Ether),Gas * Price就是處理交易需要消耗多少以太幣,它就相當於比特幣中的交易手續費。
GasLimit 限定了本次交易允許消耗資源的最高上限,換句話說,以太坊中的交易不可能無限制地消耗資源,這也是以太坊的安全策略之一,防止攻擊者惡意佔用資源。
Recipient 是交易接收者,它是common.Address指針類型,代表一個地址。這個值也可以是空的,這時在交易執行時,會通過智能合約創建一個地址來完成交易。
Amount 是交易額。這個簡單,不用解釋。
Payload 比較重要,它是一個位元組數組,可以用來作為創建合約的指令數組,這時每個位元組都是一個單獨的指令;也可以作為數據數組,由合約指令來進行操作。合約由以太坊虛擬機(Ethereum Virtual Machine,EVM)創建並執行。
V、R、S 是交易的簽名數據。以太坊當中,交易經過數字簽名之後,生成的signature是一個長度65的位元組數組,它被截成三段,前32位元組被放進R,再32位元組放進S,最後1個位元組放進V。那麼為什麼要被截成3段呢?以太坊用的是ECDSA演算法,R和S就是ECSDA簽名輸出,V則是Recovery ID。
R,S,V是交易簽名後的值,它們可以被用來生成簽名者的公鑰;R,S是ECDSA橢圓加密演算法的輸出值,V是用於恢復結果的ID
㈡ 區塊鏈技術中智能合約的商業落地空間有多大
在區塊鏈時代之前,尼克薩博就於1996年首次提出智能合約概念:一套以數字形式定義的約定,包括合約參與方可以在上面執行這些約定的協議。智能合約的基本思想是,在區塊鏈上可以自動執行的(由事件驅動的)、以代碼形式編寫的合同(特殊的交易)。
從以太坊智能合約的建立以來,90%以上的合約都用於發行代幣,相關商業場景的落地仍然泛善可呈。智能合約未來究竟是怎樣的?這里可以看看剛剛發布消息推出智能合約的比原鏈Bytom。作為首個在MIT發布人工智慧共識演算法的公鏈項目——比原鏈Bytom,繼4月主網成功上線後,又於26日發布基於UTXO模型的智能合約。
區別於以太坊智能合約構建在賬戶模型上,比原鏈是整個區塊鏈行業首批在UTXO模型上構建智能合約的公鏈,比原鏈同時將UTXO進行了改造和深化,使其能夠支持多種資產的操作。此外,比原鏈智能合約採用自有的Equity語言,這是一種圖靈完備,解釋型的高級語言,可以方便地對比原鏈上的資產進行操作,並靈活地融入各種資產業務場景。
而除合約語言的發布外,比原鏈還同時發布了多個合約模板,這些模板直接附帶清晰的業務含義,從這些合約模板中,可以直接看到未來商業化落地的場景,並可進行更大范圍的延展想像。
幣幣交易合約
通過該合約,用戶可以不通過中心化的機構即可在比原鏈和其他人進行多種資產的交易。即通過合約鎖定部分資產,只有當其他用戶打入規定數量的指定資產時,才能解鎖這部分資產。
例如,在合約基礎上構建一個去中心化的交易所,通過合約直接撮合想要交換不同幣種不同資產的雙方,成交速度快並且只收取非常少量的交易手續費。
第三方信任機構託管合約
該合約模板下,用戶可以將指定資產打入第三方的賬戶,並由第三方來決定是打給指定賬戶或者返回原賬戶。第三方信任託管合約規定第三方機構只能將資產打到指定賬戶或者返回原賬戶,杜絕了第三方賬戶監守自盜的可能性。在商業場景落地中,可以預想到,未來可在第三方信任機構託管合約的基礎上構建一個資產託管平台,通過可信第三方和合約的雙重信任來保證用戶資產的保管,交易和流通。
抵押貸款合約
即借方將所借資產,貸方將抵押資產打到同一個合約中,貸方獲取借方資產,如果在某個區塊高度時,貸方未能把借方的資產歸還,那麼借方將自動獲得貸方的抵押資產。
看漲期權合約
在這一合約中,資產發行方可以以一定的價格售賣某種資產,購買者可以以該價格購買資產,當超過某個區塊高度,該資產自動返回給資產發行方。
從以上比原鏈智能合約的設計中,我們可以看到這樣一些優勢:
首先,多種具有業務含義的模板為上層構建Dapp提供了方便,不需要太多的開發量即可實現某些核心的業務過程;其次,比原鏈發行資產的智能合約均有模板。相較於由不同開發者自行編寫,標准模板下安全風險降低很多。此外,比原鏈在創建智能合約時就將調用合約作為子合約納入,日後調用的合約模板更改或出現紕漏,都不影響所有已完成的智能合約,這對於前期的智能合約而言其安全價值極高。
我們可以這樣理解,使用擴展UTXO模型BUTXO的比原鏈,把資產作為新的UTXO形式進行交互,不僅規避了以太坊帳戶模型所存在的數據溢出等其它漏洞的出現,同時兼具靈活性、多樣性及可控性。
而對於比原鏈來說,智能合約的發布也標志著其核心的確定,將進一步推進項目的商業化落地。
㈢ 第三代區塊鏈將彌補以太坊留下的 Defi 漏洞
由於ETH 2.0 升級距離全面發布還有數月甚至數年的時間,第三代區塊鏈協議正在迅速趕上取代以太坊作為 dapps 和 defi 的「首選」樞紐。
盡管很多人可能只是最近才發現它,但區塊鏈技術已經存在了足夠長的時間,可以從第一代協議發展到第二代協議,現在已經發展到第三代協議。
第一代區塊鏈始於比特幣,比特幣是中心化金融服務霸權的替代方案。它為去中心化的金融生態系統奠定了基礎,但比特幣網路提供的功能有限,需要巨大的計算能力才能運行,並且嚴重缺乏互操作性。
這導致了 2015 年以太坊的出現,標志著第二代區塊鏈協議的曙光。隨著 Vitalik Buterin 在區塊鏈上引入智能合約功能,它引發了範式轉變,使加密貨幣能夠從金融工具過渡到更實用的目的。
以太坊通過在鏈上實現數據和價值的「有條件轉移」,打開了去中心化的金融 (defi) 的大門。從那以後,以太坊一直在瘋狂發展,鞏固了自己作為啟動 dapps、NFT 和 defi 協議的首選平台的地位。
開發人員和採用者接受了復仇,並開始生成自己的ERC20令牌,這么多的社交媒體平台開始談論的「flippening」 -在ETH將超過BTC市值的條款。
然而,盡管它取得了成功,但問題很快在以太坊區塊鏈上顯現出來。隨著新項目大量進入以太坊生態系統,網路開始面臨可擴展性問題。Gas 費用飆升,有限的交易吞吐量成為日常問題。
以太坊的創造者 Vitalik Buterin 也表達了他對以太坊擴展能力的懷疑,他說:
雖然提議的以太坊 2.0 升級承諾解決當前使以太坊網路蒙上陰影的問題,但事情並沒有按計劃進行。ETH 2.0的第一階段最初定於 2019 年推出,於 2020 年 12 月開始。還有兩個階段,在 2022 年之前完全發布的可能性很小。
因此,聲稱該網路在實現其成為世界「去中心化計算機」的核心願景之前還有很長的路要走,這並不誇張。
盡管比特幣和以太坊帶來了創新,但這些鏈都受到各自的可擴展性和效率問題的困擾。同時,這兩個網路都需要大量的計算資源才能運行。所有這一切都導致了令人痛苦的緩慢吞吐率和過高成本的永久循環。
已經開發了許多地方 2 層次擴展解決方案來克服比特幣和以太坊的固有問題,每個解決方案都取得了不同程度的成功。二層解決方案在一定程度上解決了互操作性和可擴展性問題,但與共識機制和挖礦相關的核心問題還有待解決。
這就是第三代區塊鏈出現的地方。雖然一些第三代協議可以補充現有的區塊鏈網路,但其他一些是全新的區塊鏈,擁有廣泛的特性和功能。從多層架構到創新的共識機制,第三代區塊鏈協議不僅完全能夠解決出現的可擴展性問題,而且還具有高度的互操作性、快速性和成本效益。
不可否認,defi 熱潮是因為以太坊而發生的,並且以太坊仍然主導著 defi 市場。然而,隨著基於第三代區塊鏈協議的新定義項目的出現,以太坊的權威無疑將受到挑戰。
隨著 defi 不斷擴大其市場,下一個「Defi 熱潮」很可能來自於比早期區塊鏈網路創新更敏捷、更專注的新興產業。也就是說,隨著加密世界為「下一次大翻轉」奠定了基礎,有前途的項目正在排隊等待更新的區塊鏈技術。
在市場主導地位方面,Cardano、Solana 和 Polkadot 處於領先地位。每個平台都提供一系列功能,這就是為什麼新項目聯盟正在排隊開始在這些平台上構建他們的想法。
例如,卡爾達諾的穩定幣和 defi 中心Ardana使卡爾達諾能夠擴展到 defi 領域。該平台及其組成協議是從定義宏觀的角度設計的,旨在為用戶提供所需的功能,以幫助維護卡爾達諾鏈上所有類型的去中心化經濟。它將作為一個金融基礎層,通過採用 歷史 證明的可組合性、資本效率和穩定性的協議模型來支持卡爾達諾的去中心化經濟。
作為其戰略路線圖的一部分,Ardana 將很快推出 dUSD。這種可驗證的、鏈上抵押支持的穩定幣將幫助用戶將他們的ADA和其他支持的資產投入使用。該平台還將推出其 AMM dex(去中心化交易所)Danaswap,用於穩定的多資產池。根據 Ardana 團隊的說法,Danaswap 將提供資本高效的掉期,同時以最小的滑點為目標,並使流動性提供者能夠利用低風險的收益機會。
另一項雄心勃勃的計劃是Acala,它是利用第三代區塊鏈協議 Polkadot 的內置功能的 Defi 流動性中心。目前,幾乎所有穩定幣都建立在以太坊網路上,限制了採用和使用。Acala 希望通過利用 Polkadot 的速度、跨鏈互操作性和成本效率來改變這一現實,以提供具有內置流動性和現成的去中心化金融應用程序的 defi 中心。
同樣,Acala 聲稱以其他網路所需的一小部分來結算交易,在 defi 競賽中建立了數量優勢。該平台將通過 Polkadot 基於權重的費用模型支持受交易復雜性影響很小的小額 Gas 費用。此外,Acala 還將引入「演算法風險調整」功能,該功能將自動修改其借貸協議的風險參數,包括利率和抵押品比率。
最後,在這場正在進行的 defi 市場份額爭奪戰中,建立在 Solana 區塊鏈網路上的一體式加密交易平台Atani是另一個需要監控的重量級競爭者。該平台提供免費的加密交易工具,並與 Kucoin、Binance、Okex、Bitfinex、Poloniex 等頂級交易所合作,為用戶提供更低的交易費用。
Atani 最近在 Solana 上推出了新的 dex 聚合器,以提供訂單路由功能,同時提供投資組合跟蹤、價格警報、技術分析等附加組件。有了這個聚合器和 Solana 的嵌入特性,Atani 的計劃是減少分散的 defi 生態系統之間的摩擦,將 cexs(中心化交易所)和 dexs 的流動性提供給 Solana 生態系統,同時確保多鏈支持。
當談到挖掘 defi 的真正潛力時,我們還沒有真正觸及表面。Web 3.0 正在發展,地球村正在變得越來越小。與此同時,defi 服務對於全球沒有銀行賬戶和銀行賬戶不足的人來說都是革命性的,他們需要更多空間來擴展,就像現有協議推動網路容量限制一樣。
從公正的角度來看,Polkadot、Cardano、Solana 和其他幾個第三代區塊鏈平台為阻礙傳統鏈的可擴展性和互操作性提供了急需的解決方案。它們更快、更安全、更具成本效益且資源消耗低,將它們定位為可廣泛使整個加密貨幣行業受益的多合一解決方案。隨著以太坊 2.0 的首次亮相還有很長的路要走,第三代區塊鏈協議已經在這里完成繁重的工作並將 defi 提升到一個新的水平。
您認為哪個網路會贏得 defi 競賽?請在下面的評論部分告訴我們。
#熱議區塊鏈# #數字貨幣# #比特幣[超話]#
㈣ 以太坊帶來了那些爭議和質疑呢
以太坊和比特幣是有著本質區別的,區別在哪裡呢?比特幣定義的是一套貨幣體系,而以太坊側重的是打造一條主鏈(可以理解為一條公路),可以讓大量的區塊鏈應用跑在這條公路上。
從這一點來看,以太坊的應用場景更廣泛,這也是為什麼我們說以太坊標志著區塊鏈
1.0時代一個單純的貨幣體系,向區塊鏈2.0時代實現其他行業以及應用場景的轉變。
但是,世界上沒有十全十美的事物,以太坊雖然拓展了區塊鏈在各行各業的應用范圍,還提升了處理交易的速度,但是它也存在著一定的爭議與質疑。
一、以太坊的擴展性不足的解決之道:分片技術和雷電網路
以太坊的底層設計,最大的問題是以太坊只有一條鏈,沒有側鏈,這就意味著,所有程序都要對等地跑在這條鏈上,消耗資源的同時,還會引發系統擁堵。正如去年非常火爆的以太坊游戲「加密貓」,這個游戲火爆的時候,一度引發以太坊網路癱瘓。
對於提升處理能力這個問題,以太坊提出兩種方式:一個是分片技術(shard),一個是雷電網路,下面我們分別介紹一下這兩種技術。
(一)分片技術
以太坊創始人 V 神(Vitalik Buterin)認為,諸如比特幣這種主流的區塊鏈網路,之所以處理交易的速度很慢,是因為每一個礦工要處理全網的每一筆交易,這樣的效率其實是非常低下的。分片技術的構想是:一筆交易不必發動全網所有節點都去處理,只要讓網路中的一部分節點(礦工)處理就好了。於是,以太坊網路被劃分成很多片,同一時間,每一分片都可以處理不同的交易,這樣一來,會大大提升網路性能。
但是,分片技術也是有一定爭議的。我們知道,區塊鏈技術的重要思想是去中心化,全網都去見證(處理)同一交易,這才具有最高的權威性。而以太坊分片技術,並不是所有節點共同見證,而是類似於分小組見證,這樣一來,它便失去了絕對的「去中心化」屬性,只能通過犧牲掉一定的去中心化特性來達到高性能的目的。
(二)雷電網路
雷電網路使用的是鏈下交易的方式。這是什麼意思呢?它的意思是:使用雷電網路的參與者在互相轉賬時,不需要通過以太坊主鏈交易確認,而是通過參與者之間創建支付通道,在鏈下完成。
不過,雷電網路並不是脫離主鏈的,在建立支付通道之前,需要先用主鏈上的資產做抵押,生成余額證明(Balance Proof),擁有餘額證明才能表明你能做出相應余額的轉賬。在交易雙方都持有餘額證明的情況下,雙方可通過支付通道在鏈下進行無限制次數的轉賬。
只有在完成鏈下交易,需要將資產轉回鏈上時,才會在以太坊主鏈上登記主鏈賬戶的余額變化信息,而這期間不管發生多少次交易在主鏈上是不會有記錄的。
雷電網路還有一個實實在在的好處,就是可以為你省下礦工費用。目前我們在以太坊主鏈上進行交易,需要消耗 Gas,需要支付礦工費用,那麼一旦將交易搬到鏈下,就可以節省這一部分的成本。
當然,雷電網路並不是十全十美的。在使用雷電網路時需要用主鏈上的資產作抵押;而這部分資產作為抵押物,在使用者完成鏈下交易之前是不能使用的。這也就決定了,雷電交易只適合小額交易。
上面就是以太坊擴展性不足的問題,以及目前提出的兩個主要解決方案:分片技術和雷電網路。
二、以太坊的智能合約存在漏洞與臭名昭著的 The Dao 事件
以太坊的智能合約很強大,但是,凡是代碼都會存在漏洞的,以太坊智能合約最大的爭議就在於所謂的漏洞,也就是安全性問題。據相關研究表明,在基於以太坊的近100萬個智能合約上,發現有34200(約3%)個含有安全漏洞,將允許黑客竊取ETH、凍結資產或刪除合約,比如說,臭名昭著的The Dao 事件。
(一)Dao是什麼意思?
介紹 The Dao 事件之前, 我們先見到介紹一下 DAO 是什麼。DAO 是 Decentralized
Autonomous Organization 的簡稱,可以理解為:去中心化自治組織。從以太坊的角度來理解,DAO 是區塊鏈上的某一類合約,或者一個合約組合,用來代替政府的審查以及復雜等中間程序,從而實現高效的、去中心化的信任的系統。所以,DAO 不是特定的某個組織,也就說呢,可以有很多的DAO,各種各樣的DAO。
(二)臭名昭著的The Dao事件
但是,我們現在提到DAO,基本上所指的都是The DAO事件,也就是我們剛剛說的那個臭名昭著的黑客攻擊事件。我們知道,英文中的 The是特指的意思,The DAO事件呢就
是特指的那個DAO事件,因為我們剛剛說了DAO不是特定的某個組織,可以有很多的DAO,各種各樣的DAO。
2016 年的時候,德國一家專注「智能鎖」的公司 Slock.it,為了實現去中心化的實物交換(比如說:公寓啊,船隻啊),在以太坊上發布了 DAO項目。並且於2016年4月
30日開始,融資窗口開放了28天。
沒想到,這個DAO項目的人氣非常高,短短半個月就籌得了超過一億美元,而到整個融資期結束,一共籌集到1.5億美元,由此呢,它成為歷史上最大的眾籌項目。然而好景不長,到了6月份,黑客利用智能合約裡面的漏洞,成功轉移了超過360萬個以太幣,並投入到一個DAO子組織中,這個組織和The DAO有著同樣的結構。以至於當時以太幣價格從20多美元直接跌破13美元。
這個事件說明智能合約的確是有漏洞的,而且一旦漏洞被黑客利用,那麼後果是非常嚴重的。這就是現在很多人批評以太坊,說它的智能合約不智能。
對於這個問題,目前國外有很多公司為了解決智能合約的漏洞問題 ,開始提供代碼審計服務。而從技術的角度來說,目前一些團隊正在對智能合約進行檢驗,這些團隊多數由哈佛、斯坦福和耶魯的教授帶隊,部分團隊已經獲得了頭部機構的投資。
除了目前以太坊存在的擴展性不足、智能合約漏洞問題,對於以太坊的爭議還在於它所追求的POS共識機制,也就是權益證明機制,在權益證明機制下,如果說誰持幣的數量越大、持幣時間越久,獲得的「權益」(利息)就越多,還有機會得到記賬權力,記賬又可以獲得獎勵,那麼這樣一來,容易造成「強者越強」的寡頭優勢。
還有一個問題就是ICO亂象的問題。ICO是區塊鏈項目籌措資金的常用方式,咱們可以理解為預售。以太坊上ICO項目的爆發,滋生了打著ICO旗號進行資金盤、詐騙圈錢等不法行為,對社會和金融穩定造成安全隱患。
㈤ 以太坊是騙人的嗎怎麼做
不是騙人的,必須要懂行的人帶你入行,不然不熟的人帶你你就會走進資金盤,做以太坊可以有兩個方向,
第一:下載交易所軟體在上面交易,跟股票交易一樣的,可以買多,也可以做空,也可以量化,也可以開合約,也可以開杠桿,總之跟股票操作差不多,這種來錢快,虧欠也快。
第二種:就是去廠家買顯卡或者礦機回來連網通電就可以在電腦上挖礦,每天都有收益可以提現,這個很輕松沒有風險,只有回本周期,這行就屬於投資越大回本越快賺得越多。
希望可以幫到你
㈥ 以太坊是騙人的嗎怎麼做
以太坊並非騙局,但是不法分子圍繞著以太坊設計的騙局數不勝數,規避以太坊騙局的最好方式就是,切莫輕信比人保證的投資收益率,管理好自己的錢袋子。選擇正規的數字貨幣交易所,去做投資。目前市場上主流的數字貨幣交易所有幣安、火幣網、比特網等。
拓展資料
以太坊設計原則
簡潔原則
以太坊協議將盡可能簡單,即便以某些數據存儲和時間上的低效為代價。一個普通的程序員也能夠完美地去實現完整的開發說明。這將最終有助於降低任何特殊個人或精英團體可能對協議的影響並且推進以太坊作為對所有人開放的協議的應用前景。添加復雜性的優化將不會被接受,除非它們提供了非常根本性的益處。
通用原則
沒有「特性」是以太坊設計哲學中的一個根本性部分。取而代之的是,以太坊提供了一個內部的圖靈完備的腳本語言以供用戶來構建任何可以精確定義的智能合約或交易類型。想建立一個全規模的守護程序(Daemon)或天網(Skynet),你可能需要幾千個聯鎖合約並且確定慷慨地喂養它們,一切皆有可能。
模塊化原則
以太坊的不同部分應被設計為盡可能模塊化的和可分的。開發過程中,應該能夠容易地讓在協議某處做一個小改動的同時應用層卻可以不加改動地繼續正常運行。以太坊開發應該最大程度地做好這些事情以助益於整個加密貨幣生態系統,而不僅是自身。
無歧視原則
協議不應主動地試圖限制或阻礙特定的類目或用法,協議中的所有監管機制都應被設計為直接監管危害,不應試圖反對特定的不受歡迎的應用。人們甚至可以在以太坊之上運行一個無限循環腳本,只要他願意為其支付按計算步驟計算的交易費用。
㈦ 倫敦硬分叉在即,六年前以太坊的創世地址們在幹嘛
撰文:潘致雄
北京時間 2015 年 7 月 30 日晚上 11 點 26 分, 以太坊 0 號 區塊 被正式挖出,該區塊中包含了 8893 筆創世交易 ,為 8893 個地址分配了以太坊網路中初始的 7200 多萬個 ETH 。
剛剛過完 「六歲生日」 的以太坊網路即將在本周迎來 倫敦硬分叉升級 ,此次升級中的 EIP-1559 是 以太坊誕生以來首次經濟模型修改 ,該提案的重要性不言而喻,但也引發了部分礦工和社區的巨大爭議。截止發文時,仍有 35% 的節點未升級支持倫敦硬分叉,不過無論如何,這一切都將在兩天後塵埃落定。
在這個對於以太坊頗具紀念意義的時刻,我們對那幾千個創世地址的特徵和資產持有情況做了些簡單的分析,也發現了一些有意思的結論。
有兩個比較直觀的維度可以參考這 8893 個地址目前持有 ETH 的情況,一個是這些地址總共持有的 ETH 和持有 ETH 數量的分布情況。
據鏈聞統計的數據,這 8893 個地址當前持有的 ETH 總量約為 309 萬 ETH ,相比六年前的 7200 萬 ETH 減少了 近 96% 。
但是如果以美元價值來看,這些地址資產價格提升的幅度很大。參考 CoinMarketCap 上 ETH 在 2015 年 8 月 7 日的開盤價格 2.83 美元,六年前 7200 萬 ETH 的總價值為 2 億美元;但是按照 ETH 目前的 2500 美元的價格計算,309 萬 ETH 的總價值超過 77 億美元,是六年前的近 40 倍,而在不久前以太坊創出 4300 美元 歷史 高點時,這一增幅更加可觀。
另一個維度是持有 ETH 數量的分布情況,特別是余額小於 0.01 ETH 的地址,很可能是被拋棄不用的地址。
經整理發現,目前有 5317 個創世地址 的余額小於 0.01,佔全部創世地址的約 60% 。如果擴大該標准為小於 1 ETH 的地址數量,則佔全部創世地址的約 82% (7248 個) 。
雖然這些地址已經將絕大多數的以太坊轉出,但這並不代表這些地址背後的用戶賣掉了以太坊,因為也很有可能只是轉移到了其他地址,或用戶是在對地址進行整理,不過這些情況無法從鏈上准確判斷。
在這批創世用戶中,仍有 8% 的地址幾乎未挪動手中的 ETH,特別是在這六年的時間里,以太坊的價格從最低不到 1 美元漲到了最高 4000 多美元,這些人的浮盈至少有了幾千倍。
從具體的規則來說,我們獲取了這些地址創世時的余額和當前的余額,如果差值介於 0.01 ETH 至-0.01 ETH 之間,則符合該標准,因為其中不少的地址收到過各種各樣的空投,或創建過智能合約,所以可能會增加或者減少一些 ETH。
所有符合該標準的地址數量為 723 個,更可怕的是,這些地址持有的 ETH 數量超過 200 萬 ETH ,占 8893 個地址當前 ETH 總持有量 (309 萬 ETH) 的 65%。這 200 萬個 ETH 目前的價值約 50 億美元。
在這 8893 個地址中,有一個地址的當前余額相比創世時減少了超過 1190 萬個 ETH,也就是該地址在創世階段的幾乎所有 ETH 都已轉出,只留下了零頭 (不到 10 ETH) 。
該地址 (0x5abfec2…56f9) 在創世時收到了 1190 萬個 ETH (也是創世時余額最大的地址) ,一周後該地址創建了一個智能合約地址 (0xde0B295…7BAe) 用以管理這 1190 萬個 ETH,目前該地址在 Etherscan 上被打上了 「Ethereum Foundation」 (以太坊基金會) 的賬戶標簽和 「EthDev」 (以太坊開發者) 的姓名標簽 (一個賬戶標簽下可能有多個姓名標簽) 。
所以從 EthDev 這個地址來看,目前的余額接近 40 萬 ETH,相比創世時的 1190 萬個 ETH 減少了 97% 的 ETH。不過和上面的情況一樣,其實持有的美元價值是增長了,從創世時的 3368 萬美元 (ETH 以 2.83 美元計) 增長至如今的 10 億美元 (ETH 以 2500 美元計) 。
藍色是 ETH 余額,黑色折線是持有 ETH 的美元總價值
另外在 8893 個地址中,有 40 多個地址 的余額相比創世時的余額還增長了,其中增長最多的一個地址增加了超過 3 萬個 ETH (現在價值 7500 萬美元) 。
該地址 (0xddbd2b9…121a) 在創世時獲得了 1 萬個 ETH,沒過幾天這位未知用戶就把 ETH 全部轉到了 Kraken,或許是在出售這些 ETH,或提供流動性。然後該地址又在 10 天後收到了一筆 8 萬多 ETH 的轉賬,後來又陸陸續續分批轉移出 (部分流向了交易所) ,剩下約 4 萬個 ETH。該地址自 2015 年 10 月以來,余額就再未變化過。
而該地址收到的 8 萬個 ETH,其實最終還是來自於上述的這個 EthDev 的。所以一個比較合理的猜測是,這位用戶 (機構) 除了參與創世之外,還和以太坊基金會有較深的關聯,或許是某個開發者、某個以太坊基金會的內部地址、某個早期投資機構等。
網路中對於該地址的信息極少,不過在 Etherscan 的 開發者文檔 中,使用了該地址作為演示,這也許並不是一個巧合。
㈧ 區塊鏈容量瓶頸遭質疑,生態令技術突發「奇思妙想」
在當前區塊鏈技術從成為主流應用技術的態勢下,區塊鏈系統最首要的容量瓶頸本質上受限於單台全節點的內存容量,這一點直接制約了吞吐量。而生態令就吞吐量問題,利用新技術解決區塊鏈容量遭質疑的問題。
只要是區塊鏈技術系統,無論使用何種共識演算法機制,無論是POW、POS,還是委託權益證明,都將面臨同樣的問題。假設物理網路的延遲和帶寬可以忽略不計,就像基於信息中心高速鏈路的 EOS,系統第二個瓶頸是受限的賬本存儲容量,本質上被單台全節點的內存容量所限制,這一點直接限制了區塊網路可以承載多少個參與者地址,和多少個 DApp應用。
當前大部分主流的區塊鏈技術系統,包括以太坊、比特幣區塊鏈、EOS等,都存在當下問題,並且更為不幸的是,這個問題也是無解的。多級緩存的信息庫技術可以稍微改善一下所面臨的限制,使得只有用戶活躍才會受到存儲容量限制,而總用戶基數局限於硬碟的容量。但是這也指標不治本,難以從根本上解決這個問題。
於是,ECOL生態令技術將其關注點聚焦於吞吐量,在解決吞吐量這個短板的問題基礎上,將區塊所存在的容量問題暴露出。
ECOL生態令了解到共識演算法其實幫不了解決性能和容量的瓶頸,便試圖從標新立異的共識演算法出發,提升區塊鏈系統性能的努力。基於ECOL生態令信用體系基礎,採用信用准入原則,借現有區塊鏈賬本確定性和唯一性,將各節點進行單點廣播權確定和驗證的系統完美協調。ECOL生態令的 POCM 共識機制規避了 POW 工作量證明的不夠環保節能,有算力壟斷,中化心趨向問題,解決了 POS 的權益不均問題,並處理了 DPOS 的操作效率弊病。
一般的「區塊+鏈式」架構,所有的交易要打包到區塊才生效。如果區塊的容量存儲小,則交易量大時,許多交易打包速度變慢,甚至有失敗風險。如果區塊容量存儲大,則會使區塊鏈信息迅速膨脹,普通電腦無法運行全節點,全節點的運行權則掌握在少數人手裡,這將與去中心化的結果相悖。這也是比特幣擴容之爭的根本矛盾點。ECOL生態令沒有區塊這一概念,所以解決了傳統區塊+鏈式結構先天性的悖論兩難問題。
總之,面臨容量瓶頸,分布式技術系統設計上的巧思概念極為重要,這和共識演算法有關,也和密碼學有關,ECOL生態令在這一點上做得非常好
㈨ 以太坊技術系列-以太坊數據結構
本篇文章和大家介紹一下以太坊的數據結構,上篇文章我們提到,以太坊為了實現智能合約這一功能,使用了基於賬戶的模型。我們來看看以太坊中數據結構。
既然是基於賬戶的模型,我們需要通過賬戶地址找到賬戶的狀態。就像通過銀行卡號可以找到你在銀行中的各種信息一樣。最簡單的想法當然是一個簡單的哈希表 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顆全局賬戶樹,交易樹和收據樹則是維護本區塊內的交易或收據。
介紹完數據結構後,後面我們會用幾篇文章來介紹以太坊中的一些核心演算法,比如共識機制,挖礦演算法等。