fabric icon indicating copy to clipboard operation
fabric copied to clipboard

Request to provide support for Oracle in fabric chaincode

Open ctsatheesh opened this issue 2 years ago • 4 comments

Current Status

As part of developing business logic in fabric smart contracts, if we need information outside of blockchain, request for seamless integration of Oracle service with chaincode to process blockchain transactions. Protocol should be able to support pausing transaction endorsement, fetch information from Oracle service (if not already available) and resume endorsement and commit of transactions.

This feature would be handy for fabric smart contract developers to dynamically fetch information outside of blockchain and integrate with smart contract.

Expected

Required methods in supported languages (Go, java, javascript/typescript) to integrate Oracle with chaincode. Fetch information from external service and resume transaction processing.

Solution

  1. One possible approach to register data points along with details of external REST API endpoint details, input payload, expected data type of response. Once registered, fabric protocol can fetch information from external API service periodically with frequency mentioned by developer / organization admins. Chaincode can simply invoke get APIs to read information within fabric ledger. (or)
  2. Otherway is to on-demand fetch information from external service when processing transactions in chaincode using regular transaction flow of endorsement and commit.

Please let us know if you plan to work on this.

No.

ctsatheesh avatar Sep 01 '23 11:09 ctsatheesh

Thinking again on possible solution, above 1st approach to get data from fabric ledger is any way possible today by making client requests to update ledger with required data points. But in scenario where data is very basic and common across multiple channels in a fabric network, then we don't want to duplicate this data in all channels.

Instead, oracle service in fabric network can help to fetch required information and feed into chaincode.

ctsatheesh avatar Sep 01 '23 11:09 ctsatheesh

The problem is in case of chaincode fetch you 'll endup with n call in case of n endorser peer. so If API response is different or dynamic the endorsement would fail. This require some endorsement tweak! I would suggest we build a solution like CCAAS but for oracle and give it extra endorsement ability

Ethereumx avatar Sep 01 '23 19:09 Ethereumx

Leveraging an Oracle service makes sense but I don't think it necessarily needs to be part of Fabric core. In fact, to maintain flexibility it probably should not be part of Fabric core. It could be implemented as a library that user chaincodes could leverage, potentially made available as a Hyperledger lab to start. If somebody is working on a solution that requires an Oracle service, such a contribution would be welcome and encouraged.

denyeart avatar Sep 13 '23 21:09 denyeart

Yes. If chaincode developer can include package/module for getting data outside of blockchain, that would solve the problem.

ctsatheesh avatar Sep 21 '23 06:09 ctsatheesh