@@ -56,18 +56,24 @@ const (
5656)
5757
5858type Env struct {
59- Engine * validator.Validator
60- inputsForTransfer []* tokn.Token
61- inputsForRedeem []* tokn.Token
62- Sender * transfer.Sender
59+ Engine * validator.Validator
6360
6461 TRWithTransferTxID string
6562 TRWithTransfer * driver.TokenRequest
6663 TRWithTransferRaw []byte
6764
68- TRWithRedeem * driver.TokenRequest
69- TRWithIssue * driver.TokenRequest
70- TRWithSwap * driver.TokenRequest
65+ TRWithRedeem * driver.TokenRequest
66+ TRWithRedeemTxID string
67+ TRWithRedeemRaw []byte
68+
69+ TRWithIssue * driver.TokenRequest
70+ TRWithIssueTxID string
71+ TRWithIssueRaw []byte
72+
73+ Sender * transfer.Sender
74+ TRWithSwap * driver.TokenRequest
75+ TRWithSwapTxID string
76+ TRWithSwapRaw []byte
7177}
7278
7379// SaveTransferToFile writes TRWithTransferTxID and TRWithTransferRaw (base64-encoded)
@@ -100,9 +106,6 @@ func NewEnv(benchCase *benchmark2.Case, configurations *benchmark.SetupConfigura
100106 var (
101107 engine * validator.Validator
102108
103- inputsForRedeem []* tokn.Token
104- inputsForTransfer []* tokn.Token
105-
106109 sender * transfer.Sender
107110 auditor * audit.Auditor
108111
@@ -157,71 +160,57 @@ func NewEnv(benchCase *benchmark2.Case, configurations *benchmark.SetupConfigura
157160 if err != nil {
158161 return nil , err
159162 }
160-
161- // prepare redeem
162- _ , rr , _ , inputsForRedeem , err = prepareRedeemRequest (benchCase , pp , auditor , setupConfiguration )
163+ irRaw , err := ir .Bytes ()
163164 if err != nil {
164165 return nil , err
165166 }
166167
167- // prepare transfer
168- var trmetadata * driver.TokenRequestMetadata
169- sender , tr , trmetadata , inputsForTransfer , err = prepareTransferRequest (benchCase , pp , auditor , oID )
168+ // prepare redeem
169+ _ , rr , _ , _ , err = prepareRedeemRequest (benchCase , pp , auditor , setupConfiguration )
170170 if err != nil {
171171 return nil , err
172172 }
173- transferRaw , err := tr .Bytes ()
173+ rrRaw , err := rr .Bytes ()
174174 if err != nil {
175175 return nil , err
176176 }
177177
178- // atomic action request
179- ar = & driver.TokenRequest {Transfers : tr .Transfers }
180- raw , err := ar .MarshalToMessageToSign ([]byte ("2" ))
178+ // prepare transfer
179+ _ , tr , _ , _ , err = prepareTransferRequest (benchCase , pp , auditor , oID )
181180 if err != nil {
182181 return nil , err
183182 }
184-
185- // Sender signs request
186- signatures , err := sender .SignTokenActions (raw )
183+ transferRaw , err := tr .Bytes ()
187184 if err != nil {
188185 return nil , err
189186 }
190187
191- // auditor inspect token
192- metadata := & driver.TokenRequestMetadata {}
193- metadata .Transfers = []* driver.TransferMetadata {trmetadata .Transfers [0 ]}
194-
195- tokns := make ([][]* tokn.Token , 1 )
196- for i := range benchCase .NumInputs {
197- tokns [0 ] = append (tokns [0 ], inputsForTransfer [i ])
198- }
199- err = auditor .Check (context .Background (), ar , metadata , tokns , "2" )
188+ // atomic action request
189+ sender , ar , _ , _ , err = prepareSwapRequest (benchCase , pp , auditor , oID )
200190 if err != nil {
201191 return nil , err
202192 }
203- sigma , err := auditor . Endorse ( ar , "2" )
193+ arRaw , err := ar . Bytes ( )
204194 if err != nil {
205195 return nil , err
206196 }
207- ar .AuditorSignatures = append (ar .AuditorSignatures , & driver.AuditorSignature {
208- Identity : pp .Auditors ()[0 ],
209- Signature : sigma ,
210- })
211-
212- ar .Signatures = append (ar .Signatures , signatures ... )
213197
214198 return & Env {
215- TRWithIssue : ir ,
199+ Engine : engine ,
200+ Sender : sender ,
201+
202+ TRWithTransferTxID : "1" ,
216203 TRWithTransfer : tr ,
217- Engine : engine ,
218- inputsForTransfer : inputsForTransfer ,
219- inputsForRedeem : inputsForRedeem ,
204+ TRWithTransferRaw : transferRaw ,
220205 TRWithRedeem : rr ,
206+ TRWithRedeemTxID : "1" ,
207+ TRWithRedeemRaw : rrRaw ,
208+ TRWithIssue : ir ,
209+ TRWithIssueTxID : "1" ,
210+ TRWithIssueRaw : irRaw ,
221211 TRWithSwap : ar ,
222- Sender : sender ,
223- TRWithTransferRaw : transferRaw ,
224- TRWithTransferTxID : "1" ,
212+ TRWithSwapTxID : "2" ,
213+ TRWithSwapRaw : arRaw ,
225214 }, nil
226215}
227216
@@ -290,6 +279,65 @@ func prepareTransferRequest(benchCase *benchmark2.Case, pp *v1.PublicParams, aud
290279 )
291280}
292281
282+ func prepareSwapRequest (benchCase * benchmark2.Case , pp * v1.PublicParams , auditor * audit.Auditor , oID * benchmark.OwnerIdentity ) (* transfer.Sender , * driver.TokenRequest , * driver.TokenRequestMetadata , []* tokn.Token , error ) {
283+ sender1 , tr1 , trmetadata1 , inputsForTransfer1 , err := prepareTransferRequest (benchCase , pp , auditor , oID )
284+ if err != nil {
285+ return nil , nil , nil , nil , err
286+ }
287+ sender2 , tr2 , trmetadata2 , inputsForTransfer2 , err := prepareTransferRequest (benchCase , pp , auditor , oID )
288+ if err != nil {
289+ return nil , nil , nil , nil , err
290+ }
291+ //
292+ ar := & driver.TokenRequest {Transfers : append (tr1 .Transfers , tr2 .Transfers ... )}
293+ raw , err := ar .MarshalToMessageToSign ([]byte ("2" ))
294+ if err != nil {
295+ return nil , nil , nil , nil , err
296+ }
297+
298+ // Sender signs request
299+ sender1Signatures , err := sender1 .SignTokenActions (raw )
300+ if err != nil {
301+ return nil , nil , nil , nil , err
302+ }
303+ sender2Signatures , err := sender2 .SignTokenActions (raw )
304+ if err != nil {
305+ return nil , nil , nil , nil , err
306+ }
307+
308+ // auditor inspect token
309+ metadata := & driver.TokenRequestMetadata {}
310+ metadata .Transfers = []* driver.TransferMetadata {
311+ trmetadata1 .Transfers [0 ],
312+ trmetadata2 .Transfers [0 ],
313+ }
314+
315+ tokns := make ([][]* tokn.Token , 2 )
316+ for i := range benchCase .NumInputs {
317+ tokns [0 ] = append (tokns [0 ], inputsForTransfer1 [i ])
318+ }
319+ for i := range benchCase .NumInputs {
320+ tokns [1 ] = append (tokns [1 ], inputsForTransfer2 [i ])
321+ }
322+ err = auditor .Check (context .Background (), ar , metadata , tokns , "2" )
323+ if err != nil {
324+ return nil , nil , nil , nil , err
325+ }
326+ sigma , err := auditor .Endorse (ar , "2" )
327+ if err != nil {
328+ return nil , nil , nil , nil , err
329+ }
330+ ar .AuditorSignatures = append (ar .AuditorSignatures , & driver.AuditorSignature {
331+ Identity : pp .Auditors ()[0 ],
332+ Signature : sigma ,
333+ })
334+
335+ ar .Signatures = append (ar .Signatures , sender1Signatures ... )
336+ ar .Signatures = append (ar .Signatures , sender2Signatures ... )
337+
338+ return sender1 , ar , metadata , nil , nil
339+ }
340+
293341func prepareTokens (values , bf []* math.Zr , tokenType string , pp []* math.G1 , curve * math.Curve ) []* math.G1 {
294342 tokens := make ([]* math.G1 , len (values ))
295343 for i := range values {
0 commit comments