DeFi 算什么?从以太坊图灵不完备谈起
撰文: 王冠,区块链行业研究员,曾参与联合发起多个区块链技术社区组织和公链项目,毕业于东南大学建筑学院
万物皆计算
最近 DeFi 大热,可称现象级,很多人从经济学和互联网应用⻆度谈了不少,本文中我试着提供一种基于 计算理论 的不同解释。
以太坊 作为第二代公链代表项目。依照其白皮书愿景,旨在利用区块链技术在公共互联网上实现一台具备 图灵完备计算能力 的分布式计算机,相较于前辈比特币,最重要的升级是实现了图灵完备的 智能合约 。那么运转五年至今,以太坊上已有大量智能合约部署,这台计算机是否真的具备了图灵完备的计算能力,值得研究探讨,或许是我们透彻理解以太坊生态的关碍所在。
参照通用图灵机定义,如果把以太坊系统内各个地址 ETH (以太币) 状态视作图灵机字符表的一种编码方式,虽未能从白皮书上找到严格的数学证明,我们暂且从众将这种建立在 ETH (以太币) 这种编码之上的智能合约视作是图灵完备的,以便后续问题讨论的简化。
图灵完备相对论
先抛一个观点 :即使是一台相对系统内部计算图灵完备的通用图灵机,当其外部输入数据和内部编码之间映射关系存在 随机波动 时,那么使用该外部输入数据计算过程所获得的输出也未必是图灵完备的。
众所周知,链下世界大多数经济活动运转在法币系统上,各个经济体的法定货币某种程度上也可视为该经济系统内表示和传递价值的 Token 。我们可以从各个交易平台的价格数据观察到,法币单位价格和链上 ETH (以太币) 单位价格之间的映射关系始终存在波动,并未实现天然的锚定。
这种现象究其原因涉及到很多维度,一个可能的主因是货币价值的 信用来源 不同。法币信用来源于国家机器;而 ETH (以太币) 则比较奇葩,其信用来源是伴随区块链技术出现的一种创新形式:即通过 分布式的电力 能量输入 (PoW 挖矿) ,以 自组织 的方式产生信用,一些具体的讨论可参⻅《 比特币是怎么想的 》。
大部分时间里这两个系统的信用映射关系的变化率是 不等价 的,所以才造成了价格的波动,同样的波动现象还可以在各国货币汇率以及公司股价之间观测到。更进一步看,即使是运行在以太坊上各个不同合约中的 Token,其信用来源也同样具有多样性,典型如 ETH (以太币) 和 USDT 信用来源的巨大差别,故这些 Token 之间价格波动也是时刻存在的。
图灵机 本质上虽然是一个数学模型,但现实应用中要依托物理设备来实现,因为用于编码的经典信息形式离不开物理载体,大部分计算机、矿机的集成电路和晶体管就作此用途。有别于一台经典计算机的物理形态,在以太坊系统内,有着不同的矿机 (计算机) 类型参与合约的计算,虽然软硬件存在差别,但各个矿机之间通过 EVM (以太坊虚拟机) 输出的计算结果却具有 一致性 ,所以 EVM 从计算原理上也是这么一台图灵机,只是它虚拟的运行在区块链上。
一种可能的⻛险是,当我们使用 ETH (以太币) 作为编码,用以太坊这台图灵机来完成链下法币 Token 问题的计算时,由于两种 Token 之间价格波动导致的 编码错误 ,会影响该计算的图灵完备性。
这个问题乍看难于理解,但我们还是可以从 通用图灵机的结构 和 计算原理 入手讨论:
- 一条无限⻓纸带,纸带分成一个个格子,每个格子可以最多写一个字符
- 一个字符表,包含纸带上字符全集和一个空白字符 (表示没有字符)
- 一个读写头,读写格子的指针,可以读写擦去格子中的内容,可以左右移动一个格子
- 一个状态寄存器,用于保存状态,追踪 整个机器的状态 (运行,停止)
- 一个有限指令集,读写头在特定情况下应该执行的行为 (程序)
图灵大神在设计通用图灵机时,巧妙的把计算问题等价的转换为 机械运动 模型,当然这种机械运动不但可以通过物质化实现,也可以通过完全信息化的虚拟图灵机形态以抽象的信息方式实现。对于 ETH (以太币) 相对法币 Token 计算的编码混乱,我们也可以通过将其转化为 动力学问题 来讨论求解。把这种导致 ETH (以太币) 编码混乱波动关系,抽象成一个外部动力学环境对机械运动的图灵机计算干扰模型。
需要说明的是,在实际发生的情况中,波动导致的编码混乱会影响图灵机的各个模块,在这里我们只关注其核心定义模块—— 机械运动的转移函数 ,它规定了机器如何从一个格子走到下一格子,为了讨论问题方便,我们这里还需要对模型再做两次简化:
- 第一次简化 :虽然价格波动作为复杂系统的一种涌现,是一个随机非周期性过程,但却只有一个维度两个方向,假设我们可以通过一种映射关系把所有模块编码混乱都转化为图灵机读写头位移的随机机械抖动;
- 第二次简化 :虽然实际情况更为复杂,为了方便表示这种随机抖动,我们引入现代金融学中描述证券价格随时间演化模型,把这种抖动视作随机的布朗运动( 也称维纳过程) 。
作一个形象的比喻,对于链下法币表示价值作为输入的计算过程而言,以太坊就是一台 泡在布朗运动水分子 中的图灵机,且水分子的布朗运动能够显著影响图灵机读写头位移机械运动,当影响大过纸带上一个格子的间距时,图灵机位移函数的准确性就会失效,导致整个计算过程的混乱。而由于这种影响是随机发生的,如果整个计算过程中不能通过内部固有算法修正,计算就不再是图灵完备的,计算的价值大打折扣。
夸张的说,这种情况下, 泡水的图灵机 和猴子打字机又能有多少差别呢?有效的部分就只剩下对以太坊系统内部问题的计算了。比如在各项目发币时 (ICO) 作个 Token 状态的分布式存储工具,或者开发一些链上资产属性的 Fomo 游戏。
一台读写头连续受到外部布朗运动干扰的图灵机(Aero) & 猴子打字机,来源:Wikimedia Commons. New York Zoological Society
DeFi 上场,拯救泡水图灵机
和以太坊系统内部计算相比, 计算法币世界的问题 始终是诱人的,经济体量、社会价值不可同日而语,利润有多可观,看看法币世界金融行业就知一二。当然解决传统金融的问题,也是尼克·萨博提出智能合约概念的初衷所在。有激励就会有变化,大部分 DeFi 项目 在以太坊 Layer 2 搭建的种种结构,本质上是试图对抗 (矫正) 这种随机波动干扰,拯救泡水的以太坊图灵机。
DeFi 项目众多,虽然都是拯救,但各有各的干法,下面我们简要说说这些方案的底层原理 :
提高信噪比
计算通信不分家,如果把 价格波动 视作通信过程中的 信道背景噪音 ,不明原因无法准确消除时,干脆把原信号功率放大再放大,以达到对抗波动干扰,准确传递价格信息的目标。就好比两个游客在人群熙攘的广场上对话,为了让对方能清楚听到自己说话的内容而刻意提高了音量。如此以来问题的确是可以解决,但是要多浪费些力气,晚饭只好多吃一点。这里面多花的力气就是为了放大信号功率而额外付出的能量。这个 信号放大 的过程在 DeFi 里通过 上链预言机和公众质押池 实现。由上链预言机负责把链下价格数据不断「抓取」到链上合约中供进一步计算使用。多数 DeFi 项目里上链预言机节点本身需要质押 ETH (以太币) 对预言数据信用背书。
受限于预言机节点质押资产总量,当其不足以产生足够信用规模完成业务计算时。预言机节点所预言的价格数据信用,会经由一个 公众质押池 进一步放大。公众质押池对普通用户开放参与,只要你相信预言机节点上链数据的真实性,并及时补仓质押 ETH (以太币) 以应对价格波动即可。当然这里为了应对不可知的剧烈价格波动,一定是超额质押的,相当于提高了预言机的 信号功率 ,也难免会造成一部分资产信用浪费。即便如此,由于数字货币价格波动剧烈,极端情况下这套机制还是会因为背景噪音过大而造成宕机,请参照 3.12 行情。
对赌交易预言机
项目一般形式是一组普通用户可以开放参与的 链上对赌合约 。应对价格波动,由交易双方向合约打入 ETH (以太币) ,换取合约中原生 Token 表示的看跌看涨期权,同时根据算法产生出第三种相对锚定目标价格波动更小的合约内 Token,当然作为整个计算过程的输出,第三种 Token 有时候是隐形的存在。这种模型有着很多变种,但在本质上可视为一个「 赌⻢模型 」,每个博弈者使用自己认定的价格信息 (边信息) 输入合约,通过对价格波动概率分布的估计,承担相应的受益和⻛险。这个过程可以消除 ETH (以太币) 相对法币 Token 波动的熵 。同 ETH (以太币) 本身相比,合约中作为计算输出的第三种 Token 相对于法币价格波动的熵率大为减小,伴随着更大的能量 (信用) 输入, 逐渐逼近 链下法币价格。
信息论基础,Thomas M. Cover 与 Joy A. Thomas 著
博弈双方将自己的 ETH (以太币) 转入合约的过程,可以视作施加一种和已存随机抖动大小相同、方向相反的外部机械运动作用于图灵机读写头的过程。有了这些机械运动 (能量) 的相互抵消,计算过程中 ETH (以太币) 相对法币 Token 波动的 信息熵被擦除 。相当于在图灵机工作工程中,其内部同时运行着一个读写头抖动矫正的算法。
根据罗夫·兰道尔在《 不可逆性与计算过程中的热量产生问题 》文中对这种消除信息不确定性原理论证,目前我们可以理解到这种算法的能量 (信用) 输入水平和波动消除有相关性,但尚未⻅各 DeFi 项目有严格完备的数学证明,所以这种计算方式精准度最终还是需要用 DeFi 项目本身的 生命周期 来作评估。由于此类问题的复杂度有可能也已经和通用图灵机一样触及了人类已知的复杂度上限,最终未必能够找到数学上严格的证明,造物主大概也是用个体的生命周期来分布式解决 NP 困难问题的。
因为 对抗波动 的计算过程中耗费了能量,对应所耗能量的表示 Token 也应在系统中被擦除,具体表现为参与博弈各方资产应该有 罚没销毁 。如果系统内所有的数值都一直都在增加,我也很难理解这个过程的计算结果是可信的。引申一下,总觉得以太坊系统手续费应该伴随计算从系统中销毁掉,而非直接参与二次流转让所有 ETH 持币者买单,这样一台运转的图灵机状态如何算是复位 ?毕竟不能习惯性的认为以太坊和比特币系统经济体激励逻辑完全等价。
理论上,和提高信噪比的模式相比,对赌交易形式预言机的一个显著优势是:如果设置得当,擦除不确定性所耗能量可以和波动本身 恰好相等 ,而不需要像第一种模式里,由于不能精确计算波动而被迫花费额外能量。当然,这种优势仅仅存在于理论上,具体还要看每个 DeFi 经济体算法设计在现实中的实践反馈。
另外,对于这种 DeFi 模型,由于缺少质押资金池放大信用,能够处理的链下法币 Token 计算规模上会受限。
应该还有其它形式消除波动的 DeFi 模型,也有把上述两种方案混用的,因为项目实在太多太多了,体验又反人类,未能学习列举之。
还有些项目打着 DeFi 旗号,内核却还是个「 加密猫 」式资产 Fomo 游戏。又或者某些项目 Token 表示目标不是锚定链下法币世界,其资产属性和维度不在此文讨论之列。
计算的价值
有人要问,说了半天为什么非要 计算 啊,计算本身对我们又有什么价值?这就涉及到伴随计算机产业发展而生的计算理论了。简单来说,因为 Wolfram 在计算等价性原理中通过元胞自动机的计算过程向我们证明了:即使按照极其简单规则运行的系统,也可以演化出宇宙极限的复杂度。如果这个世界的很多问题包含此类不可约化的复杂,那么有些问题我们即使已知规则和数据也不能预判状态, 非通过计算不可 。而罗夫·兰道尔通过计算理论说明了:正是能量驱动计算的过程,可以擦除系统内不确定性信息,使得我们自身熵减,或者说获得薛定谔所谓的「 负熵 」,这个话题有点复杂度,后续开文详说。
从计算理论⻆度,曾经火爆的 ICO 只能算是完成了区块链的 ERC20 格式数据存储,算不上使用以太坊进行了完整的计算。很多项目发币以后,大规模链上转账 (可视为某种计算过程) 也就发生了一两次,然后大多数项目 Token 就进入了中心化交易所。 中心化交易所 是区块链宇宙的信息黑洞,里面发生的运算一致性不好说,利用这种类型经济体 Token 完成任何有价值的完备性计算便更加困难。
眼前 DeFi 热度和 17 年有几分相似,虽然每次进步,开放的市场中,都会有人利用信息不对称制造大量的泡沫,但泡沫消尽,总会留下些什么。伴随着 DeFi 落地生根,在 ETH (以太币) 相对法币 Token 波动率一定范围内,以太坊终于实现了可以 做法币价值计算 的图灵机初衷。区块链第一次通过自组织形式捕获了 Off Chain 价值,消除了价格波动,完成了图灵完备的计算,这难道不是行业一直期待的 Killer application 场景粉墨登场吗?
拓展开来,其实此类模型并不局限在区块链领域,具备着一定的普遍性。在传统经济领域,把 英镑 视为图灵机黑盒来计算 美元的问题 ,如果没有汇率交易来平衡两种货币价值信息关系的波动,计算也无法得到正确的输出。
计算的极限
假设你已经接受了计算的价值,让我们谈谈 计算的极限 。如果把以太坊 PoW 挖矿过程视为把真实的物理能量引入区块链,导致其系统内以自组织方式形成的耗散结构更有序。那么系统 相对法币经济体的信用 就是这种有序网络结构熵和法币经济体本身网络结构熵的差值。而 DeFi 通过消耗以太坊系统内这种有序结构熵完成计算,同时不可避免的导致以太坊系统熵增,那么 DeFi 能够计算问题的信用规模就受限于以太坊系统本身信用,所有 DeFi Token 信用总量是以太坊信用总量子集。在生物圈,能量随营养级逐级传递过程中,平均效率为 10%~20%。非常好奇这个效率在以太坊到 DeFi 生态中究竟比例如何,我只能说肯定 超不过 100% 。
完成任何计算 都有成本 ,即使你的计算对我的问题有价值,也要看我付不付得起钱。由于所有以太坊合约都共用一个开放的公共信道,目前因为 DeFi 活跃,造成了 Gas 费显著提升。究竟有多少法币世界的问题可以花费如此贵的 Gas 费用,完成计算后仍有持续利润,我们就不得而知了。
另外也正因为这唯一的公共信道,有些吹泡泡的项目,反而会故意放大波动,通过制造噪音,干扰计算谋利,也许支持加密计算的智能合约最终能够解决此类问题,目前无解。
一朵乌云
最后谈谈本文立论的 一朵乌云 ,在行文之初,我们默认了,相对于系统内各个地址 ETH (以太币) 状态而言,以太坊的智能合约是图灵完备的。但实际情况是,除了外部电力输入,以太坊作为区块链公链,并没有更多外部世界强制力能有效渗透入其系统内部对计算做修正或干扰。这种通过自组织实现的图灵完备,就像受到惯性力影响的图灵机,如果系统不能保证足够的能量输入冗余,其 计算结果的可靠性 仍是存疑的,当然也并非完全不能做有效计算,只是证明过程会更加复杂,计算中能够承载的信用规模也会随之减小。
举一个例子,伴随着计算,以太坊系统有 序度损失 ,用来表示系统价值的 ETH Token 为什么还增加了。感觉是 DeFi 吃完饭没给钱,抹抹嘴走了,然后所有 ETH Token Holder 一起代买单,总感觉以太坊交易手续费还是要销毁才对。
关于 DeFi 能够带给以太坊系统的价值,目前看来也还含糊不清。我这里缺少数据统计研究,只有一个简单的整体性指标。就是无论中间怎么传导,最终一定要以太坊系统整体在挖矿活动中「吃」到了更多的电力 (能量) ,使得系统有序度进一步提高,而 网络结构熵减 。这种挖矿能耗的增加和 DeFi 活跃正相关性越大越好,如若不然,就很可能是引发系统更快崩溃的「正反馈」,而非促进系统更有序的「创新」。
发散一下
发散谈几个脑洞大点的问题。
关于 DeFi 项目的 Fork ,DeFi 合约因为需要公共信用,所以一定是开源形式,加之目前公链信息存储是无加密数据形态,相当于在一个公共的计算机上跑着一个开源的算法。所以一旦算法能够捕获价值产生利润,这种算法的专有权就会受到挑战。传统世界是盗版拷⻉,区块链世界就是出现 Fork。说到 Fork 本质上是一种我们熟悉的区块链项目自我「 繁殖 」行为,类比自然界,只要生态位上还有未被捕获的额外能量供给,物种就一定会通过繁殖更多个体来填满冗余能量空间。
公链上的合约版权本质上是一种「 Open IP 」的新形态,故 Fork 从根本上无法杜绝,不过合约本体还是有机会利用早⻦红利建立起用户规模网络优势。既然没有正当性和有效手段阻止 Fork,不如顺应自然规律,为 Fork 提供便利,主动繁殖更多合约「个体」来占满相应生态位。同时要注意在合约中埋下伏笔,让所有 Fork 个体和本体与合约共享数据以及 Token。如此一来实现了跨合约通信和计算,就好似变成了社会化动物种群,业务的 拓展性和鲁棒性 都会提升,更有机会在各条公链之间实现数据跨链。
谈谈 DeFi 和 CeFi 的关系。
类似区块链和古典互联网,和 DeFi 相对应的 CeFi 一词最近也被点亮了。CeFi 外延更广,在区块链行业内最典型的业态应该算 交易所和稳定币 (USDT) 。无论具体形式如何,和 DeFi 最显著的区别是 CeFi 信用不是由区块链自组织实现的,而来自于项目方组织背书,字面意思就是中心化的信用注入。
中心化注入并不代表没有信用 (整个人类社会也是一个广义的自组织) ,相反大多数时候用户的使用体验是 又快又好 。只是大家根据 CeFi 在区块链上有限的公开数据无法判断项目的信用⻛险。⻛险未知就不能定价,不能定价的东⻄不叫⻛险,叫不确定性。面对 CeFi 时,用户要么不信要么全信,一旦遭遇⻛险,级别也不是灰犀牛而是黑天鹅,行话叫做 系统鲁棒性差 。
所以用户会根据自己对⻛险和成本不同维度偏好分流资产,最终 DeFi 和 CeFi 会捕获不同维度、不同场景价值。市场情绪过分自信时,来者不拒;市场恐慌时,价值会流向 确定性最强 的资产形态。所以对于眼前 DeFi 泡沫来说,很可能演化的情况是 DeFi 做菜,ETH 收汁儿,BTC 吃饭,无知无畏者买单。
对于更广义的 CeFi 业务,如传统银行和金融机构,其实区块链公链和 DeFi 提供了一个低成本的产品模型试验场。经过 DeFi 公开验证的业务场景,至少对抗了各种攻击,避免了封闭测试环境漏洞。一旦这些 链上经济体模 型实践 成功之后,又可以成为各个链下经济体之间价值互通、共同计算的桥梁,谁说信息孤岛只在区块链世界里才有?
目前以太坊上 DeFi 项目产品概念大多有着 CeFi 的影子。但是一个公共的,低成本的金融业务实验场,很可能会带来 开源软件 发展模式,DeFi 算法通过快速迭代超越被模仿的 CeFi 本尊,那么未来金融行业许多新算法和标准,很可能会由 DeFi 再反噬回 CeFi,让我们拭目以待!
最后想小小提醒一句, 图灵机 已经就位了,各位还在等什么呢?