Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 4 additions & 5 deletions token/sdk/db/checks.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,8 @@ import (
"github.com/hyperledger-labs/fabric-token-sdk/token/services/auditor"
"github.com/hyperledger-labs/fabric-token-sdk/token/services/storage/auditdb"
"github.com/hyperledger-labs/fabric-token-sdk/token/services/storage/db/common"
"github.com/hyperledger-labs/fabric-token-sdk/token/services/storage/ttxdb"
"github.com/hyperledger-labs/fabric-token-sdk/token/services/tokens"
"github.com/hyperledger-labs/fabric-token-sdk/token/services/ttx"
"github.com/hyperledger-labs/fabric-token-sdk/token/services/ttx/dep"
)

// AuditorCheckServiceProvider creates check services for auditors.
Expand All @@ -36,7 +35,7 @@ func NewAuditorCheckServiceProvider(tmsProvider common.TokenManagementServicePro
// CheckService creates a check service for the given TMS ID and databases.
// It combines default checkers with custom checkers provided during initialization.
func (a *AuditorCheckServiceProvider) CheckService(id token.TMSID, adb *auditdb.StoreService, tdb *tokens.Service) (auditor.CheckService, error) {
return common.NewChecksService(append(common.NewDefaultCheckers(a.tmsProvider, a.networkProvider, adb, tdb, id), a.checkers...)), nil
return common.NewChecksService(append(common.NewDefaultCheckers(a.tmsProvider, a.networkProvider, adb, id), a.checkers...)), nil
}

// OwnerCheckServiceProvider creates check services for token owners.
Expand All @@ -58,6 +57,6 @@ func NewOwnerCheckServiceProvider(tmsProvider common.TokenManagementServiceProvi

// CheckService creates a check service for the given TMS ID and databases.
// It combines default checkers with custom checkers provided during initialization.
func (a *OwnerCheckServiceProvider) CheckService(id token.TMSID, txdb *ttxdb.StoreService, tdb *tokens.Service) (ttx.CheckService, error) {
return common.NewChecksService(append(common.NewDefaultCheckers(a.tmsProvider, a.networkProvider, txdb, tdb, id), a.checkers...)), nil
func (a *OwnerCheckServiceProvider) CheckService(id token.TMSID, adb dep.StoreService, _ dep.TokensService) (dep.CheckService, error) {
return common.NewChecksService(append(common.NewDefaultCheckers(a.tmsProvider, a.networkProvider, adb, id), a.checkers...)), nil
}
28 changes: 28 additions & 0 deletions token/sdk/dig/providers.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,14 @@ package sdk

import (
driver2 "github.com/hyperledger-labs/fabric-smart-client/platform/common/driver"
"github.com/hyperledger-labs/fabric-token-sdk/token"
"github.com/hyperledger-labs/fabric-token-sdk/token/core"
"github.com/hyperledger-labs/fabric-token-sdk/token/driver"
dbdriver "github.com/hyperledger-labs/fabric-token-sdk/token/services/storage/db/driver"
"github.com/hyperledger-labs/fabric-token-sdk/token/services/storage/db/multiplexed"
"github.com/hyperledger-labs/fabric-token-sdk/token/services/tokens"
"github.com/hyperledger-labs/fabric-token-sdk/token/services/ttx"
"github.com/hyperledger-labs/fabric-token-sdk/token/services/ttx/dep"
"go.uber.org/dig"
)

Expand All @@ -33,3 +37,27 @@ func newTokenDriverService(in struct {
}) *core.TokenDriverService {
return core.NewTokenDriverService(in.Drivers)
}

type TokensServiceManager struct {
sm *tokens.ServiceManager
}

func NewTokensServiceManager(sm *tokens.ServiceManager) *TokensServiceManager {
return &TokensServiceManager{sm: sm}
}

func (t *TokensServiceManager) ServiceByTMSId(tmsid token.TMSID) (dep.TokensService, error) {
return t.sm.ServiceByTMSId(tmsid)
}

type StoreServiceManager struct {
sm ttx.StoreServiceManager
}

func NewStoreServiceManager(sm ttx.StoreServiceManager) *StoreServiceManager {
return &StoreServiceManager{sm: sm}
}

func (t *StoreServiceManager) StoreServiceByTMSId(tmsid token.TMSID) (dep.StoreService, error) {
return t.sm.StoreServiceByTMSId(tmsid)
}
3 changes: 2 additions & 1 deletion token/sdk/dig/sdk.go
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,8 @@ func (p *SDK) Install() error {
p.Container().Provide(wrapper2.NewTransactionDBProvider, dig.As(new(dep.TransactionDBProvider))),
p.Container().Provide(wrapper2.NewAuditDBProvider, dig.As(new(dep.AuditDBProvider))),
p.Container().Provide(wrapper2.NewStorageProvider),
p.Container().Provide(digutils.Identity[*tokens.ServiceManager](), dig.As(new(ttx.TokensServiceManager))),
p.Container().Provide(NewTokensServiceManager, dig.As(new(ttx.TokensServiceManager))),
p.Container().Provide(NewStoreServiceManager, dig.As(new(dep.StoreServiceManager))),
p.Container().Provide(digutils.Identity[*db.OwnerCheckServiceProvider](), dig.As(new(ttx.CheckServiceProvider))),
p.Container().Provide(ttx.NewServiceManager),
p.Container().Provide(ttx.NewMetrics),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import (
"github.com/hyperledger-labs/fabric-token-sdk/token/services/network/driver"
"github.com/hyperledger-labs/fabric-token-sdk/token/services/network/fabric/endorsement/fsc"
"github.com/hyperledger-labs/fabric-token-sdk/token/services/network/fabric/endorsement/fsc/mock"
"github.com/hyperledger-labs/fabric-token-sdk/token/services/ttx/dep/tokenapi"
"github.com/hyperledger-labs/fabric-token-sdk/token/services/ttx/dep/mock/tokenapi"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import (
mock2 "github.com/hyperledger-labs/fabric-token-sdk/token/driver/mock"
"github.com/hyperledger-labs/fabric-token-sdk/token/services/network/fabric/endorsement/fsc"
"github.com/hyperledger-labs/fabric-token-sdk/token/services/network/fabric/endorsement/fsc/mock"
"github.com/hyperledger-labs/fabric-token-sdk/token/services/ttx/dep/tokenapi"
"github.com/hyperledger-labs/fabric-token-sdk/token/services/ttx/dep/mock/tokenapi"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
Expand Down
4 changes: 4 additions & 0 deletions token/services/network/network.go
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,10 @@ type Envelope struct {
e driver.Envelope
}

func NewEnvelope(e driver.Envelope) *Envelope {
return &Envelope{e: e}
}

// Bytes serializes the envelope into bytes.
func (e *Envelope) Bytes() ([]byte, error) {
return e.e.Bytes()
Expand Down
6 changes: 2 additions & 4 deletions token/services/storage/db/common/checks.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ import (
"github.com/hyperledger-labs/fabric-token-sdk/token/services/logging"
"github.com/hyperledger-labs/fabric-token-sdk/token/services/network"
"github.com/hyperledger-labs/fabric-token-sdk/token/services/storage/db/driver"
"github.com/hyperledger-labs/fabric-token-sdk/token/services/tokens"
"github.com/hyperledger-labs/fabric-token-sdk/token/services/utils"
token2 "github.com/hyperledger-labs/fabric-token-sdk/token/token"
)
Expand Down Expand Up @@ -74,12 +73,11 @@ type DefaultCheckers struct {
tmsProvider TokenManagementServiceProvider
networkProvider NetworkProvider
db TokenTransactionDB
tokenDB *tokens.Service
tmsID token.TMSID
}

func NewDefaultCheckers(tmsProvider TokenManagementServiceProvider, networkProvider NetworkProvider, db TokenTransactionDB, tokenDB *tokens.Service, tmsID token.TMSID) []NamedChecker {
checkers := &DefaultCheckers{tmsProvider: tmsProvider, networkProvider: networkProvider, db: db, tokenDB: tokenDB, tmsID: tmsID}
func NewDefaultCheckers(tmsProvider TokenManagementServiceProvider, networkProvider NetworkProvider, db TokenTransactionDB, tmsID token.TMSID) []NamedChecker {
checkers := &DefaultCheckers{tmsProvider: tmsProvider, networkProvider: networkProvider, db: db, tmsID: tmsID}

return []NamedChecker{
{
Expand Down
20 changes: 7 additions & 13 deletions token/services/ttx/accept.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,8 @@ package ttx

import (
"github.com/hyperledger-labs/fabric-smart-client/pkg/utils/errors"
"github.com/hyperledger-labs/fabric-smart-client/platform/view/services/id"
"github.com/hyperledger-labs/fabric-smart-client/platform/view/services/sig"
"github.com/hyperledger-labs/fabric-smart-client/platform/view/view"
"github.com/hyperledger-labs/fabric-token-sdk/token/services/tokens"
"github.com/hyperledger-labs/fabric-token-sdk/token/services/ttx/dep"
"github.com/hyperledger-labs/fabric-token-sdk/token/services/utils"
)

Expand Down Expand Up @@ -67,18 +65,14 @@ func (s *AcceptView) Call(context view.Context) (interface{}, error) {
// with the identity of the FSC node running this stack.
func (s *AcceptView) ack(context view.Context) error {
txRaw := s.tx.FromRaw
idProvider, err := id.GetProvider(context)
idProvider, err := dep.GetNetworkIdentityProvider(context)
if err != nil {
return errors.Wrapf(err, "failed to get identity provider")
return errors.Wrapf(errors.Join(err, ErrDepNotAvailableInContext), "failed to get identity provider")
}
defaultIdentity := idProvider.DefaultIdentity()

logger.DebugfContext(context.Context(), "signing ack response [%s] with identity [%s]", utils.Hashable(txRaw), defaultIdentity)
sigService, err := sig.GetService(context)
if err != nil {
return errors.Wrapf(err, "failed to get sig service")
}
signer, err := sigService.GetSigner(defaultIdentity)
signer, err := idProvider.GetSigner(defaultIdentity)
if err != nil {
return errors.WithMessagef(err, "failed to get signer for default identity")
}
Expand All @@ -101,12 +95,12 @@ func (s *AcceptView) ack(context view.Context) error {

func (s *AcceptView) cacheRequest(context view.Context) error {
// cache the token request into the tokens db
t, err := tokens.GetService(context, s.tx.TMSID())
sp, err := GetStorageProvider(context)
if err != nil {
return errors.Wrapf(err, "failed to get tokens db for [%s]", s.tx.TMSID())
return errors.Wrapf(errors.Join(err, ErrDepNotAvailableInContext), "failed to get storage provider")
}

if err := t.CacheRequest(context.Context(), s.tx.TMSID(), s.tx.TokenRequest); err != nil {
if err := sp.CacheRequest(context.Context(), s.tx.TMSID(), s.tx.TokenRequest); err != nil {
logger.WarnfContext(context.Context(), "failed to cache token request [%s], this might cause delay, investigate when possible: [%s]", s.tx.TokenRequest.Anchor, err)
}

Expand Down
Loading
Loading