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 CheckAuthorizationByChainOwner(state kv.KVStore, agentID *iscp.AgentID) bool
- func GetDefaultFeeInfo(state kv.KVStoreReader) (colored.Color, uint64, uint64, error)
- func GetFeeInfo(ctx iscp.SandboxView, hname iscp.Hname) (colored.Color, uint64, uint64)
- func GetFeeInfoByHname(state kv.KVStoreReader, hname iscp.Hname) (colored.Color, uint64, uint64)
- func GetFeeInfoFromContractFeesRecord(state kv.KVStoreReader, rec *ContractFeesRecord) (colored.Color, uint64, uint64)
- func GetRotationAddress(state kv.KVStoreReader) ledgerstate.Address
- func MustGetChainOwnerID(state kv.KVStoreReader) *iscp.AgentID
- type ChainInfo
- type ContractFeesRecord
- func ContractFeesRecordFromBytes(data []byte) (*ContractFeesRecord, error)
- func ContractFeesRecordFromMarshalUtil(mu *marshalutil.MarshalUtil) (*ContractFeesRecord, error)
- func FindContractFees(state kv.KVStoreReader, hname iscp.Hname) *ContractFeesRecord
- func NewContractFeesRecord(ownerFee, validatorFee uint64) *ContractFeesRecord
Constants ¶
const ( MinEventSize = uint16(200) MinEventsPerRequest = uint16(10) DefaultMaxEventsPerRequest = uint16(50) DefaultMaxEventSize = uint16(2000) // 2Kb DefaultMaxBlobSize = uint32(1000000) // 1Mb )
constants
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
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 ¶
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") )
var Contract = coreutil.NewContract(coreutil.CoreContractGovernance, "Governance contract")
Functions ¶
func GetDefaultFeeInfo ¶
func GetFeeInfo ¶
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 ¶
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