IOV Weave SDK开发教程【Tendermint 】

简介: IOV Weave SDK是一个基于Tendermint共识引擎的区块链开发框架,Weave提供了很多常用功能的预置模块用于你自己的区块链,同时也支持自定义扩展。Weave的一些亮点包括基于Merkle树的数据存储、高度灵活的扩展支持系统以及核心逻辑的定制(例如手续费机制及签名验证机制)。

IOV Weave SDK是一个基于Tendermint共识引擎的区块链开发框架,Weave提供了很多常用功能的预置模块用于你自己的区块链,同时也支持自定义扩展。

Weave的一些亮点包括基于Merkle树的数据存储、高度灵活的扩展支持系统以及核心逻辑的定制(例如手续费机制及签名验证机制)。Weave也支持利用创世文件进行定制的能力。此外,在键-值库之上,Weave还提供了一个简单的对象关系映射层(ORM),可以支持二级索引。Weave还包含了动态迁移功能,利用链上交易就可以切换某些逻辑模块的启用或关闭。

1、预置模块

要快速掌握Tendermint区块链开发,推荐汇智网的Tendermint区块链开发详解.。

Weave开发框架内置了开发一个应用区块链所需的常用功能模块:

  • Cash:钱包模块,支持代币及手续费扣除
  • Sigs:签名模块,用于验证ed25519签名
  • Multisig:多签模块,用于多签名合约的支持,允许修改成员隶属关系
  • AtomicSwap:原子交换模块,支持跨链的原子交换
  • Escrow:托管模块,仲裁者可以安全地持有代币,或者基于超时规则释放托管资金
  • Governance:治理模块,管理链上提议的治理规则的选举,或者直接修改应用参数
  • PaymentChannels:单向支付通道模块,实现微支付和链上结算
  • Distribution:分配模块,利用配置信息在多个参与者之间分配收入,可用于分配手续费收入
  • Batch:批处理模块,用于将多个交易整合为单一原子操作,一个应用场景就是单一链上交换
  • Validators:验证人模块,用于PoA共识上下文中的验证人集合更新,使用多签或链上选举模块
  • Username:用户名模块,将用户名映射为链上地址,支持反向查询
  • MessageFee:消息手续费模块,用于对抗垃圾信息
  • Utils:工具模块,包含一组常用的辅助功能

2、Weave开发框架概述

要使用Weave开发框架,需要两个组件:

  • blog:weave提供的定制ABCI博客应用
  • tendermint:区块链共识引擎

如果你还没接触过Tendermint,建议参考汇智网的Tendermint开发详解

Weave的应用通信框架如下:

    +---------+                     +------------+                      +----------+
    |   blog  |  <- (local) ABCI -> | Tendermint |   <- websocket ->    | client   |
    +---------+                     +------------+                      +----------+

blog和tendermint运行在同一台计算机上,通过二进制TCP/IP协议或UNIX套接字通信,这两者结合在一起构成了区块链。在实际的生产环境中,你可能会有多个计算机运行这一后端,彼此之间通过自调节的p2p gossip协议通信来实现状态的复制。对于应用开发而言,一个节点就够了,但是单一节点是没有容错能力的。

你可以使用任何websocket客户端连接tendermint的rpc,不过我们还是推荐使用IOV core,毕竟它和Weave是同一家的产品,对Weave开发框架的支持更好。

在安装上述两个组件之前,需要在你的计算机上先安装如下组件:

  • golang 1.11.4+
  • tendermint 0.31.5
  • weave
  • docker

然后克隆blog代码库并根据兼容表检出兼容的版本。例如:

# cd into to your workspace that is not in your $GOPATH
git clone https://github.com/iov-one/blog-tutorial
cd blog-tutorial
make install
# test it built properly
tendermint version
# 0.3X.X-YYYYYYYY
blog version
# v0.1X.X-YYYYYYYY

3、初始化应用区块链

在启动区块链之前,我们需要利用创世区块设置初始状态。tendermint和blog都有一个目录来保存配置信息和内部数据库状态。默认目录为:~/.tendermint~/.blog。不过为了简化考虑,我们将所有配置信息放到同一个目录。

首先,创建一个默认的创世文件、用来签名区块的私钥以及默认的配置文件:

# make sure you really don't care what was in this directory and...
rm -rf ~/.blog
# initialize state on default folder ~/.blog
make inittm

