Oracle Cloud Infrastructure (Gen 2)上のOracle Blockchain Platformの既知の問題

Oracle Blockchain Platformを使用する際に起こりうる問題点とその回避方法について学習します。

以前のリリースで最初に報告された問題:

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

Oracle Blockchain Platform 24.4.3では、Hyperledger Fabric v2.5.7がサポートされます。すべての新規ユーザーは、デフォルトでHyperledger Fabric v2.5.7を使用します。

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

Oracle Cloud Infrastructureを介したインスタンス・プロビジョニングに使用するサポートされているブラウザの詳細は、コンソールへのサインインを参照してください。

Oracle Blockchain Platformコンソールが期待どおりに動作しない場合は、サポートされているブラウザの最新バージョンを使用していることを確認してください。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のメジャー・バージョンを実行しないでください。

前提条件チェックが失敗した場合にアプリケーション・ビルダーCLIがアンインストールされる

最新バージョンをインストールまたは再インストールしてBlockchain App Builderコマンドライン・インタフェース(CLI)をアップグレードする場合、前提条件チェックが失敗すると、既存のBlockchain App Builder CLIがアンインストールされます。

回避策: 古いバージョンのBlockchain App Builder CLIを再インストールするか、前提条件を満たすようにシステムを更新してから、新しいバージョンのBlockchain App Builder CLIをインストールできます。

小数のNFTトランザクションで小数点以下の桁数が間違っている場合、エラーはありません

ブロックチェーン・アプリケーション・ビルダーを使用してERC-1155標準を使用する小数NFTを操作する場合、トランザクション金額で仕様ファイルの最大小数点以下桁数よりも小数点以下桁数が多いと、エラーは示されません。かわりに、実際のトランザクション金額は、仕様ファイルに定義されている小数点以下の桁数に切り捨てられます。また、送信者および受信者の残高が指定した桁数に切り捨てられている場合でも、トランザクション履歴のtransactedAmount値には切り捨てられていない値が表示されます。

回避策: トランザクションを作成する前にトランザクション金額を検証し、トランザクション金額で、チェーンコードの入力仕様ファイルに指定されている小数点以下桁数よりも大きい桁数が使用されないようにします。

以前のリリースで最初に報告された問題:

Goチェーンコード・バージョン互換性

Oracle Blockchain Platformのバージョン23.3.3では、使用されるGoのバージョンが1.20に更新されました。Go 1.20と互換性がないチェーンコードをデプロイまたはアップグレードしようとすると、プロセスが失敗する可能性があります。Goで記述されたチェーンコードをアップグレードまたはデプロイする前に、Go 1.20でチェーンコードを構築できることを確認してください。Go 1.20がインストールされているシステム上のチェーンコード・フォルダの内容に対して次のコマンドを使用すると、エラーを確認できます。
go mod tidy
go mod vendor

現在デプロイされているチェーンコードはこの動作の影響を受けず、Oracle Blockchain Platform 23.3.3にアップグレードした後も期待どおりに動作します。

Node.jsチェーンコード・バージョンの互換性

Oracle Blockchain Platformのバージョン23.3.3では、使用されるNode.jsのバージョンが18.15.0に更新されました。Node.js 18.15.0と互換性がないチェーンコードをデプロイまたはアップグレードしようとすると、プロセスが失敗する可能性があります。Node.jsで記述されたチェーンコードをアップグレードまたはデプロイする前に、Node.js 18.15.0でチェーンコードを構築できることを確認してください。

現在デプロイされているチェーンコードはこの動作の影響を受けず、Oracle Blockchain Platform 23.3.3にアップグレードした後も期待どおりに動作します。

開発ツール・ページからFiat Moneyトークンまたは残高転送サンプルを実行できません

Oracle Blockchain Platform 22.4.2には、Fiat Money Tokenサンプルの新しいバージョンが含まれています。更新されたチェーンコードのパッケージIDが前のバージョンと異なります。Fiat Money Tokenサンプルをデプロイした場合、Oracle Blockchain Platform 22.4.2にアップグレードすると、サンプルはコンソールの「開発者ツール」ページにデプロイされたとおりに表示されなくなり、サンプルの「開発者ツール」ページから操作を実行できなくなります。

Oracle Blockchain Platform 22.3.2が原子性トランザクション機能と連携するように更新された残高転送サンプルでも同じ動作が発生します。

