Documentation
¶
Overview ¶
Package runtime provides a basic execution model for executing QRVM code.
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Call ¶
Call executes the code given by the contract's address. It will return the QRVM's return value or an error if it failed.
Call, unlike Execute, requires a config and also requires the State field to be set.
func Execute ¶
Execute executes the code using the input as call data during the execution. It returns the QRVM's return value, the new state and an error if it failed.
Execute sets up an in-memory, temporary, environment for the execution of the given code. It makes sure that it's restored to its original state afterwards.
Example ¶
package main
import (
"fmt"
"github.com/theQRL/go-qrl/common"
"github.com/theQRL/go-qrl/core/vm/runtime"
)
func main() {
ret, _, err := runtime.Execute(common.Hex2Bytes("6060604052600a8060106000396000f360606040526008565b00"), nil, nil)
if err != nil {
fmt.Println(err)
}
fmt.Println(ret)
}
Output: [96 96 96 64 82 96 8 86 91 0]
Types ¶
type Config ¶
type Config struct {
ChainConfig *params.ChainConfig
Origin common.Address
Coinbase common.Address
BlockNumber *big.Int
Time uint64
GasLimit uint64
GasPrice *big.Int
Value *big.Int
Debug bool
QRVMConfig vm.Config
BaseFee *big.Int
Random *common.Hash
State *state.StateDB
GetHashFn func(n uint64) common.Hash
}
Config is a basic type specifying certain configuration flags for running the QRVM.