目录

  • 介绍
  • 与其他公链的区别
  • CKB特性
    • NC Max
    • Cell 模型
    • RISC-V VM
    • 经济模型
  • 数据结构
  • CKB 编程模型
  • 加入测试网络Aggron
    • 系统环境
    • 下载命令行程序
    • 初始化配置
    • 运行测试链
    • 访问测试链
  • 加入主网
    • 初始化配置
    • 修改挖矿配置
    • 运行主链
    • 开启挖矿
  • ckb-cli命令行
    • 使用方法
    • 设置rpc url
    • TUI
    • 创建新账户
    • 领取测试币
    • 查看余额
    • 再创建一个账户(接收转账)
    • 转账
    • 查看交易
    • 查询余额
    • 导出私钥
    • 查看公钥、生成block_assembler
    • 导入私钥
  • IDE

介绍

Nervos 是一个旨在满足去中心化经济需求的分层网络。Layer 1 协议 CKB(Common Knowledge Base 共同知识库)是整个网络的价值存储层,Layer 2 协议在 Layer 1 区块链上提供了无限的可扩展性。

Nervos 网络 = 坚持安全和去中心化的 CKB + 百花齐放的 Layer2

与其他公链的区别

  • 比特币作为一个单一的可编程资产,在 Nervos CKB 上,所有的用户自定义代币(UDT)都可以和原生代币(CKB)都可以通过图灵完备的脚本进行编程,Nervos CKB 是一个多资产可编程的底层智能合约平台。
  • CKB 并没有采用账户模型,而是采用了和比特币一样的 UTXO 模型,并基于 UTXO 设计了一套新的编程模型 —— cell 模型。
  • 以太坊不同:以太坊采用的是链上计算,链上验证的模式,而 CKB 采用的是链下计算,链上验证的设计思路

CKB特性

NC Max

比特币的中本聪共识(Nakamoto Consensus,简称 NC)的变体,命名为 NC Max,在保留 NC 优点的同时,提升了其性能极限和抵抗自私挖矿攻击的能力

Cell 模型

Nervos CKB 采用的是一种称为 cell 模型的通用的 UTXO 模型,通过 cell 模型来进行原生代币(CKB)和用户自定义代币(UDT)的描述和编程

RISC-V VM

CKB VM 是为 CKB 设计的基于开源 RISC-V 指令集的虚拟机。通过 CKB VM,任意一种可以编译成 RISC-V 二进制代码的语言都可以用来当作 CKB 的编程语言,比如 C/C++,比如 JavaScript/Ruby/Rust 等等

经济模型

在 Nervos CKB 中,CKB 不仅仅是底层网络的原生代币,还代表了状态存储的权限,你持有 1 个 CKB 就拥有了 1 Byte 在 CKB 底层网络上的存储空间。

数据结构

CKB 编程模型

CKB 中的状态是一等公民(First-Class Citizen),状态包含在交易和区块中,它们直接同步在节点之间。CKB 的编程模型由三部分组成:

  • 状态生成(链下)
  • 状态存储(Cell 模型)
  • 状态验证(CKB VM)

Cell 是 CKB 中的主要状态存储单元,资产所有权归用户所有,并且必须遵循脚本指定的相关应用程序逻辑

这样一个模型的特点是:

  • 状态是第一性的;
  • 所有者是状态的属性,每一份状态只有一个所有者;
  • 状态不断的被销毁和创建

utxo

class TxOut{public:Amount Value;Script scriptPubKey;...}

cell

pub struct CellOutput {pub capacity: Capacity,pub data: Vec<u8>,pub lock: Script,pub type_: Option<Script>,
}
  • capacity 定义 cell 容量的大小(用 shannons 表示,1 CKB = 100,000,000 shannons)
  • data 用于存储数据(包括状态数据、脚本数据等)
  • type script 定义 cell 类型的脚本
  • lock script 定义 cell 所有权的脚本

lock 管死,type 管生。lock 负责 tx 中 input cells 的验证,type 负责 output cells 的验证。type 负责的是不能随意创建有某个 type 的 cell 出来,反过来的话,如果 cell 的 type 是 X,那 cell 一定通过了 X 的验证。

加入测试网络Aggron

系统环境

  • centos7.6
  • glibc, libstdc++, openssl

下载命令行程序

mkdir ~/nervosnetwork
cd ~/nervosnetwork
wget https://github.com/nervosnetwork/ckb/releases/download/v0.32.0/ckb_v0.32.0_x86_64-unknown-centos-gnu.tar.gz
tar zxvf ckb_v0.32.0_x86_64-unknown-centos-gnu.tar.gz

