LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 币圈百科 > 智能合约怎样在区块链上运行应用程序

智能合约怎样在区块链上运行应用程序

2020-07-20 Dew_x 来源:区块链网络

区块链可以做的不仅仅是存储数据。它还可以运***,如:智能合约。

本文是Horizen Academy专家内容和“ 什么是区块链? ” 一章的一部分。”。

如果您觉得本文中有更多信息比您需要的更多,请考虑阅读本文的高级版本。它传达了相同的概念,但细节和复杂性较低。

许多人都这样说,我也是这样:智能合约既不是智能合约也不是合同。一般来说,它们是区块链上的软件。智能合约需要使用其所依赖的区块链协议定义的特定语言编写。

合同可以定义为当事方之间的协议,将它们与将来发生的事情联系起来。术语“智能”来自这些数字“合同”的自动执行。

虽然第一个加密货币比特币已经支持使用称为Scrypt的脚本系统在其之上运行基本逻辑。像先进的智能合同语言密实启用的平台上更复杂的智能合同,如

在简单的脚本系统和更复杂的,图灵完备的脚本系统之间需要权衡。尽管前者不允许使用复杂的逻辑,但是编写程序和保护程序更容易。功能丰富的语言允许使用更精细的智能合约,但它们更容易出错并且更难获得保护。

智能合约上下文中的安全性意味着考虑合约执行的所有可能方式和每种情况的发生。简单的智能合约语言具有较少的潜在用例,但使合约的可能状态更易于枚举,检查和解释,从而使合约更容易获得保护、执行

静态代码与合同实例

术语智能合约可以有两个含义。它可以引用给定语言的静态代码或合同实例,即执行代码的动态对象。操作系统中的程序和过程之间存在类似的区别。

“人们可以将智能合约实例视为受信任的第三方,用户可以根据其静态代码中写的条件向他们发送硬币,并且可以在各方之间分配硬币。” — Dziembowski,浮士德,Hostáková,国家频道报纸

让我们看一下下面的一些智能合约用例,以直观了解智能合约的优点。

加密代币(token)

加密代币是区块链上的数字项目。它们可以代表所使用的平台,金融资产或一份数字房地产的权利。

假设的Netflix2.0可能会出售Netflix令牌,如果您想访问其流媒体服务,则每月需要使用一个代币token。代币也可以代表债券的份额,所有权附带到期的定期利息和还款。

大多数代币是使用以太坊ERC-20在以太坊区块链上发行的,该标准最早是由Fabian Vogelsteller提出的。

代币是在智能合约中发行的,该合约定义了总供应和代币转让的条件等。

ERC-20代币标准是一个智能合约模板,可轻松发行并与不同的钱包和交易所集成。如果您想仔细查看发行代币的过程,或亲自尝试一下,这里有一个易于操作的指南。

付款渠道

通常与智能合约不相关的另一个用例是支付和状态渠道。在大多数情况下,它们允许链外发生的交互就像在链上发生一样不可信。最受欢迎的支付渠道网络可以说是比特币上的闪电网络。

减少中间商的需求

智能合约有望大大减少对中间人的需求,例如律师或公证人,从而降低经商成本。最重要的是,它们通过避过中间人来节省参与者的时间。可以构造许多用例来达到此目的。

想象一下体育俱乐部及其票务流程。无需让第三方参与收费,它只需要票务平台的一个开源应用,就可以淘汰许多票务服务的收费和时间

对算法的非正式高级描述称为伪代码。例如,售票智能合约的伪代码如下所示:

智能合约不仅可以实现机票的销售和退款。可以建立一个具有自我执行规则的自动化二级市场。尽管上面的示例显然过于简化,但它应该使您了解智能合约中使用的逻辑类型。

智能合约执行某些动作是由消息触发的。这些消息可以是转移资金的交易,也可以是仅转移数据的消息。稍后我们将回到由数据触发的智能合约。

当一组条件组合在一起以启用应用程序时,此智能合约集合称为dApp-分布式应用程序。但是,将智能合约和dApp分开的界限有些模糊。

分布式应用程序— dApps

通常在分布应用程序或dApps的背景下讨论智能合约。dApp几乎涵盖了所有内容,从分散交易到拍卖平台或游戏。您可以在dApp的状态中找到有关当今市场上的内容的详尽概述。

