区块链技术概观(五):以太链与智慧合约

时间:2019-07-27       来源:

今天我们先来谈谈智慧合约(Smart Contract)。之前笔者稍稍提过以太链是最早把智慧合约讲得很大声的区块链技术,那幺智慧合约具体来说是什幺呢?其实在 1990 年代,就有许多专家想要利用具有足够公信力的系统来自动执行商业合约,兼通资科与法律的专家 Nick Szabo 在 1994 年就提出了让合约能自己依照条件自动执行的观念,因为这种合约不用人力执行,又具备公信力,因此看起来非常聪明又厉害,所以称之为智慧合约。

智慧合约的概念及执行

虽然智慧合约可以自动执行,但在商业世界中合约执行不全然可全面数位化或全面在统一媒体上进行,所以智慧合约执行中间,当然还是需要人参与。好比说我们买卖一栋房子,即便双方都谈好用以太币付款,但实际上房产转移的授权目前是登记在各政府管理机构,因此我们的智慧合约虽然可以依照双方的条件设定自动执行,但能否执行完成,仍要看合约执行状况而定。为了达成这种目的,智慧合约的写作必然以程式语言撰写,且大多不会用到太複杂的程式语言,仅需要有商业逻辑、基本代币、变数等功能即可。我们举一个範例,好比甲乙双方同意以以太币 100 枚买卖一辆车,双方即可用以太币钱包设立一个智慧合约,即是写一段程式,先由乙方帐户扣住以太币 100 枚,然后检查甲乙双方是否同意此交易成立(通常是由送钱者下达指令),然后交易成功。

问题来了。当初发明智慧合约的目的听说是……「听说」是要取代公证人和律师的,当然就前段文字看起来,肯定律师都要失业了!但世界绝对不像笨蛋想的那样简单啊。如果甲方交车后,乙方仍然不同意转帐要怎幺办?如果智慧合约有时间限制,时间一到,钱可是会自动退回乙方的!或甲方明明没交车,却强迫乙方转帐又如何?或是车辆保固有问题又该如何?现实世界变化多端的情况,无法在同一个区块链媒体反映出来,因此智慧合约到目前为止能处理的事仍相当有限,毕竟合约有争议时的处理方式仍必须回到现实世界。近来有许多脑补作家老是喜欢讲有了 XXX 科技后,OOO 就要失业了。水电工协会认为这种危言耸听的言论实在很不可取,同时他们分析的方法也充满诸多不科学之处。

以太链上的智慧合约

区块链上的智慧合约通常必须以高阶叙述型语言写作,各位相当幸运的是,水电工协会认为这系列文章介绍写程式不符合主旨,所以您一行也看不到。同时我们在前几篇都有提到,区块链十分麻烦的一点,就是它是一个共识型的演算法,也就是说,这个程式的执行不是只在一台电脑上,而是在上千台电脑(挖矿主机)上执行,且必须得到相同的结果。如果老是跑出不同的结果,那幺根本没有公信力可言(试想我们公证一个合约,结果有一半的挖矿机认为现在合约成立了,而另一半认为合约根本不成立,那幺我们要相信谁?)以太鍊的智慧合约在设计上,可接收各种区块链出现的讯号(称为事件 event),进而决定程式走向,也就是当用户把合约写出来公告后,就有上千台挖矿机盯着新区块中有没有与这个合约相关的控制事件出现,如果有,就会执行对应动作。合约的执行结果有可能写回新事件进区块链,也可能只是转帐事件(与比特币一般转帐是一样的动作)。

由于执行智慧合约要花额外的计算力,对挖矿节点及网路运行成本都有影响,因此以太网路定义了一种叫 Gas(瓦斯)的单位,智慧合约每执行一种函数就会花掉固定的 gas,而 Gas 本身要靠以太币来购买,同时间内能使用的 gas 数也有限制。以太链就曾因为 gas 消秏值定义过于宽鬆,而造成差点全面瓦解的危机。

以太链社群非常自豪地提出智慧合约等同一个 VM 的说法,但是就底层协定及区块链的性质来看,其实还差很远。以太链的智慧合约程式执行上不会如一般电脑,因为区块链本身特性使然,它就只能当一个动态的公开储存媒介,因此想要在上面跑程式,必然是以事件驱动,无法由单一电脑本身不断执行。打个比方,如果我们流程写明这笔款项 3 天后若没有得到同意就会自动退回,结果 3 天后都没有人触发这个智慧合约,那幺这笔钱就会卡在合约里,一直到合约用户有一天触发它才会真的退回款项。除非您这个程式的执行结果根本不必要公证至区块链上,否则必然如此。不过如果不公证,又何必使用区块链智慧合约呢?

