前言:TrustBase是一个帮助全球开发者无障碍参与波卡生态建设的平行链。它允许传统的Web开发者、普通的Java工程师和其他常规领域编程人员也能以低门槛进入智能合约开发工程,以壮大Web3.0建设者的阵营。我们要做的事情,就是通过提供最基本的语言,让全球Web开发者共创波卡生态,实现Web3.0网络的目标。
我们在我们设想的Web3.0世界里,信用货币必然经受不住时间的考验。实物货币经历了几千年的考验,而所谓的“无锚印钞”的法定货币,历史却非常短暂。从1971年布雷顿森林货币体系(35美元与一盎司黄金锚定)崩溃算起,也不过49年的时间。
法币“无锚印钞”的结果,就是无上限加杠杆。而持续49年的加杠杆行为已经让信用货币走向一次比一次严重的金融危机。金融危机下因不断放水而失信的全球央行只好寻求黄金避险——这个金本位时代的古老货币锚。
我们认为黄金有着被造物主赋予的天然底层语言。它在分子维度里实现了稀缺、轻便和鲜明的辨识度。遍历人类历史,人们对黄金的共识,本质上是对这种“天然的技术”的崇拜。
技术经常反映了它的过去,只是会比之前更快、更优或者更健壮。2008年11月1日,中本聪坐在电脑前,最后审视着自己的杰作——《比特币:一种点对点的电子现金系统》。他点击了发送键,这篇论文便悄悄进入了极客网站的密码学邮件组。此时,深夜中熟睡的人们并不知道,一个全新的时代已经悄然拉开序幕,比特币和区块链将给社会带来多大的变革。
比特币是黄金的“天然底层语言”被复制到网络层的人为实现。在Web2.0的金融垄断环境下,比特币让人类看到了“货币自由”。这是在阶级森严的Web2.0下野蛮生长的新一代价值网络,这是反制美元霸权的新的外汇锚。
比特币成就的背后,是其底层脚本语言的精密搭建。我们更愿意把比特币脚本语言视作一件艺术品,它充满了结构的简单美和巧妙的智慧,它折射出了黄金的技术本质并充满了对金本位下健康经济的愿景。比特币的源码,是我们研发自身语言的伊甸园。
一个真正有价值的语言,必须足够简单。这里的“简单”指的并不是简陋,而是它必须像一个通用的模型。比特币的脚本语言和黄金一样,都使用了同一种侧重稀缺、安全的模型,但牺牲了灵活性。比特币系统很难出现智能合约生态,就源于这种灵活性的底层限制。
而在灵活性上做的最好的,不可否认是以太坊的Solidity语言,它几乎凭一己之力定义了区块链智能合约的成就。但目前来看,Solidity显得过于灵活了。例如,在作用范围内,Solidity的状态变量的定义声明与调用没有绝对的顺序关系,定义声明可以在调用语句之后。类似这样的特性允许以太坊的智能合约“在逻辑之上再套逻辑”,这是以太坊频繁发生DeFi合约漏洞的根源。
面对“安全”与“灵活”的选择,我们借鉴了东方的古老智慧,把比特币脚本语言和Solidity语言的核心精神做了中庸的糅合,并在波卡的Substrate框架下启程。
我们为我们相信的Web3.0的希望——波卡——设计了一个轻量级的新语言:Subscript。2020年9月,这门语言被Web3.0基金会Grant计划选中,成为了官方扶持的波卡开发者工具。
Subscript沿用了Javascript的语法,并在Assembly Script中完成了对Substrate智能合约api和sdk的封装。简单来说,Subscript实现了支持任何Web开发者快速入手部署波卡原生智能合约的能力。我们的开发者无需学习Substrate框架要求的rust语言,也无需精通merkle树、共识协议、p2p等技术难题。
“看到Subscirpt就像看到了老朋友。”是的,我们希望用Subscript语言告诉全世界,也许在Web2.0互联网行业的竞争下,再优秀的开发者如果不精通新语言,也会被市场淘汰;但在Web3.0的字典里不存在淘汰一词。Web3.0 将是一组包容性协议,为应用程序开发者建块。这些构建块取代了传统的 Web 技术,但是提供了一种开发应用程序的全新方式。在这种方式下,Web3.0必将兼容所有曾被认同的基本底层语言,也必将容纳全球范围内的优秀开发者。
精通智能合约开发语言的开发者数量远远不够,而我们不希望看到优秀的传统开发者站在波卡的对岸喟然生叹。经过我们的搭建,使用Subscript语言开发的任何智能合约应用和基于Subscript的编程工具将通过平行链TrustBase共享与波卡的全域互操作性。
这门语言必须牺牲一定的灵活性,以换取波卡原生智能合约的共享安全性。如果我们拿Subscript与以太坊久负盛名的Solidity语言相比,Subscript牺牲了一定的灵活性,它继承了比特币源码和Javascript的精神,实现了底层的安全性和严格的类型。同时,我们让它可以支持任何和Substrate架构兼容的智能合约开发平台,不仅限于TrustBase平行链。从语法和开发环境上说,遍历已知的所有智能合约开发语言,没有任何一门语言比Subscript更基本。
Subscript从API到语法都为WASM而设计,整体使用严格类型和语言检查,同时提供了范型功能支持第三方库的封装。
以下为我们的具体实现:
a、静态的语法检查。与针对动态类型运行环境的TypeScript不同,Subscript在编译时具有严格的静态语法检查,避免了无法提前有效编译TypeScript的动态特征。通过分配或推断确定的类型,编译器能够从执行开始就产生可预测的性能,同时保证所产生的WASM目标代码足够小。
b、严格的类型。Subscript中的基础类型为WASM标准而设计,使用WASM特定的整数和浮点类型。在处理数值类型时允许开发者实现制定数值的理想类型。
c、底层访问支持。智能合约与沙盒外环境交互时,能够传递的参数仅限于基本的整数类型。Subscript提供了完备的语法可以用来定义外部接口类型。Subscript还自带可访问WASM底层的指令函数,提供整数运算,虚拟机栈访问,内存加载等操作。
d、范型支持。能够定义范型类型来支持代码的复用,Subscript通过范型定义了一系列可复用的库函数。
我们的愿景就是“让简单的语言再次伟大。”黄金提供了底层语言技术的自然范式,比特币开启了基础的区块链脚本语言,以太坊扩展了更多金融交易的方式,而TrustBase希望去创造一个更加通用的语言模型。我们是波卡的引渡人,如果说波卡打破了公链间的隔阂,那么Subscript将打破所有开发工程师的隔阂,共赴Web3的彼岸。