1 Star 0 Fork 0

陈文甲 / fabric

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
util.go 6.71 KB
一键复制 编辑 原始数据 按行查看 历史
/*
Copyright IBM Corp. All Rights Reserved.
SPDX-License-Identifier: Apache-2.0
*/
package channelconfig
import (
"math"
"github.com/golang/protobuf/proto"
"github.com/hyperledger/fabric/bccsp"
cb "github.com/hyperledger/fabric/protos/common"
mspprotos "github.com/hyperledger/fabric/protos/msp"
ab "github.com/hyperledger/fabric/protos/orderer"
pb "github.com/hyperledger/fabric/protos/peer"
)
const (
// ReadersPolicyKey is the key used for the read policy
ReadersPolicyKey = "Readers"
// WritersPolicyKey is the key used for the read policy
WritersPolicyKey = "Writers"
// AdminsPolicyKey is the key used for the read policy
AdminsPolicyKey = "Admins"
defaultHashingAlgorithm = bccsp.SHA256
defaultBlockDataHashingStructureWidth = math.MaxUint32
)
// ConfigValue defines a common representation for different *cb.ConfigValue values.
type ConfigValue interface {
// Key is the key this value should be stored in the *cb.ConfigGroup.Values map.
Key() string
// Value is the message which should be marshaled to opaque bytes for the *cb.ConfigValue.value.
Value() proto.Message
}
// StandardConfigValue implements the ConfigValue interface.
type StandardConfigValue struct {
key string
value proto.Message
}
// Key is the key this value should be stored in the *cb.ConfigGroup.Values map.
func (scv *StandardConfigValue) Key() string {
return scv.key
}
// Value is the message which should be marshaled to opaque bytes for the *cb.ConfigValue.value.
func (scv *StandardConfigValue) Value() proto.Message {
return scv.value
}
// ConsortiumValue returns the config definition for the consortium name.
// It is a value for the channel group.
func ConsortiumValue(name string) *StandardConfigValue {
return &StandardConfigValue{
key: ConsortiumKey,
value: &cb.Consortium{
Name: name,
},
}
}
// HashingAlgorithm returns the only currently valid hashing algorithm.
// It is a value for the /Channel group.
func HashingAlgorithmValue() *StandardConfigValue {
return &StandardConfigValue{
key: HashingAlgorithmKey,
value: &cb.HashingAlgorithm{
Name: defaultHashingAlgorithm,
},
}
}
// BlockDataHashingStructureValue returns the only currently valid block data hashing structure.
// It is a value for the /Channel group.
func BlockDataHashingStructureValue() *StandardConfigValue {
return &StandardConfigValue{
key: BlockDataHashingStructureKey,
value: &cb.BlockDataHashingStructure{
Width: defaultBlockDataHashingStructureWidth,
},
}
}
// OrdererAddressesValue returns the a config definition for the orderer addresses.
// It is a value for the /Channel group.
func OrdererAddressesValue(addresses []string) *StandardConfigValue {
return &StandardConfigValue{
key: OrdererAddressesKey,
value: &cb.OrdererAddresses{
Addresses: addresses,
},
}
}
// ConsensusTypeValue returns the config definition for the orderer consensus type.
// It is a value for the /Channel/Orderer group.
func ConsensusTypeValue(consensusType string, consensusMetadata []byte) *StandardConfigValue {
return &StandardConfigValue{
key: ConsensusTypeKey,
value: &ab.ConsensusType{
Type: consensusType,
Metadata: consensusMetadata,
},
}
}
// BatchSizeValue returns the config definition for the orderer batch size.
// It is a value for the /Channel/Orderer group.
func BatchSizeValue(maxMessages, absoluteMaxBytes, preferredMaxBytes uint32) *StandardConfigValue {
return &StandardConfigValue{
key: BatchSizeKey,
value: &ab.BatchSize{
MaxMessageCount: maxMessages,
AbsoluteMaxBytes: absoluteMaxBytes,
PreferredMaxBytes: preferredMaxBytes,
},
}
}
// BatchTimeoutValue returns the config definition for the orderer batch timeout.
// It is a value for the /Channel/Orderer group.
func BatchTimeoutValue(timeout string) *StandardConfigValue {
return &StandardConfigValue{
key: BatchTimeoutKey,
value: &ab.BatchTimeout{
Timeout: timeout,
},
}
}
// ChannelRestrictionsValue returns the config definition for the orderer channel restrictions.
// It is a value for the /Channel/Orderer group.
func ChannelRestrictionsValue(maxChannelCount uint64) *StandardConfigValue {
return &StandardConfigValue{
key: ChannelRestrictionsKey,
value: &ab.ChannelRestrictions{
MaxCount: maxChannelCount,
},
}
}
// KafkaBrokersValue returns the config definition for the addresses of the ordering service's Kafka brokers.
// It is a value for the /Channel/Orderer group.
func KafkaBrokersValue(brokers []string) *StandardConfigValue {
return &StandardConfigValue{
key: KafkaBrokersKey,
value: &ab.KafkaBrokers{
Brokers: brokers,
},
}
}
// MSPValue returns the config definition for an MSP.
// It is a value for the /Channel/Orderer/*, /Channel/Application/*, and /Channel/Consortiums/*/*/* groups.
func MSPValue(mspDef *mspprotos.MSPConfig) *StandardConfigValue {
return &StandardConfigValue{
key: MSPKey,
value: mspDef,
}
}
// CapabilitiesValue returns the config definition for a a set of capabilities.
// It is a value for the /Channel/Orderer, Channel/Application/, and /Channel groups.
func CapabilitiesValue(capabilities map[string]bool) *StandardConfigValue {
c := &cb.Capabilities{
Capabilities: make(map[string]*cb.Capability),
}
for capability, required := range capabilities {
if !required {
continue
}
c.Capabilities[capability] = &cb.Capability{}
}
return &StandardConfigValue{
key: CapabilitiesKey,
value: c,
}
}
// EndpointsValue returns the config definition for the orderer addresses at an org scoped level.
// It is a value for the /Channel/Orderer/<OrgName> group.
func EndpointsValue(addresses []string) *StandardConfigValue {
return &StandardConfigValue{
key: EndpointsKey,
value: &cb.OrdererAddresses{
Addresses: addresses,
},
}
}
// AnchorPeersValue returns the config definition for an org's anchor peers.
// It is a value for the /Channel/Application/*.
func AnchorPeersValue(anchorPeers []*pb.AnchorPeer) *StandardConfigValue {
return &StandardConfigValue{
key: AnchorPeersKey,
value: &pb.AnchorPeers{AnchorPeers: anchorPeers},
}
}
// ChannelCreationPolicyValue returns the config definition for a consortium's channel creation policy
// It is a value for the /Channel/Consortiums/*/*.
func ChannelCreationPolicyValue(policy *cb.Policy) *StandardConfigValue {
return &StandardConfigValue{
key: ChannelCreationPolicyKey,
value: policy,
}
}
// ACLsValues returns the config definition for an applications resources based ACL definitions.
// It is a value for the /Channel/Application/.
func ACLValues(acls map[string]string) *StandardConfigValue {
a := &pb.ACLs{
Acls: make(map[string]*pb.APIResource),
}
for apiResource, policyRef := range acls {
a.Acls[apiResource] = &pb.APIResource{PolicyRef: policyRef}
}
return &StandardConfigValue{
key: ACLsKey,
value: a,
}
}
1
https://gitee.com/venjia/fabric.git
git@gitee.com:venjia/fabric.git
venjia
fabric
fabric
v1.4.12

搜索帮助