Skip to content

Commit 30b7231

Browse files
committed
rewrote metadata assembly code
Signed-off-by: Angelo De Caro <[email protected]>
1 parent 6cc3376 commit 30b7231

File tree

6 files changed

+75
-59
lines changed

6 files changed

+75
-59
lines changed

integration/ports.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,8 @@ var (
6060

6161
AllTestTypes = []*InfrastructureType{
6262
WebSocketNoReplication,
63-
LibP2PNoReplication,
64-
WebSocketWithReplication,
63+
// LibP2PNoReplication,
64+
// WebSocketWithReplication,
6565
}
6666
)
6767

integration/token/interop/fabtoken/fabtoken_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ func newTestSuiteSingleFabric(commType fsc.P2PCommunicationType, factor int, nam
6969
ReplicationOpts: opts,
7070
DefaultTMSOpts: common.TMSOpts{TokenSDKDriver: "fabtoken"},
7171
SDKs: []api2.SDK{&ffabtoken.SDK{}},
72+
FSCLogSpec: "token-sdk=debug:fabric-sdk=debug:info",
7273
}))
7374
return ts, selector
7475
}

token/core/fabtoken/transfer.go

Lines changed: 31 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -67,21 +67,17 @@ func (s *TransferService) Transfer(ctx context.Context, _ string, _ driver.Owner
6767
})
6868
}
6969

70-
// assemble transfer metadata
70+
// assemble transfer transferMetadata
7171
ws := s.WalletService
72-
metadata := &driver.TransferMetadata{
73-
Inputs: nil,
74-
Outputs: nil,
75-
ExtraSigners: nil,
76-
}
7772

