Skip to main content

Predicate Design

The core design of chainhooks revolves around the concept of predicates. Each individual chainhook has a customizable predicate that specifies what information you are scanning for.

Predicates are defined in the If-this, then-that format. You'll write your condition in the if-this condition template and use then-that to output the result.

if-this Predicate Design

The if-this predicate design can use the following attributes to define the predicates. The 'scope' parameter is mandatory to use with any other parameters.

  • scope (mandatory)
  • equals
  • op_return
    • ends_with
  • p2pkh
  • p2sh
  • p2wpkh
  • operation

Example:

{
"if_this": {
"scope": "txid",
"equals": "0xfaaac1833dc4883e7ec28f61e35b41f896c395f8d288b1a177155de2abd6052f"
}
}

then-that Predicate Design

The then-that predicate design can use the following attributes to output the result based on the if-this condition defined.

  • http_post
    • url
    • authorization_header
  • file_append
    • path

Example:

{
"then_that": {
"file_append": {
"path": "/tmp/events.json",
},
},
}

For more information on predicate definitions, refer to how to use chainhooks with bitcoin and how to use chainhooks with Stacks.