mirror of
https://github.com/nspcc-dev/neo-go.git
synced 2025-01-24 19:24:35 +00:00
feat: add Log, Notify and Triggers
Imported from CityOfZion/neo-storm (5065465e39fd2b308c487f49f75f517620139660).
This commit is contained in:
parent
e6c16a6a24
commit
e4c80a001c
4 changed files with 68 additions and 18 deletions
|
@ -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
|
|
||||||
}
|
|
43
examples/runtime/runtime.go
Normal file
43
examples/runtime/runtime.go
Normal 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
|
||||||
|
}
|
|
@ -1,6 +1,30 @@
|
||||||
package runtime
|
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 {
|
func CheckWitness(hash []byte) bool {
|
||||||
return true
|
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
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue