专栏首页mojocnLibra 的天秤和 First-class Asset

Libra 的天秤和 First-class Asset

Libra 的天秤和 First-class Asset

  1. MojoTech
  2. Libra
  3. Libra 的天秤和 First-class Asset

4.5 Eric Zhou Libra 2019-08-03

6 月 18 日,Facebook 加密货币项目 Libra 发布的白皮书引起了区块链业内人士的广泛关注。Nervos 团队及社区伙伴们也对 Libra 进行了大量的讨论。

Nervos 合伙人王博认为:

所有讨论 Libra 是不是一个好货币,算不算货币以及 Facebook 搞的联盟链是不是真区块链的讨论都搞错了重点。Libra 白皮书第一句写得非常清晰「…为十亿人服务的金融基础设施。」货币只是金融基础设施的基础。 有了 Move 智能合约,有了用户和基础资产,Libra 上将诞生有史以来摩擦最小的金融服务。会有些什么服务呢?余额宝、花呗、借呗、工资理财,等等。区别是这些服务很有可能是由全球化的第三方提供的,而且他们之间可以互相依赖:房贷可以在链上被分割成小额理财出售给其他用户。现在,Open Banking 刚有了个概念,API Bank 刚有了文档,针对它们的降维打击就来了。 区块链发展到现在展现了两个层面的独特价值。一个是资产的去中心化发行,就是所谓的传统公链价值。一个是金融的去中心化服务,它服务的对象可以是传统金融资产,比如货币,债券等。后者对世界的价值一点不比前者小。Libra 就是定位在后者的头部公链。 Libra 定位在金融基础设施,很准确很有价值。它可以大幅降低金融摩擦,为用户提供价值。

Libra 其中的一个亮点是提到了「First-Class Resources」这个概念,在 Move 编程语言的白皮书中这样写道:「First-class Resources 是一个非常普遍的概念,程序员可以使用实现安全的数字资产(的发行),还可以编写正确的商业逻辑来包装资产和实施访问控制策略。」

First-class Resources 翻译过来是「资源是一等公民」,在 Libra 中用户可以发行自己的资产,并且可以被用户及脚本直接引用和操作。

而关于这个概念,实际上 Nervos 架构师 Jan 在去年的文章《First-class Asset》中已经对这个概念进行了深入的分析。

First-class Asset

区块链上的底层模型设计,实际上就是分别以比特币和以太坊为代表的两种模型:

  • 比特币的 UTXO 模型
  • 以太坊的 Account 模型 而实际上二者的差异千差万别,代表了两种思路。

以太坊的 Account 模型和银行账户类似,在账户中记录用户的余额。账户是用户直接操作的对象,资产的转移是由账户作为用户的代理实现。但是当需要对用户定义的资产进行操作的时候,则需要引入第三方,即托管加密资产的智能合约执行资产转移流程。

而比特币的 UTXO 全名为「Unspent Transaction Output」,每个 UTXO 都是比特币,UTXO 中都通过一段锁定脚本(lock script)记录这个比特币的所有者,我们可以通过比特币脚本对 UTXO 进行编程实现部分业务逻辑,比特币就是一种「First-class Coin」。

而 Nervos CKB 中使用 Cell 模型进行构建,Cell 是一种通用化的 UTXO 模型,可以存储任意类型的数据,并在基于 RISC-V 指令集编写的 CKB-VM 加持下,能够实现更多的商业逻辑。Cell 可以被直接引用,作为参数传递给脚本,Cell 的所有者可以直接更新 Cell 中保存的状态,不需要经过任何的第三方。

通过 Cell 模型可以发行用户定义资产(User Defined Asset),可以这样来构造:

  1. 设计资产定义合约(Asset Definition),规定资产的主要约束(例如总数量,发行者,交易前后数量不变等)。
  2. 保存合约代码到 Asset Definition Cell 中。
  3. 在满足发行权限的情况下,发行者发行资产,并将资产状态保存在另外的 State Cell 中。State Cell 的 Type 字段引用保存了资产定义的 Code Cell,保证 State Cell 的变化受到资产定义的约束。
  4. Asset Cell 的持有者可以通过更新 Lock 来改变 Asset Cell 的所有者。

实现 First-class Asset 之后,我们能够做什么?

实现 First-class 之后,最大的区别就是:用户掌握所有权,能够对资产进行直接的操作,而不是如 Account 模型那样调用合约账户进行间接操作。

