Documentation
¶
Overview ¶
Copyright IBM Corp. All Rights Reserved.
SPDX-License-Identifier: Apache-2.0
Copyright IBM Corp. All Rights Reserved.
SPDX-License-Identifier: Apache-2.0
Copyright IBM Corp. All Rights Reserved.
SPDX-License-Identifier: Apache-2.0
Copyright IBM Corp. All Rights Reserved.
SPDX-License-Identifier: Apache-2.0
Copyright IBM Corp. All Rights Reserved.
SPDX-License-Identifier: Apache-2.0
Index ¶
- func BroadcastReceive(broadcast Broadcast, addr string, responses chan common.Status, ...)
- func BroadcastSend(broadcast Broadcast, addr string, envelope *common.Envelope) error
- func BroadcastWaitForResponse(responses chan common.Status, errs chan error) (common.Status, error)
- func CreateDeliverEnvelope(channelId string, creator []byte, signer SignerIdentity, cert *tls.Certificate) (*common.Envelope, error)
- func CreateEnvelope(data []byte, header *common.Header, signer SignerIdentity) (*common.Envelope, error)
- func CreateHeader(txType common.HeaderType, channelId string, creator []byte, tlsCertHash []byte) (string, *common.Header, error)
- func DeliverReceive(df DeliverFiltered, address string, txid string, eventCh chan TxEvent) error
- func DeliverSend(df DeliverFiltered, address string, envelope *common.Envelope) error
- func DeliverWaitForResponse(ctx context.Context, eventCh chan TxEvent, txid string) (bool, error)
- func ValidateClientConfig(config *ClientConfig) error
- type Broadcast
- type Client
- type ClientConfig
- type ConnectionConfig
- type DeliverClient
- type DeliverFiltered
- type FabricTxSubmitter
- type OrdererClient
- type Prover
- type ProverPeer
- func (prover *ProverPeer) CreateSignedCommand(payload interface{}, signingIdentity tk.SigningIdentity) (*token.SignedCommand, error)
- func (prover *ProverPeer) RequestImport(tokensToIssue []*token.TokenToIssue, signingIdentity tk.SigningIdentity) ([]byte, error)
- func (prover *ProverPeer) RequestTransfer(tokenIDs [][]byte, shares []*token.RecipientTransferShare, ...) ([]byte, error)
- type Signer
- type SignerIdentity
- type TimeFunc
- type TxEvent
- type TxSubmitter
- func (s *TxSubmitter) CreateTxEnvelope(txBytes []byte) (string, *common.Envelope, error)
- func (s *TxSubmitter) SubmitTransaction(txEnvelope *common.Envelope, waitTimeInSeconds int) (committed bool, txId string, err error)
- func (s *TxSubmitter) SubmitTransactionWithChan(txEnvelope *common.Envelope, eventCh chan TxEvent) (committed bool, txId string, err error)
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func BroadcastReceive ¶
func BroadcastReceive(broadcast Broadcast, addr string, responses chan common.Status, errs chan error)
broadReceive waits until it receives the response from broadcast stream
func BroadcastSend ¶
broadcastSend sends transaction envelope to orderer service
func BroadcastWaitForResponse ¶
broadcastWaitForResponse reads from response and errs chans until responses chan is closed
func CreateDeliverEnvelope ¶
func CreateDeliverEnvelope(channelId string, creator []byte, signer SignerIdentity, cert *tls.Certificate) (*common.Envelope, error)
create a signed envelope with SeekPosition_Newest for block
func CreateEnvelope ¶
func CreateEnvelope(data []byte, header *common.Header, signer SignerIdentity) (*common.Envelope, error)
CreateEnvelope creates a common.Envelope with given tx bytes, header, and Signer
func CreateHeader ¶
func CreateHeader(txType common.HeaderType, channelId string, creator []byte, tlsCertHash []byte) (string, *common.Header, error)
CreateHeader creates common.Header for a token transaction tlsCertHash is for client TLS cert, only applicable when ClientAuthRequired is true
func DeliverReceive ¶
func DeliverReceive(df DeliverFiltered, address string, txid string, eventCh chan TxEvent) error
func DeliverSend ¶
func DeliverSend(df DeliverFiltered, address string, envelope *common.Envelope) error
func DeliverWaitForResponse ¶
DeliverWaitForResponse waits for either eventChan has value (i.e., response has been received) or ctx is timed out This function assumes that the eventCh is only for the specified txid If an eventCh is shared by multiple transactions, a loop should be used to listen to events from multiple transactions
func ValidateClientConfig ¶
func ValidateClientConfig(config *ClientConfig) error
Types ¶
type Broadcast ¶
type Broadcast interface {
Send(m *common.Envelope) error
Recv() (*ab.BroadcastResponse, error)
CloseSend() error
}
Broadcast defines the interface that abstracts grpc calls to broadcast transactions to orderer
type Client ¶
type Client struct {
SigningIdentity tk.SigningIdentity
Prover Prover
TxSubmitter FabricTxSubmitter
}
Client represents the client struct that calls Prover and TxSubmitter
func (*Client) Transfer ¶
func (c *Client) Transfer(tokenIDs [][]byte, shares []*token.RecipientTransferShare) ([]byte, error)
Transfer is the function that the client calls to transfer his tokens. Transfer takes as parameter an array of token.RecipientTransferShare that identifies who receives the tokens and describes how the tokens are distributed.
type ClientConfig ¶
type ClientConfig struct {
ChannelId string
MspDir string
MspId string
TlsEnabled bool
OrdererCfg ConnectionConfig
CommitPeerCfg ConnectionConfig
ProverPeerCfg ConnectionConfig
}
ClientConfig will be updated after the CR for token client config is merged, where the config data will be populated based on a config file.
type ConnectionConfig ¶
ConnectionConfig contains data required to establish grpc connection to a peer or orderer
type DeliverClient ¶
type DeliverClient interface {
// NewDeliverFilterd returns a DeliverFiltered
NewDeliverFiltered(ctx context.Context, opts ...grpc.CallOption) (DeliverFiltered, error)
// Certificate returns tls certificate for the deliver client to commit peer
Certificate() *tls.Certificate
}
DeliverClient defines the interface to create a DeliverFiltered client
func NewDeliverClient ¶
func NewDeliverClient(config *ClientConfig) (DeliverClient, error)
type DeliverFiltered ¶
type DeliverFiltered interface {
Send(*common.Envelope) error
Recv() (*pb.DeliverResponse, error)
CloseSend() error
}
DeliverFiltered defines the interface that abstracts deliver filtered grpc calls to commit peer
type FabricTxSubmitter ¶
type FabricTxSubmitter interface {
// Submit allows the client to build and submit a fabric transaction for fabtoken that has as
// payload a serialized tx; it takes as input an array of bytes
// and returns an error indicating the success or the failure of the tx submission and an error
// explaining why.
Submit(tx []byte) error
}
type OrdererClient ¶
type OrdererClient interface {
// NewBroadcast returns a Broadcast
NewBroadcast(ctx context.Context, opts ...grpc.CallOption) (Broadcast, error)
// Certificate returns tls certificate for the orderer client
Certificate() *tls.Certificate
}
OrdererClient defines the interface to create a Broadcast
func NewOrdererClient ¶
func NewOrdererClient(config *ClientConfig) (OrdererClient, error)
type Prover ¶
type Prover interface {
// RequestImport allows the client to submit an issue request to a prover peer service;
// the function takes as parameters tokensToIssue and the signing identity of the client;
// it returns a response in bytes and an error message in the case the request fails.
// The response corresponds to a serialized TokenTransaction protobuf message.
RequestImport(tokensToIssue []*token.TokenToIssue, signingIdentity tk.SigningIdentity) ([]byte, error)
// RequestTransfer allows the client to submit a transfer request to a prover peer service;
// the function takes as parameters a fabtoken application credential, the identifiers of the tokens
// to be transfererd and the shares describing how they are going to be distributed
// among recipients; it returns a response in bytes and an error message in the case the
// request fails
RequestTransfer(tokenIDs [][]byte, shares []*token.RecipientTransferShare, signingIdentity tk.SigningIdentity) ([]byte, error)
}
type ProverPeer ¶
type ProverPeer struct {
ChannelID string
ProverClient token.ProverClient
RandomnessReader io.Reader
Time TimeFunc
}
func (*ProverPeer) CreateSignedCommand ¶
func (prover *ProverPeer) CreateSignedCommand(payload interface{}, signingIdentity tk.SigningIdentity) (*token.SignedCommand, error)
func (*ProverPeer) RequestImport ¶
func (prover *ProverPeer) RequestImport(tokensToIssue []*token.TokenToIssue, signingIdentity tk.SigningIdentity) ([]byte, error)
func (*ProverPeer) RequestTransfer ¶
func (prover *ProverPeer) RequestTransfer( tokenIDs [][]byte, shares []*token.RecipientTransferShare, signingIdentity tk.SigningIdentity) ([]byte, error)