diff --git a/go.mod b/go.mod index 02cc211b..78d4050e 100644 --- a/go.mod +++ b/go.mod @@ -3,21 +3,21 @@ module github.com/hyperledger/fabric-chaincode-go go 1.20 require ( - github.com/golang/protobuf v1.5.2 - github.com/hyperledger/fabric-protos-go v0.3.0 + github.com/hyperledger/fabric-protos-go-apiv2 v0.3.0 github.com/stretchr/testify v1.8.2 google.golang.org/grpc v1.53.0 + google.golang.org/protobuf v1.31.0 ) require ( github.com/davecgh/go-spew v1.1.1 // indirect + github.com/golang/protobuf v1.5.2 // indirect github.com/kr/pretty v0.3.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect golang.org/x/net v0.7.0 // indirect golang.org/x/sys v0.5.0 // indirect golang.org/x/text v0.7.0 // indirect google.golang.org/genproto v0.0.0-20230110181048-76db0878b65f // indirect - google.golang.org/protobuf v1.28.1 // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index f297edb6..fcc3122f 100644 --- a/go.sum +++ b/go.sum @@ -7,8 +7,9 @@ github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= -github.com/hyperledger/fabric-protos-go v0.3.0 h1:MXxy44WTMENOh5TI8+PCK2x6pMj47Go2vFRKDHB2PZs= github.com/hyperledger/fabric-protos-go v0.3.0/go.mod h1:WWnyWP40P2roPmmvxsUXSvVI/CF6vwY1K1UFidnKBys= +github.com/hyperledger/fabric-protos-go-apiv2 v0.3.0 h1:DOmDMloF3vKKJKXz+CsZhFgkUmnXKzP5ei71yGIbeOw= +github.com/hyperledger/fabric-protos-go-apiv2 v0.3.0/go.mod h1:smwq1q6eKByqQAp0SYdVvE1MvDoneF373j11XwWajgA= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= @@ -43,6 +44,8 @@ google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp0 google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w= google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= +google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= diff --git a/pkg/attrmgr/attrmgr.go b/pkg/attrmgr/attrmgr.go index 46dbdbd7..48b686c7 100644 --- a/pkg/attrmgr/attrmgr.go +++ b/pkg/attrmgr/attrmgr.go @@ -13,8 +13,8 @@ import ( "errors" "fmt" - "github.com/golang/protobuf/proto" - "github.com/hyperledger/fabric-protos-go/msp" + "github.com/hyperledger/fabric-protos-go-apiv2/msp" + "google.golang.org/protobuf/proto" ) var ( diff --git a/pkg/cid/cid.go b/pkg/cid/cid.go index 80eec6c8..bab1295c 100644 --- a/pkg/cid/cid.go +++ b/pkg/cid/cid.go @@ -12,9 +12,9 @@ import ( "encoding/pem" "fmt" - "github.com/golang/protobuf/proto" "github.com/hyperledger/fabric-chaincode-go/pkg/attrmgr" - "github.com/hyperledger/fabric-protos-go/msp" + "github.com/hyperledger/fabric-protos-go-apiv2/msp" + "google.golang.org/protobuf/proto" ) // GetID returns the ID associated with the invoking identity. This ID diff --git a/pkg/cid/cid_test.go b/pkg/cid/cid_test.go index 23163821..13718d86 100644 --- a/pkg/cid/cid_test.go +++ b/pkg/cid/cid_test.go @@ -7,10 +7,10 @@ import ( "encoding/base64" "testing" - "github.com/golang/protobuf/proto" "github.com/hyperledger/fabric-chaincode-go/pkg/cid" - "github.com/hyperledger/fabric-protos-go/msp" + "github.com/hyperledger/fabric-protos-go-apiv2/msp" "github.com/stretchr/testify/assert" + "google.golang.org/protobuf/proto" ) const certWithOutAttrs = `-----BEGIN CERTIFICATE----- diff --git a/pkg/statebased/statebasedimpl.go b/pkg/statebased/statebasedimpl.go index a8717655..d0ad90c4 100644 --- a/pkg/statebased/statebasedimpl.go +++ b/pkg/statebased/statebasedimpl.go @@ -7,9 +7,9 @@ import ( "fmt" "sort" - "github.com/golang/protobuf/proto" - "github.com/hyperledger/fabric-protos-go/common" - "github.com/hyperledger/fabric-protos-go/msp" + "github.com/hyperledger/fabric-protos-go-apiv2/common" + "github.com/hyperledger/fabric-protos-go-apiv2/msp" + "google.golang.org/protobuf/proto" ) // stateEP implements the KeyEndorsementPolicy diff --git a/pkg/statebased/statebasedimpl_test.go b/pkg/statebased/statebasedimpl_test.go index b62668fc..e2387a80 100644 --- a/pkg/statebased/statebasedimpl_test.go +++ b/pkg/statebased/statebasedimpl_test.go @@ -6,11 +6,11 @@ package statebased_test import ( "testing" - "github.com/golang/protobuf/proto" "github.com/hyperledger/fabric-chaincode-go/pkg/statebased" - "github.com/hyperledger/fabric-protos-go/common" - "github.com/hyperledger/fabric-protos-go/msp" + "github.com/hyperledger/fabric-protos-go-apiv2/common" + "github.com/hyperledger/fabric-protos-go-apiv2/msp" "github.com/stretchr/testify/assert" + "google.golang.org/protobuf/proto" ) func TestAddOrg(t *testing.T) { diff --git a/shim/chaincodeserver.go b/shim/chaincodeserver.go index 2904e967..553198e4 100644 --- a/shim/chaincodeserver.go +++ b/shim/chaincodeserver.go @@ -8,7 +8,7 @@ import ( "errors" "github.com/hyperledger/fabric-chaincode-go/shim/internal" - pb "github.com/hyperledger/fabric-protos-go/peer" + pb "github.com/hyperledger/fabric-protos-go-apiv2/peer" "google.golang.org/grpc/keepalive" ) diff --git a/shim/handler.go b/shim/handler.go index 9b66a087..0c470a1f 100644 --- a/shim/handler.go +++ b/shim/handler.go @@ -8,8 +8,8 @@ import ( "fmt" "sync" - "github.com/golang/protobuf/proto" - pb "github.com/hyperledger/fabric-protos-go/peer" + pb "github.com/hyperledger/fabric-protos-go-apiv2/peer" + "google.golang.org/protobuf/proto" ) type state string diff --git a/shim/handler_test.go b/shim/handler_test.go index 75a74859..9c5f1332 100644 --- a/shim/handler_test.go +++ b/shim/handler_test.go @@ -8,7 +8,7 @@ import ( "testing" "github.com/hyperledger/fabric-chaincode-go/shim/internal/mock" - peerpb "github.com/hyperledger/fabric-protos-go/peer" + peerpb "github.com/hyperledger/fabric-protos-go-apiv2/peer" "github.com/stretchr/testify/assert" ) diff --git a/shim/interfaces.go b/shim/interfaces.go index 87ecd81d..e655a485 100644 --- a/shim/interfaces.go +++ b/shim/interfaces.go @@ -4,9 +4,9 @@ package shim import ( - "github.com/golang/protobuf/ptypes/timestamp" - "github.com/hyperledger/fabric-protos-go/ledger/queryresult" - pb "github.com/hyperledger/fabric-protos-go/peer" + "github.com/hyperledger/fabric-protos-go-apiv2/ledger/queryresult" + pb "github.com/hyperledger/fabric-protos-go-apiv2/peer" + timestamp "google.golang.org/protobuf/types/known/timestamppb" ) // Chaincode interface must be implemented by all chaincodes. The fabric runs diff --git a/shim/internal/client.go b/shim/internal/client.go index 6b6dde0e..3ce649ec 100644 --- a/shim/internal/client.go +++ b/shim/internal/client.go @@ -8,7 +8,7 @@ import ( "crypto/tls" "time" - peerpb "github.com/hyperledger/fabric-protos-go/peer" + peerpb "github.com/hyperledger/fabric-protos-go-apiv2/peer" "google.golang.org/grpc" "google.golang.org/grpc/credentials" "google.golang.org/grpc/keepalive" diff --git a/shim/internal/client_test.go b/shim/internal/client_test.go index d1af8e3f..c162e1ba 100644 --- a/shim/internal/client_test.go +++ b/shim/internal/client_test.go @@ -9,7 +9,7 @@ import ( "testing" "time" - pb "github.com/hyperledger/fabric-protos-go/peer" + pb "github.com/hyperledger/fabric-protos-go-apiv2/peer" "github.com/stretchr/testify/assert" "google.golang.org/grpc" "google.golang.org/grpc/keepalive" diff --git a/shim/internal/config_test.go b/shim/internal/config_test.go index d9ece872..c9ddbdf9 100644 --- a/shim/internal/config_test.go +++ b/shim/internal/config_test.go @@ -14,7 +14,7 @@ import ( "time" . "github.com/hyperledger/fabric-chaincode-go/shim/internal" - peerpb "github.com/hyperledger/fabric-protos-go/peer" + peerpb "github.com/hyperledger/fabric-protos-go-apiv2/peer" "github.com/stretchr/testify/assert" "google.golang.org/grpc" "google.golang.org/grpc/credentials" diff --git a/shim/internal/mock/client_stream.go b/shim/internal/mock/client_stream.go index 2ed61512..4df37cb0 100644 --- a/shim/internal/mock/client_stream.go +++ b/shim/internal/mock/client_stream.go @@ -4,7 +4,7 @@ package mock import ( "sync" - "github.com/hyperledger/fabric-protos-go/peer" + "github.com/hyperledger/fabric-protos-go-apiv2/peer" ) type ClientStream struct { diff --git a/shim/internal/mock/peer_chaincode_stream.go b/shim/internal/mock/peer_chaincode_stream.go index 8e12e863..c75b521f 100644 --- a/shim/internal/mock/peer_chaincode_stream.go +++ b/shim/internal/mock/peer_chaincode_stream.go @@ -4,7 +4,7 @@ package mock import ( "sync" - "github.com/hyperledger/fabric-protos-go/peer" + "github.com/hyperledger/fabric-protos-go-apiv2/peer" ) type PeerChaincodeStream struct { diff --git a/shim/response.go b/shim/response.go index abe62866..0fe29348 100644 --- a/shim/response.go +++ b/shim/response.go @@ -4,7 +4,7 @@ package shim import ( - pb "github.com/hyperledger/fabric-protos-go/peer" + pb "github.com/hyperledger/fabric-protos-go-apiv2/peer" ) const ( diff --git a/shim/shim.go b/shim/shim.go index fee7c221..f998db96 100644 --- a/shim/shim.go +++ b/shim/shim.go @@ -13,9 +13,9 @@ import ( "os" "unicode/utf8" - "github.com/golang/protobuf/proto" "github.com/hyperledger/fabric-chaincode-go/shim/internal" - peerpb "github.com/hyperledger/fabric-protos-go/peer" + peerpb "github.com/hyperledger/fabric-protos-go-apiv2/peer" + "google.golang.org/protobuf/proto" ) const ( diff --git a/shim/shim_test.go b/shim/shim_test.go index 44183f74..14cd7bfe 100644 --- a/shim/shim_test.go +++ b/shim/shim_test.go @@ -10,7 +10,7 @@ import ( "testing" "github.com/hyperledger/fabric-chaincode-go/shim/internal/mock" - peerpb "github.com/hyperledger/fabric-protos-go/peer" + peerpb "github.com/hyperledger/fabric-protos-go-apiv2/peer" "github.com/stretchr/testify/assert" ) diff --git a/shim/stub.go b/shim/stub.go index fafaacf5..59ff7ab4 100644 --- a/shim/stub.go +++ b/shim/stub.go @@ -11,11 +11,11 @@ import ( "os" "unicode/utf8" - "github.com/golang/protobuf/proto" - "github.com/golang/protobuf/ptypes/timestamp" - "github.com/hyperledger/fabric-protos-go/common" - "github.com/hyperledger/fabric-protos-go/ledger/queryresult" - pb "github.com/hyperledger/fabric-protos-go/peer" + "github.com/hyperledger/fabric-protos-go-apiv2/common" + "github.com/hyperledger/fabric-protos-go-apiv2/ledger/queryresult" + pb "github.com/hyperledger/fabric-protos-go-apiv2/peer" + "google.golang.org/protobuf/proto" + timestamp "google.golang.org/protobuf/types/known/timestamppb" ) // ChaincodeStub is an object passed to chaincode for shim side handling of diff --git a/shim/stub_test.go b/shim/stub_test.go index bc98705a..6086e72a 100644 --- a/shim/stub_test.go +++ b/shim/stub_test.go @@ -9,15 +9,17 @@ import ( "os" "testing" - "github.com/golang/protobuf/proto" "github.com/hyperledger/fabric-chaincode-go/shim/internal/mock" - "github.com/hyperledger/fabric-protos-go/common" - "github.com/hyperledger/fabric-protos-go/ledger/queryresult" - peerpb "github.com/hyperledger/fabric-protos-go/peer" + "github.com/hyperledger/fabric-protos-go-apiv2/common" + "github.com/hyperledger/fabric-protos-go-apiv2/ledger/queryresult" + peerpb "github.com/hyperledger/fabric-protos-go-apiv2/peer" + "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/reflect/protoreflect" + + timestamp "google.golang.org/protobuf/types/known/timestamppb" - "github.com/golang/protobuf/ptypes" - "github.com/golang/protobuf/ptypes/timestamp" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" ) func toChaincodeArgs(args ...string) [][]byte { @@ -28,6 +30,10 @@ func toChaincodeArgs(args ...string) [][]byte { return ccArgs } +func AssertProtoEqual(t *testing.T, expected protoreflect.ProtoMessage, actual protoreflect.ProtoMessage) { + require.True(t, proto.Equal(expected, actual), "Expected %v, got %v", expected, actual) +} + func TestNewChaincodeStub(t *testing.T) { expectedArgs := toChaincodeArgs("function", "arg1", "arg2") expectedDecorations := map[string][]byte{"decoration-key": []byte("decoration-value")} @@ -119,7 +125,7 @@ func TestNewChaincodeStub(t *testing.T) { prop := &peerpb.Proposal{} err = proto.Unmarshal(tt.signedProposal.ProposalBytes, prop) assert.NoError(t, err) - assert.Equal(t, prop, stub.proposal) + AssertProtoEqual(t, prop, stub.proposal) assert.Equal(t, expectedCreator, stub.creator) assert.Equal(t, expectedTransient, stub.transient) @@ -193,7 +199,7 @@ func TestChaincodeStubAccessors(t *testing.T) { } func TestChaincodeStubGetTxTimestamp(t *testing.T) { - now := ptypes.TimestampNow() + now := timestamp.Now() tests := []struct { proposal *peerpb.Proposal ts *timestamp.Timestamp @@ -399,7 +405,7 @@ func TestChaincodeStubHandlers(t *testing.T) { if err != nil { t.Fatalf("Unexpected error for GetQueryResult: %s", err) } - assert.Equal(t, expectedResult, kv) + AssertProtoEqual(t, expectedResult, kv) sqi, err = s.GetPrivateDataQueryResult("col", "query") if err != nil { @@ -409,7 +415,7 @@ func TestChaincodeStubHandlers(t *testing.T) { if err != nil { t.Fatalf("Unexpected error for GetPrivateDataQueryResult: %s", err) } - assert.Equal(t, expectedResult, kv) + AssertProtoEqual(t, expectedResult, kv) _, err = s.GetPrivateDataQueryResult("", "query") assert.EqualError(t, err, "collection must not be an empty string") @@ -423,14 +429,14 @@ func TestChaincodeStubHandlers(t *testing.T) { if err != nil { t.Fatalf("Unexpected error for GetStateByRange: %s", err) } - assert.Equal(t, expectedResult, kv) + AssertProtoEqual(t, expectedResult, kv) // second result assert.True(t, sqi.HasNext()) kv, err = sqi.Next() if err != nil { t.Fatalf("Unexpected error for GetStateByRange: %s", err) } - assert.Equal(t, expectedResult, kv) + AssertProtoEqual(t, expectedResult, kv) err = sqi.Close() assert.NoError(t, err) @@ -439,7 +445,7 @@ func TestChaincodeStubHandlers(t *testing.T) { if err != nil { t.Fatalf("Unexpected error for GetStateByRangeWithPagination: %s", err) } - assert.Equal(t, expectedResult, kv) + AssertProtoEqual(t, expectedResult, kv) assert.Equal(t, "book", qrm.GetBookmark()) assert.Equal(t, int32(1), qrm.GetFetchedRecordsCount()) @@ -451,7 +457,7 @@ func TestChaincodeStubHandlers(t *testing.T) { if err != nil { t.Fatalf("Unexpected error for GetPrivateDataByRange: %s", err) } - assert.Equal(t, expectedResult, kv) + AssertProtoEqual(t, expectedResult, kv) _, err = s.GetPrivateDataByRange("", "", "end") assert.EqualError(t, err, "collection must not be an empty string") @@ -461,14 +467,14 @@ func TestChaincodeStubHandlers(t *testing.T) { if err != nil { t.Fatalf("Unexpected error for GetStateByPartialCompositeKey: %s", err) } - assert.Equal(t, expectedResult, kv) + AssertProtoEqual(t, expectedResult, kv) sqi, err = s.GetPrivateDataByPartialCompositeKey("col", "object", []string{"attr1", "attr2"}) kv, err = sqi.Next() if err != nil { t.Fatalf("Unexpected error for GetPrivateDataByPartialCompositeKey: %s", err) } - assert.Equal(t, expectedResult, kv) + AssertProtoEqual(t, expectedResult, kv) _, err = s.GetPrivateDataByPartialCompositeKey("", "object", []string{"attr1", "attr2"}) assert.EqualError(t, err, "collection must not be an empty string") @@ -483,7 +489,7 @@ func TestChaincodeStubHandlers(t *testing.T) { if err != nil { t.Fatalf("Unexpected error for GetStateByPartialCompositeKeyWithPagination: %s", err) } - assert.Equal(t, expectedResult, kv) + AssertProtoEqual(t, expectedResult, kv) assert.Equal(t, "book", qrm.GetBookmark()) assert.Equal(t, int32(1), qrm.GetFetchedRecordsCount()) @@ -492,7 +498,7 @@ func TestChaincodeStubHandlers(t *testing.T) { if err != nil { t.Fatalf("Unexpected error forGetQueryResultWithPagination: %s", err) } - assert.Equal(t, expectedResult, kv) + AssertProtoEqual(t, expectedResult, kv) assert.Equal(t, "book", qrm.GetBookmark()) assert.Equal(t, int32(1), qrm.GetFetchedRecordsCount()) }, @@ -528,7 +534,7 @@ func TestChaincodeStubHandlers(t *testing.T) { if err != nil { t.Fatalf("Unexpected error for GetPrivateDataByRangee: %s", err) } - assert.Equal(t, expectedResult, km) + AssertProtoEqual(t, expectedResult, km) assert.False(t, hqi.HasNext()) }, }, diff --git a/shimtest/mock/chaincode.go b/shimtest/mock/chaincode.go index 6ad21a10..33aabe67 100644 --- a/shimtest/mock/chaincode.go +++ b/shimtest/mock/chaincode.go @@ -5,7 +5,7 @@ import ( "sync" "github.com/hyperledger/fabric-chaincode-go/shim" - "github.com/hyperledger/fabric-protos-go/peer" + "github.com/hyperledger/fabric-protos-go-apiv2/peer" ) type Chaincode struct { diff --git a/shimtest/mockstub.go b/shimtest/mockstub.go index 6e36fe7c..c0709436 100644 --- a/shimtest/mockstub.go +++ b/shimtest/mockstub.go @@ -16,12 +16,11 @@ import ( "strings" "unicode/utf8" - "github.com/golang/protobuf/proto" - "github.com/golang/protobuf/ptypes" - "github.com/golang/protobuf/ptypes/timestamp" "github.com/hyperledger/fabric-chaincode-go/shim" - "github.com/hyperledger/fabric-protos-go/ledger/queryresult" - pb "github.com/hyperledger/fabric-protos-go/peer" + "github.com/hyperledger/fabric-protos-go-apiv2/ledger/queryresult" + pb "github.com/hyperledger/fabric-protos-go-apiv2/peer" + "google.golang.org/protobuf/proto" + timestamp "google.golang.org/protobuf/types/known/timestamppb" ) const ( @@ -121,7 +120,7 @@ func (stub *MockStub) GetFunctionAndParameters() (function string, params []stri func (stub *MockStub) MockTransactionStart(txid string) { stub.TxID = txid stub.setSignedProposal(&pb.SignedProposal{}) - stub.setTxTimestamp(ptypes.TimestampNow()) + stub.setTxTimestamp(timestamp.Now()) } // MockTransactionEnd End a mocked transaction, clearing the UUID.