Documentation
¶
Index ¶
- Constants
- type Broadcaster
- type Chaincode
- type Discovery
- func (d *Discovery) Call() ([]driver.DiscoveredPeer, error)
- func (d *Discovery) ChaincodeVersion() (string, error)
- func (d *Discovery) GetEndorsers() ([]driver.DiscoveredPeer, error)
- func (d *Discovery) GetPeers() ([]driver.DiscoveredPeer, error)
- func (d *Discovery) Response() (discovery.Response, error)
- func (d *Discovery) WithFilterByMSPIDs(mspIDs ...string) driver.ChaincodeDiscover
- func (d *Discovery) WithForQuery() driver.ChaincodeDiscover
- func (d *Discovery) WithImplicitCollections(mspIDs ...string) driver.ChaincodeDiscover
- type Invoke
- func (i *Invoke) Endorse() (driver.Envelope, error)
- func (i *Invoke) Query() ([]byte, error)
- func (i *Invoke) Submit() (string, []byte, error)
- func (i *Invoke) WithContext(ctx context.Context) driver.ChaincodeInvocation
- func (i *Invoke) WithDiscoveredEndorsersByEndpoints(endpoints ...string) driver.ChaincodeInvocation
- func (i *Invoke) WithEndorsersByConnConfig(ccs ...*grpc.ConnectionConfig) driver.ChaincodeInvocation
- func (i *Invoke) WithEndorsersByMSPIDs(mspIDs ...string) driver.ChaincodeInvocation
- func (i *Invoke) WithEndorsersFromMyOrg() driver.ChaincodeInvocation
- func (i *Invoke) WithImplicitCollections(mspIDs ...string) driver.ChaincodeInvocation
- func (i *Invoke) WithMatchEndorsementPolicy() driver.ChaincodeInvocation
- func (i *Invoke) WithNumRetries(numRetries uint) driver.ChaincodeInvocation
- func (i *Invoke) WithRetrySleep(duration time.Duration) driver.ChaincodeInvocation
- func (i *Invoke) WithSignerIdentity(id view.Identity) driver.ChaincodeInvocation
- func (i *Invoke) WithTransientEntry(k string, v any) (driver.ChaincodeInvocation, error)
- func (i *Invoke) WithTxID(id driver.TxIDComponents) driver.ChaincodeInvocation
- type MSPProvider
- type Manager
- type SerializableSigner
- type Services
Constants ¶
const (
DiscoveryCacheTimeout = time.Minute
)
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Broadcaster ¶ added in v0.4.0
type Chaincode ¶
type Chaincode struct {
NetworkID string
ChannelID string
ConfigService driver.ConfigService
ChannelConfig driver.ChannelConfig
NumRetries uint
RetrySleep time.Duration
LocalMembership driver.LocalMembership
Services Services
SignerService driver.SignerService
Broadcaster Broadcaster
Finality driver.Finality
MSPProvider MSPProvider
// contains filtered or unexported fields
}
func NewChaincode ¶
func NewChaincode( ctx context.Context, name string, networkConfig driver.ConfigService, channelConfig driver.ChannelConfig, localMembership driver.LocalMembership, peerManager Services, signerService driver.SignerService, broadcaster Broadcaster, finality driver.Finality, MSPProvider MSPProvider, ) *Chaincode
NewChaincode creates a Chaincode handler. networkConfig and channelConfig are required and must not be nil.
Discovery results are cached for the lifetime of the returned Chaincode. The TTL of the cached results can be set via the `ChannelConfig.DiscoveryTimeout()` of the channelConfig parameter. If not set, the default `DiscoveryCacheTimeout` is used. The cache's background eviction goroutine is stopped when ctx is cancelled.
func (*Chaincode) IsAvailable ¶
func (*Chaincode) NewDiscover ¶
func (c *Chaincode) NewDiscover() driver.ChaincodeDiscover
func (*Chaincode) NewInvocation ¶
func (c *Chaincode) NewInvocation(function string, args ...any) driver.ChaincodeInvocation
type Discovery ¶
type Discovery struct {
FilterByMSPIDs []string
ImplicitCollections []string
QueryForPeers bool
// contains filtered or unexported fields
}
func NewDiscovery ¶
NewDiscovery create a discovery client that helps to fetch peer information.
Discovery results are cached in a cache owned by chaincode (created once in NewChaincode) and shared across every Discovery instance created for that chaincode, so its lifetime (and background eviction goroutine) is bound to the chaincode rather than to this single Discovery instance.
func (*Discovery) ChaincodeVersion ¶
func (*Discovery) GetEndorsers ¶
func (d *Discovery) GetEndorsers() ([]driver.DiscoveredPeer, error)
func (*Discovery) WithFilterByMSPIDs ¶
func (d *Discovery) WithFilterByMSPIDs(mspIDs ...string) driver.ChaincodeDiscover
func (*Discovery) WithForQuery ¶
func (d *Discovery) WithForQuery() driver.ChaincodeDiscover
func (*Discovery) WithImplicitCollections ¶
func (d *Discovery) WithImplicitCollections(mspIDs ...string) driver.ChaincodeDiscover
type Invoke ¶
type Invoke struct {
Chaincode *Chaincode
TxID driver.TxIDComponents
SignerIdentity view.Identity
ChaincodePath string
ChaincodeName string
ChaincodeVersion string
TransientMap map[string][]byte
EndorsersMSPIDs []string
ImplicitCollectionMSPIDs []string
EndorsersFromMyOrg bool
EndorsersByConnConfig []*grpc.ConnectionConfig
DiscoveredEndorsersByEndpoints []string
Function string
Args []any
MatchEndorsementPolicy bool
NumRetries int
RetrySleep time.Duration
Ctx context.Context
}
func (*Invoke) WithContext ¶ added in v0.3.0
func (i *Invoke) WithContext(ctx context.Context) driver.ChaincodeInvocation
func (*Invoke) WithDiscoveredEndorsersByEndpoints ¶
func (i *Invoke) WithDiscoveredEndorsersByEndpoints(endpoints ...string) driver.ChaincodeInvocation
WithDiscoveredEndorsersByEndpoints sets the endpoints to be used to filter the result of discovery. Discovery is used to identify the chaincode's endorsers, if not set otherwise.
func (*Invoke) WithEndorsersByConnConfig ¶
func (i *Invoke) WithEndorsersByConnConfig(ccs ...*grpc.ConnectionConfig) driver.ChaincodeInvocation
func (*Invoke) WithEndorsersByMSPIDs ¶
func (i *Invoke) WithEndorsersByMSPIDs(mspIDs ...string) driver.ChaincodeInvocation
func (*Invoke) WithEndorsersFromMyOrg ¶
func (i *Invoke) WithEndorsersFromMyOrg() driver.ChaincodeInvocation
func (*Invoke) WithImplicitCollections ¶
func (i *Invoke) WithImplicitCollections(mspIDs ...string) driver.ChaincodeInvocation
func (*Invoke) WithMatchEndorsementPolicy ¶ added in v0.2.0
func (i *Invoke) WithMatchEndorsementPolicy() driver.ChaincodeInvocation
func (*Invoke) WithNumRetries ¶ added in v0.2.0
func (i *Invoke) WithNumRetries(numRetries uint) driver.ChaincodeInvocation
func (*Invoke) WithRetrySleep ¶ added in v0.2.0
func (i *Invoke) WithRetrySleep(duration time.Duration) driver.ChaincodeInvocation
func (*Invoke) WithSignerIdentity ¶
func (i *Invoke) WithSignerIdentity(id view.Identity) driver.ChaincodeInvocation
func (*Invoke) WithTransientEntry ¶
func (*Invoke) WithTxID ¶
func (i *Invoke) WithTxID(id driver.TxIDComponents) driver.ChaincodeInvocation
type MSPProvider ¶ added in v0.4.0
type MSPProvider interface {
// MSPManager returns a manager that resolves serialized identities against
// the channel's MSPs. It never returns nil and may be called before a
// configuration is in force; that failure surfaces from the manager's own
// methods. Callers should not memoize the result.
MSPManager() driver.MSPManager
// TLSRootCertsByMSPID returns the TLS root and intermediate certificates, in
// that order, of the application organization with the given MSP ID. It
// fails if the channel has no such organization.
TLSRootCertsByMSPID(mspID string) ([][]byte, error)
}
MSPProvider gives the chaincode package the channel's membership as a trust anchor: the MSPs the channel recognizes and the TLS certificates that authenticate its organizations' peers. Both must come from the channel configuration rather than from a discovery response — that response is supplied by whichever peer answered the query, so using it as its own trust anchor would let that peer authorize the identities and endpoints it reports.
A channel's configuration arrives asynchronously, so both methods report driver.ErrNotInitialized while none has arrived and driver.ErrConfigRejected once one has arrived and been refused. Neither is a verdict on what was asked about, and a caller that treats them as one misreports a node that is merely still starting up. An implementation may wait a bounded time for the first configuration instead of reporting driver.ErrNotInitialized straight away, so a call on a freshly started node can block; a refusal is reported without waiting.
type Manager ¶ added in v0.4.0
type Manager struct {
NetworkID string
ChannelID string
ConfigService driver.ConfigService
ChannelConfig driver.ChannelConfig
NumRetries uint
RetrySleep time.Duration
LocalMembership driver.LocalMembership
PeerManager Services
SignerService driver.SignerService
Broadcaster Broadcaster
Finality driver.Finality
MSPProvider MSPProvider
// chaincodes
ChaincodesLock sync.RWMutex
Chaincodes map[string]driver.Chaincode
// contains filtered or unexported fields
}
func NewManager ¶ added in v0.4.0
func NewManager( ctx context.Context, networkID string, channelID string, configService driver.ConfigService, channelConfig driver.ChannelConfig, numRetries uint, retrySleep time.Duration, localMembership driver.LocalMembership, peerManager Services, signerService driver.SignerService, broadcaster Broadcaster, finality driver.Finality, MSPProvider MSPProvider, ) *Manager
type SerializableSigner ¶
type Services ¶ added in v0.4.0
type Services interface {
NewPeerClient(cc grpc.ConnectionConfig) (services.PeerClient, error)
}