儘管深入理解這種新興技術的發展變動以及複雜性是一項艱鉅的任務,但其實建立以太坊節點、發送和接收交易、交易加密貨幣以及啓動測試環境的過程十分簡單,這需要花費一定的時間。本文將向消費者和開發者介紹去中心化應用的生態系統。

在以太坊平臺上開發

儘管深入理解這種新興技術的發展變動以及複雜性是一項艱鉅的任務,但其實建立以太坊節點、發送和接收交易、交易加密貨幣以及啓動測試環境的過程十分簡單,這需要花費一定的時間。本文將向消費者和開發者介紹去中心化應用的生態系統。

**基礎的去中心化基礎設施棧 **

(可能略有缺漏)

##終端用戶如何與去中心化應用交互

如果你只是想發送一筆交易,對於這麼一個簡單的任務,使用ethereumjs實在是大炮打蒼蠅,沒有用戶會願意爲了一筆交易執行這麼繁雜的操作。

MetaMask是一個錢包,它可以改善用戶在以太坊網絡上進行交易的體驗,同時保護終端用戶的私鑰。

我們不妨使用MetaMask來發送一筆簡單的交易。首先,如果你還未將應用程序添加到Chrome或Firefox瀏覽器中,請進入官網鏈接:https://metamask.io/,然後逐步進行操作並設置密碼。

以上是MetaMask終端用戶在發送交易時看到的內容,這個界面非常直觀。

在左上角,你可以看到這筆交易已經廣播到Rinkeby測試網上。18.750 ETH只是測試網以太幣,它是通過Rinkeby的水龍頭@https://faucet.rinkeby.io/獲得的。

Web3庫

Web3.js是與以太坊兼容的JavaScript API,它實現了通用的JSON RPC規範。Web3.js庫在npm上可以作爲節點模塊使用,對於瀏覽器以及其他組件,它可以作爲可嵌入js,並進一步作爲meteor.js包使用。Web3.js通過RPC與本地節點或測試節點進行通信。

儘管Web3.js是現實中最常用的JavaScript以太坊API,但是開發人員也可以訪問其他庫和工具。其中包括:web3.j(更輕便,類型安全的Java和Android API),ethereum-js(上述用來執行原始交易的簡單庫),Web3.py(Python庫)和eth.js(由Nick Dodson維護)以及其他工具。

以太坊可以被瀏覽器、服務器以及其他可以正確解釋協議的任何東西訪問。一個關於客戶端瀏覽器界面的例子是ConsenSys的MetaMask瀏覽器擴展,它使用的是Web3.js API。另外一個關於服務器端服務的例子是etherscan.io,這個服務在以太坊社區中被許多用戶視爲以太坊地址、地址餘額以及智能合約信息的可靠來源。

開發環境

本節將簡單介紹以太坊生態系統中的各種集成開發環境。儘管這是一種前沿的技術,但強大的開發團隊和各種可用的開源工具將有助於開發和部署安全的智能合約。

以太坊開發者可以使用的開發環境和框架有好幾種,本文將重點介紹最流行和最廣爲人知的框架。首先,Remix和MetaMask是開發去中心化應用的最佳選擇。

Zeppelin開源智能合約安全框架

Zeppelin是一個用於開發安全的智能合約的開源框架,其爲用戶提供一系列可重用且經過社區審計的智能合約,以幫助用戶開發安全的dapp。

通常而言,我們都會建議,在有選擇的前提下,開發任何類型的應用程序時都應重用現有的經過驗證和測試的開源代碼。在以太坊領域中,這個建議應予以適當的重視,因爲一旦將智能合約寫入區塊鏈,它就具有固有的不變性。寫入主網並在實時生產環境中運行的、缺陷未被發現的智能合約經常被惡意利用,其結果可能導致資金鎖定、丟失或合約失效。OpenZeppelin滿足了這一需求,並提供了可以通過Solidity繼承的安全智能合約庫。

我們不妨先安裝OpenZeppelin開源框架並探索其功能:$ npm install zeppelin-solidity使用Solidity的繼承,我們可以編輯智能合約以繼承Zeppelin的開源合約,然後重新編譯並遷移回區塊鏈:

現在,我們的示例“NameOfMyProject”合約將繼承所有“StandardToken.sol”變量和函數。有關Zeppelin的官方文檔,請參考:https://zeppelin-solidity.readthedocs.io/en/latest/

補充閱讀:

Solidity文檔:

https://solidity.readthedocs.io/en/develop/index.html

Zeppelin 文檔:

https://github.com/OpenZeppelin/zeppelin-solidity

