以太坊dApp全棧開發教程(引言)


https://zhuanlan.zhihu.com/p/82411709

引言

介紹

在本系列中,我們將構建一個簡單的dApp(分布式應用)。我們會介紹用於構建dApp的所有技術棧和工具。dApp允許任何用戶在以太坊中發起交易

  • 任何擁有以太坊帳戶的用戶都可以按要求在以太坊中發起交易
  • 任何用戶都可以提交帶有證據的交易
  • 交易發起者可以接受支付的履行

前提

1.你是軟件工程師,黑客,了解軟件編程的系統、結構以及基礎知識
2.了解區塊鏈的概念和以太坊的基本知識。如果還不太清楚,沒關系,可以觀看“25分鍾入門以太坊”視頻,閱讀以太坊白皮書,以及ETH 101系列

資料來源:

本系列中所有教程都附帶了代碼示例,你可以在下面的github倉庫找到:
kauri-io/kauri-fullstack-dapp-tutorial-series

dApp開發工具

本文將向你介紹開發一個簡單的dApp所需的相關工具,具體如下:

  • 智能合約編程語言
  • Web3庫
  • 開發框架
  • IDE
  • Development blockchains
  • 以太坊網絡
  • 錢包(密鑰存儲)
  • SaaS / Cloud Infra
  • 數據存儲

智能合約編程語言

智能合約是以字節碼的形式部署在區塊鏈上的,EVM** 編譯器**附帶的任何語言都可用於編寫智能合約。沒人真想寫字節碼!

Solidity

目前,***Solidity ***是為以太坊平台編寫智能合約的首選/最常用語言,因此有很多示例,教程和參考資料。它是智能合約開發人員的首選。
Solidity 是一種受C ++和Javascript影響很深的靜態類型語言,這也節省了開發人員熟悉這些語言的功夫。

文檔:

LLL

***LLL **(**Low-level Lisp-Like Language ***)是編寫智能合約的另一種語言。顧名思義,它是一種相比Solidity 更低級的語言。

LLL 能夠直接轉換為EVM 的操作代碼(Opcode ),開發人員可以直接訪問內存並存儲。

LLL項目頁面的鏈接

Vyper

Vyper是一種還處於測試階段的語言。為了提高智能合約的安全性和可審核性,Vyper 增加了嚴格的規則。

注意: Vyper 仍然是測試軟件,目前不建議用它編寫軟件開發的智能合約。

文檔:

Web3 庫

以太坊節點開放了JSON-RPC API(無狀態輕量級遠程過程調用)協議,客戶端可以使用該協議與節點進行交互。

JSON-RPC 協議提供了一個接口,你能選擇一種語言與以太坊節點進行交互。Web3庫將這一協議封裝了。

在本系列的后面部分,我們將看到如何用web3庫構建一個用戶可以與dApp交互的客戶端/ UI。

下面是web3 庫列表,你可以根據自己最常用的語言選擇版本:

Javascript

WEB3.js

文檔:

ETHERS.js

文檔:

Java

WEB3J

文檔:

Python

WEB3.PY

文檔:

.net

Nethereum

文檔:

開發框架

開發dApp,特別是編寫智能合約時會有很多重復性工作,例如編譯源代碼、生成ABI、測試和部署。開發框架幫你解決了這些麻煩,從而讓你專注於開發dApp 和靈感。

Truffle

基於節點的框架,目前使用最多且維護最頻繁。

文檔:https://truffleframework.com/docs

Embark

基於節點的框架

文檔:

Populous

基於Python的框架

文檔:

就像在學編寫HTML前不要用rail 一樣,當你剛入門智能合約時,先不要着急使用框架,直到你能夠理解這些框架提供的價值。最簡單的就是用Remix()體驗這些語言和想法。

IDE

開發者都有自己最順手的IDE。插件可以在開發dApps時讓你如虎添翼!

REMIX

由以太坊基金會開發和維護的在線***IDE ***。 這個開發環境易於使用,無需安裝和設置。在這可以快速構建原型與體驗智能合約。

ETHERATOM(ATOM PLUGIN)

INTELLIJ-SOLIDITY(INTELLIJ PLUGIN)

SOLIDITY(可視化擴展)

個人版以太坊區塊鏈

適用於開發dApp,尤其是在本地開發環境中編寫智能合約。啟動個人版以太坊區塊鏈后,你可以在上面快速部署合約並運行測試,同時控制鏈的運行方式。

Ganache

作為Truffle Suite 的一部分,ganache 允許你在本地計算機上快速運行個人版以太坊區塊鏈。 它分為兩部分:

  • ganache-cli :正式名稱是***testrpc ***,一個基於Node.js 的以太坊客戶端
  • ganache :基於Node.js 的客戶端前端,它提供了一個區塊鏈瀏覽器,將部署到測試客戶端的交易、區塊與合約可視化。

以太坊網絡

主網mainnet

以太坊的主要網絡,也是生產網絡。ETH在這里有真實價值。

測試網絡

由於這些是測試網絡,ETH在這里沒有真正的法定價值。你可以使用faucet 的鏈接在網上募集測試所需的ETH。

#### Rinkeby
僅支持Geth 客戶端的測試網絡,大概是最可靠和最穩定的

https://faucet.rinkeby.io

#### Kovan

僅支持parity 客戶端的測試網絡

#### Ropsten

基於POW 機制的基礎以太坊測試網絡。這個網絡大概是這3種里最不穩定的

https://faucet.ropsten.be

dApp瀏覽器

Metamask

Metamask是一個加密錢包,允許你在瀏覽器中運行以太坊dApp而無需運行完整以太坊節點。

文檔:

Toshi(Coinbase Wallet)

可以存儲多種不同Token 的加密錢包。

Cipher 瀏覽器

以太坊的移動Web3 dApp瀏覽器和錢包。

SaaS / Cloud Infra

**Infura **

公共托管的以太坊節點集群,通過API提供對其節點的訪問。

文檔:

Graph

一套使用GraphQL構建dApp的協議。

數據存儲

**IPFS **

IPFS(InterPlanetary File System)是用於分布式存儲文件的對等協議。可以把它想象成一個基於bt 和git* *思想、內容可尋址且不可篡改的的文件系統。

文檔:

SWARM

***Swarm ***是在以太坊生態系統中開發的分布式存儲網絡,類似於IPFS。但它使用了不同的協議,通過提供激勵層,以鼓勵節點無限期地持久存儲數據。

文檔:

閱讀Swarm和IPFS的對比()

以太坊開發者工具列表

***Consensys Labs **和以太坊開發社區一直在整合開源工具、框架和組件,以幫助開發者在以太坊上大展身手。在你的**dApp ***開發之旅中,這將是一個有用的資源!

ConsenSysLabs/以太坊開發工具列表


免責聲明!

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



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