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的區塊鍊開發架構 - 彙智網