Smart Contract: 带你重新认识智能合约
智能合约是 19 世纪 90 年代由尼克萨博提出的理念,那个时候由于缺少可信的执行环境,智能合约这项技术本身并没有被广泛应用。在比特币诞生之后,人们意识到了区块链底层的技术,可以为智能合约提供可信的执行环境,也正因为此,以太坊发布了白皮书,并致力于新一代区块链平台的建设。
智能合约具备法律效力吗?
没有。智能合约从来都没有打算成为法律条文,智能合约是存在于计算机世界的一些约束,况且许多现实生活中的物体,并不能同步到互联网上面来。智能合约可以解决一部分特定领域的问题,但是并不能解决所有问题。
如何确保合约的执行?
法律条文之所以拥有强大的公信力,是背后有法庭,也就是政府在背书,早期现代思想家托马斯·霍布斯认识到了合约执行的问题:
“bonds of words are too weak to bridle men’s ambition, avarice, anger, and other passions, without the fear of some coercive power” (Leviathan, p. 69).
同时他也认为,如果想要合约被正确的执行,背后一定必不可少一个暴力机构在督促大家。
基于这个观点,尼克萨博提出了智能合约的概念 -–-- 运行在可信硬件上,并且不需要依赖法庭的合约,而区块链技术,正好满足了这个需求,并且具备计算能力,可以运行特定的逻辑代码在上面。
智能合约可以替代合同吗?
可以,智能合约可以在有限的条件下替代合同,但是目前的以太坊智能合约平台,依然有着不小的改进空间。
例如在 P2P 交易的场景,买方口头承诺在卖方发货后打款,在此场景下,先履行合约的那一方就会承担对方毁约的风险,比如卖方先发了货,买方不打款,或者买方打了款,卖方毁约不发货。
为了解决这类问题,我们通常会引入一个第三方作为担保机构,担保机构要足够的中立,不偏袒任何一方,并且不能私吞这笔钱,常见的类似服务有阿里巴巴出品的闲鱼,新加坡本地的 Carousell。
但是如果我们用基于区块链的智能合约来实现呢,对区块链技术了解的朋友可能会知道,代币转账必须由持有人发起,也就是说,在 ERC20 的设计中,智能合约并不能从别人的账户中转走钱,打给另一个人,这就导致了智能合约实际使用起来并不是那么智能。
好在以太坊生态圈不断有新的协议提出,例如 ERC777,在 ERC777 标准中,每个账户持有人,可以在任何时间指定或者撤销一名授权的操作员,基于这项协议,交易相关的智能合约会比之前更加灵活。
互联网时代的合约
随着区块链技术的问世,以及智能合约社区的蓬勃发展,智能合约正在被越来越多的人接受,不可否认智能合约仍然需要增加更多功能才能被广泛的使用。
尽管智能合约还处在一个刚刚起步的阶段,但是在一些法律无法触及的地方,或许智能合约可以比法律条文更快的满足人们的需求。
智能合约在互联网时代,给人们带来了激动人心的革命性机遇,它在减少事务的中间环节的同时,提供了安全,透明,以及无限的可能性。
智能合约:新能源自由化交易的引擎
在传统的能源市场中,大部分电力能源由少数几个大型发电站进行生产,并由国家电网机构控制电力的传输以及交易。由于市场的垄断性,消费者并没有太多的购买自由,从而极大的限制了交易的公平性以及能源市场的自由化。
随着新能源技术的发展,利用可再生能源进行发电的成本以及技术门槛在逐步的降低。因而,越来越多的小型发电站采用可再生能源进行发电并参与到能源市场的竞争中。如图一、二所示,在新能源的参与下,能源的供给模式由集中式逐步发展为分布式,极大的增加了能源市场的自由化程度。在这种情况,一方面由于新能源参与市场的竞争,使得新能源变得“有利可图”;另一方面,由于资本的注入,可以进一步加速新能源技术本身的变革,从而进一步降低可再生能源进行发电的成本。
新的市场模式必然需要新的技术支撑。目前,采用区块链技术进行能源交易已经变得越来越普遍。这是因为区块链技术采用分布式记账的方式,可以在无中心控制的条件下保障交易的公平性,有利于打破整个市场的垄断,实现完全自由化的交易模式。
那么,如何利用区块链技术实现各种复杂的交易模式呢?答案是智能合约。如图三所示,我们可以采用智能合约的方式构建虚拟的能源交易市场。简而言之,交易的规则,如定价,成交量等,以智能合约的方式写入到区块链中。最终,交易方按照智能合约中制定的规则来完成交易并进行自动的付款。
那么在设计智能合约的过程中,我们应该考虑哪些因素呢?
首先,我们应该考虑支持的交易模式。例如,我们可以支持用户在实时市场中进行电力交易。在该种模式下,电价将预先公布,在结算时可直接通过用电量及预设电价计算用电费用。此种模式和传统电网的计价模式相似。
其次,当市场中存在多个卖方和买方时,我们可以采用竞价拍卖的方式进行能源交易。例如说,我们可以根据双重拍卖 (double auction) 来设计智能合约。在指定时间结束前,买方在区块链平台上提交加密后的出价及购买量,卖方则提交加密后的要价及出售量。当指定时间到达后,系统根据智能合约计算最终的成交价及成交量。
再次,我们需要合理的设计代币 (token)。由于智能合约在支付过程中,需要通过代币进行转账,因而代币的作用至关重要。尤其是代币与法律货币之间比率的浮动,会直接影响到整个生态的稳定性。一个比较简单的方法是使得代币与法律货币间对等,例如说一个代币对等于一美元法律货币。
最后,在智能合约的设计中需要考虑一定的惩罚规则。例如说,某一卖方承诺以一定价格出售一定量的电力,并根据智能合约达成最终协议。但是在规定的时间内,卖方并没有向电网中注入对应量的电力,这种情况下需要根据差额对卖方进行一定的惩罚,如扣款等。实际上,由于可再生能源的不稳定性(光照强度及风速的变化等),经常会造成卖方高估自己的发电量,从而造成实际发电量低于预定的出售量。在卖方竞价的算法设计中,也要考虑此种因素。