Emitting events from go-plugins

The loom SDK gives a facility for the contracts to emit events that can be used for multiple purposes such as indexing. Currently, the loom SDK supports emitting events into a Redis sorted set.

Configuring the loom SDK

By default, the loom SDK will only emit events to the log. To configure it to send the events to a Redis sorted set, add the following line to the loom.yaml config file:

EventDispatcherURI: "redis://localhost:6379"

This will start emitting events to the Redis server in a sorted set called loomevents. Each event is added to the sorted set, with the score being the blockchain height.

Emitting events

The code snippet below shows how to emit events from the contract:

    emitMsg := struct {
        Owner  string
        Method string
        Addr   []byte
    }{owner, "createacct", addr}
    emitMsgJSON, err := json.Marshal(emitMsg)
    if err != nil {
        log.Println("Error marshalling emit message")
    }
    ctx.Emit(emitMsgJSON)

Subscribing to events

See this page for more information on subscribing to events