以太坊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/以太坊开发工具列表

原文地址:https://www.cnblogs.com/dhcn/p/14525178.html