IOV Weave SDK是一个基于Tendermint共识引擎的区块链开发框架,Weave提供了不少经常使用功能的预置模块用于你本身的区块链,同时也支持自定义扩展。node
Weave的一些亮点包括基于Merkle树的数据存储、高度灵活的扩展支持系统以及核心逻辑的定制(例如手续费机制及签名验证机制)。Weave也支持利用创世文件进行定制的能力。此外,在键-值库之上,Weave还提供了一个简单的对象关系映射层(ORM),能够支持二级索引。Weave还包含了动态迁移功能,利用链上交易就能够切换某些逻辑模块的启用或关闭。git
要快速掌握Tendermint区块链开发,推荐汇智网的Tendermint区块链开发详解.。github
Weave开发框架内置了开发一个应用区块链所需的经常使用功能模块:golang
要使用Weave开发框架,须要两个组件:web
若是你还没接触过Tendermint,建议参考汇智网的Tendermint开发教程。docker
Weave的应用通讯框架以下:数据库
+---------+ +------------+ +----------+ | blog | <- (local) ABCI -> | Tendermint | <- websocket -> | client | +---------+ +------------+ +----------+
blog和tendermint运行在同一台计算机上,经过二进制TCP/IP协议或UNIX套接字通讯,这二者结合在一块儿构成了区块链。在实际的生产环境中,你可能会有多个计算机运行这一后端,彼此之间经过自调节的p2p gossip协议通讯来实现状态的复制。对于应用开发而言,一个节点就够了,可是单一节点是没有容错能力的。json
你可使用任何websocket客户端链接tendermint的rpc,不过咱们仍是推荐使用IOV core,毕竟它和Weave是同一家的产品,对Weave开发框架的支持更好。后端
在安装上述两个组件以前,须要在你的计算机上先安装以下组件:安全
而后克隆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
在启动区块链以前,咱们须要利用创世区块设置初始状态。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'
。
咱们已经有了私钥,而且进行了配置,如今能够启动咱们的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区块链节点的输出了: