2020-05-18 09:01:00 +00:00
|
|
|
/*
|
|
|
|
Package engine provides access to VM execution metadata and allows to make contract calls.
|
|
|
|
It's roughly similar in function to ExecutionEngine class in the Neo .net
|
|
|
|
framework.
|
|
|
|
*/
|
2018-08-22 07:51:35 +00:00
|
|
|
package engine
|
|
|
|
|
2020-03-03 14:21:42 +00:00
|
|
|
import "github.com/nspcc-dev/neo-go/pkg/interop/transaction"
|
2018-08-22 07:51:35 +00:00
|
|
|
|
2020-05-18 09:01:00 +00:00
|
|
|
// GetScriptContainer returns the transaction that initially triggered current
|
|
|
|
// execution context. It never changes in a single execution, no matter how deep
|
|
|
|
// this execution goes. See `transaction` package for details on how to use the
|
|
|
|
// returned value. This function uses `System.ExecutionEngine.GetScriptContainer`
|
|
|
|
// syscall.
|
2018-08-22 07:51:35 +00:00
|
|
|
func GetScriptContainer() transaction.Transaction {
|
|
|
|
return transaction.Transaction{}
|
|
|
|
}
|
|
|
|
|
2020-05-18 09:01:00 +00:00
|
|
|
// GetExecutingScriptHash returns script hash (160 bit in BE form represented
|
|
|
|
// as 20-byte slice) of the contract that is currently being executed. Any
|
|
|
|
// AppCall can change the value returned by this function if it calls a
|
|
|
|
// different contract. This function uses
|
|
|
|
// `System.ExecutionEngine.GetExecutingScriptHash` syscall.
|
2018-08-22 07:51:35 +00:00
|
|
|
func GetExecutingScriptHash() []byte {
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2020-05-18 09:01:00 +00:00
|
|
|
// GetCallingScriptHash returns script hash (160 bit in BE form represented
|
|
|
|
// as 20-byte slice) of the contract that started the execution of the currently
|
|
|
|
// running context (caller of current contract or function), so it's one level
|
|
|
|
// above the GetExecutingScriptHash in the call stack. It uses
|
|
|
|
// `System.ExecutionEngine.GetCallingScriptHash` syscall.
|
2018-08-22 07:51:35 +00:00
|
|
|
func GetCallingScriptHash() []byte {
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2020-05-18 09:01:00 +00:00
|
|
|
// GetEntryScriptHash returns script hash (160 bit in BE form represented
|
|
|
|
// as 20-byte slice) of the contract that initially started current execution
|
|
|
|
// (this is a script that is contained in a transaction returned by
|
|
|
|
// GetScriptContainer) execution from the start. This function uses
|
|
|
|
// `System.ExecutionEngine.GetEntryScriptHash` syscall.
|
2018-08-22 07:51:35 +00:00
|
|
|
func GetEntryScriptHash() []byte {
|
|
|
|
return nil
|
|
|
|
}
|
2020-01-27 07:59:57 +00:00
|
|
|
|
2020-05-18 09:01:00 +00:00
|
|
|
// AppCall executes previously deployed blockchain contract with specified hash
|
|
|
|
// (160 bit in BE form represented as 20-byte slice) using provided arguments.
|
|
|
|
// It returns whatever this contract returns. Even though this function accepts
|
|
|
|
// a slice for scriptHash you can only use it for contracts known at
|
|
|
|
// compile time, because there is a significant difference between static and
|
|
|
|
// dynamic calls in Neo (contracts should have a special property declared
|
|
|
|
// and paid for to be able to use dynamic calls). This function uses
|
|
|
|
// `System.Contract.Call` syscall.
|
2020-02-10 07:51:29 +00:00
|
|
|
func AppCall(scriptHash []byte, args ...interface{}) interface{} {
|
2020-01-27 07:59:57 +00:00
|
|
|
return nil
|
|
|
|
}
|