Jason Yellick <jyellick@...>
Sorry for a late reply, but wanted to add a bit more information to this thread.
Historically, the protos lived inside of the fabric repository, but this caused problems for users who wanted to consume only the protos, and not the rest of the Fabric code, so at some point this last year, they were moved out to https://github.com/hyperledger/fabric-protos . This repo automatically triggers a job on merge which causes https://github.com/hyperledger/fabric-protos-go to be built, and then https://github.com/hyperledger/fabric vendors in this automatically built repo.
As far as understanding the dependency tree of the protobuf definitions, there is some amount of documentation in the proto files themselves. Typically, opaque fields are annotated with their expected types and how to identify them.
There is a Fabric tool out there -- configtxlator https://hyperledger-fabric.readthedocs.io/en/master/commands/configtxlator.html -- which does its best to understand the entire taxonomy of the Fabric proto definitions and is capable of translating Fabric protobufs into JSON, including transforming the opaque byte fields into their correct underlying type and JSON-ifying them. If you're just looking to inspect some Fabric artifacts and understand what all is in some blob of binary goo, that's your best bet. You can also look at the underlying decorations the tool uses https://github.com/hyperledger/fabric/tree/master/common/tools/protolator/protoext to understand how this tool resolves opaque fields.
----- Original message -----