binary_proto

package
v1.3.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 14, 2022 License: Apache-2.0, MIT Imports: 7 Imported by: 0

Documentation

Index

Constants

View Source
const (
	MERKLE_SNAPSHOT = 0x070

	MERKLE_DATA = 0x071

	MERKLE_LEAF = 0x072

	MERKLE_PATH = 0x073

	BYTES_VALUE = 0x080

	BYTES_VALUE_LIST = 0x081

	BLOCK_CHAIN_IDENTITY = 0x090

	BLOCK = 0x100

	BLOCK_BODY = 0x110

	BLOCK_GENESIS = 0x120

	DATA_SNAPSHOT = 0x130

	LEDGER_ADMIN_INFO = 0x131

	EVENT_SNAPSHOT = 0x132

	TX_CONTENT = 0x200
	TX_LEDGER  = 0x201

	TX_REQUEST = 0x202
	TX_RESULT  = 0x203
	TX_RECORD  = 0x206

	TX_CONTENT_BODY = 0x220

	TX_RETURN_MESSAGE = 0x230

	TX_SET = 0x240

	TX_OP = 0x300

	TX_OP_LEDGER_INIT = 0x301

	TX_OP_USER_REG         = 0x310
	TX_OP_USER_INFO_SET    = 0x311
	TX_OP_USER_INFO_SET_KV = 0x312
	TX_OP_USER_STATE       = 0x313
	ENUM_ACCOUNT_STATE     = 0x314
	TX_OP_USER_CA_UPDATE   = 0x315
	TX_OP_CONTRACT_STATE   = 0x316

	TX_OP_DATA_ACC_REG    = 0x320
	TX_OP_DATA_ACC_SET    = 0x321
	TX_OP_DATA_ACC_SET_KV = 0x322

	TX_OP_CONTRACT_DEPLOY = 0x330
	TX_OP_CONTRACT_UPDATE = 0x331

	TX_OP_CONTRACT_EVENT_SEND = 0x340

	TX_OP_PARTICIPANT_REG          = 0x350
	TX_OP_PARTICIPANT_STATE_UPDATE = 0x351

	TX_RESPONSE = 0x360

	TX_OP_RESULT = 0x370

	TX_OP_ROLE_CONFIGURE = 0x371

	TX_OP_ROLE_CONFIGURE_ENTRY = 0x372

	TX_OP_USER_ROLES_AUTHORIZE = 0x373

	TX_OP_USER_ROLE_AUTHORIZE_ENTRY = 0x374

	TX_OP_EVENT_ACC_REG        = 0x380
	TX_OP_EVENT_PUBLISH        = 0x381
	TX_OP_EVENT_PUBLISH_ENTITY = 0x382

	TX_OP_CONSENSUS_SETTINGS_UPDATE = 0x390
	TX_OP_META_CA_UPDATE            = 0x391
	TX_OP_HASH_ALGORITHM_UPDATE     = 0x393

	// enum types of permissions;
	ENUM_TX_PERMISSION              = 0x401
	ENUM_LEDGER_PERMISSION          = 0x402
	ENUM_MULTI_ROLES_POLICY         = 0x403
	PRIVILEGE_SET                   = 0x410
	ROLE_SET                        = 0x411
	SECURITY_INIT_SETTING           = 0x420
	SECURITY_ROLE_INIT_SETTING      = 0x421
	SECURITY_USER_AUTH_INIT_SETTING = 0x422

	// event types;
	EVENT_MESSAGE = 0x501

	// contract types of metadata;
	METADATA                         = 0x600
	METADATA_V2                      = 0x601
	METADATA_INIT_SETTING            = 0x610
	METADATA_INIT_PROPOSAL           = 0x611
	METADATA_INIT_DECISION           = 0x612
	METADATA_LEDGER_SETTING          = 0x620
	METADATA_CONSENSUS_PARTICIPANT   = 0x621
	METADATA_CONSENSUS_SETTING       = 0x631
	METADATA_PARTICIPANT_INFO        = 0x640
	METADATA_PARTICIPANT_STATE_INFO  = 0x641
	METADATA_CRYPTO_SETTING          = 0x642
	METADATA_CRYPTO_SETTING_PROVIDER = 0x643
	METADATA_IDENTITY_MODE           = 0x644
	METADATA_GENESIS_USER            = 0x645
	METADATA_LEDGER_DATA_STRUCTURE   = 0x646

	ACCOUNT_HEADER      = 0x710
	USER_ACCOUNT_HEADER = 0x800
	USER_INFO           = 0x801
	DATA                = 0x900

	// contract related;
	CONTRACT_ACCOUNT_HEADER = 0xA00
	CONTRACT_LANG           = 0xA01
	CONTRACT_RUNTIME_CONFIG = 0xA02

	// ...0xA19
	HASH                             = 0xB00
	HASH_OBJECT                      = 0xB10
	ENUM_TYPE                        = 0xB20
	CRYPTO_ALGORITHM                 = 0xB21
	ENUM_TYPE_TRANSACTION_STATE      = 0xB22
	ENUM_TYPE_BYTES_VALUE_TYPE       = 0xB23
	ENUM_TYPE_PARTICIPANT_NODE_STATE = 0xB24
	DIGITALSIGNATURE                 = 0xB30
	DIGITALSIGNATURE_BODY            = 0xB31
	CLIENT_IDENTIFICATION            = 0xC00
	CLIENT_IDENTIFICATIONS           = 0xC10
	REQUEST                          = 0xD00
	REQUEST_NODE                     = 0xD10
	REQUEST_ENDPOINT                 = 0xD20

	ACCOUNT_TYPE             = 0xD02
	TX_OP_ACC_PERMISSION_SET = 0xD10

	CONSENSUS                       = 0x1000
	CONSENSUS_ACTION_REQUEST        = CONSENSUS | 0x01
	CONSENSUS_ACTION_RESPONSE       = CONSENSUS | 0x02
	CONSENSUS_SETTINGS              = CONSENSUS | 0x03
	CONSENSUS_NODE_SETTINGS         = CONSENSUS | 0x04
	CONSENSUS_CLI_INCOMING_SETTINGS = CONSENSUS | 0x05

	// ------------------ 共识相关(BFTSMART) ----------------
	CONSENSUS_BFTSMART                       = 0x1100
	CONSENSUS_BFTSMART_SETTINGS              = CONSENSUS_BFTSMART | 0x01
	CONSENSUS_BFTSMART_NODE_SETTINGS         = CONSENSUS_BFTSMART | 0x02
	CONSENSUS_BFTSMART_CLI_INCOMING_SETTINGS = CONSENSUS_BFTSMART | 0x03
	CONSENSUS_BFTSMART_BLOCK_SETTINGS        = CONSENSUS_BFTSMART | 0x04

	// ------------------ 共识相关(MSGQUEUE) ----------------
	CONSENSUS_MSGQUEUE                       = 0x1200
	CONSENSUS_MSGQUEUE_SETTINGS              = CONSENSUS_MSGQUEUE | 0x01
	CONSENSUS_MSGQUEUE_NODE_SETTINGS         = CONSENSUS_MSGQUEUE | 0x02
	CONSENSUS_MSGQUEUE_CLI_INCOMING_SETTINGS = CONSENSUS_MSGQUEUE | 0x03
	CONSENSUS_MSGQUEUE_NETWORK_SETTINGS      = CONSENSUS_MSGQUEUE | 0x04
	CONSENSUS_MSGQUEUE_BLOCK_SETTINGS        = CONSENSUS_MSGQUEUE | 0x05

	// ------------------ 共识相关(RAFT) ----------------
	CONSENSUS_RAFT                        = 0x1300
	CONSENSUS_RAFT_VIEW_SETTINGS          = CONSENSUS_RAFT | 0x01
	CONSENSUS_RAFT_NODE_SETTINGS          = CONSENSUS_RAFT | 0x02
	CONSENSUS_RAFT_CLI_INCOMING_SETTINGS  = CONSENSUS_RAFT | 0x03
	CONSENSUS_RAFT_NETWORK_SETTINGS       = CONSENSUS_RAFT | 0x04
	CONSENSUS_RAFT_CLI_SETTINGS           = CONSENSUS_RAFT | 0x05
	CONSENSUS_RAFT_CLIENT_CREDENTIAL_INFO = CONSENSUS_RAFT | 0x06
	CONSENSUS_RAFT_SETTINGS_INFO          = CONSENSUS_RAFT | 0x07
)
View Source
const (
	PRIMITIVETYPE_NIL     = "NIL"     // 空
	PRIMITIVETYPE_BOOLEAN = "BOOLEAN" // 布尔
	PRIMITIVETYPE_INT8    = "INT8"    // int8
	PRIMITIVETYPE_INT16   = "INT16"   // int16
	PRIMITIVETYPE_INT32   = "INT32"   // int32
	PRIMITIVETYPE_INT64   = "INT64"   // int64
	PRIMITIVETYPE_TEXT    = "TEXT"    // 字符串
	PRIMITIVETYPE_BYTES   = "BYTES"   // 字节数组

	BASE_TYPE_NIL     = 0x00
	BASE_TYPE_BOOLEAN = 0x01
	BASE_TYPE_INTEGER = 0x10
	BASE_TYPE_INT8    = BASE_TYPE_INTEGER | 0x01
	BASE_TYPE_INT16   = BASE_TYPE_INTEGER | 0x02
	BASE_TYPE_INT32   = BASE_TYPE_INTEGER | 0x03
	BASE_TYPE_INT64   = BASE_TYPE_INTEGER | 0x04
	BASE_TYPE_TEXT    = 0x20
	BASE_TYPE_BYTES   = 0x40
	BASE_TYPE_EXT     = -128

	NIL     PrimitiveType = BASE_TYPE_NIL
	BOOLEAN PrimitiveType = BASE_TYPE_BOOLEAN
	INT8    PrimitiveType = BASE_TYPE_INT8
	INT16   PrimitiveType = BASE_TYPE_INT16
	INT32   PrimitiveType = BASE_TYPE_INT32
	INT64   PrimitiveType = BASE_TYPE_INT64
	TEXT    PrimitiveType = BASE_TYPE_TEXT
	BYTES   PrimitiveType = BASE_TYPE_BYTES
)
View Source
const (
	TAG_NAME            = "name"            // 名称标识,string
	TAG_ORDER           = "order"           // 序号,int
	TAG_DESCRIPTION     = "description"     // 描述,string
	TAG_PRIMITIVETYPE   = "primitiveType"   // 基础类型,string
	TAG_REFCONTRACT     = "refContract"     // 引用契约类型,类型code
	TAG_REFENUM         = "refEnum"         // 引用枚举类型,类型code
	TAG_GENERICCONTRACT = "genericContract" // 是否泛型字段,true/false
	TAG_MAXSIZE         = "maxSize"         // 最大长度,int
	TAG_NUMBERENCODING  = "numberEncoding"  // 动态数值字段,true/false
	TAG_REPEATABLE      = "list"            // 是否列表,true/false

	HEAD_BYTES = 12 // 头信息长度
)

