Known Issues for Oracle Blockchain Platform on Oracle Cloud Infrastructure (Gen 2)

Learn about the issues you may encounter when using Oracle Blockchain Platform and how to work around them.

Issues Initially Reported in Previous Releases:

Supported Hyperledger Fabric Versions

Oracle Blockchain Platform 23.3.3 supports Hyperledger Fabric v2.5.3. All new users will use Hyperledger Fabric v2.5.3 by default.

Supported Browsers

For information on supported browsers to use for instance provisioning through Oracle Cloud Infrastructure, see Signing In to the Console.

If the Oracle Blockchain Platform console isn’t behaving as expected, then check that you're using the latest version of a supported browser. Oracle Blockchain Platform supports the following browsers:

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

Interoperability of Hyperledger Fabric Versions

Oracle Blockchain Platform does not support the use of instances based on Hyperledger Fabric v1.4.7 and on Hyperledger Fabric v2.x in the same blockchain network.

Workaround: Do not attempt to run different major versions of Hyperledger Fabric on the same blockchain network.

App Builder CLI Is Uninstalled If Prerequisites Check Fails

When you upgrade the Blockchain App Builder command-line interface (CLI) by installing or reinstalling the latest version, if the prerequisites check fails, the existing Blockchain App Builder CLI is uninstalled.

Workaround: You can either reinstall the older version of the Blockchain App Builder CLI, or update your system to meet the prerequisites and then install the newer version of the Blockchain App Builder CLI.

No Error When a Fractional NFT Transaction Uses Incorrect Number of Decimal Places

When you use Blockchain App Builder to work with fractional NFTs that use the ERC-1155 standard, if a transaction amount uses a larger number of decimal places than the maximum number of decimal places in the specification file, an error is not indicated. Instead, the actual transaction amount is truncated to the number of decimal places defined in the specification file. Additionally, even though the sender's and receiver's balances are truncated to the specified number of digits, the transactedAmount value in the transaction history shows the untruncated value.

Workaround: Validate a transaction amount before creating a transaction to ensure that the transaction amount does not use a larger number of decimal places than what was specified in the input specification file for the chaincode.

Go Chaincode Version Compatibility

For version 23.3.3 of Oracle Blockchain Platform, the version of Go that is used was updated to 1.20. If you attempt to deploy or upgrade a chaincode that is not compatible with Go 1.20, the process might fail. Before you upgrade or deploy a chaincode that is written in Go, ensure that the chaincode can build with Go 1.20. You can use the following commands on the contents of the chaincode folder on a system where Go 1.20 is installed to check for errors:
go mod tidy
go mod vendor

Currently deployed chaincodes are not affected by this behavior and will continue to work as expected after you upgrade to Oracle Blockchain Platform 23.3.3.

Node.js Chaincode Version Compatibility

For version 23.3.3 of Oracle Blockchain Platform, the version of Node.js that is used was updated to 18.15.0. If you attempt to deploy or upgrade a chaincode that is not compatible with Node.js 18.15.0, the process might fail. Before you upgrade or deploy a chaincode that is written in Node.js, ensure that the chaincode can build with Node.js 18.15.0.

Currently deployed chaincodes are not affected by this behavior and will continue to work as expected after you upgrade to Oracle Blockchain Platform 23.3.3.

Issues Initially Reported in Previous Releases:

Cannot Run Fiat Money Token or Balance Transfer Sample From the Developer Tools Page

A new version of the Fiat Money Token sample is included with Oracle Blockchain Platform 22.4.2. The updated chaincode has a different package ID than the previous version. If you deployed the Fiat Money Token sample, after upgrading to Oracle Blockchain Platform 22.4.2 the sample will no longer be shown as deployed on the Developer Tools page in the console and you will not be able to run any operations from the Developer Tools page for the sample.

The same behavior occurs with the Balance Transfer sample, which was updated for Oracle Blockchain Platform 22.3.2 to work with the atomic transactions function.

Workaround: Install the sample chaincode again on the peers, which will install the newer version of the chaincode with the new package ID. For each channel where the sample was deployed, upgrade the chaincode to the new package. After the chaincode is upgraded, the status and operations of the sample on the Developer Tools page will function normally.

Go Deployment Error When Using Blockchain App Builder

You might encounter an error similar to the following when deploying a Go chaincode project by using Blockchain App Builder:
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
Workaround:
macOS
  1. Run the following command:
    env GO111MODULE=off go get ‘github.com/cortesi/modd/cmd/modd’
  2. Retry the deployment.
