做床爱全过程激烈视频网站,伊人色综合久久天天五月婷,一性一交一口添一摸视频,在线观看人成激情视频,呦系列视频一区二区三区

數(shù)十年專注企業(yè)數(shù)字化轉(zhuǎn)型、智能化升級(jí)、企業(yè)上云解決方案服務(wù)商
工單提交 實(shí)名認(rèn)證 騰佑科技咨詢熱線咨詢熱線: 400-996-8756
百度云服務(wù)中心騰佑科技公司
云服務(wù)器活動(dòng) 服務(wù)器租用 服務(wù)器托管 機(jī)柜租賃 帶寬租賃
  • 最新資訊
  • 熱門資訊
  • 最熱資訊
智能建站

以太坊白皮書(中文版)完整版pdf下載

發(fā)布時(shí)間:2022-07-18 作者:admin

簡(jiǎn)述:領(lǐng)取完整版《以太坊白皮書.pdf》方法,請(qǐng)掃描下面二維碼關(guān)注微信公眾號(hào):騰佑科技IDC,回復(fù)“以太坊”索要白皮書!騰佑科技IDC提供香港服務(wù)器、美國(guó)服務(wù)器等全球海外服務(wù)器租用托管,是區(qū)域鏈、直銷、流媒體、外貿(mào)、游戲等

以太坊白皮書的完整版本.pdf》請(qǐng)掃描以下二維碼,關(guān)注微信微信官方賬號(hào):騰佑科技IDC,回復(fù)“以太坊”要白皮書!

騰佑科技IDC提供全球海外服務(wù)器租賃托管,如香港服務(wù)器和美國(guó)服務(wù)器。是區(qū)域鏈、直銷、流媒體、外貿(mào)、游戲等服務(wù)器解決方案的首選品牌。騰友科技為多家企業(yè)提供區(qū)塊鏈服務(wù)器租賃托管解決方案,支持其區(qū)塊鏈托管服務(wù)器!詳情請(qǐng)?jiān)L問(wèn)在線客服!(Ethereum):下一代智能合同和分散應(yīng)用平臺(tái)

翻譯,少平

中文讀者可以到以太坊愛(ài)好者社區(qū)獲取最新的以太坊信息。

當(dāng)本聰于2009年1月啟動(dòng)比特幣區(qū)塊鏈時(shí),他還向世界介紹了兩個(gè)未經(jīng)測(cè)試的革命性新概念。第一種是比特幣(bitcoin),在沒(méi)有任何資產(chǎn)擔(dān)保、內(nèi)在價(jià)值或中心發(fā)行人的情況下,分散的點(diǎn)對(duì)點(diǎn)在線貨幣保持了價(jià)值。到目前為止,比特幣已經(jīng)引起了公眾的廣泛關(guān)注。在政治上,它是一種沒(méi)有央行的貨幣,價(jià)格波動(dòng)劇烈。然而,中本聰?shù)膫ゴ髮?shí)驗(yàn)和比特幣一樣重要:基于工作量的區(qū)塊鏈概念使人們能夠就交易順序達(dá)成共識(shí)。比特幣作為應(yīng)用可以描述為先申請(qǐng)(first-to-file)系統(tǒng)有人有50個(gè)系統(tǒng):BTC同時(shí)向A和B發(fā)送這50BTC,只有先確認(rèn)的交易才會(huì)生效。沒(méi)有固有的方法來(lái)決定哪一筆交易是先到的,這阻礙了分散數(shù)字貨幣多年的發(fā)展。中本聰?shù)膮^(qū)塊鏈?zhǔn)堑谝粋€(gè)可靠的分散解決方案。如今,開(kāi)發(fā)者的注意力開(kāi)始迅速轉(zhuǎn)向比特幣技術(shù)的第二部分,區(qū)塊鏈如何應(yīng)用于貨幣以外的領(lǐng)域。

經(jīng)常提到的應(yīng)用程序包括使用鏈上的數(shù)字資產(chǎn)來(lái)代表定制貨幣和金融工具(彩色貨幣)、某些基本物理設(shè)備的所有權(quán)(智能資產(chǎn))、域名等不可替代資產(chǎn)(域名貨幣)、分散交易所、金融衍生品、點(diǎn)對(duì)點(diǎn)賭博和鏈身份和信譽(yù)系統(tǒng)。另一個(gè)經(jīng)常被詢問(wèn)的重要領(lǐng)域是“智能合約”-自動(dòng)轉(zhuǎn)移數(shù)字資產(chǎn)的系統(tǒng),按照事先制定的規(guī)則。例如,一個(gè)人可能有一份以存儲(chǔ)合同為形式的存儲(chǔ)合同“A每天最多可以提取X個(gè)幣,B每天最多Y個(gè),A和B一起可以隨意提取,AB的提現(xiàn)權(quán)可以停止”。合同的邏輯擴(kuò)展是分散的自治組織(DAOs)-智能合約長(zhǎng)期包含組織資產(chǎn),并編碼組織規(guī)則。以太坊的目標(biāo)是提供內(nèi)置成熟的圖靈完整語(yǔ)言區(qū)塊鏈,可以創(chuàng)建合同編碼任何狀態(tài)轉(zhuǎn)換功能,用戶只要幾行代碼實(shí)現(xiàn)邏輯,就可以創(chuàng)建上述所有系統(tǒng)和許多其他系統(tǒng)我們無(wú)法想象。

目錄歷史作為狀態(tài)轉(zhuǎn)換系統(tǒng)比特幣挖掘默克爾樹(shù)替代區(qū)塊鏈應(yīng)用腳本以太坊以太坊賬戶信息和交易以太坊狀態(tài)轉(zhuǎn)換功能代碼執(zhí)行區(qū)塊鏈和挖掘應(yīng)用令牌系統(tǒng)金融衍生品身份和信譽(yù)系統(tǒng)分散文件存儲(chǔ)分散自治組織進(jìn)一步應(yīng)用雜項(xiàng)和關(guān)注改進(jìn)版幽靈協(xié)議實(shí)施成本計(jì)算和圖靈完整貨幣和發(fā)行挖掘集中擴(kuò)展綜述:分散應(yīng)用結(jié)論注釋和高級(jí)閱讀歷史

分散的數(shù)字貨幣概念早在幾十年前就被提出,就像財(cái)產(chǎn)登記等替代應(yīng)用一樣。1980年代和1990年代的匿名電子現(xiàn)金協(xié)議大多采用喬姆盲簽技術(shù)(Chaumianblinding)為基礎(chǔ)的。這些電子現(xiàn)金協(xié)議提供高度隱私的貨幣,但這些協(xié)議并不流行,因?yàn)樗鼈兌家蕾囉诩械闹薪闄C(jī)構(gòu)。1998年,戴偉(WeiDai)的b-money它首次引入了通過(guò)解決計(jì)算問(wèn)題和分散共識(shí)來(lái)創(chuàng)造貨幣的想法,但該建議并沒(méi)有給出如何實(shí)現(xiàn)分散共識(shí)的具體方法。2005年,芬尼(HalFinney)引入了“可重復(fù)使用的工作量證明機(jī)制”(reusableproofsofwork)同時(shí)使用概念b-money的思想和AdamBack哈?,F(xiàn)金計(jì)算困難(Hashcash)創(chuàng)建密碼學(xué)貨幣的難題。然而,由于依靠可靠的計(jì)算作為后端,這一概念再次失去了理想化。

由于貨幣是第一個(gè)應(yīng)用程序,交易順序非常重要,因此分散貨幣需要找到實(shí)現(xiàn)分散共識(shí)的方法。比特幣之前所有電子貨幣協(xié)議的主要障礙是,盡管拜占庭如何創(chuàng)造安全容錯(cuò)(Byzantine-fault-tolerant)多方共識(shí)系統(tǒng)的研究已經(jīng)持續(xù)了很多年,但上述協(xié)議只解決了問(wèn)題的一半。假設(shè)系統(tǒng)的所有參與者都已知并產(chǎn)生這些協(xié)議“如果N方參與系統(tǒng),系統(tǒng)可以容忍N(yùn)惡意參與者/4”這種形式的安全邊界。然而,這個(gè)假設(shè)的問(wèn)題是,在匿名的情況下,系統(tǒng)設(shè)置的安全邊界很容易被女巫攻擊,因?yàn)楣粽呖梢栽诜?wù)器或僵尸網(wǎng)絡(luò)上創(chuàng)建成千上萬(wàn)的節(jié)點(diǎn),以確保單方面的大部分份額。

中本聰?shù)膭?chuàng)新引入了這樣一個(gè)概念:將基于節(jié)點(diǎn)的非常簡(jiǎn)單的分散共識(shí)協(xié)議與工作量認(rèn)證機(jī)制相結(jié)合。節(jié)點(diǎn)有權(quán)通過(guò)工作量證明機(jī)制參與系統(tǒng),每十分鐘包裝交易“區(qū)塊”從而創(chuàng)造出不斷增長(zhǎng)的區(qū)塊鏈。計(jì)算能力大的節(jié)點(diǎn)影響更大,但比創(chuàng)建100萬(wàn)個(gè)節(jié)點(diǎn)更難獲得比整個(gè)網(wǎng)絡(luò)更多的計(jì)算能力。雖然比特幣區(qū)塊鏈模型非常簡(jiǎn)單,但實(shí)踐證明它足夠容易使用。在未來(lái)五年內(nèi),它將成為世界上200多種貨幣和協(xié)議的基石。

作為狀態(tài)轉(zhuǎn)換系統(tǒng)的比特幣

從技術(shù)角度來(lái)看,比特幣賬本可以被視為狀態(tài)轉(zhuǎn)換系統(tǒng),包括所有現(xiàn)有的比特幣所有權(quán)狀態(tài)和“狀態(tài)轉(zhuǎn)換函數(shù)”。狀態(tài)轉(zhuǎn)換函數(shù)輸入當(dāng)前狀態(tài)和交易,輸出新?tīng)顟B(tài)。例如,在標(biāo)準(zhǔn)銀行系統(tǒng)中,狀態(tài)是資產(chǎn)負(fù)債表,從A賬戶向B賬戶轉(zhuǎn)賬X美元的請(qǐng)求是交易。狀態(tài)轉(zhuǎn)換函數(shù)將從A賬戶中減去X美元,并將X美元增加到B賬戶中。如果A賬戶余額小于X美元,狀態(tài)轉(zhuǎn)換函數(shù)將返回錯(cuò)誤提示。因此,我們可以定義以下?tīng)顟B(tài)轉(zhuǎn)換函數(shù):

APPLY(S,TX)­>S’orERROR

在上述銀行系統(tǒng)中,狀態(tài)轉(zhuǎn)換函數(shù)如下:

APPLY({Alice:$50,Bob:$50},"send$20fromAlicetoBob")={Alice:$30,Bob:$70}

但是:

APPLY({Alice:$50,Bob:$50},"send$70fromAlicetoBob")=ERROR

比特幣系統(tǒng)“狀態(tài)”所有挖掘出來(lái)的比特幣都沒(méi)有花費(fèi)(技術(shù)上稱為“未花費(fèi)的交易輸出,unspenttransactionoutputs或UTXO”)的集合。每個(gè)UTXO有一個(gè)面值和所有者(密碼學(xué)公鑰地址定義為[1],本質(zhì)上是20個(gè)字節(jié)。一筆交易包括一個(gè)或多個(gè)輸入和一個(gè)或多個(gè)輸出。每個(gè)輸入包含一個(gè)對(duì)現(xiàn)有的UTXO由與所有者地址對(duì)應(yīng)的私鑰創(chuàng)建的的密碼學(xué)簽名。每個(gè)輸出包含一個(gè)新的加入狀態(tài)UTXO。

狀態(tài)轉(zhuǎn)換函數(shù)在比特幣系統(tǒng)中APPLY(S,TX)->S’一般可定義如下:

交易的每個(gè)輸入:如果引用UTXO不存在于當(dāng)前狀態(tài)下(S),返回錯(cuò)誤提示如果簽名和UTXO如果所有者的簽名不一致,則返回錯(cuò)誤提示UTXO輸入面值總額小于所有的UTXO輸出面值總額,返回錯(cuò)誤提示返回新?tīng)顟B(tài)S’,新?tīng)顟B(tài)S移除所有輸入U(xiǎn)TXO,增加所有輸出UTXO。

