Events
Orbs contract events give you the ability to log information into the blockchain that is stored as part of the receipt block.
Here is a simple contract that emits an event. We will go over it in details:
package main
import (
"github.com/orbs-network/orbs-contract-sdk/go/sdk/v1"
"github.com/orbs-network/orbs-contract-sdk/go/sdk/v1/events"
"github.com/orbs-network/orbs-contract-sdk/go/sdk/v1/state"
)
var PUBLIC = sdk.Export(giveBirth)
var SYSTEM = sdk.Export(_init)
var EVENTS = sdk.Export(BabyBorn)
func BabyBorn(name string, weight uint32) {}
func _init() {
state.WriteUint64([]byte("some_data"), 1)
}
func giveBirth(name string) {
events.EmitEvent(BabyBorn, name, uint32(3))
}
Using the Events API require you first to import it:
import (
"github.com/orbs-network/orbs-contract-sdk/go/sdk/v1/events"
)
Next, we export the event:
var EVENTS = sdk.Export(BabyBorn)
Then we declare it as an empty function. Note that the empty bracers are required ({}):
func BabyBorn(name string, weight uint32) {}
When the function giveBirth(name string) is called, we want the event to be emitted, so we call the events.EmitEvent function:
events.EmitEvent(BabyBorn, name, uint32(3))
The arguments are a pointer to the event function (which is also exported) and the event arguments.
Copy link