code.vegaprotocol.io/vega@v0.79.0/core/integration/docs/oracles.md (about)

     1  ## Using oracles
     2  
     3  Sending oracle data for any oracle is done using the property name, and the public key as set up previously in the test. How oracles are set up is covered [in the markets documentation](markets.md#Data-source-configuration).
     4  
     5  The public key, in all setup steps is the value specified as _[...] from "0xCAFECAFE1"_. The public key, then, is `0xCAFECAFE1`.
     6  
     7  ### Sending simple signal
     8  
     9  In its simplest form, an oracle can be triggered to send a data signal using the following step:
    10  
    11  ```cucumber
    12  When the oracles broadcast data signed with "0xCAFECAFE1":
    13    | name             | value    | eth-block-time |
    14    | prices.ETH.value | 23456789 | 1725643814     |
    15  ```
    16  
    17  Where the fields are defined as follows:
    18  
    19  ```
    20  | name           | string                                    |
    21  | value          | string (compatible with PropertyKey_Type) |
    22  | eth-block-time | timestamp - optional                      |
    23  ```
    24  
    25  Details on the [`PropertyKey_Type` type](types.md#PropertyKey_Type).
    26  
    27  For settlement data, the eth-block-time doesn't matter too much. This value, however, is useful for perpetual markets where the time-weighted average values matter a lot.
    28  
    29  It is possible to broadcast the same data using multiple keys (e.g. where 2 markets are configured using the same property key, but with different signers). In the keys can simply be comma-separated in the step:
    30  
    31  ```cucumber
    32  When the oracles broadcast data signed with "0xCAFECAFE1,0xCAFECAFE2,0xCAFECAFE3":
    33    | name             | value    | eth-block-time |
    34    | prices.ETH.value | 23456789 | 1725643814     |
    35  ```
    36  
    37  ### Sending a signal relative to the current block time
    38  
    39  For perpetual markets, specifically funding payments, we want to be able to control when (relative to the current block time in the test), certain data-points were received like so:
    40  
    41  ```cucumber
    42  When the oracles broadcast data with block time signed with "0xCAFECAFE1":
    43    | name             | value      | time offset |
    44    | perp.funding.cue | 1511924180 | -100s       |
    45    | perp.ETH.value   | 975        | -2s         |
    46    | perp.ETH.value   | 977        | -1s         |
    47  ```
    48  
    49  Other than that, the step works similarly to the previous one discussed fields are defined as follows:
    50  
    51  ```
    52  | name           | string                                    |
    53  | value          | string (compatible with PropertyKey_Type) |
    54  | time offset    | duration                                  |
    55  | eth-block-time | timestamp - optional                      |
    56  ```