第一步是防止發(fā)送者花費(fèi)不存在的比特幣,第二步是防止發(fā)送者花費(fèi)他人的比特幣。第二步是確保價(jià)值守恒。比特幣的支付協(xié)議如下。假設(shè)Alice想給Bob發(fā)送11.7BTC。事實(shí)上,Alice不可能只有11.7BTC。假設(shè)她能得到的最小比特幣數(shù)量是:6 4 2=12。因此,她可以創(chuàng)建一筆有三個(gè)輸入和兩個(gè)輸出的交易。第一個(gè)輸出面值為11.7BTC,所有者是Bob(Bob比特幣地址),第二個(gè)輸出面值為0.3BTC,所有者是Alice也就是找零。

挖礦

一個(gè)塊,每個(gè)塊包含一個(gè)時(shí)間戳,一個(gè)隨機(jī)數(shù)量,一個(gè)引用上一個(gè)塊(即哈希)和上一個(gè)塊生成以來(lái)發(fā)生的所有交易列表。這樣,隨著時(shí)間的推移,創(chuàng)建了一個(gè)不斷增長(zhǎng)的區(qū)塊鏈,它不斷更新,從而代表了比特幣賬本的最新?tīng)顟B(tài)。

根據(jù)此范式,檢查塊是否有效的算法如下:

檢查塊引用的最后一個(gè)塊是否存在和有效。檢查塊的時(shí)間戳是否晚于以前的塊,并早于未來(lái)2小時(shí)[2]。檢查塊的工作量是否有效。將最后一個(gè)塊的最終狀態(tài)分配到S[0]。假設(shè)TX是區(qū)塊交易列表,包括n筆交易。……n-1的所有i,狀態(tài)轉(zhuǎn)換S[i 1]=APPLY(S[i],TX[i])。如果任何交易I在狀態(tài)轉(zhuǎn)換中出錯(cuò),退出程序并返回錯(cuò)誤。返回正確,狀態(tài)S[n]是這一區(qū)塊的最終狀態(tài)。

區(qū)塊中的每一筆交易本質(zhì)上都必須提供正確的狀態(tài)轉(zhuǎn)換,需要注意的是,“狀態(tài)”不是編碼到區(qū)塊的。它只是一個(gè)被驗(yàn)證節(jié)點(diǎn)記住的抽象概念。對(duì)于任何塊都可以從創(chuàng)建狀態(tài)開(kāi)始,每個(gè)塊的每一筆交易都可以按順序添加,并計(jì)算當(dāng)前狀態(tài)。此外,礦工還應(yīng)注意將交易納入?yún)^(qū)塊的順序。若有一個(gè)塊A、B兩筆交易,BA創(chuàng)是A創(chuàng)造的UTXO,如果A在B在過(guò)去,該塊是有效的,否則,該塊是無(wú)效的。

區(qū)塊驗(yàn)證算法的有趣部分是“工作量證明”概念:每個(gè)塊SHA256哈希處理將獲得的哈希視為長(zhǎng)度為256比特的值,必須小于不斷動(dòng)態(tài)調(diào)整的目標(biāo)值。本書的目標(biāo)值約為2^190。工作量證明的目的是使區(qū)塊難以創(chuàng)建,防止女巫攻擊者惡意重生區(qū)塊鏈。因?yàn)镾HA256是一個(gè)完全不可預(yù)測(cè)的偽隨機(jī)函數(shù)。創(chuàng)建有效區(qū)塊的唯一方法是不斷嘗試和錯(cuò)誤,不斷增加隨機(jī)值,看看新的哈希值是否小于目標(biāo)值。若當(dāng)前目標(biāo)值為2^192意味著平均需要嘗試2^生成有效塊需要64次。一般來(lái)說(shuō),比特幣網(wǎng)絡(luò)每2016塊重新設(shè)定目標(biāo)值,確保平均每10分鐘生成一個(gè)塊。為了獎(jiǎng)勵(lì)礦工的計(jì)算工作,每個(gè)成功生成區(qū)塊的礦工都有權(quán)在區(qū)塊中憑空發(fā)送25個(gè)BTC的交易。此外,如果交易的輸入大于輸出,則將差額視為“交易費(fèi)用”付給礦工。順便說(shuō)一句,對(duì)礦工的獎(jiǎng)勵(lì)是比特幣發(fā)行的唯一機(jī)制,在創(chuàng)造狀態(tài)下沒(méi)有比特幣。

為了更好地理解挖掘的目的,讓我們分析惡意攻擊者在比特幣網(wǎng)絡(luò)中會(huì)發(fā)生什么。由于比特幣的密碼學(xué)基礎(chǔ)非常安全,攻擊者會(huì)選擇攻擊不受密碼學(xué)直接保護(hù)的部分:交易順序。攻擊者的策略非常簡(jiǎn)單:

向賣家發(fā)送100BTC購(gòu)買商品(尤其是不需要郵寄的電子商品)。等到商品發(fā)出。創(chuàng)建另一筆交易,將相同的100BTC發(fā)送給你自己的賬戶。讓比特幣網(wǎng)絡(luò)相信發(fā)送給自己賬戶的交易是第一個(gè)發(fā)送的。

一旦步驟(1)發(fā)生,礦工將在幾分鐘后將交易打包到區(qū)塊,假設(shè)是第2.7萬(wàn)個(gè)區(qū)塊。大約一個(gè)小時(shí)后,該區(qū)塊后面將有五個(gè)區(qū)塊,每個(gè)區(qū)塊間接指向該交易,以確認(rèn)該交易。這時(shí)賣家收到貨款,并向買家發(fā)貨。因?yàn)槲覀兗僭O(shè)這是數(shù)字商品,攻擊者可以立即收到貨物?,F(xiàn)在,攻擊者將創(chuàng)建相同的100筆交易BTC發(fā)送到自己的賬戶。如果攻擊者只向全網(wǎng)廣播這一消息,這筆交易將不予處理。礦工會(huì)運(yùn)行狀態(tài)轉(zhuǎn)換函數(shù)APPLY(S,TX),發(fā)現(xiàn)這筆交易將不再處于狀態(tài)UTXO。因此,攻擊者會(huì)分叉區(qū)塊鏈,將第26999個(gè)區(qū)塊作為父區(qū)塊重生第2.7萬(wàn)個(gè)區(qū)塊,用新的交易代替舊的交易。由于區(qū)塊數(shù)據(jù)不同,需要重新證明工作量。此外,由于攻擊者生成的新的2.7萬(wàn)塊有不同的哈希,原來(lái)的2.7萬(wàn)1到2.7萬(wàn)5塊沒(méi)有指向它,所以原來(lái)的區(qū)塊鏈與攻擊者的新塊完全分離。當(dāng)區(qū)塊鏈分叉發(fā)生時(shí),區(qū)塊鏈的長(zhǎng)分支被認(rèn)為是一個(gè)誠(chéng)實(shí)的區(qū)塊鏈。合法的礦工將沿著原來(lái)的270005塊挖掘,只有攻擊者在新的2.7萬(wàn)塊后挖掘。為了使他的區(qū)塊鏈最長(zhǎng),攻擊者需要比他以外的整個(gè)網(wǎng)絡(luò)有更多的計(jì)算能力來(lái)追趕(即51%攻擊)。

默克爾樹(shù)

左:只提供默克爾樹(shù)(Merkletree)上面的少量節(jié)點(diǎn)足以證明分支。
右:任何改變默克爾樹(shù)任何部分的嘗試最終都會(huì)導(dǎo)致鏈上某個(gè)地方的不一致。

比特幣系統(tǒng)的一個(gè)重要可擴(kuò)展特性是它的塊存儲(chǔ)在多層次的數(shù)據(jù)結(jié)構(gòu)中。一個(gè)塊的哈希實(shí)際上只是塊頭的哈希。塊頭是默克爾樹(shù)的根哈希的長(zhǎng)度約為200字節(jié),包括時(shí)間戳、隨機(jī)數(shù)、最后一個(gè)塊哈希和存儲(chǔ)所有塊交易的默克爾樹(shù)。

由一組葉節(jié)點(diǎn)、一組中間節(jié)點(diǎn)和一個(gè)根節(jié)點(diǎn)組成的默克爾樹(shù)是一種二叉樹(shù)。下面大量的葉節(jié)點(diǎn)包含基本數(shù)據(jù),每個(gè)中間節(jié)點(diǎn)都是它的兩個(gè)子節(jié)點(diǎn)哈希,它的兩個(gè)子節(jié)點(diǎn)哈希也代表了默克爾樹(shù)的頂部。默克爾樹(shù)的目的是允許塊的數(shù)據(jù)分散傳輸:節(jié)點(diǎn)可以從一個(gè)源下載塊,從另一個(gè)源下載與樹(shù)相關(guān)的其他部分,并確認(rèn)所有數(shù)據(jù)都是正確的。這是因?yàn)楣O蛏蠑U(kuò)散:如果惡意用戶試圖在樹(shù)下添加偽造交易,變化會(huì)導(dǎo)致樹(shù)的上節(jié)點(diǎn)和上節(jié)點(diǎn),最終導(dǎo)致根節(jié)點(diǎn)和區(qū)塊哈希變化,協(xié)議將記錄為完全不同的區(qū)塊(幾乎可以證明工作量不正確)。

默克爾樹(shù)協(xié)議對(duì)比特幣的長(zhǎng)期可持續(xù)性至關(guān)重要。2014年4月,比特幣網(wǎng)絡(luò)中的一個(gè)全節(jié)點(diǎn)——存儲(chǔ)和處理所有塊的所有數(shù)據(jù)——需要占用15個(gè)GB內(nèi)存空間,每月超過(guò)1GB速度增長(zhǎng)。目前,這一存儲(chǔ)空間對(duì)臺(tái)式計(jì)算機(jī)來(lái)說(shuō)尚可接受,但是手機(jī)已經(jīng)負(fù)載不了如此巨大的數(shù)據(jù)了。未來(lái),只有商業(yè)機(jī)構(gòu)和愛(ài)好者才會(huì)充當(dāng)完整的節(jié)點(diǎn)。簡(jiǎn)化支付確認(rèn)(SPV)該協(xié)議允許另一個(gè)節(jié)點(diǎn)存在,該節(jié)點(diǎn)已成為“輕節(jié)點(diǎn)”,它下載區(qū)塊頭,使用區(qū)塊頭確認(rèn)工作量證明,然后只下載與其交易相關(guān)的默克爾樹(shù)“分支”。這使得輕節(jié)點(diǎn)能夠安全地確定任何比特幣交易的狀態(tài)和賬戶的當(dāng)前余額,只需下載整個(gè)區(qū)塊鏈的一小部分。

其它區(qū)塊鏈應(yīng)用

將區(qū)塊鏈思想應(yīng)用到其他領(lǐng)域的想法早已出現(xiàn)。尼克薩博于2005年提出“以所有權(quán)命名財(cái)產(chǎn)”本文描述了復(fù)制數(shù)據(jù)庫(kù)技術(shù)的發(fā)展,使基于區(qū)塊鏈的系統(tǒng)能夠應(yīng)用于注冊(cè)土地所有權(quán),并創(chuàng)建了詳細(xì)的框架,包括房地產(chǎn)權(quán)、非法占用和喬治亞州的土地稅。然而,不幸的是,當(dāng)時(shí)沒(méi)有實(shí)用的復(fù)制數(shù)據(jù)庫(kù)系統(tǒng),因此該協(xié)議沒(méi)有付諸實(shí)踐。然而,自2009年比特幣系統(tǒng)分散共識(shí)成功開(kāi)發(fā)以來(lái),許多區(qū)塊鏈的其他應(yīng)用開(kāi)始迅速出現(xiàn)。

