以太坊概述一

以太坊概述一

先來了解一個概念,什麼是智能合約?智能合約是通過計算機代碼就可執行的合約,這個合約不需要第三方的仲裁而由計算機自動執行,智能合約的執行可追蹤但是不可逆。因為智能合約的行為是由代碼控制的,而且代碼可以被網絡中所有參與共識的節點所見,所以可以保證智能合約是值得信任的,並能夠完全按照預設的規則工作。同時合約的創建和執行都依賴於區塊鏈協議,所以合約執行的強制力可以保證。

比特幣被稱為區塊鏈1.0時代,因為比特幣的區塊鏈只能記錄比特幣的交易,如果想做別的應用開發,則比較困難;以太坊被稱為區塊鏈2.0時代,以太坊除了可以記錄虛擬貨幣交易,還是一個有智能合約功能的公共區塊鏈平臺,是一個可編程的區塊鏈。用電腦來做比方,以太坊可以看做電腦的操作系統,智能合約就是搭載的軟件;用智能手機做比方,以太坊是手機操作系統,智能合約就是搭載的APP。

以太坊是在2013年,由當時19歲的VITALIK Buterin提出,2014年,以太坊基金會成立,Vitalik Buterin,Gavin Wood 和Jeffrey Wilcke創建了以太坊。

比特幣10分鐘出一個新區塊,

以太坊15秒出一個新區塊,以太坊每秒可處理20-30筆交易,與比特幣相比,以太坊的交易速度已經有所提升,但是仍然不能滿足當前的交易速度。

1. 賬戶

在以太坊中,有一個重要的概念是賬戶(account),賬戶又分為外部賬戶和合約賬戶倆種。

外部賬戶是由私鑰控制的,也就是用戶實際控制的賬戶,可以存儲以太幣,但不能包含代碼。每個外部賬戶有一對私鑰和公鑰,私鑰用於簽署交易,公鑰是由私鑰經過加密算法(SECP256K1橢圓曲線密碼算法)得出,公鑰經過SHA3算法得出賬戶地址。同比特幣一樣,用戶一定要保存好私鑰,丟失私鑰,則賬戶丟失且不能找回。

合約賬戶是一個包含合約代碼的賬戶,是由合約代碼控制的。合約賬戶的地址是由合約創建時合約創建者的地址,以及該地址發出的交易共同計算得出。每當合約賬戶收到一條交易消息時,其合約代碼將被交易輸入的參數調用執行,而合約代碼將會在參與到網絡中的每個節點上執行。

2. 區塊

在以太坊的區塊鏈中,如果礦工挖到一個新區塊,但是由於廣播速度或其他某些原因,該區塊並沒有加到主鏈上成為孤塊,而且以後的區塊可以引用該區塊,則這個區塊被稱為叔區塊,而且叔區塊可以得到獎勵(5個以太幣的7/8)。在比特幣中,不存在叔區塊,只有孤塊,孤塊不被承認。

以太坊的區塊由區塊頭、交易列表和叔區塊頭三部分組成。以太坊區塊鏈上區塊數據結構的一個重大改變就是保存了三棵梅克爾樹根,分別是狀態樹、交易樹和收據樹。有了這三棵樹,客戶可以輕鬆查詢以下內容:

(1) 某筆交易是否被包含在特定的區塊中

(2) 查詢某個地址在過去的30天中發出某種類型事件的所有實例(例如,一個眾籌合約完成了目標)

(3) 目前某個賬戶的餘額

(4) 一個賬戶是否存在

(5) 加入在某個合約中進行一筆交易,交易的輸出是什麼。

交易樹處理(1),收據樹處理(2),狀態樹處理(3),(4)和(5)。

以太坊概述一

以太坊區塊

圖片來源:https://ethereum.stackexchange.com/questions/268/ethereum-block-architecture

3. 共識機制

以太坊仍然採用POW的共識機制,其採用Ethash算法,這時一種“反ASIC”的算法。其特點是挖礦的效率基本與CPU無關,而與內存大小、帶寬正相關。但是目前仍然有專門挖以太幣的礦機資源,沒有真正的做到抵制ASIC。在這需要注意的是,同一種算法的數字貨幣可以用同樣的礦機挖幣,但是不同算法的數字貨幣則需要採用不同的礦機。如比特幣和比特幣現金可以用同樣的礦機挖,但是挖比特幣的礦機不能用來挖以太幣。

由於POW算法的低交易率,能源消耗等問題一直受人詬病,以太坊在研究一種POS算法,即Casper,希望在以後可以將以太坊的共識機制由POW(Ethash)轉變為POS(Casper)。

4. 以太幣

以太幣(ETH)是以太坊發行的一種數字貨幣,在以太坊的區塊鏈上發起交易都需要使用以太幣。以太幣的總供給及其發行率是由2014年的預售決定的,根據預售協議,以太幣每年發行1800萬。具體分配如下:

l 預付款的貢獻者總共有6000萬以太幣;

l 每挖出一個新區塊,給挖出該區塊的礦工獎勵5個以太幣;

l 如果叔塊被之後的區塊引用,則獎勵叔塊礦工4.375以太幣(5以太幣的7/8)。另外,礦工每引用一個叔塊,可以得到0.15以太幣(最多引用倆個叔塊)。

以太幣的最小單位為wei(維),具體換算單位如下表:

以太坊概述一

以太幣單位換算

圖片來源:http://ethdocs.org/en/latest/ether.html?hihlight=ether

5. 交易費用

比特幣的交易費用是直接用比特幣結算,但是以太坊的交易則引入了Gas作為交易消耗計算資源的基本單位,通過Gas Price與以太幣進行換算。當以太坊節點執行一筆交易所需的計算步驟越多,越複雜,則這筆交易消耗的Gas越多。一筆普通的轉賬交易會消耗21000Gas,而創建智能合約的交易可能會消耗幾萬,甚至幾百萬Gas。

Gas Price是一單位Gas的價格(以太幣,即Ether)。用戶創建一個交易時,可以指定期望的Gas Price,可以為任意價格,但是目前以太坊錢包客戶端默認的Gas Price是0.00000001Eher/Gas(1G wei/Gas)。

在以太坊中還有Gas limit(Gas限制)。對於單個交易來說,用戶設置了Gas Limit,交易結束後,Gas沒有用完,礦工只會收取實際計算開銷對應的交易手續費;而如果交易中,Gas不夠用,則交易終止,礦工收取Gas Limit對應的手續費,回到程序執行前的狀態。Gas price * Gas Limit表示用戶願意為以交易支付的最高費用。如果沒有Gas Limit的話,某些惡意用戶可能會發送數百億步驟的交易,礦工事前不知情,從而阻塞網絡。對於一個區塊的Gas Limit,表示一個區塊所包含的的所有交易消耗的Gas的上限,由礦工決定它的大小。根據以太坊協議,當前區塊的Gas Limit只能基於上一個區塊的Gas Limit上下波動1/1024.

6. 交易內容

以太坊中的交易是指存儲一條從外部賬戶發送到區塊鏈上另一個賬戶的消息簽名的數據包。主要有一下三種類型:

l 轉賬交易:轉賬是最簡單的一種交易,從一個賬戶向另一個賬戶發送以太幣。

l 創建智能合約交易:是指將合約部署到區塊鏈上,這也是通過發送交易來實現的。

l 執行智能合約的交易:該交易是為了執行已經部署在區塊鏈上的智能合約,即調用合約。


分享到:


相關文章: