智能合约的两种用法

关于智能合约,我已经写了不少文章了,足以说明智能合约的重要地位,至少我是这么认为的。一般人参与区块链世界里的入口,就是这个智能合约;去中心化的架构可以有很多,比如EOS或者以太坊,共识协议也有多种,比如POW或POS,或者DPOS,但是它们都是底层协议,都是基础,而可变的,可编程的,就是智能合约。

由于我所在的行业是银行业,这是一个非常传统的行业,风险永远是放在第一位的,因此不论是产品创新,还是技术创新,都面临非常大的阻力,因为一个“规章制度不允许”,一个“从来没做过”的说辞就可以把一个创新项目给干掉。

但是,区块链的盛行也让银行看到了机会,我也奋不顾身投入了我们单位的区块链应用的研发当中。在整个过程中,我深刻体会到冲突并不仅仅体现在公司内部的机制上,更体现在我们每个人长期固守的思维方式与新科技所带来的新思路上。

从对智能合约的使用上,就经常出现两种截然不同的方式。

由于现在所说的智能合约基本是图灵完备的,所以理论上所有的业务逻辑都能实现,于是这就决定了最常见的一种使用方式是直接把区块链当成是一种数据库来进行访问。于是,对于我们长期从事中心化系统开发的人而言(好吧,基本上所有人都是这样的),第一种使用智能合约的方式是下面这样:

智能合约的两种用法_第1张图片
一般使用智能合约的方式

通过这种方式可实现对底层数据(DATA)的设置(SET)和访问(GET),也正是因为智能合约本身就支持这些功能,在进行应用研发的时候又只是常常将区块链作为系统的一个辅助部分,因此用着用着就把区块链当成一个数据库了。由此带来的最常见的困惑是“这跟数据库有什么区别?为什么要用它?效率还低。

因为在常见的产品开发中,我们自己会同时把自己想象成这个产品的使用者,于是才会出现上面这样的误区,这就是思维固化造成的影响。因此也难怪会把一个分布式的产品当成中心化的数据库来使用了。

但是,我们知道区块链是一种基于P2P的对等网络结构,是一种去中心或多中心的技术架构体系,而智能合约呢是这种分布式结构里执行的统一规则,有了这个认知,我们才明白之前的误区是源自于我们的思维里欠缺一个维度,那就是:在“我”之外,还有其他的参与者。

于是,第二种使用智能合约的方式是这样的:

智能合约的两种用法_第2张图片
第二种使用智能合约的方式

同样都是对数据(DATA)进行设置(SET)和访问(GET),但是执行的主体和场景已经发生了变化:其中一个人设置数据,一个人访问数据。这种方式的巨大意义在于:在分布式的复杂场景下,对数据(DATA)实现了一种统一的业务规则(SET和GET),可以实现对数据的共享。

对于联盟链的场景,封闭的企业之间数据可以进行互通了;对于公有链,网络的所有信息可以对所有参与者透明了。而且,这个规则(即智能合约实现的代码)一经实现,不可篡改,永久运行。

我们可以把上面这个例子再复杂化一下,大家就知道智能合约的威力了。下面对上面的规则进行了扩展:

SET: 存入资金,比如ETH

GET:获得资金,比如ETH

DATA:如果明天天气为晴天,则将所有赌天气不为晴天的资金,全部奖赏给那些赌天气为晴天的人(ETH地址)

于是这就成为一个简单的“赌博合约”了,很显然,使用传统的方式来使用区块链,这貌似是一个然并卵的设计,因为是自己和自己对赌,而在区块链公有网络里,就成为不同参与方的博弈游戏,智能合约以一种简单的规则约束了各参与方,并兑现最后的结果。

那么,说到这里,您是不是对智能合约又多了一些了解呢?

你可能感兴趣的:(智能合约的两种用法)