域名幣(namecoin)-名稱注冊(cè)數(shù)據(jù)庫(kù)成立于2010年,被稱為冊(cè)數(shù)據(jù)庫(kù)。Tor、Bitcoin和BitMessage這種分散的協(xié)議需要一些方法來(lái)確認(rèn)賬戶,這樣其他人就可以與用戶互動(dòng)。然而,所有現(xiàn)有解決方案中唯一可用的身份標(biāo)志就像1LW79wp5ZBqaHW1jL5TciBCrhQYtHagUWy這種偽隨機(jī)哈希。在理想情況下,人們希望有一個(gè)象“george”這樣名字的賬戶。然而,如果有人能創(chuàng)造,問(wèn)題是“george”其他人也可以創(chuàng)建賬戶“george”假裝賬戶。唯一的解決辦法是先申請(qǐng)?jiān)瓌t(first-to-file),只有第一個(gè)注冊(cè)人才能成功注冊(cè),第二個(gè)不能再注冊(cè)同一個(gè)賬戶。比特幣的共識(shí)協(xié)議可以用于這個(gè)問(wèn)題。域名幣是利用區(qū)塊鏈實(shí)現(xiàn)名稱注冊(cè)系統(tǒng)最早、最成功的系統(tǒng)。彩色幣(Coloredcoins)-彩色貨幣的目的是在比特幣區(qū)塊鏈上為人們創(chuàng)建自己的數(shù)字貨幣,或者更重要的一般貨幣–數(shù)字令牌提供服務(wù)。依照彩色幣協(xié)議,人們可以通過(guò)為某一特別的比特幣UTXO指定顏色,發(fā)行新貨幣。將其他協(xié)議遞歸協(xié)議UTXO定義為與交易輸入U(xiǎn)TXO顏色相同。這允許用戶保持只包含顏色UTXO,發(fā)送這些UTXO就像發(fā)送普通比特幣一樣,通過(guò)追溯所有區(qū)塊鏈來(lái)判斷收到的UTXO顏色。元幣(Metacoins)-元幣的概念是在比特幣區(qū)塊鏈上創(chuàng)建新的協(xié)議,利用比特幣交易保存元幣交易,但使用不同的狀態(tài)轉(zhuǎn)換函數(shù)APPLY’。由于元幣協(xié)議不能阻止比特幣區(qū)塊鏈上無(wú)效的元幣交易,如果增加一個(gè)規(guī)則APPLY’(S,TX)該協(xié)議將默認(rèn)返回錯(cuò)誤APPLY’(S,TX)=S。這為比特幣系統(tǒng)中無(wú)法實(shí)現(xiàn)的任何先進(jìn)的密碼貨幣協(xié)議提供了簡(jiǎn)單的解決方案,開(kāi)發(fā)成本非常低,因?yàn)楸忍貛艆f(xié)議已經(jīng)處理了挖掘和網(wǎng)絡(luò)問(wèn)題。

因此,一般來(lái)說(shuō),建立共識(shí)協(xié)議有兩種方式:建立獨(dú)立網(wǎng)絡(luò)和在比特幣網(wǎng)絡(luò)上建立協(xié)議。雖然域名幣等應(yīng)用程序的第一種方法已經(jīng)成功,但由于每個(gè)應(yīng)用程序都需要?jiǎng)?chuàng)建獨(dú)立的區(qū)塊鏈、建立和測(cè)試所有狀態(tài)轉(zhuǎn)換和網(wǎng)絡(luò)代碼,因此很難實(shí)施。此外,我們預(yù)測(cè)分散共識(shí)技術(shù)的應(yīng)用將遵循冪律分布。大多數(shù)應(yīng)用程序太小,無(wú)法確保自由區(qū)塊鏈的安全。我們還注意到,大量的分散應(yīng)用程序,特別是分散自治組織,需要應(yīng)用程序之間的互動(dòng)。

另一方面,基于比特幣的方法存在缺點(diǎn),可以簡(jiǎn)化并確認(rèn)支付(SPV)的特性。比特幣可以實(shí)現(xiàn)簡(jiǎn)化確認(rèn)支付,因?yàn)楸忍貛趴梢詫^(qū)塊鏈深度作為有效性確認(rèn)代理。在某種程度上,一旦一筆交易的祖先離現(xiàn)在足夠遠(yuǎn),他們就可以被視為合法狀態(tài)的一部分。相反,基于比特幣區(qū)塊鏈的元幣協(xié)議不能強(qiáng)迫區(qū)塊鏈不包括不符合元幣協(xié)議的交易。因此,為了確認(rèn)某筆交易是否有效,需要掃描所有塊,直到區(qū)塊鏈的初始點(diǎn)。目前,所有基于比特幣的元幣協(xié)議“輕”實(shí)施依靠可靠的服務(wù)器提供數(shù)據(jù),這只是消除信任所需的密碼貨幣的一個(gè)相當(dāng)優(yōu)秀的結(jié)果。

腳本

即使不擴(kuò)大比特幣協(xié)議,也能在一定程度上實(shí)現(xiàn)”智能合約”。比特幣的UTXO它不僅可以被公鑰擁有,還可以被基于堆棧的編程語(yǔ)言編寫的更復(fù)雜的腳本所擁有。在這種模式下,花這樣的錢UTXO,必須提供滿足腳本的數(shù)據(jù)。事實(shí)上,基本的公鑰所有權(quán)機(jī)制也是通過(guò)腳本實(shí)現(xiàn)的:腳本將橢圓曲線簽名作為輸入來(lái)驗(yàn)證交易和擁有UTXO如果驗(yàn)證成功,返回1,否則返回0。更復(fù)雜的腳本用于其他不同的應(yīng)用。例如,人們可以創(chuàng)建一個(gè)腳本(多重簽名),需要收集三個(gè)私鑰中的兩個(gè)進(jìn)行交易確認(rèn),這對(duì)公司賬戶、儲(chǔ)蓄賬戶和一些商業(yè)代理非常有用。腳本也可以用來(lái)獎(jiǎng)勵(lì)解決計(jì)算問(wèn)題的用戶。人們甚至可以創(chuàng)建這樣的腳本“如果你能提供你已經(jīng)向我發(fā)送了一定數(shù)量的狗幣的簡(jiǎn)化支付證明,這個(gè)比特幣UTXO就是你的了”,本質(zhì)上,比特幣系統(tǒng)允許不同的密碼貨幣進(jìn)行分散兌換。

然而,比特幣系統(tǒng)的腳本語(yǔ)言有一些嚴(yán)重的限制:

缺乏圖靈的完整性–也就是說(shuō),雖然比特幣腳本語(yǔ)言可以支持多種計(jì)算,但它不能支持所有的計(jì)算。主要缺失是循環(huán)語(yǔ)句。不支持循環(huán)語(yǔ)句的目的是避免交易確認(rèn)時(shí)的無(wú)限循環(huán)。理論上,這是腳本程序員可以克服的障礙,因?yàn)槿魏窝h(huán)都可以重復(fù)多次if模擬句子的方式,但這將導(dǎo)致腳本空間利用效率低下。例如,實(shí)施替代橢圓曲線簽名算法可能需要256次重復(fù)乘法,每次都需要單獨(dú)編碼。價(jià)值盲(Value-blindness)。UTXO腳本不能精細(xì)控制賬戶的取款金額。例如,預(yù)言機(jī)合約(oraclecontract)對(duì)沖合同的強(qiáng)大應(yīng)用,A30天后,腳本將價(jià)值1000美元的比特幣發(fā)送給A,剩余的比特幣發(fā)送給B。雖然實(shí)現(xiàn)對(duì)沖合同需要預(yù)測(cè)機(jī)(oracle)這種機(jī)制在減少信任和基礎(chǔ)設(shè)施方面取得了巨大進(jìn)展,決定了一個(gè)比特幣值多少美元,但與目前完全集中的解決方案相比。然而,因?yàn)閁TXO是不可分割的,為實(shí)現(xiàn)此合約,唯一的方法是非常低效地采用許多有不同面值的UTXO(例如,每個(gè)對(duì)應(yīng)最大30k,有一個(gè)2^k的UTXO)并使預(yù)測(cè)器挑出正確的選擇UTXO發(fā)送給A和B。缺少狀態(tài)–UTXO它只能是一種消費(fèi)或未消費(fèi)的狀態(tài),這并沒(méi)有為需要任何其他內(nèi)部狀態(tài)的多階段合同或腳本留出生存空間。這使得實(shí)現(xiàn)多階段期權(quán)合約、去中心化的交換要約或者兩階段加密承諾協(xié)議(對(duì)確保計(jì)算獎(jiǎng)勵(lì)非常必要)非常困難。這也意味著UTXO只能用來(lái)建立簡(jiǎn)單、一次性的合同,而不是具有更復(fù)雜狀態(tài)的合同,如分散組織,使元協(xié)議難以實(shí)現(xiàn)。二元狀態(tài)與價(jià)值盲結(jié)合,意味著另一個(gè)重要的應(yīng)用——取款限額——不可能實(shí)現(xiàn)。區(qū)塊鏈盲(Blockchain-blindness)-UTXO沒(méi)有區(qū)塊鏈的數(shù)據(jù),比如隨機(jī)數(shù)和上一個(gè)區(qū)塊的哈希。這一缺陷剝奪了基于隨機(jī)性的腳本語(yǔ)言的潛在價(jià)值,嚴(yán)重限制了賭博等其他領(lǐng)域的應(yīng)用。

我們考察了建立密碼貨幣高級(jí)應(yīng)用的三種方法:建立新的區(qū)塊鏈,在比特幣區(qū)塊鏈上使用腳本,在比特幣區(qū)塊鏈上建立元貨幣協(xié)議。建立新區(qū)塊鏈的方法可以自由實(shí)現(xiàn)任何特征,成本是開(kāi)發(fā)時(shí)間和培養(yǎng)努力。使用腳本的方法很容易實(shí)現(xiàn)和標(biāo)準(zhǔn)化,但其能力有限。雖然元幣協(xié)議很容易實(shí)現(xiàn),但存在擴(kuò)展性差的缺陷。在以太坊系統(tǒng)中,我們的目的是建立一個(gè)具有這三種模式所有優(yōu)勢(shì)的通用框架。

以太坊

以太坊的目的是基于腳本、競(jìng)爭(zhēng)幣和鏈上元協(xié)議(on-chainmeta-protocol)整合和完善概念,使開(kāi)發(fā)者能夠創(chuàng)建任何基于共識(shí)、可擴(kuò)展、標(biāo)準(zhǔn)化、完整、易于開(kāi)發(fā)和協(xié)調(diào)的應(yīng)用。以太坊通過(guò)建立最終抽象的基礎(chǔ)層——內(nèi)置圖靈完整編程語(yǔ)言的區(qū)塊鏈,使任何人都能創(chuàng)建合同和分散應(yīng)用程序,并建立自由定義的所有權(quán)規(guī)則、交易模式和狀態(tài)轉(zhuǎn)換函數(shù)。域名幣的主框架只需要兩行代碼,其他協(xié)議,如貨幣和信譽(yù)系統(tǒng),只需要不到20行代碼。智能合同——包含價(jià)值,只能滿足某些條件才能打開(kāi)的加密箱——也可以在我們的平臺(tái)上創(chuàng)建,由于圖靈的完整性和價(jià)值知識(shí)(value-awareness)、區(qū)塊鏈知曉(blockchain-awareness)和多狀態(tài)所增加的力量而比比特幣腳本所能提供的智能合約強(qiáng)大得多。

以太坊賬戶

在以太坊系統(tǒng)中,狀態(tài)被稱為“賬戶”(每個(gè)賬戶由一個(gè)20字節(jié)的地址)的對(duì)象和兩個(gè)賬戶之間的轉(zhuǎn)移價(jià)值和信息的狀態(tài)轉(zhuǎn)換組成。以太坊賬戶包括四個(gè)部分:

隨機(jī)數(shù)用于確定以太幣余額賬戶的當(dāng)前合同代碼,每筆交易只能處理一次。如果有,存儲(chǔ)賬戶(默認(rèn)為空)

以太幣(Ether)以太坊內(nèi)的主要加密燃料用于支付交易費(fèi)用。一般而言,以太坊有兩種類型的賬戶:外部所有的賬戶(由私鑰控制的)和合約賬戶(由合約代碼控制)。所有外部賬戶都沒(méi)有代碼,人們可以通過(guò)創(chuàng)建和簽署交易從外部賬戶發(fā)送信息。每當(dāng)合同賬戶收到消息時(shí),合同內(nèi)的代碼就會(huì)被激活,允許它讀取和寫入內(nèi)部存儲(chǔ),并發(fā)送其他消息或創(chuàng)建合同。

消息和交易

以太坊的消息在某種程度上類似于比特幣的交易,但是兩者之間存在三點(diǎn)重要的不同。第一,以太坊的消息可以由外部實(shí)體或者合約創(chuàng)建,然而比特幣交易只能從外部創(chuàng)建。第二,以太坊新聞可以包含數(shù)據(jù)。第三,如果以太坊新聞的接受者是合同賬戶,可以選擇回應(yīng),這意味著以太坊新聞也包含函數(shù)概念。

