在本教程中,你将构建一个功能性的 Cosmos SDK 应用。过程中能学习基本的概念和 SDK 的结构。该示例将展示如何基于 Cosmos SDK 快速、轻松地从头开始构建自己的区块链。
在本章教程结束时,你会得到一个功能性的nameservice
应用,一个字符串对字符串的映射关系表(map[string]string
)。类似于Namecoin,ENS,Handshake这些模仿传统的 DNS 系统(map[domain]zonefile
)的应用。用户可以购买未被使用的域名,或是出售/交易这些域名。
本教程的所有最终源代码都在此目录(并编译)。但是,最好手动完成并尝试自己构建项目!
- 安装
golang
>1.13.0 - 生效的
$GOPATH
- 创造属于你自己区块链的意愿!
通过本章教程你将创建如下的文件来组成你的应用:
./nameservice
├── Makefile
├── Makefile.ledger
├── app.go
├── cmd
│ ├── nscli
│ │ └── main.go
│ └── nsd
│ └── main.go
├── go.mod
├── go.sum
└── x
└── nameservice
├── alias.go
├── client
│ ├── cli
│ │ ├── query.go
│ │ └── tx.go
│ └── rest
│ ├── query.go
│ ├── rest.go
│ └── tx.go
├── genesis.go
├── handler.go
├── keeper
│ ├── keeper.go
│ └── querier.go
├── types
│ ├── codec.go
│ ├── errors.go
│ ├── key.go
│ ├── msgs.go
│ ├── querier.go
│ └── types.go
└── module.go
首先创建一个新的 git 仓库:
mkdir -p $GOPATH/src/github.com/{ .Username }/nameservice
cd $GOPATH/src/github.com/{ .Username }/nameservice
git init
然后继续!第一步描述了设计你的应用。如果要直接跳转到编码部分,你可以从第二步开始。
- 设计 应用程序。
- 从
./app.go
开始实现你的应用。 - Start building your module by defining some basic
Types
. - 开始用
Keeper
构建你的模块。 - 通过
Msg
和Handler
定义状态转变。 - 使用
Querier
给你的状态机创建视图。 - 使用
sdk.Codec
注册你的 types 到编码格式中。 - 创建你的模块的 CLI 交互。
- 创建客户端访问你的 nameservice 的 HTTP 路径。
- 导入你的模块并编译你的应用!
- 创建你的应用的
nsd
和nscli
入口。 - 安装依赖管理工具
go.mod
。 - 编译并启动示例项目。
- 启动 REST 路径。