當前位置:商標查詢大全網 - 彩票查詢 - 以太坊是什麽?以太坊發展指南。

以太坊是什麽?以太坊發展指南。

以太坊是什麽?以太坊發展指南。

許多學生壹直渴望加入區塊鏈開發團隊,但他們覺得自己無從下手。本文將基於以太坊這個平臺,以通俗的方式介紹以太坊開發中涉及的晦澀難懂的概念,讓妳輕松入門。

以太坊是什麽?

以太坊是壹個基於區塊鏈技術的去中心化應用平臺。它允許任何人在平臺上通過區塊鏈技術構建和使用分散的應用程序。

不懂這句話的同學可以理解,以太坊就是區塊鏈中的Android,是壹個開發平臺,讓我們可以像Android框架壹樣編寫基於區塊鏈技術的應用。

在以太坊出現之前,寫壹個區塊鏈應用是這樣的:復制壹個比特幣代碼,然後修改加密算法、共識機制、網絡協議等底層代碼。(很多假幣都是這種情況,改完就出來壹個新幣)。

以太坊平臺封裝了底層的區塊鏈技術,使得區塊鏈應用開發者可以直接基於以太坊平臺進行開發,開發者只需要專註於應用本身的開發,大大降低了難度。

目前,圍繞以太坊已經形成了壹個比較完善的開發生態系統:在社區的支持下,有很多開發框架和工具可供選擇。

智能合同

什麽是智能合同

以太網工作坊上的程序叫智能合約,是代碼和數據(狀態)的集合。

智能合約可以理解為可以在區塊鏈上自動執行(由事件驅動)並以代碼形式編寫的合約(特殊交易)。

在比特幣腳本中,我們提到了比特幣的交易是可以編程的,但是比特幣腳本中有很多限制,可以編寫的程序是有限的,而以太坊則更加完整(在計算機科學術語中稱為“圖靈完整”),可以讓我們編寫出幾乎可以像使用任何高級語言壹樣做任何事情的程序(智能合約)。

智能合約非常適合對信任度、安全性和持久性要求較高的應用場景,比如數字貨幣、數字資產、投票、保險、金融應用、市場預測、財產所有權管理、物聯網、點對點交易等等。

目前除了數字貨幣之外,真正的應用並不多(就像移動平臺剛出來壹樣)。相信1到3年,各種殺手會逐漸出現。

編程語言:可靠性

智能合約的默認編程語言是Solidity,文件擴展名以。索爾。

Solidity是壹種類似於JavaScript的語言,用來開發契約,編譯成以太坊虛擬機的字節碼。

還有壹種看起來像Python的智能合約開發語言:Serpent,不過我建議妳還是用Solidity。

Browser-Solidity是壹個瀏覽器的Solidity IDE。可以點壹下看看。後面我們會在更多的文章中介紹語言的紮實性。

操作環境:EVM

EVM(以太坊虛擬機)以太坊虛擬機是以太坊中智能合約的運行環境。

可靠對於EVM就像JVM壹樣,所以每個人都可以很容易地理解它。

以太坊虛擬機是壹個隔離的環境,EVM內部運行的代碼無法與外部連接。

EVM運行在以太網節點上。當我們將契約部署到以太網時,契約可以在以太網中運行。

合同的編制

以太坊虛擬機以契約的字節碼形式運行,所以我們需要在部署前編譯契約。我們可以選擇Browser-Solidity Web IDE或者solc編譯器。

合同的部署

在以太坊開發應用時,經常會用到以太坊客戶端(錢包)。通常我們在開發中不會觸及客戶端或者錢包的概念。這是什麽?

以太坊客戶端(錢包)

以太坊客戶端,其實我們可以把它理解為壹個開發者工具,它提供了賬戶管理、挖掘、轉賬、智能合約部署和執行等功能。

EVM由以太坊客戶端提供。

Geth是開發以太坊時使用的典型客戶端,基於Go語言開發。Geth提供了壹個交互式命令控制臺,其中包含以太坊的各種功能(API)。我們後面會介紹Geth的用法,這裏先有個概念。

Geth控制臺類似於Chrome瀏覽器開發者工具中的控制臺,但它運行在終端中。

與Geth相比,Mist是壹個以太坊客戶端,具有圖形化的操作界面。

如何部署

智能合約的部署是指將合約字節碼發布到區塊鏈,並使用特定地址來標記合約,該地址稱為合約帳戶。

以太坊有兩種類型的賬戶:

對外帳戶

這種賬戶由私鑰控制(由人控制),不與任何代碼關聯。

合同賬戶

此類賬戶由其合同代碼控制,並有與之相關的代碼。

與比特幣使用UTXO的設計不同,以太坊使用了更簡單的賬戶概念。

