- 區(qū)塊鏈安全入門與實戰(zhàn)
- 劉林炫 鄧永凱 萬鈞 張繼龍
- 1888字
- 2021-01-25 14:37:47
1.3.2 以太坊
隨著比特幣被越來越廣泛地應(yīng)用在國際匯款中,其他為金融、云計算、信息傳遞和分布式管理所專門設(shè)計的去中心化應(yīng)用(DApp)也在研發(fā)中,以太坊提供了一個平臺來創(chuàng)建這些去中心化應(yīng)用。
以太坊(Ethereum)是一個開源的有智能合約的公共區(qū)塊鏈平臺,通過其專用加密貨幣以太幣(Ether,簡稱ETH,代碼中常用寫法為ether)來提供去中心化的以太虛擬機(jī)(Ethereum Virtual Machine)來處理點(diǎn)對點(diǎn)合約。
以太坊用戶端也稱為etherbrowser,可以用來構(gòu)建傳遞信息的點(diǎn)對點(diǎn)網(wǎng)絡(luò),在普遍用編程語言構(gòu)建的區(qū)塊鏈中,允許人們把區(qū)塊鏈技術(shù)應(yīng)用到任何他們想開發(fā)的應(yīng)用中。因為以太坊是基于區(qū)塊鏈技術(shù)的,所以在這個平臺上可以開發(fā)出完全可信賴的透明的金融應(yīng)用。線上密碼安全系統(tǒng)可以用來管理資產(chǎn)和合約。社交網(wǎng)絡(luò)和信息傳遞應(yīng)用允許用戶掌控自己的數(shù)據(jù),用于交易未充分利用的資源,比如CPU(Central Processing Unit,中央處理器)時間和硬盤空間,還可以應(yīng)用到線上投票和分布式治理。而最讓人期待的以太坊應(yīng)用可能還在開發(fā)中。
預(yù)測一種創(chuàng)新型的平臺將能用于做什么并不容易,通過提供一種全球通用的可編程的區(qū)塊鏈,可以把它打包成任何人都可以使用的用戶端,人們希望以太坊項目對金融、點(diǎn)對點(diǎn)貿(mào)易、分布式處理等發(fā)揮積極作用。
以上為以太坊創(chuàng)始人V神對以太坊區(qū)塊鏈系統(tǒng)的闡述。下面我們將從以太坊的產(chǎn)生、特點(diǎn)、賬戶、交易與消息以及比特幣和以太坊的區(qū)別等方面來詳細(xì)介紹以太坊。
1.以太坊的產(chǎn)生
2013~2014年,程序員Vitalik Buterin受比特幣啟發(fā)后,首次提出了“以太坊”的概念,大意為“下一代加密貨幣與去中心化應(yīng)用平臺”;2014年,通過ICO眾籌開始得以發(fā)展;2015年,以太坊區(qū)塊鏈正式上線,最終發(fā)展為世界第二大數(shù)字貨幣平臺。
2.以太坊的特點(diǎn)
以太坊區(qū)塊鏈第一大的特點(diǎn)是支持高級語言編程,也就是智能合約,可以編程實現(xiàn)豐富的應(yīng)用場景。第二大特點(diǎn)是以太坊每15秒出一個塊,有更短的區(qū)塊確認(rèn)時間。第三大特點(diǎn)是以太幣沒有總量限制,初始發(fā)行量為7200萬枚,每年增產(chǎn)1800萬枚。
以太坊區(qū)塊鏈系統(tǒng)是區(qū)塊鏈和智能合約的完美結(jié)合,它不僅擁有區(qū)塊鏈的特性(數(shù)據(jù)公開透明、不可更改、可溯源、去中心化等),而且是一個可編程的區(qū)塊鏈。以太坊程序智能合約允許任何人創(chuàng)建和調(diào)用,其運(yùn)行環(huán)境是以太坊虛擬機(jī)(EVM)。
以太坊虛擬機(jī)是以太坊智能合約的運(yùn)行環(huán)境,它是一個被沙箱封裝起來,可以說是完全隔離的運(yùn)行環(huán)境,智能合約之間的相互調(diào)用也是非常有限的。每個參與到以太坊協(xié)議中的節(jié)點(diǎn)都會在各自的計算機(jī)上運(yùn)行軟件,這些都被稱為以太坊虛擬機(jī),由于區(qū)塊鏈的數(shù)據(jù)是公開透明的,并且每個節(jié)點(diǎn)的信息都同步,所以只要智能合約部署成功,就可以在任何節(jié)點(diǎn)上的以太坊虛擬機(jī)上運(yùn)行。
3.以太坊賬戶、交易與消息
以太坊賬戶分為兩種類型:
·外部賬戶(EOA):由私鑰控制,不關(guān)聯(lián)任何代碼。
·合約賬戶:由存儲在賬戶中的代碼控制,并且一個合約賬戶只能被一個外部賬戶操作。
對于這兩種賬戶類型的交易,如果是外部賬戶A給外部賬戶B發(fā)送消息,就只是價值轉(zhuǎn)移,或者說是轉(zhuǎn)賬操作;如果是外部賬戶A發(fā)送消息給合約賬戶,就可以進(jìn)行創(chuàng)建或者調(diào)用合約等其他操作。
交易是從一個賬戶發(fā)送給另一個賬戶的消息。這里有兩種情況:如果交易的目標(biāo)賬戶存在代碼,那么就會執(zhí)行目標(biāo)賬戶的代碼;如果目標(biāo)賬戶為0,則會創(chuàng)建一個新的合約。
以太坊中的交易是指從外部賬戶發(fā)出含有消息的簽名數(shù)據(jù)包。交易包含以下幾個部分:
·交易序列號(nonce):是賬號的一個交易計數(shù)器,這個字段能夠防止重放攻擊。
·接收方地址(receipt):可以是一個用戶賬戶,也可以是合約。
·價值(value):交易發(fā)送的以太幣數(shù)量(以太坊中的最小單位用wei表示,單位換算為1 Ether=1018wei)。
·數(shù)據(jù)(data):如果你的交易接收方是一個合約,那么該合約就可以讀取數(shù)據(jù)。
·gasPrice:每個Gas的價格用Gwei來表示,單位換算為1 Gwei=109 wei。
·gasLimit:交易可使用的最大Gas數(shù)量限制。
以太坊交易的狀態(tài)轉(zhuǎn)換圖如圖1.1所示。

