天天看點

IOV Weave SDK開發教程【Tendermint 】

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 】

原文連結:

IOV Weave SDK快速教程 - 基于Tendermint的區塊鍊開發架構 - 彙智網