0

因此,我在他们的官方文档中阅读了有关比特币脚本的内容,并发现了这一行:“脚本很简单,基于堆栈,并且从左到右处理。它故意不是图灵完备的,没有循环。 ”我试图推理很难,但无法理解为什么有人会“故意非图灵完备”的语言。这是什么原因?如果一种语言成为图灵完备的会发生什么?进一步扩展,“没有循环”是否与非图灵完备的脚本有关?

4

2 回答 2

5

可能的原因:

  • 安全性:如果没有循环程序将始终终止。用户不能挂断解释器。如果,此外还有脚本大小的限制,你可以有相当严格的时间限制。另一个没有循环的语言例子是谷歌查询。如果谷歌允许循环进入,用户将能够杀死他们的服务器
  • 简单:没有循环使非程序员更容易阅读和编写语言
  • 不需要:如果没有业务需要,那何必呢?
于 2015-02-03T00:39:26.990 回答
2

主要原因是比特币脚本在处理/验证交易时由所有矿工执行,我们不希望它们陷入无限循环。另一个原因是,根据 Mike Hearn 的这条消息,比特币脚本是 Satoshi 的事后想法,试图合并他已经想到的几种类型的交易。这或许可以解释这样一个事实,即它的设计不是那么好,也没有什么表现力。

以太坊有一种不同的方法,它允许任意循环,但让用户为执行步骤付费。

于 2015-08-22T12:47:58.223 回答