smartcontract

package
v0.0.0-...-3c16dfa Latest Latest
Warning

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

Go to latest
Published: Mar 6, 2019 License: LGPL-3.0 Imports: 11 Imported by: 1

Documentation

Overview

* Copyright (C) 2019 The onyxchain Authors * This file is part of The onyxchain library. * * The onyxchain is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The onyxchain is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with The onyxchain. If not, see <http://www.gnu.org/licenses/>.

Index

Constants

View Source
const (
	MAX_EXECUTE_ENGINE = 1024
)

Variables

This section is empty.

Functions

This section is empty.

Types

type Config

type Config struct {
	Time      uint32              // current block timestamp
	Height    uint32              // current block height
	BlockHash common.Uint256      // current block hash
	Tx        *ctypes.Transaction // current transaction
}

Config describe smart contract need parameters configuration

type SmartContract

type SmartContract struct {
	Contexts      []*context.Context // all execute smart contract context
	CacheDB       *storage.CacheDB   // state cache
	Store         store.LedgerStore  // ledger store
	Config        *Config
	Notifications []*event.NotifyEventInfo // all execute smart contract event notify info
	Gas           uint64
	ExecStep      int
	PreExec       bool
}

SmartContract describe smart contract execute engine

func (*SmartContract) CallingContext

func (this *SmartContract) CallingContext() *context.Context

CallingContext return smart contract caller context

func (*SmartContract) CheckExecStep

func (this *SmartContract) CheckExecStep() bool

func (*SmartContract) CheckUseGas

func (this *SmartContract) CheckUseGas(gas uint64) bool

func (*SmartContract) CheckWitness

func (this *SmartContract) CheckWitness(address common.Address) bool

CheckWitness check whether authorization correct If address is wallet address, check whether in the signature addressed list Else check whether address is calling contract address Param address: wallet address or contract address

func (*SmartContract) CurrentContext

func (this *SmartContract) CurrentContext() *context.Context

CurrentContext return smart contract current context

func (*SmartContract) EntryContext

func (this *SmartContract) EntryContext() *context.Context

EntryContext return smart contract entry entrance context

func (*SmartContract) NewExecuteEngine

func (this *SmartContract) NewExecuteEngine(code []byte) (context.Engine, error)

Execute is smart contract execute manager According different vm type to launch different service

func (*SmartContract) NewNativeService

func (this *SmartContract) NewNativeService() (*native.NativeService, error)

func (*SmartContract) PopContext

func (this *SmartContract) PopContext()

PopContext pop smart contract current context

func (*SmartContract) PushContext

func (this *SmartContract) PushContext(context *context.Context)

PushContext push current context to smart contract

func (*SmartContract) PushNotifications

func (this *SmartContract) PushNotifications(notifications []*event.NotifyEventInfo)

PushNotifications push smart contract event info

Directories

Path Synopsis
service
native/governance
Governance contract: Users can apply for a candidate node to join consensus selection, deposit ONX to authorize for candidate nodes, quit selection and unAuthorize for candidate nodes through this contract.
Governance contract: Users can apply for a candidate node to join consensus selection, deposit ONX to authorize for candidate nodes, quit selection and unAuthorize for candidate nodes through this contract.
native/onxid
* Copyright (C) 2019 The onyxchain Authors * This file is part of The onyxchain library.
* Copyright (C) 2019 The onyxchain Authors * This file is part of The onyxchain library.
native/utils
* Copyright (C) 2019 The onyxchain Authors * This file is part of The onyxchain library.
* Copyright (C) 2019 The onyxchain Authors * This file is part of The onyxchain library.
neovm
* Copyright (C) 2019 The onyxchain Authors * This file is part of The onyxchain library.
* Copyright (C) 2019 The onyxchain Authors * This file is part of The onyxchain library.
wasmvm
* Copyright (C) 2019 The onyxchain Authors * This file is part of The onyxchain library.
* Copyright (C) 2019 The onyxchain Authors * This file is part of The onyxchain library.

Jump to

Keyboard shortcuts

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