Oracle Cloud Infrastructure 上 Oracle Blockchain Platform 的已知問題 (第 2 代)
瞭解在使用 Oracle Blockchain Platform 時可能會遇到的問題,以及如何解決這些問題。
主題:
先前版本最初回報的問題:
- Go Chaincode 版本相容性
- Node.js Chaincode 版本相容性
- 無法從開發人員工具頁面執行 Fiat Money Token 或餘額移轉樣本
- 使用區塊鏈 App 產生器時發生部署錯誤
- 區塊鏈 App 產生器產生的 TypeScript 鏈碼初始化失敗
- 使用 XA 程式庫時的閘道逾時
- 無法在 Microsoft Windows 的除錯模式中執行權杖鏈碼
- 平台升級後未更新訂購服務設定值
- 平台升級後未更新 Gossip 領導者選擇屬性
- 事件大小限制
- 包含冒號 (:) 的使用者 ID 無法用於 REST API 呼叫
- 未傳回無效證明資料的 CORS 標頭
- 建立管道時發生訂購者狀態錯誤
- 在 Microsoft Windows 的 Visual Studio 程式碼中除錯
- 多重組織環境與區塊鏈 App 產生器
- 一次只能在一個元件上調整規模
- 不正確的作業系統時鐘可能會導致拒絕的要求
- 由於舊版的用戶端 SDK,區塊鏈應用程式無法如預期般運作
- 網路的 Oracle Blockchain Platform 執行處理無法管理已撤銷的第三方憑證
- 創始人通路清單包含不正確的資訊建立者,且無法使用編輯通路組織選項
- ImplicitMeta 政策不受 Oracle Blockchain Platform 支援
- 通路建立者無法更新通路的組態
- REST API 不支援在 instantiateChaincode 端點中將 blocktolive 設為 0
- 對等方無法從另一個對等方提取專用資料
- 通路建立者組織與通路政策設定不一致
- 匯出與匯入的檔案不相容
- 鏈碼名稱需求
- 日期與時間選擇器行為
支援的 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。
如果先決條件檢查失敗,便會解除安裝 App 產生器 CLI
當您透過安裝或重新安裝最新版本來升級 Blockchain App Builder 命令行介面 (CLI) 時,如果先決條件檢查失敗,則會解除安裝現有的 Blockchain App Builder CLI。解決方法:您可以重新安裝舊版的 Blockchain App Builder CLI,或更新您的系統以符合先決條件,然後安裝較新版本的 Blockchain App Builder CLI。
小數位數 NFT 交易使用不正確的小數位數時沒有錯誤
當您使用 Blockchain App Builder 來處理使用 ERC-1155 標準的分數 NFT 時,如果交易金額使用的小數位數大於規格檔案中的小數位數上限,則不會指出錯誤。相反地,實際交易金額會截斷為規格檔案中定義的小數位數。此外,即使傳送者與接收者的餘額被截斷為指定的位數,交易歷史記錄中的transactedAmount
值仍會顯示未截斷的值。
解決方法:請先驗證交易金額,再建立交易,以確保交易金額使用的小數位數不超過在鏈碼的輸入規格檔案中指定的小數位數。
先前版本最初回報的問題:
Go Chaincode 版本相容性
在 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 Chaincode 版本相容性
在 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 Token 或餘額移轉樣本
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 更新的 Balance Transfer 範例使用單元交易功能,會發生相同的行為。
解決方法:在對等上再次安裝範例鏈碼,該對等體會將較新版本的鏈碼與新的套件 ID 安裝。針對已部署樣本的每個通路,將鏈碼升級至新套件。升級鏈碼後,「開發人員工具」頁面上範例的狀態與作業會正常運作。
使用區塊鏈 App 產生器時發生部署錯誤
使用區塊鏈 App 產生器部署 Go chaincode 專案時,可能會發生類似以下的錯誤: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
區塊鏈 App 產生器產生的 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 Chaincode 失敗
為了避免新鏈碼發生這種行為,請升級至 Blockchain App Builder 22.4.3 或更新版本。您可以從 Oracle Blockchain Platform 主控台區塊鏈 App 產生器窗格的開發人員工具頁籤下載區塊鏈 App 產生器。
使用 XA 程式庫時的閘道逾時
當您搭配 Oracle Blockchain Platform 使用 XA Java 程式庫時,多個區塊鏈交易可以合併至由外部交易管理程式控制的全域交易中。如果區塊鏈交易花費的時間超過閘道逾時值 60 秒,則交易狀態可能會在交易管理程式端與 Oracle Blockchain Platform 端變成非確定性。解決方法:此問題沒有解決方法。在此情況下,您必須手動解析交易。
無法在 Microsoft Windows 的除錯模式中執行權杖鏈碼
如果您使用 Blockchain App Builder 版本 22.2.1 或更舊版本,就無法在 Microsoft Windows 的除錯模式中執行權杖鏈碼。解決方法:升級至最新版本的區塊鏈 App 產生器。如果您無法升級,請完成下列步驟:
- 開啟
chaincode/.vscode/task.json
檔案以進行編輯。 task.json
檔案的第六行包含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 v1.4.7 執行處理現有的訂購服務設定值,而不是新 Hyperledger Fabric v2.2.4 執行處理的預設設定值。下表摘要列出訂購服務設定值。如需有關訂購服務的詳細資訊,請參閱管理訂購服務。
設定 | v1.4.7 和已升級 v2.2.4 執行處理的預設值 | 新 v2.2.4 執行處理的預設值 |
---|---|---|
批次逾時 (毫秒) | 2000 | 2000 |
訊息數目上限 | 10 | 500 |
絕對訊息位元組 | 98 | 98 |
偏好的訊息位元組 | 512 | 2 |
快照間隔大小 | 20 | 16 |
平台升級後未更新 Gossip 領導者選擇屬性
將執行處理從 Hyperledger Fabric v1.4.7 升級至 Hyperledger Fabric v2.2.4 時,不會更新對等節點的 gossip 領導者選擇屬性。換句話說,已升級的執行處理使用 Hyperledger Fabric v1.4.7 執行處理的現有屬性,而不是新 Hyperledger Fabric v2.2.4 執行處理的預設屬性。如需有關對等節點屬性的詳細資訊,請參閱對等節點屬性。
事件大小限制
從版本 22.2.1 開始,依照預設,事件的有效負載大小上限為 50 KB。將會刪除超過有效負載大小上限的所有事件。Oracle DevOps 團隊可以依要求修改此參數。如果您希望訂閱有效負載將大於 50 KB 的事件,請在 My Oracle Support 中開啟服務要求 (SR),以要求較大的事件大小上限。如需詳細資訊,請參閱 REST API 文件中的訂閱事件。包含冒號 (:) 的使用者 ID 無法用於 REST API 呼叫
Oracle Blockchain Platform 可讓您建立包含冒號 (:) 的使用者 ID 與 REST 代理主機註冊的關聯。不過,使用基本驗證 (使用者名稱與密碼) 時,無法在 REST API 呼叫中使用該使用者 ID。解決方法:確定與 REST 代理註冊關聯的所有使用者在其使用者 ID 中沒有冒號 (:)。
未傳回無效證明資料的 CORS 標頭
如果要求中傳送的證明資料無效、不正確或過期,呼叫 REST 代理主機交易的客戶應用程式將不會收到回應中的「跨源資源共用 (CORS)」標頭 ( Access-Control-Allow-Origin 標頭)。建立管道時發生訂購者狀態錯誤
建立通道時,您可能會看到下列錯誤:Failed to create the channel with error: aborted
Please check the orderers status.
解決方法:嘗試再次建立通道。這是間歇性問題。
在 Microsoft Windows 的 Visual Studio 程式碼中除錯
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
此錯誤目前沒有解決方法。多重組織環境與區塊鏈 App 產生器
在具有多個組織的環境中,您可能需要使用主控台來完成部分作業。
若要透過參與者執行處理在相同的通道上重新部署鏈碼,請使用主控台部署鏈碼。
(Hyperledger Fabric v2.2.4) 若要升級鏈碼,請使用主控台並手動核准參與者中的鏈碼。
一次只能在一個元件上調整規模
您一次只能調整一個節點型態。例如,您可以建立新增對等節點並同時修改現有的對等節點設定值,但如果您也想要增加儲存體,則必須個別執行。
此外,您一次只能調整一個對等或 OSN - 例如,您無法在單一作業中新增兩個對等。
不正確的作業系統時鐘可能會導致拒絕的要求
如果從屬端或 SDK 的本機時鐘關閉超過 15 分鐘,對等和排序器將會拒絕該從屬端或 SDK 的要求。請確定您已正確設定本地時鐘 。
由於舊版的用戶端 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 文件中的 Access Control Lists (ACL) 。
-
如果通道使用 ImplicitMeta 原則類型且在通道組態中,您將群組區段中的 mod_policy 變更為「管理員」,且通道中有多個組織,則無法使用 Oracle Blockchain Platform 來管理通道。例如,您無法將組織新增至通道,或以任何方式變更通道的 ACL 原則,包括回復其原始值。
解決方法:使用原生 Hyperledger Fabric CLI 或 SDK 管理通道。
通路建立者無法更新通路的組態
當您使用原生 Hyperledger Fabric CLI 或 SDK 建立通道時,configtx.yaml 檔案中不會包含 Creator 原則。Oracle Blockchain Platform 需要建立者原則,才能允許通路建立者編輯通路的組態。
解決方法:手動編輯 configtx.yaml 檔案以新增 Creator 原則。
REST API 不支援在 instantiateChaincode 端點中將 blocktolive 設為 0
如果您使用 REST API 的 instantiateChaincode
端點,且在 dataCollectionConfig
中將 blocktolive
值設為 0,則您會收到下列錯誤: {"respMesg":"invalid argument"} 。
為了避免永久清除專用資料庫的資料,Hyperledger Fabric 會要求您將 blocktolive
值設為 0。不過,Oracle Blockchain Platform REST API 不支援將此組態設為 0。
解決方法:使用主控台建立鏈碼,然後在建立鏈碼對話方塊的「私密資料收集」區段中,將 blocktolive 欄位設為 0。
對等方無法從另一個對等方提取專用資料
如果專用資料收集的 blocktolive
值小於 10 且其 maxPeerCount
值小於對等 (不包括背書對等) 總數,對等體就無法從另一個對等體提取專用資料。當您使用主控台建立專用資料收集定義或使用原生 Hyperledger Fabric CLI 或 SDK 時,就會設定這個值。
解決方法:確認 blocktolive
值設為大於或等於 10。或者,確認 maxPeerCount
值設為不小於對等總數 (不包括背書對等)。如有需要,您可以重新建立或升級鏈碼,以重設這些值。
通路建立者組織與通路政策設定不一致
您可以使用主控台來建立通道,並將組織的 ACL 設為 ReaderOnly。儲存新通道之後,您就無法從通道的編輯通道組織選項更新此 ACL 設定。
不過,您可以使用主控台的管理通道原則選項,將您的組織新增至 Writers 原則,此原則會覆寫通道的 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 文數字字元。例如,您無法使用 _mychaincode 或 mychaincode_ 等名稱。
- 破折號 (-) 和底線 (_) 後面必須接著 ASCII 文數字字元。例如,您無法使用 my--chaincode 或 my-_chaincode 等名稱。
- 名稱和版本最多可有 64 個字元。
- 鏈碼版本也可以包含句號 (.) 與加號 (+)。
日期與時間選擇器行為
Oracle Blockchain Platform 日期和時間選擇器未如預期般運作。您可以使用日期和時間選擇器來篩選項目,例如日誌檔或分類帳活動。
解決方法:使用下列資訊來協助您使用日期和時間選擇器。
- 如果您選取特定期間 (例如,最後一天 ),然後再次選取以重新執行查詢,則不會重新執行查詢。若要取得最新資訊,請按一下重新整理按鈕。
- 如果您尚未在電腦上設定時區,則當您選取自訂選項時,必須以 GMT 指定開始時間和結束時間。不過,如果您在「偏好設定」中將「時區設定」設為 GMT (在主控台中選取您的執行處理名稱,然後按一下「偏好設定」,然後按一下「時區設定」),主控台上的時區會自動轉換成 GMT。
文件協助工具
For information about Oracle's commitment to accessibility, visit the Oracle Accessibility Program website at http://www.oracle.com/pls/topic/lookup?ctx=acc&id=docacc.
取得 Oracle 支援
Oracle 客戶對於 Oracle 支援服務的取得及使用,應以其 Oracle 訂單中針對適用服務所指定的條款與條件為依據。
Oracle Cloud Infrastructure 上 Oracle Blockchain Platform 的 Oracle Cloud 已知問題 (第 2 代)
F94762-04