設定 Universal Ledger CLI

Universal Ledger CLI 是為實驗目的提供的指令列介面,可協助提交交易及與 Universal Ledger 網路互動。如要用於實際用途,建議改用 Universal Ledger API 建立整合。

本指南說明如何開始使用 Universal Ledger CLI。您可以瞭解如何執行下列作業:

  • 取得並設定 Universal Ledger CLI。

  • 使用 CLI 建立及管理帳戶。

  • 探索 CLI 中提供的其他指令。

事前準備

如要完成本指南,您需要下列項目:

  • 啟用 Universal Ledger API 的 Google Cloud 專案。

  • 例如 roles/universalledger.networkUser,這樣您就能提交交易,並查詢通用帳本網路中的帳戶狀態。

  • 系統在網路上為您建立的現有通用帳本帳戶。 如果沒有帳戶,請參閱「申請新帳戶」。

設定 CLI

為簡化設定程序,本指南是針對 Cloud Shell 工作階段提供的預設環境編寫。如要在其他環境中使用 CLI,可能需要修改這些指令。

在 Google Cloud 控制台中啟用 Cloud Shell。

啟用 Cloud Shell

執行下列指令,建立用於存放 CLI 設定檔的目錄。

mkdir -p ~/.config/ul-cli

執行下列各項指令,即可提取 ul-cli Docker 映像檔、定義執行二進位檔的別名,並確認二進位檔是否正常運作。

docker pull us-docker.pkg.dev/gcul-artifacts/images/client/ul-cli:latest
alias ul-cli="docker run --rm -i --user $(id -u):$(id -g) \
    --volume /tmp:/tmp \
    --volume ~/.config/ul-cli:/home/.config/ul-cli \
    --volume ~/.config/gcloud:/home/.config/gcloud \
    --volume .:/workspace \
    --env HOME=/home \
    --workdir /workspace \
    us-docker.pkg.dev/gcul-artifacts/images/client/ul-cli:latest"
ul-cli --help

執行下列指令來設定 CLI。

ul-cli config setup projects/PROJECT_ID/locations/REGION/endpoints/NETWORK_NAME

更改下列內容:

  • PROJECT_ID:啟用 Universal Ledger API 的 Google Cloud 專案 ID。
  • REGION:您要連線的端點區域。
  • NETWORK_NAME:要互動的網路名稱。

如需選擇合適端點的說明,請參閱「可用網路和區域」。

先前的指令會在以下位置建立檔案:

~/.config/ul-cli/config.yaml

CLI 會使用及維護這項設定。

管理通用分類帳帳戶

本節說明如何註冊現有帳戶、在帳本中為自己建立新帳戶,以及為他人建立新帳戶。

註冊現有帳戶

網路上的其他參與者為您建立帳戶後,您可以使用下列指令,在 CLI 的地址簿中註冊帳戶詳細資料。

ul-cli accounts register \
    --alias ACCOUNT_ALIAS \
    --account-id ACCOUNT_ID \
    --key-name ACCOUNT_KMS_KEY

更改下列內容:

  • ACCOUNT_ALIAS:CLI 在本機使用的簡短字串,用於在日後的指令叫用中識別這個帳戶。例如:usd-operatormy-token-managertest-user-account
  • ACCOUNT_ID:系統為您建立的 Universal Ledger 帳戶 ID。
  • ACCOUNT_KMS_KEY:這個帳戶使用的 Cloud KMS 金鑰版本完整資源 ID。帳戶必須使用這個特定金鑰版本的公開部分建立。如需預期格式,請參閱「擷取資源的 ID」。

這項本機作業會在 CLI 設定檔中記錄帳戶詳細資料,讓您代表這個帳戶簽署要求並提交至帳本。

為您建立新帳戶

您可以使用 ul-cli accounts create 子指令建立新帳戶。 舉例來說,如要建立新的使用者帳戶,可以使用:

ul-cli accounts create account \
    --alias NEW_ACCOUNT_ALIAS \
    --key-name NEW_ACCOUNT_KMS_KEY \
    --comment "NEW_ACCOUNT_COMMENT" \
    --roles NEW_ACCOUNT_ROLES \
    --sender ACCOUNT_MANAGER_ALIAS

