以太坊開發入門


相信很多同學都跟我一樣,是跟着深入淺出區塊鏈學習的。
今天的學習內容:以太坊。

以太坊(Ethereum)是一個建立在區塊鏈技術之上, 去中心化應用平台。它允許任何人在平台中建立和使用通過區塊鏈技術運行的去中心化應用。在這個應用中,使用 Solidity 來編寫和區塊鏈交互的智能合約,合約編寫好后之后,我們需要用以太坊客戶端用一個有余額的賬戶去部署及運行合約。

為了開發方便,可以用 Geth 或 Ganache 來搭建一個測試網絡。

智能合約

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

編程語言:Solidity

智能合約現在的主要編程語言是 Solidity 和 Vyper ,Solidity 更為成熟一些,Solidity 合約文件擴展名是 .sol 。
Solidity 是一門編譯型語言,代碼被編譯為以太坊虛擬機字節碼之后,再部署到以太坊網絡。以太坊為我們提供了很好的工具來完成這項工作,比如:Remix 就是用來開發、編譯、部署智能合約的 IDE,它還是一個基於瀏覽器的 Web IDE。
附:從簡單的智能合約例子開始學習solidity
  Solidity 手冊

運行環境:EVM

EVM(Ethereum Virtual Machine)以太坊虛擬機 用來執行以太坊上的交易,提供智能合約的運行環境。
附:深入淺出虛擬機

合約的編譯

以太坊虛擬機上運行的是合約的字節碼形式,需要我們在部署之前先對合約進行編譯,可以選擇 Remix 或 solc 編譯器。
附:搭建智能合約開發環境 Remix IDE 及使用

合約的部署

在以太坊上開發應用時,常常要使用到以太坊客戶端(錢包)。平時我們在開發中,一般不接觸到客戶端或錢包的概念,它是什么呢?

以太坊客戶端(錢包)
以太坊客戶端,其實我們可以把它理解為一個開發者工具,它提供賬戶管理、挖礦、轉賬、智能合約的部署和執行等等功能。
Geth 是典型的開發以太坊時使用的客戶端,基於 Go 語言開發。 Geth 提供了一個交互式命令控制台,通過命令控制台中包含了以太坊的各種功能(API)。
附:Geth 控制台使用及 Web3.js 使用實戰

如何部署
智能合約的部署是指把合約字節碼發布到區塊鏈上,並使用一個特定的地址來標示這個合約,這個地址稱為合約賬戶。合約部署就是將編譯好的合約字節碼通過外部賬號發送交易的形式部署到以太坊區塊鏈上(由實際礦工出塊之后,才真正部署成功)。
附:用 Loom SDK 搭建的以太坊側鏈並部署智能合約
  Truffle 教程:教你開發、部署第一個去中心化應用 (Dapp) - 寵物商店

運行
合約部署之后,當需要調用這個智能合約的方法時只需要向這個合約賬戶發送消息(交易)即可,通過消息觸發后智能合約的代碼就會在 EVM 中執行了。

Gas
以太坊上用 Gas 機制來計費,Gas 也可以認為是一個工作量單位,智能合約越復雜(計算步驟的數量和類型,占用的內存等),用來完成運行就需要越多 Gas。
附:以太坊中的 gas (汽油) 是什么意思?

以太坊網絡

沒有以太幣進行智能合約的開發:

選擇以太坊官網測試網絡 Testnet
測試網絡中,可以很容易獲得免費的以太幣,缺點是需要發很長時間初始化節點。

使用私有鏈
創建自己的以太幣私有測試網絡,通常也稱為私有鏈,用它來作為一個測試環境來開發、調試和測試智能合約。

使用開發者網絡 (模式)
相比私有鏈,開發者網絡 (模式) 下,會自動分配一個有大量余額的開發者賬戶給我們使用。

使用模擬環境
另一個創建測試網絡的方法是使用 Ganache,Ganache 是普通的應用程序,它在本地使用內存模擬的一個以太坊區塊鏈環境,對於開發調試來說,更方便快捷。 Ganache 會在啟動時幫我們創建 10 個存有資金的測試賬戶。
進行合約開發時,可以在 Ganache 中測試通過后,再部署到 Geth 節點中去。

DApp:去中心化的應用程序

基於智能合約的應用稱為去中心化的應用程序 (Decentralized App)。如果我們把區塊鏈理解為一個不可篡改的數據庫,智能合約理解為和數據庫打交道的程序,那就很容易理解 DApp 了,一個 DApp 不單單有智能合約(相當於應用的后台),比如還需要有一個友好的用戶界面。

Truffle
Truffle 是一個非常流行 DApp 開發框架,他可以幫我們處理掉大量無關緊要的小事情,讓我們可以迅速開始寫代碼 - 編譯 - 部署 - 測試 - 打包 DApp 這個流程。

附:智能合約開發環境搭建及 Hello World 合約

獲益良多,感謝深入淺出區塊鏈


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM