前言
本译本全部来自于Substrate官方文档,旨在还原原文意思、促进技术交流,但是由于本人才疏学浅,如有错误或不当之处,还请各位见谅并指出
1 开始
1.1 总览(Overview)
这里是Substrate 开发者的官方文档中心,这里资源的目的主要是帮助读者理解使用Substrate 进行区块链开发的难点。这篇指导文章分为几个部分,主要内容是介绍Substrate的一些构建原则和设计初衷以及成为一名高效的区块链开发者所需要的特殊技能
必备知识提示:
为了更充分的理解Substrate,你应该拥有扎实的计算机科学知识和了解基本的区块链概念。你应该熟悉区块头(header)、block(区块)、client(客户端)、哈希(hash)、交易(transaction)和签名(signature)等术语。Substrate是用Rust语言构建的,这是因为Rust语言具有优秀的设计模式能够实现安全、快速的代码开发。如果你不了解Rust,你仍然可以利用Substrate进行开发工作,但是对于Rust有比较好的理解可以让你变成一个优秀的Substrate开发者。可以通过Rust社区提供的资源来提升你的Rust使用技巧
Substrate 采用模块化的方法进行区块链开发,它定义了一系列丰富的原语,这能够让开发者使用强大、熟悉的编程语言
使用方法
Substrate主要有以下三种使用方式:
使用Substrate Node:你可以运行预先设计的Substrate节点和配置创世区块。在这种情况下,你只需要用一个JSON文件就可以发布你自己的区块链。JSON文件可以让你配置构建Substrate Node运行时模块的初始状态,比如:余额、 质押和超管权限等。你可以通过创建你的第一条Substrate链教程和创建私有网络教程了学习更多关于运行一个Substrate Node的知识
使用Substrate FRAME:你可以使用FRAME(Framework for Runtime Aggregation of Modularized Entities) 轻松地创建自定义的运行时,FRAME用于构建Substrate 节点。当你构建区块链逻辑时它能给你很大的自由,它可以让你配置数据类型、从模块库中选择模块,甚至往模块库中添加自定义的模块。当你要开始一个项目时,推荐使用Substrate 开发者中心节点模版,这是一个好的起点。更多内容,请参考创建一个dApp和添加一个模块
使用Substrate Core:如果使用Substrate core,可以忽略整个FRAME框架,因为运行时可以从头开始设计和实现。任何编译目标是WebAssembly的语言都可以实现。如果让runtime和Substrate节点抽象的区块创作逻辑兼容,你就能够轻易的从Wasm blob构建一个新的创世区块并且使用现有的以Rust为基础的Substrate 客户端发布你的链。如果不兼容,你需要改变客户端的区块创作逻辑,甚至是改变区块头和区块序列化格式。就开发工作而言,使用Substrate Core尽管很难,但是更困难的方式也意味着更大的创新自由
Substrate可以让开发者在设计决策的每一步都能够按照他们自己的偏好来选择是技术上更自由还是开发上更容易。下图说明了这种灵活性的本质
后续
了解更多
参考开发者文档,用于运行时开发的FRAME系统
使用Polkadot-JS系列库为任何基于substrate的链创建丰富多样的客户端应用
深入研究高级主题,比如Substrate的SCALE 编码, 共识机制, 密码学 和 存储
例子
通过教程学习使用Substrate和FRAME构建和运行区块链
参考指导文档中的代码示例,它们包含了一些常见问题的解决方法
参考
查看Rust 参考文档,了解Substrate代码基础