特立独行的 CKB

2019-06-21  本文已影响0人  爱写作的harry

本文由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必须要做到下面两点:

对比

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

Cell model vs Account model

Account model

Cell model

Example

Example

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

上一篇下一篇

猜你喜欢

热点阅读