以太坊中“交易”是指從外部賬戶存儲(chǔ)信息的簽名數(shù)據(jù)包。交易包括信息接收者、簽名確認(rèn)發(fā)送者、以太幣賬戶余額、要發(fā)送的數(shù)據(jù)和兩個(gè)被稱為STARTGAS和GASPRICE的數(shù)值。為了防止代碼的指數(shù)爆炸和無(wú)限循環(huán),每筆交易都需要限制執(zhí)行代碼引起的計(jì)算步驟,包括初始信息和執(zhí)行中引起的所有信息。STARTGAS就是限制,GASPRICE礦工的費(fèi)用需要在每個(gè)計(jì)算步驟中支付。若在執(zhí)行交易的過(guò)程中,“用完了瓦斯”,所有狀態(tài)都改變并恢復(fù)到原狀態(tài),但已支付的交易費(fèi)用無(wú)法收回。如果交易中止時(shí)還剩下瓦斯,這些瓦斯將退還給發(fā)送者。創(chuàng)建合同有單獨(dú)的交易類型和相應(yīng)的新聞?lì)愋?;合同地址是基于隨機(jī)賬戶數(shù)量和交易數(shù)據(jù)的哈希計(jì)算的。

消息機(jī)制的一個(gè)重要后果是以太坊的“頭等公民”財(cái)產(chǎn)-合同擁有與外部賬戶相同的權(quán)利,包括發(fā)送信息和創(chuàng)建其他合同。這使得合同可以同時(shí)扮演多個(gè)不同的角色,例如,用戶可以使分散組織(合同)成員成為中介賬戶(另一個(gè)合同),偏執(zhí)的使用定制基于量子證明蘭波特簽名(第三合同)個(gè)人和自己使用五個(gè)私鑰確保安全賬戶(第四合同)共同簽名實(shí)體提供中介服務(wù)。以太坊平臺(tái)的強(qiáng)大之處在于,分散的組織和代理合同不需要關(guān)心合同中每個(gè)參與者的賬戶類型。

以太坊狀態(tài)轉(zhuǎn)換函數(shù)

以太坊狀態(tài)轉(zhuǎn)換函數(shù):APPLY(S,TX)->S’,可定義如下:

檢查交易的格式是否正確(即有正確數(shù)值)、簽名是否有效和隨機(jī)數(shù)是否與發(fā)送者賬戶的隨機(jī)數(shù)匹配。如否,返回錯(cuò)誤。計(jì)算交易費(fèi)用:fee=STARTGAS*GASPRICE,并從簽名中確定發(fā)送人的地址。從發(fā)送人的賬戶中減去交易費(fèi)用,增加發(fā)送人的隨機(jī)數(shù)量。如果賬戶余額不足,則返回錯(cuò)誤。設(shè)置初始值GAS=STARTGAS,并根據(jù)交易中的字節(jié)數(shù)減去一定量的瓦斯值。從發(fā)送人的賬戶轉(zhuǎn)移到接收人的賬戶。如果不存在接收賬戶,則創(chuàng)建此賬戶。如果接收行結(jié)束或瓦斯用完之前,如果接收賬戶是合同,則操作合同代碼。如果發(fā)送人賬戶沒(méi)有足夠的錢或代碼執(zhí)行耗盡,導(dǎo)致價(jià)值轉(zhuǎn)移失敗,恢復(fù)原狀態(tài),但仍需支付交易費(fèi)用,交易費(fèi)用增加到礦工賬戶。否則,將剩余的瓦斯全部歸還給發(fā)送者,消耗的瓦斯作為交易費(fèi)用發(fā)送給礦工。假設(shè)合同代碼如下:if!self.storage[calldataload(0)]:self.storage[calldataload(0)]=calldataload(32)

需要注意的是,在現(xiàn)實(shí)中,合同代碼使用底層以太坊虛擬機(jī)(EVM)代碼編寫。上述合同是用我們的高級(jí)語(yǔ)言編寫的Serpent語(yǔ)言可以編譯成EVM代碼。假設(shè)合同存儲(chǔ)器一開(kāi)始是空的,一個(gè)值10以太,瓦斯2000,瓦斯價(jià)格0.01以太和64字節(jié)數(shù)據(jù),第一個(gè)32字節(jié)快速代表號(hào)碼2和第二個(gè)代表詞CHARLIE。狀態(tài)轉(zhuǎn)換函數(shù)的處理過(guò)程如下:

檢查交易是否有效,格式是否正確。檢查交易發(fā)送者至少2000*0.001=2個(gè)以太幣。若有,從發(fā)送人賬戶中減去2個(gè)以太幣。初始設(shè)定gas=假設(shè)交易長(zhǎng)度為170字節(jié),每字節(jié)的費(fèi)用為5,減去850,所以還剩1150。從發(fā)送人賬戶中減去10個(gè)以太幣,為合同賬戶增加10個(gè)以太幣。運(yùn)行代碼。在本合同中,操作代碼非常簡(jiǎn)單:檢查合同內(nèi)存索引是否已使用,注意不使用,然后將其值設(shè)置為CHARLIE。假設(shè)這消耗了187單位的瓦斯,剩下的瓦斯是1150-187=963。6.向發(fā)送人賬戶增加963*0.001=0.963個(gè)以太幣,回到最終狀態(tài)。如果沒(méi)有合同接收交易,所有交易費(fèi)用等于GASPRICE乘以交易的字節(jié)長(zhǎng)度,交易數(shù)據(jù)與交易成本無(wú)關(guān)。另外,需要注意的是,合同發(fā)起的消息可以對(duì)其產(chǎn)生的瓦斯限額進(jìn)行計(jì)算和分配。如果子計(jì)算的瓦斯用完了,只會(huì)恢復(fù)到消息發(fā)出時(shí)的狀態(tài)。因此,與交易一樣,合同也可以通過(guò)嚴(yán)格限制其子計(jì)算來(lái)保護(hù)其計(jì)算資源。代碼執(zhí)行

以太坊合同的代碼是用基于堆棧字節(jié)碼的低級(jí)語(yǔ)言編寫的,稱為“以太坊虛擬機(jī)代碼”或者“EVM代碼”。代碼由一系列字節(jié)組成,每個(gè)字節(jié)代表一個(gè)操作。一般而言,代碼執(zhí)行是一個(gè)無(wú)限循環(huán),程序計(jì)數(shù)器每增加一次(初始值為零)就執(zhí)行一次操作,直到代碼執(zhí)行完成或出現(xiàn)錯(cuò)誤,STOP或者RETURN指令。操作可訪問(wèn)三個(gè)存儲(chǔ)數(shù)據(jù)的空間:

堆棧是一種后進(jìn)先出的數(shù)據(jù)存儲(chǔ)。32字節(jié)的值可以進(jìn)出堆棧。內(nèi)存,字節(jié)隊(duì)列可以無(wú)限擴(kuò)展。長(zhǎng)期存儲(chǔ)合同,存儲(chǔ)密鑰/值,其中密鑰和值為32字節(jié)大小。與計(jì)算結(jié)束時(shí)重置的堆棧和內(nèi)存不同,存儲(chǔ)內(nèi)容將長(zhǎng)期保持。

代碼可以訪問(wèn)與訪問(wèn)區(qū)塊頭數(shù)據(jù)相同的值,發(fā)送者和接收到的信息中的數(shù)據(jù),代碼也可以返回節(jié)隊(duì)列作為輸出。

EVM代碼的正式執(zhí)行模型令人驚訝和簡(jiǎn)單。當(dāng)以太坊虛擬機(jī)運(yùn)行時(shí),元組可以使其完整的計(jì)算狀態(tài)(block_state,transaction,message,code,memory,stack,pc,gas)來(lái)定義,這里block_state它包含所有賬戶余額和存儲(chǔ)的整體狀態(tài)。在每一輪執(zhí)行中,通過(guò)調(diào)出代碼pc(程序計(jì)數(shù)器)個(gè)字節(jié),當(dāng)前指令被找到,每個(gè)指令都有定義自己如何影響元組。例如,ADD把兩個(gè)元素從棧里出來(lái),把它們和進(jìn)棧里,gas(瓦斯)一起減少pc加一,SSTORE將頂部的兩個(gè)元素出棧,將第二個(gè)元素插入由第一個(gè)元素定義的合同存儲(chǔ)位置,最多減少200gas值并將pc加一,雖然通過(guò)即時(shí)編譯優(yōu)化以太坊的方法很多,但以太坊的基本實(shí)施可以用幾百行代碼來(lái)實(shí)現(xiàn)。

區(qū)塊鏈和采礦

雖然存在一些差異,但以太坊區(qū)塊鏈在許多方面與比特幣區(qū)塊鏈相似。區(qū)塊鏈結(jié)構(gòu)的區(qū)別在于,以太坊區(qū)塊不僅包括交易記錄和最新?tīng)顟B(tài),還包括區(qū)塊序列號(hào)和難度值。以太坊區(qū)塊確認(rèn)算法如下:

檢查塊中引用的最后一個(gè)塊是否存在和有效。檢查塊的時(shí)間戳是否大于引用的最后一個(gè)塊,并小于15分鐘。檢查塊的序列號(hào)、難度值、交易根、叔根和瓦斯限額(許多以太坊獨(dú)特的底部概念)是否有效。檢查塊的工作量是否有效。S[0]賦值為上一塊STATE_ROOT。將TX賦值為區(qū)塊的交易列表共有n交易0……n-1i,狀態(tài)轉(zhuǎn)換S[i 1]=APPLY(S[i],TX[i])。如果任何轉(zhuǎn)換錯(cuò)誤,或者程序執(zhí)行到這里所花費(fèi)的瓦斯(gas)超過(guò)了GASLIMIT,返回錯(cuò)誤S[n]S_FINAL區(qū)塊獎(jiǎng)勵(lì)支付給礦工。S-FINAL是否與STATE_ROOT同樣的。如果相同,塊是有效的。否則,塊是無(wú)效的。

乍一看,這種確認(rèn)方法似乎效率很低,因?yàn)樗枰鎯?chǔ)每個(gè)塊的所有狀態(tài),但事實(shí)上,以太坊的確認(rèn)效率可以與比特幣相比。原因是狀態(tài)儲(chǔ)存在樹(shù)結(jié)構(gòu)中(treestructure),每增加一個(gè)塊只需要改變樹(shù)結(jié)構(gòu)的一小部分。因此,一般來(lái)說(shuō),兩個(gè)相鄰區(qū)塊的大部分樹(shù)結(jié)構(gòu)應(yīng)該是相同的,因此可以使用指針(即子樹(shù)哈希)引用一次數(shù)據(jù)。一種被稱為“帕特里夏樹(shù)”(“PatriciaTree”)樹(shù)結(jié)構(gòu)可以實(shí)現(xiàn)這一點(diǎn),包括修改默克爾樹(shù)的概念,不僅可以改變節(jié)點(diǎn),還可以插入和刪除節(jié)點(diǎn)。此外,由于所有的狀態(tài)信息都是最后一個(gè)塊的一部分,因此沒(méi)有必要存儲(chǔ)所有塊的歷史——如果該方法可以應(yīng)用于比特幣系統(tǒng),它可以節(jié)省10-20倍的存儲(chǔ)空間。

應(yīng)用

一般來(lái)說(shuō),以太坊有三種應(yīng)用。第一類是金融應(yīng)用,為用戶提供更強(qiáng)大的資金管理和參與合同的方法。包括子貨幣、金融衍生品、對(duì)沖合同、儲(chǔ)蓄錢包、遺囑,甚至一些綜合雇傭合同。第二類是半金融應(yīng)用。這里有錢,但也有很重的非金錢方面。一個(gè)完美的例子是解決計(jì)算問(wèn)題的自我強(qiáng)制獎(jiǎng)勵(lì)。最后,還有完整的非金融應(yīng)用,如在線投票和分散治理。

令牌系統(tǒng)

鏈上的令牌系統(tǒng)有很多應(yīng)用,從代表美元或黃金等資產(chǎn)的子貨幣到公司股票,單個(gè)令牌代表智能資產(chǎn),安全不可偽造的優(yōu)惠券,甚至與傳統(tǒng)價(jià)值完全無(wú)關(guān)的令牌系統(tǒng)。令牌系統(tǒng)在以太坊的實(shí)施令人驚訝。關(guān)鍵是要理解,所有的貨幣或令牌系統(tǒng)基本上都是一個(gè)具有以下操作的數(shù)據(jù)庫(kù):從A中減去X單位并將X單位添加到B中,前提是(1)A至少X單位和(2)交易在交易前被A批準(zhǔn)。實(shí)施令牌系統(tǒng)就是在合同中實(shí)現(xiàn)這樣的邏輯。

