Post
线性类型在区块链上的意义
在线性类型最早的设想里,“世界状态”更多只是程序内部的一种抽象;而区块链提供了连续状态和可验证持久化之后,这种抽象第一次更接近现实资产与对象的表达。
那天看到一篇很早的论文《Linear types can change the world!》。刚看到题目时,我还在想老技术人吹牛也挺猛,一个类型系统就想“改变世界”。再看才发现,这里的“世界”说的是编程语言里的世界状态。
函数式编程语言一直容易被人吐槽的一点,就是状态变更不够直觉。所以作者想借助线性类型的特性,也就是“变量只能被使用一次”,来表达一种更接近世界状态变化的机制。
不可被复制也不可被销毁的变量,听着好像有意思,但这个特性只在某个程序运行时构造的世界里能发挥作用,如果程序停止了,世界状态被销毁了,或者存到磁盘里了,这个特性就没啥用了。在计算机这个信息世界中,不存在不可被复制的数据。
但区块链出现之后,这件事突然多了一点现实感。
- 区块链执行每笔交易时,都是在上一笔交易留下的世界状态基础上继续运行,所以运行时状态是连续的。
- 共识机制又保证了持久化下来的状态不会被随意篡改。
这样一来,如果我在智能合约里 new 出一个 Object,并且它是一种不可复制、不可销毁的对象,那它就会持续存在于这个世界里。如果再给它定义特定销毁条件,比如它是一块木头,只有经过火炉才能“销毁”,那程序世界里就开始具备了一种更强的资源语义。
这样可以把现实世界通过新的方式映射到程序世界,扩展出许多新的编程模型以及应用场景。比如,映射各种资产,无论是 Token 还是 NFT。感觉开启了一个新的编程世界。
原微博中的媒体

