作者 | Dieter Shirley
译者 | 火火酱 责编 | Carol
出品 | 区块链大本营(blockchain_camp)
智能合约是一类专用于管理有价值数字资产所有权的独特软件。尽管现有的编程环境可以用来跟踪资产的所有权,但是它们通常被用来反映所有权,而非直接定义所有权。智能合约的独特之处在于,它们所代表的价值往往直接体现在它们所维持的状态中。
随着区块链的持续发展,代表所有权的机制也在不断发展。比特币是由“未使用的交易输出(unspent transaction outputs)”或UTXO所定义的所有权模型构建的。
虽然UTXO模型非常高效,但它也非常复杂,并且可能会产生一些异常的边缘情况,因此Ethereum采用了一种更直接的Ledger模型。
当Libra区块链发布时,围绕该项目的主要关注点在于Facebook建立的区块链的政治含义,但我们这群深入研究技术细节的人却从中发现了一些很有意思的新想法。
尤其是,Libra团队以一个新的所有权模型为基础,为他们的Move VM定义了新的编程模型。该所有权模型的灵感来源就是线性类型(Linear Types):资源(Resources)。
“Resources”是一种在编程语言中直接表示资产所有权的新方法。工程师们常常使用“所有权(ownership)”这个术语来比喻:跟踪某代码以管理某种数据结构或系统资源。
这种情况在编程环境中最为常见,在此环境中,内存管理并没有完全从程序员那里抽象独立出来,如果说代码中写了一个对象,那么就意味着该代码必须管理并释放分配给该对象的内存。
Resources将这一概念进行了扩展,我们可以利用一些机制来管理以前编程语言中的“所有权”,并用它来管理本地数字资产的真正所有权。
源引于Move简介:
https://developers.libra.org/docs/move-overview#move-has-first-class-resources
Move 的关键特征是能够定义自定义资源类型(resource types)。资源类型可用于对具有丰富可编程性的安全数字资产进行加密。
Move 类型系统为资源提供了特殊的安全保障。Move资源不能被复制、重复使用或丢弃。资源类型只能由定义该类型的模块创建或销毁。这些保障是由Move虚拟机静态执行的。
Libra货币是作为一种资源类型实现的,在语言中并没有特殊的地位,每个Move资源都享有同样的保护。
最后这两点非常重要:
1. Resource 对象的特殊状态必须由运行时(“Move虚拟机”)强制执行;如果其只是编译器抽象,那么恶意代码很轻松即可打破屏障。
2.然而!如果你能够正确地执行这些规则,则可以让网络中最重要的资产——本机代币——安全地存储在由用户提交的代码控制的数据结构中。厉害了!