ホールセールCBDCアプリケーションのORDSスクリプトの実行
インスタンスを作成してアプリケーションをデプロイした後、ORDSスクリプトを実行できます。
次の前提条件を満たしている必要があります。
- Node.jsバージョン20.19以降、22.13以降、または23.5以降。
- ORDSスクリプトの
.zipファイルが必要です。このファイルは、サービス・コンソールからダウンロードできます。
ソース・コントロールに本番シークレットを配置しないでください。承認されたシークレット管理システムに、データベース・パスワード、ウォレット・ファイル、OAuthクライアント・シークレットおよびベアラー・トークンを格納します。スクリプトのコミットされた.envファイルは、プレースホルダ・テンプレートのみです。
- ORDSスクリプトの
.zipファイルを作業ディレクトリに解凍します。 ORDSscriptディレクトリで、端末を開きます。- 次のコマンドを実行して、システム上のNode.jsのバージョンがサポートされていることを確認します。
node --version npm install - 指定されたテンプレートのプレースホルダ値を置換して、
.envファイルを構成します。データベース・パスワードをこのファイルに追加しないでください。コマンドライン・インタフェースでは、対話形式での入力を求められます。# Common ORDS configuration CONNECTION_STRING="<Oracle connection string or TNS service alias>" VIEW_PREFIX="<unique deployment namespace>" MODULE_NAME="<unique ORDS module name>" BASE_PATH="<unique/ords/base/path/>" ITEMS_PER_PAGE="100" ORDS_REST_BASE_URL="https://<ords-host>" ALIAS_NAME="<REST-enabled schema alias>" ROLE_NAME="<unique ORDS role>" PRIVILEGE_NAME="<unique ORDS privilege>" LABEL="<privilege label>" DESCRIPTION="<deployment description>" CLIENT_NAME="<OAuth client name>" OWNER="<OAuth client owner>" SUPPORT_EMAIL="<support email>" # Besu WCBDC configuration BESU_TABLE_PREFIX="<exact prefix before _more, _store_state and _store_hist>" BESU_TOKEN_CONTRACT="0x<deployed WCBDC token proxy address>" BESU_ACCOUNT_CONTRACT="0x<deployed Account proxy address>"CONNECTION_STRINGCONNECTION_STRINGパラメータがTNS別名の場合は、ウォレットを抽出してOracleクライアント環境を構成し、tnsnames.oraファイルを検出できるようにします。圧縮ウォレット.zipファイルのみでは不十分です。ALIAS_NAME- パブリックORDS URLおよびトークンURLで使用されるREST対応Oracleスキーマ別名。
BESU_ACCOUNT_CONTRACT- デプロイ済アカウント・プロキシ契約アドレス。
BESU_TABLE_PREFIX- 正確なリッチ履歴表接頭辞。ソースの
_more、_store_stateおよび_store_hist表を決定します。 BESU_TOKEN_CONTRACT- デプロイされた卸売CBDCトークン・プロキシ契約アドレス。
MODULE_NAMEおよびBASE_PATH- これらのパラメータは、ORDSモジュールのアイデンティティとURLパスを定義します。デプロイメント固有と一意の両方を保持します。
PATTERN, CHAINCODE_NAME, INSTANCE_NAME, CHANNEL_NAME- これらのパラメータは、卸売CBDCアプリケーションのHyperledger Fabricバージョンでのみ使用されます。これらはBesuバージョンには適用されません。
VIEW_PREFIX- 操作およびオプションの分析ビューの一意のネームスペース。Oracleスキーマを共有するデプロイメントごとに異なる接頭辞を使用します。
- 次のコマンドを入力して、スクリプトを実行します。
npm run start- Oracleデータベースのユーザー名およびパスワードを入力します。
- ブロックチェーン・プラットフォームとして「Besu」を選択します。
- アプリケーション・タイプとして「WCBDC」を選択します。
- 以前の実行が不完全な場合は、オブジェクトを元に戻すことを選択する前に、ロールバック・プロンプトを確認します。
- ORDS RESTエンドポイントを作成するには、「はい」を選択します。
- デプロイメントに分析出力が必要な場合にのみ、分析ビューを選択します。
- このデプロイメントに新しいクライアントが必要な場合にOAuthクライアントを生成するには、「はい」を選択します。
- エンドポイントおよびOAuth作成を選択した場合は、生成された出力を承認済シークレット・ストアに保持します。出力には、コール可能なエンドポイント・マップ、OAuthクライアントID、OAuthクライアント・シークレットおよび短命のベアラー・トークン・レスポンスが含まれます。承認されたシークレット処理をサポートしていないソース・コントロール・システム、ファイル、Wikiまたはプロジェクト管理ソフトウェアに、クライアント・シークレットまたはベアラー・トークンをコピーしないでください。次のテキストに、サンプル出力を示します。
{ "ORDSEndpoint": "<generated endpoint URL or endpoint map>", "clientId": "<OAuth client ID>", "clientSecret": "<OAuth client secret>", "bearerToken": { "access_token": "<short-lived access token>", "token_type": "bearer", "expires_in": 3600 } } - OAuthクライアント生成を選択した場合は、レポートされたクライアントIDおよびクライアント・シークレットを承認済シークレット・ストアに保持し、それらを使用してエンドポイントをコールしてシステム機能を検証します。次のテキストは、トークン・リクエストの形式を示しています
エンドポイントURLでは、次の形式が使用されます。curl --request POST \ "https://<ords-host>/ords/<ALIAS_NAME>/oauth/token" \ --user "<client-id>:<client-secret>" \ --header "Content-Type: application/x-www-form-urlencoded" \ --data "grant_type=client_credentials"https://<ords-host>/ords/<ALIAS_NAME>/<BASE_PATH>/<route>次のコマンドは、検証テストの例を示しています。curl --location \ "https://<ords-host>/ords/<ALIAS_NAME>/<BASE_PATH>/getAllCBDCAccounts?token_id=<TOKEN_ID>" \ --header "Authorization: Bearer <access-token>" \ --header "Accept: application/json" - 次のチェックを実行して、スクリプトが正常に実行されたことを確認します。
- Blockchain Platform Managerプロファイル
- Oracle AI Databaseリッチ履歴プロファイルが存在し、インスタンスに対して選択されています。
- リッチ履歴表
- 構成された
BESU_TABLE_PREFIXは、_more, _store_state, and _store_hist表に解決されます。 - 索引付けされたデータ
- リッチ履歴データには、少なくとも1つの代表卸売CBDCトランザクションが表示されます。
- ビュー
- すべての操作ビューは、構成された
VIEW_PREFIXの下に存在します。 - ORDSモジュール
- 構成されたモジュールは、予期される
BASE_PATHに公開されます。 - OAuth
- クライアント資格証明リクエストはアクセス・トークンを返します。
- API
- 有効な認証済リクエストはHTTP 200を返します。一致する元帳データが存在しない場合は、空の
itemsリストを使用できます。 - 分離
- ビュー、モジュール、ロール、権限、クライアントおよび別名は、1つのOracleデータベースを共有するデプロイメントに対して一意です。
SELECT view_name FROM user_views WHERE view_name LIKE UPPER('<VIEW_PREFIX>') || '_%' ORDER BY view_name; SELECT name, uri_prefix, items_per_page, status FROM user_ords_modules WHERE name = '<MODULE_NAME>';