Kraken Rates Oracle Node
This Chainlink has a dedicated connection to Kraken's Prices API.
Steps for using this oracle
- Write and deploy your Chainlink contract using the network details below
- Fund it with LINK
- Call your request method
Network Details
You will need to use the following LINK token address, oracle address, and Job ID in order to create the Chainlink request.
Rinkeby
Payment amount: 1 LINK
LINK Token address: 0x01BE23585060835E02B77ef475b0Cc51aA1e0709
Oracle address: 0x7AFe1118Ea78C1eae84ca8feE5C65Bc76CcF879e
JobID: 49ea116156cd44be997e7670a5dde80d
Kovan
Payment amount: 1 LINK
LINK Token address: 0xa36085F69e2889c224210F603D836748e7dC0088
Oracle address: 0x2f90A6D021db21e1B2A077c5a37B3C7E75D15b7e
JobID: 8f4eeda1a8724077a0560ee84eb006b4
Mainnet
Payment amount: 0.5 LINK
LINK Token address: 0x514910771AF9Ca656af840dff83E8264EcF986CA
Oracle address: 0x89f70fA9F439dbd0A1BC22a09BEFc56adA04d9b4
JobID: contact dataproviders@chain.link
for details
Create your contract
Import ChainlinkClient.sol
into your contract so you can inherit the Chainlink behavior.
pragma solidity ^0.4.24;
import "@chainlink/contracts/v0.4/ChainlinkClient.sol";
contract KrakenChainlink is ChainlinkClient {
uint256 oraclePayment;
constructor(uint256 _oraclePayment) public {
setPublicChainlinkToken();
oraclePayment = _oraclePayment;
}
// Additional functions here:
}
pragma solidity ^0.5.0;
import "@chainlink/contracts/v0.5/ChainlinkClient.sol";
contract KrakenChainlink is ChainlinkClient {
uint256 oraclePayment;
constructor(uint256 _oraclePayment) public {
setPublicChainlinkToken();
oraclePayment = _oraclePayment;
}
// Additional functions here:
}
pragma solidity ^0.6.0;
import "@chainlink/contracts/v0.6/ChainlinkClient.sol";
contract KrakenChainlink is ChainlinkClient {
uint256 oraclePayment;
constructor(uint256 _oraclePayment) public {
setPublicChainlinkToken();
oraclePayment = _oraclePayment;
}
// Additional functions here:
}
Tasks
Request Parameters
Arguments
Use the index
parameter to request the desired index from Kraken.
Solidity example
To obtain KXBTUSD index, use the DEFI_KXBTUSD
identifier.
req.add("index", "DEFI_KXBTUSD");
Index identifiers include:
- DEFI_KXBTUSD
- DEFI_KETHUSD
- DEFI_KBCHUSD
- DEFI_KXRPUSD
- DEFI_KLTCUSD
- DEFI_KLINKUSD
- DEFI_KEOSUSD
- DEFI_KXTZUSD
- DEFI_KXLMUSD
- DEFI_KPAXGUSD
- DEFI_KALGOUSD
- DEFI_KATOMUSD
- DEFI_KOMGUSD
- DEFI_KOXTUSD
- DEFI_KXBTEUR
- DEFI_KETHEUR
times
The amount to multiply the result by (since Solidity does not handle decimals).
Solidity example
req.addInt("times", 100);
Chainlink Examples
The examples below show how to create a request for the Chainlink node.
function requestPrice
(
address _oracle,
bytes32 _jobId,
string _index
)
public
onlyOwner
{
Chainlink.Request memory req = buildChainlinkRequest(_jobId, address(this), this.fulfill.selector);
req.add("index", _index);
req.addInt("times", 100);
sendChainlinkRequestTo(_oracle, req, oraclePayment);
}
Here is an example of the fulfill method:
uint256 public currentPrice;
function fulfill(bytes32 _requestId, uint256 _price)
public
recordChainlinkFulfillment(_requestId)
{
currentPrice = _price;
}