6 Star 47 Fork 28

Hyperledger/fabric

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
idemix.pb.go 17.34 KB
一键复制 编辑 原始数据 按行查看 历史
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550
// Code generated by protoc-gen-go. DO NOT EDIT.
// source: idemix/idemix.proto
/*
Package idemix is a generated protocol buffer package.
It is generated from these files:
idemix/idemix.proto
It has these top-level messages:
ECP
ECP2
IssuerPublicKey
IssuerKey
Credential
CredRequest
Signature
NymSignature
*/
package idemix
import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
// ECP is an elliptic curve point specified by its coordinates
// ECP corresponds to an element of the first group (G1)
type ECP struct {
X []byte `protobuf:"bytes,1,opt,name=X,proto3" json:"X,omitempty"`
Y []byte `protobuf:"bytes,2,opt,name=Y,proto3" json:"Y,omitempty"`
}
func (m *ECP) Reset() { *m = ECP{} }
func (m *ECP) String() string { return proto.CompactTextString(m) }
func (*ECP) ProtoMessage() {}
func (*ECP) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
func (m *ECP) GetX() []byte {
if m != nil {
return m.X
}
return nil
}
func (m *ECP) GetY() []byte {
if m != nil {
return m.Y
}
return nil
}
// ECP2 is an elliptic curve point specified by its coordinates
// ECP2 corresponds to an element of the second group (G2)
type ECP2 struct {
XA []byte `protobuf:"bytes,1,opt,name=XA,proto3" json:"XA,omitempty"`
XB []byte `protobuf:"bytes,2,opt,name=XB,proto3" json:"XB,omitempty"`
YA []byte `protobuf:"bytes,3,opt,name=YA,proto3" json:"YA,omitempty"`
YB []byte `protobuf:"bytes,4,opt,name=YB,proto3" json:"YB,omitempty"`
}
func (m *ECP2) Reset() { *m = ECP2{} }
func (m *ECP2) String() string { return proto.CompactTextString(m) }
func (*ECP2) ProtoMessage() {}
func (*ECP2) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
func (m *ECP2) GetXA() []byte {
if m != nil {
return m.XA
}
return nil
}
func (m *ECP2) GetXB() []byte {
if m != nil {
return m.XB
}
return nil
}
func (m *ECP2) GetYA() []byte {
if m != nil {
return m.YA
}
return nil
}
func (m *ECP2) GetYB() []byte {
if m != nil {
return m.YB
}
return nil
}
// IssuerPublicKey specifies an issuer public key that consists of
// AttributeNames - a list of the attribute names of a credential issued by the issuer
// HSk, HRand, HAttrs, W, BarG1, BarG2 - group elements corresponding to the signing key, randomness, and attributes
// ProofC, ProofS compose a zero-knowledge proof of knowledge of the secret key
// Hash is a hash of the public key appended to it
type IssuerPublicKey struct {
AttributeNames []string `protobuf:"bytes,1,rep,name=AttributeNames" json:"AttributeNames,omitempty"`
HSk *ECP `protobuf:"bytes,2,opt,name=HSk" json:"HSk,omitempty"`
HRand *ECP `protobuf:"bytes,3,opt,name=HRand" json:"HRand,omitempty"`
HAttrs []*ECP `protobuf:"bytes,4,rep,name=HAttrs" json:"HAttrs,omitempty"`
W *ECP2 `protobuf:"bytes,5,opt,name=W" json:"W,omitempty"`
BarG1 *ECP `protobuf:"bytes,6,opt,name=BarG1" json:"BarG1,omitempty"`
BarG2 *ECP `protobuf:"bytes,7,opt,name=BarG2" json:"BarG2,omitempty"`
ProofC []byte `protobuf:"bytes,8,opt,name=ProofC,proto3" json:"ProofC,omitempty"`
ProofS []byte `protobuf:"bytes,9,opt,name=ProofS,proto3" json:"ProofS,omitempty"`
Hash []byte `protobuf:"bytes,10,opt,name=Hash,proto3" json:"Hash,omitempty"`
}
func (m *IssuerPublicKey) Reset() { *m = IssuerPublicKey{} }
func (m *IssuerPublicKey) String() string { return proto.CompactTextString(m) }
func (*IssuerPublicKey) ProtoMessage() {}
func (*IssuerPublicKey) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }
func (m *IssuerPublicKey) GetAttributeNames() []string {
if m != nil {
return m.AttributeNames
}
return nil
}
func (m *IssuerPublicKey) GetHSk() *ECP {
if m != nil {
return m.HSk
}
return nil
}
func (m *IssuerPublicKey) GetHRand() *ECP {
if m != nil {
return m.HRand
}
return nil
}
func (m *IssuerPublicKey) GetHAttrs() []*ECP {
if m != nil {
return m.HAttrs
}
return nil
}
func (m *IssuerPublicKey) GetW() *ECP2 {
if m != nil {
return m.W
}
return nil
}
func (m *IssuerPublicKey) GetBarG1() *ECP {
if m != nil {
return m.BarG1
}
return nil
}
func (m *IssuerPublicKey) GetBarG2() *ECP {
if m != nil {
return m.BarG2
}
return nil
}
func (m *IssuerPublicKey) GetProofC() []byte {
if m != nil {
return m.ProofC
}
return nil
}
func (m *IssuerPublicKey) GetProofS() []byte {
if m != nil {
return m.ProofS
}
return nil
}
func (m *IssuerPublicKey) GetHash() []byte {
if m != nil {
return m.Hash
}
return nil
}
// IssuerKey specifies an issuer key pair that consists of
// ISk - the issuer secret key and
// IssuerPublicKey - the issuer public key
type IssuerKey struct {
ISk []byte `protobuf:"bytes,1,opt,name=ISk,proto3" json:"ISk,omitempty"`
IPk *IssuerPublicKey `protobuf:"bytes,2,opt,name=IPk" json:"IPk,omitempty"`
}
func (m *IssuerKey) Reset() { *m = IssuerKey{} }
func (m *IssuerKey) String() string { return proto.CompactTextString(m) }
func (*IssuerKey) ProtoMessage() {}
func (*IssuerKey) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} }
func (m *IssuerKey) GetISk() []byte {
if m != nil {
return m.ISk
}
return nil
}
func (m *IssuerKey) GetIPk() *IssuerPublicKey {
if m != nil {
return m.IPk
}
return nil
}
// Credential specifies a credential object that consists of
// A, B, E, S - signature value
// Attrs - attribute values
type Credential struct {
A *ECP `protobuf:"bytes,1,opt,name=A" json:"A,omitempty"`
B *ECP `protobuf:"bytes,2,opt,name=B" json:"B,omitempty"`
E []byte `protobuf:"bytes,3,opt,name=E,proto3" json:"E,omitempty"`
S []byte `protobuf:"bytes,4,opt,name=S,proto3" json:"S,omitempty"`
Attrs [][]byte `protobuf:"bytes,5,rep,name=Attrs,proto3" json:"Attrs,omitempty"`
}
func (m *Credential) Reset() { *m = Credential{} }
func (m *Credential) String() string { return proto.CompactTextString(m) }
func (*Credential) ProtoMessage() {}
func (*Credential) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} }
func (m *Credential) GetA() *ECP {
if m != nil {
return m.A
}
return nil
}
func (m *Credential) GetB() *ECP {
if m != nil {
return m.B
}
return nil
}
func (m *Credential) GetE() []byte {
if m != nil {
return m.E
}
return nil
}
func (m *Credential) GetS() []byte {
if m != nil {
return m.S
}
return nil
}
func (m *Credential) GetAttrs() [][]byte {
if m != nil {
return m.Attrs
}
return nil
}
// CredRequest specifies a credential request object that consists of
// Nym - a pseudonym, which is a commitment to the user secret
// IssuerNonce - a random nonce provided by the issuer
// ProofC, ProofS1, ProofS2 - a zero-knowledge proof of knowledge of the
// user secret inside Nym
type CredRequest struct {
Nym *ECP `protobuf:"bytes,1,opt,name=Nym" json:"Nym,omitempty"`
IssuerNonce []byte `protobuf:"bytes,2,opt,name=IssuerNonce,proto3" json:"IssuerNonce,omitempty"`
ProofC []byte `protobuf:"bytes,3,opt,name=ProofC,proto3" json:"ProofC,omitempty"`
ProofS1 []byte `protobuf:"bytes,4,opt,name=ProofS1,proto3" json:"ProofS1,omitempty"`
ProofS2 []byte `protobuf:"bytes,5,opt,name=ProofS2,proto3" json:"ProofS2,omitempty"`
}
func (m *CredRequest) Reset() { *m = CredRequest{} }
func (m *CredRequest) String() string { return proto.CompactTextString(m) }
func (*CredRequest) ProtoMessage() {}
func (*CredRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} }
func (m *CredRequest) GetNym() *ECP {
if m != nil {
return m.Nym
}
return nil
}
func (m *CredRequest) GetIssuerNonce() []byte {
if m != nil {
return m.IssuerNonce
}
return nil
}
func (m *CredRequest) GetProofC() []byte {
if m != nil {
return m.ProofC
}
return nil
}
func (m *CredRequest) GetProofS1() []byte {
if m != nil {
return m.ProofS1
}
return nil
}
func (m *CredRequest) GetProofS2() []byte {
if m != nil {
return m.ProofS2
}
return nil
}
// Signature specifies a signature object that consists of
// APrime, ABar, BPrime, Proof* - randomized credential signature values
// and a zero-knowledge proof of knowledge of a credential
// and the corresponding user secret together with the attribute values
// Nonce - a fresh nonce used for the signature
// Nym - a fresh pseudonym (a commitment to to the user secert)
// ProofSRNym - a zero-knowledge proof of knowledge of the
// user secret inside Nym
type Signature struct {
APrime *ECP `protobuf:"bytes,1,opt,name=APrime" json:"APrime,omitempty"`
ABar *ECP `protobuf:"bytes,2,opt,name=ABar" json:"ABar,omitempty"`
BPrime *ECP `protobuf:"bytes,3,opt,name=BPrime" json:"BPrime,omitempty"`
ProofC []byte `protobuf:"bytes,4,opt,name=ProofC,proto3" json:"ProofC,omitempty"`
ProofSSk []byte `protobuf:"bytes,5,opt,name=ProofSSk,proto3" json:"ProofSSk,omitempty"`
ProofSE []byte `protobuf:"bytes,6,opt,name=ProofSE,proto3" json:"ProofSE,omitempty"`
ProofSR2 []byte `protobuf:"bytes,7,opt,name=ProofSR2,proto3" json:"ProofSR2,omitempty"`
ProofSR3 []byte `protobuf:"bytes,8,opt,name=ProofSR3,proto3" json:"ProofSR3,omitempty"`
ProofSSPrime []byte `protobuf:"bytes,9,opt,name=ProofSSPrime,proto3" json:"ProofSSPrime,omitempty"`
ProofSAttrs [][]byte `protobuf:"bytes,10,rep,name=ProofSAttrs,proto3" json:"ProofSAttrs,omitempty"`
Nonce []byte `protobuf:"bytes,11,opt,name=Nonce,proto3" json:"Nonce,omitempty"`
Nym *ECP `protobuf:"bytes,12,opt,name=Nym" json:"Nym,omitempty"`
ProofSRNym []byte `protobuf:"bytes,13,opt,name=ProofSRNym,proto3" json:"ProofSRNym,omitempty"`
}
func (m *Signature) Reset() { *m = Signature{} }
func (m *Signature) String() string { return proto.CompactTextString(m) }
func (*Signature) ProtoMessage() {}
func (*Signature) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} }
func (m *Signature) GetAPrime() *ECP {
if m != nil {
return m.APrime
}
return nil
}
func (m *Signature) GetABar() *ECP {
if m != nil {
return m.ABar
}
return nil
}
func (m *Signature) GetBPrime() *ECP {
if m != nil {
return m.BPrime
}
return nil
}
func (m *Signature) GetProofC() []byte {
if m != nil {
return m.ProofC
}
return nil
}
func (m *Signature) GetProofSSk() []byte {
if m != nil {
return m.ProofSSk
}
return nil
}
func (m *Signature) GetProofSE() []byte {
if m != nil {
return m.ProofSE
}
return nil
}
func (m *Signature) GetProofSR2() []byte {
if m != nil {
return m.ProofSR2
}
return nil
}
func (m *Signature) GetProofSR3() []byte {
if m != nil {
return m.ProofSR3
}
return nil
}
func (m *Signature) GetProofSSPrime() []byte {
if m != nil {
return m.ProofSSPrime
}
return nil
}
func (m *Signature) GetProofSAttrs() [][]byte {
if m != nil {
return m.ProofSAttrs
}
return nil
}
func (m *Signature) GetNonce() []byte {
if m != nil {
return m.Nonce
}
return nil
}
func (m *Signature) GetNym() *ECP {
if m != nil {
return m.Nym
}
return nil
}
func (m *Signature) GetProofSRNym() []byte {
if m != nil {
return m.ProofSRNym
}
return nil
}
// NymSignature specifies a signature object that signs a message
// with respect to a pseudonym. It differs from the standard idemix.signature in the fact that
// the standard signature object also proves that the pseudonym is based on a secret certified by
// a CA (issuer), whereas NymSignature only proves that the the owner of the pseudonym
// signed the message
type NymSignature struct {
// ProofC is the Fiat-Shamir challenge of the ZKP
ProofC []byte `protobuf:"bytes,1,opt,name=ProofC,proto3" json:"ProofC,omitempty"`
// ProofSSK is the s-value proving knowledge of the user secret key
ProofSSk []byte `protobuf:"bytes,2,opt,name=ProofSSk,proto3" json:"ProofSSk,omitempty"`
// ProofSRNym is the s-value proving knowledge of the pseudonym secret
ProofSRNym []byte `protobuf:"bytes,3,opt,name=ProofSRNym,proto3" json:"ProofSRNym,omitempty"`
// Nonce is a fresh nonce used for the signature
Nonce []byte `protobuf:"bytes,4,opt,name=Nonce,proto3" json:"Nonce,omitempty"`
}
func (m *NymSignature) Reset() { *m = NymSignature{} }
func (m *NymSignature) String() string { return proto.CompactTextString(m) }
func (*NymSignature) ProtoMessage() {}
func (*NymSignature) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} }
func (m *NymSignature) GetProofC() []byte {
if m != nil {
return m.ProofC
}
return nil
}
func (m *NymSignature) GetProofSSk() []byte {
if m != nil {
return m.ProofSSk
}
return nil
}
func (m *NymSignature) GetProofSRNym() []byte {
if m != nil {
return m.ProofSRNym
}
return nil
}
func (m *NymSignature) GetNonce() []byte {
if m != nil {
return m.Nonce
}
return nil
}
func init() {
proto.RegisterType((*ECP)(nil), "ECP")
proto.RegisterType((*ECP2)(nil), "ECP2")
proto.RegisterType((*IssuerPublicKey)(nil), "IssuerPublicKey")
proto.RegisterType((*IssuerKey)(nil), "IssuerKey")
proto.RegisterType((*Credential)(nil), "Credential")
proto.RegisterType((*CredRequest)(nil), "CredRequest")
proto.RegisterType((*Signature)(nil), "Signature")
proto.RegisterType((*NymSignature)(nil), "NymSignature")
}
func init() { proto.RegisterFile("idemix/idemix.proto", fileDescriptor0) }
var fileDescriptor0 = []byte{
// 591 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x54, 0x4d, 0x6b, 0xdb, 0x4c,
0x18, 0x64, 0xf5, 0xe1, 0xc4, 0x8f, 0xf5, 0xe6, 0x0d, 0x9b, 0x12, 0x96, 0x50, 0x8a, 0x2b, 0x4a,
0xc8, 0xc9, 0x21, 0xca, 0x2f, 0x90, 0x8c, 0x5a, 0x87, 0x82, 0x11, 0xd2, 0x21, 0x76, 0x6f, 0xb2,
0xbd, 0xb6, 0x85, 0x2d, 0x2b, 0x5d, 0x49, 0x10, 0xff, 0x8e, 0x5e, 0xfb, 0x4f, 0x7b, 0x29, 0xfb,
0xa1, 0x4f, 0xe8, 0xc9, 0x9a, 0x19, 0x3d, 0xfb, 0x8c, 0x67, 0x16, 0xc1, 0x4d, 0xb2, 0xa1, 0x69,
0xf2, 0xfe, 0x28, 0x7f, 0x26, 0x6f, 0x2c, 0x2b, 0x32, 0xfb, 0x33, 0xe8, 0xfe, 0x34, 0xc0, 0x16,
0xa0, 0x05, 0x41, 0x63, 0xf4, 0x60, 0x85, 0x68, 0xc1, 0xd1, 0x92, 0x68, 0x12, 0x2d, 0xed, 0xaf,
0x60, 0xf8, 0xd3, 0xc0, 0xc1, 0x57, 0xa0, 0x2d, 0x5c, 0xf5, 0x92, 0xb6, 0x70, 0x05, 0xf6, 0xd4,
0x6b, 0xda, 0xc2, 0xe3, 0x78, 0xe9, 0x12, 0x5d, 0xe2, 0xa5, 0xd0, 0x97, 0x1e, 0x31, 0x14, 0xf6,
0xec, 0xdf, 0x1a, 0xfc, 0xff, 0x92, 0xe7, 0x25, 0x65, 0x41, 0xb9, 0x3a, 0x26, 0xeb, 0xef, 0xf4,
0x8c, 0xef, 0xe1, 0xca, 0x2d, 0x0a, 0x96, 0xac, 0xca, 0x82, 0xce, 0xe3, 0x94, 0xe6, 0x04, 0x8d,
0xf5, 0x87, 0x61, 0xd8, 0x63, 0xf1, 0x2d, 0xe8, 0xb3, 0xe8, 0x20, 0x96, 0x8d, 0x1c, 0x63, 0xe2,
0x4f, 0x83, 0x90, 0x13, 0xf8, 0x0e, 0xcc, 0x59, 0x18, 0x9f, 0x36, 0x62, 0x6d, 0xa5, 0x48, 0x0a,
0x7f, 0x84, 0xc1, 0x8c, 0x1f, 0x93, 0x13, 0x63, 0xac, 0xd7, 0xa2, 0xe2, 0xf0, 0x0d, 0xa0, 0x57,
0x62, 0x8a, 0x29, 0x93, 0x0b, 0x4e, 0x88, 0x5e, 0xf9, 0x71, 0x5e, 0xcc, 0xbe, 0x3d, 0x91, 0x41,
0xfb, 0x38, 0x41, 0x55, 0x9a, 0x43, 0x2e, 0xfa, 0x9a, 0x83, 0x6f, 0x61, 0x10, 0xb0, 0x2c, 0xdb,
0x4e, 0xc9, 0xa5, 0xf8, 0xbb, 0x0a, 0xd5, 0x7c, 0x44, 0x86, 0x2d, 0x3e, 0xc2, 0x18, 0x8c, 0x59,
0x9c, 0xef, 0x09, 0x08, 0x56, 0x3c, 0xdb, 0x2e, 0x0c, 0x65, 0x3a, 0x3c, 0x97, 0x6b, 0xd0, 0x5f,
0xa2, 0x83, 0x0a, 0x9b, 0x3f, 0x62, 0x1b, 0xf4, 0x97, 0xa0, 0x4a, 0xe0, 0x7a, 0xd2, 0x0b, 0x32,
0xe4, 0xa2, 0xbd, 0x05, 0x98, 0x32, 0xba, 0xa1, 0xa7, 0x22, 0x89, 0x8f, 0x18, 0x03, 0x92, 0x75,
0x55, 0x66, 0x91, 0xcb, 0x39, 0xaf, 0x93, 0x22, 0xf2, 0x78, 0xdb, 0xbe, 0xaa, 0x0d, 0xf9, 0x1c,
0x45, 0xaa, 0x34, 0x14, 0xe1, 0x0f, 0x60, 0xca, 0x08, 0xcd, 0xb1, 0xfe, 0x60, 0x85, 0x12, 0xd8,
0xbf, 0x10, 0x8c, 0xf8, 0xa2, 0x90, 0xfe, 0x2c, 0x69, 0x5e, 0xf0, 0x76, 0xe6, 0xe7, 0xb4, 0xb3,
0x8b, 0x13, 0x78, 0x0c, 0x23, 0xe9, 0x73, 0x9e, 0x9d, 0xd6, 0x54, 0x5d, 0x95, 0x36, 0xd5, 0x0a,
0x4e, 0xef, 0x04, 0x47, 0xe0, 0x42, 0x46, 0xf5, 0xa4, 0xbc, 0x54, 0xb0, 0x51, 0x1c, 0xd1, 0x5e,
0xad, 0x38, 0xf6, 0x1f, 0x0d, 0x86, 0x51, 0xb2, 0x3b, 0xc5, 0x45, 0xc9, 0x28, 0x6f, 0xdf, 0x0d,
0x58, 0x92, 0xd2, 0x8e, 0x2d, 0xc5, 0x61, 0x02, 0x86, 0xeb, 0xc5, 0xac, 0x13, 0x85, 0x60, 0xf8,
0x9c, 0x27, 0xe7, 0xda, 0x57, 0x4a, 0x71, 0x2d, 0xbf, 0x46, 0xc7, 0xef, 0x1d, 0x5c, 0x4a, 0x1b,
0xd1, 0x41, 0xd9, 0xaa, 0x71, 0xe3, 0xd8, 0x17, 0xd7, 0xaa, 0x76, 0xec, 0x37, 0x53, 0xa1, 0xbc,
0x55, 0xf5, 0x54, 0xe8, 0xb4, 0xb4, 0x67, 0x75, 0xa9, 0x6a, 0x8c, 0x6d, 0xb0, 0xd4, 0xe9, 0xd2,
0xa9, 0xbc, 0x5c, 0x1d, 0x8e, 0x67, 0x2f, 0xb1, 0xec, 0x0f, 0x44, 0x7f, 0x6d, 0x8a, 0x77, 0x2b,
0x7b, 0x19, 0x89, 0x71, 0xb3, 0x6a, 0x44, 0x74, 0x69, 0xf5, 0xbb, 0xfc, 0x04, 0xa0, 0xf6, 0x73,
0xf9, 0x3f, 0x31, 0xd2, 0x62, 0xec, 0x77, 0xb0, 0xe6, 0xe7, 0xb4, 0xc9, 0xbf, 0x49, 0x0a, 0xfd,
0x33, 0x29, 0xad, 0x97, 0x54, 0x77, 0x87, 0xde, 0xdf, 0xd1, 0x38, 0x36, 0x5a, 0x8e, 0xbd, 0xfb,
0x1f, 0x5f, 0x76, 0x49, 0xb1, 0x2f, 0x57, 0x93, 0x75, 0x96, 0x3e, 0xee, 0xcf, 0x6f, 0x94, 0x1d,
0xe9, 0x66, 0x47, 0xd9, 0xe3, 0x36, 0x5e, 0xb1, 0x64, 0xad, 0x3e, 0x78, 0xab, 0x81, 0xf8, 0xe2,
0x3d, 0xff, 0x0d, 0x00, 0x00, 0xff, 0xff, 0x06, 0x88, 0xd9, 0x9e, 0x08, 0x05, 0x00, 0x00,
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/hyperledger/fabric.git
git@gitee.com:hyperledger/fabric.git
hyperledger
fabric
fabric
v1.1.1

搜索帮助

0d507c66 1850385 C8b1a773 1850385