Documentation ¶
Overview ¶
package coreutil provides functions to describe interface of the core contract in a compact way
Index ¶
Constants ¶
View Source
const ( CoreContractDefault = "_default" CoreContractRoot = "root" CoreContractAccounts = "accounts" CoreContractBlob = "blob" CoreContractEventlog = "eventlog" CoreContractBlocklog = "blocklog" CoreContractErrors = "errors" CoreContractGovernance = "governance" CoreEPRotateStateController = "rotateStateController" )
names of core contracts
View Source
const ( StateVarTimestamp = "T" StateVarBlockIndex = "I" StateVarPrevL1Commitment = "H" ParamStateControllerAddress = "S" )
the global names used in 'blocklog' contract and in 'state' package
Variables ¶
View Source
var ( FuncFallback = Func("fallbackHandler") FuncDefaultInitializer = Func("initializer") )
View Source
var ( CoreContractDefaultHname = isc.Hname(0) CoreContractRootHname = isc.Hn(CoreContractRoot) CoreContractAccountsHname = isc.Hn(CoreContractAccounts) CoreContractBlobHname = isc.Hn(CoreContractBlob) CoreContractEventlogHname = isc.Hn(CoreContractEventlog) CoreContractBlocklogHname = isc.Hn(CoreContractBlocklog) CoreContractErrorsHname = isc.Hn(CoreContractErrors) CoreContractGovernanceHname = isc.Hn(CoreContractGovernance) CoreEPRotateStateControllerHname = isc.Hn(CoreEPRotateStateController) )
View Source
var ( StatePrefixTimestamp = string(CoreContractBlocklogHname.Bytes()) + StateVarTimestamp StatePrefixBlockIndex = string(CoreContractBlocklogHname.Bytes()) + StateVarBlockIndex StatePrefixPrevL1Commitment = string(CoreContractBlocklogHname.Bytes()) + StateVarPrevL1Commitment )
used in 'state' package as key for timestamp and block index
Functions ¶
Types ¶
type ContractInfo ¶
ContractInfo holds basic information about a native smart contract
func NewContract ¶
func NewContract(name, description string) *ContractInfo
func (*ContractInfo) FullKey ¶
func (i *ContractInfo) FullKey(postfix []byte) []byte
FullKey concatenates 4 bytes of hname with postfix
func (*ContractInfo) Hname ¶
func (i *ContractInfo) Hname() isc.Hname
func (*ContractInfo) Processor ¶
func (i *ContractInfo) Processor(init Handler, eps ...ProcessorEntryPoint) *ContractProcessor
Processor creates a ContractProcessor with the provided handlers
type ContractProcessor ¶
type ContractProcessor struct { Contract *ContractInfo Handlers map[isc.Hname]ProcessorEntryPoint }
func (*ContractProcessor) GetDescription ¶
func (p *ContractProcessor) GetDescription() string
func (*ContractProcessor) GetEntryPoint ¶
func (p *ContractProcessor) GetEntryPoint(code isc.Hname) (isc.VMProcessorEntryPoint, bool)
func (*ContractProcessor) GetStateReadOnly ¶
func (p *ContractProcessor) GetStateReadOnly(chainState kv.KVStoreReader) kv.KVStoreReader
type EntryPointHandler ¶
type EntryPointHandler struct { Info *EntryPointInfo Handler Handler }
func (*EntryPointHandler) Call ¶
func (h *EntryPointHandler) Call(ctx interface{}) dict.Dict
func (*EntryPointHandler) Hname ¶
func (h *EntryPointHandler) Hname() isc.Hname
func (*EntryPointHandler) IsView ¶
func (h *EntryPointHandler) IsView() bool
func (*EntryPointHandler) Name ¶
func (h *EntryPointHandler) Name() string
type EntryPointInfo ¶
type EntryPointInfo struct{ Name string }
EntryPointInfo holds basic information about a full entry point
func (*EntryPointInfo) Hname ¶
func (ep *EntryPointInfo) Hname() isc.Hname
func (*EntryPointInfo) WithHandler ¶
func (ep *EntryPointInfo) WithHandler(fn Handler) *EntryPointHandler
WithHandler specifies the handler function for the entry point
type ProcessorEntryPoint ¶
type ProcessorEntryPoint interface { isc.VMProcessorEntryPoint Name() string Hname() isc.Hname }
type ViewEntryPointHandler ¶
type ViewEntryPointHandler struct { Info *ViewEntryPointInfo Handler ViewHandler }
func (*ViewEntryPointHandler) Call ¶
func (h *ViewEntryPointHandler) Call(ctx interface{}) dict.Dict
func (*ViewEntryPointHandler) Hname ¶
func (h *ViewEntryPointHandler) Hname() isc.Hname
func (*ViewEntryPointHandler) IsView ¶
func (h *ViewEntryPointHandler) IsView() bool
func (*ViewEntryPointHandler) Name ¶
func (h *ViewEntryPointHandler) Name() string
type ViewEntryPointInfo ¶
type ViewEntryPointInfo struct {
Name string
}
ViewEntryPointInfo holds basic information about a view entry point
func (*ViewEntryPointInfo) Hname ¶
func (ep *ViewEntryPointInfo) Hname() isc.Hname
func (*ViewEntryPointInfo) WithHandler ¶
func (ep *ViewEntryPointInfo) WithHandler(fn ViewHandler) *ViewEntryPointHandler
WithHandler specifies the handler function for the entry point
type ViewHandler ¶
type ViewHandler func(ctx isc.SandboxView) dict.Dict
Click to show internal directories.
Click to hide internal directories.