美文网首页
特立独行的 CKB

特立独行的 CKB

作者: 爱写作的harry | 来源:发表于2019-06-21 14:21 被阅读0次

    本文由Nervos架构师志伟在2019年6月1日北京的分享整理而成,完整视频可以查看:https://v.qq.com/x/page/w0880ml3s3a.html

    特立独行的 CKB Agenda

    Introduction

    Introduction

    区块链核心价值

    区块链的核心价值是提供信任。 区块链是通过全局共识的方式实现信任,而全局共 识必然是一个很慢、很贵的东西。

    没有共识算法能比没有共识的共识算法更快。 分布式、去中心化系统的共识,不可能做得比中心化的共识更快。 区块链最应该考虑的是如何能够把信任的价值发挥出来。

    共同知识(Common Knowledge)是博弈论里的概念,所有人都知道的知识还不是共同知识,公共知识是指所有人都知道所有人都知道的知识。

    共同知识的形成是个很慢的过程,需要不断的猜疑,不断的挑战和传播。

    例子:如果在场有人问我是谁,过了3秒没人回答,说明大家都知道没有知道这个人是谁,这个就是共同知识。

    我们希望CKB(Common Knowledge Base)是全人类色共同知识库。

    分层架构 VS 单一架构 区块链扩容的不可能三角

    扩容方案都是有代价的: 联合挖矿,大区块,超级节点等方案影响去中心化。
    多链,分片等方案降低安全性。

    分层

    分层架构

    大部分情况下需要局部的共识就够了。
    两个公司有争端,先找局部法院,如果解决不了再上升到更高级的法院
    如果上层不能保证安全,可以找更下一层来保证安全

    Layer1 关注去中心化和安全,Layer2 关注性能。

    需求也是分层的: 大部分情况下只需要局部的共识。 越大范围的共识代价越大。 即使中心化系统也是如此。

    不同的角色: 状态和计算。 Layer1 负责状态的验证和存储 Layer2 状态的生成(计算)。

    和多链的区别
    很多多链是同构的,ckb上的不同层之间是有不同的角色的。

    POW & POS

    共识就是少数服从多数。
    最常用的方式就是投票。

    区块链不能帮你解决分歧,不能达成一致就分叉。

    直接举手表决会存在的一个问题是刷票,技术术语叫做“女巫攻击”。


    女巫攻击

    女巫攻击其实就是刷票。 解决方案就要让投票和所需付出的成本成线性或者更高比例。

    PoWPoS都能解决女巫攻击的问题。

    确定性

    确定性

    BFT有绝对确定性的。投票节点是提前确定的,投票超过2/3就确定了。如果有四个节点,有三个投了赞成票,那理论上就没有逆转结果的可能了,结果就是确定了。

    POS有一定的确定性。在指定的时刻,Stake总量是固定的值。POS会按照Stake的量来计算投票的权重。

    POW没有最终确定性。在指定的时刻,算力总量不是一个固定的值。而且更夸张的是,你还可以去挖以前的块,当然肯定是无效的块。

    所以,POW有动力吸引更多的算力保证网络安全。新矿工没有门槛。PoS没有动力去增发Stake。系统的安全性也跟这个没有直接关系。新的验证者门槛较高。
    PoW相比之下更开放,安全性更可量化,与Layer2更互补。

    共识算法

    共识算法

    CKB希望做一个对ASIC持中性态度的POW共识。希望算力是分散的。希望有尽量多的算力。

    NC-MAX

    带宽实际上是区块链吞吐量的最大限制。
    NC-Max 有三个主要的创新:

    1. 采用两步交易确认来降低孤块率。
      • 锚定因素是孤块率
      • 不能直接打包新的交易,要打包2个块之前的提案区的交易
    2. 动态调整区块间隔和区块奖励来更好的提升带宽利用率。
      • 吞吐量,出块时间和区块奖励都是变化的
      • 出块时间短后,区块奖励也会变少
    3. 在难度调整的时候考虑周期中的所有区块,来抵御自私挖矿攻击。
      • 自私挖矿解释:挖到块后不发,藏了几个块,然后之后发布覆盖了别人的链
      • 会减少挖出块的数量
        • 比特币会降低难度,因为一段时间正常可以挖出来100个块,结果只挖了90个出来,所以会降低挖矿难度。这样让自私挖矿更有利可图
        • ckb的难度调整:
          • 和比特币不一样
            * 会考虑到所有区块,包括孤块,把孤块的算力也加入进来
            * 自私挖矿不会有收益,因为自私挖矿不会导致难度调整

    RISC-V & EVM & WASM

    RISC-V & EVM & WASM

    VM in blockchain

    VM in blockchain

    VM(虚拟机)作用是解析收到的交易,根据交易来修改链的状态,生成新的状态。

    VM必须要做到下面两点:

    • 要保证确定性的状态
      • 每一个计算都会在所有节点上进行
      • 每个节点的计算结果要保证一致
    • 可以停机
      • 图灵完备的系统中,可以写无限循环导致系统无法停机
      • 以太坊有gas limit来解决
        另外:
    • 指令集要非常稳定
      • 要不然硬分叉代价很大
    • 灵活
      • 支持图灵完备的智能合约,这样可以实现所有的功能
    • 工具链的支持
      • 合约要编译成字节码,所以工具链支持也很重要

    对比

    RISV-V
    是一个真正的硬件的指令集,WASM和EVM是软件的指令集
    CPU的指令集可以实现所有的功能
    指令集非常简洁,只有50个
    VM architecture,Register Based效率也会好一点

    WASM
    并不是为了区块链而设计的,很多是浮点运算,但在区块链上是不太用的

    EVM
    设计有点粗糙,有些指令是重复的
    Words size是256位,是为了便于操作hash,导致EVM很低效,都是软件模拟的。
    CPU是32/64位的,对32/64的支持更好,更高效。

    Toolchain虽然solc在区块链领域很流行,但和GCC/LLVM的工具链的生态还是没法比

    Memory Model

    Memory Model

    EVM有code,storage,stack,memory。
    Solidity是编译成字节码部署到链上。
    EVM执行时可以访问链上的任何数据。

    CKB用的是Linux ELF文件格式,合约其实就是一个可执行文件,比如说C语言,就是一个main函数的程序,编译后就是Linux下的一个可执行文件,然后就可以把可执行文件放到链上去。这样工具链方面,可以用gdb去调试。

    CKB使用32位寄存器

    EVM执行时可以访问链上的任何数据,CKB通过syscall来访问数据,而且只能访问交易相关的几个cell

    Cell Model vs Account Model

    Cell Model vs Account Model

    Programming model and Problems

    Programming model is about State:编程模型就是关于状态的
    State generation(off-chain)
    State verification(CKB-VM)
    State storage (Cell Model)

    EVM的问题:

    • 只支付给计算
    • 存储免费:公地悲剧,全节点有很大负担

    计算和验证应该分离。

    以太坊上没有验证,每次转账只需要知道给谁转,转账多少,具体转账的执行时在节点上进行的,不会进行验证input的总和等于output的总和。

    所以以太坊上可能存在的一个情况是,给一个账户减掉1,可以给另外一个账户加2。

    对比

    对比

    Cryptographic Primitive(密码学原语),比如验签在比特币和以太坊上是内置的,就是说系统编译出来后就内置了这样的系统合约了。CKB上是没有的,要自己去写验签,好处是灵活,坏处是要自己去写这个逻辑。

    Cell Model

    Cell Model

    Cell model

    • 泛化的UTXO
    • Cell是一个byte数组,可以放任何的数据
    • Data是一个序列化后的数据
    • Type是一个script,用来规定data可以放什么样的类型的数据
    Cell model vs Account model

    Account model

    • like OOP
    • Function in contract like method in Class
    • Storage variable like member of Class
    • Transaction like message computation on nodes

    Cell model

    • 更像一个纯的函数式编程(FP)
    • 一旦一个cell作为input被使用,它就不能被再使用了。就像bitcoin一样,一个UTXO被使用后就被销毁了
    • Lock像callback,等下一个有人要用这个cell的时候才会触发这个script
    • 计算在客户端,验证在chain上(always recompute)

    Example

    Example

    https://github.com/rink1969/ckb-contract-examples

    • Most simple script.
    • Vote - Map Reduce.
    • HTLC. Multi-Signature.

    相关文章

      网友评论

          本文标题:特立独行的 CKB

          本文链接:https://www.haomeiwen.com/subject/dyegfctx.html