解压后的目录结构

tree ckb_v0.32.0_x86_64-unknown-centos-gnu
ckb_v0.32.0_x86_64-unknown-centos-gnu
├── CHANGELOG.md
├── ckb ①
├── ckb-cli ②
├── COPYING
├── docs
│   ├── ckb-core-dev.md
│   ├── ckb-debugging.md
│   ├── configure.md
│   ├── get-ckb.md
│   ├── hashes.toml
│   ├── integrity-check.md
│   ├── quick-start.md
│   ├── rpc.md
│   └── run-ckb-with-docker.md
├── init
│   ├── linux-systemd
│   │   ├── ckb-miner.service
│   │   ├── ckb.service
│   │   └── README.md
│   └── README.md
└── README.md

① ckb 是主程序,通过命令行操作,我们可以生产配置,运行节点,同步区块信息,并开启挖矿等。
② ckb-cli 是官方的附加命令行工具,rpc 请求,生成 ckb 地址,管理钱包,模拟发送交易,并可以向 Nervos Dao 中存币。

拷贝命令至bin目录

cp ckb_v0.32.0_x86_64-unknown-centos-gnu/ckb /usr/local/bin/
cp ckb_v0.32.0_x86_64-unknown-centos-gnu/ckb-cli /usr/local/bin/

清除不需要的文件

rm -rf ckb_v0.32.0_x86_64-unknown-centos-gnu
rm -f ckb_v0.32.0_x86_64-unknown-centos-gnu.tar.gz

初始化配置

查看命令是否正确安装

ckb --version
ckb-cli --version
ckb init --chain testnet

生成的配置文件如下

├── ckb-miner.toml
└── ckb.toml

运行测试链

日志在data/logs目录下

nohup ckb run >/dev/null 2>&1 &

启动后会生成数据目录,并同步测试链的数据

tree data
data
├── db
│   ├── 000003.log
│   ├── CURRENT
│   ├── IDENTITY
│   ├── LOCK
│   ├── LOG
│   ├── LOG.old.1591171377564776
│   ├── MANIFEST-000004
│   ├── OPTIONS-000028
│   └── OPTIONS-000030
├── indexer_db
│   ├── 000003.log
│   ├── CURRENT
│   ├── IDENTITY
│   ├── LOCK
│   ├── LOG
│   ├── LOG.old.1591171377671827
│   ├── MANIFEST-000004
│   ├── OPTIONS-000012
│   └── OPTIONS-000014
├── logs
│   └── run.log
└── network├── peer_store│   ├── addr_manager.db│   └── ban_list.db└── secret_key

访问测试链

curl http://127.0.0.1:8114 -H 'content-type: application/json' -d  ' {"id":1,"jsonrpc":"2.0","method":"get_tip_block_number","params":[]} '

加入主网

系统环境,下载命令行程序同上一步测试网络

初始化配置

ckb init --chain mainnet

修改挖矿配置

具体用法可参考下一章节 ckb-cli命令行

 #创建账号ckb-cli account new# 导出私钥ckb-cli account export --extended-privkey-path wallet --lock-arg 你的账户lock-arg# 根据私钥生成配置ckb-cli util key-info --privkey-path wallet# 修改block_assembler信息,添加上一步得到的vi ckb.toml

运行主链

日志在data/logs目录下

nohup ckb run >/dev/null 2>&1 &

开启挖矿

nohup ckb miner >/dev/null 2>&1 &

ckb-cli命令行

使用方法

USAGE:ckb-cli [FLAGS] [OPTIONS] [SUBCOMMAND]FLAGS:# 输出 jason 取消高亮--no-color         Do not highlight(color) output json# 显示请求参数--debug            Display request parameters# 确保索引库在执行命令前完成同步--wait-for-sync    Ensure the index-store synchronizes completely before command being executed# 打印帮助信息-h, --help             Prints help information# 打印版本信息-V, --version          Prints version informationOPTIONS:# RPC API 服务 url--url <url>                        RPC API server url# 选择输出格式,默认 yaml,可选项:yaml,json--output-format <output-format>    Select output format [default: yaml]  [possible values: yaml, json]SUBCOMMANDS:# 对节点调用 RPC 命令rpc         Invoke RPC call to node# 账户管理account     Manage accounts# 处理模拟交易(验证/发送)mock-tx     Handle mock transactions (verify/send)# 处理常见的签名/多签交易tx          Handle common sighash/multisig transaction# 启动 API 服务server      Start advanced API server# 常用工具util        Utilities# molecule 编码/解码工具molecule    Molecule encode/decode utilities# 交易 / 查询余额(通过本地索引)/ key utilswallet      Transfer / query balance (with local index) / key utils# 存入 / 准备 / 取出 / 查询 Nervos DAO 余额(通过本地索引)/ key utilsdao         Deposit / prepare / withdraw / query NervosDAO balance (with local index) / key utils# 进入 TUI 模式tui         Enter TUI mode# helphelp        Prints this message or the help of the given subcommand(s)

