Chainlink
Examples
Note
These examples are crafted as a Jupyter notebook. You can download the original notebook file here.
Also note that inside Jupyter notebooks, await can be used freely outside of asyncio.run().
In [1]:
from ctc.protocols import chainlink_utils
In [2]:
feed = 'ETH_USD'
Get feed address¶
In [3]:
await chainlink_utils.async_resolve_feed_address(feed)
Out[3]:
'0x5f4ec3df9cbd43714fe2740f5e3616155c5b8419'
Get current value of feed¶
In [4]:
await chainlink_utils.async_get_feed_datum(feed)
Out[4]:
1295.91
Get historical values of a feed¶
In [5]:
feed_data = await chainlink_utils.async_get_feed_data(feed)
feed_data
Out[5]:
block_number
10606572 399.33
10606572 399.37
10606572 399.33
10606573 399.37
10606573 399.33
...
15613216 1287.27
15613248 1273.925028
15613287 1280.742804
15613305 1288.935935
15613347 1295.91
Name: answer, Length: 237563, dtype: object
Get interpolated historical values of a feed¶
In [6]:
feed_data = await chainlink_utils.async_get_feed_data(feed, interpolate=True)
feed_data
Out[6]:
block_number
10606572 399.330
10606573 399.320
10606574 399.325
10606575 399.320
10606576 399.320
...
15613492 1295.910
15613493 1295.910
15613494 1295.910
15613495 1295.910
15613496 1295.910
Name: answer, Length: 5006925, dtype: float64
Get feed aggregator history¶
In [7]:
await chainlink_utils.async_get_feed_previous_aggregators(feed)
Out[7]:
['0xf79d6afbb6da890132f9d7c355e3015f15f3406f', '0xb103ede8acd6f0c106b7a5772e9d24e34f5ebc2c', '0x00c7a37b03690fb9f41b5c5af8131735c7275446', '0xd3fcd40153e56110e6eeae13e12530e26c9cb4fd', '0x37bc7498f4ff12c19678ee8fe19d713b87f6a9e6']
In [8]:
# blocks where aggregators updated
await chainlink_utils.async_get_feed_aggregator_history(feed)
Out[8]:
{'0xf79d6afbb6da890132f9d7c355e3015f15f3406f': 10606501,
'0xb103ede8acd6f0c106b7a5772e9d24e34f5ebc2c': 10607120,
'0x00c7a37b03690fb9f41b5c5af8131735c7275446': 11008985,
'0xd3fcd40153e56110e6eeae13e12530e26c9cb4fd': 12187957,
'0x37bc7498f4ff12c19678ee8fe19d713b87f6a9e6': 12453813}
Reference
- async ctc.protocols.chainlink_utils.async_print_feed_summary(feed, *, start_block=None, n_recent=None, verbose=False)