feat: add Log, Notify and Triggers

Imported from CityOfZion/neo-storm (5065465e39fd2b308c487f49f75f517620139660).
This commit is contained in:
Jeroen Peeters 2018-08-21 10:55:03 +02:00 committed by Roman Khimov
parent e6c16a6a24
commit e4c80a001c
4 changed files with 68 additions and 18 deletions

View file

@ -1,17 +0,0 @@
package check_witness_contract
import (
"github.com/CityOfZion/neo-go-sc/interop/runtime"
"github.com/CityOfZion/neo-go-sc/interop/util"
)
// Check if the invoker of the contract is the specified owner.
var owner = util.FromAddress("Aej1fe4mUgou48Zzup5j8sPrE3973cJ5oz")
func Main() bool {
if runtime.CheckWitness(owner) {
return true
}
return false
}

View file

@ -0,0 +1,43 @@
package runtime_contract
import (
"github.com/CityOfZion/neo-go-sc/interop/runtime"
"github.com/CityOfZion/neo-go-sc/interop/util"
)
// Check if the invoker of the contract is the specified owner
var owner = util.FromAddress("Aej1fe4mUgou48Zzup5j8sPrE3973cJ5oz")
func Main(operation string, args []interface{}) bool {
trigger := runtime.GetTrigger()
// Log owner upon Verification trigger
if trigger == runtime.Verification() {
if runtime.CheckWitness(owner) {
runtime.Log("Verified Owner")
}
return true
}
// Discerns between log and notify for this test
if trigger == runtime.Application() {
return handleOperation(operation, args)
}
return false
}
func handleOperation(operation string, args []interface{}) bool {
if operation == "log" {
message := args[0].(string)
runtime.Log(message)
return true
}
if operation == "notify" {
runtime.Notify(args[0])
return true
}
return false
}

View file

@ -1,6 +1,30 @@
package runtime
// CheckWitness verifies if the given hash is the invoker of the contract.
// CheckWitness verifies if the given hash is the invoker of the contract
func CheckWitness(hash []byte) bool {
return true
}
// Notify passes data to the VM
func Notify(arg interface{}) int {
return 0
}
// Log passes a message to the VM
func Log(message string) {}
// Application returns the Application trigger type
func Application() byte {
return 0x10
}
// Verification returns the Verification trigger type
func Verification() byte {
return 0x00
}
// GetTrigger return the current trigger type. The return in this function
// Doesn't really matter, this is just an interop placeholder
func GetTrigger() interface{} {
return 0
}