python智能合约编程 -- pyeos简介

2017-12-20  本文已影响655人  learnforever01

pyeos的最初的目的是研究Eos的实现方式,添加了python作为智能合约语言。解释器最早用选用的是cpython,后来改用了更小更灵活更高效安全的micropython作为解释器。python的优势在上一篇文章中已经讲过了。但是要将python作为智能合约语言运行在eos上面,却并不是简简单单的wrapping一下C/C++的代码那么简单。智能合约会在所有的全结点中运行,这也就意味着如果智能合约语言的某些漏洞,例如缓存溢出漏洞,受影响的就不仅仅是单个账户那么简单了,还有可能会影响到运行智能合约的所有主机,这有可能是灾难性的。这就是为什么不建议智能合约设计得过于复杂的原因。复杂度越高,意味着越难维护,同时也面临更多的安全威胁。python从Guido van Rossum发布第一个版本的1991年到现在,已经有26年,可以说python已经是非常成熟的技术了。期间python是在不断的演化,也产生了很多的变种(例如micropython就是一个面向嵌入式的python变种)。可以说python已经聚集了一大批的人才,并且已经形成了强大的社区,这给python提供了强大的后盾。

为了满足智能合约对安全性的要求,还是要对python作出诸多的修改,以限制python在智能合约中的行为,具体如下:

虽然以上的限制已经对python智能合约提供了比较完整的支持,但是并不能保证恶意的python智能合约代码完全不会对系统造成破坏。一个系统不论是多么的完善,终归是有漏洞的地方。尽管micropython已经被大量使用,解释器也已经很成熟了,但是相对来说仍然是比较复杂的,并且micropython并不是一种专门为智能合约而设计的语言,仍然存在是一些非可控的因素,但是这并不能成为我们不用python的理由。目前,已经有了完善的对python代码进行sandboxing的方案,例如 可以将python代码的执行放到一个如docker这样的虚拟机中执行。所以,在python代码的安全性方便,也不必过于担心。害怕问题的产生是没有用也是没有必要的,因为对策总是有的,要的只是选出一个最优的方案。将来也会对pyeos的python智能合约的代码的运行机制进行进一步的完善。

当然,除了上面的措施之外,在人方面,设立奖罚机制。对发现系统漏洞的开发者以适当的奖励,对恶意智能合约代码提供检出机制,加大作恶的成本,使作恶的成本大于收益等等方面的措施,也是很有必要的。

python作为智能合约的优势明显,并不能因为担心python的安全性就弃之不用。实际上,任何的智能合约都有其要面对的安全性问题,我们要做的是发现问题,解决问题,并作好解决未知问题的准备。

上一篇 下一篇

猜你喜欢

热点阅读