/* 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. */ package engine import "github.com/nspcc-dev/neo-go/pkg/interop/blockchain" // GetScriptContainer returns the transaction that initially triggered current // execution context. It never changes in a single execution, no matter how deep // this execution goes. This function uses // `System.ExecutionEngine.GetScriptContainer` syscall. func GetScriptContainer() blockchain.Transaction { return blockchain.Transaction{} } // 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. func GetExecutingScriptHash() []byte { return nil } // 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. func GetCallingScriptHash() []byte { return nil } // 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. func GetEntryScriptHash() []byte { return nil } // 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. func AppCall(scriptHash []byte, args ...interface{}) interface{} { return nil }