回避策: ピアにサンプル・チェーンコードを再度インストールします。これにより、新しいパッケージIDを使用して新しいバージョンのチェーンコードがインストールされます。サンプルがデプロイされたチャネルごとに、チェーンコードを新しいパッケージにアップグレードします。チェーンコードがアップグレードされると、開発者ツール・ページのサンプルのステータスおよび操作は正常に機能します。

ブロックチェーン・アプリケーション・ビルダーの使用時にデプロイメント・エラーが発生

ブロックチェーン・アプリケーション・ビルダーを使用してGoチェーンコード・プロジェクトをデプロイすると、次のようなエラーが発生することがあります:
ERROR RunCommand: spawn modd ENOENT
ERROR RunCommand: Error in Chaincode deployment
[+] Running 3/3
  Container ca.example.com Stopped 0.4s
  Container orderer.example.com Stopped 0.6s
  Container peer0.org1.example.com Stopped 0.6s
ERROR RunCommand: Error in Chaincode deployment, process exit with code 1
回避方法:
macOS
  1. 次のコマンドを実行します:
    env GO111MODULE=off go get ‘github.com/cortesi/modd/cmd/modd’
  2. デプロイメントをやり直してください
Microsoft Windows
  1. go installを使用して、次のコマンドを実行します。
    go install github.com/cortesi/modd/cmd/modd@latest
  2. go getを使用して、次のコマンドを実行します。
    SET GO111MODULE=auto
    go get ‘github.com/cortesi/modd/cmd/modd’
  3. デプロイメントをやり直してください

ブロックチェーン・アプリケーション・ビルダーによって生成されたTypeScriptチェーンコードの初期化失敗

Blockchain App Builderバージョン22.4.2以前でTypeScriptチェーンコードを生成すると、チェーンコードをローカルまたはリモートにデプロイまたは実行するときに、次のテキストのようなエラーが表示されることがあります。
ローカル環境:
INFO: Error in initalizing chaincode. Error :  failed to initialize chaincode Error: Failed to 
initialize the chaincode Error: endorsement failure during invoke. response: status:500 message:"error 
in simulation: failed to execute transaction 
e22ba18c00ecbd3135cdb509e08667cf6d5d9e79c4217b73492b5bb50836d58d: could not launch chaincode 
testagain:v0: error building chaincode: error building image: failed to get chaincode package for 
external build: could not get legacy chaincode package 'testagain:v0': open 
/var/hyperledger/production/chaincodes/testagain.v0: no such file or directory
リモート環境:
INFO: 

============ Started Initializing Chaincode ============

