vm

package module
v0.0.0-...-b26b672 Latest Latest
Warning

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

Go to latest
Published: Aug 13, 2022 License: Apache-2.0 Imports: 30 Imported by: 6

README

vm

介绍

hercules 链智能合约虚拟机基础模块

软件架构

软件架构说明

安装教程
  1. xxxx
  2. xxxx
  3. xxxx
使用说明
  1. xxxx
  2. xxxx
  3. xxxx
参与贡献
  1. Fork 本仓库
  2. 新建 Feat_xxx 分支
  3. 提交代码
  4. 新建 Pull Request
特技
  1. 使用 Readme_XXX.md 来支持不同的语言,例如 Readme_en.md, Readme_zh.md
  2. Gitee 官方博客 blog.gitee.com
  3. 你可以 https://gitee.com/explore 这个地址来了解 Gitee 上的优秀开源项目
  4. GVP 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目
  5. Gitee 官方提供的使用手册 https://gitee.com/help
  6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 https://gitee.com/gitee-stars/

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrorNotManageContract = fmt.Errorf("method is not init_contract or upgrade")

Functions

func NewTxSimContext

func NewTxSimContext(vmManager protocol.VmManager, snapshot protocol.Snapshot, tx *common.Transaction,
	blockVersion uint32, logger protocol.Logger) protocol.TxSimContext

func NewVmManager

func NewVmManager(instanceManagers map[commonPb.RuntimeType]protocol.VmInstancesManager, wxvmCodePathPrefix string,
	accessControl protocol.AccessControlProvider, chainNodesInfoProvider protocol.ChainNodesInfoProvider,
	chainConf protocol.ChainConf) protocol.VmManager

NewVmManager get vm runtime manager

func PrintTxReadSet

func PrintTxReadSet(txSimContext protocol.TxSimContext)

func PrintTxWriteSet

func PrintTxWriteSet(txSimContext protocol.TxSimContext)

Types

type Bool

type Bool int32

type SimContextIterator

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

func NewSimContextIterator

func NewSimContextIterator(simContext protocol.TxSimContext, wsetIter,
	dbIter protocol.StateIterator) *SimContextIterator

func (*SimContextIterator) Next

func (sci *SimContextIterator) Next() bool

Next move the iter to next and return is there value in next iter

func (*SimContextIterator) Release

func (sci *SimContextIterator) Release()

Release release the iterator

func (*SimContextIterator) Value

func (sci *SimContextIterator) Value() (*store.KV, error)

Value return the value of current iter

type SimContextKeyHistoryIterator

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

func NewSimContextKeyHistoryIterator

func NewSimContextKeyHistoryIterator(simContext protocol.TxSimContext, wSetIter, dbIter protocol.KeyHistoryIterator,
	key []byte) *SimContextKeyHistoryIterator

func (*SimContextKeyHistoryIterator) Next

func (iter *SimContextKeyHistoryIterator) Next() bool

Next move the iter to next and return is there value in next iter

func (*SimContextKeyHistoryIterator) Release

func (iter *SimContextKeyHistoryIterator) Release()

Release release the iterator

func (*SimContextKeyHistoryIterator) Value

Value return the value of current iter

type VmManagerImpl

type VmManagerImpl struct {
	InstanceManagers       map[commonPb.RuntimeType]protocol.VmInstancesManager
	WxvmCodePath           string
	SnapshotManager        protocol.SnapshotManager
	AccessControl          protocol.AccessControlProvider
	ChainNodesInfoProvider protocol.ChainNodesInfoProvider
	ChainId                string
	Log                    *logger.CMLogger
	ChainConf              protocol.ChainConf // chain config
	// contains filtered or unexported fields
}

func (*VmManagerImpl) GetAccessControl

func (m *VmManagerImpl) GetAccessControl() protocol.AccessControlProvider

func (*VmManagerImpl) GetChainNodesInfoProvider

func (m *VmManagerImpl) GetChainNodesInfoProvider() protocol.ChainNodesInfoProvider

func (*VmManagerImpl) RunContract

func (m *VmManagerImpl) RunContract(contract *commonPb.Contract, method string, byteCode []byte,
	parameters map[string][]byte, txContext protocol.TxSimContext, gasUsed uint64, refTxType commonPb.TxType) (
	*commonPb.ContractResult, protocol.ExecOrderTxType, commonPb.TxStatusCode)

