知世金融网专注于股票行情,期货开户,外汇储备等最新相关资讯信息提供投资者参考学习!

当前位置:网站首页 > 区块链 > 正文

CKB 脚本编程简介第一弹: 验证模型

原创
文章作者
知世-金融领域资深作者
知名金融领域作者,从事金融超过十余年,在行业内有一定影响力。
金融风险管理师认证证书 常识职业资格认证 特许金融分析师 国际金融理财师认证证书
发布时间:2020-02-16 18:35:37 发布来源:Nervos 中文社区 文章点击:108

Xuejie 是 CKB-VM 的核心开发者,他在自己的博客「Less is More」中,创作了一系列介绍 CKB 脚本编程的文章,用于补充白皮书中编写 CKB 脚本所需的所有缺失的细节实现。本文是该系列的第一...

目录

    本文标题CKB 脚本编程简介第一弹: 验证模型,作者:知世,本文有1817个文字,大小约为8KB,预计阅读时间5分钟,请您欣赏。知世金融网众多优秀文章,如果想要浏览更多相关文章,请使用网站导航的搜索进行搜索。本站虽然不乏优秀之作,但仅作为投资者学习参考。

    Xuejie 是 CKB-VM 的核心开发者,他在自己的博客「Less is More」中,创作了一系列介绍 CKB 脚本编程的文章,用于补充白皮书中编写 CKB 脚本所需的所有缺失的细节实现。本文是该系列的第一篇,介绍了 CKB 的全新验证模型,据说这是 Xuejie 最后一篇没有实际代码示例的帖子,快来查收吧:P

    截至目前,CKB 中的 Cell 验证模型或多或少已经趋于稳定,因此我将开始写一系列文章来介绍 CKB 脚本编程。我的目标是补充白皮书中编写 CKB 脚本所需的所有缺失的细节实现,这样您就可以开始探索 CKB 呈现的这个美丽的仙境。

    您可能会注意到我将在 CKB 上运行的代码称为脚本,而不是智能合约。这是因为智能合约对我来说是一个令人困惑的术语,在这里,我想用另一个词来表示 CKB 独特的可编程性。CKB 中的脚本不一定只是我们在脚本语言中看到的脚本,例如 Ruby,JS,它实际上是指在 CKB-VM 上运行的 RISC-V 格式的二进制文件。

    这个系列的第一篇文章将专门介绍 CKB v0.14.0 中引入的全新验证模型(https://github.com/nervosnetwork/ckb/pull/913)。虽然这听起来很无聊,但我保证这是最后一篇没有实际示例的帖子:P

    请注意,尽管我认为 CKB 的编程模型现在非常稳定,但目前仍然在开发过程中,因此可能会有变化。我会尽力确保更新这篇文章的内容,但如果您有感到困惑的话,那是因为这篇文章现在正在描述的是 CKB 的这次提交:https://github.com/nervosnetwork/ckb/commit/a02c675c50c5969a588fa7f6356f08861d8f5f92。

    概 述

    这张图中有很多内容,我们将在稍后的文章中再次提到此图。今天,我们将只关注 Cell 数据结构中的 2 个实体:lock 和 type。

    pub struct CellOutput {
    pub capacity: Capacity,
    pub data: Bytes,
    pub lock: Script,
    #[serde(rename = "type")]
    pub type_: Option<Script>,
    }

    从数据结构中我们可以看到 lock 和 type 共享相同的结构,稍后我们可以证明它们也是在同一个环境中执行的,它们之间的差异只是体现在几个小细节中:

    · lock 是必选项,而 type 是可选项
    · 通常,他们被用于不同的场景

    我们首先从 type 脚本开始。

    type 脚本

    请注意,这里的名字只是一个幸运的意外,它与受欢迎的程语言无关(https://www.typescriptlang.org/)。

    我们仔细思考一下,其实 CKB(或大多数基于 UTXO 的区块链)上的交易只会将一组 Cell(或 UTXO )转换为另一组 Cell。这其中最有趣的是这里的实际转换过程,这也是我们开始设计 CKB 验证模型的着手点:我们如何构建模型以更好地验证 Cell 转换?

    type 脚本的用武之地就体现在这里:type 脚本用于验证 Cell 转换阶段的某些规则。这里的一些例子包括:

    · 验证 UDT(用户自定义的 Token)余额以确保不会无效地发出新 Token;
    · 确保每一个可能发生变化的 Cell 都拥有一个独一无二的名字。注意一下,这是非常有趣的一点,未来的文章很多都将和这一话题息息相关,敬请期待。
    · 实现经济模型结构。事实上,NervosDAO 完全是作为一个type脚本实现的,而不需要共识层的支持。
    · 比特币的虚拟机可以编译成基于 RISC-V 的二进制文件,这意味着可以将 CKB 转换成另一种替代比特币的实现。
    · 请记住,除了数据之外,Cell 还可以用于存储代码,因此type脚本也可以被用作对 Cell 中代码的测试,确保代码正确。

    简而言之,type 脚本可以用于存储 Cell 转换中所需要的任何验证逻辑,结合 CKB 灵活的虚拟机,我相信它将能提供无限的开发潜能。

    lock 脚本

    type 脚本用于存储 Cell 的逻辑转换,但是还缺少一件事情:如何保护自己的 Cell 不受其他人的攻击呢?换句话说,在这个瞬息万变的世界里,我如何才能确保我的 token 永远属于我呢?

    这就是为什么我们需要设计 lock 脚本的原因。只有当 lock 脚本能够成功执行时,才可以使用该 Cell。与 type 脚本不同,type 脚本是可选的,用户可以完全不填,而 lock 脚本总是需要被用于保护 Cell 的安全性。

    通常,您会期望一个 lock 脚本包含一个签名验证,就像所有其他区块链所做的那样,当然除此之外,CKB 还将提供一些全新的解锁用例:

    · 实际的签名算法完全由 lock 脚本来决定,而您可以自由使用任何 lock 脚本。这意味着您可以自由地选择任何符合您需求的签名算法。在官方发行的 CKB 版本中,我们将 secp256k1 作为默认的 lock 脚本(https://github.com/nervosnetwork/ckb-system-scripts/blob/66d7da8ec72dffaa7e9c55904833951eca2422a9/c/secp256k1_blake160_sighash_all.c)。但您也可以不必使用它,如果有人用 schnorr 签名实现了一个 lock 脚本,那么我们非常欢迎您使用这个脚本。

    · 除了签名验证之外,lock 脚本还可以包含其他用于解锁 Cell 的规则。比如,如果一笔交易包含了一个使用了我的 lock 脚本的 Output Cell,但是它的容量大于我可以使用的 Cell,那么我可以通过配置我的 lock 脚本来进行容量传递。这样的话,当有人向我发送 CKB Token 时,他们可以利用我现有的 Cell 来完成 CKB 转账,而不需要像比特币那样为我再重新创建一个新的 Cell。

    在我看来,CKB 最好的一点就是,社区创建的 lock 脚本与官方默认脚本的处理方式完全相同,官方脚本没有任何特权。与其他一些区块链项目不同,CKB 为社区开发 CKB 脚本提供了完全的自由。

    运行模型

    现在让我们看看是什么时候执行 lock 和 type 脚本的。

    回到之前的例子

    这是我们之前看到的交易:

    图中的执行流程如下:

    Lock Script 1 执行一次。
    Lock Script 2 执行一次。
    Type Script 1 执行一次。
    Type Script 2 执行一次。

    在后面的文章中,我们可以看到 lock 和 type 脚本都在相同的环境中执行,并且都可以访问整个交易。如果任何一个脚本失败,整个交易就会失败。只有当所有脚本都成功时,交易才被认为是有效的。

    有几点值得一提:

    · 尽管这里有 2 个带有 Lock Script 1 的 Input Cell,但它只执行一次,由实际的 lock 脚本来定位具有相同 lock 脚本的所有 Input Cell,并验证两个签名。
    · 在这个交易中只执行 Input Cell 中的 lock 脚本,例如:这里不执行 Lock Script 3。
    · 即使 Input Cell 和 Output Cell 都包含 Type Script 1,也只执行一次。
    · 在 Input 和 Output Cell 中都会执行 type 脚本,其中包括 Type Script 1 和 Type Script 2。
    · 有些 Cell 没有 type 脚本,在本例中我们只是省略了执行。

    规则

    现在我们总结一下规则:

    · 在 Input Cell 中的 lock 脚本会被收集和去重,每个单独的 lock 脚本会被执行一次,并且只执行一次。
    · Input 和 Output Cell 中的 type 脚本(如果存在的话)会被收集在一起并去重,每个单独的 type 脚本都会被执行一次,并且只执行一次。
    · 任何脚本失败,则整个交易验证失败。

    What's Next

    现在我们已经介绍了 Cell 模型,下一篇文章中我们将介绍如何实际编写 CKB-VM 脚本,我们将通过验证默认的 secp256k1 lock 脚本,来演示 CKB-VM 脚本的使用周期。

    本文相关推荐: 区块链技术是什么意思之技术4:脚本

    以上便是知世金融网给大家分享的关于CKB 脚本编程简介第一弹: 验证模型/qkl/27128.html的相关信息了,希望能帮助到大家,更多金融相关信息,敬请关注知世金融网!

    网站内容均来自互联网,如侵害您的利益联系客服进行删除!

    关键词:脚本
    (0)
    (0)

    上一篇:通过区块链技术可以帮助你的业务的4种工具

    下一篇:深度解析VNT Chain共识算法Vortex

    本文标题:CKB 脚本编程简介第一弹: 验证模型

    本文地址:/index.php?s=article&c=search&keyword=%E8%84%9A%E6%9C%AC

    金融知名领域

    南方财富网 | 金融界 | 金融界 |

    更多推荐

    • 茅台吃饱,经销商哭倒
      茅台吃饱,经销商哭倒
    • 汇金的五次增持从短期看具有一定的“稳定器“作用,但从市场表现看效果逐次递减
      汇金的五次增持从短期看具有一定的“稳定器“作用,但从市场表现看效果逐次递减
    • 158亿元!比亚迪收购!
      158亿元!比亚迪收购!
    • 9月价格回落近五成 “冷静期”酒店业备战“十一”市场
      9月价格回落近五成 “冷静期”酒店业备战“十一”市场
    • 2023哈马博览会哈尔滨银行展区精彩纷呈
      2023哈马博览会哈尔滨银行展区精彩纷呈
    • 大额解禁撂倒股价 医疗影像龙头跌出千亿俱乐部 葛兰二季度大幅减仓
      大额解禁撂倒股价 医疗影像龙头跌出千亿俱乐部 葛兰二季度大幅减仓
    • A股,又上了热搜!数字要素概念走高多股涨停,锂电池板块走低恩捷股份大举跌停
      A股,又上了热搜!数字要素概念走高多股涨停,锂电池板块走低恩捷股份大举跌停
    • 最新!巨头出手,加仓宁王51%
      最新!巨头出手,加仓宁王51%
    • 600亿巨头暴雷
      600亿巨头暴雷
    • 一天32家!科创板回购潮涌来
      一天32家!科创板回购潮涌来
    • 提振信心实招来了!30余家上市公司密集出手 最高要买10亿
      提振信心实招来了!30余家上市公司密集出手 最高要买10亿
    • 高盛再发50年后预测:2075年印度股市全球市值占比将升4倍 中国升3成
      高盛再发50年后预测:2075年印度股市全球市值占比将升4倍 中国升3成

    新闻资讯栏目

    站长QQ: 2397470084