Differences of evaluateTransaction() and submitTransaction()

Q

What are the differences of Differences of evaluateTransaction() and submitTransaction() of the fabric-network.Contract class?

✍: FYIcenter.com

A

Here are the Differences of evaluateTransaction() and submitTransaction() of the fabric-network.Contract class:

evaluateTransaction() method - Calls the given transaction function on the chaincode and returns the response without commit any changes on assets to the ledger.

In other words, evaluateTransaction() performs a transaction and rollbacks any changes at the end.

submitTransaction() method - Calls the given transaction function on the chaincode and returns the response. Changes on assets will be sent to the orderer to commit to the ledger.

In other words, submitTransaction() forforms a transaction and commits changes at the end.

For example, if you run evaluate-transaction.js to call queryCar() on "fabcar" chaincode, you get the response.

$ node evaluate-transaction alice mychannel fabcar queryCar CAR12
Tx function and arguments:
[ 'queryCar', 'CAR12' ]
Tx result: {"colour":"Black","make":"Honda","model":"Accord","owner":"Tom"}

If you run submit-transaction.js to call queryCar() on "fabcar" chaincode, you get the same response.

$ node submit-transaction alice mychannel fabcar queryCar CAR12
Tx function and arguments:
[ 'queryCar', 'CAR12' ]
Tx result: {"colour":"Black","make":"Honda","model":"Accord","owner":"Tom"}

But if you run evaluate-transaction.js to call createCar() on "fabcar" chaincode, no car is created.

But if you run submit-transaction.js to call createCar() on "fabcar" chaincode, the new car is created.

 

Fabric CA (Certificate Authority)

submit-transaction.js - Submit Chaincode Transaction

Interfaces to Communicate with Ledger Peer

⇑⇑ Hyperledger Tutorials

2019-04-22, 251👍, 0💬