Truffle的Solidity測試文檔:

http://truffleframework.com/docs/getting_started/solidity-tests

爲你的去中心化應用需求搭建正確的開發環境

最後,隨着你熟悉Remix,並進入Truffle或者其他開發環境,你可能會發現你需要快速部署可定製的以太坊網絡的功能。如果你需要這項功能,那麼Puppeth會是比較合適的工具。通過使用Puppeth,你可以啓動一個完整的以太坊網絡,包括引導節點(Bootnode)、打包節點(也稱爲驗證節點)、網絡統計信息、錢包、儀表板,甚至分配gas的水龍頭。

集成開發環境的目的大致相當:通過允許你編譯、遷移、部署和測試智能合約來簡化開發流程。但是,具體到如何構建去中心化應用,每一種開發環境都有各自的風格和見解。在瞭解你個人的開發流程和工作風格後,你值得花費一些時間來回顧一下我們在下面列出的一些重要環境的細微差異,以尋找能夠滿足你的開發需求的最佳工具。

附加信息

開發環境/插件:

1. ConsenSys編寫的以太坊開發工具列表《在以太坊上開發應用程序的工具、組件、模式和平臺指南》:

https://github.com/ConsenSys/ethereum-developer-tools-list

2. Embark:主要針對無需信任的應用程序的開發環境。其開發前端應用更加容易,但對後端的支持比較弱。對於打算構建混合前端/後端dapp的開發者而言,它可能不是最佳選擇:

https://embark.readthedocs.io/en/2.5.2/

3. IntelliJ-Solidity:

https://plugins.jetbrains.com/plugin/9475-intellij-solidity

4. Visual Studio:

https://marketplace.visualstudio.com/itemsitemName=ConsenSys.Solidity

5. 適用於Atom編輯器的EtherAtom軟件包:

https://github.com/0mkara/etheratom

Linter 工具:

1.Solhint:

https://github.com/protofire/solhint

2.適用於VisualStudio代碼的以太坊Solidity語言:

http://juan.blanco.ws/solidity-contracts-in-visual-studio-code/

本文翻譯:Jacky

本文校對:Jacky/Vivian

原文作者:Wil

原文鏈接:

https://kauri.io/ethereum-101-part-7-decentralized-apps/b282e90cb260459fb8a8cc6e24ae34fa/a

在以太坊平臺上開發

儘管深入理解這種新興技術的發展變動以及複雜性是一項艱鉅的任務,但其實建立以太坊節點、發送和接收交易、交易加密貨幣以及啓動測試環境的過程十分簡單,這需要花費一定的時間。本文將向消費者和開發者介紹去中心化應用的生態系統。

基礎的去中心化基礎設施棧

(可能略有缺漏)

終端用戶如何與去中心化應用交互

如果你只是想發送一筆交易,對於這麼一個簡單的任務,使用ethereumjs實在是大炮打蒼蠅,沒有用戶會願意爲了一筆交易執行這麼繁雜的操作。

MetaMask是一個錢包,它可以改善用戶在以太坊網絡上進行交易的體驗,同時保護終端用戶的私鑰。

我們不妨使用MetaMask來發送一筆簡單的交易。首先,如果你還未將應用程序添加到Chrome或Firefox瀏覽器中,請進入官網鏈接: https://metamask.io/,然後逐步進行操作並設置密碼

以上是MetaMask終端用戶在發送交易時看到的內容,這個界面非常直觀。

在左上角,你可以看到這筆交易已經廣播到Rinkeby測試網上。18.750 ETH只是測試網以太幣,它是通過Rinkeby的水龍頭@ https://faucet.rinkeby.io/獲得的

Web3庫

Web3.js是與以太坊兼容的JavaScript API,它實現了通用的JSON RPC規範。Web3.js庫在npm上可以作爲節點模塊使用,對於瀏覽器以及其他組件,它可以作爲可嵌入js,並進一步作爲meteor.js包使用。Web3.js通過RPC與本地節點或測試節點進行通信。

儘管Web3.js是現實中最常用的JavaScript以太坊API,但是開發人員也可以訪問其他庫和工具。其中包括:web3.j(更輕便,類型安全的Java和Android API),ethereum-js(上述用來執行原始交易的簡單庫),Web3.py(Python庫)和eth.js(由Nick Dodson維護)以及其他工具。

以太坊可以被瀏覽器、服務器以及其他可以正確解釋協議的任何東西訪問。一個關於客戶端瀏覽器界面的例子是ConsenSys的MetaMask瀏覽器擴展,它使用的是Web3.js API。另外一個關於服務器端服務的例子是etherscan.io,這個服務在以太坊社區中被許多用戶視爲以太坊地址、地址餘額以及智能合約信息的可靠來源。

