contract

package
v1.3.13 Latest Latest
Warning

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

Go to latest
Published: Nov 20, 2023 License: Apache-2.0 Imports: 33 Imported by: 0

Documentation

Index

Constants

View Source
const (
	CTypeNone = iota
	CTypeTransfer
	CTypeDeploy
	CTypeCall
	CTypePatch
	CTypeDeposit
)
View Source
const (
	FileSizeLimit    = 1 * 1024 * 1024
	ContentSizeLimit = 2 * 1024 * 1024
)
View Source
const (
	DataTypeCall    = "call"
	DataTypeMessage = "message"
	DataTypeDeploy  = "deploy"
	DataTypeDeposit = "deposit"
	DataTypePatch   = "patch"
	DataTypeDSR     = "dsr" // for double sign report(DSR)
)
View Source
const (
	DepositActionAdd      = "add"
	DepositActionWithdraw = "withdraw"
)
View Source
const (
	PreparingContractError = iota + errors.CodeService + 200
	NoAvailableProxy
)
View Source
const (
	CID_CHAIN = ""
)
View Source
const DSContextHistoryLimit = 20
View Source
const (
	FUNC_PREFIX = "Ex_"
)
View Source
const HandleDoubleSignReport = "handleDoubleSignReport"

HandleDoubleSignReport has name of method of chain SCORE to handle double sign report. Its signature looks like "handleDoubleSignReport(type:str,height:int,signer:Address)".

View Source
const (
	InterCallLimit = 1024
)
View Source
const (
	PropInitialSnapshot = "transition.initialSnapshot"
)

Variables

This section is empty.

Functions

func AssignAddress added in v0.9.8

func AssignAddress(dstValue reflect.Value, srcValue *common.Address) error

func AssignBool added in v0.9.8

func AssignBool(dstValue reflect.Value, srcValue bool) error

func AssignBytes added in v0.9.8

func AssignBytes(dstValue reflect.Value, srcValue []byte) error

func AssignDict added in v0.9.8

func AssignDict(dstValue reflect.Value, srcValue map[string]interface{}) error

func AssignHexInt added in v0.9.8

func AssignHexInt(dstValue reflect.Value, srcValue *common.HexInt) error

func AssignList added in v0.9.8

func AssignList(dstValue reflect.Value, srcValue []interface{}) error

func AssignParameter added in v0.9.8

func AssignParameter(dstValue reflect.Value, value interface{}) error

func AssignString added in v0.9.8

func AssignString(dstValue reflect.Value, srcValue string) error

func CheckMethod

func CheckMethod(obj SystemScore, methodInfo *scoreapi.Info) error

func CheckStruct added in v0.9.4

func CheckStruct(t reflect.Type, fields []scoreapi.Field) error

func CheckType added in v0.9.4

func CheckType(t reflect.Type, mt scoreapi.DataType, fields []scoreapi.Field) error

func DeployAndInstallSystemSCORE added in v0.9.1

func DeployAndInstallSystemSCORE(cc CallContext, contentID string, owner, to module.Address, param []byte, tid []byte) error

func Invoke

func Invoke(score SystemScore, method string, paramObj *codec.TypedObj) (status error, result *codec.TypedObj, steps *big.Int)

func IsCallableDataType added in v0.9.8

func IsCallableDataType(dt *string) bool

func NewContext

func NewContext(
	wc state.WorldContext,
	cm ContractManager,
	eem eeproxy.Manager,
	chain module.Chain,
	log log.Logger,
	ti *module.TraceInfo,
	eep eeproxy.RequestPriority,
) *context

func NewFrame

func NewFrame(p *callFrame, h ContractHandler, l *big.Int, ro bool, logger *trace.Logger) *callFrame

func RegisterSystemScore added in v0.9.1

func RegisterSystemScore(id string, m *SystemScoreModule)

func RoundLimitFactorToRound

func RoundLimitFactorToRound(validator int, factor int64) int64

Types

type AcceptHandler

type AcceptHandler struct {
	*CommonHandler
	// contains filtered or unexported fields
}

func NewAcceptHandler added in v0.9.1

func NewAcceptHandler(ch *CommonHandler, txHash []byte, auditTxHash []byte) *AcceptHandler

