# Interface Requirement of a Consumer Contract

In order to consume the data feeds, your consumer contract is required to indicate the owner of the consumer contract.

You must return the address that you will be using to allow the consumer contract to be able to consume the data feeds from at least one of the specified functions.

The specified functions are as follows. &#x20;

* <mark style="color:orange;">`function owner() external view returns (address)`</mark>
* <mark style="color:orange;">`function dataFeedOwner() external view returns (address)`</mark>

### Example 1

This [consumer contract](https://testnet.bkcscan.com/address/0x0A787d834cEbFfedCb43a531Cf788F7229E7Fc51/read-contract) implements a function about ownership, which is <mark style="color:orange;">`owner()`</mark>. The implemented function returns <mark style="color:orange;">`0x9f5dc5b73adeccd5d4cee55ab7ec003e1dc6b495`</mark> as the owner of the contract. <mark style="color:orange;">`0x9f5…495`</mark> is the only address that can allow the consumer contract to consume the data feeds

### Example 2

This [consumer contract](https://testnet.bkcscan.com/address/0xa8BA61538eABd1784381A0bc1A29B127F1CB1B73/read-contract) implements only <mark style="color:orange;">dataFeedOwner()</mark>. The implemented function returns <mark style="color:orange;">0xA3E098DCECa0baBeA44bcd10405f1F8c97fd27f0</mark> as the owner of the contract. <mark style="color:orange;">0xA3E…7f0</mark> is the only address that can allow the consumer contract to consume the data feeds

### Example 3

This [consumer contract](https://testnet.bkcscan.com/address/0x8801be1aaF5500ef0bbF18958D34D9319b4Ad3e8/read-contract) implements both <mark style="color:orange;">`owner()`</mark> and <mark style="color:orange;">`dataFeedOwner()`</mark>. The <mark style="color:orange;">`owner()`</mark> method returns <mark style="color:orange;">`0x9f5DC5B73ADECcD5D4cEe55Ab7ec003E1Dc6b495`</mark>, and the <mark style="color:orange;">`dataFeedOwner()`</mark> method returns <mark style="color:orange;">`0xA3E098DCECa0baBeA44bcd10405f1F8c97fd27f0`</mark>. The consumer contract can be allowed by both <mark style="color:orange;">`0x9f5…495`</mark> and <mark style="color:orange;">`0xA3E…7f0`</mark>. This means it is possible for <mark style="color:orange;">`0xA3E…7f0`</mark> to allow the consumer contract while the consumer contract is being allowed by <mark style="color:orange;">`0x9f5…495`</mark>, resulting in the consumer contract disappearing from <mark style="color:orange;">`0x9f5…495`</mark>’s allowed address list and appearing in <mark style="color:orange;">`0xA3E…7f0`</mark>’s allowed address list instead, as <mark style="color:orange;">`0x9f5…495`</mark> and <mark style="color:orange;">`0xA3E…7f0`</mark> are both considered the owner of the consumer contract, and a consumer contract can only be allowed by only one subscribed token at a time.