Variables

This section is empty.

Functions

func RegisterContract

func RegisterContract(contract DataContract)

* 注册契约

func RegisterEnum

func RegisterEnum(enum EnumContract)

* 注册枚举

Types

type Codec

type Codec struct {
	VersionMap map[int32]int64
}

func NewCodec

func NewCodec() *Codec

func (*Codec) CalculateVersion

func (c *Codec) CalculateVersion(contract DataContract) error

计算契约版本号`

func (*Codec) Decode

func (c *Codec) Decode(data []byte) (val interface{}, err error)

* 解码

func (*Codec) Encode

func (c *Codec) Encode(contract DataContract) ([]byte, error)

type DataContract

type DataContract interface {
	// 唯一标识
	ContractCode() int32
	// 标识名称
	ContractName() string
	// 描述信息
	Description() string
}

* 数据契约,所有需要序列化/反序列化的Struct必须实现该接口

type EnumContract

type EnumContract interface {

	// 唯一标识
	ContractCode() int32
	// 字段基础类型信息,只支持INT8,INT16,INT32
	ContractType() string
	// 标识名称
	ContractName() string
	// 描述信息
	Description() string
	// 版本
	ContractVersion() int64

	GetValue(CODE int32) EnumContract
	GetValueByName(name string) EnumContract
}

* 枚举契约契约

type PrimitiveType

type PrimitiveType = byte

func GetPrimitiveType

func GetPrimitiveType(name string) PrimitiveType

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL