當前位置:股票大全官網 - 財經新聞 - 以太坊是什麽?以太坊發展指南。

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

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

許多學生壹直渴望加入區塊鏈開發團隊,但他們覺得他們不能開始。本文將基於以太坊平臺,以通俗的方式介紹以太坊開發中涉及的晦澀概念,讓您輕松入門。

以太坊是什麽?

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

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

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

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

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

智能合同

什麽是智能合約

以太坊研討會上的程序稱為智能合約,它是代碼和數據(狀態)的集合。

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

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

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

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

編程語言:可靠性

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

Solidity是壹種類似於JavaScript的語言,用於開發合約並將其編譯為Ethereum虛擬機的字節碼。

還有壹種看起來像Python的智能合約開發語言:Serpent,但我建議您仍然使用Solidity。

Browser-Solidity是瀏覽器的壹個Solidity IDE。可以點壹下看看。稍後,我們將在更多的文章中介紹語言的堅固性。

運營環境:EVM

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

堅固性對於EVM就像JVM壹樣,因此每個人都可以很容易地理解它。

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

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

合同的編制

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

合同的部署

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

以太坊客戶端(錢包)

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

EVM由以太坊客戶端提供。

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

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

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

如何部署

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

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

對外帳戶

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

合同賬戶

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

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

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

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

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

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

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

奔跑

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

氣體

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

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

運行任何特定合同所需的Gas數量是固定的,這是由合同的復雜性決定的。

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

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

如果沒有這種限制,就會有人寫壹份無休止的合同來封鎖網絡。

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

億泰方網絡

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

選擇以太坊官方網站測試網絡Testnet。

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

使用私有鏈

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

通過上述Geth很容易創建您自己的測試網絡,並且您可以在Ethereum中挖掘任意多的數據,這也消除了同步正式網絡的整個區塊鏈數據的需要。

使用開發者網絡(模式)

與私有鏈相比,在開發者網絡(模式)下,將自動分配壹個余額較大的開發者帳戶供我們使用。

使用模擬環境

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

在開發合約時,可以在通過testrpc中的測試後將其部署到Geth節點。

更新:testrpc現在已被納入Truffle開發框架,現在命名為Ganache CLI。

Dapp:分散式應用

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

松露

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

摘要

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

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