dApp允许其用户执行一组功能,任务或活动,就像其他任何应用程序一样。大多数传统应用程序都使用API??(应用程序编程接口)与其各种组件进行通信,例如社交媒体集成,基础数据库或微服务。

dApp使用一个或多个智能合约与其基础区块链以及非区块链组件进行通信。智能合约可用于检测来自用户的收款,向其用户发出付款,用作托管或基于某种形式的提交数据触发操作。

我们仍处于分布应用程序的早期阶段。过去曾有很多伤害,一些错误已导致其用户损失资金,还有一些错误则无法有效利用链上交易。尽管经过良好开发和审核的智能合约库将使dApp的开发更加轻松和安全,但侧链之类的扩展方法仍可以扩展智能合约的通信。智能合约平台经过专门设计,不仅可以在区块链上赚钱,而且还可以部署智能合约和dApp。

智能合约平台

数字世界似乎更喜欢赢家通吃或至少赢家通吃的大多数情况-例如Google,Facebook,Netflix或Amazon。可以想象,智能合约平台的市场将朝着相似的方向发展。更好的技术吸引了更好的开发人员,他们开发了更好的工具和库,这使项目更易于使用平台,从而吸引了更多开发人员。

这不仅使平台本身更具吸引力。将代币集成到现有的钱包中更容易; 通过广泛接受的标准简化了在交易所的上市,并且增强了dApp之间的互操作性。所有这一切可能会有很大的不同,并且对此存在很多争论。但是,从今天的角度来看,绝对有必要以非零的概率说明赢家最多的情况。

但是,当今的集中式网络可能会有一个重要的区别:用户可以在基础区块链上拥有自己的数据。锁定效应降低了,从一个dApp切换到另一个dApp的成本可能会低于今天。Joel Monegro在2016年提出的Fat Protocol论文描述了在协议层而不是应用程序层中捕获的这种价值效应。今天,大多数人反对这一论点,但它仍然占有一席之地,并定期进行讨论。

我们希望包括这个小小的游览,以说明区块链技术的多学科性质。不只是技术。它混合了经济学,社会经济学,博弈论,计算机科学等等。

为了将自己视为该领域的“专家”,您应该了解超出技术本身的一些讨论和思想实验。但是现在,让我们继续前进。

使用智能合约扩展

智能合约给区块链有限的吞吐量带来了额外的负担。它不仅需要存储对用户清晰可见的交易和数据。许多纯数据交易用于智能合约之间的通信。CryptoKitties的推出给以太坊区块链带来了很大压力,导致交易费用急剧上升且确认时间较长。

使用正确的会计模型

区块链中有两种不同的余额或会计系统-UTXO模型和基于帐户的模型。

“第一个模型是资产在用户之间移动的有向图,第二个模型是具有当前网络状态的数据库。” —德米特里·米苏宁(Dmitry Mishunin)

大多数智能合约平台都使用帐户模型,因为它使智能合约的开发更加直观且数据密集度较低。帐户可以有两种类型:

私钥控制的用户帐户合同代码控制的帐户。

每个帐户都有自己的余额,存储空间和代码空间,用于调用其他帐户或地址。

移动数据链外

除了通过帐户模型实现的协议层效率提高之外,诸如状态通道之类的第二层技术是使智能合约平台规模化的一种有前途的方法。它们是用于将状态修改移出链,将所需的操作重新定位到可以以较低成本执行的辅助环境的几种技术之一。

只有在两方之间打开和关闭状态通道时,才需要进行链上交易。之后,两方几乎可以无限期地进行交互,而无需向区块链广播任何更新。

“当事方与合同实例之间的交互始终是“本地”的,即,当事方自己计算[...]新状态,然后[在其上]交换签名。” — Dziembowski,浮士德,Hostáková,国家频道报纸

并行处理

另一种扩展方法是使用侧链。尽管有时也称为第二层技术,但实际上它是一种基于并行化的方法。侧链本身就是具有与中央主链通信的能力的区块链。该通信可以包括数据或资产的交换。

可以在专用侧链上启动dApp,在该侧链中针对当前应用程序的特定需求优化了参数。它甚至可以运行与主链不同的共识机制。根据特定的构造,可能必须提供激励措施以使节点运行侧链(在PoS侧链模型中)或使矿工执行合并采矿(在PoW侧链模型中)。