特别是,在不同区块链之间资产的迁移过程中,我们需要迁移的是资产而不是账户,这方面 Account 模型就受到了很大的阻力,比如知名的 Kelvin Fichter 提出的 EVM-On-Plasma 问题。

Asset Cell 可以被引用,可以直接作为其它合约的参数传入。只要引用 Asset Cell 的 input 有正确的用户授权,合约就可以正常的使用用户的 Asset Cell。

资产定义与资产状态分离。Asset Definition Cell 的所有者是资产的发行者,而 Asset Cell 是属于每个用户的。Asset Cell 的授权逻辑和业务逻辑分离,所有权完全由自己的 lock 决定,与 Asset Definition 的逻辑无关,这意味着 First-class Asset 不是托管在资产发行者、开发者或是资产定义合约的手中,而是真正完全属于用户的。

用户的资产相互隔离,用户资产状态独立,对经济设计问题带来了解决方案。公链的经济模型需要关注状态存储激励问题,用户在区块链上保存状态不仅需要支付写入费用,还应该承担与存储时间成正比的存储成本。在以太坊提出的状态租赁方案中,最大的痛点是针对用户的资产状态混合保存的合约(如 ERC-20)状态租赁收取,而在 Cell 模型中,只要 Asset Definition Cell 的 lock 逻辑允许,资产定义可以独立更新。

接下来我们还需要做什么?

除了通过 Cell 模型实现了 First-class Asset 以外,Nervos CKB 还将计算移到了链外,链上只需要对状态进行验证的逻辑。独特的状态模型和计算验证分离,这两点决定了未来在 Nervos CKB 上会出现新的、有趣的 DApp 范式。

从 CKB 白皮书完成到现在的一年半时间里,我们看到越来越多的人开始关注和讨论 First-class State 和 First-class Asset 这两种新的思路(虽然大家用的名词各自都不一样),这些进展让我们非常兴奋。如果您有兴趣对 First-class State 和 First-class Asset 进行更多的探讨,或是在 CKB 的编程模型上有什么有趣的想法,欢迎联系我们讨论:

https://talk.nervos.org

CKB 的代码已经完全开源,这篇文章介绍的内容在代码中都已经实现。欢迎给我们的代码提出各种意见:

https://github.com/nervosnetw… (CKB 上用 Ruby 脚本编程的示例,理解 CKB 上编程模型的最佳入口)

https://github.com/nervosnetw…

https://github.com/nervosnetw…

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Go进阶03:怎么使用viper管理配置

    viper 是以个完善的go语言配置包.开发它的目的是来处理各种格式的配置文件信息.

    mojocn
  • Go进阶23:Go指针返回值的劣势(译)

    作为以为年迈的C语言程序员,我很纠结,function-return-pointer是很正常的事情.但是我认为function-return-pointer是非...

    mojocn
  • Go进阶45:Golang-logrus简单的日志收集系统(替代ELKB)

    我们可以使用logrus( logrus 是一个非常容易扩展的golang 日志库 logrus使用教程 ) HOOK 快速的输出日志到 Elastic Sea...

    mojocn
  • 增量数据丢失的原因分析(三)(r8笔记第91天)

    今天开发的同事找到我说,他们发现一个应用今天应该会同步过来一部分数据,但是今天却没有,所以想让我帮忙看看到底是怎么回事。 对于这类需求也算是轻门熟路,不光维护管...

    jeanron100
  • 小程序支付003~借助云开发10行代码快速实现小程序支付

    这里的appid一定要是你关联过微信支付商户的,并且还得是企业小程序。这里创建项目时记得选择不使用云服务,因为使用默认云开发的话,会创建一大堆无用的文件。

    编程小石头
  • [NewLife.XCode]数据初始化

    NewLife.XCode是一个有10多年历史的开源数据中间件,支持nfx/netstandard,由新生命团队(2002~2019)开发完成并维护至今,以下简...

    大石头
  • Python学习之Pycharm激活、配置以及快捷方式

    将jar包放入pycharm在你本地的安装目录bin下。并且修改两个以 vmoptions为结尾的启动文件如图所示:

    python学习教程
  • “只有更多的裁员、倒闭与退出,区块链才死不了!”

    这次长时间的萎靡与亏损已经比2011年的第一次熊市和2013-2015年的价格暴跌拖得更久。其影响是显而易见的:我们已经看到了公司裁员、战略转变,以及来自行业领...

    区块链大本营
  • go env 的默认值问题 转

    (adsbygoogle = window.adsbygoogle || []).push({});

    双面人

扫码关注云+社区

领取腾讯云代金券