以太坊101:初识dapp

尽管深入理解这种新兴技术的发展变动以及复杂性是一项艰巨的任务,但其实建立以太坊节点、发送和接收交易、交易加密货币以及启动测试环境的过程十分简单,这需要花费一定的时间。本文将向消费者和开发者介绍去中心化应用的生态系统。

在以太坊平台上开发

尽管深入理解这种新兴技术的发展变动以及复杂性是一项艰巨的任务,但其实建立以太坊节点、发送和接收交易、交易加密货币以及启动测试环境的过程十分简单,这需要花费一定的时间。本文将向消费者和开发者介绍去中心化应用的生态系统。

基础的去中心化基础设施栈

(可能略有缺漏)

终端用户如何与去中心化应用交互

如果你只是想发送一笔交易,对于这么一个简单的任务,使用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

点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
以太行星
以太行星
公众号: ETHPlanet , 全球性非盈利以太坊社区组织