以太坊的使用:基礎指南
通過本節可以獲取用戶參與到以太坊項目中的基本方法。首先,要想成爲網絡中的節點,需要運行一個以太坊客戶端。在選擇客戶端這一節中列出了多重實現,同時針對不同的安裝應選擇什麼樣的客戶端給出了建議。連接到網絡會告訴你關於網絡、連接故障排除和區塊鏈同步的基本信息。設立私有鏈等高級的網絡主題可以在測試網絡章節中看到。
Homestead的發佈
Homestead是以太坊平臺的第二個主要版本,也是以太坊發佈的第一個正式版本。它包括幾處協議變更和網絡設計變更,使網絡進一步升級成爲可能。以太坊的第一個版本Frontier實際上是測試版,供開發者學習、試驗並開始建立以太坊去中心化的應用和工具。
以太坊開發路線圖中的里程碑
以太坊上線之前計劃的初始開發路線圖主要有以下幾個里程碑:
- 預發佈:Olympic testnet —— 2015年5月發佈
- 發佈第一個版本:Frontier —— 2015年7月30日發佈
- 發佈第二個版本: Homestead —— 2016年3月14日發佈(π日)
- 發佈第三個版本: Metropolis —— 即將宣佈
- 發佈第四個版本:Serenity –—— 即將宣佈
儘管仍然有效,但它背後的實質已有所改變。Olympic testnet階段(Frontier發佈之前)見證了很多主要的改進,緊接着就發佈了Frontier。Homestead標誌着測試版結束,開始發佈正式版本。Homestead會自動在1,150,000號區塊引入,大概會發生在2016年3月14日,也就是π日前後。
如果你正在運行一個和實時網絡連接的節點,非常有必要升級到Homestead兼容的客戶端。這些客戶端版本列在以太坊客戶端下。如果客戶端不兼容,你會進入到錯誤的分叉,不能和網絡其他部分同步。
以太坊區塊鏈一旦到達1,150,000號區塊,以太坊網絡就會經歷一個硬分叉,帶來幾項主要變更,這將在下一章節中闡述。
Homestead 硬分叉變更
以太坊從狹義上來說,是一系列協議。Homestead帶來了幾個反向不兼容的協議變更,進而要求硬分叉。這些變更在過程中向以太坊改進建議靠攏,主要包括以下幾個內容:
• EIP 2:
— 通過交易創建合約的費用由21000增加到53000。用CREATE操作碼通過合約來創建合約不受影響。
— S值比secp256k1n/2大的交易簽名現在被認定無效。
— 如果創建合約時沒有足夠的gas用來支付給狀態增加合約編碼所需的最終gas費用,合約創建就會失敗(例如,無gas可用)而不會留下一個空合約。
— 改變算法難度調整
• EIP 7: DELEGATECALL:增加一個新的操作碼,DELEGATECALL at 0xf4,它和CALLCODE的概念相似,不過會把發送者和父作用域的價值發送到子作用域,比如,創建的調用與原始調用具有相同的發送者和價值。這就意味着合約可以通過信息存儲通路,同時遵從父合約中的信息發送者(msg.sender)和信息價值(msg.value)。這樣對創建合約的合約來說是好事,但是不要重複那些存儲gas的附加信息。參見對EIP 7的評論。
• EIP 8: devp2p 向前兼容性符合健壯性原則 RLPx 發現協議和 RLPx TCP傳輸協議確保以太坊網路上使用的客戶端軟件可以應對將來的網絡協議升級。對於以太坊的舊版本來說,網絡協議升級並不被舊客戶端所接受,發現接收到的hello數據包不是預期數據時,通信會被拒絕。這個升級意味着未來的客戶端版本能夠接受即將到來的網絡升級和握手通信。
這些變化有以下幾項好處:
• EIP-2/1消除了通過交易創建合約的過量激勵,通過交易創建的成本是21000,而通過合約創建的成本是32000。
• EIP-2/1 在自殺式退款的幫助下修復了協議中的漏洞, 現在只用11664 gas就能實現簡單的以太幣價值轉移。
• EIP-2/2 修復了交易可塑性方面的擔憂(不是安全性缺陷,是用戶界面不便利性)
• EIP-2/3 在合約創建過程中,建立了更加直觀的“成功或失敗”的區分,而不像現在“成功,失敗或者空賬戶” 三分的情況。
• EIP-2/4 將設置時間戳區別的過量激勵消除到1,以便創建難度稍大的區塊,進而保障搞定任何可能的分叉。這樣就保證了出塊時間維持在10-20範圍,並且按照模擬可以恢復目標的15秒區塊時間出塊時間(現在有效時間是17秒)。
• EIP-7 使合約更容易儲存另一個地址,作爲編碼和“通過”調用的可變來源,子編碼會和父編碼在本質上相同的環境下執行(除非gas減少,調用棧(調用棧深度)增加)
• EIP-8 確保以太坊網絡上使用的所有客戶端軟件可以應對未來網絡協議升級。
參考資料:
Reddit上關於Homestead發佈的討論:https://www.reddit.com/r/ethereum/comments/48arax/homestead_release_faq/
初始開發路線圖:https://blog.ethereum.org/2015/03/03/ethereum-launch-process/
EIP 2:https://github.com/ethereum/EIPs/blob/master/EIPS/eip-2.mediawiki
EIP 7: DELEGATECALL:https://github.com/ethereum/EIPs/blob/master/EIPS/eip-7.md
對EIP 7的評論:https://github.com/ethereum/EIPs/issues/23
EIP 8: devp2p Forward Compatibility compliance with the Robustness Principle:https://github.com/ethereum/EIPs/blob/master/EIPS/eip-8.md
EIPs(Ethereum Improvement Proposals):以太坊改進建議