超节点独家:杭州黑客松WORKSHOP大放送 第二期(下)

超节点财经
个人专栏
热度: 10537

Parity 工程师 Hanwen 和 Nicole Zhu的 “如何使用 Substrate 建立一个私人区块链网络” Workshop

9 月 21 日 - 22 日,为期两天的 PolkaWorld Hackathon(波卡世界黑客马拉松)在杭州钱江新城的 B-LABS 圆满举办。21 号下午,Parity 和 Web3 基金会带来了三个干货满满的 Workshop。其中之一是Parity 工程师 Hanwen 和 Nicole Zhu的 “如何使用 Substrate 建立一个私人区块链网络” Workshop。以下为超节点(SSSnodes)对其演讲稿的独家中文全译。感谢PolkaWorld提供的图片资料。

超节点独家


Substrate: 一个波卡(Polkadot)的区块链建设者(部署和升级自定义区块链网络)(Part 2)

原作者:Nicole Zhu, Hanwen Cheng (Parity)

超节点独家


练习 1: 部署一个 Substrate 区块链 到私人网络

Step 1: Start as a boot node “Alice”创建初始节点


超节点独家

Step 2. Second node “Bob”  joins in 第二个节点加入

超节点独家

Step 3. Check the State of your blockchain 检查出块状态

超节点独家

要点:

Substrate 是一个开箱即用、可运行的区块链!

Runtime 开发基础知识

Verify First, Write Last 先验证,再写入

● “bad transaction” 的处理和 Ethereum 不同

● Ethereum: 状态被回滚,存储未修改,并支出交易费用。

● Substrate: 如果返回了 `Err`,状态的改变将会持久化

● 对于某些情况需要这样做,如:

● 出现失败的交易,也会增加 Account交易随机数

● 尽管 “out of gas”,也要收取交易费用

● 编写“子函数”时,需要格外注意这种模式

Skeleton of a Module 框架

超节点独家

Importing and Defining Generic Types 导入和定义类型

超节点独家


Declaring Storage 声明状态


超节点独家


Declaring Events 声明事件


超节点独家


Declaring Dispatchable Functions 声明可调用方法


超节点独家


Declaring Public and Private Functions 声明外部内部函数


超节点独家

一旦声明作为外部函数之后,他们甚至可以从其他的Rust module来调用

Defining a Custom Struct 创建自定义struct


超节点独家


练习2: 创建一个简单的存在性证明区块链


证明文件是否存在的在线服务


存在性证明是一个通过在比特币网络上发送一个加入时间戳的交易,来证明电脑上文件在特定时间是否存在的线上服务。

POE最初是基于比特币网络的,但是,他的功能不能很好的被比特币网络支持,主要依托应用层用不同的hack方法来实现。

而给像比特币这样的区块链引入新的功能又很困难 ,因为这些功能太专,不适合于修改基础协议。

现在让我们开始创建自定义module!


超节点独家


1. Import necessary dependencies 导入必要的依赖模块


第一步可以在新建的poe文件开头加入:


超节点独家

2. 设置使module可以发送事件


现在我们只需要添加一个even模块。


超节点独家


3. Define your module’s events定义module中的事件


超节点独家


4. Add the storage/state items添加状态存储


超节点独家


5. Add your callable [public] module functions添加可调用的公共方法/函数


超节点独家


6. Add module into Runtime把module添加到runtime


超节点独家


7. Compile! 编译!


如果把以上的模块都放入poe.rs文件中,并正确的修改lib.rs,那么这个时候就可以编译成功了

cargo build --release


练习 3: 进行区块链网络无分叉升级


Hard Fork Upgrades 硬分叉升级


超节点独家


Forkless Runtime Upgrades 无分叉 Runtime 升级


超节点独家


A Need for Upgrades 升级的必要性


● 修复重要的安全漏洞

● 更改协议中的核心规则

● 添加新功能

● 修复链上状态

● 硬分叉升级需要大量的协作

● 关于升级的治理和信号不明确

Governing Runtime Upgrades Runtime 升级治理


● 可以通过链上治理 访问Runtime 代码

● Sudo 模块

● Democracy 模块

● 自定义的模块和功能

● Runtime 升级是可选的

重要说明:


如果采用wasm,一个链升级接口,则其余的都不需要升级。如果不是wasm,则如果一个链升级接口,则整个网络都需要执行升级。

要点:


Substrate 无分叉地升级你的区块链!

声明:本文为入驻“火星财经 专栏”作者作品,不代表火星财经官方立场。
转载请联系网页底部:内容合作栏目,邮件进行授权。授权后转载时请注明出处、作者和本文链接。未经许可擅自转载本站文章,将追究相关法律责任,侵权必究。
提示:投资有风险,入市须谨慎,本资讯不作为投资理财建议。
本内容旨在传递行业动态,不构成投资建议或承诺。