设置rpc url

在执行一些命令时,会从设定的 rpc url 中获得数据,如要连接到其他服务端请修改API_URL环境变量,默认值如下

export API_URL=http://127.0.0.1:8114

TUI

终端里的图形化界面,需在链启动后使用

ckb-cli tui
┌─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ <ckb_testnet> CKB 0.32.0 (248aa88 )                                                                                                                 │
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
┌Menu───────────┐┌Summary─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│    Summary    ││                                                                                                                                    │
│ Recent Blocks ││  API URL    : http://127.0.0.1:8114                                                                                                │
│     Peers     ││  Chain      : ckb_testnet                                                                                                          │
│  Top Capacity ││  Epoch      : 1315016309473354                                                                                                     │
│               ││  Difficulty : 30966321                                                                                                             │
│               ││  IBD        : false                                                                                                                │
│               ││  Tip Block  : 48883 => Byte32(0x66fab37fa85bb385522750598a62fabec0af2da5ea919761e1fc9c37913c11ae)                                  │
│               ││  TxPool     : pending=0, proposed=0, orphan=0                                                                                      │
│               ││  Peers      : 8                                                                                                                    │
│               ││                                                                                                                                    │
│               ││                                                                                                                                    │
│               ││                                                                                                                                    │
│               ││                                                                                                                                    │
│               ││                                                                                                                                    │
│               ││                                                                                                                                    │
│               ││                                                                                                                                    │
│               ││                                                                                                                                    │
│               ││                                                                                                                                    │
└───────────────┘│                                                                                                                                    │
┌Help───────────┐│                                                                                                                                    │
│               ││                                                                                                                                    │
│   Quit : Q    ││                                                                                                                                    │
│   Help : ?    ││                                                                                                                                    │
│               ││                                                                                                                                    │
└───────────────┘└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

创建新账户

$ckb-cli account new
Your new account is locked with a password. Please give a password. Do not forget this password.
Password:#输入密码
Repeat password:#重复输入密码
address:mainnet: ckb1qyqt9h89me8e2ttugkh9c3xr0872mzda09hqqku8r0testnet: ckt1qyqt9h89me8e2ttugkh9c3xr0872mzda09hqanzc0n
lock_arg: 0xb2dce5de4f952d7c45ae5c44c379fcad89bd796e
lock_hash: 0xf2bb0bc1a7c41ba1fbc804776bf01d876e0a1b51f655e92f8c5e5700b1d36b11

领取测试币

打开https://faucet.nervos.org/ ,填入你的testnet address,即可领取5000ckb,每三个小时能领取一次

查看余额

等待上一步领取测试币的交易区块确认(12个区块?),即可查询

$ckb-cli wallet get-capacity --address ckt1qyqt9h89me8e2ttugkh9c3xr0872mzda09hqanzc0n
total: 5000.0 (CKB)

再创建一个账户(接收转账)

$ckb-cli account new
Your new account is locked with a password. Please give a password. Do not forget this password.
Password:
Repeat password:
address:mainnet: ckb1qyqxqtqcmj6ar2v6x4ep9227xmcd842pcd3skjm2jrtestnet: ckt1qyqxqtqcmj6ar2v6x4ep9227xmcd842pcd3sth947l
lock_arg: 0x602c18dcb5d1a99a357212a95e36f0d3d541c363
lock_hash: 0x8465e5aca5b34daf2764154885e99da78cdd112646c80f1c9cee8d1d93cf1e96

转账

–from-account 指定lock-arg

ckb-cli wallet transfer  --from-account 0xb2dce5de4f952d7c45ae5c44c379fcad89bd796e  --to-address ckt1qyqxqtqcmj6ar2v6x4ep9227xmcd842pcd3sth947l --capacity 100 --tx-fee 0.1
Password:
0xbf2c81bd89ca7589e95b48d6eec3b8a3feecb82bd6e0323acf283a600e54f083