用Serpent語(yǔ)言執(zhí)行令牌系統(tǒng)的基本代碼如下:

defsend(to,value):ifself.storage[from]>=value:self.storage[from]=self.storage[from]valueself.storage[to]=self.storage[to] value

本質(zhì)上,本文將進(jìn)一步描述這一點(diǎn)“銀行系統(tǒng)”最小化狀態(tài)轉(zhuǎn)換功能。在初始和其他邊緣條件下,需要添加一些額外的代碼來(lái)分發(fā)貨幣。理想情況下,其他合同將添加一個(gè)函數(shù)來(lái)查詢地址余額。就足夠了。理論上,基于以太坊的子貨幣命令系統(tǒng)可能包括基于比特幣的鏈上元所缺乏的一個(gè)重要功能:直接用這種貨幣支付交易費(fèi)用的能力。實(shí)現(xiàn)這種能力的方法是維護(hù)以太幣賬戶為發(fā)送人支付交易費(fèi),收集內(nèi)部貨幣作為交易費(fèi)用,并在持續(xù)拍賣中拍賣,合同繼續(xù)為以太幣賬戶注資。這樣,用戶需要使用以太幣“激活”他們的賬戶,但一旦賬戶中有以太幣,就會(huì)重復(fù)使用,因?yàn)槊總€(gè)合同都會(huì)給它充值。

金融衍生品和價(jià)值穩(wěn)定的貨幣

金融衍生品是“智能合約”的最普遍的應(yīng)用,也是最易于用代碼實(shí)現(xiàn)的之一。實(shí)現(xiàn)金融合約的主要挑戰(zhàn)是,其中大部分需要參考外部?jī)r(jià)格發(fā)布器;例如,一個(gè)需求量很大的應(yīng)用程序是一個(gè)智能合約,用于對(duì)沖以太幣(或其他密碼貨幣)相對(duì)美元的價(jià)格波動(dòng),但該合約需要知道以太幣相對(duì)美元的價(jià)格。最簡(jiǎn)單的方法是由特定的機(jī)構(gòu)(如納斯達(dá)克)維護(hù)“數(shù)據(jù)提供“合同的設(shè)計(jì)使該機(jī)構(gòu)能夠根據(jù)需要更新合同,并提供一個(gè)接口,使其他合同能夠通過(guò)向合同發(fā)送消息獲得包含價(jià)格信息的回復(fù)。

當(dāng)這些關(guān)鍵要素齊全時(shí),對(duì)沖合同看起來(lái)如下:

等待A輸入1000以太幣。.等待B輸入1000以太幣。以1000以太幣的美元價(jià)值通過(guò)查詢數(shù)據(jù)提供合同,例如,x記錄存儲(chǔ)美元器。30天后,允許A或B“重新激活“合同向A發(fā)送價(jià)值x美元的以太幣(重新查詢數(shù)據(jù)以獲得新價(jià)格并計(jì)算),并將剩余的以太幣發(fā)送給AB。這種合同在密碼業(yè)務(wù)中具有非凡的潛力。密碼貨幣經(jīng)常受到批評(píng)的一個(gè)問(wèn)題是價(jià)格的波動(dòng)性;雖然大量用戶和企業(yè)可能需要密碼資產(chǎn)帶來(lái)的安全和便利,但他們不愿意面對(duì)一天資產(chǎn)價(jià)值下降23%的情況。到目前為止,最常見(jiàn)的推薦方案是發(fā)行人認(rèn)可資產(chǎn);思想是發(fā)行人創(chuàng)建一種子貨幣,他們有權(quán)發(fā)行和贖回這種子貨幣,并向一個(gè)單位(如黃金、美元)提供特定的相關(guān)資產(chǎn)。發(fā)行人承諾任何人返還單位密碼學(xué)資產(chǎn)。返還一個(gè)單位的相關(guān)資產(chǎn)。這種機(jī)制可以使任何非密碼學(xué)資產(chǎn)被使用“升級(jí)“如果發(fā)行人信任密碼學(xué)資產(chǎn)。然而,在實(shí)踐中,發(fā)行人并不總是值得信賴,在某些情況下,銀行系統(tǒng)過(guò)于脆弱或不誠(chéng)實(shí),使這些服務(wù)無(wú)法存在。金融衍生品提供了替代品。這里將不再有單獨(dú)的發(fā)行人提供儲(chǔ)備來(lái)支持一種資產(chǎn),而是一個(gè)由賭博密碼資產(chǎn)價(jià)格上漲的投機(jī)者組成的分散市場(chǎng)。與發(fā)行人不同,投機(jī)者無(wú)權(quán)討價(jià)還價(jià),因?yàn)閷?duì)沖合同凍結(jié)了他們的儲(chǔ)備。請(qǐng)注意,這種方法并不是完全分散的,因?yàn)樗匀恍枰粋€(gè)可靠的數(shù)據(jù)源來(lái)提供價(jià)格信息,盡管仍然有爭(zhēng)議,這仍然是一個(gè)巨大的進(jìn)來(lái)減少基礎(chǔ)設(shè)施的需求(與發(fā)行人不同,價(jià)格發(fā)布器不需要許可證,似乎可以歸類為自由言論)和降低潛在的欺詐風(fēng)險(xiǎn)。身份和信用體系

最早的替代幣和域名幣嘗試使用類比特幣塊鏈提供名稱注冊(cè)系統(tǒng),用戶可以在公共數(shù)據(jù)庫(kù)中注冊(cè)他們的名稱和其他數(shù)據(jù)。最常用的應(yīng)用案例圖像“bitcoin.org“(或者在域名幣中,”bitcoin.bit“)同一域名和一個(gè)IP域名系統(tǒng)對(duì)應(yīng)地址。其他應(yīng)用案例包括電子郵件驗(yàn)證系統(tǒng)和更先進(jìn)的潛在信用系統(tǒng)。這是以太坊提供類似域名幣的名稱注冊(cè)系統(tǒng)的基本合同:

defregister(name,value):if!self.storage[name]:self.storage[name]=value

合同很簡(jiǎn)單;是以太坊網(wǎng)絡(luò)中可以添加但不能修改或刪除的數(shù)據(jù)庫(kù)。任何人都可以把一個(gè)名字注冊(cè)為一個(gè)值,永遠(yuǎn)不會(huì)改變。一復(fù)雜的名稱注冊(cè)合同將包括允許其他合同查詢的合同“功能條款“,讓一個(gè)名字和一個(gè)名字”擁有者“(即第一注冊(cè)人)修改數(shù)據(jù)或轉(zhuǎn)讓所有權(quán)的機(jī)制。它甚至可以添加信譽(yù)和信任網(wǎng)絡(luò)功能。

去中心化存儲(chǔ)

在過(guò)去的幾年里,一些流行的在線文件存儲(chǔ)初創(chuàng)公司出現(xiàn)了。最突出的是Dropbox,它允許用戶上傳硬盤備份,提供備份存儲(chǔ)服務(wù),并允許用戶訪問(wèn),以便每月向用戶收取費(fèi)用。然而,文件存儲(chǔ)市場(chǎng)有時(shí)效率相對(duì)較低;對(duì)現(xiàn)有服務(wù)的粗略觀察表明,特別是“神秘谷“20-200GB在沒(méi)有免費(fèi)空間或企業(yè)用戶折扣的情況下,主流文件存儲(chǔ)成本的月價(jià)意味著在一個(gè)月內(nèi)支付整個(gè)硬盤。以太坊合同允許分散存儲(chǔ)生態(tài)系統(tǒng)的開(kāi)發(fā),使用戶可以通過(guò)租用自己的硬盤或未使用的網(wǎng)絡(luò)空間獲得少量收入,從而降低文件存儲(chǔ)的成本。

這種設(shè)施的基本構(gòu)件就是我們所說(shuō)的“去中心化Dropbox合約“。本合同的工作原理如下。首先,有人將需要上傳的數(shù)據(jù)分成快速,加密每個(gè)數(shù)據(jù)以保護(hù)隱私,并構(gòu)建默克爾樹(shù)。然后創(chuàng)建一個(gè)包含以下規(guī)則的合同,每N塊,合同將從默克爾樹(shù)中提取一個(gè)隨機(jī)索引(使用最后一塊可以訪問(wèn)合同代碼提供隨機(jī)性),然后支持第一個(gè)實(shí)體X以太支持一個(gè)類似的簡(jiǎn)化驗(yàn)證支付(SPV)樹(shù)中特定索引處塊的所有權(quán)證明。當(dāng)一個(gè)用戶想重新下載他的文件,他可以使用微支付通道協(xié)議(例如每32k字節(jié)支付1薩博)恢復(fù)文件;在成本方面,最有效的方法是支付者不發(fā)布交易,而是使用相同隨機(jī)數(shù)量的稍微更劃算的交易k后來(lái),字節(jié)取代了原始交易。

該協(xié)議的一個(gè)重要特點(diǎn)是,雖然它似乎是一個(gè)人信任許多不準(zhǔn)備丟失文件的隨機(jī)節(jié)點(diǎn),但他可以通過(guò)秘密共享將文件分成許多小塊,然后通過(guò)監(jiān)控合同得知每個(gè)小塊仍然保存在某個(gè)節(jié)點(diǎn)。如果合同仍在支付,則提供證據(jù)表明某人仍在保存文件。

去中心化自治組織

通常意義上“去中心化自治組織(DAO,decentralizedautonomousorganization)”概念是指有一定數(shù)量成員或股東的虛擬實(shí)體,依靠67%以上的成員來(lái)決定花錢和修改代碼。成員會(huì)決定組織如何分配資金。分配資金的方法可能是獎(jiǎng)勵(lì)、工資或更有吸引力的機(jī)制,如內(nèi)部貨幣獎(jiǎng)勵(lì)。這只是利用密碼學(xué)塊鏈技術(shù)從根本上復(fù)制了傳統(tǒng)公司或非營(yíng)利組織的法律意義,以實(shí)現(xiàn)強(qiáng)制執(zhí)行。至此許多圍繞DAO討論集中在股東和可交易股份周圍“去中心化自治公司(DAC,decentralizedautonomouscorporation)”的“資本家”模式;作為替代者,被描述為“去中心化自治社區(qū)(decentralizedautonomouscommunity)”實(shí)體將使所有成員在決策中擁有同等的權(quán)利,并要求67%以上的成員在增減成員時(shí)同意。每個(gè)人只能有一個(gè)成員資格,這一規(guī)則需要集團(tuán)強(qiáng)制執(zhí)行。

以下是如何用代碼實(shí)現(xiàn)的DO的綱要。最簡(jiǎn)單的設(shè)計(jì)是一個(gè)代碼,如果三分之二的成員同意,可以自我修改。雖然理論上代碼是不可改變的,但通過(guò)將代碼主干放在一個(gè)單獨(dú)的合同中,并將合同調(diào)用的地址指向一個(gè)可改變的存儲(chǔ),仍然可以很容易地繞過(guò)障礙,使代碼可以修改DAO通過(guò)交易提供的數(shù)據(jù)來(lái)區(qū)分合同的簡(jiǎn)單實(shí)現(xiàn)有三種交易類型:

[0,i,K,V]注冊(cè)索引為i,存儲(chǔ)地址索引為K至v建議更改內(nèi)容。[0,i]對(duì)建議i進(jìn)行注冊(cè)投票。[2,i]如有足夠投票則確認(rèn)建議i。

然后合同對(duì)每一項(xiàng)都有具體的條款。它將維護(hù)所有開(kāi)放存儲(chǔ)的更改記錄和誰(shuí)投票的表格。還有所有成員的表格。當(dāng)任何存儲(chǔ)內(nèi)容的更改獲得了三分之二多數(shù)同意,一個(gè)最終的交易將執(zhí)行這項(xiàng)更改。一個(gè)更復(fù)雜的框架將增加內(nèi)置的選舉功能,如發(fā)送交易、增加或減少成員,甚至提供民主投票代表(即任何人可以委托另一個(gè)人代表自己投票,這種委托關(guān)系可以傳遞,所以如果A委托B,然后B委托C,C將決定A的投票)。這種設(shè)計(jì)將使DAO作為一個(gè)分散的社區(qū),人們最終可以把選擇合適人選的任務(wù)交給專家。與目前的系統(tǒng)不同,隨著社區(qū)成員的不斷變化,他們的排隊(duì)很容易隨著時(shí)間的推移而出現(xiàn)和消失。替代模式是去中心化公司,任何賬戶都可以擁有0到更多的股份,決策需要三分之二以上的股份同意。一個(gè)完整的框架將包括資產(chǎn)管理功能——可以提交買賣股票的訂單和接受訂單的功能(如果合同中有訂單匹配機(jī)制)。代表仍然以委任制民主的方式存在,產(chǎn)生了“董事會(huì)”的概念。

