permission

package
v0.0.0-...-5fb9e85 Latest Latest
Warning

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

Go to latest
Published: Jan 1, 2022 License: Apache-2.0 Imports: 3 Imported by: 1

Documentation

Overview

Package permission

@author: xwc1125

Package permission

@author: xwc1125

Package permission

@author: xwc1125

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ChainAccessType

type ChainAccessType uint64

ChainAccessType 链准入类型

const (
	STRICT ChainAccessType = iota // 强制限制,跟权限有关,OTHER无权限进入
	LIGHT                         // 所有节点可以进入,other 只能同步txHash,
	NONE                          // 所有节点可以进入,都可以同步,节点会给其他任意节点广播
)

type DataPermissionOp

type DataPermissionOp uint64

DataPermissionOp 交易数据权限

const (
	AddOp    DataPermissionOp = iota // 增
	DelOp                            // 删
	UpdateOp                         // 改
	QueryOp                          // 查
)

type DataPermissionOpData

type DataPermissionOpData struct {
	Addr     string           // 地址
	Name     string           // 名称
	Height   uint64           // 有效期截止高度,0无限制
	RoleType RoleType         // 角色
	Opt      DataPermissionOp // 操作
}

DataPermissionOpData 交易数据权限

type DataSyncOp

type DataSyncOp uint64

DataSyncOp 数据同步类型

const (
	FULL DataSyncOp = iota // 全数据
	MUCH                   // 无extra数据
	LESS                   // 只有Hash
	NULL                   // 无数据
)

TODO 如果只是同步Hash,那么state数据无法同步,因此当前不支持只同步hash

type GenesisPermission

type GenesisPermission struct {
	Type                ChainAccessType                `json:"type"`                  // 权限类型
	SupervisorAlloc     MemberInfoMap                  `json:"supervisor_alloc"`      // 监管预设
	PeerPermissionAlloc map[string]PeerPermissionAlloc `json:"peer_permission_alloc"` // 节点预设
}

GenesisPermission 创世权限

type KMemberInfo

type KMemberInfo struct {
	Key   string
	Value MemberInfo
}

type MemberInfo

type MemberInfo struct {
	Name   string `json:"name"`
	Height uint64 `json:"height"` // 区块链高度【Admin&Peer和Height有关】
}

MemberInfo 成员信息

type MemberInfoMap

type MemberInfoMap map[string]MemberInfo

func NewMemberInfoMap

func NewMemberInfoMap() MemberInfoMap

func (*MemberInfoMap) DecodeRLP

func (m *MemberInfoMap) DecodeRLP(s *rlp.Stream) error

func (*MemberInfoMap) EncodeRLP

func (m *MemberInfoMap) EncodeRLP(w io.Writer) error

func (*MemberInfoMap) Put

func (m *MemberInfoMap) Put(key string, info MemberInfo)

func (*MemberInfoMap) Sort

func (m *MemberInfoMap) Sort() []KMemberInfo

Sort 排序

type PeerPermissionAlloc

type PeerPermissionAlloc struct {
	Colleague MemberInfoMap `json:"colleague"`
	Observer  MemberInfoMap `json:"observer"`
}

PeerPermissionAlloc peer权限分配

func (*PeerPermissionAlloc) Decode

func (i *PeerPermissionAlloc) Decode(bytes []byte) error

func (*PeerPermissionAlloc) Encode

func (i *PeerPermissionAlloc) Encode() ([]byte, error)

type RoleType

type RoleType uint64

RoleType 角色类型

const (
	ADMIN      RoleType = 0 // 管理员[共识中添加][全部权限]
	SUPERVISOR RoleType = 1 // 监管员[可同步全数据,不能产块、广播]
	COLLEAGUE  RoleType = 2 // 同事[可同步全数据,不能产块、广播]
	PEER       RoleType = 3 // 成员[共识中添加],[同步无Extra数据,能产块、广播]
	OBSERVER   RoleType = 4 // 观察者[同步无Extra数据,不能产块、广播]
	OTHER      RoleType = 5 // 其他[STRICT模式,无法进入链]
)

同事及同事级别以上的角色能够同步私有数据

Jump to

Keyboard shortcuts

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