知乎同名文章笔记,特此说明
智能合约
之前提到的一些技术,是支撑比特币正常运转的技术,使用同样的技术可以产生其他不同的应用,接下来我们来讨论一下整个区块链领域最热门,被认为能够改变世界的应用——智能合约
智能合约并不是合约电子化,而是——双方达成协议并签署后,无需第三方就可以强制执行合约上的内容,无法单方面撤销或者反悔的合约
想象比特币是这样一个黑盒系统,给定输入,返回输出:
- 输入包含交易信息:签名,金额等
- 系统验证,签名正确,金额合法并且没有被使用过,输出一个新的记录这些交易的账本存起来
- 同时把这些交易记录发布到网上
- 如果系统验证没有通过,那么什么也不做
在中心化的场景下,实现这个功能并不难,但是在去中心化的场景下就需要区块链的那套技术了
区块链与图灵机
如果把上述黑盒子的输入和输出改变,实际上这个黑盒子可以处理去中心话的几乎各种需求
图灵当年设想了一下人类所有的思维活动,发现其实一切计算,一切思考,无非是几个简单的逻辑动作
于是,他就设计了一个可以模拟一切人类思考和计算行为的机器,叫做图灵机
而刚才我们提到的黑盒子也是一台图灵机——你想得到的,区块链都能做
而以太坊,就是一个(接近)图灵机的黑盒子
换句话说,以太坊是台计算机而不止是一台记账的机器
记账系统只是一个软件,而以太坊的功能是可以装几乎任何软件,实现几乎任何功能
假设我们要在以太坊上装一个象棋程序可以这么设定:
- 输入:
- 象棋程序,内含规则,胜负条件等
- 双方各10个数字货币
- 双方每人一步输入自己走的某一步
- 黑盒子:
- 按照输入的象棋程序中规定的规则读取双方输入,判定双方收入合法性,以及最终结果,按照给定规则输出
- 输出:
- 更新账本,将20个数字货币转入赢家账户
从这个角度上看,区块链又是什么呢?
区块链其实是把中心化的黑盒子搬到一个去中心的,不安全的网络中的技术
为了能让黑盒子正常运行,区块链主要干了两件事:
- 用密码学防止内存中的数据被篡改
- 用共识算法保证只要大部分节点是好的,这个黑盒子就能正常工作
这是区块链真正让人兴奋的地方
性能瓶颈
由于工作原理,区块链的黑盒子与传统的电脑有很大不同
传统电脑的瓶颈主要在于运算速度,而分布式系统由于使用了共识算法,输出结果才是瓶颈所在
黑盒子的性能非常有限,体现在两个方面:
- 前面提到了,输出速度是有限的,算的再快没有用,只要结果的数据量大,或者节点太多,最终的输出都会卡在这里
- 如果某个运算需要用到输出结果的话,这个问题会被放大
所以这就要求黑盒子的程序需要尽量少的确认结果,(例如A + B + C + D,最后对一次答案就行了,不用做一次加法对一次答案)
但是对于某些场景这个优化方案不适用,因为需要严格的时序,比如转账消费,需要在交易发起的时候就验证交易的合法性
法律和伦理问题
假设我们设计一个盒子,然而发现这个盒子跟我们想象的不一样,怎么办?
一个分布式共识的系统,如果出了问题该由谁负责?
如果有人利用这个问题获得了本不应该获得的好处,是否算是犯罪?
一个理想的角度来看,自然是设计者负责,而由于漏洞所获得的好处不应该是犯罪
但实际上现实要比理想复杂的多
最著名的例子,就是以太坊的DAO事件
DAO是一个以太坊成立之初就高调成立的,认为去中心化和以太坊可以解决一切问题的组织
某一次某个智能合约出现了问题,黑客利用漏洞转走了360万以太币
最终的结果是以太坊用硬分叉逆转了这个结果,然而也导致了以太坊分裂为了如今的以太坊和以太坊经典
在这里我们来看看这件事揭示的问题——
- 我们的社会不是代码组成的。“代码即法律”听起来很美好,但是作为法律的制定者的程序员们能否承担起可能承担的后果
- 事实上类似的问题不是第一次出现,但是硬分叉是第一次。所以当问题足够严重时,就必须做出选择,是保存规则的公正还是破坏游戏规则让系统继续运转下去
- DAO的黑客没有收到起诉,他自己也不认为自己做了一件错事——代码就是法律,他做的事是法律所许可的
以上三个问题是智能合约所面临的最大问题
专用和通用之间的矛盾
在共识网络里黑盒子的可靠性和使用的人数挂钩,所以,无论黑盒子是否通用,都会被宣传成通用的,以达到让更多人使用的目的
但是通用的意思是可以接受任何输入包括死循环
以太坊为了防止这种现象发生用了一个非常聪明的方案——给所有运算加上了运算费
然而这个钱是付给打包这个程序进区块的节点的,收到奖励的只有一个人
所以产生了一个问题,衡量程序的运算是否值得被打包的是由一个节点控制,所有节点都需要被迫运行这个程序
一旦运算量过大,算力小的节点可能会退出
所以这个方案并不完美,需要找到其他的方式
这里就面临一个选择:
- 面对一个具体应用,实现具体功能实现可量化的安全性
- 提供一个类图灵完备应用,其中有各种条件限制,有更大概率出bug
两条路都有人选,但是后者用户量更大,更容易拿到钱
以太坊选择了后者
尽管以太坊现在还不是一个完美的系统,但是以太坊勇于承认错误并修正
以太坊走在一条正确的道路上