diff --git a/go.mod b/go.mod index 895153a78dc..826889d1dab 100644 --- a/go.mod +++ b/go.mod @@ -21,7 +21,7 @@ require ( github.com/hyperledger/fabric-chaincode-go v0.0.0-20201119163726-f8ef75b17719 github.com/hyperledger/fabric-config v0.1.0 github.com/hyperledger/fabric-lib-go v1.0.0 - github.com/hyperledger/fabric-protos-go v0.0.0-20220125190318-19041b215616 + github.com/hyperledger/fabric-protos-go v0.0.0-20220315113721-7dc293e117f7 github.com/kr/pretty v0.3.0 github.com/miekg/pkcs11 v1.1.1 github.com/mitchellh/mapstructure v1.3.2 diff --git a/go.sum b/go.sum index f3c5cc50021..3657aa9b204 100644 --- a/go.sum +++ b/go.sum @@ -239,8 +239,8 @@ github.com/hyperledger/fabric-lib-go v1.0.0/go.mod h1:H362nMlunurmHwkYqR5uHL2UDW github.com/hyperledger/fabric-protos-go v0.0.0-20190919234611-2a87503ac7c9/go.mod h1:xVYTjK4DtZRBxZ2D9aE4y6AbLaPwue2o/criQyQbVD0= github.com/hyperledger/fabric-protos-go v0.0.0-20200424173316-dd554ba3746e/go.mod h1:xVYTjK4DtZRBxZ2D9aE4y6AbLaPwue2o/criQyQbVD0= github.com/hyperledger/fabric-protos-go v0.0.0-20210911123859-041d13f0980c/go.mod h1:xVYTjK4DtZRBxZ2D9aE4y6AbLaPwue2o/criQyQbVD0= -github.com/hyperledger/fabric-protos-go v0.0.0-20220125190318-19041b215616 h1:CZrcDuLxBorn/xvbQl/r9kC0pniDEm0GuiBn9GgfY3c= -github.com/hyperledger/fabric-protos-go v0.0.0-20220125190318-19041b215616/go.mod h1:xVYTjK4DtZRBxZ2D9aE4y6AbLaPwue2o/criQyQbVD0= +github.com/hyperledger/fabric-protos-go v0.0.0-20220315113721-7dc293e117f7 h1:YV+siZuYQZwENjRH00t7ZS0CTlywt8Qog/SzL/jf6kE= +github.com/hyperledger/fabric-protos-go v0.0.0-20220315113721-7dc293e117f7/go.mod h1:xVYTjK4DtZRBxZ2D9aE4y6AbLaPwue2o/criQyQbVD0= github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= diff --git a/integration/gateway/gateway_test.go b/integration/gateway/gateway_test.go index 8b80432e88a..00f2c1af4f4 100644 --- a/integration/gateway/gateway_test.go +++ b/integration/gateway/gateway_test.go @@ -211,6 +211,7 @@ var _ = Describe("GatewayService", func() { chaincodeEvents := func( ctx context.Context, startPosition *orderer.SeekPosition, + afterTxID string, identity func() ([]byte, error), sign func(msg []byte) ([]byte, error), ) (gateway.Gateway_ChaincodeEventsClient, error) { @@ -225,6 +226,9 @@ var _ = Describe("GatewayService", func() { if startPosition != nil { request.StartPosition = startPosition } + if len(afterTxID) > 0 { + request.AfterTransactionId = afterTxID + } requestBytes, err := proto.Marshal(request) Expect(err).NotTo(HaveOccurred()) @@ -332,7 +336,7 @@ var _ = Describe("GatewayService", func() { }, } - eventsClient, err := chaincodeEvents(eventCtx, startPosition, signingIdentity.Serialize, signingIdentity.Sign) + eventsClient, err := chaincodeEvents(eventCtx, startPosition, "", signingIdentity.Serialize, signingIdentity.Sign) Expect(err).NotTo(HaveOccurred()) _, transactionID := submitTransaction("event", []byte("EVENT_NAME"), []byte("EVENT_PAYLOAD")) @@ -366,7 +370,7 @@ var _ = Describe("GatewayService", func() { }, } - eventsClient, err := chaincodeEvents(eventCtx, startPosition, signingIdentity.Serialize, signingIdentity.Sign) + eventsClient, err := chaincodeEvents(eventCtx, startPosition, "", signingIdentity.Serialize, signingIdentity.Sign) Expect(err).NotTo(HaveOccurred()) event, err := eventsClient.Recv() @@ -383,13 +387,50 @@ var _ = Describe("GatewayService", func() { Expect(proto.Equal(event.Events[0], expectedEvent)).To(BeTrue(), "Expected\n\t%#v\nto proto.Equal\n\t%#v", event.Events[0], expectedEvent) }) + It("should respond with replayed chaincode events after specified transaction ID", func() { + _, afterTransactionID := submitTransaction("event", []byte("WRONG_EVENT_NAME"), []byte("WRONG_EVENT_PAYLOAD")) + _, nextTransactionID := submitTransaction("event", []byte("CORRECT_EVENT_NAME"), []byte("CORRECT_EVENT_PAYLOAD")) + + statusResult, err := commitStatus(afterTransactionID, signingIdentity.Serialize, signingIdentity.Sign) + Expect(err).NotTo(HaveOccurred()) + + _, err = commitStatus(nextTransactionID, signingIdentity.Serialize, signingIdentity.Sign) + Expect(err).NotTo(HaveOccurred()) + + eventCtx, cancel := context.WithTimeout(ctx, 30*time.Second) + defer cancel() + + startPosition := &orderer.SeekPosition{ + Type: &orderer.SeekPosition_Specified{ + Specified: &orderer.SeekSpecified{ + Number: statusResult.BlockNumber, + }, + }, + } + + eventsClient, err := chaincodeEvents(eventCtx, startPosition, afterTransactionID, signingIdentity.Serialize, signingIdentity.Sign) + Expect(err).NotTo(HaveOccurred()) + + event, err := eventsClient.Recv() + Expect(err).NotTo(HaveOccurred()) + + Expect(event.Events).To(HaveLen(1), "number of events") + expectedEvent := &peer.ChaincodeEvent{ + ChaincodeId: "gatewaycc", + TxId: nextTransactionID, + EventName: "CORRECT_EVENT_NAME", + Payload: []byte("CORRECT_EVENT_PAYLOAD"), + } + Expect(proto.Equal(event.Events[0], expectedEvent)).To(BeTrue(), "Expected\n\t%#v\nto proto.Equal\n\t%#v", event.Events[0], expectedEvent) + }) + It("should default to next commit if start position not specified", func() { eventCtx, cancel := context.WithTimeout(ctx, 30*time.Second) defer cancel() var startPosition *orderer.SeekPosition - eventsClient, err := chaincodeEvents(eventCtx, startPosition, signingIdentity.Serialize, signingIdentity.Sign) + eventsClient, err := chaincodeEvents(eventCtx, startPosition, "", signingIdentity.Serialize, signingIdentity.Sign) Expect(err).NotTo(HaveOccurred()) _, transactionID := submitTransaction("event", []byte("EVENT_NAME"), []byte("EVENT_PAYLOAD")) @@ -419,7 +460,7 @@ var _ = Describe("GatewayService", func() { }, } - eventsClient, err := chaincodeEvents(eventCtx, startPosition, badIdentity.Serialize, signingIdentity.Sign) + eventsClient, err := chaincodeEvents(eventCtx, startPosition, "", badIdentity.Serialize, signingIdentity.Sign) Expect(err).NotTo(HaveOccurred()) event, err := eventsClient.Recv() @@ -443,7 +484,7 @@ var _ = Describe("GatewayService", func() { }, } - eventsClient, err := chaincodeEvents(eventCtx, startPosition, signingIdentity.Serialize, badSign) + eventsClient, err := chaincodeEvents(eventCtx, startPosition, "", signingIdentity.Serialize, badSign) Expect(err).NotTo(HaveOccurred()) event, err := eventsClient.Recv() diff --git a/internal/pkg/gateway/api.go b/internal/pkg/gateway/api.go index 6b49902b3c9..b784fbd0e1a 100644 --- a/internal/pkg/gateway/api.go +++ b/internal/pkg/gateway/api.go @@ -534,6 +534,8 @@ func (gs *Server) ChaincodeEvents(signedRequest *gp.SignedChaincodeEventsRequest return err } + isMatch := chaincodeEventMatcher(request) + ledgerIter, err := ledger.GetBlocksIterator(startBlock) if err != nil { return status.Error(codes.Aborted, err.Error()) @@ -549,9 +551,8 @@ func (gs *Server) ChaincodeEvents(signedRequest *gp.SignedChaincodeEventsRequest } var matchingEvents []*peer.ChaincodeEvent - for _, event := range response.Events { - if event.GetChaincodeId() == request.GetChaincodeId() { + if isMatch(event) { matchingEvents = append(matchingEvents, event) } } @@ -572,6 +573,30 @@ func (gs *Server) ChaincodeEvents(signedRequest *gp.SignedChaincodeEventsRequest } } +func chaincodeEventMatcher(request *gp.ChaincodeEventsRequest) func(event *peer.ChaincodeEvent) bool { + chaincodeID := request.GetChaincodeId() + previousTransactionID := request.GetAfterTransactionId() + + if len(previousTransactionID) == 0 { + return func(event *peer.ChaincodeEvent) bool { + return event.GetChaincodeId() == chaincodeID + } + } + + passedPreviousTransaction := false + + return func(event *peer.ChaincodeEvent) bool { + if !passedPreviousTransaction { + if event.TxId == previousTransactionID { + passedPreviousTransaction = true + } + return false + } + + return event.GetChaincodeId() == chaincodeID + } +} + func startBlockFromLedgerPosition(ledger ledger.Ledger, position *ab.SeekPosition) (uint64, error) { switch seek := position.GetType().(type) { case nil: diff --git a/internal/pkg/gateway/api_test.go b/internal/pkg/gateway/api_test.go index 77c4a9ad6d6..81a6758ceaf 100644 --- a/internal/pkg/gateway/api_test.go +++ b/internal/pkg/gateway/api_test.go @@ -152,6 +152,7 @@ type testDef struct { interest *peer.ChaincodeInterest blocks []*cp.Block startPosition *ab.SeekPosition + afterTxID string } type preparedTest struct { @@ -1389,131 +1390,109 @@ func TestCommitStatus(t *testing.T) { func TestChaincodeEvents(t *testing.T) { now := time.Now() - transactionId := "TRANSACTION_ID" - - matchChaincodeEvent := &peer.ChaincodeEvent{ - ChaincodeId: testChaincode, - TxId: transactionId, - EventName: "EVENT_NAME", - Payload: []byte("PAYLOAD"), - } - - mismatchChaincodeEvent := &peer.ChaincodeEvent{ - ChaincodeId: "WRONG_CHAINCODE_ID", - TxId: transactionId, - EventName: "EVENT_NAME", - Payload: []byte("PAYLOAD"), - } - - txHeader := &cp.Header{ - ChannelHeader: protoutil.MarshalOrPanic(&cp.ChannelHeader{ - Type: int32(cp.HeaderType_ENDORSER_TRANSACTION), - Timestamp: ×tamp.Timestamp{ - Seconds: now.Unix(), - Nanos: int32(now.Nanosecond()), - }, - TxId: transactionId, - }), + lastTransactionID := "LAST_TX_ID" + + newChaincodeEvent := func(chaincodeName string, transactionID string) *peer.ChaincodeEvent { + return &peer.ChaincodeEvent{ + ChaincodeId: chaincodeName, + TxId: transactionID, + EventName: "EVENT_NAME", + Payload: []byte("PAYLOAD"), + } } - matchTxEnvelope := &cp.Envelope{ - Payload: protoutil.MarshalOrPanic(&cp.Payload{ - Header: txHeader, - Data: protoutil.MarshalOrPanic(&peer.Transaction{ - Actions: []*peer.TransactionAction{ - { - Payload: protoutil.MarshalOrPanic(&peer.ChaincodeActionPayload{ - Action: &peer.ChaincodeEndorsedAction{ - ProposalResponsePayload: protoutil.MarshalOrPanic(&peer.ProposalResponsePayload{ - Extension: protoutil.MarshalOrPanic(&peer.ChaincodeAction{ - Events: protoutil.MarshalOrPanic(matchChaincodeEvent), - }), - }), - }, - }), - }, + newTransactionHeader := func(transactionID string) *cp.Header { + return &cp.Header{ + ChannelHeader: protoutil.MarshalOrPanic(&cp.ChannelHeader{ + Type: int32(cp.HeaderType_ENDORSER_TRANSACTION), + Timestamp: ×tamp.Timestamp{ + Seconds: now.Unix(), + Nanos: int32(now.Nanosecond()), }, + TxId: transactionID, }), - }), + } } - mismatchTxEnvelope := &cp.Envelope{ - Payload: protoutil.MarshalOrPanic(&cp.Payload{ - Header: txHeader, - Data: protoutil.MarshalOrPanic(&peer.Transaction{ - Actions: []*peer.TransactionAction{ - { - Payload: protoutil.MarshalOrPanic(&peer.ChaincodeActionPayload{ - Action: &peer.ChaincodeEndorsedAction{ - ProposalResponsePayload: protoutil.MarshalOrPanic(&peer.ProposalResponsePayload{ - Extension: protoutil.MarshalOrPanic(&peer.ChaincodeAction{ - Events: protoutil.MarshalOrPanic(mismatchChaincodeEvent), + newTransactionEnvelope := func(event *peer.ChaincodeEvent) *cp.Envelope { + return &cp.Envelope{ + Payload: protoutil.MarshalOrPanic(&cp.Payload{ + Header: newTransactionHeader(event.GetTxId()), + Data: protoutil.MarshalOrPanic(&peer.Transaction{ + Actions: []*peer.TransactionAction{ + { + Payload: protoutil.MarshalOrPanic(&peer.ChaincodeActionPayload{ + Action: &peer.ChaincodeEndorsedAction{ + ProposalResponsePayload: protoutil.MarshalOrPanic(&peer.ProposalResponsePayload{ + Extension: protoutil.MarshalOrPanic(&peer.ChaincodeAction{ + Events: protoutil.MarshalOrPanic(event), + }), }), - }), - }, - }), + }, + }), + }, }, - }, + }), }), - }), + } } - block100Proto := &cp.Block{ - Header: &cp.BlockHeader{ - Number: 100, - }, - Metadata: &cp.BlockMetadata{ - Metadata: [][]byte{ - nil, - nil, - { - byte(peer.TxValidationCode_VALID), - }, - nil, - nil, + newBlock := func(number uint64) *cp.Block { + return &cp.Block{ + Header: &cp.BlockHeader{ + Number: number, }, - }, - Data: &cp.BlockData{ - Data: [][]byte{ - protoutil.MarshalOrPanic(mismatchTxEnvelope), + Metadata: &cp.BlockMetadata{ + Metadata: make([][]byte, 5), }, - }, + Data: &cp.BlockData{ + Data: [][]byte{}, + }, + } } - block101Proto := &cp.Block{ - Header: &cp.BlockHeader{ - Number: 101, - }, - Metadata: &cp.BlockMetadata{ - Metadata: [][]byte{ - nil, - nil, - { - byte(peer.TxValidationCode_VALID), - byte(peer.TxValidationCode_VALID), - byte(peer.TxValidationCode_VALID), - }, - nil, - nil, - }, - }, - Data: &cp.BlockData{ - Data: [][]byte{ - protoutil.MarshalOrPanic(&cp.Envelope{ - Payload: protoutil.MarshalOrPanic(&cp.Payload{ - Header: &cp.Header{ - ChannelHeader: protoutil.MarshalOrPanic(&cp.ChannelHeader{ - Type: int32(cp.HeaderType_CONFIG_UPDATE), - }), - }, - }), + addTransaction := func(block *cp.Block, transaction *cp.Envelope, status peer.TxValidationCode) { + metadata := block.GetMetadata().GetMetadata() + metadata[cp.BlockMetadataIndex_TRANSACTIONS_FILTER] = append(metadata[cp.BlockMetadataIndex_TRANSACTIONS_FILTER], byte(status)) + + blockData := block.GetData() + blockData.Data = append(blockData.Data, protoutil.MarshalOrPanic(transaction)) + } + + matchEvent := newChaincodeEvent(testChaincode, "EXPECTED_TX_ID") + wrongChaincodeEvent := newChaincodeEvent("WRONG_CHAINCODE", "WRONG__TX_ID") + oldTransactionEvent := newChaincodeEvent(testChaincode, "OLD_TX_ID") + lastTransactionEvent := newChaincodeEvent(testChaincode, lastTransactionID) + lastTransactionWrongChaincodeEvent := newChaincodeEvent("WRONG_CHAINCODE", lastTransactionID) + + configTxEnvelope := &cp.Envelope{ + Payload: protoutil.MarshalOrPanic(&cp.Payload{ + Header: &cp.Header{ + ChannelHeader: protoutil.MarshalOrPanic(&cp.ChannelHeader{ + Type: int32(cp.HeaderType_CONFIG_UPDATE), }), - protoutil.MarshalOrPanic(mismatchTxEnvelope), - protoutil.MarshalOrPanic(matchTxEnvelope), }, - }, + }), } + noMatchingEventsBlock := newBlock(100) + addTransaction(noMatchingEventsBlock, newTransactionEnvelope(wrongChaincodeEvent), peer.TxValidationCode_VALID) + + matchingEventBlock := newBlock(101) + addTransaction(matchingEventBlock, configTxEnvelope, peer.TxValidationCode_VALID) + addTransaction(matchingEventBlock, newTransactionEnvelope(wrongChaincodeEvent), peer.TxValidationCode_VALID) + addTransaction(matchingEventBlock, newTransactionEnvelope(matchEvent), peer.TxValidationCode_VALID) + + partReadBlock := newBlock(200) + addTransaction(partReadBlock, newTransactionEnvelope(oldTransactionEvent), peer.TxValidationCode_VALID) + addTransaction(partReadBlock, newTransactionEnvelope(lastTransactionEvent), peer.TxValidationCode_VALID) + addTransaction(partReadBlock, newTransactionEnvelope(matchEvent), peer.TxValidationCode_VALID) + + differentChaincodePartReadBlock := newBlock(300) + addTransaction(differentChaincodePartReadBlock, newTransactionEnvelope(oldTransactionEvent), peer.TxValidationCode_VALID) + addTransaction(differentChaincodePartReadBlock, newTransactionEnvelope(lastTransactionWrongChaincodeEvent), peer.TxValidationCode_VALID) + addTransaction(differentChaincodePartReadBlock, newTransactionEnvelope(matchEvent), peer.TxValidationCode_VALID) + tests := []testDef{ { name: "error reading events", @@ -1524,17 +1503,17 @@ func TestChaincodeEvents(t *testing.T) { { name: "returns chaincode events", blocks: []*cp.Block{ - block101Proto, + matchingEventBlock, }, expectedResponses: []proto.Message{ &pb.ChaincodeEventsResponse{ - BlockNumber: block101Proto.GetHeader().GetNumber(), + BlockNumber: matchingEventBlock.GetHeader().GetNumber(), Events: []*peer.ChaincodeEvent{ { ChaincodeId: testChaincode, - TxId: matchChaincodeEvent.GetTxId(), - EventName: matchChaincodeEvent.GetEventName(), - Payload: matchChaincodeEvent.GetPayload(), + TxId: matchEvent.GetTxId(), + EventName: matchEvent.GetEventName(), + Payload: matchEvent.GetPayload(), }, }, }, @@ -1543,18 +1522,79 @@ func TestChaincodeEvents(t *testing.T) { { name: "skips blocks containing only non-matching chaincode events", blocks: []*cp.Block{ - block100Proto, - block101Proto, + noMatchingEventsBlock, + matchingEventBlock, + }, + expectedResponses: []proto.Message{ + &pb.ChaincodeEventsResponse{ + BlockNumber: matchingEventBlock.GetHeader().GetNumber(), + Events: []*peer.ChaincodeEvent{ + { + ChaincodeId: testChaincode, + TxId: matchEvent.GetTxId(), + EventName: matchEvent.GetEventName(), + Payload: matchEvent.GetPayload(), + }, + }, + }, + }, + }, + { + name: "skips previously seen transactions", + blocks: []*cp.Block{ + partReadBlock, }, + afterTxID: lastTransactionID, expectedResponses: []proto.Message{ &pb.ChaincodeEventsResponse{ - BlockNumber: block101Proto.GetHeader().GetNumber(), + BlockNumber: partReadBlock.GetHeader().GetNumber(), Events: []*peer.ChaincodeEvent{ { ChaincodeId: testChaincode, - TxId: matchChaincodeEvent.GetTxId(), - EventName: matchChaincodeEvent.GetEventName(), - Payload: matchChaincodeEvent.GetPayload(), + TxId: matchEvent.GetTxId(), + EventName: matchEvent.GetEventName(), + Payload: matchEvent.GetPayload(), + }, + }, + }, + }, + }, + { + name: "identifies previous transaction ID if from different chaincode", + blocks: []*cp.Block{ + differentChaincodePartReadBlock, + }, + afterTxID: lastTransactionID, + expectedResponses: []proto.Message{ + &pb.ChaincodeEventsResponse{ + BlockNumber: differentChaincodePartReadBlock.GetHeader().GetNumber(), + Events: []*peer.ChaincodeEvent{ + { + ChaincodeId: testChaincode, + TxId: matchEvent.GetTxId(), + EventName: matchEvent.GetEventName(), + Payload: matchEvent.GetPayload(), + }, + }, + }, + }, + }, + { + name: "identifies previous transaction ID if not in start block", + blocks: []*cp.Block{ + noMatchingEventsBlock, + partReadBlock, + }, + afterTxID: lastTransactionID, + expectedResponses: []proto.Message{ + &pb.ChaincodeEventsResponse{ + BlockNumber: partReadBlock.GetHeader().GetNumber(), + Events: []*peer.ChaincodeEvent{ + { + ChaincodeId: testChaincode, + TxId: matchEvent.GetTxId(), + EventName: matchEvent.GetEventName(), + Payload: matchEvent.GetPayload(), }, }, }, @@ -1570,7 +1610,7 @@ func TestChaincodeEvents(t *testing.T) { { name: "returns error obtaining ledger", blocks: []*cp.Block{ - block101Proto, + matchingEventBlock, }, errCode: codes.NotFound, errString: "LEDGER_PROVIDER_ERROR", @@ -1581,7 +1621,7 @@ func TestChaincodeEvents(t *testing.T) { { name: "returns error obtaining ledger height", blocks: []*cp.Block{ - block101Proto, + matchingEventBlock, }, errCode: codes.Aborted, errString: "LEDGER_INFO_ERROR", @@ -1592,7 +1632,7 @@ func TestChaincodeEvents(t *testing.T) { { name: "uses block height as start block if next commit is specified as start position", blocks: []*cp.Block{ - block101Proto, + matchingEventBlock, }, postSetup: func(t *testing.T, test *preparedTest) { ledgerInfo := &cp.BlockchainInfo{ @@ -1613,7 +1653,7 @@ func TestChaincodeEvents(t *testing.T) { { name: "uses specified start block", blocks: []*cp.Block{ - block101Proto, + matchingEventBlock, }, postSetup: func(t *testing.T, test *preparedTest) { ledgerInfo := &cp.BlockchainInfo{ @@ -1636,7 +1676,7 @@ func TestChaincodeEvents(t *testing.T) { { name: "defaults to next commit if start position not specified", blocks: []*cp.Block{ - block101Proto, + matchingEventBlock, }, postSetup: func(t *testing.T, test *preparedTest) { ledgerInfo := &cp.BlockchainInfo{ @@ -1652,7 +1692,7 @@ func TestChaincodeEvents(t *testing.T) { { name: "returns error for unsupported start position type", blocks: []*cp.Block{ - block101Proto, + matchingEventBlock, }, startPosition: &ab.SeekPosition{ Type: &ab.SeekPosition_Oldest{ @@ -1665,7 +1705,7 @@ func TestChaincodeEvents(t *testing.T) { { name: "returns error obtaining ledger iterator", blocks: []*cp.Block{ - block101Proto, + matchingEventBlock, }, errCode: codes.Aborted, errString: "LEDGER_ITERATOR_ERROR", @@ -1676,7 +1716,7 @@ func TestChaincodeEvents(t *testing.T) { { name: "returns canceled status error when client closes stream", blocks: []*cp.Block{ - block101Proto, + matchingEventBlock, }, errCode: codes.Canceled, postSetup: func(t *testing.T, test *preparedTest) { @@ -1686,7 +1726,7 @@ func TestChaincodeEvents(t *testing.T) { { name: "returns status error from send to client", blocks: []*cp.Block{ - block101Proto, + matchingEventBlock, }, errCode: codes.Aborted, errString: "SEND_ERROR", @@ -1732,6 +1772,9 @@ func TestChaincodeEvents(t *testing.T) { if tt.startPosition != nil { request.StartPosition = tt.startPosition } + if len(tt.afterTxID) > 0 { + request.AfterTransactionId = tt.afterTxID + } requestBytes, err := proto.Marshal(request) require.NoError(t, err) diff --git a/vendor/github.com/hyperledger/fabric-protos-go/gateway/gateway.pb.go b/vendor/github.com/hyperledger/fabric-protos-go/gateway/gateway.pb.go index 4e0c0793788..4b4210ef74c 100644 --- a/vendor/github.com/hyperledger/fabric-protos-go/gateway/gateway.pb.go +++ b/vendor/github.com/hyperledger/fabric-protos-go/gateway/gateway.pb.go @@ -562,10 +562,14 @@ type ChaincodeEventsRequest struct { // Client requestor identity. Identity []byte `protobuf:"bytes,3,opt,name=identity,proto3" json:"identity,omitempty"` // Position within the ledger at which to start reading events. - StartPosition *orderer.SeekPosition `protobuf:"bytes,4,opt,name=start_position,json=startPosition,proto3" json:"start_position,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + StartPosition *orderer.SeekPosition `protobuf:"bytes,4,opt,name=start_position,json=startPosition,proto3" json:"start_position,omitempty"` + // Only returns events after this transaction ID. Transactions up to and including this one should be ignored. This + // is used to allow resume of event listening from a certain position within a start block specified by + // start_position. + AfterTransactionId string `protobuf:"bytes,5,opt,name=after_transaction_id,json=afterTransactionId,proto3" json:"after_transaction_id,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *ChaincodeEventsRequest) Reset() { *m = ChaincodeEventsRequest{} } @@ -621,6 +625,13 @@ func (m *ChaincodeEventsRequest) GetStartPosition() *orderer.SeekPosition { return nil } +func (m *ChaincodeEventsRequest) GetAfterTransactionId() string { + if m != nil { + return m.AfterTransactionId + } + return "" +} + // ChaincodeEventsResponse returns chaincode events emitted from a specific block. type ChaincodeEventsResponse struct { // Chaincode events emitted by the requested chaincode. The events are presented in the same order that the @@ -867,61 +878,62 @@ func init() { func init() { proto.RegisterFile("gateway/gateway.proto", fileDescriptor_285396c8df15061f) } var fileDescriptor_285396c8df15061f = []byte{ - // 853 bytes of a gzipped FileDescriptorProto + // 875 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x56, 0xdd, 0x6e, 0xe3, 0x44, - 0x18, 0x95, 0x37, 0x25, 0x6d, 0xbe, 0xa6, 0x69, 0xe5, 0xb4, 0x69, 0xd6, 0xea, 0x4a, 0x59, 0x4b, - 0x95, 0x7a, 0xc1, 0x3a, 0x4b, 0xb9, 0x40, 0x48, 0x95, 0x90, 0xb6, 0x44, 0xa8, 0x37, 0x10, 0x9c, - 0x55, 0x85, 0x10, 0x52, 0x34, 0x89, 0x3f, 0x1c, 0x53, 0x7b, 0xc6, 0xcc, 0x4c, 0xba, 0x94, 0x47, - 0xe1, 0x0d, 0xb8, 0xe7, 0x55, 0xb8, 0xe1, 0x39, 0x78, 0x00, 0xe4, 0xf9, 0x71, 0xec, 0x26, 0xad, - 0x8a, 0xe8, 0x05, 0x57, 0xce, 0x7c, 0x3f, 0x33, 0x67, 0xce, 0x9c, 0x39, 0x13, 0x38, 0x8a, 0x89, - 0xc4, 0x0f, 0xe4, 0x6e, 0x68, 0xbe, 0x41, 0xce, 0x99, 0x64, 0xee, 0xb6, 0x19, 0x7a, 0x5e, 0x8e, - 0xc8, 0x87, 0xf3, 0x05, 0x49, 0xe8, 0x9c, 0x45, 0x38, 0xc5, 0x5b, 0xa4, 0x52, 0x17, 0x79, 0x5d, - 0x95, 0xcb, 0x39, 0xcb, 0x99, 0x20, 0xa9, 0x09, 0x9e, 0xd4, 0x82, 0x53, 0x8e, 0x22, 0x67, 0x54, - 0xa0, 0xc9, 0xf6, 0x54, 0x56, 0x72, 0x42, 0x05, 0x99, 0xcb, 0x84, 0x51, 0x3b, 0xd5, 0x9c, 0x65, - 0x19, 0xa3, 0x43, 0xfd, 0x31, 0xc1, 0x03, 0xc6, 0x23, 0xe4, 0xc8, 0x87, 0x64, 0xa6, 0x23, 0xfe, - 0x5f, 0x0e, 0x74, 0x46, 0x34, 0x62, 0x5c, 0x60, 0x88, 0x3f, 0x2f, 0x51, 0x48, 0xf7, 0x14, 0x3a, - 0x95, 0xe9, 0xa6, 0x49, 0xd4, 0x77, 0x06, 0xce, 0x59, 0x2b, 0xdc, 0xab, 0x44, 0xaf, 0x22, 0xf7, - 0x15, 0xc0, 0x7c, 0x41, 0x28, 0xc5, 0xb4, 0x28, 0x79, 0xa1, 0x4a, 0x5a, 0x26, 0x72, 0x15, 0xb9, - 0x57, 0x70, 0xa8, 0x21, 0x63, 0x34, 0xad, 0x34, 0xf6, 0x1b, 0x03, 0xe7, 0x6c, 0xf7, 0xbc, 0xa7, - 0x97, 0x17, 0xc1, 0x24, 0x89, 0x29, 0x46, 0x63, 0xb3, 0xb9, 0xb0, 0x6b, 0x7b, 0xde, 0xaf, 0x5a, - 0xdc, 0xcf, 0xe0, 0x18, 0x15, 0xc4, 0x84, 0xc6, 0x53, 0xc6, 0x63, 0x42, 0x93, 0x5f, 0x49, 0x91, - 0x11, 0xfd, 0xad, 0x41, 0xe3, 0xac, 0x15, 0xf6, 0xca, 0xf4, 0x37, 0xd5, 0xac, 0x7f, 0x0d, 0xfb, - 0xe5, 0xde, 0x34, 0x69, 0xee, 0x65, 0x01, 0x0b, 0x73, 0xc2, 0xef, 0xc1, 0x72, 0x14, 0xac, 0x83, - 0xc0, 0xd0, 0x35, 0xa2, 0xb7, 0x98, 0xb2, 0x1c, 0x0b, 0x40, 0xba, 0xba, 0x02, 0xc8, 0xff, 0xcd, - 0x81, 0xbd, 0xc9, 0x72, 0x96, 0x25, 0xf2, 0x79, 0x39, 0x7b, 0x08, 0x5c, 0xe3, 0xdf, 0x80, 0x3b, - 0x80, 0x8e, 0xc5, 0xa6, 0xf7, 0xec, 0x4f, 0xe0, 0xa5, 0xa6, 0xf9, 0x92, 0x65, 0x59, 0x22, 0x27, - 0x92, 0xc8, 0xa5, 0xb0, 0xc8, 0xfb, 0xb0, 0xcd, 0xf5, 0x4f, 0x05, 0xb9, 0x1d, 0xda, 0xa1, 0x7b, - 0x02, 0x2d, 0x91, 0xc4, 0x94, 0xc8, 0x25, 0x47, 0x85, 0xb5, 0x1d, 0xae, 0x02, 0xfe, 0x07, 0xe8, - 0x6e, 0x9a, 0xee, 0x79, 0x88, 0xf0, 0x60, 0x27, 0x89, 0x90, 0xca, 0x44, 0xde, 0xa9, 0xcd, 0xb7, - 0xc3, 0x72, 0xec, 0xdf, 0xc0, 0x61, 0x7d, 0x61, 0x73, 0xb2, 0x6f, 0xa1, 0xc9, 0x51, 0x2c, 0x53, - 0xbd, 0x8f, 0xce, 0x79, 0xdf, 0x4a, 0xec, 0xfd, 0x2f, 0xd7, 0x24, 0x4d, 0x22, 0xa5, 0x89, 0x4b, - 0x16, 0x61, 0x68, 0xea, 0xdc, 0xd7, 0xd0, 0x9e, 0xa5, 0x6c, 0x7e, 0x33, 0xa5, 0xcb, 0x6c, 0x86, - 0x5c, 0xc1, 0xd8, 0x0a, 0x77, 0x55, 0xec, 0x6b, 0x15, 0xf2, 0xff, 0x74, 0x60, 0x7f, 0x74, 0x4b, - 0xd2, 0x25, 0x91, 0xff, 0xdf, 0xfb, 0xf1, 0x09, 0x1c, 0x4a, 0xc2, 0x63, 0x94, 0x1b, 0x2f, 0x47, - 0x57, 0xe7, 0xea, 0x37, 0xe3, 0x02, 0x0e, 0x56, 0xdb, 0x32, 0x04, 0x9e, 0xd5, 0x08, 0x2c, 0xf4, - 0x66, 0x30, 0xd8, 0x0a, 0x4b, 0x9c, 0x7f, 0x0d, 0x27, 0x46, 0x50, 0xd6, 0xc5, 0x46, 0x85, 0x89, - 0xfd, 0x67, 0x4d, 0xfd, 0xe1, 0x40, 0xef, 0x81, 0x29, 0xeb, 0x6c, 0x3a, 0xf7, 0xd9, 0x7c, 0x0d, - 0xed, 0x95, 0xa3, 0x96, 0x74, 0xef, 0x96, 0xb1, 0xc7, 0x35, 0xe5, 0x5e, 0x40, 0x47, 0x48, 0xc2, - 0xe5, 0x34, 0x67, 0x22, 0x51, 0xc7, 0xb0, 0xa5, 0x28, 0x38, 0x0a, 0x8c, 0x61, 0x06, 0x13, 0xc4, - 0x9b, 0xb1, 0x49, 0x86, 0x7b, 0xaa, 0xd8, 0x0e, 0xfd, 0x14, 0x8e, 0xd7, 0x50, 0x1b, 0x4e, 0x03, - 0x68, 0x2a, 0x7f, 0x17, 0x7d, 0x67, 0xd0, 0xa8, 0x9e, 0x6b, 0xbd, 0x21, 0x34, 0x55, 0x4f, 0x91, - 0xe4, 0x77, 0xb0, 0x3b, 0xe2, 0x9c, 0xf1, 0x2f, 0x51, 0x92, 0x24, 0x2d, 0xb8, 0x26, 0x51, 0xc4, - 0x51, 0x08, 0xc3, 0x8a, 0x1d, 0xba, 0x47, 0xd0, 0xcc, 0x44, 0xbe, 0x62, 0xe3, 0xa3, 0x4c, 0xe4, - 0x57, 0x51, 0xd1, 0x90, 0xa1, 0x10, 0x24, 0x46, 0x45, 0x43, 0x2b, 0xb4, 0x43, 0xff, 0x77, 0x07, - 0xba, 0xe3, 0x0d, 0xfa, 0x7a, 0xa2, 0xe0, 0xcf, 0x61, 0xc7, 0x3e, 0x52, 0x6a, 0xc5, 0x87, 0x55, - 0x5c, 0xd6, 0x3d, 0x66, 0xed, 0x8d, 0x47, 0xad, 0xfd, 0xa7, 0x02, 0xea, 0x9a, 0xf9, 0x3d, 0x15, - 0xea, 0xc7, 0xb0, 0x83, 0xc6, 0x44, 0x0d, 0xd4, 0x75, 0x73, 0x2d, 0x2b, 0xce, 0xff, 0x7e, 0x01, - 0xdb, 0x5f, 0xe9, 0xd7, 0xdb, 0xbd, 0x80, 0x6d, 0xf3, 0xa4, 0xb8, 0xc7, 0x81, 0x7d, 0xe1, 0xeb, - 0x0f, 0xa8, 0xd7, 0x5f, 0x4f, 0x18, 0x39, 0x7c, 0x0e, 0x4d, 0xed, 0xcd, 0x6e, 0xaf, 0xac, 0xa9, - 0x3d, 0x24, 0xde, 0xf1, 0x5a, 0xdc, 0xb4, 0x7e, 0x0b, 0xed, 0xaa, 0xed, 0xb9, 0xfe, 0xaa, 0xf0, - 0x21, 0x6f, 0xf7, 0x5e, 0x95, 0x35, 0x1b, 0x1d, 0xf3, 0x0b, 0xd8, 0xb1, 0x26, 0xe0, 0x56, 0x30, - 0xd7, 0xed, 0xce, 0x7b, 0xb9, 0x21, 0x63, 0x26, 0xf8, 0x01, 0xf6, 0xef, 0x09, 0xdf, 0x3d, 0xbd, - 0x0f, 0x6b, 0xe3, 0x75, 0xf6, 0x06, 0x2b, 0x64, 0x9b, 0x6f, 0xce, 0x5b, 0xe7, 0xdd, 0x02, 0x4e, - 0x19, 0x8f, 0x83, 0xc5, 0x5d, 0x8e, 0x3c, 0xc5, 0x28, 0x46, 0x1e, 0xfc, 0x48, 0x66, 0x3c, 0x99, - 0x5b, 0x55, 0x99, 0x29, 0xde, 0xb5, 0xcd, 0xe1, 0x8c, 0x8b, 0xf0, 0xd8, 0xf9, 0x7e, 0x18, 0x27, - 0x72, 0xb1, 0x9c, 0x15, 0x27, 0x3a, 0xac, 0x74, 0x0f, 0x75, 0xf7, 0x1b, 0xdd, 0xfd, 0x26, 0x66, - 0xf6, 0x1f, 0xda, 0xac, 0xa9, 0x42, 0x9f, 0xfe, 0x13, 0x00, 0x00, 0xff, 0xff, 0x7a, 0xac, 0xc2, - 0x21, 0xbb, 0x09, 0x00, 0x00, + 0x14, 0x96, 0x37, 0xdd, 0xb4, 0x39, 0x4d, 0xd3, 0x6a, 0xd2, 0xa6, 0x59, 0xab, 0x2b, 0x65, 0x2d, + 0x55, 0xea, 0x05, 0xeb, 0x94, 0x72, 0x81, 0x90, 0x2a, 0x21, 0x6d, 0x89, 0x50, 0x6f, 0x20, 0x38, + 0x55, 0x85, 0x10, 0x52, 0x34, 0x89, 0xcf, 0x3a, 0xa6, 0xb6, 0xc7, 0xcc, 0x8c, 0xbb, 0x94, 0x47, + 0xe1, 0x0d, 0x78, 0x20, 0x6e, 0x78, 0x00, 0x9e, 0x80, 0x07, 0x40, 0x1e, 0xcf, 0x38, 0x76, 0x92, + 0x56, 0x45, 0xec, 0x05, 0x57, 0xc9, 0x9c, 0x9f, 0x99, 0xef, 0x7c, 0xf3, 0xcd, 0x39, 0x86, 0xa3, + 0x80, 0x4a, 0xfc, 0x40, 0x1f, 0x86, 0xfa, 0xd7, 0x4d, 0x39, 0x93, 0x8c, 0x6c, 0xeb, 0xa5, 0x6d, + 0xa7, 0x88, 0x7c, 0x38, 0x5f, 0xd0, 0x30, 0x99, 0x33, 0x1f, 0xa7, 0x78, 0x8f, 0x89, 0x2c, 0x82, + 0xec, 0xae, 0xf2, 0xa5, 0x9c, 0xa5, 0x4c, 0xd0, 0x48, 0x1b, 0x4f, 0x6a, 0xc6, 0x29, 0x47, 0x91, + 0xb2, 0x44, 0xa0, 0xf6, 0xf6, 0x94, 0x57, 0x72, 0x9a, 0x08, 0x3a, 0x97, 0x21, 0x4b, 0xcc, 0x56, + 0x73, 0x16, 0xc7, 0x2c, 0x19, 0x16, 0x3f, 0xda, 0x78, 0xc0, 0xb8, 0x8f, 0x1c, 0xf9, 0x90, 0xce, + 0x0a, 0x8b, 0xf3, 0xa7, 0x05, 0x9d, 0x51, 0xe2, 0x33, 0x2e, 0xd0, 0xc3, 0x9f, 0x33, 0x14, 0x92, + 0x9c, 0x42, 0xa7, 0xb2, 0xdd, 0x34, 0xf4, 0xfb, 0xd6, 0xc0, 0x3a, 0x6b, 0x79, 0x7b, 0x15, 0xeb, + 0xb5, 0x4f, 0x5e, 0x03, 0xcc, 0x17, 0x34, 0x49, 0x30, 0xca, 0x43, 0x5e, 0xa8, 0x90, 0x96, 0xb6, + 0x5c, 0xfb, 0xe4, 0x1a, 0x0e, 0x0b, 0xc8, 0xe8, 0x4f, 0x2b, 0x89, 0xfd, 0xc6, 0xc0, 0x3a, 0xdb, + 0xbd, 0xe8, 0x15, 0xc7, 0x0b, 0x77, 0x12, 0x06, 0x09, 0xfa, 0x63, 0x5d, 0x9c, 0xd7, 0x35, 0x39, + 0x37, 0xcb, 0x14, 0xf2, 0x39, 0x1c, 0xa3, 0x82, 0x18, 0x26, 0xc1, 0x94, 0xf1, 0x80, 0x26, 0xe1, + 0xaf, 0x34, 0xf7, 0x88, 0xfe, 0xd6, 0xa0, 0x71, 0xd6, 0xf2, 0x7a, 0xa5, 0xfb, 0xdb, 0xaa, 0xd7, + 0xb9, 0x85, 0xfd, 0xb2, 0xb6, 0x82, 0x34, 0x72, 0x95, 0xc3, 0xc2, 0x94, 0xf2, 0x15, 0x58, 0x96, + 0x82, 0x75, 0xe0, 0x6a, 0xba, 0x46, 0xc9, 0x3d, 0x46, 0x2c, 0xc5, 0x1c, 0x50, 0x11, 0x5d, 0x01, + 0xe4, 0xfc, 0x66, 0xc1, 0xde, 0x24, 0x9b, 0xc5, 0xa1, 0xfc, 0xb8, 0x9c, 0x3d, 0x06, 0xae, 0xf1, + 0x6f, 0xc0, 0x1d, 0x40, 0xc7, 0x60, 0x2b, 0x6a, 0x76, 0x26, 0xf0, 0xaa, 0xa0, 0xf9, 0x8a, 0xc5, + 0x71, 0x28, 0x27, 0x92, 0xca, 0x4c, 0x18, 0xe4, 0x7d, 0xd8, 0xe6, 0xc5, 0x5f, 0x05, 0xb9, 0xed, + 0x99, 0x25, 0x39, 0x81, 0x96, 0x08, 0x83, 0x84, 0xca, 0x8c, 0xa3, 0xc2, 0xda, 0xf6, 0x96, 0x06, + 0xe7, 0x03, 0x74, 0x37, 0x6d, 0xf7, 0x71, 0x88, 0xb0, 0x61, 0x27, 0xf4, 0x31, 0x91, 0xa1, 0x7c, + 0x50, 0xc5, 0xb7, 0xbd, 0x72, 0xed, 0xdc, 0xc1, 0x61, 0xfd, 0x60, 0x7d, 0xb3, 0xe7, 0xd0, 0xe4, + 0x28, 0xb2, 0xa8, 0xa8, 0xa3, 0x73, 0xd1, 0x37, 0x12, 0xbb, 0xf9, 0xe5, 0x96, 0x46, 0xa1, 0xaf, + 0x34, 0x71, 0xc5, 0x7c, 0xf4, 0x74, 0x1c, 0x79, 0x03, 0xed, 0x59, 0xc4, 0xe6, 0x77, 0xd3, 0x24, + 0x8b, 0x67, 0xc8, 0x15, 0x8c, 0x2d, 0x6f, 0x57, 0xd9, 0xbe, 0x51, 0x26, 0xe7, 0x0f, 0x0b, 0xf6, + 0x47, 0xf7, 0x34, 0xca, 0xa8, 0xfc, 0xff, 0xbe, 0x8f, 0x4f, 0xe1, 0x50, 0x52, 0x1e, 0xa0, 0xdc, + 0xf8, 0x38, 0xba, 0x85, 0xaf, 0xfe, 0x32, 0x2e, 0xe1, 0x60, 0x59, 0x96, 0x26, 0xf0, 0xac, 0x46, + 0x60, 0xae, 0x37, 0x8d, 0xc1, 0x44, 0x18, 0xe2, 0x9c, 0x5b, 0x38, 0xd1, 0x82, 0x32, 0x5d, 0x6c, + 0x94, 0x37, 0xb1, 0xff, 0xac, 0xa9, 0xbf, 0x2c, 0xe8, 0x3d, 0xb2, 0x65, 0x9d, 0x4d, 0x6b, 0x95, + 0xcd, 0x37, 0xd0, 0x5e, 0x76, 0xd4, 0x92, 0xee, 0xdd, 0xd2, 0xf6, 0xb4, 0xa6, 0xc8, 0x25, 0x74, + 0x84, 0xa4, 0x5c, 0x4e, 0x53, 0x26, 0x42, 0x75, 0x0d, 0x5b, 0x8a, 0x82, 0x23, 0x57, 0x37, 0x4c, + 0x77, 0x82, 0x78, 0x37, 0xd6, 0x4e, 0x6f, 0x4f, 0x05, 0x9b, 0x25, 0x39, 0x87, 0x43, 0xfa, 0x5e, + 0x22, 0x9f, 0xae, 0xc8, 0xe2, 0xa5, 0x02, 0x41, 0x94, 0xef, 0xa6, 0xaa, 0x0d, 0x27, 0x82, 0xe3, + 0xb5, 0x3a, 0xf5, 0x2d, 0xb8, 0xd0, 0x54, 0x13, 0x41, 0xf4, 0xad, 0x41, 0xa3, 0xaa, 0x84, 0x7a, + 0x82, 0xa7, 0xa3, 0x9e, 0x23, 0xe2, 0xef, 0x61, 0x77, 0xc4, 0x39, 0xe3, 0x5f, 0xa1, 0xa4, 0x61, + 0x94, 0xdf, 0x0e, 0xf5, 0x7d, 0x8e, 0x42, 0x68, 0x1e, 0xcd, 0x92, 0x1c, 0x41, 0x33, 0x16, 0xe9, + 0x92, 0xbf, 0x97, 0xb1, 0x48, 0xaf, 0xfd, 0x3c, 0x21, 0x46, 0x21, 0x68, 0x80, 0x8a, 0xb8, 0x96, + 0x67, 0x96, 0xce, 0xef, 0x16, 0x74, 0xc7, 0x1b, 0x14, 0xf9, 0xcc, 0x27, 0x72, 0x01, 0x3b, 0x66, + 0xac, 0xa9, 0x13, 0x1f, 0xd7, 0x7d, 0x19, 0xf7, 0xd4, 0x30, 0x68, 0x3c, 0x39, 0x0c, 0x7e, 0xca, + 0xa1, 0xae, 0xb5, 0xcb, 0xe7, 0x42, 0xfd, 0x04, 0x76, 0x50, 0xb7, 0x5d, 0x0d, 0x75, 0xbd, 0x1d, + 0x97, 0x11, 0x17, 0x7f, 0xbf, 0x80, 0xed, 0xaf, 0x8b, 0x79, 0x4f, 0x2e, 0x61, 0x5b, 0x0f, 0x21, + 0x72, 0xec, 0x9a, 0x6f, 0x82, 0xfa, 0xc8, 0xb5, 0xfb, 0xeb, 0x0e, 0x2d, 0x87, 0x2f, 0xa0, 0x59, + 0x74, 0x73, 0xd2, 0x2b, 0x63, 0x6a, 0xa3, 0xc7, 0x3e, 0x5e, 0xb3, 0xeb, 0xd4, 0xef, 0xa0, 0x5d, + 0x6d, 0x94, 0xc4, 0x59, 0x06, 0x3e, 0x36, 0x0d, 0xec, 0xd7, 0x65, 0xcc, 0xc6, 0x1e, 0xfb, 0x25, + 0xec, 0x98, 0xb6, 0x41, 0x2a, 0x98, 0xeb, 0x0d, 0xd2, 0x7e, 0xb5, 0xc1, 0xa3, 0x37, 0xf8, 0x11, + 0xf6, 0x57, 0x84, 0x4f, 0x4e, 0x57, 0x61, 0x6d, 0x6c, 0x00, 0xf6, 0x60, 0x89, 0x6c, 0xf3, 0xcb, + 0x39, 0xb7, 0xde, 0x2d, 0xe0, 0x94, 0xf1, 0xc0, 0x5d, 0x3c, 0xa4, 0xc8, 0x23, 0xf4, 0x03, 0xe4, + 0xee, 0x7b, 0x3a, 0xe3, 0xe1, 0xdc, 0xa8, 0x4a, 0x6f, 0xf1, 0xae, 0xad, 0x2f, 0x67, 0x9c, 0x9b, + 0xc7, 0xd6, 0x0f, 0xc3, 0x20, 0x94, 0x8b, 0x6c, 0x96, 0xdf, 0xe8, 0xb0, 0x92, 0x3d, 0x2c, 0xb2, + 0xdf, 0x16, 0xd9, 0x6f, 0x03, 0x66, 0xbe, 0xe9, 0x66, 0x4d, 0x65, 0xfa, 0xec, 0x9f, 0x00, 0x00, + 0x00, 0xff, 0xff, 0x41, 0xfb, 0x4e, 0xca, 0xed, 0x09, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/vendor/github.com/hyperledger/fabric-protos-go/peer/chaincode_shim.pb.go b/vendor/github.com/hyperledger/fabric-protos-go/peer/chaincode_shim.pb.go index b6a17e60b76..18024c4f0d4 100644 --- a/vendor/github.com/hyperledger/fabric-protos-go/peer/chaincode_shim.pb.go +++ b/vendor/github.com/hyperledger/fabric-protos-go/peer/chaincode_shim.pb.go @@ -50,6 +50,7 @@ const ( ChaincodeMessage_GET_STATE_METADATA ChaincodeMessage_Type = 20 ChaincodeMessage_PUT_STATE_METADATA ChaincodeMessage_Type = 21 ChaincodeMessage_GET_PRIVATE_DATA_HASH ChaincodeMessage_Type = 22 + ChaincodeMessage_PURGE_PRIVATE_DATA ChaincodeMessage_Type = 23 ) var ChaincodeMessage_Type_name = map[int32]string{ @@ -75,6 +76,7 @@ var ChaincodeMessage_Type_name = map[int32]string{ 20: "GET_STATE_METADATA", 21: "PUT_STATE_METADATA", 22: "GET_PRIVATE_DATA_HASH", + 23: "PURGE_PRIVATE_DATA", } var ChaincodeMessage_Type_value = map[string]int32{ @@ -100,6 +102,7 @@ var ChaincodeMessage_Type_value = map[string]int32{ "GET_STATE_METADATA": 20, "PUT_STATE_METADATA": 21, "GET_PRIVATE_DATA_HASH": 22, + "PURGE_PRIVATE_DATA": 23, } func (x ChaincodeMessage_Type) String() string { @@ -463,6 +466,53 @@ func (m *DelState) GetCollection() string { return "" } +type PurgePrivateState struct { + Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` + Collection string `protobuf:"bytes,2,opt,name=collection,proto3" json:"collection,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *PurgePrivateState) Reset() { *m = PurgePrivateState{} } +func (m *PurgePrivateState) String() string { return proto.CompactTextString(m) } +func (*PurgePrivateState) ProtoMessage() {} +func (*PurgePrivateState) Descriptor() ([]byte, []int) { + return fileDescriptor_e5819fec16c96da2, []int{6} +} + +func (m *PurgePrivateState) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_PurgePrivateState.Unmarshal(m, b) +} +func (m *PurgePrivateState) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_PurgePrivateState.Marshal(b, m, deterministic) +} +func (m *PurgePrivateState) XXX_Merge(src proto.Message) { + xxx_messageInfo_PurgePrivateState.Merge(m, src) +} +func (m *PurgePrivateState) XXX_Size() int { + return xxx_messageInfo_PurgePrivateState.Size(m) +} +func (m *PurgePrivateState) XXX_DiscardUnknown() { + xxx_messageInfo_PurgePrivateState.DiscardUnknown(m) +} + +var xxx_messageInfo_PurgePrivateState proto.InternalMessageInfo + +func (m *PurgePrivateState) GetKey() string { + if m != nil { + return m.Key + } + return "" +} + +func (m *PurgePrivateState) GetCollection() string { + if m != nil { + return m.Collection + } + return "" +} + // GetStateByRange is the payload of a ChaincodeMessage. It contains a start key and // a end key required to execute range query. If the collection is specified, // the range query needs to be executed on the private data. The metadata hold @@ -481,7 +531,7 @@ func (m *GetStateByRange) Reset() { *m = GetStateByRange{} } func (m *GetStateByRange) String() string { return proto.CompactTextString(m) } func (*GetStateByRange) ProtoMessage() {} func (*GetStateByRange) Descriptor() ([]byte, []int) { - return fileDescriptor_e5819fec16c96da2, []int{6} + return fileDescriptor_e5819fec16c96da2, []int{7} } func (m *GetStateByRange) XXX_Unmarshal(b []byte) error { @@ -547,7 +597,7 @@ func (m *GetQueryResult) Reset() { *m = GetQueryResult{} } func (m *GetQueryResult) String() string { return proto.CompactTextString(m) } func (*GetQueryResult) ProtoMessage() {} func (*GetQueryResult) Descriptor() ([]byte, []int) { - return fileDescriptor_e5819fec16c96da2, []int{7} + return fileDescriptor_e5819fec16c96da2, []int{8} } func (m *GetQueryResult) XXX_Unmarshal(b []byte) error { @@ -604,7 +654,7 @@ func (m *QueryMetadata) Reset() { *m = QueryMetadata{} } func (m *QueryMetadata) String() string { return proto.CompactTextString(m) } func (*QueryMetadata) ProtoMessage() {} func (*QueryMetadata) Descriptor() ([]byte, []int) { - return fileDescriptor_e5819fec16c96da2, []int{8} + return fileDescriptor_e5819fec16c96da2, []int{9} } func (m *QueryMetadata) XXX_Unmarshal(b []byte) error { @@ -652,7 +702,7 @@ func (m *GetHistoryForKey) Reset() { *m = GetHistoryForKey{} } func (m *GetHistoryForKey) String() string { return proto.CompactTextString(m) } func (*GetHistoryForKey) ProtoMessage() {} func (*GetHistoryForKey) Descriptor() ([]byte, []int) { - return fileDescriptor_e5819fec16c96da2, []int{9} + return fileDescriptor_e5819fec16c96da2, []int{10} } func (m *GetHistoryForKey) XXX_Unmarshal(b []byte) error { @@ -691,7 +741,7 @@ func (m *QueryStateNext) Reset() { *m = QueryStateNext{} } func (m *QueryStateNext) String() string { return proto.CompactTextString(m) } func (*QueryStateNext) ProtoMessage() {} func (*QueryStateNext) Descriptor() ([]byte, []int) { - return fileDescriptor_e5819fec16c96da2, []int{10} + return fileDescriptor_e5819fec16c96da2, []int{11} } func (m *QueryStateNext) XXX_Unmarshal(b []byte) error { @@ -730,7 +780,7 @@ func (m *QueryStateClose) Reset() { *m = QueryStateClose{} } func (m *QueryStateClose) String() string { return proto.CompactTextString(m) } func (*QueryStateClose) ProtoMessage() {} func (*QueryStateClose) Descriptor() ([]byte, []int) { - return fileDescriptor_e5819fec16c96da2, []int{11} + return fileDescriptor_e5819fec16c96da2, []int{12} } func (m *QueryStateClose) XXX_Unmarshal(b []byte) error { @@ -770,7 +820,7 @@ func (m *QueryResultBytes) Reset() { *m = QueryResultBytes{} } func (m *QueryResultBytes) String() string { return proto.CompactTextString(m) } func (*QueryResultBytes) ProtoMessage() {} func (*QueryResultBytes) Descriptor() ([]byte, []int) { - return fileDescriptor_e5819fec16c96da2, []int{12} + return fileDescriptor_e5819fec16c96da2, []int{13} } func (m *QueryResultBytes) XXX_Unmarshal(b []byte) error { @@ -817,7 +867,7 @@ func (m *QueryResponse) Reset() { *m = QueryResponse{} } func (m *QueryResponse) String() string { return proto.CompactTextString(m) } func (*QueryResponse) ProtoMessage() {} func (*QueryResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_e5819fec16c96da2, []int{13} + return fileDescriptor_e5819fec16c96da2, []int{14} } func (m *QueryResponse) XXX_Unmarshal(b []byte) error { @@ -880,7 +930,7 @@ func (m *QueryResponseMetadata) Reset() { *m = QueryResponseMetadata{} } func (m *QueryResponseMetadata) String() string { return proto.CompactTextString(m) } func (*QueryResponseMetadata) ProtoMessage() {} func (*QueryResponseMetadata) Descriptor() ([]byte, []int) { - return fileDescriptor_e5819fec16c96da2, []int{14} + return fileDescriptor_e5819fec16c96da2, []int{15} } func (m *QueryResponseMetadata) XXX_Unmarshal(b []byte) error { @@ -927,7 +977,7 @@ func (m *StateMetadata) Reset() { *m = StateMetadata{} } func (m *StateMetadata) String() string { return proto.CompactTextString(m) } func (*StateMetadata) ProtoMessage() {} func (*StateMetadata) Descriptor() ([]byte, []int) { - return fileDescriptor_e5819fec16c96da2, []int{15} + return fileDescriptor_e5819fec16c96da2, []int{16} } func (m *StateMetadata) XXX_Unmarshal(b []byte) error { @@ -973,7 +1023,7 @@ func (m *StateMetadataResult) Reset() { *m = StateMetadataResult{} } func (m *StateMetadataResult) String() string { return proto.CompactTextString(m) } func (*StateMetadataResult) ProtoMessage() {} func (*StateMetadataResult) Descriptor() ([]byte, []int) { - return fileDescriptor_e5819fec16c96da2, []int{16} + return fileDescriptor_e5819fec16c96da2, []int{17} } func (m *StateMetadataResult) XXX_Unmarshal(b []byte) error { @@ -1009,6 +1059,7 @@ func init() { proto.RegisterType((*PutState)(nil), "protos.PutState") proto.RegisterType((*PutStateMetadata)(nil), "protos.PutStateMetadata") proto.RegisterType((*DelState)(nil), "protos.DelState") + proto.RegisterType((*PurgePrivateState)(nil), "protos.PurgePrivateState") proto.RegisterType((*GetStateByRange)(nil), "protos.GetStateByRange") proto.RegisterType((*GetQueryResult)(nil), "protos.GetQueryResult") proto.RegisterType((*QueryMetadata)(nil), "protos.QueryMetadata") @@ -1025,73 +1076,74 @@ func init() { func init() { proto.RegisterFile("peer/chaincode_shim.proto", fileDescriptor_e5819fec16c96da2) } var fileDescriptor_e5819fec16c96da2 = []byte{ - // 1042 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x56, 0xcf, 0x73, 0xda, 0x46, - 0x14, 0x2e, 0xc6, 0x18, 0xf1, 0xb0, 0xf1, 0x66, 0x1d, 0x5c, 0xc2, 0x4c, 0x5a, 0xca, 0xf4, 0xc0, - 0xa1, 0x81, 0x86, 0xf6, 0xd0, 0x43, 0x67, 0x32, 0x32, 0xac, 0x31, 0x63, 0x5b, 0x90, 0x95, 0xec, - 0xa9, 0x7b, 0xd1, 0x08, 0x69, 0x23, 0x34, 0x01, 0xad, 0x2a, 0x2d, 0x69, 0xe8, 0xad, 0xd7, 0x1e, - 0xfb, 0xc7, 0xf5, 0xef, 0xe9, 0xac, 0x7e, 0x19, 0x70, 0x9d, 0x74, 0x7c, 0x42, 0xdf, 0x7b, 0xdf, - 0x7e, 0xef, 0xd7, 0x3e, 0x24, 0x78, 0x11, 0x30, 0x16, 0xf6, 0xec, 0xb9, 0xe5, 0xf9, 0x36, 0x77, - 0x98, 0x19, 0xcd, 0xbd, 0x65, 0x37, 0x08, 0xb9, 0xe0, 0xf8, 0x20, 0xfe, 0x89, 0x9a, 0xcd, 0x1d, - 0x0a, 0xfb, 0xc0, 0x7c, 0x91, 0x70, 0x9a, 0x27, 0xb1, 0x2f, 0x08, 0x79, 0xc0, 0x23, 0x6b, 0x91, - 0x1a, 0xbf, 0x76, 0x39, 0x77, 0x17, 0xac, 0x17, 0xa3, 0xd9, 0xea, 0x5d, 0x4f, 0x78, 0x4b, 0x16, - 0x09, 0x6b, 0x19, 0x24, 0x84, 0xf6, 0x3f, 0x25, 0x40, 0x83, 0x4c, 0xef, 0x9a, 0x45, 0x91, 0xe5, - 0x32, 0xfc, 0x1a, 0xf6, 0xc5, 0x3a, 0x60, 0x8d, 0x42, 0xab, 0xd0, 0xa9, 0xf5, 0x5f, 0x26, 0xd4, - 0xa8, 0xbb, 0xcb, 0xeb, 0x1a, 0xeb, 0x80, 0xd1, 0x98, 0x8a, 0x7f, 0x82, 0x4a, 0x2e, 0xdd, 0xd8, - 0x6b, 0x15, 0x3a, 0xd5, 0x7e, 0xb3, 0x9b, 0x04, 0xef, 0x66, 0xc1, 0xbb, 0x46, 0xc6, 0xa0, 0xf7, - 0x64, 0xdc, 0x80, 0x72, 0x60, 0xad, 0x17, 0xdc, 0x72, 0x1a, 0xc5, 0x56, 0xa1, 0x73, 0x48, 0x33, - 0x88, 0x31, 0xec, 0x8b, 0x8f, 0x9e, 0xd3, 0xd8, 0x6f, 0x15, 0x3a, 0x15, 0x1a, 0x3f, 0xe3, 0x3e, - 0x28, 0x59, 0x89, 0x8d, 0x52, 0x1c, 0xe6, 0x34, 0x4b, 0x4f, 0xf7, 0x5c, 0x9f, 0x39, 0xd3, 0xd4, - 0x4b, 0x73, 0x1e, 0x7e, 0x03, 0xc7, 0x3b, 0x2d, 0x6b, 0x1c, 0x6c, 0x1f, 0xcd, 0x2b, 0x23, 0xd2, - 0x4b, 0x6b, 0xf6, 0x16, 0xc6, 0x2f, 0x01, 0xec, 0xb9, 0xe5, 0xfb, 0x6c, 0x61, 0x7a, 0x4e, 0xa3, - 0x1c, 0xa7, 0x53, 0x49, 0x2d, 0x63, 0xa7, 0xfd, 0x77, 0x11, 0xf6, 0x65, 0x2b, 0xf0, 0x11, 0x54, - 0x6e, 0xb4, 0x21, 0x39, 0x1f, 0x6b, 0x64, 0x88, 0xbe, 0xc0, 0x87, 0xa0, 0x50, 0x32, 0x1a, 0xeb, - 0x06, 0xa1, 0xa8, 0x80, 0x6b, 0x00, 0x19, 0x22, 0x43, 0xb4, 0x87, 0x15, 0xd8, 0x1f, 0x6b, 0x63, - 0x03, 0x15, 0x71, 0x05, 0x4a, 0x94, 0xa8, 0xc3, 0x3b, 0xb4, 0x8f, 0x8f, 0xa1, 0x6a, 0x50, 0x55, - 0xd3, 0xd5, 0x81, 0x31, 0x9e, 0x68, 0xa8, 0x24, 0x25, 0x07, 0x93, 0xeb, 0xe9, 0x15, 0x31, 0xc8, - 0x10, 0x1d, 0x48, 0x2a, 0xa1, 0x74, 0x42, 0x51, 0x59, 0x7a, 0x46, 0xc4, 0x30, 0x75, 0x43, 0x35, - 0x08, 0x52, 0x24, 0x9c, 0xde, 0x64, 0xb0, 0x22, 0xe1, 0x90, 0x5c, 0xa5, 0x10, 0xf0, 0x73, 0x40, - 0x63, 0xed, 0x76, 0x72, 0x49, 0xcc, 0xc1, 0x85, 0x3a, 0xd6, 0x06, 0x93, 0x21, 0x41, 0xd5, 0x24, - 0x41, 0x7d, 0x3a, 0xd1, 0x74, 0x82, 0x8e, 0xf0, 0x29, 0xe0, 0x5c, 0xd0, 0x3c, 0xbb, 0x33, 0xa9, - 0xaa, 0x8d, 0x08, 0xaa, 0xc9, 0xb3, 0xd2, 0xfe, 0xf6, 0x86, 0xd0, 0x3b, 0x93, 0x12, 0xfd, 0xe6, - 0xca, 0x40, 0xc7, 0xd2, 0x9a, 0x58, 0x12, 0xbe, 0x46, 0x7e, 0x31, 0x10, 0xc2, 0x75, 0x78, 0xb6, - 0x69, 0x1d, 0x5c, 0x4d, 0x74, 0x82, 0x9e, 0xc9, 0x6c, 0x2e, 0x09, 0x99, 0xaa, 0x57, 0xe3, 0x5b, - 0x82, 0x30, 0xfe, 0x12, 0x4e, 0xa4, 0xe2, 0xc5, 0x58, 0x37, 0x26, 0xf4, 0xce, 0x3c, 0x9f, 0x50, - 0xf3, 0x92, 0xdc, 0xa1, 0x93, 0xed, 0x14, 0xae, 0x89, 0xa1, 0x0e, 0x55, 0x43, 0x45, 0xcf, 0xa5, - 0x3d, 0x2f, 0xee, 0xde, 0x5e, 0xc7, 0x2f, 0xa0, 0x2e, 0xf9, 0x53, 0x3a, 0xbe, 0x95, 0x1e, 0x69, - 0x35, 0x2f, 0x54, 0xfd, 0x02, 0x9d, 0xb6, 0x7f, 0x06, 0x65, 0xc4, 0x84, 0x2e, 0x2c, 0xc1, 0x30, - 0x82, 0xe2, 0x7b, 0xb6, 0x8e, 0xaf, 0x73, 0x85, 0xca, 0x47, 0xfc, 0x15, 0x80, 0xcd, 0x17, 0x0b, - 0x66, 0x0b, 0x8f, 0xfb, 0xf1, 0x7d, 0xad, 0xd0, 0x0d, 0x4b, 0x7b, 0x08, 0x28, 0x3b, 0x7d, 0xcd, - 0x84, 0xe5, 0x58, 0xc2, 0x7a, 0x82, 0x0a, 0x05, 0x65, 0xba, 0x7a, 0x34, 0x87, 0xe7, 0x50, 0xfa, - 0x60, 0x2d, 0x56, 0x2c, 0x3e, 0x78, 0x48, 0x13, 0xb0, 0xa3, 0x59, 0x7c, 0xa0, 0xf9, 0x3b, 0xa0, - 0x4c, 0xf3, 0x7f, 0x67, 0xf6, 0x40, 0x05, 0xbf, 0x06, 0x65, 0x99, 0x9e, 0x8e, 0xd7, 0xab, 0xda, - 0xaf, 0xe7, 0x6b, 0xb4, 0x29, 0x4d, 0x73, 0x9a, 0x6c, 0xe8, 0x90, 0x2d, 0x9e, 0xda, 0xd0, 0x3f, - 0x0b, 0x70, 0x9c, 0x75, 0xf4, 0x6c, 0x4d, 0x2d, 0xdf, 0x65, 0xb8, 0x09, 0x4a, 0x24, 0xac, 0x50, - 0x5c, 0xe6, 0x52, 0x39, 0xc6, 0xa7, 0x70, 0xc0, 0x7c, 0x47, 0x7a, 0x12, 0xad, 0x14, 0x7d, 0xb6, - 0xb0, 0xe6, 0x4e, 0x61, 0x87, 0x1b, 0x15, 0xcc, 0xa0, 0x36, 0x62, 0xe2, 0xed, 0x8a, 0x85, 0x6b, - 0xca, 0xa2, 0xd5, 0x42, 0xc8, 0x11, 0xfc, 0x26, 0x61, 0x1a, 0x3e, 0x01, 0x9f, 0xab, 0x65, 0x2b, - 0x46, 0x71, 0x27, 0xc6, 0x08, 0x8e, 0xe2, 0x00, 0xf9, 0x6c, 0x9a, 0xa0, 0x04, 0x96, 0xcb, 0x74, - 0xef, 0x8f, 0xe4, 0xff, 0xb4, 0x44, 0x73, 0x2c, 0x7d, 0x33, 0xce, 0xdf, 0x2f, 0xad, 0xf0, 0x7d, - 0x1a, 0x26, 0xc7, 0xed, 0x6f, 0xe3, 0x1b, 0x78, 0xe1, 0x45, 0x82, 0x87, 0xeb, 0x73, 0x1e, 0xca, - 0xe2, 0x1f, 0xb4, 0xbd, 0xdd, 0x82, 0x5a, 0x1c, 0x2e, 0xee, 0xab, 0xc6, 0x3e, 0x0a, 0x5c, 0x83, - 0x3d, 0xcf, 0x49, 0x29, 0x7b, 0x9e, 0xd3, 0xfe, 0x06, 0x8e, 0xef, 0x19, 0x83, 0x05, 0x8f, 0xd8, - 0x03, 0xca, 0x8f, 0x80, 0x36, 0x9a, 0x72, 0xb6, 0x16, 0x2c, 0xc2, 0x2d, 0xa8, 0x86, 0xf7, 0x30, - 0x26, 0x1f, 0xd2, 0x4d, 0x53, 0xfb, 0xaf, 0x42, 0x5a, 0x2a, 0x65, 0x51, 0xc0, 0xfd, 0x88, 0xe1, - 0x3e, 0x94, 0x13, 0x82, 0xe4, 0x17, 0x3b, 0xd5, 0x7e, 0x23, 0xbb, 0x53, 0xbb, 0xf2, 0x34, 0x23, - 0xe2, 0x17, 0xa0, 0xcc, 0xad, 0xc8, 0x5c, 0xf2, 0x30, 0xd9, 0x03, 0x85, 0x96, 0xe7, 0x56, 0x74, - 0xcd, 0xc3, 0x2c, 0xcd, 0x62, 0x96, 0xe6, 0x27, 0x47, 0xeb, 0x42, 0x7d, 0x2b, 0x97, 0xbc, 0xfd, - 0x7d, 0xa8, 0xbf, 0x63, 0xc2, 0x9e, 0x33, 0xc7, 0x0c, 0x99, 0xcd, 0x43, 0x27, 0x32, 0x6d, 0xbe, - 0xf2, 0x45, 0x3a, 0x8b, 0x93, 0xd4, 0x49, 0x13, 0xdf, 0x40, 0xba, 0x3e, 0x39, 0x96, 0x37, 0x70, - 0xb4, 0xbd, 0x7b, 0x0d, 0x28, 0xcb, 0x2c, 0xee, 0xe7, 0x92, 0xc1, 0xff, 0xde, 0xef, 0xf6, 0x39, - 0x9c, 0x6c, 0x6f, 0x58, 0x72, 0x13, 0x7b, 0x50, 0x66, 0xbe, 0x08, 0x3d, 0x96, 0xf5, 0xee, 0x91, - 0x7d, 0xcc, 0x58, 0xfd, 0xdb, 0x8d, 0xf7, 0xb6, 0xbe, 0x0a, 0x02, 0x1e, 0x0a, 0x7c, 0x06, 0x0a, - 0x65, 0xae, 0x17, 0x09, 0x16, 0xe2, 0xc6, 0x63, 0x6f, 0xed, 0xe6, 0xa3, 0x9e, 0x4e, 0xe1, 0xfb, - 0x42, 0x5f, 0x83, 0x4a, 0x6e, 0xc7, 0x2a, 0x94, 0x07, 0xdc, 0xf7, 0x99, 0x2d, 0x9e, 0xaa, 0x77, - 0x46, 0xa1, 0xcd, 0x43, 0xb7, 0x3b, 0x5f, 0x07, 0x2c, 0x5c, 0x30, 0xc7, 0x65, 0x61, 0xf7, 0x9d, - 0x35, 0x0b, 0x3d, 0x3b, 0x3b, 0x25, 0x3f, 0x5b, 0x7e, 0xfd, 0xce, 0xf5, 0xc4, 0x7c, 0x35, 0xeb, - 0xda, 0x7c, 0xd9, 0xdb, 0xa0, 0xf6, 0x12, 0xea, 0xab, 0x84, 0xfa, 0xca, 0xe5, 0x3d, 0xc9, 0x9e, - 0x25, 0x9f, 0x43, 0x3f, 0xfc, 0x1b, 0x00, 0x00, 0xff, 0xff, 0x77, 0x8a, 0x54, 0x7a, 0x32, 0x09, - 0x00, 0x00, + // 1068 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x56, 0xcf, 0x72, 0xe2, 0xc6, + 0x13, 0xfe, 0x61, 0x8c, 0x11, 0x8d, 0x8d, 0x67, 0xc7, 0x8b, 0x97, 0xa5, 0x6a, 0x7f, 0x21, 0x54, + 0x0e, 0x1c, 0xb2, 0x90, 0x25, 0x39, 0xe4, 0x90, 0xaa, 0x2d, 0x19, 0xc6, 0x98, 0xb2, 0x2d, 0xd8, + 0x91, 0xec, 0x8a, 0x73, 0x51, 0x09, 0x69, 0x56, 0xa8, 0x16, 0x34, 0x8a, 0x34, 0x6c, 0x96, 0xdc, + 0x72, 0xcd, 0xa3, 0xe4, 0xe1, 0xf2, 0x0c, 0xa9, 0xd1, 0x3f, 0x03, 0x8e, 0x77, 0x53, 0x3e, 0xc1, + 0xd7, 0xfd, 0xf5, 0xd7, 0x3d, 0xdd, 0xd3, 0xaa, 0x81, 0x97, 0x01, 0x63, 0x61, 0xcf, 0x9e, 0x5b, + 0x9e, 0x6f, 0x73, 0x87, 0x99, 0xd1, 0xdc, 0x5b, 0x76, 0x83, 0x90, 0x0b, 0x8e, 0x0f, 0xe2, 0x9f, + 0xa8, 0xd9, 0xdc, 0xa1, 0xb0, 0x8f, 0xcc, 0x17, 0x09, 0xa7, 0x79, 0x12, 0xfb, 0x82, 0x90, 0x07, + 0x3c, 0xb2, 0x16, 0xa9, 0xf1, 0x2b, 0x97, 0x73, 0x77, 0xc1, 0x7a, 0x31, 0x9a, 0xad, 0xde, 0xf7, + 0x84, 0xb7, 0x64, 0x91, 0xb0, 0x96, 0x41, 0x42, 0x68, 0xff, 0x5d, 0x02, 0x34, 0xc8, 0xf4, 0xae, + 0x59, 0x14, 0x59, 0x2e, 0xc3, 0x6f, 0x60, 0x5f, 0xac, 0x03, 0xd6, 0x28, 0xb4, 0x0a, 0x9d, 0x5a, + 0xff, 0x55, 0x42, 0x8d, 0xba, 0xbb, 0xbc, 0xae, 0xb1, 0x0e, 0x18, 0x8d, 0xa9, 0xf8, 0x47, 0xa8, + 0xe4, 0xd2, 0x8d, 0xbd, 0x56, 0xa1, 0x53, 0xed, 0x37, 0xbb, 0x49, 0xf2, 0x6e, 0x96, 0xbc, 0x6b, + 0x64, 0x0c, 0x7a, 0x4f, 0xc6, 0x0d, 0x28, 0x07, 0xd6, 0x7a, 0xc1, 0x2d, 0xa7, 0x51, 0x6c, 0x15, + 0x3a, 0x87, 0x34, 0x83, 0x18, 0xc3, 0xbe, 0xf8, 0xe4, 0x39, 0x8d, 0xfd, 0x56, 0xa1, 0x53, 0xa1, + 0xf1, 0x7f, 0xdc, 0x07, 0x25, 0x3b, 0x62, 0xa3, 0x14, 0xa7, 0x39, 0xcd, 0xca, 0xd3, 0x3d, 0xd7, + 0x67, 0xce, 0x34, 0xf5, 0xd2, 0x9c, 0x87, 0xdf, 0xc2, 0xf1, 0x4e, 0xcb, 0x1a, 0x07, 0xdb, 0xa1, + 0xf9, 0xc9, 0x88, 0xf4, 0xd2, 0x9a, 0xbd, 0x85, 0xf1, 0x2b, 0x00, 0x7b, 0x6e, 0xf9, 0x3e, 0x5b, + 0x98, 0x9e, 0xd3, 0x28, 0xc7, 0xe5, 0x54, 0x52, 0xcb, 0xd8, 0x69, 0xff, 0x55, 0x84, 0x7d, 0xd9, + 0x0a, 0x7c, 0x04, 0x95, 0x1b, 0x6d, 0x48, 0xce, 0xc7, 0x1a, 0x19, 0xa2, 0xff, 0xe1, 0x43, 0x50, + 0x28, 0x19, 0x8d, 0x75, 0x83, 0x50, 0x54, 0xc0, 0x35, 0x80, 0x0c, 0x91, 0x21, 0xda, 0xc3, 0x0a, + 0xec, 0x8f, 0xb5, 0xb1, 0x81, 0x8a, 0xb8, 0x02, 0x25, 0x4a, 0xd4, 0xe1, 0x1d, 0xda, 0xc7, 0xc7, + 0x50, 0x35, 0xa8, 0xaa, 0xe9, 0xea, 0xc0, 0x18, 0x4f, 0x34, 0x54, 0x92, 0x92, 0x83, 0xc9, 0xf5, + 0xf4, 0x8a, 0x18, 0x64, 0x88, 0x0e, 0x24, 0x95, 0x50, 0x3a, 0xa1, 0xa8, 0x2c, 0x3d, 0x23, 0x62, + 0x98, 0xba, 0xa1, 0x1a, 0x04, 0x29, 0x12, 0x4e, 0x6f, 0x32, 0x58, 0x91, 0x70, 0x48, 0xae, 0x52, + 0x08, 0xf8, 0x39, 0xa0, 0xb1, 0x76, 0x3b, 0xb9, 0x24, 0xe6, 0xe0, 0x42, 0x1d, 0x6b, 0x83, 0xc9, + 0x90, 0xa0, 0x6a, 0x52, 0xa0, 0x3e, 0x9d, 0x68, 0x3a, 0x41, 0x47, 0xf8, 0x14, 0x70, 0x2e, 0x68, + 0x9e, 0xdd, 0x99, 0x54, 0xd5, 0x46, 0x04, 0xd5, 0x64, 0xac, 0xb4, 0xbf, 0xbb, 0x21, 0xf4, 0xce, + 0xa4, 0x44, 0xbf, 0xb9, 0x32, 0xd0, 0xb1, 0xb4, 0x26, 0x96, 0x84, 0xaf, 0x91, 0x9f, 0x0d, 0x84, + 0x70, 0x1d, 0x9e, 0x6d, 0x5a, 0x07, 0x57, 0x13, 0x9d, 0xa0, 0x67, 0xb2, 0x9a, 0x4b, 0x42, 0xa6, + 0xea, 0xd5, 0xf8, 0x96, 0x20, 0x8c, 0x5f, 0xc0, 0x89, 0x54, 0xbc, 0x18, 0xeb, 0xc6, 0x84, 0xde, + 0x99, 0xe7, 0x13, 0x6a, 0x5e, 0x92, 0x3b, 0x74, 0xb2, 0x5d, 0xc2, 0x35, 0x31, 0xd4, 0xa1, 0x6a, + 0xa8, 0xe8, 0xb9, 0xb4, 0xe7, 0x87, 0xbb, 0xb7, 0xd7, 0xf1, 0x4b, 0xa8, 0x4b, 0xfe, 0x94, 0x8e, + 0x6f, 0xa5, 0x47, 0x5a, 0xcd, 0x0b, 0x55, 0xbf, 0x40, 0xa7, 0x49, 0x08, 0x1d, 0x91, 0x2d, 0x27, + 0x7a, 0xd1, 0xfe, 0x09, 0x94, 0x11, 0x13, 0xba, 0xb0, 0x04, 0xc3, 0x08, 0x8a, 0x1f, 0xd8, 0x3a, + 0xbe, 0xe6, 0x15, 0x2a, 0xff, 0xe2, 0xff, 0x03, 0xd8, 0x7c, 0xb1, 0x60, 0xb6, 0xf0, 0xb8, 0x1f, + 0xdf, 0xe3, 0x0a, 0xdd, 0xb0, 0xb4, 0x87, 0x80, 0xb2, 0xe8, 0x6b, 0x26, 0x2c, 0xc7, 0x12, 0xd6, + 0x13, 0x54, 0x28, 0x28, 0xd3, 0xd5, 0xa3, 0x35, 0x3c, 0x87, 0xd2, 0x47, 0x6b, 0xb1, 0x62, 0x71, + 0xe0, 0x21, 0x4d, 0xc0, 0x8e, 0x66, 0xf1, 0x81, 0xe6, 0x6f, 0x80, 0x32, 0xcd, 0xff, 0x5c, 0xd9, + 0x03, 0x15, 0xfc, 0x06, 0x94, 0x65, 0x1a, 0x1d, 0xaf, 0x5d, 0xb5, 0x5f, 0xcf, 0xd7, 0x6b, 0x53, + 0x9a, 0xe6, 0x34, 0xd9, 0xd0, 0x21, 0x5b, 0x3c, 0xb5, 0xa1, 0x04, 0x9e, 0x4d, 0x57, 0xa1, 0xcb, + 0xa6, 0xa1, 0xf7, 0xd1, 0x12, 0xec, 0xa9, 0x32, 0x7f, 0x14, 0xe0, 0x38, 0x1b, 0xcc, 0xd9, 0x9a, + 0x5a, 0xbe, 0xcb, 0x70, 0x13, 0x94, 0x48, 0x58, 0xa1, 0xb8, 0xcc, 0xa5, 0x72, 0x8c, 0x4f, 0xe1, + 0x80, 0xf9, 0x8e, 0xf4, 0x24, 0x5a, 0x29, 0xfa, 0x62, 0x7f, 0x9a, 0x3b, 0xfd, 0x39, 0xdc, 0x68, + 0xc4, 0x0c, 0x6a, 0x23, 0x26, 0xde, 0xad, 0x58, 0xb8, 0xa6, 0x2c, 0x5a, 0x2d, 0x84, 0x9c, 0xe4, + 0xaf, 0x12, 0xa6, 0xe9, 0x13, 0xf0, 0xa5, 0xb3, 0x6c, 0xe5, 0x28, 0xee, 0xe4, 0x18, 0xc1, 0x51, + 0x9c, 0x20, 0x1f, 0x71, 0x13, 0x94, 0xc0, 0x72, 0x99, 0xee, 0xfd, 0x9e, 0x7c, 0xae, 0x4b, 0x34, + 0xc7, 0xd2, 0x37, 0xe3, 0xfc, 0xc3, 0xd2, 0x0a, 0x3f, 0xa4, 0x69, 0x72, 0xdc, 0xfe, 0x26, 0xbe, + 0xc8, 0x17, 0x5e, 0x24, 0x78, 0xb8, 0x3e, 0xe7, 0xa1, 0x3c, 0xfc, 0x83, 0xb6, 0xb7, 0x5b, 0x50, + 0x8b, 0xd3, 0xc5, 0x7d, 0xd5, 0xd8, 0x27, 0x81, 0x6b, 0xb0, 0xe7, 0x39, 0x29, 0x65, 0xcf, 0x73, + 0xda, 0x5f, 0xc3, 0xf1, 0x3d, 0x63, 0xb0, 0xe0, 0x11, 0x7b, 0x40, 0xf9, 0x01, 0xd0, 0x46, 0x53, + 0xce, 0xd6, 0x82, 0x45, 0xb8, 0x05, 0xd5, 0xf0, 0x1e, 0xc6, 0xe4, 0x43, 0xba, 0x69, 0x6a, 0xff, + 0x59, 0x48, 0x8f, 0x4a, 0x59, 0x14, 0x70, 0x3f, 0x62, 0xb8, 0x0f, 0xe5, 0x84, 0x20, 0xf9, 0xc5, + 0x4e, 0xb5, 0xdf, 0xc8, 0xae, 0xe6, 0xae, 0x3c, 0xcd, 0x88, 0xf8, 0x25, 0x28, 0x73, 0x2b, 0x32, + 0x97, 0x3c, 0x4c, 0xd6, 0x49, 0xa1, 0xe5, 0xb9, 0x15, 0x5d, 0xf3, 0x30, 0x2b, 0xb3, 0x98, 0x95, + 0xf9, 0xd9, 0xd1, 0xba, 0x50, 0xdf, 0xaa, 0x25, 0x6f, 0x7f, 0x1f, 0xea, 0xef, 0x99, 0xb0, 0xe7, + 0xcc, 0x31, 0x43, 0x66, 0xf3, 0xd0, 0x89, 0x4c, 0x9b, 0xaf, 0x7c, 0x91, 0xce, 0xe2, 0x24, 0x75, + 0xd2, 0xc4, 0x37, 0x90, 0xae, 0xcf, 0x8e, 0xe5, 0x2d, 0x1c, 0x6d, 0xaf, 0x70, 0x03, 0xca, 0xb2, + 0x8a, 0xfb, 0xb9, 0x64, 0xf0, 0xdf, 0x3f, 0x13, 0xed, 0x73, 0x38, 0xd9, 0x5e, 0xd4, 0xe4, 0x26, + 0xf6, 0xa0, 0xcc, 0x7c, 0x11, 0x7a, 0x2c, 0xeb, 0xdd, 0x23, 0x6b, 0x9d, 0xb1, 0xfa, 0xb7, 0x1b, + 0xcf, 0x02, 0x7d, 0x15, 0x04, 0x3c, 0x14, 0xf8, 0x0c, 0x14, 0xca, 0x5c, 0x2f, 0x12, 0x2c, 0xc4, + 0x8d, 0xc7, 0x1e, 0x05, 0xcd, 0x47, 0x3d, 0x9d, 0xc2, 0x77, 0x85, 0xbe, 0x06, 0x95, 0xdc, 0x8e, + 0x55, 0x28, 0x0f, 0xb8, 0xef, 0x33, 0x5b, 0x3c, 0x55, 0xef, 0x8c, 0x42, 0x9b, 0x87, 0x6e, 0x77, + 0xbe, 0x0e, 0x58, 0xb8, 0x60, 0x8e, 0xcb, 0xc2, 0xee, 0x7b, 0x6b, 0x16, 0x7a, 0x76, 0x16, 0x25, + 0x5f, 0x45, 0xbf, 0x7c, 0xeb, 0x7a, 0x62, 0xbe, 0x9a, 0x75, 0x6d, 0xbe, 0xec, 0x6d, 0x50, 0x7b, + 0x09, 0xf5, 0x75, 0x42, 0x7d, 0xed, 0xf2, 0x9e, 0x64, 0xcf, 0x92, 0xd7, 0xd6, 0xf7, 0xff, 0x04, + 0x00, 0x00, 0xff, 0xff, 0xea, 0xa6, 0x7b, 0x03, 0x91, 0x09, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. diff --git a/vendor/modules.txt b/vendor/modules.txt index 13f66a587c2..991176998a0 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -251,7 +251,7 @@ github.com/hyperledger/fabric-config/protolator/protoext/peerext # github.com/hyperledger/fabric-lib-go v1.0.0 ## explicit github.com/hyperledger/fabric-lib-go/healthz -# github.com/hyperledger/fabric-protos-go v0.0.0-20220125190318-19041b215616 +# github.com/hyperledger/fabric-protos-go v0.0.0-20220315113721-7dc293e117f7 ## explicit; go 1.12 github.com/hyperledger/fabric-protos-go/common github.com/hyperledger/fabric-protos-go/discovery