查看交易

$ckb-cli rpc get_transaction --hash  0xbf2c81bd89ca7589e95b48d6eec3b8a3feecb82bd6e0323acf283a600e54f083
transaction:version: 0cell_deps:- out_point:tx_hash: 0xf8de3bb47d055cdf460d93a2a6e1b05f7432f9777c8c474abf4eec1d4aee5d37index: 0dep_type: dep_groupheader_deps: []inputs:- since: 0x0 (absolute block(0))previous_output:tx_hash: 0x63ccba3685254e38e604e544fab1f3ba79ddb59a8ddf13bb41a81ee112be5522index: 0outputs:- capacity: "100.0"lock:code_hash: 0x9bd7e06f3ecf4be0f2fcd2188b23f1b9fcc88e5d4b65a8637b17723bbda3cce8 (sighash)args: 0x602c18dcb5d1a99a357212a95e36f0d3d541c363hash_type: typetype: ~- capacity: "4899.9"lock:code_hash: 0x9bd7e06f3ecf4be0f2fcd2188b23f1b9fcc88e5d4b65a8637b17723bbda3cce8 (sighash)args: 0xb2dce5de4f952d7c45ae5c44c379fcad89bd796ehash_type: typetype: ~outputs_data:- 0x- 0xwitnesses:- 0x5500000010000000550000005500000041000000c8066f434dcdb96d4f4ee36778471649911b7fa15a4d6123d2f1ae99ac209b326560713cf0b00bf64c8685034b8d88d6e8646759383b5d153d2517b1c42f570a00hash: 0xbf2c81bd89ca7589e95b48d6eec3b8a3feecb82bd6e0323acf283a600e54f083
tx_status:status: committedblock_hash: 0x3c00035aee191361a3841a56e1cb7a6ab0a26c0059edeb75904af44edd88499e

查询余额

下面两条命令等价,需要等待区块确认(100个区块?)
也可以在区块链浏览器查询

ckb-cli wallet get-capacity --address ckt1qyqt9h89me8e2ttugkh9c3xr0872mzda09hqanzc0n
ckb-cli wallet get-capacity --lock-hash 0xf2bb0bc1a7c41ba1fbc804776bf01d876e0a1b51f655e92f8c5e5700b1d36b11

导出私钥

–extended-privkey-path 后跟导出的文件位置和文件名
–lock-arg 0x834ae5… 导出 lock-arg 对应值的私钥

$ckb-cli account export --extended-privkey-path wallet --lock-arg 0xb2dce5de4f952d7c45ae5c44c379fcad89bd796e
Password:#输入密码
Success exported account as extended privkey to: "wallet", please use this file carefully

当前目录会生成一个wallet文件,第一行为私钥

$cat wallet
3afde6f941c3196658ca55e3098570cc730b66d97047fa34fb5df8b088d3876a
b2d5cf1ab9d01720163494210595720b7fc25e71df60cd53ef35ee5b2140a316

查看公钥、生成block_assembler

$ckb-cli util key-info --privkey-path wallet
Put this config in < ckb.toml >:[block_assembler]
code_hash = "0x9bd7e06f3ecf4be0f2fcd2188b23f1b9fcc88e5d4b65a8637b17723bbda3cce8"
hash_type = "type"
args = "0xb2dce5de4f952d7c45ae5c44c379fcad89bd796e"
message = "0x"address:mainnet: ckb1qyqt9h89me8e2ttugkh9c3xr0872mzda09hqqku8r0testnet: ckt1qyqt9h89me8e2ttugkh9c3xr0872mzda09hqanzc0n
lock_arg: 0xb2dce5de4f952d7c45ae5c44c379fcad89bd796e
lock_hash: 0xf2bb0bc1a7c41ba1fbc804776bf01d876e0a1b51f655e92f8c5e5700b1d36b11
old-testnet-address: ckt1q9gry5zgktwwthj0j5khc3dwt3zvx70u4kym67twlsen7q
pubkey: 02ed6f2b6f20c4711222133a4ff13a753fa00666f7e02449015697f1455364c8c9

导入私钥

ckb-cli account import --privkey-path wallet

IDE

主要提供以下功能

  • 搭建本地开发网络、连接测试网络、主网
  • 简易的区块浏览器
  • Tx 构造器
  • 智能合约开发、部署
  • 私钥、公钥管理