func (*AcceptHandler) ExecuteSync

func (h *AcceptHandler) ExecuteSync(cc CallContext) (err error, obj *codec.TypedObj, addr module.Address)

func (*AcceptHandler) Prepare

func (h *AcceptHandler) Prepare(ctx Context) (state.WorldContext, error)

It's never called

type AsyncContractHandler

type AsyncContractHandler interface {
	ContractHandler
	ExecuteAsync(cc CallContext) error
	SendResult(status error, steps *big.Int, result *codec.TypedObj) error
	Dispose()

	EEType() state.EEType
	eeproxy.CallContext
}

type CallContext

type CallContext interface {
	Context
	ReadOnlyMode() bool
	Call(handler ContractHandler, limit *big.Int) (error, *big.Int, *codec.TypedObj, module.Address)
	OnResult(status error, flags ResultFlag, stepUsed *big.Int, result *codec.TypedObj, addr module.Address)
	OnCall(handler ContractHandler, limit *big.Int)
	OnEvent(addr module.Address, indexed, data [][]byte)
	OnBTPMessage(nid int64, message []byte)
	GetBalance(module.Address) *big.Int
	ReserveExecutor() error
	GetProxy(eeType state.EEType) eeproxy.Proxy
	Dispose()
	StepUsed() *big.Int
	SumOfStepUsed() *big.Int
	StepAvailable() *big.Int
	ApplySteps(t state.StepType, n int) bool
	ApplyCallSteps() error
	DeductSteps(s *big.Int) bool
	ResetStepLimit(s *big.Int)
	GetEventLogs(r txresult.Receipt)
	GetBTPMessages(r txresult.Receipt)
	EnterReadOnlyMode()
	SetFrameCodeID(id []byte)
	GetLastEIDOf(id []byte) int
	NewExecution() int
	GetReturnEID() int
	FrameID() int
	FrameLogger() *trace.Logger
	GetCustomLogs(name string, ot reflect.Type) CustomLogs
	SetFeeProportion(addr module.Address, portion int)
	RedeemSteps(s *big.Int) (*big.Int, error)
	GetRedeemLogs(r txresult.Receipt) bool
	ClearRedeemLogs()
	DoIOTask(func())
	ResultFlags() ResultFlag
}

func NewCallContext

func NewCallContext(ctx Context, limit *big.Int, isQuery bool) CallContext

type CallHandler

type CallHandler struct {
	*CommonHandler
	// contains filtered or unexported fields
}

func (*CallHandler) AllowExtra added in v0.9.6

func (h *CallHandler) AllowExtra()

func (*CallHandler) ArrayDBContains added in v0.9.10

func (h *CallHandler) ArrayDBContains(prefix, value []byte, limit int64) (bool, int, int, error)

func (*CallHandler) DeleteValue

func (h *CallHandler) DeleteValue(key []byte) ([]byte, error)

func (*CallHandler) Dispose

func (h *CallHandler) Dispose()

func (*CallHandler) DoExecuteAsync added in v0.9.4

func (h *CallHandler) DoExecuteAsync(cc CallContext, ch eeproxy.CallContext, store containerdb.BytesStoreState) (err error)

func (*CallHandler) EEType

func (h *CallHandler) EEType() state.EEType

func (*CallHandler) ExecuteAsync

func (h *CallHandler) ExecuteAsync(cc CallContext) (err error)

func (*CallHandler) GetBalance

func (h *CallHandler) GetBalance(addr module.Address) *big.Int

func (*CallHandler) GetInfo

func (h *CallHandler) GetInfo() *codec.TypedObj

func (*CallHandler) GetMethodName added in v0.9.6

func (h *CallHandler) GetMethodName() string

func (*CallHandler) GetObjGraph

func (h *CallHandler) GetObjGraph(flags bool) (int, []byte, []byte, error)

func (*CallHandler) GetValue

func (h *CallHandler) GetValue(key []byte) ([]byte, error)

func (*CallHandler) OnAPI

func (h *CallHandler) OnAPI(status error, info *scoreapi.Info)

func (*CallHandler) OnCall