對於EVM來說,這兩種類型的賬戶是相同的。

外部賬戶和合約賬戶的區別和聯系如下:外部賬戶可以用自己的私鑰創建和簽署交易,向另壹個外部賬戶或合約賬戶發送消息。

在兩個外部賬戶之間發送消息是壹個價值轉移的過程。但是從外部帳戶到合約帳戶的消息將激活合約帳戶的代碼,允許它執行各種操作(例如轉移令牌、寫入內部存儲、挖掘新令牌、執行某些操作、創建新合約等。).

只有外部賬戶發出指令,合約賬戶才會執行相應的操作。

合約部署是將編譯好的合約字節碼以通過外部賬戶發送交易的形式部署到以太坊區塊鏈上(實際的部署只有在實際的礦工屏蔽掉之後才算成功)。

奔跑

合約部署後,需要調用智能合約的方法時,只需向合約賬戶發送消息(交易),消息觸發後智能合約的代碼將在EVM執行。

氣體

和雲計算類似,占用區塊鏈的資源(無論是簡單的轉移交易還是合同的部署和執行)也需要相應的費用(天下沒有免費的午餐,對吧!)。

以太網車間采用Gas機制計費,Gas也可以看作是壹個工作量單位。智能契約越復雜(計算步驟的數量和類型,占用的內存等。),完成操作需要的氣體就越多。

運行任何特定合同所需的天然氣數量是固定的,這是由合同的復雜程度決定的。

氣價由運行合同的人在提交運行合同的請求時規定,從而確定他願意為這筆交易支付的費用:氣價(以泰國貨幣計價)*氣量。

Gas的目的是限制執行事務所需的工作量,同時為執行付費。當EVM執行壹筆交易時,汽油會按照壹定的規則逐漸消耗掉。無論在哪裏執行,壹旦氣體耗盡,就會觸發異常。當前調用幀所做的所有狀態修改都將被回滾,如果執行後還有氣體留下,這些氣體將被返回到發送方帳戶。

沒有這個限制,就會有人寫壹個永無止境的契約來封殺網絡。

所以實際上(把前面的內容串起來)我們需要壹個有以太幣余額的外部賬戶發起交易(普通交易或者部署運行契約),運行時礦工會收取相應的工作量費用。

億泰方網絡

有焦慮的同學想問,沒有以太坊怎麽開發智能合約?您可以選擇以下方法:

選擇以太坊官網測試網Testnet。

在測試網絡中,我們可以輕松獲得免費的以太網幣,但缺點是初始化節點需要很長時間。

使用私有鏈

創建我們自己的以太網私有測試網絡,也稱為私有鏈,可以作為開發、調試和測試智能合約的測試環境。

通過上述Geth很容易創建自己的測試網絡,在以太坊裏想挖多少就挖多少,也省去了同步正規網絡的整個區塊鏈數據。

使用開發者網絡(模式)

相對於私鏈,在開發者網(模式)下,會自動分配壹個余額較大的開發者賬戶給我們使用。

使用模擬環境

另壹種創建測試網絡的方法是使用testrpc,這是壹種本地內存模擬的以太網環境,開發和調試更加方便快捷。而testrpc可以幫助我們在啟動時用資金創建10個測試賬戶。

當開發壹個契約時,在它通過testrpc中的測試之後,它可以被部署到Geth節點。

更新:testrpc現在已經被合並到Truffle開發框架中,現在被命名為Ganache CLI。

Dapp:分散應用

以太坊社區稱基於智能合約的應用為去中心化應用。如果我們把區塊鏈理解為壹個牢不可破的數據庫,把智能合約理解為壹個處理數據庫的程序,就很容易理解Dapp了。壹個Dapp不僅有智能合約,還需要壹個友好的用戶界面和其他東西。

松露

Truffle是Dapp的開發框架,可以幫助我們處理很多瑣碎的事情,讓我們快速開始編寫代碼-編譯-部署-測試-打包DApp的過程。

摘要

現在來總結壹下。以太坊是壹個平臺,它允許我們通過使用區塊鏈技術方便地開發去中心化的應用程序。在這個應用程序中,我們使用Solidity來編寫與區塊鏈交互的智能合同。合同寫好之後,我們需要在以太坊的客戶端用余額賬戶部署和運行合同(Truffle framework可以幫助我們更好地做這些事情)。為了開發的方便,我們可以使用Geth或者testrpc來搭建壹個測試網絡。

註:本文為了方便大家理解,對壹些概念進行了類比。有些概念嚴格來說並不準確,但我也認為初學者沒必要把每壹個概念都細致準確地掌握。學習是壹個漸進深入的過程。很多時候,我們會發現,過了壹段時間,我們會對同壹件事有不同的理解。