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
- Variables
- func GetGasFeePolicy(state kv.KVStoreReader) (*gas.GasFeePolicy, error)
- func GetRotationAddress(state kv.KVStoreReader) iotago.Address
- func MustGetChainOwnerID(state kv.KVStoreReader) isc.AgentID
- func MustGetGasFeePolicy(state kv.KVStoreReader) *gas.GasFeePolicy
- type AccessNodeInfo
- func NewAccessNodeInfoFromAddCandidateNodeParams(ctx isc.Sandbox) *AccessNodeInfo
- func NewAccessNodeInfoFromBytes(pubKey, value []byte) (*AccessNodeInfo, error)
- func NewAccessNodeInfoFromRevokeAccessNodeParams(ctx isc.Sandbox) *AccessNodeInfo
- func NewAccessNodeInfoListFromMap(infoMap *collections.ImmutableMap) ([]*AccessNodeInfo, error)
- func (a *AccessNodeInfo) AddCertificate(nodeKeyPair *cryptolib.KeyPair, ownerAddress iotago.Address) *AccessNodeInfo
- func (a *AccessNodeInfo) Bytes() []byte
- func (a *AccessNodeInfo) ToAddCandidateNodeParams() dict.Dict
- func (a *AccessNodeInfo) ToRevokeAccessNodeParams() dict.Dict
- func (a *AccessNodeInfo) ValidateCertificate(ctx isc.Sandbox) bool
- type ChainInfo
- type ChangeAccessNodeAction
- type ChangeAccessNodesRequest
- func (req *ChangeAccessNodesRequest) Accept(pubKey *cryptolib.PublicKey) *ChangeAccessNodesRequest
- func (req *ChangeAccessNodesRequest) AsDict() dict.Dict
- func (req *ChangeAccessNodesRequest) Drop(pubKey *cryptolib.PublicKey) *ChangeAccessNodesRequest
- func (req *ChangeAccessNodesRequest) Remove(pubKey *cryptolib.PublicKey) *ChangeAccessNodesRequest
- type ContractFeesRecord
- type GetChainNodesRequest
- type GetChainNodesResponse
- type NodeOwnershipCertificate
- type StateAccess
Constants ¶
const ( ChangeAccessNodeActionRemove = ChangeAccessNodeAction(iota) ChangeAccessNodeActionAccept ChangeAccessNodeActionDrop )
const ( MinEventSize = uint16(200) MinEventsPerRequest = uint16(10) DefaultMaxEventsPerRequest = uint16(50) DefaultMaxEventSize = uint16(2000) // 2Kb DefaultMaxBlobSize = uint32(2_000_000) // 2Mb )
constants
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
const ( // state controller ParamStateControllerAddress = coreutil.ParamStateControllerAddress ParamAllowedStateControllerAddresses = "a" // chain owner ParamChainOwner = "o" // fees ParamFeePolicyBytes = "g" ParamEVMGasRatio = "e" // 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 ¶
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") // evm fees FuncSetEVMGasRatio = coreutil.Func("setGasRatio") ViewGetEVMGasRatio = coreutil.ViewFunc("getGasRatio") // 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") )
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 (req *ChangeAccessNodesRequest) Accept(pubKey *cryptolib.PublicKey) *ChangeAccessNodesRequest
func (*ChangeAccessNodesRequest) AsDict ¶ added in v0.2.3
func (req *ChangeAccessNodesRequest) AsDict() dict.Dict
func (*ChangeAccessNodesRequest) Drop ¶ added in v0.2.3
func (req *ChangeAccessNodesRequest) Drop(pubKey *cryptolib.PublicKey) *ChangeAccessNodesRequest
func (*ChangeAccessNodesRequest) Remove ¶ added in v0.2.3
func (req *ChangeAccessNodesRequest) Remove(pubKey *cryptolib.PublicKey) *ChangeAccessNodesRequest
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
type StateAccess ¶ added in v1.0.3
type StateAccess struct {
// contains filtered or unexported fields
}
func NewStateAccess ¶ added in v1.0.3
func NewStateAccess(store kv.KVStoreReader) *StateAccess
func (*StateAccess) GetAccessNodes ¶
func (sa *StateAccess) GetAccessNodes() []*cryptolib.PublicKey
func (*StateAccess) GetCandidateNodes ¶
func (sa *StateAccess) GetCandidateNodes() []*AccessNodeInfo
func (*StateAccess) GetMaintenanceStatus ¶
func (sa *StateAccess) GetMaintenanceStatus() bool
Source Files ¶
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. |