超节点独家:杭州黑客松WORKSHOP大放送 第二期(下)
超节点财经
2019-10-11
热度10538

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 无分叉地升级你的区块链!

本内容旨在传递行业动态,不构成投资建议或承诺。
为你推荐

商务合作:TG:@Lottie96