如何在 VPS 上创建一个 Substrate 1.0 节点

VPS 安装的好处是不影响本机的环境和占用本机性能,不需要时也可以随时释放。

VPS 准备

申请一个 VPS 服务器

本文测试时使用的环境如下
阿里云 HK
系统:Ubuntu 18.04
配置:2核4G
硬盘:默认 40G 系统盘

建议海外服务器,安装速度较快

安装

参考 substrate kitties 教程安装
https://substrate.dev/substrate-collectables-workshop/#/zh-cn/0/setup

配置 wss

安装 ngnix

sudo apt-get install nginx

安装 certbot

https://certbot.eff.org/lets-encrypt/ubuntubionic-nginx.html

修改 nginx 配置 /etc/nginx/site-available/default

server {
    server_name test.substrate.cc; # managed by Certbot
    location / {
    try_files $uri $uri/ =404;
    proxy_pass http://localhost:9944;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
  }
    listen [::]:443 ssl ipv6only=on; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/test.substrate.cc/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/test.substrate.cc/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}

重启nginx

sudo service nginx restart

启动 substrate

通过 Screen 或 PM2 启动

./target/release/substratekitties --dev

测试

如果你配置的域名是 wss://test.substrate.cc
可以访问 https://test.substrate.cc
如果页面输出
“WebSocket Protocol Error: Unable to parse WebSocket key.”
则应该已经配置好了,接下去用 https://polkadot.js.org/apps/ 测试连接即可。

Polkadot学习笔记 – 本地调试 Substrate 2.0

本地调试环境的好处一方面可以更快的定位问题,一方面可以方便学习。
Substrate 2.0 是最新的 substrate 版本,相比 1.0 在模块设计和抽象上做得更好,一些模块的名字做了较大修改。

安装环境

可以直接用官方的fast模式自动安装环境。

curl https://getsubstrate.io -sSf | bash -s -- --fast

建议走代理,否则很慢
Mac Terminal 走 ss 可以看这个 https://github.com/mrdulin/blog/issues/18

下载代码和安装

git clone https://github.com/paritytech/substrate.git
export WASM_BUILD_TYPE=release
cd substrate
cargo build

运行

cargo run --bin substrate -- --dev -d .chaindata --execution=NativeElseWasm

数据文件默认放在 .chaindata 目录
重启如果碰到问题,可以尝试删除数据文件目录 rm -rf .chaindata

配置CLion

可以参考 Aten 的文章
https://learnblockchain.cn/2019/12/21/substrate-run-debug/

Polkadot学习笔记 – 为什么 substratekitties 等应用教程测试失败

按照教程
https://substrate.dev/substrate-collectables-workshop/#/zh-cn/README

成功安装substratekitties应用后,使用 https://polkadot.js.org/apps/
进行测试时报如下错误:

submitAndWatchExtrinsic(extrinsic: Extrinsic): ExtrinsicStatus:: 1010: Invalid Transaction: 0

原因

substratekitties应用是基于 substrate 1.0 的,而 polkadot.js 的网页钱包已经切换到 substrate 2.0 了,所以存在兼容性问题

解决方案

1 自己本地安装 0.36 版本的 polkadot.js 网页钱包,教程见:
http://blog.boka.network/2020/02/17/polkadot-xue-xi-bi-ji-polkadotjs-app-an-zhuang/

2 也可以访问下面的站点,是笔者搭的一个 0.36 版本的网页钱包
http://app.substrate.cc/

如何查看版本

在 polkadot.js 网页钱包左下角可以看到 substrate 以及 apps 的版本

43D5A040-6E62-47CE-9660-D129632F06D8

Polkadot学习笔记 – polkadot-js app 安装

Github
https://github.com/polkadot-js/apps

是什么

polkadot-js 既是Substrate的钱包,也是Substrate的客户端。

为什么

默认情况下该工具可以通过 https://polkadot.js.org/apps 直接访问,自己本地安装的好处是:

1 解决版本兼容性问题
比如使用 substrate 1.0 开发一些应用链,包括 substratekitties,在新版的 polkadot-js 中存在签名错误的问题。

2 学习substrate网页应用的开发
polkadot-js 使用REACT开发,代码质量很高。

3 给自己的应用链定制钱包

4 https://polkadot.js.org/apps 因为默认走 https,所以节点必须 wss 支持或为本地节点,如果一个远程的 ws 节点无法使用

