governance

package
v0.3.2 Latest Latest
Warning

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

Go to latest
Published: Sep 21, 2022 License: Apache-2.0, BSD-2-Clause Imports: 15 Imported by: 2

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 (
	ChangeAccessNodeActionRemove = ChangeAccessNodeAction(iota)
	ChangeAccessNodeActionAccept
	ChangeAccessNodeActionDrop
)
View Source
const (
	MinEventSize               = uint16(200)
	MinEventsPerRequest        = uint16(10)
	DefaultMaxEventsPerRequest = uint16(50)
	DefaultMaxEventSize        = uint16(2000)      // 2Kb
	DefaultMaxBlobSize         = uint32(2_000_000) // 2Mb
)

constants

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

	// chain owner
	VarChainOwnerID          = "o"
	VarChainOwnerIDDelegated = "n"

	// fees
	VarGasFeePolicyBytes = "g"

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

	// access nodes
	VarAccessNodes          = "an"
	VarAccessNodeCandidates = "ac"

	// maintenance
	VarMaintenanceStatus = "m"
)

state variables

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

	// chain owner
	ParamChainOwner = "o"

	// fees
	ParamFeePolicyBytes = "g"

	// chain info
	ParamChainID                   = "c"
	ParamDescription               = "d"
	ParamMaxBlobSizeUint32         = "mb"
	ParamMaxEventSizeUint16        = "me"
	ParamMaxEventsPerRequestUint16 = "mr"

	ParamGetChainNodesAccessNodeCandidates = "an"
	ParamGetChainNodesAccessNodes          = "ac"

	// access nodes: addCandidateNode
	ParamAccessNodeInfoForCommittee = "i"
	ParamAccessNodeInfoPubKey       = "ip"
	ParamAccessNodeInfoCertificate  = "ic"
	ParamAccessNodeInfoAccessAPI    = "ia"

	// access nodes: changeAccessNodes
	ParamChangeAccessNodesActions = "n"
)

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")
	ViewGetAllowedStateControllerAddresses  = coreutil.ViewFunc("getAllowedStateControllerAddresses")

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

	// fees
	FuncSetFeePolicy = coreutil.Func("setFeePolicy")
	ViewGetFeePolicy = coreutil.ViewFunc("getFeePolicy")

	// chain info
	FuncSetChainInfo   = coreutil.Func("setChainInfo")
	ViewGetChainInfo   = coreutil.ViewFunc("getChainInfo")
	ViewGetMaxBlobSize = coreutil.ViewFunc("getMaxBlobSize")

	// access nodes
	FuncAddCandidateNode  = coreutil.Func("addCandidateNode")
	FuncRevokeAccessNode  = coreutil.Func("revokeAccessNode")
	FuncChangeAccessNodes = coreutil.Func("changeAccessNodes")
	ViewGetChainNodes     = coreutil.ViewFunc("getChainNodes")

	// maintenance
	FuncStartMaintenance     = coreutil.Func("startMaintenance")
	FuncStopMaintenance      = coreutil.Func("stopMaintenance")
	ViewGetMaintenanceStatus = coreutil.ViewFunc("getMaintenanceStatus")
)
View Source
var Contract = coreutil.NewContract(coreutil.CoreContractGovernance, "Governance contract")

Functions

func GetGasFeePolicy added in v0.3.0

func GetGasFeePolicy(state kv.KVStoreReader) (*gas.GasFeePolicy, error)

GetGasFeePolicy returns gas policy from the state

func GetRotationAddress

func GetRotationAddress(state kv.KVStoreReader) iotago.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) isc.AgentID

func MustGetGasFeePolicy added in v0.3.0

func MustGetGasFeePolicy(state kv.KVStoreReader) *gas.GasFeePolicy

Types

type AccessNodeInfo added in v0.2.3

type AccessNodeInfo struct {
	NodePubKey    []byte // Public Key of the node. Stored as a key in the SC State and Params.
	ValidatorAddr []byte // Address of the validator owning the node. Not sent via parameters.
	Certificate   []byte // Proof that Validator owns the Node.
	ForCommittee  bool   // true, if Node should be a candidate to a committee.
	AccessAPI     string // API URL, if any.
}

AccessNodeInfo conveys all the information that is maintained on the governance SC about a specific node.

func NewAccessNodeInfoFromAddCandidateNodeParams added in v0.2.3

func NewAccessNodeInfoFromAddCandidateNodeParams(ctx isc.Sandbox) *AccessNodeInfo

func NewAccessNodeInfoFromBytes added in v0.2.3

func NewAccessNodeInfoFromBytes(pubKey, value []byte) (*AccessNodeInfo, error)