有许多方法可以启用可伸缩的智能合约平台,通常还会结合使用不同的方法。但是,除了创建具有足够吞吐量的系统以支持智能合约和dApp的大规模采用之外,还有另一个问题需要解决:oracle问题。

预言机问题

智能合约的承诺是允许使用自动执行的规则进行信任的执行。但是他们真的可以实现这个诺言吗?

大多数资产均受其各自区域管辖。这意味着,无论是否明智,合同都需要对合同管辖权的额外信任,除了对合同本身的信任。拥有智能合约并不等于在现实世界中拥有资产。与常规合同一样,这些条款可能会受到环境变化及其解释的影响。非法合同不具有法律约束力。我们将需要看到新一代的精通技术的律师出现,以使有意义的采用具有法律约束力的智能合约成为可能。

另一个需要克服的主要挑战是预言问题。智能合约需要了解现实世界的事件(取决于用例),以便其运行和执行。oracle预言机是将数据提交到智能合约的实体。随之而来的信任问题称为oracle问题。

想象一下一个智能合约,该合约在一个可能不受信任的环境中运行,预言机需要提交游戏结果,以便智能合约将资金分配给获胜者。由于oracle决定了智能合约的内容,因此它也控制着它的工作。

集中式预言不被认为是预言家问题的解决方案。无论实际实施情况如何,在某些情况下不诚实地提交数据的动机都可能超过诚实行事的好处。基于受信任的第三方提供的信息进行不信任执行的意义何在?正如吉米·宋(Jimmy Song)所说:“信任第三方的明智合同消除了不信任的杀手feature。”

无论是集中式还是分布式,Oracle总是会付出代价。诚实行事必须始终是最有利可图的策略,因此需要采取强有力的措施来提交真实数据。这是一个需要博弈论评估和激励设计的问题。

预测市场

高度依赖于Oracle的智能合约的用例是预测市场。预测市场为特定事件创建市场,而市场参与者基本上是“交易结果”。在预测市场上最著名的项目是Augur和Gnosis。

为了说明这一点,让我们假设一个事件的结果是二进制的:X队或Y队赢得超级碗。参与者以1美元的价格买入,并获得两份期货合约,每种结果一份。实现结果的期货合约支付1美元,其他合约支付0美元。

由于结果的可能性均等,参与者不会知道要保留哪个合同以及要卖哪个合同。两者的交易均价约为0.50美元。如果参与者对一个结果有很高的信心,比方说X队获胜,他将出售在Y获胜的情况下支付的合同。

如果很多人都这么想,这将导致对合同X的需求增加,对合同Y的供给增加。期货合同X的价格上涨,而Y的价格便宜,例如$ 0.70对$ 0.30。期货合约的价格可以解释为发生相应事件的可能性,在这种情况下,X队获胜的机会为70%。

这种构造所依赖的是一些提供有关事件结果的信息的Oracle预言机。一些受信任的实体可以提交此信息,但是这将对新型中介类型产生依赖性。如今,不存在针对Oracle问题的分散解决方案。

正如丹·芬利(Dan Finley)所言,由于预测市场有可能影响事件的结果,因此它们如何大规模发挥作用尚待观察

在解决创建具有法律约束力的智能合约的问题和预言问题之前,将限制对智能合约的使用。代币的创建是一个有价值的用例,与前面提到的当前缺点无关。潜在用例的另一个示例是由某些成就(可通过代码客观地验证)触发的游戏内付款。

摘要

智能合约可以确保在代码强制执行的共同商定条件的基础上客观执行。他们有潜力减少中间商,从而降低成本并节省时间。它们很可能会促进软件开发人员与司法系统之间的紧密联系。

代币的创建以及状态和支付渠道网络的部署是智能合约最常见的用例。在我们看到被广泛采用之前,我们必须克服一些障碍。扩展问题必须解决,因为完全在链上运行的智能合约对其底层区块链施加了很大压力。第二层技术(例如状态通道)或并行化方法(例如侧链)可以解决此问题。

对于许多用例,智能合约需要通过Oracle了解有关现实世界的事件。集中式解决方案消除了智能合约的杀手级功能-不信任-而预测市场可能会以有问题的方式围绕事件的可能性创建激励机制。要看到智能合约在不同领域中的广泛应用,还有很长的路要走,但它们绝对是值得探讨的概念。

https://hyperledger-fabric.readthedocs.io/en/release-2.2/smartcontract/smartcontract.html

—-

编译者/作者:Dew_x

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...