-
Notifications
You must be signed in to change notification settings - Fork 8.9k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[FAB-7224] Enhance custom tx processor
This CR enhances custom transaction processor in ledger such that the processor is able to distinguish whether it is being invoked during ledger initialization or for on-line tx processing. In the former situation, the processor needs to just rely on the states stored previously in the ledger and in the latter it can assume that the peer is up and running and hence other peer structures can be used. Other than this, in the initialization situation only valid transactions are passed to the processor which makes the custom validation in the processor optional. Change-Id: Idff54ab124dd588dfa5172a5b882e521217ca62a Signed-off-by: manish <manish.sethi@gmail.com>
- Loading branch information
1 parent
3974f15
commit adf7475
Showing
15 changed files
with
159 additions
and
66 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
/* | ||
Copyright IBM Corp. All Rights Reserved. | ||
SPDX-License-Identifier: Apache-2.0 | ||
*/ | ||
|
||
package customtx | ||
|
||
import ( | ||
"github.com/hyperledger/fabric/core/ledger" | ||
"github.com/hyperledger/fabric/protos/common" | ||
) | ||
|
||
// InvalidTxError is expected to be thrown by a custom transaction processor (an implementation of interface `Processor`) | ||
// if it wants the ledger to record a particular transaction as invalid | ||
type InvalidTxError struct { | ||
Msg string | ||
} | ||
|
||
func (e *InvalidTxError) Error() string { | ||
return e.Msg | ||
} | ||
|
||
// Processor allows to generate simulation results during commit time for custom transactions. | ||
// A custom processor may represent the information in a propriety fashion and can use this process to translate | ||
// the information into the form of `TxSimulationResults`. Because, the original information is signed in a | ||
// custom representation, an implementation of a `Processor` should be cautious that the custom representation | ||
// is used for simulation in an deterministic fashion and should take care of compatibility cross fabric versions. | ||
// 'initializingLedger' true indicates that either the transaction being processed is from the genesis block or the ledger is | ||
// synching the state (which could happen during peer startup if the statedb is found to be lagging behind the blockchain). | ||
// In the former case, the transactions processed are expected to be valid and in the latter case, only valid transactions | ||
// are reprocessed and hence any validation can be skipped. | ||
type Processor interface { | ||
GenerateSimulationResults(txEnvelop *common.Envelope, simulator ledger.TxSimulator, initializingLedger bool) error | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
/* | ||
Copyright IBM Corp. All Rights Reserved. | ||
SPDX-License-Identifier: Apache-2.0 | ||
*/ | ||
|
||
package customtx | ||
|
||
// InitializeTestEnv initializes custom tx processors for test | ||
func InitializeTestEnv(processors Processors) { | ||
initialize(processors) | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.