wallet

package
v0.5.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 17, 2025 License: Apache-2.0 Imports: 17 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	CacheLevelOpts = metrics.GaugeOpts{
		Namespace:    "wallet",
		Name:         "recipient_data_cache_level",
		Help:         "Level of the wallet recipient data cache",
		LabelNames:   []string{"network", "channel", "namespace"},
		StatsdFormat: "%{#fqname}.%{network}.%{channel}.%{namespace}",
	}
)
View Source
var (
	ErrNilRecipientData = errors.New("nil recipient data")
)

Functions

This section is empty.

Types

type AnonymousOwnerWallet

type AnonymousOwnerWallet struct {
	*LongTermOwnerWallet
	Logger         logging.Logger
	Deserializer   driver.Deserializer
	WalletRegistry Registry
	IdentityCache  *RecipientDataCache
}

func NewAnonymousOwnerWallet

func NewAnonymousOwnerWallet(
	logger logging.Logger,
	IdentityProvider driver.IdentityProvider,
	TokenVault OwnerTokenVault,
	Deserializer driver.Deserializer,
	walletRegistry Registry,
	id string,
	identityInfo identity.Info,
	cacheSize int,
	metricsProvider metrics.Provider,
) (*AnonymousOwnerWallet, error)

func (*AnonymousOwnerWallet) Contains

func (w *AnonymousOwnerWallet) Contains(identity driver.Identity) bool

func (*AnonymousOwnerWallet) ContainsToken

func (w *AnonymousOwnerWallet) ContainsToken(token *token.UnspentToken) bool

ContainsToken returns true if the passed token is owned by this wallet

func (*AnonymousOwnerWallet) GetRecipientData

func (w *AnonymousOwnerWallet) GetRecipientData(ctx context.Context) (*driver.RecipientData, error)

func (*AnonymousOwnerWallet) GetRecipientIdentity

func (w *AnonymousOwnerWallet) GetRecipientIdentity(ctx context.Context) (driver.Identity, error)

func (*AnonymousOwnerWallet) GetSigner

func (w *AnonymousOwnerWallet) GetSigner(ctx context.Context, identity driver.Identity) (driver.Signer, error)

func (*AnonymousOwnerWallet) RegisterRecipient

func (w *AnonymousOwnerWallet) RegisterRecipient(ctx context.Context, data *driver.RecipientData) error

type AuditorWallet

type AuditorWallet struct {
	IdentityProvider driver.IdentityProvider
	WalletID         string
	AuditorIdentity  driver.Identity
}

func NewAuditorWallet

func NewAuditorWallet(IdentityProvider driver.IdentityProvider, id string, identity driver.Identity) *AuditorWallet

func (*AuditorWallet) Contains

func (w *AuditorWallet) Contains(identity driver.Identity) bool

func (*AuditorWallet) ContainsToken

func (w *AuditorWallet) ContainsToken(token *token.UnspentToken) bool

func (*AuditorWallet) GetAuditorIdentity

func (w *AuditorWallet) GetAuditorIdentity() (driver.Identity, error)

func (*AuditorWallet) GetSigner

func (w *AuditorWallet) GetSigner(ctx context.Context, identity driver.Identity) (driver.Signer, error)

func (*AuditorWallet) ID

func (w *AuditorWallet) ID() string

type CertifierWallet

type CertifierWallet struct {
	IdentityProvider  driver.IdentityProvider
	WalletID          string
	CertifierIdentity driver.Identity
}

func NewCertifierWallet

func NewCertifierWallet(IdentityProvider driver.IdentityProvider, id string, identity driver.Identity) *CertifierWallet

func (*CertifierWallet) Contains

func (w *CertifierWallet) Contains(identity driver.Identity) bool

func (*CertifierWallet) ContainsToken

func (w *CertifierWallet) ContainsToken(token *token.UnspentToken) bool

func (*CertifierWallet) GetCertifierIdentity

func (w *CertifierWallet) GetCertifierIdentity() (driver.Identity, error)

func (*CertifierWallet) GetSigner

func (w *CertifierWallet) GetSigner(ctx context.Context, identity driver.Identity) (driver.Signer, error)

func (*CertifierWallet) ID

func (w *CertifierWallet) ID() string

type Factory

type Factory struct {
	Logger               logging.Logger
	IdentityProvider     driver.IdentityProvider
	TokenVault           TokenVault
	WalletsConfiguration WalletsConfiguration
	Deserializer         driver.Deserializer
	MetricsProvider      metrics.Provider
}

func NewFactory

func NewFactory(
	logger logging.Logger,
	identityProvider driver.IdentityProvider,
	tokenVault TokenVault,
	walletsConfiguration WalletsConfiguration,
	deserializer driver.Deserializer,
	metricsProvider metrics.Provider,
) *Factory

func (*Factory) NewWallet

