以太坊加入共識機制
① 以太坊存在的問題
1.擴展性不足:
以太坊社區的主要開發人員和研究人員始終認為區塊鏈技術要實現大規模採用,可擴展性是區塊鏈應用程序需要解決的唯一最重要的關鍵。
以太坊的底層設計,最大的問題是以太坊只有一條鏈,沒有側鏈,它把所有的程序對等的跑在全球所有節點的礦機上。這樣一個很耗資源的程序,會導致問題越來越嚴重。
2.合約程序漏洞,無法抵禦DDOS攻擊
據相關研究表明,在基於以太坊的近100萬個智能合約上,發現有34,200(約3%)個含有安全漏洞,將允許黑客竊取ETH、凍結資產或刪除合約。這幾年,以太坊面對合約程序漏洞和DDOS攻擊的問題,也一直無法找到很好的解決辦法。(更好用的數字貨幣交易平台「幣匯」)
3.對於ICO泡沫和項目方砸盤
目前的ETH下跌,很大程度上來自於項目方的砸盤套現,這個問題可以在ICO代幣融資上進行規則限制,不能像現在這樣毫無成本的就能發一個幣,而且還沒有任何監督懲罰機制。任何事情都需要有一套合理的演進規則,大家按規則辦事,所謂無規矩不成方圓。在規則的基礎上,各類ICO項目有效監督,有序進出,才是一個正常的市場,這樣才可能維系著代幣生態的持續、穩定發展。
4.智能合約費用過高
在以太坊上現在還是POW的挖礦模式,交易是有手續費的,用來激勵礦工來處理交易和保護網路,不同的是以太坊是以「gas」的形式來收費的。
在以太坊協議中規定,交易手續費=Gas 數量 x Gas 價格,其中 Gas 數量由智能合約的復雜程度決定,而 Gas 價格則由合約發起人決定。這對開發者和用戶意味著什麼呢?雖然讀取本地區塊鏈是免費的,但寫入和運算是花錢的,儲存更是尤其昂貴,因為任何寫入的信息都會被永久的儲存著。
5.社區對共識協議改變的分歧
以太坊計劃實現將 POW 機制改為 POW/POS 混合共識機制。但這個涉及到技術開發和礦工雙方能否達到利益共識的問題了。如果協議發生了變化,社區意見不合時,就會導致分叉,大家各自玩各自的。
② 區塊鏈共識機制
PoW:工作量證明 (Proof of Work,簡稱 PoW ) ,簡單的解釋就是一份證明,用來確認你做過一定量的工作。因為監測工作的整個過程通常是極為低效的,而通過對工作的結果進行認證來證明完成了相應的工作量,則是一種非常高效的方式。比如現實生活中的畢業證、駕駛證等等,都是通過檢驗結果的方式所取得的證明。這就是說,你獲得多少幣,取決於你對挖礦貢獻的有效工作。簡單的理解,你電腦性能越好,你獲得的收益就會越多,這就是根據你的工作量來執行幣的分配。大部分的數字貨幣,比如比特幣、萊特幣等等,都是基於 PoW 模式的虛擬貨幣(算力越高、挖礦時間越長,你獲得的幣就越多)。
PoS:PoS 是一種在公鏈中的共識演算法,可作為 PoW 演算法的一種替換。PoW是保證比特幣、當前以太坊和許多其它區塊鏈安全的一種機制,但是 PoW 演算法在挖礦過程中因破壞環境和浪費電力而受到指責。PoS 試圖通過以一種不同的機製取代挖礦的概念,從而解決這些問題。
PoS 機制可以被描述成一種虛擬挖礦。PoS 主要依賴於區塊鏈自身里的代幣。在PoW 中,一個用戶可能拿 1000 美元來買計算機,加入網路來挖礦產生新區塊,從而得到獎勵。而在 PoS 中,用戶可以拿 1000 美元購買等價值的代幣,把這些代幣當作押金放入 PoS 機制中,這樣用戶就有機會產生新塊而得到獎勵。在 PoW 中,如果用戶花費 2000 美元購買硬體設備,當然會獲得兩倍算力來挖礦,從而獲得兩倍獎勵。同樣,在 PoS 機制中投入兩倍的代幣作為押金,就有兩倍大的機會獲得產生新區塊的權利。
③ 以太坊架構意識是什麼有做以太坊開發的嗎
以太坊構架意識就是區域塊鏈6層構架。分別是:數據層,網路層,共識層,激勵層,合約層,應用層。我個人覺得做以太坊開發做的比好的就是盛世華彩,感覺很專業的
④ 以太坊挖礦還能挖多久
至少還需要 2 年以上的時間。
以太坊 2.0 最大的兩個變化,一個是採用「信標鏈+分片鏈」的結構,另外一個是共識機制從當前的 PoW 轉變為 PoS,按照 V 神的說法,實現 PoS 共識演算法後,以太坊將比比特幣更安全,攻擊成本也更高。
共識機制的變更,首當其沖的毫無疑問是以太坊顯卡礦工。前一段時間,得益於 DeFi 行情的爆發,以太坊挖礦成為了很多人眼中的香餑餑,無論是入場的人數還是全網的算力,都在快速地增長。然而,以太坊 2.0 猶如一把達摩克利斯之劍,因為 PoS 共識機制並不需要當前在挖的以太坊顯卡礦在機。
⑤ 以太坊帶來了那些爭議和質疑呢
以太坊和比特幣是有著本質區別的,區別在哪裡呢?比特幣定義的是一套貨幣體系,而以太坊側重的是打造一條主鏈(可以理解為一條公路),可以讓大量的區塊鏈應用跑在這條公路上。
從這一點來看,以太坊的應用場景更廣泛,這也是為什麼我們說以太坊標志著區塊鏈
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旗號進行資金盤、詐騙圈錢等不法行為,對社會和金融穩定造成安全隱患。
⑥ 區塊鏈的共識機制是什麼優缺點有哪些
區塊鏈的共識機制有很多,說一個影響力最大的比特幣背後的pow共識機制,好處是安全 不可篡改 全球流通 缺點是速度太慢了 一秒鍾只能處理7筆交易
⑦ 以太坊是什麼丨以太坊開發入門指南
以太坊是什麼丨以太坊開發入門指南
很多同學已經躍躍欲試投入到區塊鏈開發隊伍當中來,可是又感覺無從下手,本文將基於以太坊平台,以通俗的方式介紹以太坊開發中涉及的各晦澀的概念,輕松帶大家入門。
以太坊是什麼
以太坊(Ethereum)是一個建立在區塊鏈技術之上, 去中心化應用平台。它允許任何人在平台中建立和使用通過區塊鏈技術運行的去中心化應用。
對這句話不理解的同學,姑且可以理解為以太坊是區塊鏈里的Android,它是一個開發平台,讓我們就可以像基於Android Framework一樣基於區塊鏈技術寫應用。
在沒有以太坊之前,寫區塊鏈應用是這樣的:拷貝一份比特幣代碼,然後去改底層代碼如加密演算法,共識機制,網路協議等等(很多山寨幣就是這樣,改改就出來一個新幣)。
以太坊平台對底層區塊鏈技術進行了封裝,讓區塊鏈應用開發者可以直接基於以太坊平台進行開發,開發者只要專注於應用本身的開發,從而大大降低了難度。
目前圍繞以太坊已經形成了一個較為完善的開發生態圈:有社區的支持,有很多開發框架、工具可以選擇。
智能合約
什麼是智能合約
以太坊上的程序稱之為智能合約, 它是代碼和數據(狀態)的集合。
智能合約可以理解為在區塊鏈上可以自動執行的(由事件驅動的)、以代碼形式編寫的合同(特殊的交易)。
在比特幣腳本中,我們講到過比特幣的交易是可以編程的,但是比特幣腳本有很多的限制,能夠編寫的程序也有限,而以太坊則更加完備(在計算機科學術語中,稱它為是「圖靈完備的」),讓我們就像使用任何高級語言一樣來編寫幾乎可以做任何事情的程序(智能合約)。
智能合約非常適合對信任、安全和持久性要求較高的應用場景,比如:數字貨幣、數字資產、投票、保險、金融應用、預測市場、產權所有權管理、物聯網、點對點交易等等。
目前除數字貨幣之外,真正落地的應用還不多(就像移動平台剛開始出來一樣),相信1到3年內,各種殺手級會慢慢出現。
編程語言:Solidity
智能合約的默認的編程語言是Solidity,文件擴展名以.sol結尾。
Solidity是和JavaScript相似的語言,用它來開發合約並編譯成以太坊虛擬機位元組代碼。
還有長像Python的智能合約開發語言:Serpent,不過建議大家還是使用Solidity。
Browser-Solidity是一個瀏覽器的Solidity IDE, 大家可以點進去看看,以後我們更多文章介紹Solidity這個語言。
運行環境:EVM
EVM(Ethereum Virtual Machine)以太坊虛擬機是以太坊中智能合約的運行環境。
Solidity之於EVM,就像之於跟JVM的關系一樣,這樣大家就容易理解了。
以太坊虛擬機是一個隔離的環境,在EVM內部運行的代碼不能跟外部有聯系。
而EVM運行在以太坊節點上,當我們把合約部署到以太坊網路上之後,合約就可以在以太坊網路中運行了。
合約的編譯
以太坊虛擬機上運行的是合約的位元組碼形式,需要我們在部署之前先對合約進行編譯,可以選擇Browser-Solidity Web IDE或solc編譯器。
合約的部署
在以太坊上開發應用時,常常要使用到以太坊客戶端(錢包)。平時我們在開發中,一般不接觸到客戶端或錢包的概念,它是什麼呢?
以太坊客戶端(錢包)
以太坊客戶端,其實我們可以把它理解為一個開發者工具,它提供賬戶管理、挖礦、轉賬、智能合約的部署和執行等等功能。
EVM是由以太坊客戶端提供的。
Geth是典型的開發以太坊時使用的客戶端,基於Go語言開發。 Geth提供了一個互動式命令控制台,通過命令控制台中包含了以太坊的各種功能(API)。Geth的使用我們之後會有文章介紹,這里大家先有個概念。
Geth控制台和Chrome瀏覽器開發者工具里的面的控制台是類似,不過是跑在終端里。
相對於Geth,Mist則是圖形化操作界面的以太坊客戶端。
如何部署
智能合約的部署是指把合約位元組碼發布到區塊鏈上,並使用一個特定的地址來標示這個合約,這個地址稱為合約賬戶。
以太坊中有兩類賬戶:
· 外部賬戶
該類賬戶被私鑰控制(由人控制),沒有關聯任何代碼。
· 合約賬戶
該類賬戶被它們的合約代碼控制且有代碼與之關聯。
和比特幣使用UTXO的設計不一樣,以太坊使用更為簡單的賬戶概念。
兩類賬戶對於EVM來說是一樣的。
外部賬戶與合約賬戶的區別和關系是這樣的:一個外部賬戶可以通過創建和用自己的私鑰來對交易進行簽名,來發送消息給另一個外部賬戶或合約賬戶。
在兩個外部賬戶之間傳送消息是價值轉移的過程。但從外部賬戶到合約賬戶的消息會激活合約賬戶的代碼,允許它執行各種動作(比如轉移代幣,寫入內部存儲,挖出一個新代幣,執行一些運算,創建一個新的合約等等)。
只有當外部賬戶發出指令時,合同賬戶才會執行相應的操作。
合約部署就是將編譯好的合約位元組碼通過外部賬號發送交易的形式部署到以太坊區塊鏈上(由實際礦工出塊之後,才真正部署成功)。
運行
合約部署之後,當需要調用這個智能合約的方法時只需要向這個合約賬戶發送消息(交易)即可,通過消息觸發後智能合約的代碼就會在EVM中執行了。
Gas
和雲計算相似,佔用區塊鏈的資源(不管是簡單的轉賬交易,還是合約的部署和執行)同樣需要付出相應的費用(天下沒有免費的午餐對不對!)。
以太坊上用Gas機制來計費,Gas也可以認為是一個工作量單位,智能合約越復雜(計算步驟的數量和類型,佔用的內存等),用來完成運行就需要越多Gas。
任何特定的合約所需的運行合約的Gas數量是固定的,由合約的復雜度決定。
而Gas價格由運行合約的人在提交運行合約請求的時候規定,以確定他願意為這次交易願意付出的費用:Gas價格(用以太幣計價) * Gas數量。
Gas的目的是限制執行交易所需的工作量,同時為執行支付費用。當EVM執行交易時,Gas將按照特定規則被逐漸消耗,無論執行到什麼位置,一旦Gas被耗盡,將會觸發異常。當前調用幀所做的所有狀態修改都將被回滾, 如果執行結束還有Gas剩餘,這些Gas將被返還給發送賬戶。
如果沒有這個限制,就會有人寫出無法停止(如:死循環)的合約來阻塞網路。
因此實際上(把前面的內容串起來),我們需要一個有以太幣余額的外部賬戶,來發起一個交易(普通交易或部署、運行一個合約),運行時,礦工收取相應的工作量費用。
以太坊網路
有些著急的同學要問了,沒有以太幣,要怎麼進行智能合約的開發?可以選擇以下方式:
選擇以太坊官網測試網路Testnet
測試網路中,我們可以很容易獲得免費的以太幣,缺點是需要發很長時間初始化節點。
使用私有鏈
創建自己的以太幣私有測試網路,通常也稱為私有鏈,我們可以用它來作為一個測試環境來開發、調試和測試智能合約。
通過上面提到的Geth很容易就可以創建一個屬於自己的測試網路,以太幣想挖多少挖多少,也免去了同步正式網路的整個區塊鏈數據。
使用開發者網路(模式)
相比私有鏈,開發者網路(模式)下,會自動分配一個有大量余額的開發者賬戶給我們使用。
使用模擬環境
另一個創建測試網路的方法是使用testrpc,testrpc是在本地使用內存模擬的一個以太坊環境,對於開發調試來說,更方便快捷。而且testrpc可以在啟動時幫我們創建10個存有資金的測試賬戶。
進行合約開發時,可以在testrpc中測試通過後,再部署到Geth節點中去。
更新:testrpc 現在已經並入到Truffle 開發框架中,現在名字是Ganache CLI。
Dapp:去中心化的應用程序
以太坊社區把基於智能合約的應用稱為去中心化的應用程序(DecentralizedApp)。如果我們把區塊鏈理解為一個不可篡改的資料庫,智能合約理解為和資料庫打交道的程序,那就很容易理解Dapp了,一個Dapp不單單有智能合約,比如還需要有一個友好的用戶界面和其他的東西。
Truffle
Truffle是Dapp開發框架,他可以幫我們處理掉大量無關緊要的小事情,讓我們可以迅速開始寫代碼-編譯-部署-測試-打包DApp這個流程。
總結
我們現在來總結一下,以太坊是平台,它讓我們方便的使用區塊鏈技術開發去中心化的應用,在這個應用中,使用Solidity來編寫和區塊鏈交互的智能合約,合約編寫好後之後,我們需要用以太坊客戶端用一個有餘額的賬戶去部署及運行合約(使用Truffle框架可以更好的幫助我們做這些事情了)。為了開發方便,我們可以用Geth或testrpc來搭建一個測試網路。
註:本文中為了方便大家理解,對一些概念做了類比,有些嚴格來不是准確,不過我也認為對於初學者,也沒有必要把每一個概念掌握的很細致和准確,學習是一個逐步深入的過程,很多時候我們會發現,過一段後,我們會對同一個東西有不一樣的理解。
⑧ 以太坊升級是什麼意思
以太坊君士坦丁堡(Constantinople)分叉即將開始,很多人都對本次分叉感到好奇,不確定是否需要提前做好准備。
簡單來說:如果你只是ETH的持有者,本次升級你不需要做任何准備。
⑨ 以太坊架構是怎麼樣的
以太坊最上層的是DApp。它通過Web3.js和智能合約層進行交換。所有的智能合約都運行在EVM(以太坊虛擬機)上,並會用到RPC的調用。在EVM和RPC下面是以太坊的四大核心內容,包括:blockChain, 共識演算法,挖礦以及網路層。除了DApp外,其他的所有部分都在以太坊的客戶端里,目前最流行的以太坊客戶端就是Geth(Go-Ethereum)
⑩ Filecoin的共識機制是什麼
復制證明(PoRep)+時空證明(PoSt)+預期共識(EC)
復制證明是PoS(Proof-of-Storage)的優化版,在PoRep下可以有效防範去中心化網路中的三種常見攻擊,三者的共同點是攻擊礦工實際存儲的數據大小要比聲稱存儲的小,這樣就獲得了本不該獲得的系統獎勵。
時空證明全稱為Proof-of-Space-time,提出了證明鏈(Proof-chain)的數據結構,把一些挑戰和證明鏈接起來形成,在證明鏈的基礎上添加時間段,這樣就得到了一段時間內的礦工存儲數據的證明。時空證明方便驗證礦工在一段時間內確實存儲了特定數據,利用時間戳錨定這些證明鏈。
預期共識(Expected Consensus,EC),新的區塊創建權,通過每輪選舉,礦工獲得選舉的可能性跟礦工當前的有效存儲(算力)成正比,亦即把礦工在網路中當前的存儲數據相對於整個網路的存儲比例轉化為礦工投票權。
Filecoin還引入了一種稱為時限性(Time Bounded)的協議,有效解決去中心化網路中常見的三種攻擊。所以,Filecoin在共識機制上較之比特幣和以太坊,更為復雜。