1. 主页
  2. 文档
  3. 以太坊dApp全栈开发教程...
  4. 引言

引言

全栈dApp教程系列-简介

介绍

在本系列中,我们将构建一个简单的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影响很深的静态类型语言,这也节省了开发人员熟悉这些语言的功夫。

https://github.com/ethereum/solidity

文档:http://solidity.readthedocs.io/en/v0.4.24/

LLL

***LLL **(**Low-level Lisp-Like Language ***)是编写智能合约的另一种语言。顾名思义,它是一种相比Solidity 更低级的语言。

LLL 能够直接转换为EVM 的操作代码(Opcode ),开发人员可以直接访问内存并存储。

LLL项目页面的链接

Vyper

Vyper是一种还处于测试阶段的语言。为了提高智能合约的安全性和可审核性,Vyper 增加了严格的规则。

注意:Vyper 仍然是测试软件,目前不建议用它编写软件开发的智能合约。

https://github.com/ethereum/vyper

文档:https://vyper.readthedocs.io/en/latest/installing-vyper.html

Web3 库

以太坊节点开放了JSON-RPC API(无状态轻量级远程过程调用)协议,客户端可以使用该协议与节点进行交互。

JSON-RPC 协议提供了一个接口,你能选择一种语言与以太坊节点进行交互。Web3库将这一协议封装了。

在本系列的后面部分,我们将看到如何用web3库构建一个用户可以与dApp交互的客户端/ UI。

https://github.com/ethereum/wiki/wiki/JSON-RPC

下面是web3 库列表,你可以根据自己最常用的语言选择版本:

Javascript

WEB3.js

https://github.com/ethereum/web3.js/

文档:https://web3js.readthedocs.io/en/1.0/

ETHERS.js

https://github.com/ethers-io/ethers.js/

文档:https://docs.ethers.io/ethers.js/html/

Java

WEB3J

https://github.com/web3j/web3j

文档:https://docs.web3j.io/

Python

WEB3.PY

https://github.com/ethereum/web3.py

文档:https://web3py.readthedocs.io/en/stable/

.net

Nethereum

https://github.com/Nethereum/Nethereum

文档:https://nethereum.readthedocs.io/en/latest/

开发框架

开发dApp,特别是编写智能合约时会有很多重复性工作,例如编译源代码、生成ABI、测试和部署。开发框架帮你解决了这些麻烦,从而让你专注于开发dApp 和灵感。

Truffle

基于节点的框架,目前使用最多且维护最频繁。

https://truffleframework.com/

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

Embark

基于节点的框架

https://embark.status.im/

文档:https://embark.status.im/docs/

Populous

基于Python的框架

https://github.com/ethereum/populus

文档:https://populus.readthedocs.io/en/latest/

就像在学编写HTML前不要用rail 一样,当你刚入门智能合约时,先不要着急使用框架,直到你能够理解这些框架提供的价值。最简单的就是用Remix(https://remix.ethereum.org/)体验这些语言和想法。

IDE

开发者都有自己最顺手的IDE。插件可以在开发dApps时让你如虎添翼!

REMIX

https://remix.ethereum.org/

由以太坊基金会开发和维护的在线***IDE ***。 这个开发环境易于使用,无需安装和设置。在这可以快速构建原型与体验智能合约。

ETHERATOM(ATOM PLUGIN)

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

INTELLIJ-SOLIDITY(INTELLIJ PLUGIN)

https://github.com/intellij-solidity/intellij-solidity

SOLIDITY(可视化扩展)

https://marketplace.visualstudio.com/items?itemName=JuanBlanco.solidity

个人版以太坊区块链

适用于开发dApp,尤其是在本地开发环境中编写智能合约。启动个人版以太坊区块链后,你可以在上面快速部署合约并运行测试,同时控制链的运行方式。

Ganache

作为Truffle Suite 的一部分,ganache 允许你在本地计算机上快速运行个人版以太坊区块链。 它分为两部分:

  • ganache-cli :正式名称是***testrpc ***,一个基于Node.js 的以太坊客户端
  • ganache :基于Node.js 的客户端前端,它提供了一个区块链浏览器,将部署到测试客户端的交易、区块与合约可视化。

https://truffleframework.com/ganache

以太坊网络

主网mainnet

以太坊的主要网络,也是生产网络。ETH在这里有真实价值。

测试网络

由于这些是测试网络,ETH在这里没有真正的法定价值。你可以使用faucet 的链接在网上募集测试所需的ETH。

#### Rinkeby
仅支持Geth 客户端的测试网络,大概是最可靠和最稳定的

https://faucet.rinkeby.io

#### Kovan

仅支持parity 客户端的测试网络

https://github.com/kovan-testnet/faucet

#### Ropsten

基于POW 机制的基础以太坊测试网络。这个网络大概是这3种里最不稳定的

https://faucet.ropsten.be

dApp浏览器

Metamask

Metamask是一个加密钱包,允许你在浏览器中运行以太坊dApp而无需运行完整以太坊节点。

https://metamask.io/

文档:https://metamask.github.io/metamask-docs/

Toshi(Coinbase Wallet)

可以存储多种不同Token 的加密钱包。

https://www.toshi.org/

Cipher 浏览器

以太坊的移动Web3 dApp浏览器和钱包。

https://www.cipherbrowser.com/

SaaS / Cloud Infra

**Infura **

公共托管的以太坊节点集群,通过API提供对其节点的访问。

https://infura.io/

文档:https://infura.io/docs

Graph

一套使用GraphQL构建dApp的协议。
https://thegraph.com/

数据存储

**IPFS **

IPFS(InterPlanetary File System)是用于分布式存储文件的对等协议。可以把它想象成一个基于btgit* *思想、内容可寻址且不可篡改的的文件系统。

https://ipfs.io/

文档:https://docs.ipfs.io/

SWARM

***Swarm ***是在以太坊生态系统中开发的分布式存储网络,类似于IPFS。但它使用了不同的协议,通过提供激励层,以鼓励节点无限期地持久存储数据。

https://swarm-gateways.net/bzz:/theswarm.eth(https://swarm-gateways.net/bzz:/theswarm.eth/))

文档:https://swarm-guide.readthedocs.io/en/latest/introduction.html

阅读Swarm和IPFS的对比(https://github.com/ethersphere/go-ethereum/wiki/IPFS-&-SWARM)

以太坊开发者工具列表

***Consensys Labs **和以太坊开发社区一直在整合开源工具、框架和组件,以帮助开发者在以太坊上大展身手。在你的**dApp ***开发之旅中,这将是一个有用的资源!

ConsenSysLabs/以太坊开发工具列表

译者:xi

我们要如何帮助您?