Get desktop application:
View/edit binary Protocol Buffers messages
ApplicationPolicy captures the diffenrent policy types that are set and evaluted at the application level.
Used in:
SignaturePolicy type is used if the policy is specified as a combination (using threshold gates) of signatures from MSP principals
ChannelConfigPolicyReference is used when the policy is specified as a string that references a policy defined in the configuration of the channel
This is finalized block structure to be shared among the orderer and peer Note that the BlockHeader chains to the previous BlockHeader, and the BlockData hash is embedded in the BlockHeader. This makes it natural and obvious that the Data is included in the hash, but the Metadata is not.
Used in:
, ,Used in:
BlockDataHashingStructure is encoded into the configuration transaction as a configuration item of type Chain with a Key of "BlockDataHashingStructure" and a Value of HashingAlgorithm as marshaled protobuf bytes
width specifies the width of the Merkle tree to use when computing the BlockDataHash in order to replicate flat hashing, set this width to MAX_UINT32
BlockHeader is the element of the block which forms the block chain The block header is hashed using the configured chain hashing algorithm over the ASN.1 encoding of the BlockHeader
Used in:
The position in the blockchain
The hash of the previous block header
The hash of the BlockData, by MerkleTree
Used in:
This enum enlists indexes of the block metadata array
Block metadata array position for block signatures
Block metadata array position to store last configuration block sequence number
Block metadata array position to store serialized bit array filter of invalid transactions
Block metadata array position to store operational metadata for orderers e.g. For Kafka, this is where we store the last offset written to the local ledger
Block metadata array position to store the hash of TRANSACTIONS_FILTER, State Updates, and the COMMIT_HASH of the previous block
Contains information about the blockchain ledger such as height, current block hash, and previous block hash.
Specifies bootstrapping snapshot info if the channel is bootstrapped from a snapshot. It is nil if the channel is not bootstrapped from a snapshot.
Contains information for the bootstrapping snapshot.
Used in:
Capabilities message defines the capabilities a particular binary must implement for that binary to be able to safely participate in the channel. The capabilities message is defined at the /Channel level, the /Channel/Application level, and the /Channel/Orderer level. The /Channel level capabilties define capabilities which both the orderer and peer binaries must satisfy. These capabilties might be things like a new MSP type, or a new policy type. The /Channel/Orderer level capabilties define capabilities which must be supported by the orderer, but which have no bearing on the behavior of the peer. For instance if the orderer changes the logic for how it constructs new channels, only all orderers must agree on the new logic. The peers do not need to be aware of this change as they only interact with the channel after it has been constructed. Finally, the /Channel/Application level capabilities define capabilities which the peer binary must satisfy, but which have no bearing on the orderer. For instance, if the peer adds a new UTXO transaction type, or changes the chaincode lifecycle requirements, all peers must agree on the new logic. However, orderers never inspect transactions this deeply, and therefore have no need to be aware of the change. The capabilities strings defined in these messages typically correspond to release binary versions (e.g. "V1.1"), and are used primarilly as a mechanism for a fully upgraded network to switch from one set of logic to a new one. Although for V1.1, the orderers must be upgraded to V1.1 prior to the rest of the network, going forward, because of the split between the /Channel, /Channel/Orderer and /Channel/Application capabilities. It should be possible for the orderer and application networks to upgrade themselves independently (with the exception of any new capabilities defined at the /Channel level).
Capability is an empty message for the time being. It is defined as a protobuf message rather than a constant, so that we may extend capabilities with other fields if the need arises in the future. For the time being, a capability being in the capabilities map requires that that capability be supported.
Used in:
(message has no fields)
Header is a generic replay prevention and identity message to include in a signed payload
Header types 0-10000 are reserved and defined by HeaderType
Version indicates message protocol version
Timestamp is the local time when the message was created by the sender
Identifier of the channel this message is bound for
An unique identifier that is used end-to-end. - set by higher layers such as end user or SDK - passed to the endorser (which will check for uniqueness) - as the header is passed along unchanged, it will be be retrieved by the committer (uniqueness check here as well) - to be stored in the ledger
The epoch in which this header was generated, where epoch is defined based on block height Epoch in which the response has been generated. This field identifies a logical window of time. A proposal response is accepted by a peer only if two conditions hold: 1. the epoch specified in the message is the current epoch 2. this message has been only seen once during this epoch (i.e. it hasn't been replayed)
Extension that may be attached based on the header type
If mutual TLS is employed, this represents the hash of the client's TLS certificate
CollectionConfig defines the configuration of a collection object; it currently contains a single, static type. Dynamic collections are deferred.
Used in:
CollectionConfigPackage represents an array of CollectionConfig messages; the extra struct is required because repeated oneof is forbidden by the protobuf syntax
Collection policy configuration. Initially, the configuration can only contain a SignaturePolicy. In the future, the SignaturePolicy may be a more general Policy. Instead of containing the actual policy, the configuration may in the future contain a string reference to a policy.
Used in:
Initially, only a signature policy is supported.
Later, the SignaturePolicy will be replaced by a Policy. Policy policy = 1; A reference to a Policy is planned to be added later. string reference = 2;
CombinedPrincipal governs the organization of the Principal field of a policy principal when principal_classification has indicated that a combined form of principals is required
Principals refer to combined principals
Config represents the config for a particular channel
Used in:
,channel_group is a bad name for this, it should be changed to root when API breakage is allowed
ConfigEnvelope is designed to contain _all_ configuration for a chain with no dependency on previous configuration transactions. It is generated with the following scheme: 1. Retrieve the existing configuration 2. Note the config properties (ConfigValue, ConfigPolicy, ConfigGroup) to be modified 3. Add any intermediate ConfigGroups to the ConfigUpdate.read_set (sparsely) 4. Add any additional desired dependencies to ConfigUpdate.read_set (sparsely) 5. Modify the config properties, incrementing each version by 1, set them in the ConfigUpdate.write_set Note: any element not modified but specified should already be in the read_set, so may be specified sparsely 6. Create ConfigUpdate message and marshal it into ConfigUpdateEnvelope.update and encode the required signatures a) Each signature is of type ConfigSignature b) The ConfigSignature signature is over the concatenation of signature_header and the ConfigUpdate bytes (which includes a ChainHeader) 5. Submit new Config for ordering in Envelope signed by submitter a) The Envelope Payload has data set to the marshaled ConfigEnvelope b) The Envelope Payload has a header of type Header.Type.CONFIG_UPDATE The configuration manager will verify: 1. All items in the read_set exist at the read versions 2. All items in the write_set at a different version than, or not in, the read_set have been appropriately signed according to their mod_policy 3. The new configuration satisfies the ConfigSchema
A marshaled Config structure
The last CONFIG_UPDATE message which generated this current configuration
ConfigGroup is the hierarchical data structure for holding config
Used in:
,Used in:
Used in:
A marshaled SignatureHeader
Signature over the concatenation signatureHeader bytes and config bytes
ConfigUpdate is used to submit a subset of config and to have the orderer apply to Config it is always submitted inside a ConfigUpdateEnvelope which allows the addition of signatures resulting in a new total configuration. The update is applied as follows: 1. The versions from all of the elements in the read_set is verified against the versions in the existing config. If there is a mismatch in the read versions, then the config update fails and is rejected. 2. Any elements in the write_set with the same version as the read_set are ignored. 3. The corresponding mod_policy for every remaining element in the write_set is collected. 4. Each policy is checked against the signatures from the ConfigUpdateEnvelope, any failing to verify are rejected 5. The write_set is applied to the Config and the ConfigGroupSchema verifies that the updates were legal
Which channel this config update is for
ReadSet explicitly lists the portion of the config which was read, this should be sparse with only Version set
WriteSet lists the portion of the config which was written, this should included updated Versions
Data which is not to be reflected in the resulting Config, but is still needed for some other purpose. For instance, rscc_seed_data
A marshaled ConfigUpdate structure
Signatures over the config_update
ConfigValue represents an individual piece of config data
Used in:
Consortium represents the consortium context in which the channel was created
Envelope wraps a Payload with a signature so that the message may be authenticated
Used as request type in: orderer.AtomicBroadcast.Broadcast, orderer.AtomicBroadcast.Deliver, protos.Admin.GetLogSpec, protos.Admin.GetModuleLogLevel, protos.Admin.GetStatus, protos.Admin.RevertLogLevels, protos.Admin.SetLogSpec, protos.Admin.SetModuleLogLevel, protos.Admin.StartServer, protos.Deliver.Deliver, protos.Deliver.DeliverFiltered, protos.Deliver.DeliverWithPrivateData
Used as field type in:
, ,A marshaled Payload
A signature by the creator specified in the Payload header
HashingAlgorithm is encoded into the configuration transaction as a configuration item of type Chain with a Key of "HashingAlgorithm" and a Value of HashingAlgorithm as marshaled protobuf bytes
SHA256 is currently the only supported and tested algorithm.
Used in:
Used in:
Used for messages which are signed but opaque
Used for messages which express the channel config
Used for transactions which update the channel config
Used by the SDK to submit endorser based transactions
Used internally by the orderer for management
Used as the type for Envelope messages submitted to instruct the Deliver API to seek
Used for packaging chaincode artifacts for install
ImplicitMetaPolicy is a policy type which depends on the hierarchical nature of the configuration It is implicit because the rule is generate implicitly based on the number of sub policies It is meta because it depends only on the result of other policies When evaluated, this policy iterates over all immediate child sub-groups, retrieves the policy of name sub_policy, evaluates the collection and applies the rule. For example, with 4 sub-groups, and a policy name of "foo", ImplicitMetaPolicy retrieves each sub-group, retrieves policy "foo" for each subgroup, evaluates it, and, in the case of ANY 1 satisfied is sufficient, ALL would require 4 signatures, and MAJORITY would require 3 signatures.
Used in:
Requires any of the sub-policies be satisfied, if no sub-policies exist, always returns true
Requires all of the sub-policies be satisfied
Requires a strict majority (greater than half) of the sub-policies be satisfied
LastConfig is the encoded value for the Metadata message which is encoded in the LAST_CONFIGURATION block metadata index
Used in:
MSPIdentityAnonymity can be used to enforce an identity to be anonymous or nominal.
Used in:
Represents a nominal MSP Identity
Represents an anonymous MSP Identity
MSPPrincipal aims to represent an MSP-centric set of identities. In particular, this structure allows for definition of - a group of identities that are member of the same MSP - a group of identities that are member of the same organization unit in the same MSP - a group of identities that are administering a specific MSP - a specific identity Expressing these groups is done given two fields of the fields below - Classification, that defines the type of classification of identities in an MSP this principal would be defined on; Classification can take three values: (i) ByMSPRole: that represents a classification of identities within MSP based on one of the two pre-defined MSP rules, "member" and "admin" (ii) ByOrganizationUnit: that represents a classification of identities within MSP based on the organization unit an identity belongs to (iii)ByIdentity that denotes that MSPPrincipal is mapped to a single identity/certificate; this would mean that the Principal bytes message
Used in:
,Classification describes the way that one should process Principal. An Classification value of "ByOrganizationUnit" reflects that "Principal" contains the name of an organization this MSP handles. A Classification value "ByIdentity" means that "Principal" contains a specific identity. Default value denotes that Principal contains one of the groups by default supported by all MSPs ("admin" or "member").
Principal completes the policy principal definition. For the default principal types, Principal can be either "Admin" or "Member". For the ByOrganizationUnit/ByIdentity values of Classification, PolicyPrincipal acquires its value from an organization unit or identity, respectively. For the Combined Classification type, the Principal is a marshalled CombinedPrincipal.
Used in:
Represents the one of the dedicated MSP roles, the
one of a member of MSP network, and the one of an administrator of an MSP network
Denotes a finer grained (affiliation-based)
groupping of entities, per MSP affiliation E.g., this can well be represented by an MSP's Organization unit
Denotes a principal that consists of a single
identity
Denotes a principal that can be used to enforce
an identity to be anonymous or nominal.
Denotes a combined principal
MSPRole governs the organization of the Principal field of an MSPPrincipal when it aims to define one of the two dedicated roles within an MSP: Admin and Members.
MSPIdentifier represents the identifier of the MSP this principal refers to
MSPRoleType defines which of the available, pre-defined MSP-roles an identiy should posess inside the MSP with identifier MSPidentifier
Used in:
Represents an MSP Member
Represents an MSP Admin
Represents an MSP Client
Represents an MSP Peer
Represents an MSP Orderer
Metadata is a common structure to be used to encode block metadata
Used in:
An encoded SignatureHeader
The signature over the concatenation of the Metadata value bytes, signatureHeader, and block header
OrdererAddresses is encoded into the configuration transaction as a configuration item of type Chain with a Key of "OrdererAddresses" and a Value of OrdererAddresses as marshaled protobuf bytes
OrdererBlockMetadata defines metadata that is set by the ordering service.
OrganizationUnit governs the organization of the Principal field of a policy principal when a specific organization unity members are to be defined within a policy principal.
MSPIdentifier represents the identifier of the MSP this organization unit refers to
OrganizationUnitIdentifier defines the organizational unit under the MSP identified with MSPIdentifier
CertifiersIdentifier is the hash of certificates chain of trust related to this organizational unit
Payload is the message contents (and header to allow for signing)
Header is included to provide identity and prevent replay
Data, the encoding of which is defined by the type in the header
Policy expresses a policy which the orderer can evaluate, because there has been some desire expressed to support multiple policy engines, this is typed as a oneof for now
Used in:
For outside implementors, consider the first 1000 types reserved, otherwise one of PolicyType
Reserved to check for proper initialization
Used in:
,Creator of the message, a marshaled msp.SerializedIdentity
Arbitrary number that may only be used once. Can be used to detect replay attacks.
SignaturePolicy is a recursive message structure which defines a featherweight DSL for describing policies which are more complicated than 'exactly this signature'. The NOutOf operator is sufficent to express AND as well as OR, as well as of course N out of the following M policies SignedBy implies that the signature is from a valid certificate which is signed by the trusted authority specified in the bytes. This will be the certificate itself for a self-signed certificate and will be the CA for more traditional certificates
Used in:
,Used in:
SignaturePolicyEnvelope wraps a SignaturePolicy and includes a version for future enhancements
Used in:
, , , ,StaticCollectionConfig constitutes the configuration parameters of a static collection object. Static collections are collections that are known at chaincode instantiation time, and that cannot be changed. Dynamic collections are deferred.
Used in:
the name of the collection inside the denoted chaincode
a reference to a policy residing / managed in the config block to define which orgs have access to this collection’s private data
The minimum number of peers private data will be sent to upon endorsement. The endorsement would fail if dissemination to at least this number of peers is not achieved.
The maximum number of peers that private data will be sent to upon endorsement. This number has to be bigger than required_peer_count.
The number of blocks after which the collection data expires. For instance if the value is set to 10, a key last modified by block number 100 will be purged at block number 111. A zero value is treated same as MaxUint64
The member only read access denotes whether only collection member clients can read the private data (if set to true), or even non members can read the data (if set to false, for example if you want to implement more granular access logic in the chaincode)
The member only write access denotes whether only collection member clients can write the private data (if set to true), or even non members can write the data (if set to false, for example if you want to implement more granular access logic in the chaincode)
a reference to a policy residing / managed in the config block to define the endorsement policy for this collection
These status codes are intended to resemble selected HTTP status codes
Used in:
, , ,