未來(lái)可能會(huì)實(shí)現(xiàn)更先進(jìn)的組織治理機(jī)制;現(xiàn)在是分散的組織(DO)可以從去中心化自治組織(DAO)開(kāi)始描述。DO和DAO區(qū)別是模糊的。一般的分割線是治理是否可以通過(guò)類似的政治過(guò)程或一個(gè)“自動(dòng)”實(shí)現(xiàn)過(guò)程,良好的直覺(jué)測(cè)試是“無(wú)通用語(yǔ)言”標(biāo)準(zhǔn):如果兩個(gè)成員不說(shuō)相同的語(yǔ)言組織能正常運(yùn)行嗎?顯然,一個(gè)簡(jiǎn)單的傳統(tǒng)持股公司會(huì)失敗,但像比特幣協(xié)議這樣的公司很可能會(huì)成功。·漢森的“futarchy”,通過(guò)預(yù)測(cè)市場(chǎng)實(shí)現(xiàn)組織治理的機(jī)制是一個(gè)真正的解釋“自治”什么樣的好例子可能是公式治理。注意一個(gè)人不假設(shè)一切DAO比所有DO優(yōu)越;自治只是在某些特定場(chǎng)景下有很大優(yōu)勢(shì)的范式,但在其他地方可能不可行,很多半DAO可能存在。

進(jìn)一步應(yīng)用

儲(chǔ)蓄錢包Alice她想確保自己的資金安全,但她擔(dān)心丟失或被黑客偷走私鑰。她把以太幣放在和諧處Bob在簽訂的合同中,本合同為銀行:

Alice每天最多可提取1%的資金。Bob一個(gè)人每天最多可以提取1%的資金,但是Alice你可以用她的私鑰創(chuàng)建一取消Bob提現(xiàn)權(quán)限。Alice和Bob可隨意提取資金。一般來(lái)說(shuō),每天1%對(duì)Alice夠了,如果Alice想提現(xiàn)更多,可以聯(lián)系她Bob尋求幫助。如果Alice她可以立即發(fā)現(xiàn)私鑰被盜Bob將她的資金轉(zhuǎn)入新合同。如果她丟了她的私鑰,Bob可以慢慢提出錢。如果Bob表現(xiàn)出惡意,她可以關(guān)掉他的提現(xiàn)權(quán)。

作物保險(xiǎn)。一個(gè)人可以很容易地以天氣而不是任何價(jià)格指數(shù)作為數(shù)據(jù)輸入來(lái)創(chuàng)建一個(gè)金融衍生品合同。如果一個(gè)愛(ài)荷華的農(nóng)民買了一個(gè)基于愛(ài)荷華降雨的金融衍生品,農(nóng)民會(huì)自動(dòng)收到賠償資金,如果有足夠的降雨,他會(huì)很高興,因?yàn)樗淖魑锸斋@會(huì)很好。

分散的數(shù)據(jù)發(fā)布器。事實(shí)上,基于差異的金融合約是通過(guò)的“謝林點(diǎn)”協(xié)議可以分散數(shù)據(jù)發(fā)布器。謝林點(diǎn)的工作原理如下:N將輸入值提供給系統(tǒng)(例如)ETH/USD價(jià)格),所有值都被排序,每個(gè)提供25%到75%值的節(jié)點(diǎn)都會(huì)得到獎(jiǎng)勵(lì)。每個(gè)人都有激勵(lì)來(lái)提供別人會(huì)提供的答案。很明顯,默認(rèn)情況下,大量玩家可以真正同意的答案是正確的答案,這構(gòu)建了一個(gè)理論上可以提供很多價(jià)值的答案,包括ETH/USD價(jià)格,去中心化協(xié)議,柏林的溫度甚至特別難計(jì)算結(jié)果。

5.云計(jì)算。EVM該技術(shù)還可以用來(lái)創(chuàng)建一個(gè)可驗(yàn)證的計(jì)算環(huán)境,允許用戶邀請(qǐng)他人進(jìn)行計(jì)算,然后有選擇地要求在某些隨機(jī)選擇的檢查點(diǎn)上提供正確的證據(jù)。這使得任何用戶都何用戶都可以使用他們的臺(tái)式機(jī)、筆記本電腦或特殊服務(wù)器的云計(jì)算市場(chǎng)成為可能,現(xiàn)場(chǎng)檢查和安全存款可以用來(lái)確保系統(tǒng)值得信賴(即沒(méi)有節(jié)點(diǎn)可以通過(guò)欺騙獲利)。雖然這樣的系統(tǒng)可能不適用于所有任務(wù);例如,在大節(jié)點(diǎn)云上完成需要高級(jí)進(jìn)程間通信的任務(wù)并不容易。然而,其他一些任務(wù)很容易平行;SETI@home,folding@home在這樣的平臺(tái)上很容易進(jìn)行基因算法等項(xiàng)目。

6.點(diǎn)對(duì)點(diǎn)賭博。任何數(shù)量的點(diǎn)對(duì)點(diǎn)賭博協(xié)議都可以的點(diǎn)對(duì)點(diǎn)賭博協(xié)議,例如FrankStajano和RichardClayton的Cyberdice。事實(shí)上,最簡(jiǎn)單的賭博協(xié)議就是這樣一個(gè)簡(jiǎn)單的合同,用來(lái)賭下一塊哈稀值和猜測(cè)值之間的差額,從而創(chuàng)建更復(fù)雜的賭博協(xié)議,實(shí)現(xiàn)近乎零成本、無(wú)欺騙的賭博服務(wù)。

7.預(yù)測(cè)市場(chǎng)。無(wú)論是神諭還是謝林幣,預(yù)測(cè)市場(chǎng)都很容易實(shí)現(xiàn)。謝林幣的預(yù)測(cè)市場(chǎng)可能被證明是第一個(gè)主流的分散組織管理協(xié)議“futarchy”應(yīng)用。

8.以身份和信譽(yù)體系為基礎(chǔ),鏈上去中心化市場(chǎng)。

注意改進(jìn)版幽靈協(xié)議的實(shí)施

“幽靈“協(xié)議("GreedyHeaviestObservedSubtree"(GHOST)protocol)是由YonatanSompolinsky和AvivZohar2013年12月引進(jìn)的創(chuàng)新。幽靈協(xié)議提出的動(dòng)機(jī)是目前快速確認(rèn)的塊鏈由于塊的高浪費(fèi)率而受到低安全性的困擾;因?yàn)閴K需要一定的時(shí)間(設(shè)置為t)擴(kuò)散到整個(gè)網(wǎng)絡(luò)。如果礦工A挖出一個(gè)塊,礦工B在A塊擴(kuò)散到B之前碰巧挖出另一個(gè)塊,礦工B塊將無(wú)效且無(wú)效為網(wǎng)絡(luò)安全做出貢獻(xiàn)。此外,還有一個(gè)集中的問(wèn)題:如果A是一個(gè)全網(wǎng)計(jì)算能力30%的礦池,B計(jì)算能力10%,A將面臨70%的時(shí)間產(chǎn)生作廢區(qū)塊的風(fēng)險(xiǎn),而B(niǎo)在90%的時(shí)間內(nèi)產(chǎn)生作廢區(qū)塊。因此,如果作廢率高,A簡(jiǎn)單地說(shuō),由于計(jì)算能力份額較高,效率更高。結(jié)合這兩個(gè)因素,區(qū)塊生成速度快的塊鏈很可能導(dǎo)致礦池實(shí)際上有計(jì)算能力份額來(lái)控制采礦過(guò)程。

正如Sompolinsky和Zohar描述的是計(jì)算哪個(gè)鏈“最長(zhǎng)”還包括廢區(qū)塊,幽靈協(xié)議解決了降低網(wǎng)絡(luò)安全性的第一個(gè)問(wèn)題;也就是說(shuō),不僅是一個(gè)區(qū)塊的父區(qū)塊和更早的祖先區(qū)塊,以太坊術(shù)語(yǔ)的后代塊(以太坊術(shù)語(yǔ)稱為“叔區(qū)塊”)它還被添加來(lái)計(jì)算哪個(gè)塊有最大的工作量來(lái)支持它。我們超越了Sompolinsky和Zohar所描述的協(xié)議以解決第二個(gè)問(wèn)題–以太坊支付集中傾向“叔區(qū)塊”87廢區(qū)塊的身份是新塊確認(rèn)的貢獻(xiàn).5%的獎(jiǎng)勵(lì)包含在計(jì)算中“侄子區(qū)塊”獎(jiǎng)勵(lì)12.5%,但交易費(fèi)用不獎(jiǎng)勵(lì)給叔叔區(qū)塊。以太坊實(shí)施了一個(gè)簡(jiǎn)化版本的幽靈協(xié)議,只探索第五層。以太坊實(shí)施了一項(xiàng)簡(jiǎn)化版本的幽靈協(xié)議,只探索第五層。其特點(diǎn)是廢區(qū)塊只能作為叔叔區(qū)塊的父母的第二代到第五代,而不是更遠(yuǎn)的年輕區(qū)塊(如父母區(qū)塊的第六代年輕區(qū)塊,或祖父區(qū)塊的第三代年輕區(qū)塊)。這樣做有幾個(gè)原因。首先,無(wú)條件的幽靈協(xié)議會(huì)給計(jì)算給定區(qū)塊的叔叔區(qū)塊帶來(lái)太多的復(fù)雜性。其次,以太坊使用的無(wú)條件幽靈協(xié)議剝奪了礦工在主鏈而不是公開(kāi)攻擊者鏈上挖掘的激勵(lì)。最后,計(jì)算表明,即使出塊時(shí)間為15,也有激勵(lì)的五層幽靈協(xié)議s在這種情況下,也達(dá)到了95%以上的效率,而計(jì)算能力25%的礦工從集中獲得的好處不到3%。

費(fèi)用

由于每次發(fā)布到區(qū)塊鏈的交易都占據(jù)了下載和驗(yàn)證的成本,因此需要一個(gè)包括交易費(fèi)用在內(nèi)的標(biāo)準(zhǔn)機(jī)制來(lái)防止過(guò)度交易。比特幣使用的默認(rèn)方法是純自愿交易成本,依靠礦工作為守門員,設(shè)定動(dòng)態(tài)最低成本。因?yàn)檫@種方法是“基于市場(chǎng)的”,礦工和交易發(fā)送者可以根據(jù)供需來(lái)決定價(jià)格,因此這種方法在比特幣社區(qū)得到了很好的接受。然而,邏輯問(wèn)題是交易處理不是一個(gè)市場(chǎng);雖然根據(jù)直覺(jué)將交易處理解釋為礦工提供的服務(wù)非常有吸引力,但事實(shí)上,礦工包含的交易需要網(wǎng)絡(luò)中的每個(gè)節(jié)點(diǎn),因此交易處理的最大成本由第三方而不是決定是否包含交易的礦工承擔(dān)。因此,公地悲劇很有可能發(fā)生。

然而,當(dāng)給出一個(gè)特殊而不準(zhǔn)確的簡(jiǎn)化假設(shè)時(shí),基于市場(chǎng)機(jī)制的漏洞神奇地消除了它的影響。示范如下。

交易帶來(lái)k步操作,并提供獎(jiǎng)勵(lì)kRR由交易發(fā)布者設(shè)置,為任何收錄交易的礦工,k而R對(duì)礦工來(lái)說(shuō)是事先(大致上)可見(jiàn)的。每個(gè)節(jié)點(diǎn)處理每一步的成本都是C(即所有節(jié)點(diǎn)的效率一致)。每個(gè)計(jì)算能力一致(即全網(wǎng)計(jì)算能力的1/N)。沒(méi)有不挖礦的全節(jié)點(diǎn)。

當(dāng)預(yù)期獎(jiǎng)勵(lì)大于成本時(shí),礦工愿意采礦。這是因?yàn)榈V工有1/1N處理下一個(gè)塊的機(jī)會(huì),所以預(yù)期收入是kR/N,礦工的處理成本簡(jiǎn)單kC.這樣當(dāng)kR/N>kC,即R>NC時(shí)。礦工愿意收錄交易。注意R是交易發(fā)送者提供的每一步費(fèi)用,是礦工從處理交易中受益的下限。NC全網(wǎng)處理一個(gè)操作的成本。因此,礦工只有動(dòng)機(jī)包括收入大于成本的交易。然而,這些假設(shè)與實(shí)際情況有幾個(gè)重要的偏差:

