私設 Hyperledger Indy 網路 — 以 VON-network 為例
超級帳本,近年來在 Linux 基金會推廣之下,多方面議題都不斷的推廣,其中身份自主權(self-sorvegin Identity;SSI)更是被重視以及討論的概念。其中 Hyperledger Indy 更是擁有大量的專案支持,至今經歷不少迭代 Indy-SDK、Indy-vdr、Indy-shared-rs、Indy-node 等。Indy 相關專案這麼多,要先從哪一個上手?萬事起頭難,先從 VON-Network 開始。
文章目標:
- 了解什麼是自主主權身份,以及 Hyperledger Indy 如何提供一種強大的新方法來實現這一重要目標。
- 能夠使用 Hyperledger Indy 的實際案例,並知道如何啟動和使用 Hyperledger Indy 的本地網路。
目錄
- Hyperledger Indy 介紹
- 專案環境建置
- 瀏覽帳本網路
- 查看交易
- 建立 DID
- 查看創世區塊
- 使用 Indy-cli 建立 DID
Hyperledger Indy 介紹
當網路開始之初,所有相互連接的電腦都是互相信任的。連上網路的電腦很少,因此他們不需要機制來知道誰在網路間發送什麼資訊。隨著上網人數逐漸增長,這種信任迅速減弱。最常見使用者帳號和密碼認證出現問題,導致無法確定誰在使用另一個鍵盤,導致資料外洩、身份盜用、詐騙等造成數十億美元的損失。此外,同樣缺乏確定性使得網路上的許多類型的商業交易變得不可能 — 風險太高了。
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 ,包含任何需要事先安裝的檔案。
瀏覽帳本網路
一但帳本跑起來後,可以在新開瀏覽器上打 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”。有很多欄位可以填寫,這邊先填上最簡單的方式:
- 確保 “register from Seed” 有被勾選
- 填寫你的名字在 “Wallet Seed” 欄位中,還有你的全名在 “Alias” 欄位中
- 點擊 “Register DID”
- 打開 Domain Ledger ,並找到該筆交易。
查看創世區塊
在主頁上,點擊 “Genesis Transaction” 按鈕,可以看見該網路的創世區塊。每當執行 VON Network 上的節點時,你總是能夠得到創世區塊檔案,也就是說我們可以使用該檔案作為啟動 Aries Agent 的啟動參數。
如果想要查看創世區塊與 legder 之間的連線的話,在創世區塊中找到 “from” 欄位,複製當中的值(可能是”Th7MpTaRZVRYnPiabds81Y”),並回到 Domain Ledger 頁面中尋找
使用 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 進行操作。
產生 DID
指令 generateDid 可以使用 seed 來產生 DID,不使用 seed 也能產生。當不使用 Seed 產生 DID 時,將會隨機產生 seed,並用來產生 DID 與 Verkey。
註冊 DID 於 VON-Network 中
將剛才建立的 DID 註冊在網路中,需要以下步驟:
- 瀏覽器中打上 http:localhost:9000/
- 在 “Authenticated a New DID” 中,輸入上方的 DID、VerKey,並打上 indy-cli 在 Alias(optional) 欄位中。
- 點擊 Register DID 按鈕
成功的話,你會看見以下截圖資訊,在 Authenticated a New DID 下方多幾行文字
Identity successfully registered:
結語
至此,你已經能夠架設 Hyperledger Indy 簡易網路,並且能夠查看既有帳本上的交易資訊之外,也能夠添加新的 DID 在帳本上。
下一篇,我們來介紹在 Indy Network 中出現的概念,SSI、DID、Schema,各自代表什麼。