func (w *Factory) NewWallet(ctx context.Context, id string, role identity.RoleType, wr Registry, info identity.Info) (driver.Wallet, error)

type IssuerTokenVault

type IssuerTokenVault interface {
	ListHistoryIssuedTokens(context.Context) (*token.IssuedTokens, error)
}

type IssuerWallet

type IssuerWallet struct {
	Logger           logging.Logger
	IdentityProvider driver.IdentityProvider
	TokenVault       IssuerTokenVault
	WalletID         string
	IssuerIdentity   driver.Identity
}

func NewIssuerWallet

func NewIssuerWallet(Logger logging.Logger, IdentityProvider driver.IdentityProvider, TokenVault IssuerTokenVault, id string, identity driver.Identity) *IssuerWallet

func (*IssuerWallet) Contains

func (w *IssuerWallet) Contains(identity driver.Identity) bool

func (*IssuerWallet) ContainsToken

func (w *IssuerWallet) ContainsToken(token *token.UnspentToken) bool

func (*IssuerWallet) GetIssuerIdentity

func (w *IssuerWallet) GetIssuerIdentity(tokenType token.Type) (driver.Identity, error)

func (*IssuerWallet) GetSigner

func (w *IssuerWallet) GetSigner(ctx context.Context, identity driver.Identity) (driver.Signer, error)

func (*IssuerWallet) HistoryTokens

func (w *IssuerWallet) HistoryTokens(ctx context.Context, opts *driver.ListTokensOptions) (*token.IssuedTokens, error)

func (*IssuerWallet) ID

func (w *IssuerWallet) ID() string

type LongTermOwnerWallet

type LongTermOwnerWallet struct {
	IdentityProvider  driver.IdentityProvider
	TokenVault        OwnerTokenVault
	WalletID          string
	OwnerIdentityInfo identity.Info
	OwnerIdentity     driver.Identity
	OwnerAuditInfo    []byte
}

func NewLongTermOwnerWallet

func NewLongTermOwnerWallet(IdentityProvider driver.IdentityProvider, TokenVault OwnerTokenVault, id string, identityInfo identity.Info) (*LongTermOwnerWallet, error)

func (*LongTermOwnerWallet) Balance

func (*LongTermOwnerWallet) Contains

func (w *LongTermOwnerWallet) Contains(identity driver.Identity) bool

func (*LongTermOwnerWallet) ContainsToken

func (w *LongTermOwnerWallet) ContainsToken(token *token.UnspentToken) bool

func (*LongTermOwnerWallet) EnrollmentID

func (w *LongTermOwnerWallet) EnrollmentID() string

func (*LongTermOwnerWallet) GetAuditInfo

func (w *LongTermOwnerWallet) GetAuditInfo(ctx context.Context, id driver.Identity) ([]byte, error)

func (*LongTermOwnerWallet) GetRecipientData

func (w *LongTermOwnerWallet) GetRecipientData(context.Context) (*driver.RecipientData, error)

func (*LongTermOwnerWallet) GetRecipientIdentity

func (w *LongTermOwnerWallet) GetRecipientIdentity(context.Context) (driver.Identity, error)

func (*LongTermOwnerWallet) GetSigner

func (w *LongTermOwnerWallet) GetSigner(ctx context.Context, identity driver.Identity) (driver.Signer, error)

func (*LongTermOwnerWallet) GetTokenMetadata

func (w *LongTermOwnerWallet) GetTokenMetadata(id driver.Identity) ([]byte, error)

func (*LongTermOwnerWallet) GetTokenMetadataAuditInfo

func (w *LongTermOwnerWallet) GetTokenMetadataAuditInfo(id driver.Identity) ([]byte, error)

func (*LongTermOwnerWallet) ID

func (w *LongTermOwnerWallet) ID() string

func (*LongTermOwnerWallet) ListTokens

func (*LongTermOwnerWallet) ListTokensIterator

func (*LongTermOwnerWallet) RegisterRecipient

func (w *LongTermOwnerWallet) RegisterRecipient(ctx context.Context, data *driver.RecipientData) error

func (*LongTermOwnerWallet) Remote

func (w *LongTermOwnerWallet) Remote() bool

type Metrics

type Metrics struct {
	CacheLevelGauge metrics.Gauge
}

Metrics contains the metrics for this package

func NewMetrics

func NewMetrics(p metrics.Provider) *Metrics

NewMetrics instantiate the metrics for this package

type OwnerTokenVault

type OwnerTokenVault interface {
	UnspentTokensIteratorBy(ctx context.Context, id string, tokenType token.Type) (driver.UnspentTokensIterator, error)
	Balance(ctx context.Context, id string, tokenType token.Type) (uint64, error)
}

type RecipientDataBackendFunc

type RecipientDataBackendFunc func(ctx context.Context) (*driver.RecipientData, error)

type RecipientDataCache

