@@ -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
3940type 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
4792func 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