专栏名称: 无钥签名区块链实验室
以“让诚信和安全更简单”为使命, 爱立示(Aletheia)是中国推广无钥签名®技术的总提供商。 无钥签名®是数据的电子标签(签名), 以纯数学算法检验及证明电子数据的签名时间、起源和数据完整性,证明数据的可靠性和不可抵赖性。
目录
相关文章推荐
白话区块链  ·  以太坊和Solana哪个更像当年的EOS? ·  昨天  
疯狂区块链  ·  怎么提升自己的能量? ·  昨天  
疯狂区块链  ·  如何才能不返贫? ·  昨天  
疯狂区块链  ·  今年楼市不会好的三大原因 ·  2 天前  
二郎专注互联网  ·  小白不知道的 web3空投! ·  3 天前  
51好读  ›  专栏  ›  无钥签名区块链实验室

智能合约和分散应用程序(dApps)第1部分-两者之间的差异

无钥签名区块链实验室  · 公众号  · 区块链  · 2019-04-08 16:49

正文


随着区块链技术在公共,企业和私营运用中越来越受到关注,扩展区块链技术和运用区块链相关应用程序将会变得越来越重要,以便区块链可以在现实场景中解决更多的案例。区块链应用扩展的两种最常用的方法是智能合约和分散式应用程序(dApp)。随着区块链技术的发展和运用,明确区分这两者之间的差别并有效利用它们将对各运用场景变得非常重要。简单来说,智能合约是参与方在不需要第三公证方的情况下可以健全,并且以编程形式自动执行的电子协议; 而分散式应用程序是建立在与区块链信任基础上的程序,这些程序可以部署在跨境网络中,同时通过使用区块链协调数据并保持这些应用程序之间的信任关系。


智能合约



与许多人原本所认知的相反,智能合约并非以太坊的发明。智能合约的概念最早于1997年由Nick Szabo在他的研究论文“智能合约的理念”中提出。这一概念最初被比作数字自动售货机:操作者可以选择一个项目,输入所需的现金金额,并在付款登记后收到所需货物。与传统合约不同的是,传统合约通常是建立在人类语言基础上的,并且是主观解释。 而智能合约基于用电脑程序语言,这些条件以预先定义的方式编辑并运行,并且可以按照“如果是这样,那么就是那样 (IFTT)”的模式自动执行。因此,智能合约是一种更客观,可重复的,并且以数据和逻辑为基础的合约执行模式。 区块链中的智能合约通常是区块链环境中部署的一段应用程序代码,这些代码代表合约性的业务逻辑。构建智能合约的编程语言应该是Turing Complete程序语言,以便能有效解决合同验证和执行条件以及执行步骤的所有可能组合。Turing Complete智能合约语言的一些主要示例包括以太坊的Solidity,Hyperledger Fabric的Golang,EOS的基于WebAssembly(WASM)的语言(如C ++)和Corda的基于JVM的语言(Java)。




智能合约的一个重要方面是,在部署到区块链时,它必须与一个区块链上唯一的身份挂钩。因此区块链上的智能合约可以被理解成由区块链维护的中央部署应用程序。这样做是为了能够让区块链可以有效的跟踪智能合约的执行状态,因此身份是必需的。这种身份通常通过托管智能合约的节点的身份来建立,例如,节点的X.509身份或PKI私钥,智能合约使用节点的身份来签署它执行的任何合同执行(事务)。智能合约的身份对于维护很重要,因为它代表智能合约执行的完整性及其在区块链上的状态。实质上,只有当区块链的参与者接受并信任其身份,智能合约执行在区块链上才是可信的。

实现可扩展性和可用性将是智能合约架构所面临的挑战。由于智能合约部署在区块链上,每个智能合约需要保持其唯一的身份,其状态需要被区块链跟踪,因此作为一个区块链维护的中央部署应用程序,要正确地扩展智能合约相对比较困难,特别是对于基于PKI身份的智能合约。此外,由于潜在的可扩展性问题,当智能合约面临压力时,其可用性也可能会受到限制,并且在最坏的情况下,可能会降低整个区块链网络的速度(如在2018年8月通过以太坊智能合约在FCoin的ICO中所看到的)。