func NewAccessNodeInfoFromRevokeAccessNodeParams added in v0.2.3

func NewAccessNodeInfoFromRevokeAccessNodeParams(ctx isc.Sandbox) *AccessNodeInfo

func NewAccessNodeInfoListFromMap added in v0.2.4

func NewAccessNodeInfoListFromMap(infoMap *collections.ImmutableMap) ([]*AccessNodeInfo, error)

func (*AccessNodeInfo) AddCertificate added in v0.2.3

func (a *AccessNodeInfo) AddCertificate(nodeKeyPair *cryptolib.KeyPair, ownerAddress iotago.Address) *AccessNodeInfo

func (*AccessNodeInfo) Bytes added in v0.2.3

func (a *AccessNodeInfo) Bytes() []byte

func (*AccessNodeInfo) ToAddCandidateNodeParams added in v0.2.3

func (a *AccessNodeInfo) ToAddCandidateNodeParams() dict.Dict

func (*AccessNodeInfo) ToRevokeAccessNodeParams added in v0.2.3

func (a *AccessNodeInfo) ToRevokeAccessNodeParams() dict.Dict

func (*AccessNodeInfo) ValidateCertificate added in v0.2.3

func (a *AccessNodeInfo) ValidateCertificate(ctx isc.Sandbox) bool

type ChainInfo

type ChainInfo struct {
	ChainID         *isc.ChainID
	ChainOwnerID    isc.AgentID
	Description     string
	GasFeePolicy    *gas.GasFeePolicy
	MaxBlobSize     uint32
	MaxEventSize    uint16
	MaxEventsPerReq uint16
}

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

func GetChainInfo added in v0.3.0

func GetChainInfo(state kv.KVStoreReader) (*ChainInfo, error)

GetChainInfo returns global variables of the chain

func MustGetChainInfo

func MustGetChainInfo(state kv.KVStoreReader) *ChainInfo

MustGetChainInfo return global variables of the chain

type ChangeAccessNodeAction added in v0.2.3

type ChangeAccessNodeAction byte

type ChangeAccessNodesRequest added in v0.2.3

type ChangeAccessNodesRequest struct {
	// contains filtered or unexported fields
}

func NewChangeAccessNodesRequest added in v0.2.3

func NewChangeAccessNodesRequest() *ChangeAccessNodesRequest

func (*ChangeAccessNodesRequest) Accept added in v0.2.3

func (*ChangeAccessNodesRequest) AsDict added in v0.2.3

func (req *ChangeAccessNodesRequest) AsDict() dict.Dict

func (*ChangeAccessNodesRequest) Drop added in v0.2.3

func (*ChangeAccessNodesRequest) Remove added in v0.2.3

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 ContractFeesRecordFromMarshalUtil

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

func (*ContractFeesRecord) Bytes

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

type GetChainNodesRequest added in v0.2.3

type GetChainNodesRequest struct{}

GetChainNodesRequest

func (GetChainNodesRequest) AsDict added in v0.2.3

func (req GetChainNodesRequest) AsDict() dict.Dict

type GetChainNodesResponse added in v0.2.3

type GetChainNodesResponse struct {
	AccessNodeCandidates []*AccessNodeInfo      // Application info for the AccessNodes.
	AccessNodes          []*cryptolib.PublicKey // Public Keys of Access Nodes.
}

GetChainNodesResponse

func NewGetChainNodesResponseFromDict added in v0.2.3

func NewGetChainNodesResponseFromDict(d dict.Dict) *GetChainNodesResponse

type NodeOwnershipCertificate added in v0.2.4

type NodeOwnershipCertificate []byte

NodeOwnershipCertificate is a proof that a specified address is an owner of the specified node. It is implemented as a signature over the node pub key concatenated with the owner address.

func NewNodeOwnershipCertificate added in v0.2.4

func NewNodeOwnershipCertificate(nodeKeyPair *cryptolib.KeyPair, ownerAddress iotago.Address) NodeOwnershipCertificate

func NewNodeOwnershipCertificateFromBytes added in v0.2.4

func NewNodeOwnershipCertificateFromBytes(data []byte) NodeOwnershipCertificate

func (NodeOwnershipCertificate) Bytes added in v0.2.4

func (c NodeOwnershipCertificate) Bytes() []byte

func (NodeOwnershipCertificate) Verify added in v0.2.4

func (c NodeOwnershipCertificate) Verify(nodePubKey *cryptolib.PublicKey, ownerAddress iotago.Address) bool

Directories

Path Synopsis
This file provides implementation for the governance SC, the ChainNode management functions.
This file provides implementation for the governance SC, the ChainNode management functions.

Jump to

Keyboard shortcuts

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