更改下列內容:

  • NEW_ACCOUNT_ALIAS:CLI 在本機使用的簡短字串,用於在日後的指令叫用中識別這個帳戶。
  • NEW_ACCOUNT_KMS_KEY:新使用者帳戶要使用的 Cloud KMS 金鑰版本完整資源 ID。
  • NEW_ACCOUNT_COMMENT:字串,其中包含要記錄在與新使用者帳戶相關聯的帳本上的任何相關資訊。這是儲存在帳本上的不透明值,但通用帳本不會以其他方式解讀。建立後,這個欄位就無法變更,且任何有權存取網路的人都能讀取。
  • NEW_ACCOUNT_ROLES:以半形逗號分隔的角色清單,將指派給新的使用者帳戶。例如:payerreceivercontract-creatorcontract-participant
  • ACCOUNT_MANAGER_ALIAS:先前使用 CLI 註冊或建立的帳戶管理員別名。

這會代表指定帳戶管理員簽署並提交 CreateAccount 交易。

執行 ul-cli accounts create --help,查看其他類型帳戶的建立選項。

為他人建立新帳戶

如要為他人建立帳戶,請要求對方與您分享公開金鑰,並將金鑰儲存在檔案中。一般來說,建議您使用 PEM 編碼格式的金鑰。舉例來說,如果對方的簽署金鑰使用 P-256 橢圓曲線搭配 SHA256 摘要,請將金鑰儲存在名為 pem_ec_p256_sha256.pub 的檔案中:

-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEJ/vWkd5wgakFbVD25k8WM9Ll6We+
c8RVDS0R4G8xetsmFjfNW/ZxwWeB86IvMjxY8ZsdU9+W7BL5YM6rUB5yCQ==
-----END PUBLIC KEY-----

然後執行下列指令來建立帳戶:

ul-cli accounts create account \
    --alias NEW_ACCOUNT_ALIAS \
    --public-key "$(cat pem_ec_p256_sha256.pub)" \
    --key-format pem_ec_p256_sha256 \
    --comment "NEW_ACCOUNT_COMMENT" \
    --roles NEW_ACCOUNT_ROLES \
    --sender ACCOUNT_MANAGER_ALIAS

更改下列內容:

  • :CLI 在本機使用的簡短字串,用於識別日後指令叫用中的這個帳戶。不過請注意,由於您沒有私密金鑰,因此無法簽署或提交交易。NEW_ACCOUNT_ALIAS
  • NEW_ACCOUNT_COMMENT:字串,其中包含要記錄在新使用者帳戶相關聯帳本中的任何相關資訊。這是儲存在帳本中的不透明值,但通用帳本不會以其他方式解讀。建立後,這個欄位就無法變更,且任何有權存取網路的人都能讀取。
  • NEW_ACCOUNT_ROLES:以半形逗號分隔的角色清單,將指派給新的使用者帳戶。例如:payerreceivercontract-creatorcontract-participant
  • ACCOUNT_MANAGER_ALIAS:先前使用 CLI 註冊或建立的帳戶管理員別名。

這會代表指定帳戶管理員簽署並提交 CreateAccount 交易。

所有 accounts create 子指令都提供 --public-key--key-format 標記,因此您也可以使用這些標記建立其他類型的帳戶。如需其他支援的公開金鑰格式,請參閱 Universal Ledger API 參考資料中的「KeyFormat」。

列出受管理帳戶

執行下列指令,即可查看所有在本機註冊或使用 Universal Ledger CLI 建立的帳戶:

ul-cli accounts list

探索其他指令

使用 --help 旗標,探索 Universal Ledger CLI 提供的所有其他指令和子指令。

舉例來說,如要查看可用的頂層指令,請執行:

ul-cli --help

這包括提交其他類型交易的子指令,例如:

  • accounts:註冊或建立帳戶,以及對現有帳戶執行管理作業,例如新增或移除角色,以及查詢帳戶詳細資料。
  • contracts:部署、授予權限,以及在可程式化合約上叫用方法。
  • issuance:供結算中心增加或減少權杖管理工具的發行上限,以及執行結算作業。
  • tokens:代幣管理員在使用者帳戶中鑄造或銷毀代幣。
  • wallet:使用者帳戶將餘額轉移至其他使用者帳戶。

後續步驟