func (v *Validator) validateTx(txRWSet *rwset.TxReadWriteSet, updates *statedb.UpdateBatch) (bool, error) { for _, nsRWSet := range txRWSet.NsRWs { ns := nsRWSet.NameSpace for _, kvRead := range nsRWSet.Reads { if updates.Exists(ns, kvRead.Key) { return false, nil } versionedValue, err := v.db.GetState(ns, kvRead.Key) if err != nil { return false, nil } var committedVersion *version.Height if versionedValue != nil { committedVersion = versionedValue.Version } if !version.AreSame(committedVersion, kvRead.Version) { logger.Debugf("Version mismatch for key [%s:%s]. Committed version = [%s], Version in readSet [%s]", ns, kvRead.Key, committedVersion, kvRead.Version) return false, nil } } } return true, nil }