Events

Summary

The event pipeline allows developers to easily create real-time applications by letting them listen for important state changes and lifecycle events.

Wildcards

  • An event name passed to any event emitter method can contain a wildcard (the *character). A wildcard may appear as foo/*, foo/bar/*, or simply *.
  • * matches one sub-level.
e.g. price/* will trigger on both price/USD_ETH and price/MKR_USD but not price/MKR_USD/foo.
  • ** matches all sub-levels.
e.g. price/** will trigger on price/USD_ETH, price/MKR_USD, and price/MKR_USD/foo.
Event Object
Triggered events will receive the object shown on the right.
  • <event_type> - the name of the event
  • <event_payload> - the new state data sent with the event
  • <event_sequence_number> - a sequentially increasing index
  • <latest_block_when_emitted> - the current block at the time of the emit
{
type: <event_type>,
payload: <event_payload>, /* if applicable */
index: <event_sequence_number>,
block: <latest_block_when_emitted>
}

Maker Object

Price

Event Name
Payload
price/ETH_USD
{ price }
price/MKR_USD
{ price }
price/WETH_PETH
{ ratio }
maker.on('price/ETH_USD', eventObj => {
const { price } = eventObj.payload;
console.log('ETH price changed to', price);
})

Web3

Event Name
Payload
web3/INITIALIZED
{ provider: { type, url } }
web3/CONNECTED
{ api, network, node }
web3/AUTHENTICATED
{ account }
web3/DEAUTHENTICATED
{ }
web3/DISCONNECTED
{ }
maker.on('web3/AUTHENTICATED', eventObj => {
const { account } = eventObj.payload;
console.log('web3 authenticated with account', account);
})

CDP Object

Event Name
Payload
COLLATERAL
{ USD, ETH }
DEBT
{ dai }
cdp.on('DEBT', eventObj => {
const { dai } = eventObj.payload;
console.log('Your cdp now has a dai debt of', dai);
})