由于額外的驗(yàn)證時(shí)間延遲了塊的廣播,增加了塊成為廢塊的機(jī)會(huì),處理交易的礦工成本高于其他驗(yàn)證節(jié)點(diǎn)。全節(jié)點(diǎn)不挖礦是存在的。在實(shí)踐中,計(jì)算能力分布最終可能是極其不平均的。政敵和瘋子確實(shí)存在以破壞網(wǎng)絡(luò)為己任的投機(jī)者,他們可以聰明地設(shè)置合同,使他們的成本遠(yuǎn)低于其他驗(yàn)證節(jié)點(diǎn)。上述第一點(diǎn)驅(qū)使礦工收錄更少的交易,第二點(diǎn)增加NC;因此,這兩點(diǎn)的影響至少相互抵消了.第三點(diǎn)和第四點(diǎn)是主要問(wèn)題;作為解決方案,我們簡(jiǎn)單地建立了浮動(dòng)上限:沒(méi)有區(qū)塊可以包含比例BLK_LIMIT_FACTOR倍長(zhǎng)期指數(shù)移動(dòng)平均值更多。具體地:

blk.oplimit=floor((blk.parent.oplimit*(EMAFACTOR-1) floor(parent.opcount*BLK_LIMIT_FACTOR))/EMA_FACTOR)

BLK_LIMIT_FACTOR和EMA_FACTOR暫時(shí)設(shè)為65536和1.經(jīng)過(guò)更深入的分析,可以調(diào)整5的常數(shù)。

完整的計(jì)算和圖靈

需要強(qiáng)調(diào)的是,以太坊虛擬機(jī)是圖靈完整的;這意味著EVM代碼可以實(shí)現(xiàn)任何可想象的計(jì)算,包括無(wú)限循環(huán)。EVM實(shí)現(xiàn)循環(huán)的方法有兩種。JUMP指令允許程序跳回代碼前面的某個(gè)地方whilex<27:x=x*2條件句相同JUMPI條件跳轉(zhuǎn)是指令實(shí)現(xiàn)的。其次,合同可以通過(guò)遞歸調(diào)用其他合同來(lái)實(shí)現(xiàn)循環(huán)。這自然導(dǎo)致了一個(gè)問(wèn)題:惡意用戶能否通過(guò)迫使礦工和整個(gè)節(jié)點(diǎn)進(jìn)入無(wú)限循環(huán)而關(guān)機(jī)?這個(gè)問(wèn)題是由于計(jì)算機(jī)科學(xué)中的一個(gè)停機(jī)問(wèn)題:一般來(lái)說(shuō),沒(méi)有辦法知道給定的程序是否可以在有限的時(shí)間內(nèi)完成。

正如狀態(tài)轉(zhuǎn)換章所述,我們的計(jì)劃通過(guò)為每筆交易設(shè)定最大的計(jì)算步驟來(lái)解決問(wèn)題。如果超過(guò),計(jì)算將恢復(fù)到原始狀態(tài),但仍需支付費(fèi)用。消息也是如此。為了顯示該計(jì)劃背后的動(dòng)機(jī),請(qǐng)考慮以下示例:

攻擊者創(chuàng)建了一份運(yùn)行無(wú)限循環(huán)的合同,然后向礦工發(fā)送了一份激活循環(huán)的交易。礦工將處理交易,運(yùn)行無(wú)限循環(huán),直到瓦斯耗盡。即使瓦斯半途而廢,交易仍然正確(回到原處),礦工仍然從攻擊者那里賺取每一步計(jì)算的費(fèi)用。攻擊者創(chuàng)造了一個(gè)非常長(zhǎng)的無(wú)限循環(huán)意圖,迫使礦工長(zhǎng)期計(jì)算,導(dǎo)致在計(jì)算結(jié)束前產(chǎn)生了幾個(gè)塊,因此礦工無(wú)法包括交易以賺取成本。然而,攻擊者需要發(fā)布一個(gè)STARTGAS值限制可執(zhí)行步數(shù),因此礦工會(huì)提前知道計(jì)算步數(shù)會(huì)消耗太多。攻擊者看到一個(gè)包含,比如send(A,self.storage);self.storage=0格式合同,然后發(fā)送只能執(zhí)行第一步而不能執(zhí)行第二步的交易(即提現(xiàn)但不減少賬戶余額)。合同作者不必?fù)?dān)心類似的防御攻擊,因?yàn)槿绻型就V?,所有的變化都?huì)得到回復(fù)。一個(gè)金融合同通過(guò)提取九個(gè)特殊數(shù)據(jù)發(fā)布器的中值來(lái)最大限度地降低風(fēng)險(xiǎn),一個(gè)攻擊者接管了其中一個(gè)數(shù)據(jù)提供器,然后按下它DAO章節(jié)中提到的可變地址調(diào)用機(jī)制設(shè)計(jì)成可變數(shù)據(jù)提供器,轉(zhuǎn)換為運(yùn)行無(wú)限循環(huán),以迫使任何金融合同從現(xiàn)在開(kāi)始索要資金的嘗試都會(huì)因瓦斯耗盡而暫停。然而,金融合同可以在新聞中設(shè)置瓦斯限制,以防止此類問(wèn)題。圖靈的完整替代是圖靈的不完整,這里JUMP和JUMPI指令不存在,每個(gè)合同只允許在給定時(shí)間的調(diào)用堆棧中存在一份副本。在這樣的系統(tǒng)中,可能不需要上述成本系統(tǒng)和圍繞我們方案效率的不確定性,因?yàn)閳?zhí)行合同的成本將由其規(guī)模決定。此外,圖靈的不完整甚至不是一個(gè)很大的限制。到目前為止,只有一個(gè)合同需要循環(huán),即使這個(gè)循環(huán)可以被26個(gè)單行代碼段的重復(fù)所取代。考慮到圖靈完整帶來(lái)的嚴(yán)重麻煩和有限的好處,為什么不簡(jiǎn)單地使用圖靈不完整的語(yǔ)言呢?事實(shí)上,圖靈的不完整不是一個(gè)簡(jiǎn)單的解決方案。為什么?請(qǐng)考慮以下合同:C0:call(C1);call(C1);C1:call(C2);call(C2);C2:call(C3);call(C3);...C49:call(C50);call(C50);C50:(在合同中長(zhǎng)期存儲(chǔ)圖靈機(jī)的步驟計(jì)算和記錄結(jié)果)

現(xiàn)在,發(fā)送這樣的交易A,這樣,在51筆交易中,我們有一筆需要花費(fèi)2美元^對(duì)于50步計(jì)算的合同,礦工可以嘗試維護(hù)每個(gè)合同的最高可執(zhí)行步數(shù),并計(jì)算遞歸調(diào)用其他合同的可執(zhí)行步數(shù),以便提前檢測(cè)此類邏輯炸彈,但這將禁止礦工創(chuàng)建其他合同(因?yàn)樯鲜?6份合同的創(chuàng)建和執(zhí)行可以很容易地放入單獨(dú)的合同)。另外一個(gè)問(wèn)題點(diǎn)是一個(gè)消息的地址字段是一個(gè)變量,所以通常來(lái)講可能甚至無(wú)法預(yù)先知道一個(gè)合約將要調(diào)用的另外一個(gè)合約是哪一個(gè)。另一個(gè)問(wèn)題是,一個(gè)消息的地址字段是一個(gè)變量,所以一般來(lái)說(shuō),你甚至可能不知道一個(gè)合同要調(diào)用的另一個(gè)合同是哪個(gè)。因此,我們最終得出了一個(gè)驚人的結(jié)論:圖靈的完整管理令人驚訝地容易,而圖靈的不完整管理在缺乏相同控制時(shí)令人驚訝地困難——為什么不讓協(xié)議圖靈完整呢?

貨幣和發(fā)行

以太坊網(wǎng)絡(luò)包含自己的內(nèi)置貨幣以太幣。以太幣起著雙重作用,為各種數(shù)字資產(chǎn)交易提供了主要的流動(dòng)性,更重要的是,它提供了一種支付交易費(fèi)用的機(jī)制。為了方便和避免未來(lái)的爭(zhēng)議(見(jiàn)當(dāng)前情況mBTC/uBTC/聰?shù)臓?zhēng)論),提前設(shè)置不同面值的名稱:

1:偉10^12:薩博10^15:芬尼10^18:以太

這應(yīng)該被視為是“元”和“分”或者“比特幣”和“聰”在不久的將來(lái),我們期待著概念的擴(kuò)展版“以太”作為普通交易,“芬尼”用于微交易,“薩博”和“偉”用于討論費(fèi)用和協(xié)議的實(shí)施。

發(fā)行方式如下:

以太幣將通過(guò)銷售活動(dòng)以每次發(fā)售BTC1337-2000以太的價(jià)格發(fā)售,一個(gè)旨在為以太坊組織籌資并且為開(kāi)發(fā)者支付報(bào)酬的機(jī)制已經(jīng)在其它一些密碼學(xué)貨幣平臺(tái)上成功使用。早期買家會(huì)享受更大的折扣,銷售收入BTC將完全用于支付開(kāi)發(fā)人員和研究人員的工資和獎(jiǎng)勵(lì),以及投資密碼貨幣生態(tài)系統(tǒng)的項(xiàng)目。0.099x(x分配給總銷售額BTC另一個(gè)0.099x長(zhǎng)期研究項(xiàng)目將分配。從上線開(kāi)始,每年都會(huì)有0.26x(x礦工為銷售總量挖出。發(fā)行分解

永久性線性增長(zhǎng)模型降低了比特幣中財(cái)富過(guò)于集中的風(fēng)險(xiǎn),給了生活在當(dāng)下和未來(lái)的人獲得貨幣的公平機(jī)會(huì),并保持了獲得和持有以太幣的激勵(lì),因?yàn)閺拈L(zhǎng)遠(yuǎn)來(lái)看“貨幣供應(yīng)增長(zhǎng)率”趨于零。我們還推斷,隨著時(shí)間的推移,總會(huì)有粗心和死亡造成的貨幣損失。假設(shè)貨幣損失是每年貨幣供應(yīng)量的固定比例,最終流通中的貨幣供應(yīng)量將穩(wěn)定在等于年貨幣發(fā)行量除以損失率的值(例如,當(dāng)損失率為1%時(shí),當(dāng)供應(yīng)量達(dá)到30x時(shí),每年有0.3x同時(shí)挖出0.3x失去,達(dá)到平衡)。

GroupAtlaunchAfter1yearAfter5yearsCurrencyunits1.198X1.458X2.498XPurchasers83.5%68.6%40.0%Reservespentpre-sale8.26%6.79%3.96%Reserveusedpost-sale8.26%6.79%3.96%Miners0%17.8%52.0%

除了線性發(fā)行,以太幣的供應(yīng)增長(zhǎng)率和比特幣一樣長(zhǎng)期趨于零。

集中開(kāi)采

比特幣挖掘算法基本上是讓礦工在某個(gè)節(jié)點(diǎn)最終改變版本之前輕微改變塊頭幾千次。哈希小于目標(biāo)值(目前約2190)。然而,這種采礦算法很容易被兩種形式的集中攻擊。首先,采礦生態(tài)系統(tǒng)是專門設(shè)計(jì)的,因此在比特幣采礦的特殊任務(wù)中效率提高了數(shù)千倍ASICs(專用集成電路)和計(jì)算機(jī)芯片控制。這意味著比特幣挖掘不再是高度分散和追求平等主義,而是需要巨額資本的有效參與。第二,大多數(shù)比特幣礦工實(shí)際上不再在當(dāng)?shù)赝瓿蓞^(qū)塊驗(yàn)證;而是依靠集中的礦池來(lái)提供區(qū)塊頭。這個(gè)問(wèn)題可以說(shuō)是非常嚴(yán)重的:在本文的寫作中,最大的兩個(gè)礦池間接控制了整個(gè)網(wǎng)絡(luò)約50%的計(jì)算能力,盡管當(dāng)一個(gè)礦池或聯(lián)合體試圖攻擊51%時(shí),礦工可以轉(zhuǎn)換為其他礦池,這減輕了問(wèn)題的嚴(yán)重性。

