@@ -8,7 +8,6 @@ package rwset
88
99import (
1010 "context"
11- "fmt"
1211 "strings"
1312
1413 "github.com/hyperledger-labs/fabric-smart-client/pkg/utils/errors"
@@ -54,7 +53,7 @@ func NewLoader(
5453
5554func (c * Loader ) AddHandlerProvider (headerType cb.HeaderType , handlerProvider driver.RWSetPayloadHandlerProvider ) error {
5655 if handler , ok := c .handlers [headerType ]; ok {
57- return fmt .Errorf ("handler %T already defined for header type %v" , handler , headerType )
56+ return errors .Errorf ("handler %T already defined for header type %v" , handler , headerType )
5857 }
5958
6059 c .handlers [headerType ] = handlerProvider (c .Network , c .Channel , c .Vault )
@@ -67,30 +66,34 @@ func (c *Loader) GetRWSetFromEvn(ctx context.Context, txID driver2.TxID) (driver
6766 defer span .AddEvent ("end_get_rwset_from_evn" )
6867
6968 if ! c .EnvelopeService .Exists (ctx , txID ) {
70- return nil , nil , fmt .Errorf ("envelope does not exists for [%s]" , txID )
69+ return nil , nil , errors .Errorf ("envelope does not exists for [txID= %s]" , txID )
7170 }
7271
7372 rawEnv , err := c .EnvelopeService .LoadEnvelope (ctx , txID )
7473 if err != nil {
75- return nil , nil , fmt .Errorf ("cannot load envelope [%s]: %w " , txID , err )
74+ return nil , nil , errors .Errorf ("load envelope [txID= %s]" , txID )
7675 }
7776
7877 _ , payl , chdr , err := fabricutils .UnmarshalTx (rawEnv )
7978 if err != nil {
80- return nil , nil , err
79+ return nil , nil , errors .Wrap (err , "unmarshal payload and channel header" )
80+ }
81+
82+ if txID != chdr .TxId {
83+ return nil , nil , errors .Errorf ("txID mismatch in channel header, expected=%s, actual=%s" , txID , chdr .TxId )
8184 }
8285
8386 rws , err := c .Vault .NewRWSetFromBytes (ctx , chdr .TxId , payl .Data )
8487 if err != nil {
85- return nil , nil , fmt . Errorf ( "failed to create new rws for [%s]: %w " , chdr .TxId , err )
88+ return nil , nil , errors . Wrapf ( err , " create new rws for [txID= %s]" , chdr .TxId )
8689 }
8790
8891 var function string
8992 if anyKeyContains (rws , "initialized" ) {
9093 function = "init"
9194 }
9295
93- logger .Debugf ("retrieved processed transaction from env [%s, %s]" , txID , function )
96+ logger .Debugf ("retrieved processed transaction from envelope [txID=%s] [function= %s]" , txID , function )
9497 pt := & processedTransaction {
9598 network : c .Network ,
9699 channel : chdr .ChannelId ,
@@ -107,22 +110,22 @@ func (c *Loader) GetRWSetFromETx(ctx context.Context, txID driver2.TxID) (driver
107110 defer span .AddEvent ("end_get_rwset_from_etx" )
108111
109112 if ! c .TransactionService .Exists (ctx , txID ) {
110- return nil , nil , fmt .Errorf ("transaction does not exists for [%s]" , txID )
113+ return nil , nil , errors .Errorf ("transaction does not exists for [txID= %s]" , txID )
111114 }
112115
113116 raw , err := c .TransactionService .LoadTransaction (ctx , txID )
114117 if err != nil {
115- return nil , nil , fmt . Errorf ( "cannot load etx [%s]: %w " , txID , err )
118+ return nil , nil , errors . Wrapf ( err , "cannot load etx [txID= %s]" , txID )
116119 }
117120
118121 tx , err := c .TransactionManager .NewTransactionFromBytes (ctx , c .Channel , raw )
119122 if err != nil {
120- return nil , nil , err
123+ return nil , nil , errors . Wrap ( err , "new transaction from bytes" )
121124 }
122125
123126 rws , err := tx .GetRWSet ()
124127 if err != nil {
125- return nil , nil , err
128+ return nil , nil , errors . Wrap ( err , "get rwset" )
126129 }
127130
128131 return rws , tx , nil
@@ -133,24 +136,24 @@ func (c *Loader) GetInspectingRWSetFromEvn(ctx context.Context, txID driver2.TxI
133136 span .AddEvent ("start_get_inspecting_rwset_from_evn" )
134137 defer span .AddEvent ("end_get_inspecting_rwset_from_evn" )
135138
136- logger .Debugf ("retrieve rwset from envelope [%s, %s]" , c .Channel , txID )
139+ logger .Debugf ("retrieve rwset from envelope [channel=%s] [txID= %s]" , c .Channel , txID )
137140
138141 _ , payl , chdr , err := fabricutils .UnmarshalTx (envelopeRaw )
139142 if err != nil {
140- return nil , nil , errors .Wrapf (err , "cannot unmarshal envelope [%s]" , txID )
143+ return nil , nil , errors .Wrapf (err , "cannot unmarshal envelope [txID= %s]" , txID )
141144 }
142145
143146 rws , err := c .Vault .InspectRWSet (ctx , payl .Data )
144147 if err != nil {
145- return nil , nil , errors .Wrapf (err , "cannot inspect rwset for [%s]" , txID )
148+ return nil , nil , errors .Wrapf (err , "cannot inspect rwset for [txID= %s]" , txID )
146149 }
147150
148151 var function string
149152 if anyKeyContains (rws , "initialized" ) {
150153 function = "init"
151154 }
152155
153- logger .Debugf ("retrieved inspecting processed transaction from env [%s, %s]" , txID , function )
156+ logger .Debugf ("retrieved inspecting processed transaction from env [txID=%s] [function= %s]" , txID , function )
154157 pt := & processedTransaction {
155158 network : c .Network ,
156159 channel : chdr .ChannelId ,
0 commit comments