7873
// inputs
74+
transferInputsMetadata := make([]*driver.TransferInputMetadata, 0, len(inputTokens))
7975
for i, t := range inputTokens {
8076
auditInfo, err := s.Deserializer.GetOwnerAuditInfo(t.Owner, ws)
8177
if err != nil {
8278
return nil, nil, errors.Wrapf(err, "failed getting audit info for sender identity [%s]", driver.Identity(t.Owner).String())
8379
}
84-
metadata.Inputs = append(metadata.Inputs, &driver.TransferInputMetadata{
80+
transferInputsMetadata = append(transferInputsMetadata, &driver.TransferInputMetadata{
8581
TokenID: tokenIDs[i],
8682
Senders: []*driver.AuditableIdentity{
8783
{
@@ -98,57 +94,65 @@ func (s *TransferService) Transfer(ctx context.Context, _ string, _ driver.Owner
9894
if err != nil {
9995
return nil, nil, errors.Wrapf(err, "failed serializing output information")
10096
}
97+
transferOutputsMetadata := make([]*driver.TransferOutputMetadata, 0, len(outs))
10198
for _, output := range outs {
99+
var outputAudiInfo []byte
102100
var receivers []driver.Identity
103101
var receiversAuditInfo [][]byte
104-
transferOutputMetadata := &driver.TransferOutputMetadata{
105-
OutputMetadata: outputMetadataRaw,
106-
OutputAuditInfo: nil,
107-
Receivers: nil,
108-
}
102+
var outputReceivers []*driver.AuditableIdentity
109103

110104
if len(output.Owner) == 0 { // redeem
105+
outputAudiInfo = nil
111106
receivers = append(receivers, output.Owner)
112107
receiversAuditInfo = append(receiversAuditInfo, []byte{})
108+
outputReceivers = make([]*driver.AuditableIdentity, 0, 1)
113109
} else {
110+
outputAudiInfo, err = s.Deserializer.GetOwnerAuditInfo(output.Owner, ws)
111+
if err != nil {
112+
return nil, nil, errors.Wrapf(err, "failed getting audit info for sender identity [%s]", driver.Identity(output.Owner).String())
113+
}
114114
recipients, err := s.Deserializer.Recipients(output.Owner)
115115
if err != nil {
116116
return nil, nil, errors.Wrap(err, "failed getting recipients")
117117
}
118118
receivers = append(receivers, recipients...)
119-
audiInfo, err := s.Deserializer.GetOwnerAuditInfo(output.Owner, ws)
120-
if err != nil {
121-
return nil, nil, errors.Wrapf(err, "failed getting audit info for sender identity [%s]", driver.Identity(output.Owner).String())
119+
for _, receiver := range receivers {
120+
receiverAudiInfo, err := s.Deserializer.GetOwnerAuditInfo(receiver, ws)
121+
if err != nil {
122+
return nil, nil, errors.Wrapf(err, "failed getting audit info for receiver identity [%s]", receiver)
123+
}
124+
receiversAuditInfo = append(receiversAuditInfo, receiverAudiInfo)
122125
}
123-
receiversAuditInfo = append(receiversAuditInfo, audiInfo)
126+
outputReceivers = make([]*driver.AuditableIdentity, 0, len(recipients))
124127
}
125128
for i, receiver := range receivers {
126-
transferOutputMetadata.Receivers = append(transferOutputMetadata.Receivers, &driver.AuditableIdentity{
129+
outputReceivers = append(outputReceivers, &driver.AuditableIdentity{
127130
Identity: receiver,
128131
AuditInfo: receiversAuditInfo[i],
129132
})
130133
}
131134

132-
metadata.Outputs = append(metadata.Outputs, transferOutputMetadata)
135+
transferOutputsMetadata = append(transferOutputsMetadata, &driver.TransferOutputMetadata{
136+
OutputMetadata: outputMetadataRaw,
137+
OutputAuditInfo: outputAudiInfo,
138+
Receivers: outputReceivers,
139+
})
133140
}
134141

135-
// receiverIsSender := make([]bool, len(receivers))
136-
// for i, receiver := range receivers {
137-
// _, err = ws.OwnerWallet(receiver)
138-
// receiverIsSender[i] = err == nil
139-
// }
140-
//
141-
// s.Logger.Debugf("Transfer metadata: [out:%d, rec:%d]", len(metadata.OutputsMetadata), len(metadata.Receivers))
142-
143142
// return
144143
transfer := &TransferAction{
145144
Inputs: tokenIDs,
146145
InputTokens: inputs,
147146
Outputs: outs,
148147
Metadata: meta.TransferActionMetadata(opts.Attributes),
149148
}
149+
transferMetadata := &driver.TransferMetadata{
150+
Inputs: transferInputsMetadata,
151+
Outputs: transferOutputsMetadata,
152+
ExtraSigners: nil,
153+
}
150154

151-
return transfer, metadata, nil
155+
return transfer, transferMetadata, nil
152156
}
153157

154158
// VerifyTransfer checks the outputs in the TransferAction against the passed tokenInfos

token/core/zkatdlog/nogh/transfer.go

Lines changed: 37 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -144,27 +144,27 @@ func (s *TransferService) Transfer(ctx context.Context, txID string, _ driver.Ow
144144
// return for each output its information in the clear
145145
start := time.Now()
146146
span.AddEvent("start_generate_zk_transfer")
147-
action, outputMetadata, err := sender.GenerateZKTransfer(ctx, values, owners)
147+
transfer, outputsMetadata, err := sender.GenerateZKTransfer(ctx, values, owners)
148148
span.AddEvent("end_generate_zk_transfer")
149149
duration := time.Since(start)
150150
if err != nil {
151151
return nil, nil, errors.Wrapf(err, "failed to generate zkatdlog transfer action for txid [%s]", txID)
152152
}
153153
s.Metrics.zkTransferDuration.Observe(float64(duration.Milliseconds()))
154154

155-
// add transfer action's metadata
156-
action.Metadata = meta.TransferActionMetadata(opts.Attributes)
155+
// add transfer action's transferMetadata
156+
transfer.Metadata = meta.TransferActionMetadata(opts.Attributes)
157157

158158
// add upgrade witness
159-
action.InputUpgradeWitness = make([]*token.UpgradeWitness, len(action.InputTokens))
160-
for i := range action.InputTokens {
161-
action.InputUpgradeWitness[i] = prepareInputs[i].UpgradeWitness
159+
transfer.InputUpgradeWitness = make([]*token.UpgradeWitness, len(transfer.InputTokens))
160+
for i := range transfer.InputTokens {
161+
transfer.InputUpgradeWitness[i] = prepareInputs[i].UpgradeWitness
162162
}
163163

164-
// prepare metadata
164+
// prepare transferMetadata
165165
ws := s.WalletService
166166

167-
var inputsMetadata []*driver.TransferInputMetadata
167+
var transferInputsMetadata []*driver.TransferInputMetadata
168168
tokens := prepareInputs.Tokens()
169169
senderAuditInfos := make([][]byte, 0, len(tokens))
170170
for i, t := range tokens {
@@ -175,7 +175,7 @@ func (s *TransferService) Transfer(ctx context.Context, txID string, _ driver.Ow
175175
if len(auditInfo) == 0 {
176176
s.Logger.Errorf("empty audit info for the owner [%s] of the i^th token [%s]", tokenIDs[i], driver.Identity(t.Owner))
177177
}
178-
inputsMetadata = append(inputsMetadata, &driver.TransferInputMetadata{
178+
transferInputsMetadata = append(transferInputsMetadata, &driver.TransferInputMetadata{
179179
TokenID: tokenIDs[i],
180180
Senders: []*driver.AuditableIdentity{
181181
{
@@ -186,58 +186,65 @@ func (s *TransferService) Transfer(ctx context.Context, txID string, _ driver.Ow
186186
})
187187
}
188188

189-
var outputsMetadata []*driver.TransferOutputMetadata
189+
var transferOutputsMetadata []*driver.TransferOutputMetadata
190190
for i, output := range outputTokens {
191-
transferOutputMetadata := &driver.TransferOutputMetadata{}
191+
var outputAudiInfo []byte
192192
var receivers []driver.Identity
193193
var receiversAuditInfo [][]byte
194+
var outputReceivers []*driver.AuditableIdentity
195+
194196
if len(output.Owner) == 0 { // redeem
197+
outputAudiInfo = nil
195198
receivers = append(receivers, output.Owner)
196199
receiversAuditInfo = append(receiversAuditInfo, []byte{})
200+
outputReceivers = make([]*driver.AuditableIdentity, 0, 1)
197201
} else {
202+
outputAudiInfo, err = s.IdentityDeserializer.GetOwnerAuditInfo(output.Owner, ws)
203+
if err != nil {
204+
return nil, nil, errors.Wrapf(err, "failed getting audit info for sender identity [%s]", driver.Identity(output.Owner))
205+
}
198206
recipients, err := s.IdentityDeserializer.Recipients(output.Owner)
199207
if err != nil {
200208
return nil, nil, errors.Wrap(err, "failed getting recipients")
201209
}
202210
receivers = append(receivers, recipients...)
203211
for _, receiver := range receivers {
204-
auditInfo, err := s.IdentityDeserializer.GetOwnerAuditInfo(receiver, ws)
212+
receiverAudiInfo, err := s.IdentityDeserializer.GetOwnerAuditInfo(receiver, ws)
205213
if err != nil {
206-
return nil, nil, errors.Wrapf(err, "failed getting audit info for sender identity [%s]", driver.Identity(receiver))
214+
return nil, nil, errors.Wrapf(err, "failed getting audit info for receiver identity [%s]", receiver)
207215
}
208-
receiversAuditInfo = append(receiversAuditInfo, auditInfo)
216+
receiversAuditInfo = append(receiversAuditInfo, receiverAudiInfo)
209217
}
210-
auditInfo, err := s.IdentityDeserializer.GetOwnerAuditInfo(output.Owner, s.WalletService)
211-
if err != nil {
212-
return nil, nil, errors.Wrapf(err, "failed getting audit info for sender identity [%s]", driver.Identity(output.Owner).String())
213-
}
214-
transferOutputMetadata.OutputAuditInfo = auditInfo
218+
outputReceivers = make([]*driver.AuditableIdentity, 0, len(recipients))
215219
}
216-
for j, receiver := range receivers {
217-
transferOutputMetadata.Receivers = append(transferOutputMetadata.Receivers, &driver.AuditableIdentity{
220+
for i, receiver := range receivers {
221+
outputReceivers = append(outputReceivers, &driver.AuditableIdentity{
218222
Identity: receiver,
219-
AuditInfo: receiversAuditInfo[j],
223+
AuditInfo: receiversAuditInfo[i],
220224
})
221225
}
222226

223-
raw, err := outputMetadata[i].Serialize()
227+
outputMetadata, err := outputsMetadata[i].Serialize()
224228
if err != nil {
225229
return nil, nil, errors.WithMessage(err, "failed serializing token info for zkatdlog transfer action")
226230
}
227-
transferOutputMetadata.OutputMetadata = raw
228231

229-
outputsMetadata = append(outputsMetadata, transferOutputMetadata)
232+
transferOutputsMetadata = append(transferOutputsMetadata, &driver.TransferOutputMetadata{
233+
OutputMetadata: outputMetadata,
234+
OutputAuditInfo: outputAudiInfo,
235+
Receivers: outputReceivers,
236+
})
230237
}
231238

232-
s.Logger.Debugf("Transfer Action Prepared [id:%s,ins:%d:%d,outs:%d]", txID, len(tokenIDs), len(senderAuditInfos), action.NumOutputs())
239+
s.Logger.Debugf("Transfer Action Prepared [id:%s,ins:%d:%d,outs:%d]", txID, len(tokenIDs), len(senderAuditInfos), transfer.NumOutputs())
233240

234-
metadata := &driver.TransferMetadata{
235-
Inputs: inputsMetadata,
236-
Outputs: outputsMetadata,
241+
transferMetadata := &driver.TransferMetadata{
242+
Inputs: transferInputsMetadata,
243+
Outputs: transferOutputsMetadata,
237244
ExtraSigners: nil,
238245
}
239246

240-
return action, metadata, nil
247+
return transfer, transferMetadata, nil
241248
}
242249

243250
// VerifyTransfer checks the outputs in the TransferActionMetadata against the passed metadata

token/metadata.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,9 +115,12 @@ func (m *Metadata) FilterBy(eIDs ...string) (*Metadata, error) {
115115
return nil, errors.Wrap(err, "failed getting enrollment ID")
116116
}
117117
if eIDSet.Contains(recipientEID) {
118+
logger.Debugf("eid [%s] found in list [%v]", recipientEID, eIDs)
118119
skip = false
119120
found = true
120121
break
122+
} else {
123+
logger.Debugf("eid [%s] not found in list [%v]", recipientEID, eIDs)
121124
}
122125
}
123126
if found {

token/services/identity/msp/x509/deserializer.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,5 +73,6 @@ func (a *AuditInfoDeserializer) DeserializeAuditInfo(raw []byte) (driver2.AuditI
7373
if err != nil {
7474
return nil, errors.Wrapf(err, "failed to unmarshal")
7575
}
76+
logger.Debugf("audit info [%s]", string(raw))
7677
return ai, nil
7778
}

0 commit comments

Comments
 (0)