“幸亏我这次认真复习了 不然就考不上清华大学了!”
“如果没有睡懒觉 我就可以赶上今天的飞机了!!”
“幸亏我只吃了半碗饭而不是一碗饭 要不就会感觉到撑了。”
人们在看到发生的事实时,经常会设想与事实相反的另一种可能性。这种心理活动被诺贝尔奖获得者Kahneman 称为反事实思维(Counterfactual Thinking)。那么,Counterfactual 和区块链有什么关系呢?
本文主要介绍笔者在区块链 CounterFactual 方面的学习和思考,以及通过 CounterFactual 我们可以做些什么。
01
什么是 CounterFactual?
CounterFactual(CF),翻译为中文为‘反事实’,用于描述自然语言中的“如果-那么”陈述,意思是某件事情虽然可以在现实中发生,但事实上并不是真实发生。
图 | 网络
从区块链的角度看,CounterFactual 的意思是:
一个交易的结果是可以通过在链上执行得到,但是事实上它的执行结果不是在链上执行得到的。
在区块链的链外扩容技术中,CF 指的是 CounterFactual Instantiation,源自 L4Lab 提出的一种基于状态通道的链外扩容技术,在区块链研究领域中被大家广泛学习,并推广为一类区块链扩容的设计思想。
CounterFactual Instantiation(CF 实例化),指的是智能合约不需要在区块链进行实例化部署,而只需要部署到链外 CF 状态通道中。只要智能合约的所有参与用户都按照 CF 状态通道协议中定义的方式进行操作,这些操作在状态通道中执行的执行结果,和在区块链上的执行结果,两者是完全等价的。
简单说就是:链外 CF 状态通道可以达到和链上相同的结果。
注意,这里的结果不仅是智能合约的状态数据,也包括区块链的 trustless 属性(核心为区块链的可追溯和难以篡改属性)。既然两者结果相同,考虑到区块链性能方面的局限性和链外方案的经济性,为什么不将多数的智能合约操作转移到链外完成?
02
CounterFactual 状态通道
在 L4的白皮书中,CF 状态通道协议的定义如下:
CF 状态通道保证,对于任何链上操作 X,如果用户通过 CF 的方式在状态通道中执行操作X,那么:
1. 操作 X 虽然在状态通道中完成的,如果用户愿意,也可以将其放在链上执行;
2. 操作 X 在状态通道完成后,任何参与状态通道的人都可以将操作X同步到链上;
3. 操作 X 在状态通道中完成后,参与状态通道的人可以等价地认为操作 X 的结果一定可以在链上完成终局。
03
解析 CounterFactual 状态通道
作为一个程序员,看到一个应用协议后,必然首先验证协议设计的完整性,分析协议的可行性,建立协议的应用边界,最后思考如何实现。
图 | 网络
现在我们看 CF 状态通道定义中的三点要求:
第一点定义了 CF 状态通道和区块链执行环境的等价性。任何状态通道中的操作在两者执行环境中必须是完全等价的,所以用户选择哪个执行环境是协议无关的;
第二点基于第一点,定义了 CF 状态通道的公平性和 trustless,也可以说是CF状态通道的安全性。状态通道对于任何参与人都是公平的,每个操作引起的状态更新对于所有参与人都必须是可见和可验证的。基于第一点的操作等价性,任何人都可以直接将其同步到区块链上,因此对于状态通道参与人来说,CF 状态通道安全性可以认为是和区块链等同的;
第三点定义了 CF 状态通道的一致性和终局性。状态通道中的操作和通道状态对于所有参与人必须是一致的,并且必须是即时终局的。这一点保证状态通道本身,在所有参与人的范围内的可追溯和不可篡改。
04
后记
从上面三点分析,我们可以看出 CF 状态通道完全继承了区块链已有属性,比如一致性、难以篡改、安全性和终局性等。因此把 CF 状态通道作为链外扩容方案,不会对区块链应用带来安全上的损失。
图 | 网络
接下来的技术视点中,我们会继续对 CF 状态通道协议的进行分析,看看它的应用边界。