Microsoft Windows
  1. Use go install to run the following command:
    go install github.com/cortesi/modd/cmd/modd@latest
  2. Use go get to run the following commands:
    SET GO111MODULE=auto
    go get ‘github.com/cortesi/modd/cmd/modd’
  3. Retry the deployment.

Initialization Failure in TypeScript Chaincode Generated by Blockchain App Builder

If you generate TypeScript chaincode with Blockchain App Builder version 22.4.2 or earlier, you might see errors similar to the following text when you deploy or run the chaincode locally or remotely:
Local environment:
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
Remote environment:
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}"
}

Workaround: To work around this behavior for existing chaincodes, complete the steps at the following support page:

Deployment of TypeScript Chaincode in Both Local and Remote OBP Environment Fail

To avoid this behavior in new chaincodes, upgrade to Blockchain App Builder 22.4.3 or later. You can download Blockchain App Builder from the Developer Tools tab on the Blockchain App Builder pane of the Oracle Blockchain Platform console.

Gateway Timeouts When Using the XA Library

When you use the XA Java library with Oracle Blockchain Platform, multiple blockchain transactions can be combined into a global transaction that is controlled by an external transaction manager. If the blockchain transactions take longer than the gateway timeout value of 60 seconds to complete, then the transaction status can become nondeterministic on the transaction manager side and the Oracle Blockchain Platform side.

Workaround: There is no workaround for this issue. In this case you must manually resolve the transaction.

Cannot Run Token Chaincode in Debug Mode on Microsoft Windows

If you use Blockchain App Builder version 22.2.1 or earlier, you cannot run token chaincode in debug mode on Microsoft Windows.

Workaround: Upgrade to the latest version of Blockchain App Builder. If you are unable to upgrade, complete the following steps:

  1. Open the chaincode/.vscode/task.json file for editing.
  2. The sixth line of the task.json file includes the command key. Remove the following string from the line:
    -p '${workspaceFolder}' 
For example, the line in the task.json file before editing:
"command": "ochain debug -p '${workspaceFolder}' \"[{\\\"userId\\\":\\\"admin\\\",\\\"orgId\\\":\\\"Org1MSP\\\"}]\" -v v8",
After:
"command": "ochain debug \"[{\\\"userId\\\":\\\"admin\\\",\\\"orgId\\\":\\\"Org1MSP\\\"}]\" -v v8",

Ordering Service Settings Not Updated After Platform Upgrade

When you upgrade an instance from Hyperledger Fabric v1.4.7 to Hyperledger Fabric v2.2.4, your existing ordering service settings are preserved. In other words, an upgraded instance uses the existing ordering service settings of the Hyperledger Fabric v1.4.7 instance, not the default settings for a new Hyperledger Fabric v2.2.4 instance. The following table summarizes the ordering service setting values. For more information about the ordering service, see Manage Ordering Service.

Setting Default Values for v1.4.7 and Upgraded v2.2.4 Instances Default Values for New v2.2.4 Instances
Batch timeout (ms) 2000 2000
Max message count 10 500
Absolute message bytes 98 98
Preferred message bytes 512 2
Snapshot interval size 20 16

Gossip Leader Election Attribute Not Updated After Platform Upgrade

When you upgrade an instance from Hyperledger Fabric v1.4.7 to Hyperledger Fabric v2.2.4, the gossip leader election attribute for the peer nodes is not updated. In other words, an upgraded instance uses the existing attribute of the Hyperledger Fabric v1.4.7 instance, not the default attribute for a new Hyperledger Fabric v2.2.4 instance. For more information about peer node attributes, see Peer Node Attributes.

Event Size Limits

Starting with version 22.2.1, by default the maximum payload size of an event is limited to 50 KB. Any events larger than the maximum payload size will be dropped. The Oracle DevOps team can modify this parameter by request. If you expect to subscribe to events where the payload will be larger than 50 KB, open a Service Request (SR) in My Oracle Support to request a larger maximum event size. For more information, see Subscribe to an Event in the REST API documentation.

User IDs That Contain a Colon (:) Can't Be Used in REST API Calls

Oracle Blockchain Platform allows you to associate a user ID that contains a colon (:) with a REST proxy enrollment. However, that user ID cannot be used in REST API calls when basic authentication (user name and password) is used.

