Actions

External Initiators

From Chainlink Community Wiki

Revision as of 20:57, 9 January 2023 by Devtrace (talk | contribs)

External Initiators

Official Chainlink Docs for External Initiators


Example Details for the Document

To help get a better understanding of how external initiators work, we will run through an example in the doc.

The example is writing three pieces of information on-chain; two strings and an uint.

String01: FeedName

String02: FeedID

Decimal01: 1234567.89


Create Job

We will need to create a job for the external initiator to run.

Due to the fact that the inbound web request to the node will need to include the unique Job ID for the desired job, we will have to deploy the job before we can create the external initiator.

Note: The name value in the json portion of the below job spec example must match the name of the external initiator you create in the next step

Example job spec:

type            = "webhook"
name            = "External Initiator Example 01"
schemaVersion   = 1
externalInitiators = [
  { name = "$EXTERNAL_INITIATOR_NAME", spec = "{}" }
]
observationSource   = """
    data         [type="jsonparse" data="$(jobRun.requestBody)"]

    encode_tx    [type="ethabiencode"
          abi="myFunc(string string1, string string2, uint256 num1)"
          data="{ \\"String01\\": $(data.string1), \\"String02\\": $(data.string2), \\"Decimal01\\": $(data.num1) }"]

    submit_tx    [type="ethtx"
          to="$CONTRACT_ADDRESS"
          data="$(encode_tx)"
          failOnRevert="true"]

    data -> encode_tx -> submit_tx
"""



Create External Initiator

In order to create an external initiator, we need to get access to the Chainlink command line (CLI)

We'll accomplish this by entering into our Chainlink docker container

docker exec -it $CHAINLINK_CONTAINER_NAME /bin.bash

You will be prompted to log in.

Your login credentials are the same email address and password combination you use to login to the web UI

Once authenticated, we can create our external initiator.

chainlink initiators create $EXTERNAL_INITIATOR_NAME $EXTERNAL_INITIATOR_URL

In the above example command, the $EXTERNAL_INITIATOR_NAME would be whatever you want it to be.

  • Whatever name you give it, will appear as the name in the database, so I recommend you name it something specific to the job.

==