governance

package
v0.2.2 Latest Latest
Warning

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

Go to latest
Published: Nov 5, 2021 License: Apache-2.0, BSD-2-Clause Imports: 10 Imported by: 1

Documentation

Overview

in the blocklog core contract the VM keeps indices of blocks and requests in an optimized way for fast checking and timestamp access.

Index

Constants

View Source
const (
	MinEventSize               = uint16(200)
	MinEventsPerRequest        = uint16(10)
	DefaultMaxEventsPerRequest = uint16(50)
	DefaultMaxEventSize        = uint16(2000)    // 2Kb
	DefaultMaxBlobSize         = uint32(1000000) // 1Mb
)

constants

View Source
const (
	// state controller
	StateVarAllowedStateControllerAddresses = "a"
	StateVarRotateToAddress                 = "r"

	// chain owner
	VarChainOwnerID          = "o"
	VarChainOwnerIDDelegated = "n"
	VarDefaultOwnerFee       = "do"
	VarOwnerFee              = "of"

	// fees
	VarDefaultValidatorFee  = "dv"
	VarValidatorFee         = "vf"
	VarFeeColor             = "f"
	VarContractFeesRegistry = "fr"

	// chain info
	VarChainID         = "c"
	VarDescription     = "d"
	VarMaxBlobSize     = "mb"
	VarMaxEventSize    = "me"
	VarMaxEventsPerReq = "mr"
)

state variables

View Source
const (
	// state controller
	ParamStateControllerAddress          = coreutil.ParamStateControllerAddress
	ParamAllowedStateControllerAddresses = "a"

	// chain owner
	ParamChainOwner = "oi"
	ParamOwnerFee   = "of"

	// fees
	ParamFeeColor     = "fc"
	ParamValidatorFee = "vf"
	ParamHname        = "hn"

	// chain info
	ParamChainID             = "ci"
	ParamDescription         = "ds"
	ParamMaxBlobSize         = "bs"
	ParamMaxEventSize        = "es"
	ParamMaxEventsPerRequest = "ne"
)

params

Variables

View Source
var (
	// state controller (entity that owns the state output via AliasAddress)
	FuncRotateStateController               = coreutil.Func(coreutil.CoreEPRotateStateController)
	FuncAddAllowedStateControllerAddress    = coreutil.Func("addAllowedStateControllerAddress")
	FuncRemoveAllowedStateControllerAddress = coreutil.Func("removeAllowedStateControllerAddress")
	FuncGetAllowedStateControllerAddresses  = coreutil.ViewFunc("getAllowedStateControllerAddresses")

	// chain owner (L1 entity that is the "owner of the chain")
	FuncClaimChainOwnership    = coreutil.Func("claimChainOwnership")
	FuncDelegateChainOwnership = coreutil.Func("delegateChainOwnership")
	FuncGetChainOwner          = coreutil.ViewFunc("getChainOwner")

	// fees
	FuncSetContractFee = coreutil.Func("setContractFee")
	FuncGetFeeInfo     = coreutil.ViewFunc("getFeeInfo")

	// chain info
	FuncSetChainInfo   = coreutil.Func("setChainInfo")
	FuncGetChainInfo   = coreutil.ViewFunc("getChainInfo")
	FuncGetMaxBlobSize = coreutil.ViewFunc("getMaxBlobSize")
)
View Source
var Contract = coreutil.NewContract(coreutil.CoreContractGovernance, "Governance contract")

Functions

func CheckAuthorizationByChainOwner

func CheckAuthorizationByChainOwner(state kv.KVStore, agentID *iscp.AgentID) bool

func GetDefaultFeeInfo

func GetDefaultFeeInfo(state kv.KVStoreReader) (colored.Color, uint64, uint64, error)

func GetFeeInfo

func GetFeeInfo(ctx iscp.SandboxView, hname iscp.Hname) (colored.Color, uint64, uint64)

GetFeeInfo is an internal utility function which returns fee info for the contract It is called from VMContext and viewcontext objects It is not exposed to the sandbox

func GetFeeInfoByHname

func GetFeeInfoByHname(state kv.KVStoreReader, hname iscp.Hname) (colored.Color, uint64, uint64)

GetFeeInfoByHname is an internal utility function which returns fee info for the contract It is called from VMContext and viewcontext objects It is not exposed to the sandbox

func GetFeeInfoFromContractFeesRecord

func GetFeeInfoFromContractFeesRecord(state kv.KVStoreReader, rec *ContractFeesRecord) (colored.Color, uint64, uint64)

func GetRotationAddress

func GetRotationAddress(state kv.KVStoreReader) ledgerstate.Address

GetRotationAddress tries to read the state of 'governance' and extract rotation address If succeeds, it means this block is fake. If fails, return nil

func MustGetChainOwnerID

func MustGetChainOwnerID(state kv.KVStoreReader) *iscp.AgentID

Types

type ChainInfo

type ChainInfo struct {
	ChainID             *iscp.ChainID
	ChainOwnerID        *iscp.AgentID
	Description         string
	FeeColor            colored.Color
	DefaultOwnerFee     int64
	DefaultValidatorFee int64
	MaxBlobSize         uint32
	MaxEventSize        uint16
	MaxEventsPerReq     uint16
}

ChainInfo is an API structure which contains main properties of the chain in on place

func MustGetChainInfo

func MustGetChainInfo(state kv.KVStoreReader) ChainInfo

MustGetChainInfo return global variables of the chain

type ContractFeesRecord

type ContractFeesRecord struct {
	// Chain owner part of the fee. If it is 0, it means chain-global default is in effect
	OwnerFee uint64
	// Validator part of the fee. If it is 0, it means chain-global default is in effect
	ValidatorFee uint64
}

ContractFeesRecord is a structure which contains the fee information for a contract

func ContractFeesRecordFromBytes

func ContractFeesRecordFromBytes(data []byte) (*ContractFeesRecord, error)

func ContractFeesRecordFromMarshalUtil

func ContractFeesRecordFromMarshalUtil(mu *marshalutil.MarshalUtil) (*ContractFeesRecord, error)

func FindContractFees

func FindContractFees(state kv.KVStoreReader, hname iscp.Hname) *ContractFeesRecord

FindContractFees is an internal utility function which finds a contract in the KVStore It is called from within the 'governance' contract as well as VMContext and viewcontext objects It is not directly exposed to the sandbox If contract fees are not found by the given hname, nil is returned the bool flag indicates if a contract-fees record was found or not

func NewContractFeesRecord

func NewContractFeesRecord(ownerFee, validatorFee uint64) *ContractFeesRecord

func (*ContractFeesRecord) Bytes

func (p *ContractFeesRecord) Bytes() []byte

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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