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

以太坊和智能合约

智能合约是一段在区块链网络中执行的代码,所有的计算机(矿工)必须得出相同的结果,并就执行结果达成共识。正因此,我们可以确定这段代码被按照预想的方式执行。

gas和激励机制

那么问题来了,是什么让计算机(矿工)乖乖的执行智能合约?

以太坊中区块链中有个专业术语叫gas(与neo的gas类似,不过以太坊的gas是以太坊代币本身),代表了代码执行所支付的金额,这种激励方式促使矿工运行你的合约代码,不同的代码逻辑支付不同的费用。其实可以将整个以太坊网络视为一个整体,它对外提供执行部署和执行合约的服务,根据每次提供的服务进行收费。对比一下中心服务器的付费服务,便于理解。这种方式也促使研发人员编写高效的代码,经过反复测试后,再上传至以太坊网络中,减少不必要的开销。

与外部世界的交互

我们每天使用的各种应用程序基本都集成了各种外部服务(API)。比如,根据外面的天气,可以作出不同的出行建议。

这意味着该服务器必须通过连接天气API才能检索数据并相应地显示相应信息。那你可能会说了,这有什么难的?智能合约也应该能够很轻松做到这一点,对吧?

答案是你想多了。

主要原因是智能合约代码是在每个节点上执行的。这意味着对天气API的调用时间可能会有差异,这就造成了输入的不确定性,节点之间无法得到确定性的结果,也就没办法达成共识。

在一秒钟内,我们可以返回晴朗的天气数据,而在另一天,我们可以有一场大雨。在这种情况下,节点永远无法就智能合约的结果达成共识。

那你可能会说了,如果在需要集成各种必要功能的应用程序中使用API接口,那以太坊平台还有毛用?没错,如果无法接受外部数据,智能合约的功能如同鸡肋。

解决方案 - Oracle(预言机)

值得高兴的是,有人提出了使用预言机(Oracle)的解决方案。不是智能合约调用外部API,而是通过预言机将API本身将数据推送到区块链。

带来的是所有节点在网络中具有相同的数据。它以简单的方式实现,即合约触发事件,外部应用程序(如Oraclize)监听该事件,从API检索数据并将结果添加到合约中。

解决方案似乎合法。但另一方面,你现在否认整个分权理念,不得不信任一些中央数据提供者。

用例 - 众筹

以太坊创造者提供了一些可以在其平台上构建的简单示例。我想介绍一个例子,以便更好地理解该技术带来的可能性。

我想大家都知道Kickstarter。项目团队设定最低和最高资助目标。他们还必须相信Kickstarter,如果金额能够达到,Kickstarter将为球队付款。

另一方面,支持者需要相信Kickstarter,如果达不到目标,他们会返还投入的资金,或者如果达到目标,则会向项目团队汇款。这种解决方案非常集中。

这种筹款方式最近在区块链项目中非常流行。特别是在以太坊。智能合约具有相同的书写规则。

人们向合约账户转账,可以确定的是,如果不能达到指定金额,合约会自动将资金返回至原账户。所有的智能合约代码都是公开的,任何人都可以对它进行检查(当然,您需要对编程有一些基本的了解)。

这种方法不需要Kickstarter作为中介费用。

在这些众包智能合约的帮助下,项目正在筹集价值数百万美元的Eth。

最近Bancor Crowdsale筹集了超过1.4亿美元的资金,所有这笔钱被直接发送到一段代码(智能合约),该代码处理交易,分配代币并将钱汇给团队的钱包。这是智能合约的真正威力!

我相信智能合约有着颠覆互联网的巨大的可能性,这只是一个开始!

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

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券