本文是区块链浏览器系列的第二篇。

上一篇介绍了交易块中的数据结构,这一篇介绍区块链网络中的配置块数据结构。

这两种区块中数据结构内容的区别主要Payload结构体中的Data域中的内容,接下来将以类图的形式来解析Data域包含的信息:

classDiagram
    class Payload{
		Header *Header
		Data []byte
	}
    class Header{
		ChannelHeader []byte
		SignatureHeader []byte
	}
    class ChannelHeader{
		Type int32
		Version int32
		Timestamp *timestamp.Timestamp
		TxId string
		Epoch uint64
		Extension []byte
		TlsCertHash          []byte
	}
    class SignatureHeader{
		Creator []byte
		Nonce []byte
	}
	class SerializedIdentity{
		Mspid string
		IdBytes []byte
	}
	class Certificate{
		crypto/x509.Certificate
	}

    class ConfigEnvelope{
        Config  *Config
        LastUpdate *Envelope
    }
    class Config{
        Sequence uint64
        ChannelGroup *ConfigGroup
    }
    class Envelope{
        Payload []byte
        Signature []byte
    }
    class ConfigGroup{
        Version uint64
        Groups map[string]*ConfigGroup
        Values map[string]*ConfigValue
        Policies map[string]*ConfigPolicy
        ModPolicy string
    }
    class ConfigValue{
        Version uint64
        Value []byte
        ModPolicy string
    }
    class ConfigPolicy{
        Version uint64
        Policy *Policy
        ModPolicy string
    }
    class Policy{
        Type int32
        Value []byte
    }

    Payload --* Header
    Header --* ChannelHeader
	Header --* SignatureHeader
    SignatureHeader --* SerializedIdentity
	SerializedIdentity --* Certificate

    Payload --* ConfigEnvelope
    ConfigEnvelope --* Config
    ConfigEnvelope --* Envelope

    Config --* ConfigGroup
    ConfigGroup --* ConfigGroup
    ConfigGroup --* ConfigValue
    ConfigGroup --* ConfigPolicy

    ConfigPolicy --* Policy

声明:本作品采用署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)进行许可,使用时请注明出处。
Author: mengbin92
Github: mengbin92
cnblogs: 恋水无意