以太坊目前的目的是使用基于每1000個(gè)隨機(jī)數(shù)隨機(jī)產(chǎn)生哈希函數(shù)的挖掘算法,并使用足夠?qū)挼挠?jì)算域來(lái)消除特殊硬件的優(yōu)點(diǎn)。當(dāng)然,這種策略不會(huì)將集中收入減少到零,但也不需要。請(qǐng)注意,每個(gè)用戶幾乎可以通過(guò)使用自己的私人筆記本電腦或臺(tái)式電腦免費(fèi)完成一定數(shù)量的采礦活動(dòng),但達(dá)到100%CPU在利用率之后,他們需要支付更多的電力和硬件。ASIC挖礦公司需要從第一個(gè)哈希開(kāi)始就為電力和硬件支付成本。因此,如果集中收入能夠保持在(E H)/E下面,那就算了ASICs被制造出來(lái)普通礦工依然有生存空間。此外,我們計(jì)劃將挖掘算法設(shè)計(jì)為需要訪問(wèn)整個(gè)區(qū)塊鏈的挖掘,迫使礦工存儲(chǔ)或至少驗(yàn)證每筆交易。這消除了集中礦池的需求;雖然礦池仍然可以發(fā)揮平滑收入分配的隨機(jī)作用,但該功能可以不受集中控制P2P礦池完工地也一樣好。這樣,即使大多數(shù)普通用戶仍然傾向于選擇輕客戶端,增加網(wǎng)絡(luò)中的全節(jié)點(diǎn)數(shù)量也有助于抵御集中。

擴(kuò)展性

擴(kuò)展性問(wèn)題是以太坊經(jīng)常受到關(guān)注的地方。和比特幣一樣,以太坊也遭受著每一筆交易都需要網(wǎng)絡(luò)中每一個(gè)節(jié)點(diǎn)來(lái)應(yīng)對(duì)這一困境的折磨。目前比特幣的區(qū)塊鏈規(guī)模約為20GB,以每小時(shí)1MB速度增長(zhǎng)。若比特幣網(wǎng)絡(luò)處理Visa級(jí)的2000tps每三秒1交易MB速度增長(zhǎng)(1GB每小時(shí),8TB每年)。以太坊也可能經(jīng)歷類似甚至更糟的增長(zhǎng)模式,因?yàn)樵谝蕴粎^(qū)塊鏈上有很多應(yīng)用,而不是簡(jiǎn)單的貨幣,但以太坊的整個(gè)節(jié)點(diǎn)只需要存儲(chǔ)狀態(tài),而不是完整的區(qū)塊鏈歷史,這改善了情況。

大區(qū)塊鏈的問(wèn)題是集中風(fēng)險(xiǎn)。如果塊鏈大小增加,比如100TB,可能的場(chǎng)景是,只有非常小的大型企業(yè)才會(huì)運(yùn)行整個(gè)節(jié)點(diǎn),而常規(guī)用戶使用輕型節(jié)點(diǎn)SPV節(jié)點(diǎn)。這將增加對(duì)整個(gè)節(jié)點(diǎn)合伙欺詐的利潤(rùn)例如,更改區(qū)塊獎(jiǎng)勵(lì),給自己BTC)擔(dān)心風(fēng)險(xiǎn)。輕節(jié)點(diǎn)無(wú)法立即檢測(cè)到這種欺詐。當(dāng)然,至少可能有一個(gè)誠(chéng)實(shí)的全節(jié)點(diǎn),幾個(gè)小時(shí)后欺詐信息將通過(guò)Reddit這樣的渠道泄露,但現(xiàn)在已經(jīng)太晚了:無(wú)論普通用戶如何努力廢除已經(jīng)產(chǎn)生的塊,他們都會(huì)遇到巨大而不可行的協(xié)調(diào)問(wèn)題,與成功的51%攻擊相同。在比特幣這里,現(xiàn)在這是一個(gè)問(wèn)題,但PeterTodd建議的改變可以緩解這個(gè)問(wèn)題。

最近,以太坊將使用兩種額外的策略來(lái)處理這個(gè)問(wèn)題。首先,由于基于區(qū)塊鏈的采礦算法,至少每個(gè)礦工都會(huì)被迫成為一個(gè)全節(jié)點(diǎn),這確保了一定數(shù)量的全節(jié)點(diǎn)。其次,更重要的是,在處理完每筆交易后,我們將在區(qū)塊鏈中包含一棵中間狀態(tài)樹(shù)的根。即使區(qū)塊驗(yàn)證是集中的,只要存在誠(chéng)實(shí)的驗(yàn)證節(jié)點(diǎn),也可以通過(guò)驗(yàn)證協(xié)議避免集中的問(wèn)題。如果礦工發(fā)布了一個(gè)不正確的區(qū)塊,該區(qū)塊要么格式錯(cuò)誤,要么處于狀態(tài)S[n]是錯(cuò)的。因?yàn)镾[0]是正確的,必須有第一個(gè)錯(cuò)誤的狀態(tài)S[i]但S[i-1]是正確的,驗(yàn)證節(jié)點(diǎn)將提供索引i,一起提供處理APPLY(S[i-1],TX[i])->S[i]帕特里夏樹(shù)節(jié)點(diǎn)所需的子集。這些節(jié)點(diǎn)將被命令計(jì)算這部分,以查看生成S[i]是否與之前提供的值一致。

此外,更復(fù)雜的是,惡意礦工發(fā)布不完整的塊進(jìn)行攻擊,導(dǎo)致沒(méi)有足夠的信息來(lái)確定塊是否正確。解決方案是質(zhì)疑-響應(yīng)協(xié)議:驗(yàn)證節(jié)點(diǎn)質(zhì)疑目標(biāo)交易索引,在另一名礦工或驗(yàn)證人提供帕特里夏節(jié)點(diǎn)集作為正確證據(jù)之前,接受質(zhì)疑信息的輕節(jié)點(diǎn)將取消對(duì)相應(yīng)塊的信任。

綜述:分散應(yīng)用

上述合同機(jī)制允許任何人在虛擬機(jī)上建立一個(gè)通過(guò)全網(wǎng)絡(luò)共識(shí)運(yùn)行命令行的應(yīng)用程序(從根本上說(shuō)),它可以改變?nèi)W(wǎng)絡(luò)可訪問(wèn)的狀態(tài)“硬盤”。然而,對(duì)大多數(shù)人來(lái)說(shuō),缺乏足夠的用戶友好性使分散化成為一種有吸引力的替代方案。最后,一個(gè)完整的“分散應(yīng)用”應(yīng)包括底層的商業(yè)邏輯組件使用以太坊和其他系統(tǒng)組合,無(wú)論是否在以太坊完全實(shí)施(如一個(gè))P2P新聞層,其中一個(gè)計(jì)劃放入以太坊客戶端)或只有其他系統(tǒng)的方式】和上層圖形用戶接口組件。以太坊客戶端被設(shè)計(jì)成網(wǎng)絡(luò)瀏覽器,但包括對(duì)“eth”JavascriptAPI客戶端可以看到的特定網(wǎng)頁(yè)支持與以太坊區(qū)塊鏈互動(dòng)。從“傳統(tǒng)”從網(wǎng)頁(yè)的角度來(lái)看,這些網(wǎng)頁(yè)是完全靜態(tài)的,因?yàn)閰^(qū)塊鏈和其他分散協(xié)議將完全取代服務(wù)器來(lái)處理用戶的請(qǐng)求。最后,分散協(xié)議希望以太坊以某種方式存儲(chǔ)網(wǎng)頁(yè)。

結(jié)論

以太坊協(xié)議最初構(gòu)思了升級(jí)版的密碼學(xué)貨幣,如鏈上合同、現(xiàn)金提取限制、金融合同、賭博市場(chǎng)等高級(jí)功能。以太坊協(xié)議將不直接“支持”任何應(yīng)用程序,但圖靈完整編程語(yǔ)言的存在意味著理論上任何合同都可以為任何交易類型和應(yīng)用程序創(chuàng)建。然而,以太坊更有趣的是,以太坊協(xié)議遠(yuǎn)遠(yuǎn)超過(guò)簡(jiǎn)單的貨幣,圍繞分散存儲(chǔ)、分散計(jì)算和分散預(yù)測(cè)市場(chǎng)以及幾十個(gè)類似的協(xié)議和分散應(yīng)用概念,有潛力從根本上提高計(jì)算行業(yè)的效率,并首次將經(jīng)濟(jì)層添加到其他領(lǐng)域P2P協(xié)議提供強(qiáng)有力的支持,最終也會(huì)出現(xiàn)大量與金錢無(wú)關(guān)的應(yīng)用。

以太坊協(xié)議實(shí)現(xiàn)的任何狀態(tài)轉(zhuǎn)換概念提供了一個(gè)具有獨(dú)特潛力的平臺(tái);與數(shù)據(jù)存儲(chǔ)、賭博或金融等單一目的的封閉協(xié)議不同,以太坊在設(shè)計(jì)上是開(kāi)放的,我們相信它非常適合大量的金融和非金融協(xié)議作為基礎(chǔ)服務(wù)。

注釋和高級(jí)閱讀 注解

1.一位經(jīng)驗(yàn)豐富的讀者會(huì)注意到,比特幣地址實(shí)際上是橢圓曲線公鑰,而不是公鑰本身。然而,從密碼學(xué)術(shù)語(yǔ)的角度來(lái)看,將公鑰稱為公鑰是完全合理的。這是因?yàn)楸忍貛琶艽a學(xué)被認(rèn)為是一種定制的數(shù)字簽名算法。公鑰由橢圓曲線公鑰的哈希組成,簽名由橢圓曲線簽名連接的橢圓曲線公鑰組成。驗(yàn)證算法包括用作公鑰的橢圓曲線公鑰哈希檢查橢圓曲線公鑰,然后用橢圓曲線公鑰驗(yàn)證橢圓曲線簽名。

2.從技術(shù)上講,前11中值。

3.內(nèi)部,2和“CHARLIE”都是數(shù)字,后者有巨大的base256編碼格式,數(shù)字可以從0到2^256-1。

進(jìn)階閱讀

Intrinsicvalue:https://tinyurl.com/BitcoinMag-IntrinsicValue

Smartproperty:https://en.bitcoin.it/wiki/Smart_Property

Smartcontracts:https://en.bitcoin.it/wiki/Contracts

B-money:http://www.158100.cn/bmoney.txt

Reusableproofsofwork:http://www.158100.cn/coloredcoin-whitepaper

Mastercoinwhitepaper:https://github.com/mastercoin-MSC/spec

Decentralizedautonomouscorporations,BitcoinMagazine:https://tinyurl.com/Bootstrapping-DACs

Simplifiedpaymentverification:https://en.bitcoin.it/wiki/Scalability#Simplifiedpaymentverification

Merkletrees:http://en.wikipedia.org/wiki/Merkle_tree

Patriciatrees:http://en.wikipedia.org/wiki/Patricia_tree

GHOST:http://www.158100.cnousAgents,JeffGarzik:https://tinyurl.com/storj-agents

MikeHearnonSmartPropertyatTuringFestival:http://www.158100.cn/watch?v=Pu4PAMFPo5Y

EthereumRLP:https://github.com/ethereum/wiki/wiki/[English]-RLP

EthereumMerklePatriciatrees:https://github.com/ethereum/wiki/wiki/[English]-Patricia-Tree

PeterToddonMerklesumtrees:http://sourceforge.net/p/bitcoin/mailman/message/31709140/

點(diǎn)擊展開(kāi)全文

騰佑科技(www.158100.cn)成立于2009年,總部位于河南鄭州,是一家集互聯(lián)網(wǎng)基礎(chǔ)設(shè)施及軟硬件于一體化的高新技術(shù)企業(yè),具有IDC/ISP/ICP/云牌照、雙軟等資質(zhì),并擁有多個(gè)國(guó)家版權(quán)局認(rèn)證。公司自成立以來(lái),一直致力于發(fā)展互聯(lián)網(wǎng)IDC數(shù)據(jù)中心DataCenter、云計(jì)算Cloud、大數(shù)據(jù)BigDate、人工智能AI、內(nèi)容加速CDN、互聯(lián)網(wǎng)安全、軟件定制開(kāi)發(fā)等產(chǎn)品服務(wù)及行業(yè)客戶技術(shù)一體化智能解決方案;2018年成為百度智能云AI河南服務(wù)中心。

售前咨詢熱線:400-996-8756

備案提交:0371-89913068

售后客服:0371-89913000

熱門活動(dòng)

百度云服務(wù)中心
  • 熱門資訊
  • 隨便看看