Workaround: Ensure that all users associated with REST proxy enrollments do not have a colon (:) in their user IDs.

CORS Header Not Returned for Invalid Credentials

Customer applications that invoke REST proxy transactions will not receive the Cross-Origin Resource Sharing (CORS) header (the Access-Control-Allow-Origin header) in the response if the credentials that were sent in the request are invalid, incorrect, or expired.

Orderers Status Error When Creating Channels

When creating a channel, you might see the following error:
Failed to create the channel with error: aborted
Please check the orderers status.

Workaround: Try to create the channel again. This is an intermittent issue.

Debugging in Visual Studio Code on Microsoft Windows

On Microsoft Windows, you might encounter an error similar to the following while debugging chaincode projects in 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
There is no workaround for this error at this time.

Multi-Organization Environments and Blockchain App Builder

In an environment with multiple organizations, you might need to use the console to complete some operations.

To re-deploy the chaincode on the same channel through a participant instance, use the console to deploy the chaincode.

(Hyperledger Fabric v2.2.4) To upgrade the chaincode, use the console and manually approve the chaincode from the participants.

Scaling Only Works on One Component at a Time

You can only scale one node type at a time. For example, you can make add peer nodes and modify existing peer node settings at the same time, but if you also want to increase your storage you must do that seperately.

Additionally, you can only scale one peer or OSN at a time - for example you can't add two peers in a single operation.

Incorrect Operating System Clock May Result in Rejected Requests

If the client or SDK's local clock is more than 15 minutes off, the requests from it will be rejected by the peer and orderer. Ensure your local clock is set correctly.

Blockchain Applications Aren’t Working as Expected Due to an Older Client SDK

An application can behave unexpectedly if it's using an older version of the client SDK.

Workaround: Read the documentation describing the client SDK updates and modify your applications as needed. For more information, see Hyperledger Fabric SDKs in the Hyperledger Fabric documentation.

The Network's Oracle Blockchain Platform Instances Can't Manage Revoked Third-Party Certificates

If an Oracle Blockchain Platform network contains either organizations with third-party certificates or Hyperledger Fabric organizations and their certificates are revoked, then the revoked certificates aren't applied to, won't display in, and can't be revoked from the network's Oracle Blockchain Platform instances.

Workaround: Use the native Hyperledger Fabric CLI or SDK to import the organization's certificate revocation list (CRL) file.

Founder's Channel List Contains Incorrect Created by Information and Edit Channel Organizations Option Isn’t Available

In a mixed network (where a founder instance and participant instance are running different versions of Oracle Blockchain Platform), the founder's channel list may display the wrong MSP ID for a channel created by a participant. Instead of the participant's MSP ID, the founder's MSP ID is displayed. This may happen after you import the CRL, revoke or apply the CRL, or set an anchor peer on a channel.

The channel's Edit Channel Organizations option is only available for the instance displayed in the Created by field. If the wrong MSP ID is displayed, then the channel creator can't update the channel organizations.

Workaround: There is no workaround for this issue.

ImplicitMeta Policy Isn't Supported by Oracle Blockchain Platform

If you use the native Hyperledger Fabric CLI or SDK to modify a channel's configuration, some of the configuration settings you specify can't be supported by Oracle Blockchain Platform.

  • The native Hyperledger Fabric CLI and SDK use the ImplicitMeta channel policy for readers and writers. When the channel uses these policies, the Oracle Blockchain Platform console can't guarantee that the administrative operations (for example, edit organization) can be successfully processed.

    Workaround: Update the readers and writers policies to the Signature policies, and define the policy rules as needed. For more information, see Access Control Lists (ACL) in the Hyperledger Fabric documentation.

  • If a channel is using the ImplicitMeta policy type and in the channel configuration you change the mod_policy in the groups section to Admins and there is more than one organization in the channel, then you can't use Oracle Blockchain Platform to manage the channel. For example, you can't add new organizations to the channel or change the channel's ACL policy in any way, including restoring its original value.

    Workaround: Use the native Hyperledger Fabric CLI or SDK to manage the channel.

Channel Creator Can't Update the Channel's Configuration

When you use the native Hyperledger Fabric CLI or SDK to create a channel, the Creator policy isn't included in the configtx.yaml file. Oracle Blockchain Platform requires the Creator policy to allow the channel creator to edit a channel's configuration.

Workaround: Manually edit the configtx.yaml file to add the Creator policy.

Setting blocktolive to 0 in instantiateChaincode Endpoint Not Supported in REST API