func (h *CallHandler) OnCall(from, to module.Address, value,
	limit *big.Int, dataType string, dataObj *codec.TypedObj,
)

func (*CallHandler) OnEvent

func (h *CallHandler) OnEvent(addr module.Address, indexed, data [][]byte) error

func (*CallHandler) OnResult

func (h *CallHandler) OnResult(status error, flag int, steps *big.Int, result *codec.TypedObj)

func (*CallHandler) OnSetFeeProportion added in v0.9.3

func (h *CallHandler) OnSetFeeProportion(portion int)

func (*CallHandler) Prepare

func (h *CallHandler) Prepare(ctx Context) (state.WorldContext, error)

func (*CallHandler) SendResult

func (h *CallHandler) SendResult(status error, steps *big.Int, result *codec.TypedObj) error

func (*CallHandler) SetCode

func (h *CallHandler) SetCode(code []byte) error

func (*CallHandler) SetObjGraph

func (h *CallHandler) SetObjGraph(flags bool, nextHash int, objGraph []byte) error

func (*CallHandler) SetValue

func (h *CallHandler) SetValue(key []byte, value []byte) ([]byte, error)

func (*CallHandler) TLogDone added in v0.9.7

func (h *CallHandler) TLogDone(status error, steps *big.Int, result *codec.TypedObj)

func (*CallHandler) TLogStart added in v0.9.7

func (h *CallHandler) TLogStart()

type CommonHandler

type CommonHandler struct {
	From, To module.Address
	Value    *big.Int
	Log      *trace.Logger
	// contains filtered or unexported fields
}

func NewCommonHandler added in v0.9.1

func NewCommonHandler(from, to module.Address, value *big.Int, call bool, log log.Logger) *CommonHandler

func (*CommonHandler) ApplyCallSteps added in v0.9.10

func (h *CommonHandler) ApplyCallSteps(cc CallContext) error

func (*CommonHandler) ApplyStepsForInterCall added in v0.9.4

func (h *CommonHandler) ApplyStepsForInterCall(cc CallContext) error

func (*CommonHandler) Logger

func (h *CommonHandler) Logger() log.Logger

func (*CommonHandler) Prepare

func (h *CommonHandler) Prepare(ctx Context) (state.WorldContext, error)

func (*CommonHandler) SetTraceLogger added in v1.2.4

func (h *CommonHandler) SetTraceLogger(logger *trace.Logger)

func (*CommonHandler) TraceLogger added in v1.2.4

func (h *CommonHandler) TraceLogger() *trace.Logger

type ContentBytes added in v0.9.6

type ContentBytes struct {
	Bytes []byte
	JSON  []byte
}

func (*ContentBytes) Count added in v0.9.6

func (c *ContentBytes) Count(revision module.Revision) int

func (*ContentBytes) GetBytes added in v0.9.6

func (c *ContentBytes) GetBytes() []byte

func (*ContentBytes) UnmarshalJSON added in v0.9.6

func (c *ContentBytes) UnmarshalJSON(b []byte) error

type Context

type Context interface {
	state.WorldContext
	TransactionTimeout() time.Duration
	ContractManager() ContractManager
	EEManager() eeproxy.Manager
	GetPreInstalledScore(id string) ([]byte, error)
	AddSyncRequest(id db.BucketID, key []byte)
	Logger() log.Logger
	GetTraceLogger(phase module.ExecutionPhase) *trace.Logger
	PatchDecoder() module.PatchDecoder
	TraceInfo() *module.TraceInfo
	ChainID() int
	GetProperty(name string) interface{}
	SetProperty(name string, value interface{})
	GetEnabledEETypes() state.EETypes
	EEPriority() eeproxy.RequestPriority
}

type ContractHandler

type ContractHandler interface {
	Prepare(ctx Context) (state.WorldContext, error)
	SetTraceLogger(logger *trace.Logger)
	TraceLogger() *trace.Logger
}

type ContractManager