func (*VmManagerImpl) Start

func (m *VmManagerImpl) Start() error

func (*VmManagerImpl) Stop

func (m *VmManagerImpl) Stop() error

type WSetKeyHistoryIterator

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

func NewWSetKeyHistoryIterator

func NewWSetKeyHistoryIterator(wSets map[string]interface{}) *WSetKeyHistoryIterator

func (*WSetKeyHistoryIterator) Next

func (iter *WSetKeyHistoryIterator) Next() bool

func (*WSetKeyHistoryIterator) Release

func (iter *WSetKeyHistoryIterator) Release()

func (*WSetKeyHistoryIterator) Value

type Wacsi

type Wacsi interface {
	// state operation
	PutState(requestBody []byte, contractName string, txSimContext protocol.TxSimContext) error
	GetState(requestBody []byte, contractName string, txSimContext protocol.TxSimContext, memory []byte,
		data []byte, isLen bool) ([]byte, error)
	DeleteState(requestBody []byte, contractName string, txSimContext protocol.TxSimContext) error
	// call other contract
	CallContract(requestBody []byte, txSimContext protocol.TxSimContext, memory []byte, data []byte,
		gasUsed uint64, isLen bool) (*common.ContractResult, uint64, protocol.ExecOrderTxType, error)
	// result record
	SuccessResult(contractResult *common.ContractResult, data []byte) int32
	ErrorResult(contractResult *common.ContractResult, data []byte) int32
	// emit event
	EmitEvent(requestBody []byte, txSimContext protocol.TxSimContext, contractId *common.Contract,
		log protocol.Logger) (*common.ContractEvent, error)
	// paillier
	PaillierOperation(requestBody []byte, memory []byte, data []byte, isLen bool) ([]byte, error)
	// bulletproofs
	BulletProofsOperation(requestBody []byte, memory []byte, data []byte, isLen bool) ([]byte, error)

	// kv iterator
	KvIterator(requestBody []byte, contractName string, txSimContext protocol.TxSimContext, memory []byte) error
	KvPreIterator(requestBody []byte, contractName string, txSimContext protocol.TxSimContext, memory []byte) error
	KvIteratorHasNext(requestBody []byte, txSimContext protocol.TxSimContext, memory []byte) error
	KvIteratorNext(requestBody []byte, txSimContext protocol.TxSimContext, memory []byte, data []byte,
		contractName string, isLen bool) ([]byte, error)
	KvIteratorClose(requestBody []byte, contractName string, txSimContext protocol.TxSimContext, memory []byte) error

	// sql operation
	ExecuteQuery(requestBody []byte, contractName string, txSimContext protocol.TxSimContext, memory []byte,
		chainId string) error
	ExecuteQueryOne(requestBody []byte, contractName string, txSimContext protocol.TxSimContext, memory []byte,
		data []byte, chainId string, isLen bool) ([]byte, error)
	ExecuteUpdate(requestBody []byte, contractName string, method string, txSimContext protocol.TxSimContext,
		memory []byte, chainId string) error
	ExecuteDDL(requestBody []byte, contractName string, txSimContext protocol.TxSimContext, memory []byte,
		method string) error
	RSHasNext(requestBody []byte, txSimContext protocol.TxSimContext, memory []byte) error
	RSNext(requestBody []byte, txSimContext protocol.TxSimContext, memory []byte, data []byte,
		isLen bool) ([]byte, error)
	RSClose(requestBody []byte, txSimContext protocol.TxSimContext, memory []byte) error
}

Wacsi WebAssembly perseus system interface

func NewWacsi

func NewWacsi(logger *logger.CMLogger, verifySql protocol.SqlVerifier) Wacsi

type WacsiImpl

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

func (*WacsiImpl) BulletProofsOperation

func (*WacsiImpl) BulletProofsOperation(requestBody []byte, memory []byte, data []byte, isLen bool) ([]byte, error)

func (*WacsiImpl) CallContract

func (w *WacsiImpl) CallContract(requestBody []byte, txSimContext protocol.TxSimContext, memory []byte,
	data []byte, gasUsed uint64, isLen bool) (*common.ContractResult, uint64, protocol.ExecOrderTxType, error)

