Oracle Blockchain Platformの既知の問題

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

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

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

サポートされるブラウザ

コンソールが所定の動作をしない場合は、サポート対象のブラウザを使用していることを確認します。次の表に、Oracle Blockchain PlatformでサポートされるWebブラウザを示します。

オペレーティング・システム サポートされるブラウザ 32ビット/64ビット バージョン
Windows 7 - 64ビット - SP1 Firefox Quantum ESR 32 60.2.2esr
Windows 7 - 64ビット - SP1 Chrome 64 72.0.3626.121 (公式ビルド)
Windows 10 Professional - 64ビット - バージョン1803 Firefox Quantum ESR 32 60.5.0esr
Mac OS 10.12.6 - 64ビット - 16G29 Safari 64 12.0.3 (12606.4.5.3.1)
Mac OS 10.12.6 - 64ビット - 16G29 Chrome 64 72.0.3626.121 (公式ビルド)
Mac OS 10.13.4 - 64ビット - 17E199 Chrome 64 72.0.3626.121 (公式ビルド)
Mac OS 10.13.4 - 64ビット - 17E199 Firefox Quantum ESR 64 60.5.2esr
Mac OS 10.13.4 - 64ビット - 17E199 Safari 64 11.1 (13605.1.33.1.2)
Mac OS 10.13.6 - 64ビット - 17G5019 Chrome 64 72.0.3626.121 (公式ビルド)
Mac OS 10.13.6 - 64ビット - 17G5019 Safari 64 12.0.3 (13606.4.5.3.1)

パッチ適用後にブロック検証が失敗する場合がある

v19.3.5パッチを以前のバージョンに適用した後、パッチの適用後にブロック検証APIが機能せず、次のようなエラー・メッセージが返されることがあります:
ERROR: The versions of the multiple hosts are not consistent. All hosts of an instance must have the same version.

これは、インスタンスを再起動することで解決できます。

ZooKeeperタイムアウトのためにパッチ適用が失敗する場合がある

パッチの適用中に、次のようなエラーで失敗する場合があります:
patch  [zookeeper] nodes failed with StatusCode=500 Internal Server Error,
Body:\n==========================================\nscript zktest timed out,
これは、パッチ適用プロセスが正常に完了する時間内にZooKeeperクラスタが作成されなかったことを意味します。

これは、パッチ適用プロセスを再度実行することで解決できます。

リッチ履歴が新しいピアに対して自動的に機能しない

リッチ履歴データベースの構成後、ピアをスケール・アウトしてから、この新しいピアのみを含むチャネルを作成してからリッチ履歴の有効化をクリックすると、リッチ履歴データベースが正常に設定されなかったことを示すエラーが表示されます。このチャネルでインスタンス化またはチェーンコードを呼び出すと、この時点でリッチ履歴データベースは生成されません。

ピアのスケール・アウト後にリッチ履歴データベースを有効にするには、新しいピアの作成後、チャネル・ページに移動して、リッチ履歴データベースを再度構成します。

REST APIコールから不正確なエラー・メッセージが返される

無効なユーザーの詳細でbasic認証を設定した場合、REST APIコールからUnauthorized401コードが返されます。そうではなく、次のようなエラーが表示されることがあります:
Could not get any response
There was an error connecting to servername.
または
HTTP/1.1 302 Moved Temporarily
修正可能な潜在的な原因がいくつか考えられます:
  • 自己署名SSL証明書がブロックされています。

    これを修正するには、「設定」「一般設定」SSL証明書の検証の選択を解除します。

  • プロキシが正しく構成されていません。

    「設定」「プロキシ」でプロキシが正しく構成されていることを確認します。

  • リクエストがタイムアウトしました。

    「設定」「一般設定」でリクエストのタイムアウトを変更します。

コンソールにピア管理について無効なオプションが表示される

コンソール・メニューに、ピアを管理するための無効なオプションが表示されることがあります。
  • プロセスの実行中にピアを起動または停止して処理メニューを開くと、ピアの削除オプションが表示されることがあります。
  • プロセスの実行中にピアを起動または停止して処理メニューを開くと、「構成の編集」オプションが表示されることがあります。

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

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

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

ImplicitMetaポリシーがOracle Blockchain Platformでサポートされない