type ContractManager interface {
	DefaultEnabledEETypes() state.EETypes
	GenesisTo() module.Address
	GetHandler(from, to module.Address, value *big.Int, ctype int, data []byte) (ContractHandler, error)
	GetCallHandler(from, to module.Address, value *big.Int, ctype int, paramObj *codec.TypedObj) (ContractHandler, error)
	PrepareContractStore(ws state.WorldState, contract state.ContractState) (ContractStore, error)
	GetSystemScore(contentID string, cc CallContext, from module.Address, value *big.Int) (SystemScore, error)
	Logger() log.Logger
}

func NewContractManager

func NewContractManager(db db.Database, contractDir string, log log.Logger) (ContractManager, error)

type ContractStore

type ContractStore interface {
	WaitResult() (string, error)
	Dispose()
}

type CustomLogs added in v0.9.10

type CustomLogs interface {
	Init(parent CustomLogs) CustomLogs
	Apply(data CustomLogs)
}

type DSContext added in v1.3.10

type DSContext struct {
	Height int64
	Hash   []byte
}

type DSContextHistory added in v1.3.10

type DSContextHistory []DSContext

func DSContextHistoryFromBytes added in v1.3.10

func DSContextHistoryFromBytes(bs []byte) (DSContextHistory, error)

func (*DSContextHistory) Bytes added in v1.3.10

func (h *DSContextHistory) Bytes() []byte

func (*DSContextHistory) FirstHeight added in v1.3.10

func (h *DSContextHistory) FirstHeight() (int64, bool)

func (*DSContextHistory) Get added in v1.3.10

func (h *DSContextHistory) Get(height int64) []byte

func (*DSContextHistory) Push added in v1.3.10

func (h *DSContextHistory) Push(height int64, hash []byte) (bool, error)

type DSContextHistoryDB added in v1.3.10

type DSContextHistoryDB struct {
	DSContextHistory
	// contains filtered or unexported fields
}

func NewDSContextHistoryDB added in v1.3.10

func NewDSContextHistoryDB(as containerdb.BytesStoreState) (*DSContextHistoryDB, error)

func (*DSContextHistoryDB) Push added in v1.3.10

func (h *DSContextHistoryDB) Push(height int64, hash []byte) error

type DSRHandler added in v1.3.10

type DSRHandler struct {
	*CommonHandler
	// contains filtered or unexported fields
}

func NewDSRHandler added in v1.3.10

func NewDSRHandler(from module.Address, dsr *DoubleSignReport, logger log.Logger) *DSRHandler

func (*DSRHandler) DoExecuteSync added in v1.3.10

func (h *DSRHandler) DoExecuteSync(cc CallContext) (error, *codec.TypedObj, module.Address)

func (*DSRHandler) ExecuteSync added in v1.3.10

func (h *DSRHandler) ExecuteSync(cc CallContext) (err error, ro *codec.TypedObj, _ module.Address)

func (*DSRHandler) Prepare added in v1.3.13

func (h *DSRHandler) Prepare(ctx Context) (state.WorldContext, error)

type DataCallJSON

type DataCallJSON struct {
	Method string          `json:"method"`
	Params json.RawMessage `json:"params"`
}

func ParseCallData

func ParseCallData(data []byte) (*DataCallJSON, error)

type DeployData

type DeployData struct {
	ContentType string          `json:"contentType"`
	Content     *ContentBytes   `json:"content"`
	Params      json.RawMessage `json:"params"`
}

func ParseDeployData

func ParseDeployData(data []byte) (*DeployData, error)

type DeployHandler

type DeployHandler struct {
	*CommonHandler
	// contains filtered or unexported fields
}

func NewDeployHandlerForPreInstall

func NewDeployHandlerForPreInstall(owner, scoreAddr module.Address, contentType string,
	content []byte, params *json.RawMessage, log log.Logger,
) *DeployHandler

func (*DeployHandler) DoExecuteSync added in v0.9.10

func (h *DeployHandler) DoExecuteSync(cc CallContext) (error, *codec.TypedObj, module.Address)

func (*DeployHandler) ExecuteSync

func (h *DeployHandler) ExecuteSync(cc CallContext) (err error, ro *codec.TypedObj, score module.Address)

func (*DeployHandler) Prepare

func (h *DeployHandler) Prepare(ctx Context) (state.WorldContext, error)

type DepositHandler added in v0.9.3

type DepositHandler struct {
	*CommonHandler
	// contains filtered or unexported fields
}

