@@ -9,6 +9,7 @@ package nogh
99import (
1010 errors2 "errors"
1111
12+ "github.com/hyperledger-labs/fabric-smart-client/platform/common/utils"
1213 "github.com/hyperledger-labs/fabric-token-sdk/token/core/common"
1314 fabtoken2 "github.com/hyperledger-labs/fabric-token-sdk/token/core/fabtoken"
1415 "github.com/hyperledger-labs/fabric-token-sdk/token/core/zkatdlog/crypto"
@@ -21,6 +22,12 @@ import (
2122 "github.com/pkg/errors"
2223)
2324
25+ var precisions = map [token.Format ]uint64 {
26+ utils .MustGet (fabtoken2 .SupportedTokenFormat (16 )): 16 ,
27+ utils .MustGet (fabtoken2 .SupportedTokenFormat (32 )): 32 ,
28+ utils .MustGet (fabtoken2 .SupportedTokenFormat (64 )): 64 ,
29+ }
30+
2431type TokensService struct {
2532 * common.TokensService
2633 PublicParametersManager common.PublicParametersManager [* crypto.PublicParams ]
@@ -172,44 +179,18 @@ func (s *TokensService) ProcessTokensUpgradeRequest(utp *driver.TokenUpgradeRequ
172179 return nil , nil , errors .New ("invalid upgrade proof" )
173180 }
174181
175- var tokenTypes []token.Type
176- var tokenValue []uint64
182+ tokenTypes := make ( []token.Type , len ( utp . Tokens ))
183+ tokenValue := make ( []uint64 , len ( utp . Tokens ))
177184
178- // which types do we recognize? Any other type is not convertable
179- fabtoken16Type , err := fabtoken2 .SupportedTokenFormat (16 )
180- if err != nil {
181- return nil , nil , errors .Wrap (err , "failed to get fabtoken type" )
182- }
183- fabtoken32Type , err := fabtoken2 .SupportedTokenFormat (32 )
184- if err != nil {
185- return nil , nil , errors .Wrap (err , "failed to get fabtoken type" )
186- }
187- fabtoken64Type , err := fabtoken2 .SupportedTokenFormat (64 )
188- if err != nil {
189- return nil , nil , errors .Wrap (err , "failed to get fabtoken type" )
190- }
191-
192- for _ , tok := range utp .Tokens {
193- var tokenType token.Type
194- var q uint64
195- var err error
196-
197- switch tok .Format {
198- case fabtoken16Type :
199- tokenType , q , err = s .checkFabtokenToken (& tok , 16 )
200- case fabtoken32Type :
201- tokenType , q , err = s .checkFabtokenToken (& tok , 32 )
202- case fabtoken64Type :
203- tokenType , q , err = s .checkFabtokenToken (& tok , 64 )
204- default :
185+ for i , tok := range utp .Tokens {
186+ precision , ok := precisions [tok .Format ]
187+ if ! ok {
205188 return nil , nil , errors .Errorf ("unsupported token format [%s]" , tok .Format )
206189 }
190+ tokenTypes [i ], tokenValue [i ], err = s .checkFabtokenToken (& tok , precision )
207191 if err != nil {
208192 return nil , nil , errors .Wrap (err , "failed to check unspent tokens" )
209193 }
210-
211- tokenTypes = append (tokenTypes , tokenType )
212- tokenValue = append (tokenValue , q )
213194 }
214195 return tokenTypes , tokenValue , nil
215196}
0 commit comments