If you're using the REST API's instantiateChaincode endpoint and in the dataCollectionConfig you set the blocktolive value to 0, then you'll receive the following error: {"respMesg":"invalid argument"}.

To prevent purging data from the private database, Hyperledger Fabric requires you to set the blocktolive value to 0. However, the Oracle Blockchain Platform REST API doesn't support setting this configuration to 0.

Workaround: Use the console to instantiate the chaincode, and in the Instantiate Chaincode dialog's Private Data Collections section, set the blocktolive field to 0.

Peer Fails to Pull Private Data from Another Peer

A peer can fail to pull private data from another peer if a private data collection's blocktolive value is less than 10 and its maxPeerCount value is less than the total number of peers, not including the endorsing peer. This value is set when you use the console to create a private data collection definition or use the native Hyperledger Fabric CLI or SDK. See https://jira.hyperledger.org/browse/FAB-11889.

Workaround: Confirm that the blocktolive value is set to greater than or equal to 10. Or, confirm that the maxPeerCount value is set to no less than the total number of peers, not including the endorsing peer. If needed, you can re-instantiate or upgrade the chaincode to reset these values.

Channel Creator Organization and Channel Policy Settings Inconsistency

You can use the console to create a channel and set your organization's ACL to ReaderOnly. After you save the new channel, you can't update this ACL setting from the channel's Edit Channel Organizations option.

However, you can use the console's Manage Channel Policies option to add your organization to the Writers policy, which overwrites the channel's ReaderOnly ACL setting.

Workaround: There is no workaround for this issue.

Exported and Imported File Incompatibility

You can't export and import files (CRLs, certificates, orderering service settings, and peers) between the console and the REST APIs.

Files exported by the console and REST APIs are only compatible for import with the same component. For example, if you export a peer using the console, then you can't import it with the REST API (you can only import it with the console). And if you export a peer with the REST API, then you can't import it with the console (you can only import with the REST API).

Workaround: There is no workaround for this issue.

Chaincode Name Requirements

The Oracle Blockchain Platform chaincode name and version requirements are different than the Hyperledger Fabric requirements. You must use the Oracle Blockchain Platform requirements when you deploy a chaincode from the console or the Hyperledger Fabric client. If you don’t follow these requirements when deploying from the Hyperledger Fabric client, then the chaincode may be listed incorrectly in the console.

Workaround: Use the following rules when deploying a chaincode name and version.

  • Use ASCII alphanumeric characters, dashes (-), and underscores (_).
  • The name must start and end only with ASCII alphanumeric characters. For example, you can't use names like _mychaincode or mychaincode_.
  • Dashes (-) and underscores (_) must be followed with ASCII alphanumeric characters. For example, you can't use names like my--chaincode or my-_chaincode.
  • The name and version can each be up to 64 characters long.
  • The chaincode version can also contain periods (.) and plus signs (+).

Date and Time Picker Behavior

The Oracle Blockchain Platform date and time picker doesn’t behave as expected. You use the date and time picker to filter items such as log files or ledger activity.

Workaround: Use the following information to help you use the date and time picker.

  • If you select a specific time period (for example, Last day) and then select it again to re-run the query, the query doesn’t re-run. To get the latest information, click the refresh button.
  • If you haven't set the time zone on your computer, then when you select the Custom option, you must specify the start time and end time in GMT. However, if you set the Timezone Setting to GMT in the Preferences (in the console select your instance name, then click Preferences, and then Timezone Setting), the timezone on the console automatically converts to GMT.

Manually Vendor the Shim with a Chaincode

In Hyperledger Fabric, the fabric-ccenv image contains the github.com/hyperledger/fabric/core/chaincode/shim (shim) package. This allows you to package a chaincode without needing to include the shim. However, this may cause issues in future Hyperledger Fabric releases, and it may cause issues when using packages that are included with the shim.

Workaround: To avoid potential issues, you should manually vendor the shim package with the chaincode prior to using the peer command-line interface for packaging and installing a chaincode, or packaging or installing a chaincode. See https://jira.hyperledger.org/browse/FAB-5177.

Documentation Accessibility

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.

Access to Oracle Support

Oracle customers that have purchased support have access to electronic support through My Oracle Support. For information, visit http://www.oracle.com/pls/topic/lookup?ctx=acc&id=info or visit http://www.oracle.com/pls/topic/lookup?ctx=acc&id=trs if you are hearing impaired.