0

We are exploring Kaleido and Chainlink for one of our use cases.

What we have done:

  1. We have created a network of Quorum/Raft nodes.
  2. We had setup the chainlink service for the network. We have setup the Job in chainlink.
  3. We have use the 0.5 version of smart contract shared by the chainlink.

What is working:

  1. Deployed the smart contract to the network using truffle.
  2. Tried invoking the function which utilizes the Chainlink oracle service.
  3. Same is working for any of our smart contracts.

What is not working?

  1. We need to have the smart contract private.
  2. When we deploy the smart contract private by passing the privateFor with array of node address, it is getting deployed.
  3. When we try to invoke the smart contract which invokes the oracle service by passing privateFor, it is failing.
  4. In node logs I can see “evm execution failed”.
  5. The same issue happens for the Chainlink sample smart contract as well.

Questions:

Is it like it won't support private smart contracts? it is not mentioned here. Is this an issue with Quorum or Chainlink smart contracts?

Steps followed

Smart contracts used: https://github.com/kaleido-io/chainlink-samples

Migration settings:

module.exports = function(deployer) {
  deployer.deploy(EthPrice, LINK_CONTRACT_ADDRESS, ORACLE_CONTRACT_ADDRESS, {
    privateFor:["vZAL3MIHsa8uRMzRbSnfG0NVjXHkFqRCM3tl3MPM5ho="]
  });
};

Truffle commands:

ins = await EthPrice.deployed()     
ins.requestEthereumPrice("ea9ceb42c1d8401f9dd30f7ce39c0f5a", {
  privateFor:["vZAL3MIHsa8uRMzRbSnfG0NVjXHkFqRCM3tl3MPM5ho="]
})

Error Logs:

