从0开始学区块链:“危险”的智能合约?

区块链  点击:   2019-02-13

专员在之前的《学区块链》的系列文章中,已经比较详细的介绍了一些共识算法,密码学以及其他的区块链的一些基本概念,相信大家已经对区块链技术的基本有了大致的了解,虽然专员在某些概念上有所偏差,但是专员觉得在大致的方向上专员是不会错的,大家要是有什么其他的意见也可以尽情的提出来,专员也一定会积极采纳。

在上一篇《学区块链》的文章中,其实我提了一个概念叫做DApp的概念,但是在讲这个的时候,一定会有一个绕不开的话题叫做“智能合约”,现在我们所知的DApp基本都是建立在智能合约的基础之上的,排序一些类似于基于IPFS的分布式开发应用。

大家也知道,前段时间很多的代币都出现了问题,比如说BEC等等,其实这些代币都是基于以太坊智能合约发放的ERC20的代币,至于ERC20是什么?

大家可以先行到网上可以搜索一下,专员不多介绍,其实就是一个以太坊自己制定的一个标准,你的代币合约要有哪些变量哪些方法等等,算是一种十分特殊的智能合约。

而大家都知道,比特币与以太坊的最大区别,除了一个是UTXO模型和账户模型的区别以外,另外一个重要的区别就是智能合约,这也是为什么以太坊会被称为区块链2.0的原因之一吧,当然专员觉得比特币本身是支持一些简单脚本的执行,在某种程度上也算一种及其简单并且受限的“智能合约”。

言归正传,讲了这么多智能合约的重要性之后,专员跟大家来聊一下智能合约到底是什么。专员在跟其他非区块链工程师的聊天过程中,他们经常会问我一个问题?区块链中的智能合约,与我们现在传统的数据库中的存储过程有什么区别?

其实从技术的角度来讲,在某种程度上存储过程跟只能合约的作用的确有点相同,都是一段代码的执行逻辑,只要满足一定触发条件便会执行并且能够改变某些数据存储的状态等等。

但是专员觉得,智能合约跟存储过程还是有比较大的区别的,智能合约不仅仅是一个开源自动执行的计算机程序,我觉得只能合约更像是一个区块链系统的参与者,他能够对他接收到的事件以及信息作出及时的回应,根据接收的信息存储相应的价值,同时他也可以通过事件订阅向外推送相关的信息和价值。

另外,我们都知道现在的以太坊也好,还是其他公链也好,一旦部署上的合约是不允许篡改以及升级等等操作的,这样的话,专员觉得智能合约其实也像一个被大家所认可的电子合同,我们也可以称他为一个可以被信任的人,他可以帮我保存部分的资源,并且总是按照事前既定好的规则进行的,并且这个规则也无法修改。

但是换个角度来看,专员觉得,这样也容易出现一种情况,我们都知道作为一个程序员我们没办法百分百肯定的说我们写的这段代码没有bug。

智能合约由于区块链的公开透明以及不可修改的特性,我们可以从链上查询某个合约的完整代码,假如我们没有实现对这个进行十分完善的测试就上链,其实一旦某些黑客进行代码review找出问题进行攻击,其实就容易造成无法挽救的后果,我们也知道BEC等合约也正是因为这种情况下出现的问题,最后的处理结果也只能通过映射重新写一个合约进行部署。

因此专员其实觉得,智能合约确实是一个好东西,也改变了颠覆了整个区块链世界,但是这个的确是一个双刃剑,相对于比特币那种十分简单的转账功能以及严重受限的脚本来说,我觉得智能合约也是较为复杂的一个东西,但是往往都是越开放的东西越容易出现问题,专员觉得这么多智能合约的开发者,需要对自己写的智能合约进行十分完善的测试,避免出现类似BEC等情况的出现。

专员也相应,会有更多的智能合约的安全检测工具出现,比如形式化验证等等,技术一直在发展,我们也不用过分担心,需要保持一个敬畏之心,帮助他更好的发展而已。

相关文章
推荐内容
上一篇:区块链技术风靡全球 听听这些行业“大佬”怎么说
下一篇:区块链社区媒体链财经完成千万级Pre-A轮融资
Copyright 超级范文网 版权所有 All Rights Reserved