如何从零打造一个去中心化应用的区块链


挖矿以太币


最后我们决定自己挖掘以太币。如果想了解一下在以太坊挖矿到底是不是有利可图,自己挖确实也是一个很好的方法。我们制作了一个非常大的亚马逊EC2实例,它具有强大的GPU计算能力(是一个g2.2xlarge实例)。这个实例的价格是每天17美元。我们安装了以太网,并启动了我们的节点。由于高内存和存储需求,我们很快就必须增强这个实例。加入区块链时节点做的第一件事就是下载过去交易的全部历史记录。这需要大量的存储空间:区块链历史记录超过14GB,Ethash工作证明大约需要3GB。


一旦以太坊节点启动,我们就必须要挖掘3天才能创建出一个有效的区块:


640?wx_fmt=png


提醒一下,以太坊区块链每10秒钟挖一块。开采一个区块可以获得5个以太币,售价大约为55美元(作者写文章时的价格)。我们的增强版EC2实例运行3天的成本约为51美元。总而言之,在AWS上挖以太币比直接买以太币更便宜。但是我们非常幸运:我们开发这个区块的时候挖掘难度并不很大,在开发完之后,网络的挖掘难度就增加了三倍。

扫描二维码关注公众号,回复: 896125 查看本文章


5个以太币可以让我们运行“零美元主页”多长时间呢?现在我们来计算一下。


“零美元主页”的工作流程意味着每天都会有一笔交易,另外每个声明的PR都会有一笔交易。假设贡献者每天声明一个PR,那么运行该平台每年最多将花费365 * 2 * 0.00098 = 0.72 以太币。5个以太币可以让我们运行该平台近7年。


正如你所看到的,在以太坊运行合约并不是免费的,不过以目前的价格来说,它仍然很便宜。当然,以太币价值的变化很大。由于挖比特币的利润越来越低,一些大型比特币矿场开始转向以太坊。这也让采矿变得越来越困难,并且使得以太网每天都在变得更加昂贵。



最终的惊喜


最终,我们的智能合约在EC2上托管的现实世界以太坊节点中运行非常好。


但当我们完成这个项目的时候,以太坊发布了它们的Homestead版本,这带来了很多新东西,完全破坏了我们的代码。我们花了大约一个星期的时间才明白,并且通过反复试验修复了因不明原因而不兼容的代码。


Tip


Homestead发布了一个隐藏的以太坊功能——私有网络——来简化开发。之前以太坊缺乏私有网络是我们当时选择使用Eris的原因之一。


“零美元主页”平台现在已经启动并且开始运行了。你可以通过在GitHub上的marmelab的开源库之一上开一个Pull请求来使用它,上当前显示的广告,或浏览marmelab / ZeroDollarHomePage上的应用程序代码。是的,我们正在开源整个广告平台,以便你可以详细了解其工作原理,并在本地进行复制。


640?wx_fmt=png


调试


以太坊留给开发者的体验其实是非常糟糕的。想象一下没有日志,也没有调试工具,你发现程序失败的唯一方法是通过一行一行输出“I'm here”字符串来查找问题。甚至有时(例如在Solidity合约中),你都不能这样做。或者某些在开发环境中完美工作的程序在生产环境中却无法实现。这就是以太坊的开发者体验。


如果你将数据存储在智能合约中,是没有内置的方式可以在交易后显示此数据当前状态的。这意味着你需要构建自己的可视化工具来排除错误。


可用于跟踪以太坊合约和交易的工具有:


  • etherscan.io:显示有关合约,交易,区块的数据

  • etherchain.org:区块和以太网信息

  • 你还可以获得有关网络和节点的汇总统计信息


例如,这是我们的合约在etherscan上的可视化界面:


640?wx_fmt=png


每次交易(对合约方法的调用)以及合约执行的痕迹都会用机器语言记录下来。除了用于确保你调用到了合约之外,这个工具不能用于调试的其他部分。