type RecipientDataCache struct {
	Logger logging.Logger
	// contains filtered or unexported fields
}

func NewRecipientDataCache

func NewRecipientDataCache(Logger logging.Logger, backed RecipientDataBackendFunc, size int, metrics *Metrics) *RecipientDataCache

func (*RecipientDataCache) RecipientData

func (c *RecipientDataCache) RecipientData(ctx context.Context) (*driver.RecipientData, error)

type Registry

type Registry interface {
	WalletIDs(ctx context.Context) ([]string, error)
	RegisterIdentity(ctx context.Context, config driver.IdentityConfiguration) error
	Lookup(ctx context.Context, id driver.WalletLookupID) (driver.Wallet, identity.Info, string, error)
	RegisterWallet(ctx context.Context, id string, wallet driver.Wallet) error
	BindIdentity(ctx context.Context, identity driver.Identity, eID string, wID string, meta any) error
	ContainsIdentity(ctx context.Context, i driver.Identity, id string) bool
	GetIdentityMetadata(ctx context.Context, identity driver.Identity, wID string, meta any) error
}

type RegistryEntry

type RegistryEntry struct {
	Registry Registry
	Mutex    *sync.RWMutex
}

type Roles

type Roles map[identity.RoleType]identity.Role

Roles is a map of Role, one for each identity role

func NewRoles

func NewRoles() Roles

NewRoles returns a new Roles maps

func (Roles) Register

func (m Roles) Register(usage identity.RoleType, role identity.Role)

Register associates an instance of Role to a given identifier

func (Roles) ToWalletRegistries

func (m Roles) ToWalletRegistries(logger logging.Logger, db driver.WalletStoreService) map[identity.RoleType]Registry

type Service

type Service struct {
	Logger           logging.Logger
	IdentityProvider driver.IdentityProvider
	Deserializer     driver.Deserializer

	WalletFactory walletFactory
	Registries    map[identity.RoleType]*RegistryEntry
}

func NewService

func NewService(
	logger logging.Logger,
	identityProvider driver.IdentityProvider,
	deserializer driver.Deserializer,
	walletFactory walletFactory,
	walletRegistries map[identity.RoleType]Registry,
) *Service

func (*Service) AuditorWallet

func (s *Service) AuditorWallet(ctx context.Context, id driver.WalletLookupID) (driver.AuditorWallet, error)

func (*Service) CertifierWallet

func (s *Service) CertifierWallet(ctx context.Context, id driver.WalletLookupID) (driver.CertifierWallet, error)

func (*Service) GetAuditInfo

func (s *Service) GetAuditInfo(ctx context.Context, id driver.Identity) ([]byte, error)

func (*Service) GetEIDAndRH

func (s *Service) GetEIDAndRH(identity driver.Identity, auditInfo []byte) (string, string, error)

func (*Service) GetEnrollmentID

func (s *Service) GetEnrollmentID(identity driver.Identity, auditInfo []byte) (string, error)

func (*Service) GetRevocationHandle

func (s *Service) GetRevocationHandle(identity driver.Identity, auditInfo []byte) (string, error)

func (*Service) IssuerWallet

func (s *Service) IssuerWallet(ctx context.Context, id driver.WalletLookupID) (driver.IssuerWallet, error)

func (*Service) OwnerWallet

func (s *Service) OwnerWallet(ctx context.Context, id driver.WalletLookupID) (driver.OwnerWallet, error)

func (*Service) OwnerWalletIDs

func (s *Service) OwnerWalletIDs(ctx context.Context) ([]string, error)

func (*Service) RegisterIssuerIdentity

func (s *Service) RegisterIssuerIdentity(ctx context.Context, config driver.IdentityConfiguration) error

func (*Service) RegisterOwnerIdentity

func (s *Service) RegisterOwnerIdentity(ctx context.Context, config driver.IdentityConfiguration) error

func (*Service) RegisterRecipientIdentity

func (s *Service) RegisterRecipientIdentity(ctx context.Context, data *driver.RecipientData) error

func (*Service) SpendIDs

func (s *Service) SpendIDs(ids ...*token.ID) ([]string, error)

SpendIDs returns the spend ids for the passed token ids

func (*Service) Wallet

func (s *Service) Wallet(ctx context.Context, identity driver.Identity) driver.Wallet

type TokenVault

type TokenVault interface {
	IsPending(ctx context.Context, id *token.ID) (bool, error)
	UnspentTokensIteratorBy(ctx context.Context, id string, tokenType token.Type) (driver.UnspentTokensIterator, error)
	ListHistoryIssuedTokens(ctx context.Context) (*token.IssuedTokens, error)
	Balance(ctx context.Context, id string, tokenType token.Type) (uint64, error)
}

type WalletsConfiguration

type WalletsConfiguration interface {
	CacheSizeForOwnerID(id string) int
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL