Tendermint區塊鏈Weave SDK快速指南

IOV Weave SDK是一個基於Tendermint共識引擎的區塊鏈開發框架,Weave提供了不少經常使用功能的預置模塊用於你本身的區塊鏈,同時也支持自定義擴展。node

Weave的一些亮點包括基於Merkle樹的數據存儲、高度靈活的擴展支持系統以及核心邏輯的定製(例如手續費機制及簽名驗證機制)。Weave也支持利用創世文件進行定製的能力。此外,在鍵-值庫之上,Weave還提供了一個簡單的對象關係映射層(ORM),能夠支持二級索引。Weave還包含了動態遷移功能,利用鏈上交易就能夠切換某些邏輯模塊的啓用或關閉。git

一、預置模塊

要快速掌握Tendermint區塊鏈開發,推薦匯智網的Tendermint區塊鏈開發詳解.。github

Weave開發框架內置了開發一個應用區塊鏈所需的經常使用功能模塊:golang

  • Cash:錢包模塊,支持代幣及手續費扣除
  • Sigs:簽名模塊,用於驗證ed25519簽名
  • Multisig:多籤模塊,用於多簽名合約的支持,容許修改爲員隸屬關係
  • AtomicSwap:原子交換模塊,支持跨鏈的原子交換
  • Escrow:託管模塊,仲裁者能夠安全地持有代幣,或者基於超時規則釋放託管資金
  • Governance:治理模塊,管理鏈上提議的治理規則的選舉,或者直接修改應用參數
  • PaymentChannels:單向支付通道模塊,實現微支付和鏈上結算
  • Distribution:分配模塊,利用配置信息在多個參與者之間分配收入,可用於分配手續費收入
  • Batch:批處理模塊,用於將多個交易整合爲單一原子操做,一個應用場景就是單一鏈上交換
  • Validators:驗證人模塊,用於PoA共識上下文中的驗證人集合更新,使用多籤或鏈上選舉模塊
  • Username:用戶名模塊,將用戶名映射爲鏈上地址,支持反向查詢
  • MessageFee:消息手續費模塊,用於對抗垃圾信息
  • Utils:工具模塊,包含一組經常使用的輔助功能

二、Weave開發框架概述

要使用Weave開發框架,須要兩個組件:web

  • blog:weave提供的定製ABCI博客應用
  • tendermint:區塊鏈共識引擎

若是你還沒接觸過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開發框架的支持更好。後端

在安裝上述兩個組件以前,須要在你的計算機上先安裝以下組件:安全

  • 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

三、初始化應用區塊鏈

在啓動區塊鏈以前,咱們須要利用創世區塊設置初始狀態。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區塊鏈節點的輸出了:

在這裏插入圖片描述


原文連接:IOV Weave SDK快速教程 - 基於Tendermint的區塊鏈開發框架 - 匯智網

相關文章
相關標籤/搜索