我应何时构建基板运行时模块和基板智能合约?

时间:2019-05-08 12:27:03

标签: blockchain substrate ink

开发基板运行时模块和基板智能合约(例如使用ink!语言)有什么区别?

最好用一种形式或另一种形式编写的应用示例有哪些?

1 个答案:

答案 0 :(得分:4)

基板运行时模块和基板智能合约是用于构建“分散式应用程序”的两个完全独立的平台。这里可能有一个更好的术语,但是出于这篇文章的目的,我的意思是,除了智能合约之外,区块链本身也是分散的应用程序。


智能合约

传统的智能合约平台允许用户在一些基础区块链逻辑之上发布其他逻辑,在Substrate中将其称为运行时。由于此代码可以由任何人(包括恶意行为者和经验不足的开发人员)发布,因此围绕智能合约平台构建了许多故意的安全防护措施。一些示例是:

  • 费用:确保对合同开发者收取他们在运行合同的计算机上强制执行的计算和存储费用,并且不允许滥用块创建者。
  • 沙箱:合同无法直接修改基础运行时存储或其他合同的存储。它的功能仅限于修改其自身的状态,以及对其他协定或运行时函数进行外部调用的能力。
  • 税收:合约占用了区块链上的空间,因此应为简单存在的合约收取费用。这样可以确保人们不会利用“免费,无限的存储空间”。
  • 还原:合同可能容易出现导致逻辑错误的情况。合同开发人员的期望很低,因此添加了额外的开销来支持交易失败时的还原交易,因此当出现问题时不会更新任何状态。

这些不同的开销使运行合同的速度变慢且成本更高,但是合同开发的“目标受众”又不同于运行时开发人员。

合同可以使您的社区在您的运行时逻辑之上扩展和开发,而无需经历提案,运行时升级等的所有疯狂行为。它甚至可以用作将来运行时更改的测试依据,但是这样做可以使您的网络与可能出现的任何增长中的烦恼或错误隔离开来。

摘要,底物智能合约:

  • 对网络而言本质上更安全。
  • 已建立了防止滥用的经济激励措施。
  • 具有计算开销以支持逻辑上的正常故障。
  • 有较低的准入门槛。
  • 通过操场实现社区快速互动,以编写新的逻辑。

运行时模块

另一方面,

运行时模块不能提供智能合约为您提供的这些保护或安全防护。作为运行时开发人员,您生成的代码上的输入栏会迅速增加。

您完全控制网络上每个节点将运行的基本逻辑。您具有对所有模块中每个存储项目的完全访问权限,可以对其进行修改和控制。您甚至可以用不正确的逻辑或差的错误处理来构建链。

基板运行时模块开发旨在产生精简,高性能和快速的节点。它不提供事务恢复的任何保护或开销,并且不会在您的链上运行哪些节点的计算中隐式引入任何费用系统。这意味着在开发运行时功能时,可以正确评估和向运行时逻辑的不同部分收取费用,以免恶意行为者滥用它并损害您的网络。

总结,底物运行模块:

  • 提供对整个区块链的低级别访问。
  • 已经消除了内置安全性带来的性能开销。
  • 对开发人员来说具有很高的入门标准。
    • 不一定要编写工作代码,而是要避免编写损坏的代码。
  • 没有内在的经济诱因来击退不良行为者。

最适合您的工具

底物运行时模块和底物智能合约是为您提供的解决问题的工具。

每个人可以解决的问题可能有很多重叠,但也存在一组仅适合这两个问题的明确问题。每个类别中只有两个给出一个示例:

  • 运行时模块:在区块链中的交易之上构建隐私层。
  • 共享:构建像Cryptokitties这样的DApp,可能需要建立一个用户社区(倾向于Smart Contract),或者可能需要扩展到每天数百万笔交易(倾向于Runtime Module)。
  • 智能合约:将第二层令牌和自定义资产引入您的网络。

除了上面写的所有内容之外,您还需要考虑使用某种工具来建立DApp的成本。部署合同是一个相对简单,容易的过程,因为您可以利用现有网络。唯一需要支付的费用就是您为部署和维护合同而支付的费用。

另一方面,建立自己的区块链需要付出代价,即建立一个社区,在您的服务中寻找价值,或者以云计算系统和常规网络维护的开销建立专用网络。

我认为现在真的是第一次构建运行时逻辑是如此容易和容易。过去,即使不是最适合工作的工具,每个人都使用可用的工具“智能合约”建立他们的“去中心化应用程序构想”。

随着Substrate的推出,有一个新工具可用于构建您的去中心化应用程序;但同样,认为您的所有想法都应该是Substrate Runtime Module是错误的。

相反,作为社区的第一次,我们有两个工具,我们需要一起弄清楚哪种情况最适合每种情况。我认为目前尚无所有答案,但是我们可以在此过程中学习并做出一些有根据的猜测。