Thrown:
{ Error: Transaction: 0x559a5ecd4f1f70a00f7dee2041e5c320d79664a341d1c8838b23d879b5e6867f exited with an error (status 0).     at PromiEvent (/usr/local/lib/node_modules/truffle/build/webpack:/packages/contract/lib/promievent.js:9:1)
    at TruffleContract.requestEthereumPrice (/usr/local/lib/node_modules/truffle/build/webpack:/packages/contract/lib/execute.js:169:1)
    at evalmachine.<anonymous>:0:5
    at sigintHandlersWrap (vm.js:288:15)
    at Script.runInContext (vm.js:130:14)
    at runScript (/usr/local/lib/node_modules/truffle/build/webpack:/packages/core/lib/console.js:222:1)
    at Console.interpret (/usr/local/lib/node_modules/truffle/build/webpack:/packages/core/lib/console.js:237:1)
    at ReplManager.interpret (/usr/local/lib/node_modules/truffle/build/webpack:/packages/core/lib/repl.js:131:1)
    at bound (domain.js:402:14)
    at REPLServer.runBound [as eval] (domain.js:415:12)
    at REPLServer.onLine (repl.js:642:10)
    at REPLServer.emit (events.js:198:13)
    at REPLServer.EventEmitter.emit (domain.js:448:20)
    at REPLServer.Interface._onLine (readline.js:308:10)
    at REPLServer.Interface._line (readline.js:656:8)
    at REPLServer.Interface._ttyWrite (readline.js:937:14)
    at REPLServer.self._ttyWrite (repl.js:715:7)
    at ReadStream.onkeypress (readline.js:184:10)
    at ReadStream.emit (events.js:198:13)
    at ReadStream.EventEmitter.emit (domain.js:448:20)
    at emitKeys (internal/readline.js:424:14)
    at emitKeys.next (<anonymous>)
    at ReadStream.onData (readline.js:1073:36)
    at ReadStream.emit (events.js:198:13)
    at ReadStream.EventEmitter.emit (domain.js:448:20)
    at addChunk (_stream_readable.js:288:12)
    at readableAddChunk (_stream_readable.js:269:11)
    at ReadStream.Readable.push (_stream_readable.js:224:10)
  message:
   'Transaction: 0x559a5ecd4f1f70a00f7dee2041e5c320d79664a341d1c8838b23d879b5e6867f exited with an error (status 0). \n     Please check that the transaction:\n     - satisfies all conditions set by Solidity `require` statements.\n     - does not trigger a Solidity `revert` statement.\n',
  stack:
   'Error: Transaction: 0x559a5ecd4f1f70a00f7dee2041e5c320d79664a341d1c8838b23d879b5e6867f exited with an error (status 0).     at PromiEvent (/usr/local/lib/node_modules/truffle/build/webpack:/packages/contract/lib/promievent.js:9:1)\n    at TruffleContract.requestEthereumPrice (/usr/local/lib/node_modules/truffle/build/webpack:/packages/contract/lib/execute.js:169:1)\n    at evalmachine.<anonymous>:0:5\n    at sigintHandlersWrap (vm.js:288:15)\n    at Script.runInContext (vm.js:130:14)\n    at runScript (/usr/local/lib/node_modules/truffle/build/webpack:/packages/core/lib/console.js:222:1)\n    at Console.interpret (/usr/local/lib/node_modules/truffle/build/webpack:/packages/core/lib/console.js:237:1)\n    at ReplManager.interpret (/usr/local/lib/node_modules/truffle/build/webpack:/packages/core/lib/repl.js:131:1)\n    at bound (domain.js:402:14)\n    at REPLServer.runBound [as eval] (domain.js:415:12)\n    at REPLServer.onLine (repl.js:642:10)\n    at REPLServer.emit (events.js:198:13)\n    at REPLServer.EventEmitter.emit (domain.js:448:20)\n    at REPLServer.Interface._onLine (readline.js:308:10)\n    at REPLServer.Interface._line (readline.js:656:8)\n    at REPLServer.Interface._ttyWrite (readline.js:937:14)\n    at REPLServer.self._ttyWrite (repl.js:715:7)\n    at ReadStream.onkeypress (readline.js:184:10)\n    at ReadStream.emit (events.js:198:13)\n    at ReadStream.EventEmitter.emit (domain.js:448:20)\n    at emitKeys (internal/readline.js:424:14)\n    at emitKeys.next (<anonymous>)\n    at ReadStream.onData (readline.js:1073:36)\n    at ReadStream.emit (events.js:198:13)\n    at ReadStream.EventEmitter.emit (domain.js:448:20)\n    at addChunk (_stream_readable.js:288:12)\n    at readableAddChunk (_stream_readable.js:269:11)\n    at ReadStream.Readable.push (_stream_readable.js:224:10)',
  name: 'StatusError',
  tx:
   '0x559a5ecd4f1f70a00f7dee2041e5c320d79664a341d1c8838b23d879b5e6867f',
  receipt:
   { blockHash:
      '0x9c5a5d209cea3b486a5800bce8f6320162083ff061cb1ab5f1e728409a2a5da6',
     blockNumber: 960,
     contractAddress: null,
     cumulativeGasUsed: 0,
     from: '0x6b3506a13b5af5c0163d15e2b1470cfb8c35a535',
     gasUsed: 0,
     logs: [],
     logsBloom:
      '0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
     status: false,
     to: '0x3bc97bcfbe2fc435654b2f36298d54a43775d995',
     transactionHash:
      '0x559a5ecd4f1f70a00f7dee2041e5c320d79664a341d1c8838b23d879b5e6867f',
     transactionIndex: 0,
     rawLogs: [] },
  reason: undefined,
  hijackedStack:
   'Error: Transaction: 0x559a5ecd4f1f70a00f7dee2041e5c320d79664a341d1c8838b23d879b5e6867f exited with an error (status 0). \n     Please check that the transaction:\n     - satisfies all conditions set by Solidity `require` statements.\n     - does not trigger a Solidity `revert` statement.\n\n    at StatusError.ExtendableError (/usr/local/lib/node_modules/truffle/build/webpack:/packages/error/index.js:10:1)\n    at new StatusError (/usr/local/lib/node_modules/truffle/build/webpack:/packages/contract/lib/statuserror.js:33:1)\n    at Object.receipt (/usr/local/lib/node_modules/truffle/build/webpack:/packages/contract/lib/handlers.js:124:1)\n    at process._tickCallback (internal/process/next_tick.js:68:7)' }
  • I've fixed some of your question (all but the Error Logs), in order to make it more readable. Feel free to fix the rest... – goodvibration Apr 6 at 10:27
  • I am not familiar with Chainlink, but could you potentially tripping over a Quorum Contract Design Consideration? github.com/jpmorganchase/quorum/wiki/… Where your private Contract tries to update a public contract or vice versa. – toothleth_byte Apr 20 at 6:32

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.