智能合约架构面临的更大挑战是它的安全性和可更新性。由于智能合约作为区块链运行的一部分,而区块链上发生的交易大多是不可逆转的,所以如果智能合约包含错误或安全问题,那么由该智能合约所引起的错误也将是不可逆转的。这种错误通常是因为程序错误(bug)或完全漏洞引起的。 因此,和普通应用程序不同,由于区块链智能合约部署后无法更新,如果一个已经被部署的智能合约产生已知问题,其可能产生的问题将是无法预估的。 有时,安全问题也可能来自编程语言本身,尤其是年轻一代的智能合约语言,比方说以太访发明的Solidity智能合约语言就有很多风险,其中, reentrancy attack,arithmetic under / overflow是Solidity中众所周知的安全问题的例子。 因此,如何有效解决智能合约的测试,更新,以及在更新后如何可信的与更新前版本在区块链上链接,将是区块链智能合约能被广泛运用前必须解决的课题。

智能合约是扩展区块链以满足不同业务需求的重要方法之一。通过将智能合约与区块链紧密集成并部署在区块链上,智能合约应用程序变得可验证且可信,并可用于实现许多可受信任的自动化业务行为。




分散应用程序 dApp


dApp是另一种把区块链拓展到不同的业务场景的方法。就像智能合约一样,dApp也是一项实践多年的技术。 比方说,P2P文件共享服务,例如BitTorrent,就是一种dApp的运用模式。 拓展区块链的dApp可以被视为由区块链支持的p2p应用程序,以区块链作为分布式运用程序之间间公共信任锚。区块链作为公共信任锚对于跨界应用程序非常重要,例如多方参与供应链,金融余额对帐,信息内容跟踪等等。一般来说,dApp与智能合约在以下方面有所不同:

  • DApp不是部署在区块链上,它是部署在区块链之外的应用程序,但通过智能合约或直接使用区块链作为信任锚方式与区块链对接。因此,DApp不存在类似智能合约更新问题。

  • 并不是所有区块链都能部署智能合约,但是所有区块链都能成为区块链dApps的信任锚。

  • 启用智能合约的dApp不一定需要区块链身份,因为如果业务逻辑允许,它可以继承智能合约身份。

  • 当使用区块链作为信任锚时,可以将多组dApp进行聚集部署,以便为应用程序行为使用相同的区块链身份,从而使dApp更易于扩展和执行。这样的结果是会有助于区块链更快地进行交业务逻辑处理。

  • 与智能合约不同的是,dAPP的构建是由商业逻辑决定的,它可以有多种不同的形式,API服务,网站,手机应用程序,中间件,插件,机器人都可以是区块链dApp的形式。




dApp是扩展区块链行为的好方法,可以帮助许多不同的商业场景能够利用区块链功能。 相对智能合约,dApp可以更有效的拓展商业逻辑,并且可以充分运用现有IT的方式进行部署和扩展。 然而,就像智能合约一样,区块链启用dApps也面临许多挑战,以下两点可能是其中需要解决的最大的挑战:

  • 由于dApp不被区块链跟踪,并且如果管理不当,恶意dApp可能会出于恶意目的滥用区块链信任锚。

  • 由于去中心化的性质,如果管理不好,dApp的治理和版本控制可能会非常复杂,可能会在大规模使用时降低区块链支持的dapp的可用性。









请到「今天看啥」查看全文


推荐文章
白话区块链  ·  以太坊和Solana哪个更像当年的EOS?
昨天
疯狂区块链  ·  怎么提升自己的能量?
昨天
疯狂区块链  ·  如何才能不返贫?
昨天
疯狂区块链  ·  今年楼市不会好的三大原因
2 天前
二郎专注互联网  ·  小白不知道的 web3空投!
3 天前
利维坦  ·  为何我们痴迷连环杀手?
7 年前