私設 Hyperledger Indy 網路 — 以 VON-network 為例

許恆修 | Heng-Shiou Sheu
7 min readNov 20, 2022

超級帳本,近年來在 Linux 基金會推廣之下,多方面議題都不斷的推廣,其中身份自主權(self-sorvegin Identity;SSI)更是被重視以及討論的概念。其中 Hyperledger Indy 更是擁有大量的專案支持,至今經歷不少迭代 Indy-SDK、Indy-vdr、Indy-shared-rs、Indy-node 等。Indy 相關專案這麼多,要先從哪一個上手?萬事起頭難,先從 VON-Network 開始。

VON Logo 取材自 Linux 基金會

文章目標:

  1. 了解什麼是自主主權身份,以及 Hyperledger Indy 如何提供一種強大的新方法來實現這一重要目標。
  2. 能夠使用 Hyperledger Indy 的實際案例,並知道如何啟動和使用 Hyperledger Indy 的本地網路。

目錄

  • Hyperledger Indy 介紹
  • 專案環境建置
  • 瀏覽帳本網路
  • 查看交易
  • 建立 DID
  • 查看創世區塊
  • 使用 Indy-cli 建立 DID

Hyperledger Indy 介紹

Hyperledger Indy 取材自 Linux 基金會

當網路開始之初,所有相互連接的電腦都是互相信任的。連上網路的電腦很少,因此他們不需要機制來知道誰在網路間發送什麼資訊。隨著上網人數逐漸增長,這種信任迅速減弱。最常見使用者帳號和密碼認證出現問題,導致無法確定誰在使用另一個鍵盤,導致資料外洩、身份盜用、詐騙等造成數十億美元的損失。此外,同樣缺乏確定性使得網路上的許多類型的商業交易變得不可能 — 風險太高了。

Hyperledger Indy 的創建是為了替網路添加一層身分認證層,一套機制能夠易於使用、支持在線信任並增強隱私。這是一個對網路上的每個人都至關重要的目標。而且,隨著區塊鏈的出現,這個目標最近變得可以實現。後續內容中,我們將帶出 Hyperledger Indy 如何使用去中心化身份(DID) 和可驗證憑證將身份添加為網路中的核心要素。

專案環境建置

先在 bash 環境中,將 von-network 專案拉下來,接著移動到 von-network 資料夾中

git clone https://github.com/bcgov/von-network
cd von-network

成功之後,我們將建立 Dockerimage 來執行 VON-Network,接著就可以執行私設的 Indy Network 。

./manage build
./manage start --logs

./manage 簡化了操作 VON Network 複雜的指令與安裝流程,在 Docker images 中使用 bash script 從頭開始建立 indy-node ,包含任何需要事先安裝的檔案。

log 呈現在 Terminal 狀況

瀏覽帳本網路

一但帳本跑起來後,可以在新開瀏覽器上打 localhost:9000 接著可以看到以下畫面

本地瀏覽器打上 Localhost:9000

在 VON Network web server 上你可以做到以下事項:

  • 查看網路中各個節點的狀態(status)
  • 查看網路中的創世區塊(Genesis File)
  • 建立 DID
  • 查看建構 Indy Network 的三個帳本:Domain ledger、Pool Ledger、Config Ledger

查看交易紀錄(Transactions;Txn)

點擊 Domain Ledger,會看到不少交易紀錄已經出現在帳本上。在一組全新的帳本中,會出現五筆交易。第一筆為託管人的 DID,接下來的四筆交易為網路上的每個管家(stewards)。

  • 管家(stewards):管家是可以將交易寫入 Hyperleder Indy ledger 的人
  • 託管人(Trustee):託管人的角色是在恢復身份時成為其他身份持有人的監護人

更多資訊可以查看 Indy-SDK 文件

建立 DID

為了建立新的 DID,需要點擊 “Authenticate a New DID”。有很多欄位可以填寫,這邊先填上最簡單的方式:

建立新 DID 過程
  1. 確保 “register from Seed” 有被勾選
  2. 填寫你的名字在 “Wallet Seed” 欄位中,還有你的全名在 “Alias” 欄位中
  3. 點擊 “Register DID”
  4. 打開 Domain Ledger ,並找到該筆交易。
紀錄新建 DID 的交易

查看創世區塊

在主頁上,點擊 “Genesis Transaction” 按鈕,可以看見該網路的創世區塊。每當執行 VON Network 上的節點時,你總是能夠得到創世區塊檔案,也就是說我們可以使用該檔案作為啟動 Aries Agent 的啟動參數。

點選 Genesis Transaction 查看資訊

如果想要查看創世區塊與 legder 之間的連線的話,在創世區塊中找到 “from” 欄位,複製當中的值(可能是”Th7MpTaRZVRYnPiabds81Y”),並回到 Domain Ledger 頁面中尋找

複製創世區塊中 from 欄位的值

使用 Indy-cli 建立 DID

indy-cli 是基於 indy-sdk 並封裝成 CLI command 的程式。下列步驟中,我們將再一次執行建立 DID,只不過這次,從 command 來。

以下操作,是基於已經執行 VON-Network 情況下運作

建立一系列 Secrets

第一件需要做的事情,就是產生 secrets,key 與 key

  • seed:用來產生 DID 用
  • key:作為錢包(Wallet) 加密鑰匙用

這兩個 secret 非常敏感。請確保你會將這兩組資料放置在安全的地方,例如密碼管理器之類的。如果有心人士拿到你的 seed 的話,對方就可以產出你的 DID、VerKey,假扮成你的身份去執行任何操作。

以下操作中,僅會使用截圖中的 seed 與 key 進行操作。

執行指令 ./manage generateSecrets 得到的 seed 與 key

產生 DID

指令 generateDid 可以使用 seed 來產生 DID,不使用 seed 也能產生。當不使用 Seed 產生 DID 時,將會隨機產生 seed,並用來產生 DID 與 Verkey。

執行指令 ./manage generateDid 得到的 DID 與 Verkey

註冊 DID 於 VON-Network 中

將剛才建立的 DID 註冊在網路中,需要以下步驟:

  1. 瀏覽器中打上 http:localhost:9000/
  2. 在 “Authenticated a New DID” 中,輸入上方的 DID、VerKey,並打上 indy-cli 在 Alias(optional) 欄位中。
  3. 點擊 Register DID 按鈕

成功的話,你會看見以下截圖資訊,在 Authenticated a New DID 下方多幾行文字

Identity successfully registered:

結語

至此,你已經能夠架設 Hyperledger Indy 簡易網路,並且能夠查看既有帳本上的交易資訊之外,也能夠添加新的 DID 在帳本上。

下一篇,我們來介紹在 Indy Network 中出現的概念,SSI、DID、Schema,各自代表什麼。

--

--

許恆修 | Heng-Shiou Sheu
許恆修 | Heng-Shiou Sheu

Written by 許恆修 | Heng-Shiou Sheu

AI研究員 @喬泰科技,軟體工程師@微光國際,業界講師 @FCU 創能學院,Co-Founder @圖靈文本。專注將科技應用於改善生活中,持續性分享軟體架構設計、前沿人工智慧研究、公司治理等觀念。整合科技、人文思維於一體。聯絡 📪 hengshiousheu@gmail.com

No responses yet