@@ -7,25 +7,30 @@ SPDX-License-Identifier: Apache-2.0
77package pp
88
99import (
10- "fmt"
11- "reflect"
12-
10+ "github.com/hyperledger-labs/fabric-smart-client/pkg/utils/errors"
1311 "github.com/hyperledger-labs/fabric-smart-client/platform/common/driver"
14- "github.com/hyperledger-labs/fabric-smart-client/platform/view/services "
12+ "github.com/hyperledger-labs/fabric-smart-client/platform/fabricx/core/vault/queryservice "
1513 "github.com/hyperledger-labs/fabric-token-sdk/token"
1614 "github.com/hyperledger-labs/fabric-token-sdk/token/services/logging"
15+ "github.com/hyperledger-labs/fabric-token-sdk/token/services/network/common/rws/keys"
1716)
1817
1918var logger = logging .MustGetLogger ()
2019
2120// PublicParametersService models a service for fetching and loading public parameters.
2221type PublicParametersService struct {
2322 tmsProvider * token.ManagementServiceProvider
23+ qsProvider queryservice.Provider
24+ translator * keys.Translator
2425}
2526
2627// NewPublicParametersService returns a new PublicParametersService instance.
27- func NewPublicParametersService (tmsProvider * token.ManagementServiceProvider ) * PublicParametersService {
28- return & PublicParametersService {tmsProvider : tmsProvider }
28+ func NewPublicParametersService (tmsProvider * token.ManagementServiceProvider , qsProvider queryservice.Provider ) * PublicParametersService {
29+ return & PublicParametersService {
30+ tmsProvider : tmsProvider ,
31+ qsProvider : qsProvider ,
32+ translator : & keys.Translator {},
33+ }
2934}
3035
3136// LoadPublicParams loads the public parameters for the given TMS ID.
@@ -35,31 +40,27 @@ func (f *PublicParametersService) LoadPublicParams(tmsID token.TMSID, ppRaw []by
3540
3641// Fetch returns the public parameters for the given network, channel, and namespace.
3742func (f * PublicParametersService ) Fetch (network driver.Network , channel driver.Channel , namespace driver.Namespace ) ([]byte , error ) {
38- tmsID := token.TMSID {
39- Network : network ,
40- Channel : channel ,
41- Namespace : namespace ,
43+ qs , err := f .qsProvider .Get (network , channel )
44+ if err != nil {
45+ return nil , errors .Wrapf (err , "failed getting query service" )
4246 }
43- logger .Infof ("Fetch public params for [%s]" , tmsID )
44- tms , err := f .tmsProvider .GetManagementService (token .WithTMSID (tmsID ))
47+ k , err := f .translator .CreateSetupKey ()
4548 if err != nil {
46- return nil , fmt .Errorf ("tms [%s] not found: %w" , tmsID , err )
49+ return nil , errors .Wrapf (err , "failed creating setup key" )
50+ }
51+ value , err := qs .GetState (namespace , k )
52+ if err != nil {
53+ return nil , errors .Wrapf (err , "failed getting state" )
54+ }
55+ if value == nil {
56+ return nil , nil
4757 }
4858
49- return tms . PublicParametersManager (). PublicParameters (). Serialize ()
59+ return value . Raw , nil
5060}
5161
5262// Loader models a loader for public parameters.
5363type Loader interface {
5464 // LoadPublicParams loads the public parameters for the given TMS ID.
5565 LoadPublicParams (TMSID token.TMSID , ppRaw []byte ) error
5666}
57-
58- func GetPublicParametersService (sp services.Provider ) (Loader , error ) {
59- s , err := sp .GetService (reflect .TypeOf ((* Loader )(nil )))
60- if err != nil {
61- return nil , err
62- }
63-
64- return s .(Loader ), nil
65- }
0 commit comments