func (*DepositHandler) ExecuteSync added in v0.9.3

func (h *DepositHandler) ExecuteSync(cc CallContext) (err error, ro *codec.TypedObj, addr module.Address)

func (*DepositHandler) Prepare added in v0.9.3

func (h *DepositHandler) Prepare(ctx Context) (state.WorldContext, error)

type DepositJSON added in v0.9.3

type DepositJSON struct {
	Action string           `json:"action"`
	ID     *common.HexBytes `json:"id,omitempty"`
	Amount *common.HexInt   `json:"amount,omitempty"`
}

func ParseDepositData added in v0.9.3

func ParseDepositData(data []byte) (*DepositJSON, error)

type DoubleSignReport added in v1.3.10

type DoubleSignReport struct {
	Type    string            `json:"type"`
	Data    []common.HexBytes `json:"data"`
	Context common.HexBytes   `json:"context"`
	// contains filtered or unexported fields
}

func NewDoubleSignReport added in v1.3.10

func NewDoubleSignReport(data []module.DoubleSignData, context module.DoubleSignContext) *DoubleSignReport

func (*DoubleSignReport) Decode added in v1.3.10

type FeePayer added in v1.2.9

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

func (*FeePayer) ApplySteps added in v1.2.9

func (p *FeePayer) ApplySteps(s *big.Int) *big.Int

func (*FeePayer) DelegateSteps added in v1.2.9

func (p *FeePayer) DelegateSteps(s *big.Int)

func (*FeePayer) PaySteps added in v1.2.9

func (p *FeePayer) PaySteps(ctx CallContext, steps *big.Int) (*big.Int, error)

type FeePayerInfo added in v1.2.9

type FeePayerInfo []*FeePayer

func (*FeePayerInfo) Apply added in v1.2.9

func (p *FeePayerInfo) Apply(p2 FeePayerInfo, steps *big.Int)

func (*FeePayerInfo) ClearLogs added in v1.2.9

func (p *FeePayerInfo) ClearLogs()

func (*FeePayerInfo) GetLogs added in v1.2.9

func (p *FeePayerInfo) GetLogs(r txresult.Receipt) bool

func (*FeePayerInfo) PaySteps added in v1.2.9

func (p *FeePayerInfo) PaySteps(ctx CallContext, steps *big.Int) (*big.Int, error)

func (*FeePayerInfo) SetFeeProportion added in v1.2.9

func (p *FeePayerInfo) SetFeeProportion(payer module.Address, portion int) error

type Patch

type Patch struct {
	Type string `json:"type"`
	Data []byte `json:"data"`
}

func ParsePatchData

func ParsePatchData(data []byte) (*Patch, error)

type ResultFlag added in v1.2.9

type ResultFlag int
const (
	ResultForceRerun ResultFlag = 1 << iota
)

type SyncContractHandler

type SyncContractHandler interface {
	ContractHandler
	ExecuteSync(cc CallContext) (error, *codec.TypedObj, module.Address)
}

type SystemScore

type SystemScore interface {
	Install(param []byte) error
	Update(param []byte) error
	GetAPI() *scoreapi.Info
}

type SystemScoreModule

type SystemScoreModule struct {
	New func(cid string, cc CallContext, from module.Address, value *big.Int) (SystemScore, error)
}

type TransferAndCallHandler

type TransferAndCallHandler struct {
	*CallHandler
	// contains filtered or unexported fields
}

func (*TransferAndCallHandler) DoExecuteAsync added in v0.9.7

func (*TransferAndCallHandler) ExecuteAsync

func (h *TransferAndCallHandler) ExecuteAsync(cc CallContext) (err error)

func (*TransferAndCallHandler) Prepare

type TransferHandler

type TransferHandler struct {
	*CommonHandler
}

func (*TransferHandler) DoExecuteSync added in v0.9.4

func (h *TransferHandler) DoExecuteSync(cc CallContext) (err error, ro *codec.TypedObj, addr module.Address)

func (*TransferHandler) ExecuteSync

func (h *TransferHandler) ExecuteSync(cc CallContext) (err error, ro *codec.TypedObj, addr module.Address)

Jump to

Keyboard shortcuts

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