開發環境

本節將簡單介紹以太坊生態系統中的各種集成開發環境。儘管這是一種前沿的技術,但強大的開發團隊和各種可用的開源工具將有助於開發和部署安全的智能合約。

以太坊開發者可以使用的開發環境和框架有好幾種,本文將重點介紹最流行和最廣爲人知的框架。首先,Remix和MetaMask是開發去中心化應用的最佳選擇。

Zeppelin開源智能合約安全框架

Zeppelin是一個用於開發安全的智能合約的開源框架,其爲用戶提供一系列可重用且經過社區審計的智能合約,以幫助用戶開發安全的dapp。

通常而言,我們都會建議,在有選擇的前提下,開發任何類型的應用程序時都應重用現有的經過驗證和測試的開源代碼。在以太坊領域中,這個建議應予以適當的重視,因爲一旦將智能合約寫入區塊鏈,它就具有固有的不變性。寫入主網並在實時生產環境中運行的、缺陷未被發現的智能合約經常被惡意利用,其結果可能導致資金鎖定、丟失或合約失效。OpenZeppelin滿足了這一需求,並提供了可以通過Solidity繼承的安全智能合約庫。

我們不妨先安裝OpenZeppelin開源框架並探索其功能:$ npm install zeppelin-solidity使用Solidity的繼承,我們可以編輯智能合約以繼承Zeppelin的開源合約,然後重新編譯並遷移回區塊鏈:

現在,我們的示例“NameOfMyProject”合約將繼承所有“StandardToken.sol”變量和函數。有關Zeppelin的官方文檔,請參考: https://zeppelin-solidity.readthedocs.io/en/latest/

補充閱讀:

Solidity文檔:

https://solidity.readthedocs.io/en/develop/index.html

Zeppelin 文檔:

https://github.com/OpenZeppelin/zeppelin-solidity

Truffle的Solidity測試文檔:

http://truffleframework.com/docs/getting_started/solidity-tests

爲你的去中心化應用需求搭建正確的開發環境

最後,隨着你熟悉Remix,並進入Truffle或者其他開發環境,你可能會發現你需要快速部署可定製的以太坊網絡的功能。如果你需要這項功能,那麼Puppeth會是比較合適的工具。通過使用Puppeth,你可以啓動一個完整的以太坊網絡,包括引導節點(Bootnode)、打包節點(也稱爲驗證節點)、網絡統計信息、錢包、儀表板,甚至分配gas的水龍頭。

集成開發環境的目的大致相當:通過允許你編譯、遷移、部署和測試智能合約來簡化開發流程。但是,具體到如何構建去中心化應用,每一種開發環境都有各自的風格和見解。在瞭解你個人的開發流程和工作風格後,你值得花費一些時間來回顧一下我們在下面列出的一些重要環境的細微差異,以尋找能夠滿足你的開發需求的最佳工具。

附加信息

開發環境/插件:

1. ConsenSys編寫的以太坊開發工具列表《在以太坊上開發應用程序的工具、組件、模式和平臺指南》:

https://github.com/ConsenSys/ethereum-developer-tools-list

2. Embark:主要針對無需信任的應用程序的開發環境。其開發前端應用更加容易,但對後端的支持比較弱。對於打算構建混合前端/後端dapp的開發者而言,它可能不是最佳選擇:

https://embark.readthedocs.io/en/2.5.2/

3. IntelliJ-Solidity:

https://plugins.jetbrains.com/plugin/9475-intellij-solidity

4. Visual Studio:

https://marketplace.visualstudio.com/itemsitemName=ConsenSys.Solidity

5. 適用於Atom編輯器的EtherAtom軟件包:

https://github.com/0mkara/etheratom

Linter 工具:

1.Solhint:

https://github.com/protofire/solhint

2.適用於VisualStudio代碼的以太坊Solidity語言:

http://juan.blanco.ws/solidity-contracts-in-visual-studio-code/

本文翻譯:Jacky

本文校對:Jacky/Vivian

原文作者:Wil

原文鏈接:

https://kauri.io/ethereum-101-part-7-decentralized-apps/b282e90cb260459fb8a8cc6e24ae34fa/a

本文參與登鏈社區寫作激勵計劃 ,好文好收益,歡迎正在閱讀的你也加入。

  • 發表於 15分鐘前
  • 閱讀 ( 5 )
  • 學分 ( 0 )
  • 分類:以太坊
相關文章