Skip to content

Commit 46eb8b9

Browse files
committed
refacto request and metadata internals
Signed-off-by: Angelo De Caro <adc@zurich.ibm.com>
1 parent 6e50a79 commit 46eb8b9

33 files changed

Lines changed: 998 additions & 608 deletions

token/core/common/validator_test.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import (
1414

1515
"github.com/hyperledger-labs/fabric-token-sdk/token/driver"
1616
dmock "github.com/hyperledger-labs/fabric-token-sdk/token/driver/mock"
17+
"github.com/hyperledger-labs/fabric-token-sdk/token/driver/protos-go/v1/request"
1718
"github.com/hyperledger-labs/fabric-token-sdk/token/services/logging"
1819
"github.com/stretchr/testify/assert"
1920
"github.com/stretchr/testify/require"
@@ -218,7 +219,9 @@ func TestValidatorWithCounterfeiter(t *testing.T) {
218219

219220
t.Run("VerifyTokenRequestFromRaw", func(t *testing.T) {
220221
tr := &driver.TokenRequest{
221-
Issues: [][]byte{[]byte("issue1")},
222+
Actions: []*driver.TypedAction{
223+
{Type: request.ActionType_ACTION_TYPE_ISSUE, Raw: []byte("issue1")},
224+
},
222225
Signatures: []*driver.RequestSignature{
223226
{
224227
Auditor: &driver.AuditorSignature{

token/core/fabtoken/protos-go/v1/actions/ftactions.pb.go

Lines changed: 4 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

token/core/fabtoken/protos-go/v1/pp/ftpp.pb.go

Lines changed: 4 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

token/core/fabtoken/v1/auditor_test.go

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313
v1 "github.com/hyperledger-labs/fabric-token-sdk/token/core/fabtoken/v1"
1414
"github.com/hyperledger-labs/fabric-token-sdk/token/core/fabtoken/v1/actions"
1515
"github.com/hyperledger-labs/fabric-token-sdk/token/driver"
16+
"github.com/hyperledger-labs/fabric-token-sdk/token/driver/protos-go/v1/request"
1617
benchmark2 "github.com/hyperledger-labs/fabric-token-sdk/token/services/benchmark"
1718
"github.com/hyperledger-labs/fabric-token-sdk/token/token"
1819
"github.com/stretchr/testify/require"
@@ -114,23 +115,28 @@ func newAuditEnv(benchmarkCase *benchmark2.Case) (*auditEnv, error) {
114115
}
115116

116117
request := &driver.TokenRequest{
117-
Issues: [][]byte{rawAction},
118+
Actions: []*driver.TypedAction{
119+
{Type: request.ActionType_ACTION_TYPE_ISSUE, Raw: rawAction},
120+
},
118121
}
119122

120123
metadata := &driver.TokenRequestMetadata{
121-
Issues: []*driver.IssueMetadata{
124+
Actions: []*driver.ActionMetadataEntry{
122125
{
123-
Issuer: driver.AuditableIdentity{
124-
Identity: []byte("issuer"),
125-
AuditInfo: []byte("audit-info"),
126-
},
127-
Outputs: []*driver.IssueOutputMetadata{
128-
{
129-
OutputMetadata: []byte("token-metadata"),
130-
Receivers: []*driver.AuditableIdentity{
131-
{
132-
Identity: []byte("owner"),
133-
AuditInfo: []byte("audit-info"),
126+
ActionID: 0,
127+
IssueMetadata: &driver.IssueMetadata{
128+
Issuer: driver.AuditableIdentity{
129+
Identity: []byte("issuer"),
130+
AuditInfo: []byte("audit-info"),
131+
},
132+
Outputs: []*driver.IssueOutputMetadata{
133+
{
134+
OutputMetadata: []byte("token-metadata"),
135+
Receivers: []*driver.AuditableIdentity{
136+
{
137+
Identity: []byte("owner"),
138+
AuditInfo: []byte("audit-info"),
139+
},
134140
},
135141
},
136142
},

token/core/fabtoken/v1/validator/validator.go

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,19 +23,21 @@ type ValidateAuditingFunc = common.ValidateAuditingFunc[*setup.PublicParams, *ac
2323
type ActionDeserializer struct{}
2424

2525
func (a *ActionDeserializer) DeserializeActions(tr *driver.TokenRequest) ([]*actions.IssueAction, []*actions.TransferAction, error) {
26-
issueActions := make([]*actions.IssueAction, len(tr.Issues))
27-
for i := range len(tr.Issues) {
26+
issues := tr.GetIssues()
27+
issueActions := make([]*actions.IssueAction, len(issues))
28+
for i := range issues {
2829
ia := &actions.IssueAction{}
29-
if err := ia.Deserialize(tr.Issues[i]); err != nil {
30+
if err := ia.Deserialize(issues[i]); err != nil {
3031
return nil, nil, err
3132
}
3233
issueActions[i] = ia
3334
}
3435

35-
transferActions := make([]*actions.TransferAction, len(tr.Transfers))
36-
for i := range len(tr.Transfers) {
36+
transfers := tr.GetTransfers()
37+
transferActions := make([]*actions.TransferAction, len(transfers))
38+
for i := range transfers {
3739
ta := &actions.TransferAction{}
38-
if err := ta.Deserialize(tr.Transfers[i]); err != nil {
40+
if err := ta.Deserialize(transfers[i]); err != nil {
3941
return nil, nil, err
4042
}
4143
transferActions[i] = ta

token/core/fabtoken/v1/validator/validator_test.go

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import (
1919
validator2 "github.com/hyperledger-labs/fabric-token-sdk/token/core/zkatdlog/nogh/v1/validator"
2020
"github.com/hyperledger-labs/fabric-token-sdk/token/driver"
2121
"github.com/hyperledger-labs/fabric-token-sdk/token/driver/mock"
22+
"github.com/hyperledger-labs/fabric-token-sdk/token/driver/protos-go/v1/request"
2223
benchmark2 "github.com/hyperledger-labs/fabric-token-sdk/token/services/benchmark"
2324
"github.com/hyperledger-labs/fabric-token-sdk/token/services/identity"
2425
"github.com/hyperledger-labs/fabric-token-sdk/token/services/identity/x509"
@@ -47,7 +48,9 @@ func TestActionDeserializer_DeserializeActions(t *testing.T) {
4748
require.NoError(t, err)
4849

4950
tr := &driver.TokenRequest{
50-
Issues: [][]byte{ia1Bytes},
51+
Actions: []*driver.TypedAction{
52+
{Type: request.ActionType_ACTION_TYPE_ISSUE, Raw: ia1Bytes},
53+
},
5154
}
5255
ia, ta, err := ad.DeserializeActions(tr)
5356
require.NoError(t, err)
@@ -62,7 +65,9 @@ func TestActionDeserializer_DeserializeActions(t *testing.T) {
6265
require.NoError(t, err)
6366

6467
tr := &driver.TokenRequest{
65-
Transfers: [][]byte{ta1Bytes},
68+
Actions: []*driver.TypedAction{
69+
{Type: request.ActionType_ACTION_TYPE_TRANSFER, Raw: ta1Bytes},
70+
},
6671
}
6772
ia, ta, err := ad.DeserializeActions(tr)
6873
require.NoError(t, err)
@@ -73,15 +78,19 @@ func TestActionDeserializer_DeserializeActions(t *testing.T) {
7378

7479
t.Run("IssueDeserializeError", func(t *testing.T) {
7580
tr := &driver.TokenRequest{
76-
Issues: [][]byte{[]byte("invalid")},
81+
Actions: []*driver.TypedAction{
82+
{Type: request.ActionType_ACTION_TYPE_ISSUE, Raw: []byte("invalid")},
83+
},
7784
}
7885
_, _, err := ad.DeserializeActions(tr)
7986
require.Error(t, err)
8087
})
8188

8289
t.Run("TransferDeserializeError", func(t *testing.T) {
8390
tr := &driver.TokenRequest{
84-
Transfers: [][]byte{[]byte("invalid")},
91+
Actions: []*driver.TypedAction{
92+
{Type: request.ActionType_ACTION_TYPE_TRANSFER, Raw: []byte("invalid")},
93+
},
8594
}
8695
_, _, err := ad.DeserializeActions(tr)
8796
require.Error(t, err)
@@ -1127,7 +1136,9 @@ func newValidatorEnv(benchmarkCase *benchmark2.Case, isIssue bool) (*validatorEn
11271136
if err != nil {
11281137
return nil, err
11291138
}
1130-
tr.Issues = [][]byte{rawIA}
1139+
tr.Actions = []*driver.TypedAction{
1140+
{Type: request.ActionType_ACTION_TYPE_ISSUE, Raw: rawIA},
1141+
}
11311142
tr.Signatures = []*driver.RequestSignature{
11321143
{Action: &driver.ActionSignature{Signature: []byte("signature")}},
11331144
}
@@ -1156,7 +1167,9 @@ func newValidatorEnv(benchmarkCase *benchmark2.Case, isIssue bool) (*validatorEn
11561167
if err != nil {
11571168
return nil, err
11581169
}
1159-
tr.Transfers = [][]byte{rawTA}
1170+
tr.Actions = []*driver.TypedAction{
1171+
{Type: request.ActionType_ACTION_TYPE_TRANSFER, Raw: rawTA},
1172+
}
11601173
for range benchmarkCase.NumInputs {
11611174
tr.Signatures = append(tr.Signatures, &driver.RequestSignature{
11621175
Action: &driver.ActionSignature{Signature: []byte("signature")},

token/core/zkatdlog/nogh/protos-go/v1/actions/noghactions.pb.go

Lines changed: 4 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

token/core/zkatdlog/nogh/protos-go/v1/math/noghmath.pb.go

Lines changed: 3 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

token/core/zkatdlog/nogh/protos-go/v1/pp/noghpp.pb.go

Lines changed: 4 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

token/core/zkatdlog/nogh/v1/audit/auditor.go

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -124,8 +124,18 @@ func (a *Auditor) Check(
124124
) error {
125125
// TODO: inputTokens should be checked against the actions
126126
// De-obfuscate issue requests
127-
a.Logger.DebugfContext(ctx, "Get audit info for %d issues", len(tokenRequest.Issues))
128-
outputsFromIssue, identitiesFromIssue, err := a.GetAuditInfoForIssues(tokenRequest.Issues, tokenRequestMetadata.Issues)
127+
issues := tokenRequest.GetIssues()
128+
a.Logger.DebugfContext(ctx, "Get audit info for %d issues", len(issues))
129+
130+
// Extract issue metadata
131+
issueMetadata := make([]*driver.IssueMetadata, 0)
132+
for _, action := range tokenRequestMetadata.Actions {
133+
if action.IssueMetadata != nil {
134+
issueMetadata = append(issueMetadata, action.IssueMetadata)
135+
}
136+
}
137+
138+
outputsFromIssue, identitiesFromIssue, err := a.GetAuditInfoForIssues(issues, issueMetadata)
129139
if err != nil {
130140
return errors.Wrapf(err, "failed getting audit info for issues for [%s]", txID)
131141
}
@@ -143,8 +153,18 @@ func (a *Auditor) Check(
143153
}
144154
}
145155
// De-obfuscate transfer requests
146-
a.Logger.DebugfContext(ctx, "Get audit info for %d transfers", len(tokenRequest.Transfers))
147-
auditableInputs, outputsFromTransfer, err := a.GetAuditInfoForTransfers(tokenRequest.Transfers, tokenRequestMetadata.Transfers, inputTokens)
156+
transfers := tokenRequest.GetTransfers()
157+
a.Logger.DebugfContext(ctx, "Get audit info for %d transfers", len(transfers))
158+
159+
// Extract transfer metadata
160+
transferMetadata := make([]*driver.TransferMetadata, 0)
161+
for _, action := range tokenRequestMetadata.Actions {
162+
if action.TransferMetadata != nil {
163+
transferMetadata = append(transferMetadata, action.TransferMetadata)
164+
}
165+
}
166+
167+
auditableInputs, outputsFromTransfer, err := a.GetAuditInfoForTransfers(transfers, transferMetadata, inputTokens)
148168
if err != nil {
149169
return errors.Wrapf(err, "failed getting audit info for transfers for [%s]", txID)
150170
}

0 commit comments

Comments
 (0)