Oracle Blockchain Platformの既知の問題

Oracle Blockchain Platformを使用する際に発生する可能性のある問題点と、その回避方法について学習します。

サポートされるHyperledger Fabricのバージョン

Oracle Blockchain Platform 24.1.3では、Hyperledger Fabric 2.5.7がサポートされます。

サポートされているブラウザ

コンソールが所定の動作をしない場合は、サポート対象のブラウザの最新バージョンを使用していることを確認します。

Oracle Blockchain Platformでは、次のブラウザがサポートされています:

  • Mozilla Firefox
  • Google Chrome
  • Safari
  • Microsoft Edge/Internet Explorer

Hyperledger Fabricバージョンの相互運用性

Oracle Blockchain Platformでは、同じブロックチェーン・ネットワーク内のHyperledger Fabric v1.4.7およびHyperledger Fabric v2.xに基づくインスタンスの使用はサポートされません。

回避策: 同じブロックチェーン・ネットワーク上で異なるHyperledger Fabricのメジャー・バージョンを実行しないでください。

以前のバージョンでサポートされていない機能

以前のバージョンのOracle Blockchain Platform Enterprise Editionでは、ロード・バランサおよびハードウェア・セキュリティ・モジュールがサポートされていました。これらはOracle Blockchain Platform 24.1.3ではサポートされていません。

ピアまたは注文用フル・ストレージ

