forked from hyperledger/fabric-config
-
Notifications
You must be signed in to change notification settings - Fork 0
/
orderer.go
96 lines (75 loc) · 2.83 KB
/
orderer.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
/*
Copyright IBM Corp. All Rights Reserved.
SPDX-License-Identifier: Apache-2.0
*/
package orderer
import (
"crypto/x509"
)
const (
// ConsensusStateNormal indicates normal orderer operation.
ConsensusStateNormal ConsensusState = "STATE_NORMAL"
// ConsensusStateMaintenance indicates the orderer is in consensus type migration.
ConsensusStateMaintenance ConsensusState = "STATE_MAINTENANCE"
// ConsensusTypeSolo identifies the solo consensus implementation.
ConsensusTypeSolo = "solo"
// ConsensusTypeKafka identifies the Kafka-based consensus implementation.
ConsensusTypeKafka = "kafka"
// ConsensusTypeEtcdRaft identifies the Raft-based consensus implementation.
ConsensusTypeEtcdRaft = "etcdraft"
// KafkaBrokersKey is the common.ConfigValue type key name for the KafkaBrokers message.
KafkaBrokersKey = "KafkaBrokers"
// ConsensusTypeKey is the common.ConfigValue type key name for the ConsensusType message.
ConsensusTypeKey = "ConsensusType"
// BatchSizeKey is the common.ConfigValue type key name for the BatchSize message.
BatchSizeKey = "BatchSize"
// BatchTimeoutKey is the common.ConfigValue type key name for the BatchTimeout message.
BatchTimeoutKey = "BatchTimeout"
// ChannelRestrictionsKey is the key name for the ChannelRestrictions message.
ChannelRestrictionsKey = "ChannelRestrictions"
)
// ConsensusState defines the orderer mode of operation.
// Options: `ConsensusStateNormal` and `ConsensusStateMaintenance`
type ConsensusState string
// BatchSize is the configuration affecting the size of batches.
type BatchSize struct {
// MaxMessageCount is the max message count.
MaxMessageCount uint32
// AbsoluteMaxBytes is the max block size (not including headers).
AbsoluteMaxBytes uint32
// PreferredMaxBytes is the preferred size of blocks.
PreferredMaxBytes uint32
}
// Kafka is a list of Kafka broker endpoints.
type Kafka struct {
// Brokers contains the addresses of *at least two* kafka brokers
// Must be in `IP:port` notation
Brokers []string
}
// EtcdRaft is serialized and set as the value of ConsensusType.Metadata in
// a channel configuration when the ConsensusType.Type is set to "etcdraft".
type EtcdRaft struct {
Consenters []Consenter
Options EtcdRaftOptions
}
// EtcdRaftOptions to be specified for all the etcd/raft nodes.
// These can be modified on a per-channel basis.
type EtcdRaftOptions struct {
TickInterval string
ElectionTick uint32
HeartbeatTick uint32
MaxInflightBlocks uint32
// Take snapshot when cumulative data exceeds certain size in bytes.
SnapshotIntervalSize uint32
}
// Consenter represents a consenting node (i.e. replica).
type Consenter struct {
Address EtcdAddress
ClientTLSCert *x509.Certificate
ServerTLSCert *x509.Certificate
}
// EtcdAddress contains the hostname and port for an endpoint.
type EtcdAddress struct {
Host string
Port int
}