写在前面
文字产生以前,结绳记事是人类用来存储知识和信息的主要方式。此后,从竹简、纸张的发明,到工业时代的磁盘存储,再到信息时代的数据库,存储方式不断革新,“存力”不断提高。
11月3日,在2022云栖大会上,蚂蚁链历经4年技术攻关与测试验证的区块链存储引擎LETUS(Log-structured Efficient Trusted Universal Storage)正式发布。
这一款面向区块链可信数据存储的技术产品,不仅用来解决当前蚂蚁链及区块链产业的规模化发展问题,也面向Web3时代提供“可信存力”支撑。
我们认为,随着大量的数据和数字资产在数字化世界里流转,可信数据的“存力”将如同电力网络的承载力一样重要。
本文希望通过对LETUS的深入技术解读,回答读者们普遍关心的关键问题:LETUS是什么?主要解决哪些问题?为什么坚持用“可验证结构”?为什么要自研?以及未来要走向何处?
01 背景是什么?
从2009年序号为0的创世块诞生至今已过去十多年,“中本聪”依然神秘,但区块链技术的发展却因为公链、token、开源的推动,没有丝毫神秘感。
经过几代技术演进,在比特币的UTXO模型基础上诞生了应用更为广泛、支持可编程智能合约的区块链技术:通过密码学、共识算法、虚拟机、可信存储等技术,多个参与方执行相同的“指令”,来完成同一个业务逻辑,如账户转账,或者合约调用,维护不可篡改和不可伪造的业务数据。
简单讲,可将这类账本数据库,看作一个去中心化防作恶、防篡改的复制状态机,所执行的是智能合约描述的业务逻辑,而状态机通过日志 (区块数据)产生新的状态(状态数据):
区块数据:包括交易、回执、世界状态Root Hash等信息,和数据库系统中的日志类似,但是块之间由Hash锚定防篡改,并且不会删除。(区块数据记录的是区块链上发生的每一笔交易,如:Alice向Bob转账xx)
状态数据:记录账户、资产、业务合约数据等状态信息,和数据库系统中表数据类似,需要实现可验证可追溯。(状态数据记录的是区块链上每个账户或智能合约的当前状态,如:Bob账户剩余xx)
链上数据的特点可以总结为以下三个:
持续增长:从创世块开始,账本数据随交易持续增长,保留周期长;
多版本:交易修改状态数据产生新版本,系统提供历史版本查询和验证功能;
可验证:交易和账户状态通过Merkle根哈希(Merkle Root Hash)锚定在区块头,通过SPV(simple payment verification,简单支付证明)提供存在性证明;
区块链应用通过可验证数据结构(Authenticated Data Structure,如Merkle tree)实现可验证和可追溯。我们认为,Web3“存力”一个非常重要的要素是可验证,而今天我们看到的区块链存储瓶颈大多来源于可验证结构ADS(如Merkle tree)的低效存取和查询&#