以太坊智能合约编程入门(二)

in #cn7 years ago (edited)

(续)

第二部分。dapp框架,工具与工作流

dapp构建框架

你可以用上面说的工具来开发,但是有些开发人员以及开发了dapp框架,这样开发过程就更简单了。

truffle 和embark。我一开始用的是truffle.truffle做了很多脏活累活,这样你就能轻松地开发dapp了。另一个相似的框架是embark。我是只用truffle,但是这两个阵营中都有不少成功的dapp开发者。还有一些其他的框架:dapplepopulus

meteor。另一个很多dapp开发者使用的工具包括web3.js + meteor,meteor是一个通用的webapp框架。在这篇文章里有很多关于这些工具的讨论和最佳实践总结。

api.BlockApps.net开发了一套RESTful api,基于他们自己运行的Haskell节点,这样就能节省你的时间了,你不用自己再去运行一个本地的以太坊节点。这有点背离了dapp完全去中心化的模式,但是,如果无法在本地运行以太坊节点的话,这个方法就很有用。比如,如果你的用户不会在本地运行以太坊节点的话,但是你又想服务这部分用户,那么使用这种方式,他们只需要一个web浏览器或是移动设备就可以了。blockapp有一个命令行工具,叫bloc,创建了开发者账号之后可以使用。

智能合约IDE

IDE 这里有一个用来开发以太坊智能合约的mix ide。我还没用过,不过将来会试试。

浏览器IDE solidity real-time 编译器cosmo都能在浏览器上编译你的智能合约。一旦你的合约能够运行了,你就可以往上面添加ui,然后打包成一个dapp,这些都是truffle的工作,我们将在后面的章节中介绍。

另一个强大的浏览器ide是 Ether.Camp。这个ide有一个沙盒测试网络,并且能自动生成gui,方便测试。当你准备好部署你的半真实的合约的时候,可以使用他们的测试网络,来确认你的合约能如期的运行。

示例合约和dapp 可以在github上搜索dapp 或.sol文件,看看别人都做了哪些有趣的东西,也可以看看别人是怎么做的。这里有一个dapp的列表:dapps.ethercasts.com,虽然里面的有些内容已经过时了。 Ether.fund/contracts 也有些solidity和serpent合约的例子,但是不确定这些项目都经过测试了。

部署智能合约工作流

这个工作流是:

1 开启一个以太坊节点(geth 或 testrpc 或 ethersim)

2 使用solc 编译你的solidity合约,得到二进制文件

3 把编译好的合约部署到网络上(这一步需要消耗eth,并且使用你的节点默认钱包地址对合约进行签名,或者你可以指定其他的地址),然后得到合约的区块链地址和abi(一种json文件,代表了你的编译合约的变量,事件,方法)

4 使用web3.js 的javascript api调用合约里的内容,进行交互(这一步或许也要消耗eth,取决于invocation的类型)

如图:

img

你可以构建一个带ui的dapp,用户可以在上面部署合约,然后使用(图中的第一步到第四步)。或者你的dapp可以假设用户的合约已经部署了,然后再开始ui工作流(图中的第六步)。

第三部分 编程

使用truffle进行测试

对于智能合约的测试驱动开发模式来说,truffle是一个很好的工具,强烈推荐使用。而且,在使用javascript编写promises,异步回调的时候,truffle也很有用。promises有点像是:”做这个,然后当那边完成的时候,再做那个,当那个完成的时候,再做其他的。。。。而且在做这些事的时候不要让我们一直在等待,好吧?“truffle使用一个js promises框架, Pudding—这是基于web3.js的框架。

交易时间 promieses对于dapp十分有用,因为交易需要挖矿来计入到区块链中(在以太坊中,这需要12-15秒)。虽然在测试网络中不需要这么久,但是在真实的网络中可能需要的时间更久,或者检查后发现该交易并没有发生(有可能你的交易的gas不够了,或者是被打包到了一个被隔离的区块上去了)。

所以,让我们先copy一份简单的智能合约,然后写个测试。

使用truffle

首先确保你已经 1. 安装了solc,2.下载了testrpc(这个你需要python和pip。如果你不熟悉python,那么你需要virtualenv来安装python)

3 安装truffle(你可以使用nodejs的npm来安装:npm install -g truffle)。为了验证安装是否成功,可以在控制窗口中输入 truffle list,列出所有的truffle命令。然后创建一个新的项目文件夹(我把这个文件夹命名为"conference"),进入这个文件夹,然后进行初始化(truffle init),创建好的文件夹结构如下:

img

然后运行testrpc ,在一个新的控制窗口中开启一个客户端节点:

img

然后回到第一个truffle控制台窗口,输入truffle deploy。这会把truffle init 创建的示例合约部署为样板文件。如果有error,将会在testrpc控制台窗口或是truffle窗口显示出来。

开发的时候,你可以进行truffle compile ,对合约进行编译,truffle deploy编译并部署到网络上,truffle test进行测试。

Sort:  

peter有没有写些代码呢? 原文是15年发布的,一年半过去了 不知DeApp开发有了哪些新的方向与工具?

我没有写代码,翻完这篇再看看有没有新的文章

最近vpn经常挂,麻烦啊

辛苦了!

推荐一个适合区块链开发新手入门的DApp实战教程:以太坊开发

Coin Marketplace

STEEM 0.19
TRX 0.12
JST 0.027
BTC 64886.88
ETH 3516.64
USDT 1.00
SBD 2.37