而且,这些工具只能监视公共以太坊网络。所以你不能用它们来调试本地的区块链。


如果你曾经见过比特币交易审计网站,千万不要以为以太坊可以达到相同的复杂程度。此外,比特币网络只有一种交易,因此比设计用于运行智能合约的网络更容易监控。


文档


这还不是全部:以太坊文档与代码不同步(至少在Frontier版本中),所以大多数时候我们必须要通过查看这些库的源代码来了解如何写代码。由于有些出问题的库使用的语言(Solidity)很少人用,所以我们在这里只能祝福它们的工作方式不出问题了。还有,也不要指望Stack Overflow的帮助。像我们这样敢于做一些认真的事情来为社区提供支持的人太少了。


不过这里需要明确的是:我们不是在批评以太坊社区缺乏努力。以太坊背后的发展势头巨大,事情进展迅速。所有文档贡献者的工作都值得赞赏。但还是要承认在我们开发应用程序时,现有文档状态不足以让新的以太坊开发人员启动一个项目。


在网上搜索以太坊的教程很容易,但大多数时候,这些教程中复制粘贴的代码根本无法使用。



结论


经过两位经验丰富的开发人员4周的艰苦努力,我们的代码终于可以在公有以太坊网络中工作了(心累)。在Frontier和Homestead版本之间的以太坊库中的回归和兼容性中断也并没有起到什么作用。查看marmelab / ZeroDollarHomePage上的项目源代码可以详细了解其内部工作原理。因为确实是第一次开发,我们在这方面的经验也实在有限,请原谅我们代码中的潜在错误,以及本文中的不准确之处。请随时在GitHub向我们提交更正或评论。


我们不喜欢这段经历。通过糟糕的文档和不成熟的软件库摸索编程的方式并不是很让人开心。用半熟的语言来实现简单的功能(如字符串操作)也不好玩。尤其是意识到自己尽管有着多年丰富的脚本语言编程经验,但却无法编写简单的可靠合约,这就更令人沮丧。最重要的是,以太坊生态系统的年轻人完全无法预测他们实现一个简单的功能所需的时间。由于时间就是金钱,目前我们还无法确定开发去中心化应用到底需要多少代价。


在时间和资源方面,“零美元主页”代表着超过20,000欧元的开发成本——即使它是一个非常简单的系统。与我们在其他项目中使用的工具(Node.js,Koa,React.js,PostgreSQL等)相比,在区块链上开发非常昂贵。对于开发团队来说,这也是非常令人失望的。我们还可以从中发现一个很强烈的信号:这个生态系统还没有准备好!



对区块链的看法


在探索了区块链的理论,并真正开发之后,我们已经对它的优缺点有了切身的体会。但令人惊讶的是,我们的大部分结论都和媒体上一直吹捧的不太一样。或许这是因为我们并没有迷信比特币和其他人的疯狂估值,也可能是因为区块链确实面临着不够成熟的现状。


区块链确实是一个非常聪明的想法,具有巨大的潜在影响。但是目前的方案究竟能否为下一个十年颠覆性应用的诞生提供动力还尚未可知。


在技术方面,它的一些基本特征根本不可行。区块链效率不够高,对开发人员不够友好,而且它的技术特性很有可能被恐怖分子或地下黑市利用,用于非法毒品、武器、人口等的贩卖,而难以监管。


在商业方面,区块链变化速度过快,价格昂贵。费用可能会无缘无故地变化数十倍。在这样一个不稳定的平台上开展业务是非常危险的。


我的意思是,我们必须等待。区块链还没有准备好。它需要更成熟些,需要成为另一个杀手级应用而不是成为一个投机引擎,需要更大的开发者社区,需要承担更多的生态和经济责任。这需要多长时间?也许一年或两年?没人能说出来。


----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


猜你喜欢

转载自blog.csdn.net/taoxiuyi0679/article/details/79470873