编者按
海外NFT自从2021年火爆出圈以来,受到市场的广泛关注和讨论。然而,海外市场的NFT的产品逻辑与国内的数字藏品并不完全一样。数字藏品作为一种区块链新应用,如何从技术上保证其安全性是众多玩家都十分关心的问题。本文是蚂蚁链高级技术专家袁立威在来咖智库“数字藏品&NFT火热之下的冷思考”研讨会上的观点分享。
在互联网领域,安全的问题是永恒的话题。即便是已经非常成熟的Windows操作系统,仍旧需要不断地打安全补丁。在我看来,安全的实质就是攻防双方的不断演进。所谓道高一尺魔高一丈,攻防两方其实是互为强弱的关系,没有绝对的安全,也没有绝对的不安全。
而蚂蚁链对安全问题一直都非常重视。无论是智能合约的安全性、新编程范式的采用和对联盟链的基础要求上来讲,我们都一直在寻求安全性的更强保证。
第一点,关于智能合约。鲸探是基于智能合约开发的,在智能合约的安全性上,目前业内会有一些积累。众所周知,现在国内外有一些可以进行智能合约审计的公司,它们会审计从最早区块链到现在几十种比较常见的漏洞,最基本的例如像整数的溢出或重入问题,等等。
蚂蚁链的智能合约在参考这些漏洞的同时,内部还有一个专门的安全团队做智能合约的安全审计。这个团队会在产品在上线前将所有的合约都去做卡点。至少在蚂蚁链内部团队的审计报告里面,没有任何安全漏洞的情况下产品才会上线。
第二点,关于线性语义。今天国内大家都在谈论数字藏品,怎么能够更好的保证其安全性?除了在智能合约审计这方面下功夫,蚂蚁链还可以有一个更强的保证,我们借鉴了一种新的编程范式“Move”。
何为“Move”?如果大家关注这个行业,应该知道在2018年,Facebook的扎克博格提出的Libra计划,其中Libra链的白皮书,率先提及了一种智能合约的编程语言“Move”。那“Move”所代表的线性语义是什么意思?听上去很技术,但概念不难理解,通过一个简单的例子就可以说明。
例如,支付宝做A与B之间的余额转账,A减少100元,B增加100元。假如A给B转账,网上需要对账。有时候就会出现B这边可能没有加,或者加错了(如加了两次)的情况——B加了A的100元转账,第一次加成功了,返回给A的接口没有收到,系统又调取了一次,导致B加了200元。早期的交易系统里面这种问题很常见,就需要通过对账来解决。后来,因为各种基础的组件和交易的机制越来越完善,这些常见的问题就少了,但是本质上还是需要对账的。
而“Move”则是提供了一种新的编程范式。仍旧以A转账100元给B为例。在“Move”的语义之下,这100元钱不是A减少或者B增加,而是A这100元“Move”给B,所以定为一种叫做专门“移动”的语义,这就保证了A的100元,要么“移动”给了B,要么没有移动,从而避免出现A减100元,B没有加或者B加了两次100元的情况。我们在设计鲸探的时候,就借鉴了这种线性语义,所以蚂蚁链上数字藏品并不是走传统的加减的运算逻辑,而是“Move”语义。这样就保证了产品不会因为一些特别的情况出现“消失”或者“多增”。这个特点是我们目前在安全上面做得比较强的点。
第三点,就是关于联盟链。相比公链,联盟链的安全性更有保障。公链具有随便加入随便访问的特点,任何人发现它有漏洞就可以去攻击。如果一个公链能活多年,最后都没有大的漏洞被黑客发现,说明它的代码安全系数是做得非常好的。而在联盟链里,网络准入需要有认证,例如现在是基于CA证书的认证。如果没有我们授权节点的证书,就无法加入网络。从这个层面来看,相当于挡掉了许多潜在的黑客,它根本就没有机会进到网络里面来。
总结来看,联盟链其实是一个很大的防火墙,但是这一层并不能把它作为一个最终的保障,最终的保障还是说智能合约本身要安全。同时,前面谈到的使用线性语义来保证资产的安全,如果是非资产逻辑上的一些东西,它还需要智能合约的审计来保证。
作者袁立威 蚂蚁链高级技术专家