ネイティブのHyperledger Fabric CLIまたはSDKを使用してチャネルの構成を変更する場合、指定した構成設定の一部がOracle Blockchain Platformでサポートできません。

  • ネイティブのHyperledger Fabric CLIおよびSDKでは、リーダーおよびライターにImplicitMetaチャネル・ポリシーを使用します。チャネルでこれらのポリシーを使用すると、Oracle Blockchain Platformコンソールでは、管理操作(組織の編集など)が正常に処理されることを保証できません。

    回避策: リーダーおよびライターのポリシーを署名ポリシーに更新し、必要に応じてポリシー・ルールを定義します。https://hyperledger-fabric.readthedocs.io/en/release-1.4/access_control.htmlを参照してください

  • チャネルがImplicitMetaポリシー・タイプを使用していて、チャネル構成でグループ・セクションのmod_policyをAdminsに変更した場合にチャネルに複数の組織が存在すると、Oracle Blockchain Platformを使用してチャネルを管理できません。たとえば、新しい組織をチャネルに追加したり、チャネルのACLポリシーを変更(元の値を復元するなど)できません。

    回避策: ネイティブのHyperledger Fabric CLIまたはSDKを使用してチャネルを管理します。

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

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

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

ピアおよびクライアントのロールがOracle Blockchain Platformでサポートされない

ネイティブのHyperledger Fabric CLIまたはSDKを使用するブロックチェーン・アプリケーションでは、ピアおよびクライアントのロールを使用できます。これらのロールは、アプリケーションのx509証明書の組織単位(OU)に追加できます。ただし、Oracle Blockchain Platformではこれらのロールはサポートされません。

回避策: ピアまたはクライアントのロールをメンバーに変更します。また、ピアまたはクライアントのロールで証明書に署名していないことと、ネイティブのHyperledger Fabric SDKを使用してピアまたはクライアントのロールに基づきエンドースメント・ポリシーを設定していないことを確認してください。

instantiateChaincodeエンドポイントでのblocktoliveの0 (ゼロ)設定がREST APIでサポートされない

REST APIのinstantiateChaincodeエンドポイントを使用し、dataCollectionConfigblocktoliveを0 (ゼロ)に設定すると、エラー: {"respMesg":"invalid argument"}が表示されます。

プライベート・データベースからデータがパージされないようにするには、Hyperledger Fabricではblocktoliveを0 (ゼロ)に設定する必要があります。ただし、Oracle Blockchain Platform REST APIでは、この構成を0 (ゼロ)に設定することがサポートされません。

回避策: コンソールを使用してチェーンコードをインスタンス化し、チェーンコードのインスタンス化ダイアログのプライベート・データ・コレクション・セクションで、blocktoliveフィールドを0 (ゼロ)に設定します。

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

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

回避策: 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のような名前は使用できません。
  • 名前の長さは1から64文字までにする必要があります。
  • チェーンコード・バージョンには、ピリオド(.)を含めることができます。

日時ピッカーの動作

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

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

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

チェーンコードとともにshimを手動でベンダリング

Hyperledger Fabricでは、fabric-ccenvイメージにgithub.com/hyperledger/fabric/core/chaincode/shim (shim)パッケージが含まれています。そのため、shimを含めずにチェーンコードをパッケージ化できます。ただし、これが原因で今後のHyperledger Fabricリリースで問題が発生する可能性があり、shimが含まれているパッケージを使用すると問題が発生することがあります。

回避策: 潜在的な問題を回避するには、チェーンコードのパッケージ化およびインストールにpeerコマンドライン・インタフェースを使用する前に、またはチェーンコードをパッケージ化およびインストールする前に、shimパッケージをチェーンコードとともに手動でベンダリングする必要があります。https://jira.hyperledger.org/browse/FAB-5177を参照してください。

ドキュメントのアクセシビリティについて

Oracleのアクセシビリティについての詳細情報は、Oracle Accessibility ProgramのWeb サイト(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc)を参照してください。

Oracleサポートへのアクセス

サポート契約がある場合には、My Oracle Supportを通して電子支援をご利用いただけます。詳細情報は(http://www.oracle.com/pls/topic/lookup?ctx=acc&id=info) か、聴覚に障害のあるお客様は (http://www.oracle.com/pls/topic/lookup?ctx=acc&id=trs)を参照してください。