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.7Hyperledger Fabric v2.x 的实例。

解决方法:请勿尝试在同一区块链网络上运行不同主要版本的 Hyperledger Fabric。

以前版本的功能不受支持

先前版本的 Oracle Blockchain Platform Enterprise Edition 支持负载平衡器和硬件安全模块。Oracle Blockchain Platform 24.1.3 不支持这些功能。

对等节点或排序者的存储已满

如果运行以下命令并得到下面列出的任一错误,则 pod 可能由于空间不足而无法在磁盘上写入。
#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
specstoragechaincodepeer 部分中,将大小从 2Gi 增加到 10Gi 并保存文件。
Restart the StatefulSet for each orderer and peer 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-operatorobp-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 证书或中间 CA 证书对这些证书进行签名。

不支持从以前的发行版升级

无法从 Oracle Blockchain Platform Enterprise Edition 21.1 或 Oracle Blockchain Platform Enterprise Edition 19.3 升级到 Oracle Blockchain Platform Enterprise Edition 24.1。

解决办法:此问题没有解决办法。

使用 Oracle Blockchain Platform XA 实施时的错误消息

如果下载实施 XA 协议的 Java 库,然后在安装了 3.8.1 之前的 Maven 版本的环境中使用该库,则会显示以下错误消息:构件信息无效,包含无效字符。

解决方法:可下载库中的 .pom 文件具有版本号的占位符。更新 pom.xml 文件并将版本号更改为 24.1.3

登录时控制台无响应

尝试登录服务控制台时,UI 可能会不响应。

此行为由以下补丁程序修复:ORACLE BLOCKCHAIN PLATFORM ENTERPRISE EDITION (OBPEE) - 24.1.3 - PATCHSET-1,即补丁程序编号 36929129。有关安装补丁程序的详细信息,请参阅Oracle Blockchain Platform 打补丁

无法重新安装以前无法安装的链代码

如果您尝试从以前失败的安装中重新安装与链代码同名的链代码,则安装过程将再次失败。如果为上一次安装尝试创建了链代码名称的 pod,但随后未删除,则可能会发生这种情况。

此行为由以下补丁程序修复:ORACLE BLOCKCHAIN PLATFORM ENTERPRISE EDITION (OBPEE) - 24.1.3 - PATCHSET-1,即补丁程序编号 36929129。有关安装补丁程序的详细信息,请参阅Oracle Blockchain Platform 打补丁

网络的 Oracle Blockchain Platform 实例无法管理已撤消的证书

如果 Oracle Blockchain Platform 网络包含 Hyperledger Fabric 组织并且其证书被撤消,则已撤消的证书不会应用于、不会显示在其中,并且无法从网络的 Oracle Blockchain Platform 实例中撤消。

解决方法:使用本机超级账本架构 CLI 或 SDK 导入组织的证书吊销列表 (certificate revocation list,CRL) 文件。

渠道创建者无法更新渠道的配置

使用本机超级账本架构 CLI 或 SDK 创建通道时, configtx.yaml 文件中不包括创建者策略。Oracle Blockchain Platform 要求创建者策略允许渠道创建者编辑渠道的配置。

解决方法:手动编辑 configtx.yaml 文件以添加创建者策略。

对等端无法从其他对等端提取专用数据

如果专用数据收集的 blocktolive 值小于 10 且其 maxPeerCount 小于对等点总数(不包括背书对等点),则对等点可能会无法从其他对等点提取专用数据。当使用控制台创建专用数据收集定义或使用本机超级账本架构 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 要求。如果您在从超级账本架构客户端部署时不遵循这些要求,则链代码可能会在控制台中错误地列出。

解决方法:部署链代码名称和版本时,请使用以下规则。

  • 使用 ASCII 字母数字字符、短划线 (-) 和下划线 (_)。
  • 名称只能以 ASCII 字母数字字符开头和结尾。例如,不能使用 _mychaincodemychaincode_ 等名称。
  • 短划线 (-) 和下划线 (_) 必须后跟 ASCII 字母数字字符。例如,不能使用 my--chaincodemy-_chaincode 等名称。
  • 名称和版本长度最多为 64 个字符。
  • 链代码版本还可以包含句点 (.) 和加号 (+)。

日期和时间选择器行为

Oracle Blockchain Platform 日期和时间选择器无法按预期运行。您可以使用日期和时间选择器来筛选日志文件或分类账活动等项。

解决方法:使用以下信息帮助您使用日期和时间选择器。

  • 如果选择特定时段(例如,最后一天),然后再次选择该时段以重新运行查询,则查询不会重新运行。要获取最新信息,请单击“刷新”按钮。
  • 如果您尚未在计算机上设置时区,则在选择自定义选项时,必须使用 GMT 指定开始时间和结束时间。但是,如果在 "Preferences"(首选项)中将 "Timezone Setting"(时区设置)设置为 GMT (在控制台中选择实例名称,然后单击 "Preferences"(首选项),然后单击 "Timezone Setting"(时区设置),控制台上的时区将自动转换为 GMT。