ERROR: {
  "Error": "Chaincode Deployment failed. Error in initializing chaincode: Status Code: 400, 
Error Message: {\"returnCode\":\"Failure\",\"error\":\"failed to invoke chaincode: 
Transaction processing for endorser 
[jasfounderdec5-oabcs1-ams.blockchain.ocp.oraclecloud.com:20010]: Chaincode status Code: 
(500) UNKNOWN. Description: error in simulation: failed to execute transaction 
947bbaf2feccc39cdf53bd7a07cd17f15d682a5a4ee6e3c3e63dec6346b0394e: error sending: chaincode 
stream terminated\",\"result\":null}"
}

回避策: 既存のチェーンコードに対してこの動作を回避するには、次のサポート・ページでステップを実行します。

ローカルとリモートの両方のOBP環境での TypeScriptチェーンコードの配備が失敗する

新しいチェーンコードでこの動作を回避するには、Blockchain App Builder 22.4.3以降にアップグレードします。ブロックチェーン・アプリケーション・ビルダーは、Oracle Blockchain Platformコンソールの「ブロックチェーン・アプリケーション・ビルダー」ペインの「開発者ツール」タブからダウンロードできます。

XAライブラリ使用時のゲートウェイ・タイムアウト

Oracle Blockchain PlatformでXA Javaライブラリを使用すると、複数のブロックチェーン・トランザクションを、外部トランザクション・マネージャによって制御されるグローバル・トランザクションに組み込むことができます。ブロックチェーン・トランザクションが完了するまでに60秒のゲートウェイ・タイムアウト値より時間がかかる場合、トランザクション・マネージャ側およびOracle Blockchain Platform側でトランザクション・ステータスが非決定的になる可能性があります。

回避策: この問題の回避策はありません。この場合は、トランザクションを手動で解決する必要があります。

Microsoft Windowsでデバッグ・モードでトークン・チェーンコードを実行できません

Blockchain App Builderバージョン22.2.1以前を使用する場合は、Microsoft Windowsでデバッグ・モードでトークン・チェーンコードを実行できません。

回避策: ブロックチェーン・アプリケーション・ビルダーの最新バージョンにアップグレードします。アップグレードできない場合は、次のステップを実行します。

  1. 編集のためにchaincode/.vscode/task.jsonファイルを開きます。
  2. task.jsonファイルの6行目には、commandキーが含まれます。行から次の文字列を削除します。
    -p '${workspaceFolder}' 
たとえば、編集前のtask.jsonファイルの行は次のようになります。
"command": "ochain debug -p '${workspaceFolder}' \"[{\\\"userId\\\":\\\"admin\\\",\\\"orgId\\\":\\\"Org1MSP\\\"}]\" -v v8",
次のコードの後に、
"command": "ochain debug \"[{\\\"userId\\\":\\\"admin\\\",\\\"orgId\\\":\\\"Org1MSP\\\"}]\" -v v8",

プラットフォームのアップグレード後に注文サービス設定が更新されない

インスタンスをHyperledger Fabric v1.4.7からHyperledger Fabric v2.2.4にアップグレードすると、既存のオーダリング・サービス設定が保持されます。つまり、アップグレードされたインスタンスは、新しいHyperledger Fabric v2.2.4インスタンスのデフォルト設定ではなく、Hyperledger Fabric v1.4.7インスタンスの既存のオーダリング・サービス設定を使用します。次の表に、オーダリング・サービス設定値をまとめます。オーダリング・サービスの詳細は、「オーダリング・サービスの管理」を参照してください。

設定 v1.4.7 およびアップグレードされたv2.2.4インスタンスのデフォルト値 新規v2.2.4インスタンスのデフォルト値
バッチ・タイムアウト(ミリ秒) 2000 2000
最大メッセージ数 10 500
絶対メッセージ・バイト数 98 98
優先メッセージ・バイト数 512 2
スナップショット間隔のサイズ 20 16

プラットフォームのアップグレード後にゴシップ・リーダー選択属性が更新されない

インスタンスをHyperledger Fabric v1.4.7からHyperledger Fabric v2.2.4にアップグレードする場合、ピア・ノードのゴシップ・リーダー選択属性は更新されません。つまり、アップグレードされたインスタンスは、新しいHyperledger Fabric v2.2.4インスタンスのデフォルト属性ではなく、Hyperledger Fabric v1.4.7インスタンスの既存の属性を使用します。ピア・ノードの属性の詳細は、「ピア・ノードの属性」を参照してください。

イベント・サイズ制限

バージョン22.2.1以降では、イベントの最大ペイロード・サイズはデフォルトで50KBに制限されています。最大ペイロード・サイズより大きいイベントは削除されます。Oracle DevOpsチームは、リクエストによってこのパラメータを変更できます。ペイロードが50KBを超えるイベントをサブスクライブする場合は、My Oracle Supportでサービス・リクエスト(SR)を開き、大きい最大イベント・サイズをリクエストします。詳細は、REST APIドキュメントのイベントのサブスクライブを参照してください。

コロン(:)を含むユーザーIDはREST APIコールで使用できません

Oracle Blockchain Platformでは、コロン(:)を含むユーザーIDをRESTプロキシ登録に関連付けることができます。ただし、基本認証(ユーザー名とパスワード)が使用されている場合、そのユーザーIDはREST APIコールでは使用できません。

回避策: RESTプロキシ登録に関連付けられているすべてのユーザーのユーザーIDにコロン(:)が含まれていないことを確認します。

無効な資格証明に対してCORSヘッダーが返されませんでした

RESTプロキシ・トランザクションを起動する顧客アプリケーションは、リクエストで送信された資格証明が無効、不正または期限切れの場合、レスポンスでCross-Origin Resource Sharing (CORS)ヘッダー(Access-Control-Allow-Originヘッダー)を受信しません。

チャネルの作成時のオーダラ・ステータス・エラー

チャネルの作成時に、次のエラーが表示されることがあります。
Failed to create the channel with error: aborted
Please check the orderers status.

回避策: チャネルを再度作成してみてください。これは、断続的に発生する問題です。

Microsoft WindowsでのVisual Studio Codeでのデバッグ

Microsoft Windowsでは、Visual Studio Codeでチェーンコード・プロジェクトのデバッグ中に次のようなエラーが発生することがあります。
dlv: failed to install dlv(github.com/go-delve/delve/cmd/dlv@latest): Error: Command failed:
C:\Program Files (x86)\Go\bin\go.exe get -x github.com/go-delve/delve/cmd/dlv@latest
# get https://proxy.golang.org/github.com/go-delve/delve/cmd/dlv/@v/list
# get https://proxy.golang.org/github.com/@v/list
# get https://proxy.golang.org/github.com/go-delve/@v/list
# get https://proxy.golang.org/github.com/go-delve/delve/cmd/@v/list
# get https://proxy.golang.org/github.com/go-delve/delve/@v/list
# get https://proxy.golang.org/github.com/@v/list: 410 Gone (0.420s)
# get https://proxy.golang.org/github.com/go-delve/delve/cmd/@v/list: 410 Gone (1.040s)
# get https://proxy.golang.org/github.com/go-delve/@v/list: 410 Gone (1.062s)
# get https://proxy.golang.org/github.com/go-delve/delve/cmd/dlv/@v/list: 410 Gone (1.066s)
# get https://proxy.golang.org/github.com/go-delve/delve/@v/list: 200 OK (1.448s)
go: found github.com/go-delve/delve/cmd/dlv in github.com/go-delve/delve v1.8.3C:\Users\<UserName>\go\pkg\mod\github.com\go-delve\delve@v1.8.3\service\debugger\debugger.go:28:2:found packages native (proc.go) and 
your_operating_system_and_architecture_combination_is_not_supported_by_delve(support_sentinel.go) in C:\Users\Asus\go\pkg\mod\github.com\go-delve\delve@v1.8.3\pkg\proc\native
この時点でこのエラーの回避策はありません。

複数組織環境とブロックチェーン・アプリケーション・ビルダー

複数の組織を持つ環境では、コンソールを使用して一部の操作を完了することが必要な場合があります。

参加者インスタンスを介して同じチャネルにチェーンコードを再デプロイするには、コンソールを使用してチェーンコードをデプロイします。

(Hyperledger Fabric v2.2.4)チェーンコードをアップグレードするには、コンソールを使用して、参加者のチェーンコードを手動で承認します。

スケーリングは一度に1つのコンポーネントでのみ機能します

一度に1つのノード・タイプのみスケーリングできます。たとえば、ピア・ノードの追加と既存のピア・ノードの設定を同時に変更できますが、ストレージも増やす場合は、それを別々に実行する必要があります。

また、一度にスケーリングできるピアまたはOSNは1つのみです。たとえば、1回の操作で2つのピアを追加することはできません。

オペレーティング・システム・クロックが正しくないと、リクエストが拒否される可能性があります

クライアントまたはSDKのローカル・クロックが15分を超える場合、そのクロックからのリクエストはピアおよびオーダラによって拒否されます。ローカル・クロックが正しく設定されていることを確認します。

古いクライアントSDKが原因でブロックチェーン・アプリケーションが期待どおりに機能しない

古いバージョンのクライアントSDKを使用している場合、アプリケーションが予期しない動作をすることがあります。

回避策: クライアントSDKの更新について説明しているドキュメントを読み、必要に応じてアプリケーションを変更します。詳細は、Hyperledger FabricドキュメントのHyperledger Fabric SDKを参照してください。

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

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

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

ファウンダのチャネル・リストに誤った作成者情報が含まれ、チャネル組織の編集オプションが使用できません

混合ネットワーク(ファウンダ・インスタンスと参加者インスタンスが異なるバージョンのOracle Blockchain Platformを実行している)では、ファウンダのチャネル・リストに、参加者が作成したチャネルの誤ったMSP IDが表示される場合があります。参加者のMSP IDのかわりに、ファウンダのMSP IDが表示されます。これは、CRLのインポート、CRLの取消しまたは適用、またはチャネルでのアンカー・ピアの設定後に発生する可能性があります。

チャネルの「チャネル組織の編集」オプションは、「作成者」フィールドに表示されるインスタンスでのみ使用できます。間違ったMSP IDが表示されている場合、チャネル作成者はチャネル組織を更新できません。

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

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

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

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

    回避策: リーダーおよびライターのポリシーをシグネチャ・ポリシーに更新し、必要に応じてポリシーを定義してください。詳細は、Hyperledger Fabricドキュメントのアクセス制御リスト(ACL)を参照してください。

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

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

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

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

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

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

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

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

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

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

プライベート・データ・コレクションの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に変換されます。

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

Oracle Supportへのアクセス