如何安装

下载 github 代码后,按 README 中步骤安装即可。
关注 Node 和 Yarn 的版本要求。

如何安装老版本

使用git切换到以前的版本即可,比如下面的命令可以切换到 0.36 版本,是一个支持 substrate 1.0 应用链的版本。

git checkout  2e7f28a62

如何配置 VPS

修改 ngnix 的站点配置如下

server {
    listen 80 default_server;
    listen [::]:80 default_server;

  server_name app.substrate.cc;

  # Add index.php to the list if you are using PHP
  index index.html index.htm index.nginx-debian.html;

    location / {

    proxy_pass http://localhost:3000;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    }
}

Polkadot 和 Kusama 存储和控制账户的科普

波卡生态的区块链Staking操作中,包含了【存储账户】和【控制账户】两种,对于新用户来说不太容易理解。

首先说下这么做的好处:提供了一种更安全的委托投票管理机制,将资金和操作分离,从而提高Staking操作的安全性。

【存储账户】和【控制账户】不同的权限

存储账户
– 设置控制账户
– 绑定和解绑投票金额

控制账户
– 解绑投票金额
– 设置奖励归集方式
– 提名节点

存储账户可以设置自身为控制账户。
控制账户本身也可以作为存储账户并设置下一级控制账户,实现嵌套的模型。

奖励领取设置

奖励归集到哪个钱包,以及是否自动续投也可以进行设置

所以,如果你持有较多的DOT和KSM,比较安全的方式是先导入存储钱包到麦子钱包,并完成控制账号设置,和资产绑定,然后删除该钱包。
之后所有投票、奖励领取、解委托操作全都通过控制账户来进行操作。

转自:http://blog.mathwallet.net/?p=2665

关于 KSM Staking 的一些信息

机制 – NPoS 提名权益证明

Polkadot 使用提名权益证明(NPoS, Nominated Proof of Stake)机制来选择验证人集合,该机制设计有验证人(validator)和提名人(nominator)两种角色,以实现链安全性的最大化。

参与抵押:
* 代币将被锁定12周左右
* 验证人如果做出损害网络行为将面临惩罚

https://mp.weixin.qq.com/s?__biz=MzA5NTQyNDIyNw==&mid=2247483820&idx=1&sn=4759dba8723486661f388f3f80c4d839

通胀率

KSM通胀系统设定:当系统抵押率低于50%时,年平均收益率会高于20%,激励更多的KSM代币抵押进来;相反,当系统抵押率高于50%时,年平均收益率会低于20%,鼓励部分矿工退出。
https://mp.weixin.qq.com/s?__biz=MzI1NTUwOTcwNQ==&mid=2247483658&idx=1&sn=29faa0d0e8b8c63ece760440af017ec6

目前的抵押率和年化:
抵押率 17.66 %
年收益率 20.40 %

更多实时数据:
https://depool.io

节点信息

https://polkascan.io/pre/kusama-cc3/session/validator

https://depool.io

https://labs.hashquark.io/#/polka

如何 Staking

Kusama Staking 工具操作视频
http://blog.mathwallet.net/?p=2654

金晓老师的 Substrate 开发入门

Substrate 总体设计 ( https://learnblockchain.cn/2019/03/02/substrate-project/

环境配置与编译( https://learnblockchain.cn/article/273

运行与调试( https://learnblockchain.cn/2019/12/21/substrate-run-debug/

具备状态的链 ( https://learnblockchain.cn/2019/12/22/substrate-state/

项目结构:

Substrate 1.0  https://learnblockchain.cn/2019/03/10/substrate-structure

Substrate 2.0  https://learnblockchain.cn/2019/12/23/substrate-struct

区块头( https://learnblockchain.cn/2019/12/30/substrate-header

交易体( https://learnblockchain.cn/article/330

Substrate的模型设计( https://learnblockchain.cn/article/331

Runtime概要 ( https://learnblockchain.cn/article/348

Runtime 的 wasm 与 native ( https://learnblockchain.cn/article/382

Kusama 开发者如何领取 KSM 测试代币流程

英文详细教程地址:https://github.com/kusamanetwork/faucet

1 生成有效地址

只有地址中包含”ksma“(不区分大小写 KSMA 或者 kSmA 都可以)才可以申请测试币。

访问 https://polkadot.js.org/apps/#/accounts/vanity
修改配置项
Search for ‘ksma’
case sensitive ‘No’

点击[Start generation]

Artboardks

在找到的 ksma 的地址上点击右侧 + 号

Artboardks

在弹出框中输入自定义名称和密码等信息,完成地址创建

随后即可在 My accounts 中找到添加的新的有效测试钱包
点击最右侧按钮,可以在区块浏览器中获取到 Kusama 钱包地址

ks

2 申请测试币

打开页面 https://github.com/kusamanetwork/faucet/issues

点击 [New issue]

Title 可以随意输入,如 test
Comment 中输入刚才获取的 Kusama 钱包地址

ks

点击 [Submit new issue],大约30秒后即可收到0.1KSM的测试币了

Kusama 的治理

创世期治理

Kusama 的初始治理模型,称为 “创世期治理”,是一个 “三权分立” 模型。

公投议院(大致可以被视为 “立法” 议院)拥有三者中最广泛的会员,是目前最权力最大的机构,所有立法(即对 Kusama 逻辑的更改)必须获得该议院的批准。它是一个所有持币者(即 KSM 代币持有者)的集合,不同持币者的投票权重根据其持有的 KSM 数量和他们愿意继续持有的时间来决定。

另外两个议院是理事会(与执行机构有一些相似之处)和技术委员会。理事会的会员是由代币持有人的批准投票选出的,投票权重仅由其控制的代币数量决定。

技术委员会由多个技术团队每队一票组成 ,技术团队是指所有成功独立实施,或完成了正式指定的 Polkadot / Kusama 协议(波卡运行时环境或目前的 Kusama 运行时)两者之一的团队,也就是说那些同时实现了两者的团队拥有两票。团队的增加或退出由委员会简单多数投票决定。

对公投议院提案的投票持续 28 天,如果获得批准,则在变更生效前等待 30 天。这使得加入 NPoS 共识系统的人(“stakers”)有时间退出网络,如果他们认为这个立法是灾难性的。

所有选民都必须持有 30 天,直到颁布日期到来,以防 “他们的阵营获胜” (如果不是,那么他们就可以自由离开网络)。那些愿意持有两倍长度时间的人将获得一张额外选票,这种情况最多可以增加五票(即那些愿意持有约两年半的人可获得六票)。那些完全不愿意持有的人也可以 投票,但和那些最少持有四周的人相比,他们的投票效力减少了 90%。

当投票率达到 100%(即所有代币都参与了投票,无论其锁定期限如何),如果没有获得至少第一议院的总票数 50% 的支持,则不得通过立法。随着投票率降低,通过机制会因立法的提出方式而有所不同。一般而言,采用 “正向投票率偏差 (Positive Turnout Bias)” 技术,随着不同选民的数量增加,通过立法所需的 “大多数” 的数量从 100% 减少到 50%。换句话说,在不到完全投票的情况下,需要绝大多数赞成票才能通过立法。当投票率增加时,所需的绝大多数的规模也会缩小(因此提案通过的机会增加)。

有两个特例:一种方法是无论投票率如何,都需要用简单多数制,这种计数方法通常被称为 “多数票”。另一种方法学名叫 “负向投票率偏见 (Negative Turnout Bias)”,但通常被称为 “默认票”,是需要绝大多数反对者来阻止立法通过,而当投票率增加到 100% 时,又还原到简单多数制。

Kusama 中的提案

Kusama 的立法议程会拆分到月度提案,供第一议院投票。每个月,都有一个来自理事会或 “公众提案队列” 的提案进入讨论,这两个来源的提案将被轮流处理。也就是说,理事会有权控制 50% 的立法议程,公众则控制另外 50% 的立法议程。

“公众提案队列” 是让立法发生的更广泛手段。任何 Kusama 用户都可以通过抵押极少量的 KSM 来向此队列添加议案,或者朝一个已有的提案抵押来 “附议” 它。当轮到从公共提案队列选出提案时,token 抵押数最多的提案会进入投票环节。

如上所述,公投议院的计票机制是正常的 “正向投票率偏差”。例外的情况是:当超过四分之三的理事会成员投票支持一项提案; 在这种情况下,投票是一个没有参考投票率的简单多数票制。当(且仅当)理事会一致批准时,则使用 “默认票” 制,即负向投票偏差作为计票方法。

快速受理

Kusama 包含了允许其治理系统处理需要快速进行立法变更的意外情况的逻辑。这种立法 “短路” 允许立即提出议案,与正常的月度提案同时进行公投。

如果一项立法得到理事会绝大多数(超过四分之三)的批准和技术委员会三分之二的批准,则可以进入快速受理。在这里,它将立即被提交至公投议院进行投票,投票期较正常情况(3天)大大缩短,并接近零颁布期。

在这种情况下,审批机制与其他情况相同(要么是不管投票率的简单多数票制,或者理事会一致同意的 “默认票” 制)。这种机制预计足以满足非争议性的 bug 修复和技术升级,但考虑到技术委员会的批准要求,对于具有政治敏感性或战略重要性的紧急情况可能无效。

后创世期治理

在 Kusama 上线后,还计划新增两个治理机制(如果试验进展顺利,还可以在创世初的 Polkadot 主网中添加):
一个是 Oracle 委员会,另一个是自发主体委员会。

Oracle 委员会

Oracle 委员会是一个小组,与技术委员会不同,Oracle 委员会的成员资格由成员自己根据一套自然语言规则控制,这有点像宪法。Oracle 委员会成员会被询问、要求支付(代币)来确定投票。他们会做客观的是真是假的评估和陈述,并提供相应的答案。基本的原则就是,他们不会使用任何形式的主观判断或意见。

Oracle 委员会成员资格规则很简单:

  1. 应有特定数量的成员(最初为 13 个,随着时间的推移扩展到 101 个)。
  2. 成员资格应来自广泛的国家,没有哪个单一国家的成员超过 10% 的席位。
  3. 国家的确认应与其新闻自由指数按比例成反比。这有助于最大限度地减少国家行为者强迫或胁迫成员不诚实行为的可能性。
  4. 成员应来自两个专业学科之一:法律界和学术界。如果提供了好的立论并且涵盖了下一点,则可以扩展该集合。
  5. 在所有情况下,应使用评估特定管辖区专业成就的最重要的客观方法。对于学者来说,这将是高质量文献的引用。对于法律专业人士而言,它将赢得一些新的先例。
  6. 成员资格每月重新评估一次,届时将从新候选人和希望再次当选的现任成员中选出最佳成员。
  7. 当且仅当大多数其他成员认为他们无法顺利履行其职责时,某个成员才会在当期被禁用。
  8. 如果四分之三的人同意 “该成员以恶意,粗心或道德的方式行事,由于他们自己的过错提出了不准确 / 错误的陈述”,则该成员会被列入黑名单。
  9. 候选人通常会保持匿名,但会向当前的成员们提供 KYC 信息。
  10. 一旦离开委员会,成员将被取消匿名。

Kusama 网络进展(持续更新)

2019/11/3:
验证人已增加到 100 个

2019/10/29:
Kusama 网络成功地转换到 POS !

2019/10/24:
Kusama 由 PoA 转为 PoS 网络,波卡 v0.6.3 版本也将在本周一或周二发布。
这次升级意味着 Kusama 网络的创世治理,也意味着 Kusama 网络从中心化的 PoA 网络转换为去中心化的 PoS 网络,整个网络的治理和转账也会同时生效,也就是 Kusama 的 PoS 网络正式上线。

2019/9/27:
Kusama 网络升级到 CC2

2019/9/5:
Kusama区块浏览器
https://polkascan.io/pre/kusama/dashboard
http://boka.network/#/Kusama

2019/9/4:
已经有29个节点申请成为验证节点
按计划,Kusama会在有50个以上验证节点申请后,从POA进入到POS阶段

2019/9/1:
进行链上抵押,申请成为后续节点操作教程:
https://guide.kusama.network/en/latest/try/validate/

注意:在目前Kusama网络,Stash和Controller可以用同一个地址,所以即使你只有一个地址有映射的KSM,也可以申请成为验证节点

2019/8/31:
已经有25个节点申请成为验证节点

2019/8/24:
DOT 映射领取 KSM 教程:
https://guide.kusama.network/en/latest/start/dot-holders/
http://blog.mathwallet.net/?p=2162

2019/8/23:
Kusama 网络通过 POA 共识启动

节点浏览器地址: https://telemetry.polkadot.io/#list/Kusama%20CC1

Gavin 发布 Kusama 规划和治理: https://medium.com/@gavofyork/kusama-rollout-and-governance-31eb18041044

目前 Kusama 网络不能进行转账等操作。