又更新啦!!最近看的文章发现自己越来越了解区块链了,加油 继续学习
去中心化APP(DAPP)
在以太坊平台进行开发
建立一个Ethereum节点,发送和接收交易,交易加密货币,并将测试环境上线是相对容易的,尽管了解这样一个新生技术的移动部件和复杂性是一项艰巨的任务。这需要时间。本节将向用户和开发者介绍去中心化应用生态系统。
基本的去中心化基础架构堆栈
bafybeibvksjpruccgxgihtrk7uqnhk64jhj4sspvptcppfitwcpv3v5zje.ipfs.infura-ipfs.io.png(non-exhaustive)
终端用户如何与您的分散式应用进行交互
使用ethereumjs来执行原始交易,对于这样一个简单的任务来说,是一个代码繁杂的过程,并不是很多用户会愿意为每一笔交易都这样做。
MetaMask是一个钱包,它的作用是改善用户在Ethereum网络上的交易体验,同时保护终端用户的私钥。
让我们使用MetaMask发送一个简单的交易。首先,如果你还没有在你的Chrome或Firefox浏览器中添加该应用,请继续在以下链接中进行操作。https://metamask.io/然后通过步骤设置密码。
以上是MetaMask终端用户发送交易时看到的情况。这是无比直观的。
在左上角你可以看到,这笔交易被广播到了Rinkeby testnet上。18.750ETH不是真实的以太坊,因为它是用Rinkeby的龙头获得的。
Web3库
Web3.js是与Ethereum兼容的JavaScript API,它实现了通用JSON RPC规范。Web3.js库可作为节点模块在npm上使用,对于浏览器和组件,它可作为嵌入式js使用,还可以作为meteor.js包使用。Web3js通过RPC与本地节点或测试节点进行通信。
虽然Web3.js是事实上的JavaScript Ethereum API,但开发者可以使用大量的其他库和工具。其中有web3j(一个更轻量级、反应式安全的Java和Android API)、ethereum-js(我们上面用来执行原始交易的简单库)、Web3.py(Python库)、eth.js(由Nick Dodson维护)等。
以太坊可以被浏览器、服务器以及一般任何可以正确解释协议的东西访问。客户端浏览器界面的一个例子是ConsenSys的MetaMask浏览器扩展,它使用Web3.js API。服务器端服务的一个例子是 etherscan.io,在ethereum社区中,许多人将这个服务看作是关于ethereum地址、地址余额和智能合约信息的一个普遍可靠的来源。
开发者环境
本节简要介绍了以太坊生态系统中的各种集成开发环境。 尽管是前沿技术,但强大的开发人员队伍和各种可用的开源工具可帮助开发和部署安全智能合约。
以太坊开发者可以使用多种开发环境和框架。本文档将重点介绍比较流行和广为人知的框架。刚开始的时候,Remix和MetaMask将作为一个很好的跳板,进入去中心化应用开发。
Zeppelin开源智能合约安全框架
Zeppelin是用于开发安全智能合约的开源框架,可为用户提供一系列可重用的,经过社区审查的智能合约,以帮助用户开发安全dapp。
如果可以使用一些选项,通常建议在开发任何类型的应用程序时,应重用现有的经过验证和测试的开放源代码。在Ethereum领域,应该适当注意这个建议,因为智能合约一旦写入区块链,本质上是不可改变的。在不知情的情况下,一个写入主网并在实际生产环境中运行的有缺陷的智能合约可以而且经常被恶意行为者利用,可能会导致资金损失或锁定或无法运行的智能合约。OpenZeppelin看到了这一需求,并提供了一个可以被solidity继承的安全智能合约库。
让我们安装OpenZeppelin开源框架,并探索其功能。
$ npm install zeppelin-solidity
利用Solidity的继承性,我们可以编辑我们的智能合约,继承Zeppelin的开源合约,然后重新编译并迁移回区块链。
pragma solidity ^0.4.17;
Import ‘zeppelin-solidity/contracts/token/StandardToken.sol';’
contract NameOfMyProject is StandardToken {
}
例如'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,您可以启动一个完整的以太坊网络,包括一个引导节点,密封器(或也称为验证器),网络统计信息,钱包,仪表板,甚至是分配ether的水龙头。
集成开发环境通常都具有相同的目的:通过允许您编译,迁移,部署和测试智能合约来简化开发经验。 但是,关于如何构建去中心化应用程序,各种开发环境都有自己的风格和见解。 了解您的个人开发流程和工作风格后,值得花一些时间来回顾一下我们在下面列出的一些重要环境的细微差别,以寻找能够满足您的开发需求的最佳工具。
附加信息
开发环境/插件:
- ConsenSys Ethereum开发人员工具列表-“用于在Ethereum上开发应用程序的可用工具,组件,模式和平台的指南。” https://github.com/ConsenSys/ethereum-developer-tools-list
- Embark-主要用于非信任应用程序的开发环境; 开发前端应用程序更容易,但对后端的支持却大大减少。 对于打算构建混合前端/后端dapp的开发人员而言,它可能不是最佳选择。https://embark.readthedocs.io/en/2.5.2/
- IntelliJ-Solidity: https://plugins.jetbrains.com/plugin/9475-intellij-solidity
- VisualStudio: https://marketplace.visualstudio.com/items?itemName=ConsenSys.Solidity
- 适用于Atom编辑器的EtherAtom软件包: https://github.com/0mkara/etheratom
Linters:
- Solhint: https://github.com/protofire/solhint
- 以太坊Solidity语言用于Visual Studio代码: http://juan.blanco.ws/solidity-contracts-in-visual-studio-code/
网友评论