圖 1.1
以太坊的狀態(tài)轉(zhuǎn)換函數(shù)為APPLY(S,TX)->S',作用如下:
·檢查交易的格式是否正確,簽名是否有效,nonce是否與發(fā)送者賬戶的nonce匹配,如果不匹配,則返回錯誤。
·計算交易費(fèi)用,公式為fee=GAS×GASPRICE,并從簽名中確定發(fā)送者的地址。從發(fā)送者的賬戶中減去交易費(fèi)用,增加發(fā)送者的nonce。如果賬戶余額不足,則返回錯誤。
·設(shè)定初值GAS,并根據(jù)交易中的字節(jié)數(shù)減去一定量的“燃料”(Gas)。
·從發(fā)送者的賬戶轉(zhuǎn)移貨幣價值到接收者賬戶。如果接收者賬戶不存在,就會創(chuàng)建一個新賬戶。如果接收者賬戶是一個合約,就會運(yùn)行合約的代碼,直到代碼運(yùn)行結(jié)束或者燃料用完。
·如果因為發(fā)送者賬戶沒有足夠的錢或者代碼執(zhí)行耗盡燃料而導(dǎo)致價值轉(zhuǎn)移失敗,則恢復(fù)原來的狀態(tài),但是還是需要支付交易費(fèi)用,交易費(fèi)用歸入礦工賬戶。
4.比特幣和以太坊的區(qū)別
比特幣和以太坊的區(qū)別大致如表1.2所示。
表 1.2

- 人性之根
- 蝶變:數(shù)字商業(yè)進(jìn)化之道
- 農(nóng)產(chǎn)品電商成長課堂:從短視頻引流到直播賣貨全程指南
- 微店安裝、推廣、經(jīng)營、管理一本通
- 電子商務(wù)概論(第4版)
- 打動人心:電商文案策劃與視覺營銷
- 微商運(yùn)營和團(tuán)隊管理全攻略
- 網(wǎng)絡(luò)人的未來:移動互聯(lián)網(wǎng)和大數(shù)據(jù)時代的100個預(yù)言
- 運(yùn)營有數(shù):用數(shù)據(jù)突破電商流量
- 實戰(zhàn)大數(shù)據(jù):客戶定位和精準(zhǔn)營銷
- 跨界2:十大行業(yè)互聯(lián)網(wǎng)+轉(zhuǎn)型紅利
- 11.11如何賣到一個億:從0到1的電商爆品打造術(shù)
- 內(nèi)容電商運(yùn)營:從爆文到爆款
- 直播修煉手冊:主播IP打造+營銷運(yùn)營+商業(yè)盈利
- 電商產(chǎn)品經(jīng)理寶典:電商后臺系統(tǒng)產(chǎn)品邏輯全解析