data_source.proto
path vega/data_source.proto
package vega
Messages
DataSourceDefinition
Represents the top level object that handles data sources. Data source definition can be external or internal, with whatever number of data sources are defined for each type in the child objects below.
Name | Type | Description |
---|---|---|
internal | DataSourceDefinitionInternal | |
external | DataSourceDefinitionExternal |
DataSourceDefinitionExternal
DataSourceDefinitionExternal is the top level object used for all external data sources. It contains one of any of the defined `SourceType` variants.
Name | Type | Description |
---|---|---|
oracle | DataSourceSpecConfiguration | |
eth_oracle | EthCallSpec | Contains the data specification that is received from Ethereum sources. |
DataSourceDefinitionInternal
Top level object used for all internal data sources. It contains one of any of the defined source type variants.
Name | Type | Description |
---|---|---|
time | DataSourceSpecConfigurationTime | |
time_trigger | DataSourceSpecConfigurationTimeTrigger |
DataSourceSpec
Data source spec describes the data source base that a product or a risk model wants to get from the data source engine. This message contains additional information used by the API.
Name | Type | Description |
---|---|---|
id | string | Hash generated from the DataSpec data. |
created_at | int64 | Creation date and time |
updated_at | int64 | Last Updated timestamp |
data | DataSourceDefinition | |
status | DataSourceSpec.Status | Status describes the status of the data source spec |
DataSourceSpecConfiguration
All types of external data sources use the same configuration set for meeting requirements in order for the data to be useful for Vega - valid signatures and matching filters.
Name | Type | Description |
---|---|---|
signers | repeated data.v1.Signer | Signers is the list of authorized signatures that signed the data for this source. All the signatures in the data source data should be contained in this external source. All the signatures in the data should be contained in this list. |
filters | repeated data.v1.Filter | Filters describes which source data are considered of interest or not for the product (or the risk model). |
DataSourceSpecConfigurationTime
Internal data source used for emitting timestamps.
Name | Type | Description |
---|---|---|
conditions | repeated data.v1.Condition | Conditions that the timestamps should meet in order to be considered. |
DataSourceSpecConfigurationTimeTrigger
Internal data source used for emitting timestamps automatically using predefined intervals and conditions.
Name | Type | Description |
---|---|---|
conditions | repeated data.v1.Condition | Conditions that the timestamps need to meet in order to be considered. |
triggers | repeated data.v1.InternalTimeTrigger | An internal time trigger |
EthCallSpec
Specifies a data source that derives its content from calling a read method on an Ethereum contract.
Name | Type | Description |
---|---|---|
address | string | Ethereum address of the contract to call. |
abi | string | The ABI of that contract. |
method | string | Name of the method on the contract to call. |
args | repeated google.protobuf.Value | List of arguments to pass to method call. Protobuf 'Value' wraps an arbitrary JSON type that is mapped to an Ethereum type according to the ABI. |
trigger | EthCallTrigger | Conditions for determining when to call the contract method. |
required_confirmations | uint64 | Number of confirmations required before the query is considered verified |
filters | repeated data.v1.Filter | Filters the data returned from the contract method |
normalisers | repeated Normaliser | Normalisers are used to convert the data returned from the contract method into a standard format. The key of the map is the name of the property, which identifies the specific piece of data to other parts of the data sourcing framework, for example filters. The value is a JSONPath expression for expressing where in the contract call result the required data is located, for example $[0] indicates the first result. $[1].price would look in the second result returned from the contract for a structure with a key called 'price' and use that if it exists. |
source_chain_id | uint64 | The ID of the EVM based chain which is to be used to source the oracle data. |
EthCallTrigger
Determines when the contract method should be called.
Name | Type | Description |
---|---|---|
time_trigger | EthTimeTrigger |
EthTimeTrigger
Trigger for an Ethereum call based on the Ethereum block timestamp. Can be one-off or repeating.
Name | Type | Description |
---|---|---|
initial | optional uint64 | Trigger when the Ethereum time is greater or equal to this time, in Unix seconds. |
every | optional uint64 | Repeat the call every n seconds after the initial call. If no time for initial call was specified, begin repeating immediately. |
until | optional uint64 | If repeating, stop once Ethereum time is greater than this time, in Unix seconds. If not set, then repeat indefinitely. |
ExternalDataSourceSpec
Name | Type | Description |
---|---|---|
spec | DataSourceSpec |
Normaliser
Name | Type | Description |
---|---|---|
name | string | |
expression | string |
SpecBindingForCompositePrice
Describes which property of the data source data is to be used for price source.
Name | Type | Description |
---|---|---|
price_source_property | string | The property name of price. |
Enums
DataSourceSpec.Status
Status describe the status of the data source spec
Name | Number | Description |
---|---|---|
STATUS_UNSPECIFIED | 0 | Default value. |
STATUS_ACTIVE | 1 | STATUS_ACTIVE describes an active data source spec. |
STATUS_DEACTIVATED | 2 | STATUS_DEACTIVATED describes a data source spec that is not listening to data anymore. |