次のコマンドを実行して、次に示すエラーのいずれかを取得した場合、十分な領域がないため、ポッドがディスクに書き込めない可能性があります。
#kubectl logs <orderer-pod> -n <instance-namespace> -100f
返される可能性のあるエラー:
path=/u01/work/hyperledger/production/orderer/etcdraft/wal/xjfrgv.tmp/0000000000000000-0000000000000000.wal 
segment-bytes=64000000 error="no space left on device"
または
2025-06-26T04:24:45.140179751Z [35m2025-06-26 04:24:45.140 UTC 0181 PANI[0m [orderer.commmon.multichannel] 
[35;1minitAppChannelsWhenSystemChannelExists[0m -> Failed to create chain support for channel 'xjfrgv', 
error: error creating consenter for channel: xjfrgv: failed to restore persisted raft data: failed to create or read 
WAL: failed to initialize WAL: no space left on device
回避策: 次のコマンドを実行して、インスタンスのオーダラ・ノード名を取得します:
kubectl get orderernode -n <instancename>
次に、ノードを編集します。
kubectl edit orderernode obp-AAA-ZZZ-ordererZ -n instancename
specstoragesizeセクションで、サイズを2Giから10Giに増やし、ファイルを保存します。
次に、そのインスタンス内のすべてのピアの名前を取得します。
kubectl get peer -n <instancename>
各ピアの編集:
# kubectl edit peer obp-AAA-ZZZ-peerZ -n instancename
specstoragechaincodeおよびpeerセクションで、サイズを2Giから10Giに増やし、ファイルを保存します。
各オーダラおよびピアStatefulSetのStatefulSetを再起動します。
kubectl get sts -n instancename
kubectl scale sts/obp-AAA-ZZZ-ordererZ -n instancename --replicas=0
kubectl scale sts/obp-AAA-ZZZ-ordererZ -n instancename --replicas=1
kubectl scale sts/obp-AAA-ZZZ-peerZ -n instancename --replicas=0
kubectl scale sts/obp-AAA-ZZZ-peerZ -n instancename --replicas=1

インスタンスの終了時に失敗する

インスタンスが正常に終了しない場合は、次の手順を実行します。

回避方法:
  1. インスタンスUUIDを取得します。
    # Replace username:password with the instance's admin user credentials
    AUTH_BEARER=$(echo -n 'username:password' | base64)

    curl -k --location 'https://<control-plane-url>/api/v1/blockchainPlatforms/instances' \
    --header "Authorization: Basic $AUTH_BEARER"
    このAPIによって返されるidはUUIDです。
  2. 終了の失敗の原因となるコンポーネントを特定します。
    kubectl get namespace "<instance-namespace>" -o json \
      | tr -d "\n" | sed "s/\"finalizers\": \[[^]]\+\]/\"finalizers\": []/" \
      | kubectl replace --raw /api/v1/namespaces/<instance-namespace>/finalize -f - | jq -r '.status'
    NamespaceContentRemainingフィールドには、インスタンスの状態に応じて複数のリソースを含めることができます。これにより、ネームスペースが終了できないリソースが表示されます。
  3. hlf-operatorおよびobp-operatorを再起動すると、インスタンスの削除フローが再起動されます。
    # Restart hlf-operator
    kubectl rollout restart deployment -n obp-cp hlf-operator-controller-manager
     
    # Restart obp-operator
    kubectl rollout restart deployment -n obp-cp obp-operator
  4. 終了プロセスが再起動されます。終了が成功したかどうかを確認するには、ステップ2で使用したAPIを再実行して、まだアクティブなコンポーネントおよび終了のステータスを確認できます。終了が成功すると、APIリクエストは失敗します。
  5. インスタンス・ネームスペースが終了したことを確認するには、ネームスペースがリストされていないことを確認します:
    kubectl get ns
インスタンスがBlockchain Platform Managerインスタンス・リストにまだリストされている場合、初期終了リクエストがタイムアウトしている可能性があります。次のAPIを使用して、終了したインスタンスのエントリをクリアします。
# Replace username:password with the instance's admin user credentials
AUTH_BEARER=$(echo -n 'username:password' | base64)

curl -k --location --request DELETE 'https://<control-plane-url>/api/v1/blockchainPlatforms/instances/<instance-uuid>' \
--header "Authorization: $AUTH_BEARER"

インスタンス作成はバンドルされたOpenLDAPのみをサポートします

Oracle Blockchain Platformインスタンスを作成する場合、様々なタイプのLDAPにLDAP構成を追加するオプションがある場合でも、製品にバンドルされているデフォルトのOpenLDAPを使用する必要があります。

回避策: 外部LDAPシステムから、Oracle Blockchain PlatformにバンドルされているデフォルトのOpenLDAPにデータを同期してから、インスタンスの作成を続行します。

証明書の検証中にピア検出が失敗する

クライアント・アプリケーションがfabric-sdk-goモジュールを使用する場合、サポートされていないバージョンのfabric-sdk-goが原因で、ピア検出プロセス中に証明書の検証が原因でアプリケーションが失敗することがあります。
fabric-sdk-goモジュールを使用するには、次のバージョンに更新します。
github.com/hyperledger/fabric-sdk-go v1.0.1-0.20240123083657-5d6ca326e01b

ノードのログ表示が更新されていません

コンソールUIで、特定のノードのログを表示してから別のペインに移動し、初期ノードのログに戻ると、ログは再度フェッチされません。

回避策: ブラウザ・ページをリフレッシュして、最新のログをフェッチします。

カスタム・ルートCA証明書はサポートされていません

Hyperledger Fabric CAルートCA証明書は、自己署名証明書です。このリリースのOracle Blockchain Platformでは、お客様から提供されたルートまたは中間CA証明書を使用したこれらの証明書の署名はサポートされていません。

以前のリリースからのアップグレードはサポートされていません

Oracle Blockchain Platform Enterprise Edition 24.1にOracle Blockchain Platform Enterprise Edition 21.1またはOracle Blockchain Platform Enterprise Edition 19.3からアップグレードすることはできません。

回避策: この問題の回避策はありません。

Oracle Blockchain Platform XA実装の使用時のエラー・メッセージ

XAプロトコルを実装するJavaライブラリをダウンロードし、3.8.1より後のMavenバージョンがインストールされている環境で使用すると、次のエラー・メッセージが表示されます: アーティファクト情報は有効ではなく、無効な文字が含まれています。

回避策: ダウンロード可能なライブラリの.pomファイルには、バージョン番号のプレースホルダがあります。pom.xmlファイルを更新し、バージョン番号を24.1.3に変更します。

ログイン時にコンソールが応答しない

サービスコンソールにログインしようとすると、UIが応答しなくなる可能性があります。

この動作は、パッチ番号36929129であるORACLE BLOCKCHAIN PLATFORM ENTERPRISE EDITION (OBPEE) - 24.1.3 - PATCHSET-1によって修正されています。パッチのインストールの詳細は、Oracle Blockchain Platformへのパッチ適用を参照してください。

以前にインストールできなかったチェーンコードを再インストールできません

以前に失敗したインストールからチェーンコードと同じ名前のチェーンコードを再インストールしようとすると、インストール・プロセスが再度失敗します。これは、チェーンコード名のポッドが以前のインストール試行に対して作成されてから削除されなかった場合に発生する可能性があります。

この動作は、パッチ番号36929129であるORACLE BLOCKCHAIN PLATFORM ENTERPRISE EDITION (OBPEE) - 24.1.3 - PATCHSET-1によって修正されています。パッチのインストールの詳細は、Oracle Blockchain Platformへのパッチ適用を参照してください。

ネットワークのOracle Blockchain Platformインスタンスで失効した証明書を管理できない

Oracle Blockchain PlatformネットワークにHyperledger Fabricの組織が含まれ、それらの証明書が失効している場合、失効した証明書は適用されず、表示されず、ネットワークのOracle Blockchain Platformインスタンスから取り消すことができません。

回避策: ネイティブのHyperledger Fabric CLIまたはSDKを使用して、組織の証明書失効リスト(CRL)ファイルをインポートします。

チャネル作成者がチャネルの構成を更新できない

ネイティブのHyperledger Fabric CLIまたはSDKを使用してチャネルを作成すると、作成者ポリシーが configtx.yamlファイルに組み込まれません。Oracle Blockchain Platformでは、チャネル作成者がチャネルの構成を編集できるようにするために作成者ポリシーが必要です。

回避策: configtx.yamlファイルを手動で編集して、作成者ポリシーを追加します。

ピアが他のピアからプライベート・データをプルできない

プライベート・データ・コレクションのblocktolive値が10未満で、そのmaxPeerCountがピアの総数(エンドース・ピアを含まない)未満の場合、ピアは別のピアからプライベート・データをプルできません。この値は、コンソールを使用してプライベート・データ・コレクション定義を作成するか、ネイティブのHyperledger Fabric CLIまたはSDKを使用すると設定されます。

回避策: blocktolive値が10以上に設定されていることを確認します。または、maxPeerCountがピアの総数(エンドース・ピアを含まない)以上に設定されていることを確認します。必要な場合は、チェーンコードを再インスタンス化またはアップグレードしてこれらの値をリセットできます。

チャネル作成者の組織およびチャネル・ポリシー設定が一致しない

コンソールを使用してチャネルを作成し、組織のACLをReaderOnlyに設定できます。新しいチャネルを保存した後に、このACL設定をチャネルのチャネル組織の編集オプションから更新することはできません。

ただし、コンソールのチャネル・ポリシーの管理オプションを使用して組織をライター・ポリシーに追加することはでき、これにより、チャネルのReaderOnly ACL設定が上書きされます。

回避策: この問題の回避策はありません。

エクスポートおよびインポートされたファイルに互換性がない

コンソールとREST APIの間で、ファイル(CRL、証明書、オーダー・サービス設定およびピア)はエクスポートおよびインポートできません。

コンソールおよびREST APIによってエクスポートされたファイルは、同じコンポーネントを使用したインポートに対してのみ互換性があります。たとえば、コンソールを使用してピアをエクスポートした場合、REST APIでインポートすることはできません(コンソールでのみインポートできます)。また、REST APIを使用してピアをエクスポートした場合、コンソールでインポートできません(REST APIでのみインポートできます)。

回避策: この問題の回避策はありません。

チェーンコード名の要件

Oracle Blockchain Platformのチェーンコード名およびバージョンの要件は、Hyperledger Fabricの要件とは異なります。コンソールまたはHyperledger Fabricクライアントからチェーンコードをデプロイする場合は、Oracle Blockchain Platformの要件に従う必要があります。Hyperledger Fabricクライアントからのデプロイ時にこれらの要件に従わない場合、チェーンコードがコンソールに正しくないことがあります。

回避策: チェーンコード名およびバージョンをデプロイする際には、次のルールを使用します。

  • ASCII英数字、ダッシュ(-)およびアンダースコア(_)を使用します。
  • 名前の先頭および末尾には、ASCII英数字のみを使用する必要があります。たとえば、_mychaincodemychaincode_のような名前は使用できません。
  • ダッシュ(-)およびアンダースコア(_)の後はASCII英数字を続ける必要があります。たとえば、my--chaincodemy-_chaincodeのような名は使用できません。
  • 名前とバージョンは、それぞれ64文字までです。
  • チェーンコード・バージョンには、ピリオド(.)およびプラス記号(+)を含めることもできます。

日時ピッカーの動作

Oracle Blockchain Platformの日時ピッカーは所定の動作をしません。ログ・ファイルやレジャーのアクティビティなどの項目をフィルタするには、日時ピッカーを使用します。

回避策: 日時ピッカーを使用できるように、次の情報を使用します。

  • 特定の期間(「過去1日」など)を選択してから、それを再度選択して問合せを再実行すると、問合せは再実行されません。最新情報を取得するには、リフレッシュ・ボタンをクリックします。
  • コンピュータでタイムゾーンを設定していない場合は、「カスタム」オプションを選択するときに、開始時間および終了時間をGMTで指定する必要があります。ただし、「プリファレンス」で「タイムゾーン設定」を「GMT」に設定(コンソールでインスタンス名を選択してから、「プリファレンス」、「タイムゾーン設定」の順にクリック)すると、コンソールのタイムゾーンは自動的にGMTに変換されます。