首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

以太坊构建DApps系列教程(八):启动StoryDAO项目

在本系列关于

使用以太坊构建DApps教程的第7部分

中,我们展示了如何构建应用程序的前端,为我们一直在研究的这个Story故事设置和部署UI。是时候进行一些部署并编写一些最终功能了。

这是使用以太坊区块链构建去中心化应用程序系列的第八部分。我们正在建设的项目名为。完整的项目可以在找到。它的完整代码在GitHub上 。

自毁程序

有些东西可能会非常非常错误,并且使得整个DAO会以某种方式被破坏——无论是通过糟糕的编写代码,还是由于参与者太多而无法完成循环。(提案上的选民太多也可能破坏系统;我们实际上没有采取任何预防措施!)为了防止发生这种情况,拥有相当于“红色大按钮”可能会很有用。首先,让我们升级我们的:

然后,让我们可以在代币合约中立即解锁所有代币:

当然,我们需要在合约中添加这个新的地址列表:

我们需要升级我们的函数以向此列表添加地址:

我们还应该更新合约中代币所需的接口,以包含这个新函数的签名:

使用我们之前添加的活动故事块(除非故事的标志为真,否则无法运行某些功能),这应该可以解决问题。没有人需要在发送合约时浪费钱,每个人的代币都会被解锁。

所有者没有得到人们提交的以太。取而代之的是退出功能变得可用,因此人们可以收回他们的以太,并且每个人都会得到照顾。

现在我们的合约终于可以部署了。

销毁程序是什么样的?

有一个名为的函数可以销毁合约。它看起来像这样:

调用它将禁用有问题的合约,从区块链的状态中删除其代码并禁用所有功能,同时将该地址中的以太网发送到提供的地址。在我们的案例中,这不是一个好主意:我们仍然希望人们能够撤回他们的以太;我们不想从他们那里拿走它。此外,直接发送到自杀合约地址的任何以太币将永远丢失(烧毁),因为没有办法将其取回。

部署合约

要完全部署智能合约,我们需要执行以下操作:

部署到主网

将代币发送到StoryDAO地址

将Token合约的所有权转让给StoryDao。

我们走吧。

主网部署

要部署到,我们需要在文件中添加一个新网络:

幸运的是,这非常简单。它与Rinkeby部署几乎相同;我们只需要移除gas量(让它自己计算)并改变gas价格。我们还应该将网络ID更改为1,因为这是主网ID。

我们这样使用:

这里有一点需要注意。如果你在先前部署的网络上进行部署(即使你刚刚将代币部署到主网上并希望稍后部署StoryDao),你可能会收到此错误:

之所以发生这种情况,是因为Truffle会记住部署已经部署的合约的位置,以便它可以在后续迁移中重复使用它们,从而避免重新部署。但是如果你的网络重新启动(即Ganache)或者你进行了一些不兼容的更改,可能会发生它保存的地址实际上不再包含此代码,因此会报错。你可以通过重置迁移来解决此问题:

将代币发送到StoryDao地址

从部署过程中获取代币的地址和StoryDao的地址。

如果出现gas缺失,只需增加gas限制即可。请记住:剩余的未使用的gas总是会退回来,所以不用担心会损失比交易成本更多的钱(发送代币应该低于40000gas)。

将代币的所有权转让给StoryDao要转移所有权,我们需要在代币上调用函数。让我们将代币加载到MEW中。在屏幕中,我们输入地址和合约的ABI(从/build文件夹中获取)。然后单击将允许我们在菜单中访问该合约中的功能,我们从中选择。

提示:仅包含你要调用的函数的ABI就足够了,它不必是代币的整个ABI!你可以只包括函数的ABI,它就没事了!

然后我们选择新的所有者(已部署的StoryDao的地址)并解锁当前所有者的钱包(我们之前发送的钱包相同的钱包)。

写完此更改后,我们可以检查代币合约中的只读功能(与相同的菜单)。它应该现在显示新的所有者。

为了确保StoryDao地址实际上有代币,我们可以选择函数并在字段中输入StoryDao的地址,然后单击:

事实上,StoryDao地址中有1亿个代币。

提示:我们也可以在部署步骤中完成代币发送和所有权转移。尝试弄清楚如何在测试环境中。

验证

根据本系列的第3部分,验证DAO和Etherscan上代币的合约将对我们有很大帮助。绿色的复选标记是一条很长的路。

按照该部分中的说明验证你的合约。请注意,在验证步骤中,你现在必须将优化器标记为活动,因为我们正在优化代码以实现更便宜的部署!

部署到Web

要部署StoryDao的Web UI,请按照“常规”Web开发世界中的说明进行操作。因为,在这种情况下,所有的都是静态代码,你甚至可以在GitHub页面或类似的东西上托管它。

在这里和这里阅读一些选项。

页面启动后,配置UI以使用我们从迁移步骤获得的合约地址。或者,注册代币和StoryDao的ENS名称,你可以保持Web UI静态和固定,硬编码地址,然后只更改ENS名称所指向的以太坊地址。

结论

DAO教程到此结束。我们希望它能帮助你认识到Solidity开发的复杂性,但我们也希望它能让事情更加清晰,让你更加好奇。

一如既往,最好的学习方式就是做。实验,犯错,重启和重建。这种类型的区块链开发需求量很大,而且它越来越受欢迎,所以你有机会接触到底层。

祝好运!

文章来自官方博客:

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181230G18TXY00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券