20181117--區塊鏈2.0以太坊開發
以太坊(Ethereum)是一個建立在區塊鏈技術之上, 去中心化應用平臺。它允許任何人在平臺中建立和使用通過區塊鏈技術執行的去中心化應用。
智慧合約
智慧合約可以理解為在區塊鏈上可以自動執行的(由訊息驅動的)、以程式碼形式編寫的合同(特殊的交易)。
智慧合約非常適合對信任、安全和永續性要求較高的應用場景,比如:數字貨幣、數字資產、投票、保險、金融應用、預測市場、產權所有權管理、物聯網、點對點交易等等。
目前除數字貨幣之外,真正落地的應用還不多(就像移動平臺剛開始出來一樣),相信1到3年內,各種殺手級會慢慢出現。
程式語言:Solidity
智慧合約的官方推薦的程式語言是Solidity,副檔名以.sol結尾。
Solidity語言和JavaScript很相似,用它來開發合約並編譯成以太坊虛擬機器位元組程式碼。
以太坊客戶端(錢包)
Geth是典型的開發以太坊時使用的客戶端,基於Go語言開發。 Geth提供了一個互動式命令控制檯,通過命令控制檯中包含了以太坊的各種功能(API)。Geth的使用我們之後會有文章介紹,這裡大家先有個概念。
Geth控制檯和Chrome瀏覽器開發者工具裡的面的控制檯是類似的,不過Geth控制檯是跑在終端裡。
相對於Geth,Mist則是圖形化操作介面的以太坊客戶端。
Gas
和雲端計算相似,佔用區塊鏈的資源(不管是簡單的轉賬交易,還是合約的部署和執行)同樣需要付出相應的費用(天下沒有免費的午餐對不對!)。
以太坊上用Gas機制來計費,Gas也可以認為是一個工作量單位,智慧合約越複雜(計算步驟的數量和型別,佔用的記憶體等),用來完成執行就需要越多Gas。
任何特定的合約所需的執行合約的Gas數量是固定的,由合約的複雜度決定。
而Gas價格由執行合約的人在提交執行合約請求的時候規定,以確定他願意為這次交易願意付出的費用:Gas價格(用以太幣計價) * Gas數量。
Gas的目的是限制執行交易所需的工作量,同時為執行支付費用。當EVM執行交易時,Gas將按照特定規則被逐漸消耗,無論執行到什麼位置,一旦Gas被耗盡,將會觸發異常。當前呼叫幀所做的所有狀態修改都將被回滾, 如果執行結束還有Gas剩餘,這些Gas將被返還給傳送賬戶。
如果沒有這個限制,就會有人寫出無法停止(如:死迴圈)的合約來阻塞網路。
因此實際上(把前面的內容串起來),我們需要一個有以太幣餘額的外部賬戶,來發起一個交易(普通交易或部署、執行一個合約),執行時,礦工收取相應的工作量費用。
Dapp:去中心化的應用程式
以太坊社群把基於智慧合約的應用稱為去中心化的應用程式(Decentralized App)。如果我們把區塊鏈理解為一個不可篡改的資料庫,智慧合約理解為和資料庫打交道的程式,那就很容易理解Dapp了,一個Dapp不單單有智慧合約,比如還需要有一個友好的使用者介面和其他的東西。
Truffle
Truffle是Dapp開發框架,他可以幫我們處理掉大量無關緊要的小事情,讓我們可以迅速開始寫程式碼-編譯-部署-測試-打包DApp這個流程。