以太生态系

以太链的发展并不单纯把自己当成比特币来用,而是希望能利用区块链的力量来发展更多新应用,所以在设计上以智慧合约的能力为基底,发展出许多可加的能力,中间运作的要件之一就是代币(Token)。代币是以太链中可用于智慧合约或区块链事务的东西,像游乐场代币一样,以太链的智慧合约程式,如果搭配外部相关程式,就可以组成 DAPP(分散型应用程式),好比您可以把用不到的电脑计算力租给有需要的人,就安装某个有租用功能的程式,这程式会让租用人以某个代币 A 来支付包租公所有费用,这样一来以太链就成了公证人,双方就可利用它来交易过剩的计算力。这个代币也都可换成以太币,因此以太币就成了通用货币,支援其上所有应用程式。要发行代币或是 DAPP 都需要一定支持,因此写计画书就成为重要的一关,有兴趣的读者可自行前往相关社群研究。

代币也可做工作用,好比 DAO 代币就是以太币设计用来表决重大事项的一种代币,好比 DAPP 能否发行、是否要引入新技术、产生分支时用户支持那一边等,都可以用代币直接投票。

现存的以太链分散式应用专案

台湾创业市场一直以来都走得让人很无言,除了短视近利,还有不断把杂货生意往网路上搬的模式变成台湾创投主流。我们来看看全球玩家在最近的区块链生态是怎幺玩的,以下是几个成功利用以太链功能开发的分散式应用程式专案:

Augur:顾名思义,这是个使用以太币来玩的未来事件交易所,它提供一组 API 给安装以太链节点程式的电脑,可以自行设定交易事件的目标,完成后就可开始交易。包括总统大选谁会胜出,到流星雨会不会撞到地球,都可以交易。

Melonport:顾名思义,这绝对不是一个卖香瓜的程式,有谁会用智慧合约卖香瓜呢?(农产运销公司表示肯定有机会)这是个让您自行利用以太链成立资产管理及交易的程式,您可以成立自己的基金并管理,不过很肯定的是,它目前只能处理区块链相关投资,如果是实体法币,这个程式无法和银行串连收发帐喔。

Golem:有一句口号已经喊到水电工协会都快把它做成镶金招牌挂在会议室了:「穷人的超级电脑」。Golem 似乎想翻转这件事,让穷人虽然用不起超级电脑,但是至少可以把自己的小电脑变成超级电脑的一部分,而且有钱拿!(不过这样一来,使用单位要付的钱可能就不是很经济了)Golem 号称用户都可出卖多余的计算能力,大家还记得过去那个一切为人类的时代,我们热血的水电工们免费下载寻找外星人、合成蛋白质的应用场景吧?在 Golem 上一切差不多,差别只在于这次您的工作量愈大,可以收到的钱就愈多。

总结

以太区块链是一个相当激进的社群,只要能赚钱什幺都敢做,而比特币社群的领头者一直在中本聪的阴影下遵守「避免资源集中化」的绝对指导原则,但在以太链就不是如此了。以太链除了设置複杂的智慧合约,足以让不够力的挖矿主机垮台,同时也有代币机制,让有资源的人可以大玩逼死散户的游戏。以太币的区块封装技术甚至要由 Pow 转成 PoS,新的协议 CASPER 即将取代现有的 GHOST,虽然在多方反对声浪中似乎很难如期上线,但新版以太币已设置了冰河时期及难度炸弹功能,一旦未来主流区块转至 CASPER,若现有矿工不就範,就必须自己修改程式,否则未来旧的以太币计算节点都会面临难度提升,且解开区块也没有什幺以太币可分的窘境。虽然以太币社群声称往 PoS 前进是一种进步,能提高安全性 20 多倍且省下挖矿消耗的电力,但水电工协会的资安专家对这种口号一向冷笑以对。新版的协议不谈技术面,光政治和经济面就搞出一堆问题:它将使话语权落入少数有大量以太币的人手上,同时降低以太币流动性;未来如果有骇客要找以太链麻烦,目标也明确得很!(现实世界中大家应该很难想像,如果华伦‧巴菲特出什幺事,美元就会变成废纸这种荒唐事吧?)

不过以太链社群努力在上面开创各种经济体系的精神还是值得注意,他们一直努力试图让自己成为各种数位货币资产的元币,虽然目前这个元币的地位,肯定还是稳稳的非比特币莫属!

(首图来源:shutterstock)

延伸阅读:区块链技术概观(一):让我们从历史文本说起区块链技术概观(二):资料分割与密码学区块链技术概观(三):多数决的运作结构区块链技术概观(四):以太币运作模式拆解