智能合约。一个早在1994年被Nick Szabo提出的一个术语。
从那以后,我们走了很长的一段路。随着以太坊的出现,去中心化应用程序(Decentralized Application)的时代到来了。它引进了人们从未认为可能的概念,如去中心化交易、去中心化组织、去中心化“填入你的想法”。
可尽管以太坊带来了这些革命性的可能性,在开发方面仍需许多努力。在扩展性上,它缺乏大量能够帮助引导的适当的第2层解决方案,及能够帮助开发者以更快更强的方式写出那些势不可挡的应用程序的抽象化。
让我们来看看创建一个简单的去中心化应用程序(以下简称DApp)的基本工作流程。首先,开发者用他喜欢的语言写一个智能合约(目前以太坊上最火的智能合约语言是Solidity)。
然后,与运行脚本或编译再运行一个可执行程序的传统编程不同,开发者:
支付gas费用,提交合约的创建
在他的交易被验证前等待。现在合约已经被部署了,生成了合约的地址。
用户现在就可以通过发送特制的交易到部署的合约地址来调用合约的函数。
有一种“单纯的”方法(就是不需要任何额外的软件,只是提交原始数据的交易)。事实上,也有用像web3这种库(可用于Java、Python和Javascript)的更高级的方法。此外,还有像Truffle和Embark这样的开发框架,可以自动完成部署和测试。
尽管如此,在运用这些框架的时候,每个项目都需要特定的配置,开发者在物尽其用之前要先熟悉框架的的特性。这使普通DApp开发人员在实际部署他们的应用程序的过程变得复杂和耗时。
多说一句,以太坊目前存在严重的局限性,使商业规模的应用程序效率低下。
由于合约复杂的运行而产生的高昂gas费用使做出像去中心化的Facebook或Twitter这样的大规模应用程序不可行。现在一个简单的以太坊交易需要21000gas,换算为每个交易0.13美金(目前ETH和USD为$321)。调用一个智能合约的函数包括将数据储存到区块链如发一个推文,成本可能会高出一倍以上。
想象在一个去中心化应用程序上每天有百万用户发推——多少钱会“烧”在交易费用上?
而且,不要忘记那缓慢的确认时间。以太坊15秒的block time对于那些希望扩展到百万用户的应用程序来说太慢了(就算它们比其他区块链要快)。
举个别的例子,想象一下一个聊天应用程序需要15秒来发送你的信息,而且还要你每条信息花0.25美金。
什么是Gas?——要是你熟悉它的话可以跳过
在以太坊,每个运行操作都要花费一定量的gas。每个交易都有一个特殊的“gas上限”指定该交易允许花费的gas数量。取决于那个数量,合约调用可以执行更复杂的计算。重资源的运行更多就要花费更多的gas,从而更多钱。Gas作为一个安全措施可以防止智能合约进入无限循环,并有效地造成对网络的拒绝式服务(DoS)攻击。
交易费用是因为gas而产生的。降低gas成本是当你扩展你的DApp时需要考虑的最重要的因素之一。
基于这些原因,为了使开发人员能够尽可能简单地部署应用程序,同时使他们在安全措施和成本分配方面更加灵活,基础设施需求巨大。
所以Loom Network来了
“Loom Network是一个平台即服务(PaaS),它允许基于以太坊的Solidity应用程序在公共、被许可的和私有链上运行。”
目标
当DApp不需要区块链的完整安全性时,使它们运行速度更快,成本更低。
允许DApp提供免费试用来吸引新用户
通过oracles实现与离线世界的安全可靠的交流,并通过推送和短信提醒来通知用户状态更改(降低gas成本,因为所有的计算都在我们的侧链上完成)
我们注意到的是,以太坊对所有交易“一视同仁”,无法区分高优先级交易(需要最大限度的安全措施)和低优先级交易(如用户更改在社交媒体DApp中的头像)。
我们认为,应该允许应用程序根据自己的需要和威胁模型决定共识机制的宽松度。
一个简单的情况,攻击者可能有巨大的动机去逆转账户A和账户B之间1000ETH的交易,因此这个交易就需要以最大的安全性来执行。同一个攻击者就不会有什么兴趣去妨碍一个对合约C里“changeProfilePicture(换头像)”函数的调用,这个交易就可以让我们以稍微宽松一点的安全措施来执行,因此使它更快更便宜地确认。
我们认为,应该允许应用程序根据自己地需要和威胁模型决定共识机制的宽松度,与现在流行的哪怕对阵国家级敌人都能保持强硬的“工作证明”系统不同。
再者,在使用DApp时,目前还没有任何固有的用于免费试用的机制——请注意,我们并不是指调试环境(testrpc)或测试网(Ropsten、Rinkeby)。我们希望允许产品所有者将他们的合约部署到一个真实的网络环境,并且能够在预定的时间段内为用户提供对他们DApp特定功能的免费访问。
最后,从开发者的角度,没有任何解决方案支持对网络的单一命令部署。当web开发人员使用像Heroku这样的服务时,一旦他们将更改推送到他们的git存储库,他们的应用程序就会自动部署和预配置,以满足他们确切的需求。这极大地减少了在DevOps上耗费地时间,同时也减少了开发人员和实际系统之间地摩擦,从而使得表面误差可以忽略不计。
再说一次,目前在以太坊生态系统中还没有对于那个问题的解决方案,这是我们的终极目标。
就像是为了以太坊的Heroku。
通过Loom,你可以用一个简单的命令部署你的应用程序到网络。
http://loomx.io/#loom-cli
如果你喜欢这篇文章,就来加入Loom Network的大家庭吧!
公众号:loomnetwork
电报私人聊天室(中文社区):https://t.me/loomnetworkcn
想要学习写属于你自己的DApp代码:https://cryptozombies.io/zh
知乎专栏:zhuanlan.zhihu.com/loomnetwork
领取专属 10元无门槛券
私享最新 技术干货