CallContract implement syscall for call contract, it is for gasm and wasmer

func (*WacsiImpl) DeleteState

func (w *WacsiImpl) DeleteState(requestBody []byte, contractName string, txSimContext protocol.TxSimContext) error

func (*WacsiImpl) EmitEvent

func (w *WacsiImpl) EmitEvent(requestBody []byte, txSimContext protocol.TxSimContext, contractId *common.Contract,
	log protocol.Logger) (*common.ContractEvent, error)

EmitEvent emit event to chain

func (*WacsiImpl) ErrorResult

func (w *WacsiImpl) ErrorResult(contractResult *common.ContractResult, data []byte) int32

func (*WacsiImpl) ExecuteDDL

func (w *WacsiImpl) ExecuteDDL(requestBody []byte, contractName string, txSimContext protocol.TxSimContext,
	memory []byte, method string) error

func (*WacsiImpl) ExecuteQuery

func (w *WacsiImpl) ExecuteQuery(requestBody []byte, contractName string, txSimContext protocol.TxSimContext,
	memory []byte, chainId string) error

func (*WacsiImpl) ExecuteQueryOne

func (w *WacsiImpl) ExecuteQueryOne(requestBody []byte, contractName string, txSimContext protocol.TxSimContext,
	memory []byte, data []byte, chainId string, isLen bool) ([]byte, error)

func (*WacsiImpl) ExecuteUpdate

func (w *WacsiImpl) ExecuteUpdate(requestBody []byte, contractName string, method string,
	txSimContext protocol.TxSimContext, memory []byte, chainId string) error

func (*WacsiImpl) GetState

func (w *WacsiImpl) GetState(requestBody []byte, contractName string, txSimContext protocol.TxSimContext, memory []byte,
	data []byte, isLen bool) ([]byte, error)

func (*WacsiImpl) KvIterator

func (w *WacsiImpl) KvIterator(requestBody []byte, contractName string, txSimContext protocol.TxSimContext,
	memory []byte) error

func (*WacsiImpl) KvIteratorClose

func (w *WacsiImpl) KvIteratorClose(requestBody []byte, contractName string, txSimContext protocol.TxSimContext,
	memory []byte) error

func (*WacsiImpl) KvIteratorHasNext

func (w *WacsiImpl) KvIteratorHasNext(requestBody []byte, txSimContext protocol.TxSimContext, memory []byte) error

func (*WacsiImpl) KvIteratorNext

func (*WacsiImpl) KvIteratorNext(requestBody []byte, txSimContext protocol.TxSimContext, memory []byte, data []byte,
	contractname string, isLen bool) ([]byte, error)

func (*WacsiImpl) KvPreIterator

func (w *WacsiImpl) KvPreIterator(requestBody []byte, contractName string, txSimContext protocol.TxSimContext,
	memory []byte) error

func (*WacsiImpl) PaillierOperation

func (*WacsiImpl) PaillierOperation(requestBody []byte, memory []byte, data []byte, isLen bool) ([]byte, error)

func (*WacsiImpl) PutState

func (w *WacsiImpl) PutState(requestBody []byte, contractName string, txSimContext protocol.TxSimContext) error

func (*WacsiImpl) RSClose

func (w *WacsiImpl) RSClose(requestBody []byte, txSimContext protocol.TxSimContext, memory []byte) error

func (*WacsiImpl) RSHasNext

func (w *WacsiImpl) RSHasNext(requestBody []byte, txSimContext protocol.TxSimContext, memory []byte) error

func (*WacsiImpl) RSNext

func (w *WacsiImpl) RSNext(requestBody []byte, txSimContext protocol.TxSimContext, memory []byte, data []byte,
	isLen bool) ([]byte, error)

func (*WacsiImpl) SuccessResult

func (w *WacsiImpl) SuccessResult(contractResult *common.ContractResult, data []byte) int32

type WsetIterator

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

func NewWsetIterator

func NewWsetIterator(wsets map[string]interface{}) *WsetIterator

func (*WsetIterator) Next

func (wi *WsetIterator) Next() bool

func (*WsetIterator) Release

func (wi *WsetIterator) Release()

func (*WsetIterator) Value

func (wi *WsetIterator) Value() (*store.KV, error)

Jump to

Keyboard shortcuts

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