停机问题,指是否能在不执行完一个图灵完备的程序下判断程序能否终止。通过反证法可证明这是不可能的。而区块链中的智能合约,由于需要在众多节点中运行,能否停止这是需要考虑的。
一般,思路有三。计步器,通过计算程序执行步数限制程序停止。计时器,通过程序执行时间限制。图灵不完备,去掉循环类功能,程序本身的长度被限制。
各项目的解决思路
比特币:
图灵不完备,没有循环类功能。
以太坊:
使用虚拟机solidity,虚拟机内部计步。
EOS:
储存资源需要付费,CPU和网络资源采用抵押制。预先抵押一部分资金用于购买CPU和网络资源,一段时间后返还。
关键在于,CPU消耗采用计时的方法判断,不同机器不一样,采用抵押不扣费,促进合约使用者存入更多资金。
Fabric:
计时器,在peer节点中可配置链码执行超时时间,一般为30秒。
NEO:
多语言编译器,将各种语言翻译成NEO虚拟机支持的指令集。
其他:
Qtum使用solidity,IOTA使用abra语言,都是包含计步器的语言。
参考:
http://docs.neo.org/zh-cn/sc/introduction.html
https://blog.csdn.net/w7849516230/article/details/81108651
https://www.8btc.com/article/228911
https://blog.csdn.net/weixin_39842528/article/details/80922647
https://blog.csdn.net/ITleaks/article/details/80754175
https://blog.csdn.net/ITleaks/article/details/80743836