Skip to content

Commit ea23c4b

Browse files
committed
Making Params on the fly
Signed-off-by: Effi-S <effi.szt@gmail.com>
1 parent 5d72f88 commit ea23c4b

4 files changed

Lines changed: 74 additions & 89 deletions

File tree

token/core/zkatdlog/nogh/v1/validator/bench/transfer_service/proof_data.go

Lines changed: 0 additions & 51 deletions
This file was deleted.
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
/*
2+
Copyright IBM Corp All Rights Reserved.
3+
4+
SPDX-License-Identifier: Apache-2.0
5+
*/
6+
package bench
7+
8+
type TokenData struct {
9+
TokenRequestRaw []byte `json:"token_request_raw"`
10+
TxID string `json:"tx_id"`
11+
}

token/core/zkatdlog/nogh/v1/validator/bench/transfer_service/transfer_bench_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ func BenchmarkTransferService(b *testing.B) {
8181
f := &TransferServiceViewFactory{}
8282
pool, params := CreateViewsWithProofs(b, "", f, defaultNumViews)
8383

84-
b.Run(fmt.Sprintf("out-tokens=%din-tokens=%d", params[0].NumOutputs, params[0].NumInputs), func(b *testing.B) {
84+
b.Run(fmt.Sprintf("out-tokens=%din-tokens=%d", params[0].NumOutputs(), params[0].NumInputs()), func(b *testing.B) {
8585
b.ResetTimer()
8686
b.RunParallel(func(pb *testing.PB) {
8787
for pb.Next() {

token/core/zkatdlog/nogh/v1/validator/bench/transfer_service/transfer_service_bench.go

Lines changed: 62 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import (
2424
"github.com/hyperledger-labs/fabric-token-sdk/token/core"
2525
fabtoken "github.com/hyperledger-labs/fabric-token-sdk/token/core/fabtoken/v1/driver"
2626
dlog "github.com/hyperledger-labs/fabric-token-sdk/token/core/zkatdlog/nogh/v1/driver"
27+
v1setup "github.com/hyperledger-labs/fabric-token-sdk/token/core/zkatdlog/nogh/v1/setup"
2728
tk "github.com/hyperledger-labs/fabric-token-sdk/token/token"
2829
)
2930

@@ -37,11 +38,55 @@ var (
3738
)
3839

3940
type trandferServiceParams struct {
40-
OutputPath string `json:"test_root_path,omitempty"`
41-
CurveID string `json:"curve_id,omitempty"`
42-
NumInputs int `json:"num_inputs"`
43-
NumOutputs int `json:"num_outputs"`
44-
WiredTokenData *WireTokenData `json:"proof,omitempty"`
41+
OutputPath string `json:"test_root_path,omitempty"`
42+
TokenData *TokenData `json:"proof,omitempty"`
43+
}
44+
45+
func (p *trandferServiceParams) PublicParamsRaw() ([]byte, error) {
46+
paramsTxt := filepath.Join(filepath.Dir(filepath.Dir(p.OutputPath)), "params.txt")
47+
raw, err := os.ReadFile(paramsTxt)
48+
if err != nil {
49+
return nil, fmt.Errorf("failed to read params file %s: %w", paramsTxt, err)
50+
}
51+
ppRaw, err := base64.StdEncoding.DecodeString(strings.TrimSpace(string(raw)))
52+
if err != nil {
53+
return nil, fmt.Errorf("failed to base64-decode params file: %w", err)
54+
}
55+
return ppRaw, nil
56+
}
57+
58+
func (p *trandferServiceParams) PublicParams() (*v1setup.PublicParams, error) {
59+
ppRaw, err := p.PublicParamsRaw()
60+
if err != nil {
61+
return nil, err
62+
}
63+
return v1setup.NewPublicParamsFromBytes(ppRaw, v1setup.DLogNoGHDriverName, v1setup.ProtocolV1)
64+
}
65+
66+
func (p *trandferServiceParams) NumInputs() int {
67+
subDir := filepath.Base(filepath.Dir(p.OutputPath))
68+
if m := regexp.MustCompile(`_i(\d+)_o(\d+)$`).FindStringSubmatch(subDir); len(m) == 3 {
69+
n, _ := strconv.Atoi(m[1])
70+
return n
71+
}
72+
return 0
73+
}
74+
75+
func (p *trandferServiceParams) NumOutputs() int {
76+
subDir := filepath.Base(filepath.Dir(p.OutputPath))
77+
if m := regexp.MustCompile(`_i(\d+)_o(\d+)$`).FindStringSubmatch(subDir); len(m) == 3 {
78+
n, _ := strconv.Atoi(m[2])
79+
return n
80+
}
81+
return 0
82+
}
83+
84+
func (p *trandferServiceParams) CurveID() string {
85+
dirName := filepath.Base(filepath.Dir(filepath.Dir(p.OutputPath)))
86+
if parts := strings.SplitN(dirName, "-", 2); len(parts) == 2 {
87+
return parts[1]
88+
}
89+
return ""
4590
}
4691

4792
func NewTokenTransferVerifyParamsSlice(TestRootPath string) []*trandferServiceParams {
@@ -60,37 +105,19 @@ func NewTokenTransferVerifyParamsSlice(TestRootPath string) []*trandferServicePa
60105
panic(fmt.Errorf("failed to base64-decode params.txt: %w", err))
61106
}
62107

63-
dirName := filepath.Base(filepath.Dir(TestRootPath))
64-
var curveID string
65-
if parts := strings.SplitN(dirName, "-", 2); len(parts) == 2 {
66-
curveID = parts[1]
67-
}
68-
69-
var numInputs, numOutputs int
70-
subDir := filepath.Base(TestRootPath)
71-
if m := regexp.MustCompile(`_i(\d+)_o(\d+)$`).FindStringSubmatch(subDir); len(m) == 3 {
72-
numInputs, _ = strconv.Atoi(m[1])
73-
numOutputs, _ = strconv.Atoi(m[2])
74-
}
75-
76108
outPaths, err := os.ReadDir(TestRootPath)
77109
if err != nil {
78110
panic(err)
79111
}
80112
ret := make([]*trandferServiceParams, len(outPaths))
81113
for i, outPath := range outPaths {
82-
ret[i] = newTokenTransferVerifyParams(filepath.Join(TestRootPath, outPath.Name()), curveID, numInputs, numOutputs, ppRaw)
114+
ret[i] = newTokenTransferVerifyParams(filepath.Join(TestRootPath, outPath.Name()), ppRaw)
83115
}
84116

85117
return ret
86118
}
87119

88-
func newTokenTransferVerifyParams(outputPath string,
89-
curveID string,
90-
numInputs int,
91-
numOutputs int,
92-
ppRaw []byte,
93-
) *trandferServiceParams {
120+
func newTokenTransferVerifyParams(outputPath string, ppRaw []byte) *trandferServiceParams {
94121
outputRaw, err := os.ReadFile(outputPath)
95122
if err != nil {
96123
panic(fmt.Errorf("failed to read %s: %w", outputPath, err))
@@ -106,11 +133,7 @@ func newTokenTransferVerifyParams(outputPath string,
106133

107134
return &trandferServiceParams{
108135
OutputPath: outputPath,
109-
CurveID: curveID,
110-
NumInputs: numInputs,
111-
NumOutputs: numOutputs,
112-
WiredTokenData: &WireTokenData{
113-
PubParamsRaw: ppRaw,
136+
TokenData: &TokenData{
114137
TokenRequestRaw: tokenData.ReqRaw,
115138
TxID: tokenData.TXID,
116139
},
@@ -191,16 +214,18 @@ func (c *TransferServiceViewFactory) NewView(in []byte) (view.View, error) {
191214
if err := json.Unmarshal(in, &f.params); err != nil {
192215
return nil, err
193216
}
194-
if f.params.WiredTokenData != nil {
195-
tokenData, err := f.params.WiredTokenData.Deserialize()
196-
if err != nil {
197-
return nil, fmt.Errorf("failed to unmarshal wire proof: %w", err)
198-
}
199-
f.tokenData = tokenData
217+
if f.params.TokenData != nil {
218+
219+
f.tokenData = f.params.TokenData
200220

201221
var initErr error
202222
once.Do(func() {
203-
cachedValidator, initErr = newTokenValidator(f.params.WiredTokenData.PubParamsRaw)
223+
ppRaw, err := f.params.PublicParamsRaw()
224+
if err != nil {
225+
initErr = err
226+
} else {
227+
cachedValidator, initErr = newTokenValidator(ppRaw)
228+
}
204229
})
205230
if initErr != nil {
206231
return nil, fmt.Errorf("failed to create token validator: %w", initErr)

0 commit comments

Comments
 (0)