视频教程:https://docs.ckb.dev/docs/docs/ide/ide-ckb-studio

Nervos CKB初体验相关推荐

  1. 教你如何极简上手 Nervos CKB 上的智能合约开发

    Nervos CKB 是一条基于 PoW 的 Layer 1 公链,其 Cell 模型是比特币 UTXO 模型的泛化,因此它的智能合约开发有别于基于以太坊账户模型的智能合约开发.在本文中,Nervso ...

  2. 区块链合约协议C语言,Nervos CKB将支持多语言编写智能合约

    作者:Nervos社区投稿 / 来源:Nervos 中文社区 多语言智能合约 " 可以使用多种语言编程和编写智能合约." 我们计划构建多个使用高级语言或 DSL 的框架来促进 CK ...

  3. 苹果电脑安装python3密码_mac系统安装Python3初体验

    前沿 对于iOS开发不要随便拆卸系统自带的Python,因为有很多 library 还是使用 Python2.7. 1 安装Xcode 1.1 App Store 搜索Xcode 并安装 1.2 安装 ...

  4. MapReduce编程初体验

    需求:在给定的文本文件中统计输出每一个单词出现的总次数 第一步: 准备一个aaa.txt文本文档 第二步: 在文本文档中随便写入一些测试数据,这里我写入的是 hello,world,hadoop he ...

  5. 小程序 缩放_缩放流星应用程序的初体验

    小程序 缩放 by Elie Steinbock 埃莉·斯坦博克(Elie Steinbock) 缩放流星应用程序的初体验 (First Experiences Scaling a Meteor Ap ...

  6. wxWidgets刚開始学习的人导引(3)——wxWidgets应用程序初体验

    wxWidgets刚開始学习的人导引全文件夹   PDF版及附件下载 1 前言 2 下载.安装wxWidgets 3 wxWidgets应用程序初体验 4 wxWidgets学习资料及利用方法指导 5 ...

  7. 用鸿蒙跑了个 “hello world”!鸿蒙开发初体验

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 来源 | https://my.oschina.net/u ...

  8. Windows Embedded Standard开发初体验(二)

    支持Silverlight的Windows Embedded Standard 好了,完成安装之后,我们就可以来做Windows Embedded Standard的第一个操作系统镜像了.在开始菜单中 ...

  9. 深度探索Hyperledger技术与应用之超级账本初体验(附部署代码)

    2019独角兽企业重金招聘Python工程师标准>>> 本章零基础地介绍了如何快速体验超级账本搭建的区块链网络,我们先绕过了比较复杂的初始化配置,用官方提供的fabric-sampl ...

最新文章

  1. 一文带你了解如何打造持续学习文化
  2. 《给教师的阅读建议》经典语录
  3. ps怎么清屏_黑洞PS大赛刷屏!最后一张扎心了……
  4. 相机模型和双目立体匹配
  5. 【推荐视频】中科院赵军:知识图谱关键技术及其在推荐系统中的应用
  6. nginx发布PHP代码,nginx服务器配置返回php代码
  7. javascript 方法总结(Array篇)
  8. java static 执行顺序
  9. IPTV和宽带网络融合
  10. 翼支付门户CAS单点登录相关介绍
  11. 计算机右键菜单更换顺序,win10系统调整右键菜单选项顺序的恢复技巧
  12. vue 实现电子签名功能 支持生成图片
  13. 用QQ群推广网站的方法
  14. 提升自信心的十五个心理暗示法
  15. 15个最好的PDF转word的在线转换器,将PDF文件转换成doc文件
  16. qemu对acpi的模拟
  17. 用matlab画饼状图和相量图
  18. 计算机学习路线+必读书籍
  19. Distraction-Aware Shadow Detection
  20. win10任意形状截屏

热门文章

  1. 极简html4网页布局,浅淡极简的网页设计:少即多
  2. Linux tar 命令 将归档内指定文件解压到指定目录
  3. SOFT_RoCE环境搭建
  4. 运用 Elasticsearch 8.1.x 实现智能问答系统
  5. win10去除桌面快捷方式小箭头
  6. 数据处理(一)数据清洗
  7. python3安装setuptools步骤_简单python2.7.3安装setuptools模块
  8. kubectl cordon 标记节点不可部署Pod SchedulingDisabled uncordon 取消标记
  9. Gerrit版本升级
  10. 治服FME之clipper转换器幺蛾子(出现丢失、多余裁剪结果)