你可以浏览一下这个目录,其中最重要的是~/.blog/config/genesis.json,在配置文件~/.blog/config/config.toml中也包含了很多选项。

在启动区块链之前,我们要为刚创建的账户添加一批代币,同时也要启用索引器,这样我们就可以按id搜索交易了。但是我们没有直接修改配置文件,而是用如下的命令:

blog init CASH bech32:tiov1qrw95py2x7fzjw25euuqlj6dq6t0jahe7rh8wp

确保你输入的地址和上面一致。这个账户现在就有代币了。在运行上述命令之后,你也可以看一下~/.blog/config/genesis.json。 比较重要的修改是"app_state"。

你可能会问,这个地址是哪里来的。这是一个使用如下的测试助记词生成的演示账户:

dad kiss slogan offer outer bomb usual dream awkward jeans enlist mansion

账户的派生路径为:m/44'/988'/0'

4、启动应用区块链

我们已经有了私钥,并且进行了配置,现在可以启动我们的blog应用区块链了:

# start the tendermint with default config
make runtm
blog start

上面的命令连接tcp://localhost:26658,如果你希望使用unix套接字,可以使用如下命令:

tendermint node --home ~/.blog --proxy_app=unix://$HOME/abci.socket > ~/.blog/tendermint.log &
blog start -bind=unix://$HOME/abci.socket

打开一个新的终端窗口,使用命令tail -f ~/.blog/tendermint.log,就可以看到我们的blog区块链节点的输出了:

在这里插入图片描述


原文链接:IOV Weave SDK快速教程 - 基于Tendermint的区块链开发框架 - 汇智网

目录
相关文章
|
算法 IDE 开发工具
火爆全网开源额温枪同平台之华大HC32L136 SDK开发入门
火爆全网开源额温枪同平台之华大HC32L136 SDK开发入门
251 1
|
3月前
|
数据采集 开发工具 Python
海康威视工业相机SDK+Python+PyQt开发数据采集系统(支持软件触发、编码器触发)
该系统基于海康威视工业相机SDK,使用Python与PyQt开发,支持Gige与USB相机设备的搜索及双相机同时显示。系统提供软件触发与编码器触发模式,并可在数据采集过程中实时保存图像。此外,用户可以调节曝光时间和增益,并进行信息输入,这些信息将被保存至配置文件以便下次自动加载。参数调节与实时预览等功能进一步增强了系统的实用性。
177 1
|
3月前
|
编解码 缓存 开发工具
Pico Neo 3教程☀️ 三、SDK 的进阶功能
Pico Neo 3教程☀️ 三、SDK 的进阶功能
|
3月前
|
存储 监控 开发工具
Django 后端架构开发:手机与邮箱验证码接入、腾讯云短信SDK和网易邮箱
Django 后端架构开发:手机与邮箱验证码接入、腾讯云短信SDK和网易邮箱
62 0
|
3月前
|
开发工具 图形学 Android开发
Pico Neo 3教程☀️ 二、从 PicoVR Unity SDK 迁移至 Unity XR SDK
Pico Neo 3教程☀️ 二、从 PicoVR Unity SDK 迁移至 Unity XR SDK
|
3月前
|
开发工具 vr&ar 图形学
Pico Neo 3教程☀️ 一、SDK的下载与快速入门
Pico Neo 3教程☀️ 一、SDK的下载与快速入门
|
4月前
|
NoSQL 开发工具 数据库
开发与运维测试问题之应用启动报 Can not load this fake sdk class 的异常如何解决
开发与运维测试问题之应用启动报 Can not load this fake sdk class 的异常如何解决
|
5月前
|
开发工具
微信客服系统开发SDK使用教程- 拉取当前微信个人号列表请求(立即)
微信客服系统开发SDK使用教程- 拉取当前微信个人号列表请求(立即)
|
6月前
|
开发工具 CDN 容器
基于Html+腾讯云播SDK开发的m3u8播放器
周末业余时间在家无事,学习了一下腾讯的云播放sdk,并制作了一个小demo(m3u8播放器),该在线工具是基于腾讯的云播sdk开发的,云播sdk非常牛,可以支持多种播放格式。
234 1
|
5月前
|
API 开发工具
抖音sdk,抖音开发api接口
抖音sdk,抖音开发api接口