Skip to content

KlayOracle/klayoracle-monorepo

Repository files navigation

codeql dependency linter unit testing slither analysis snyk check

Official DigiOracle monorepo

DigiOracle (formerly KlayOracle) is a blockchain oracle that helps smart contract developers connect Web3 applications to real-world events, data, and assets.

This monorepo contains all core packages that make up the DigiOracle protocol.

📚 Learn More

Docs

Website: digioracle.link

Blog: digioracle-network.medium.com

📦 Packages

  • data-provider: For Data Providers to serve data feeds to Data Subscribers.
  • node: For Node runners to serve multiple Data Providers requests.
  • oracle-contract: Deployed by Data Providers for each data feed.

📬 Contact

Feel free to email engineering@klayoracle.com

Connect with KlayOracle

Website | Dorahacks | Twitter | Medium | Telegram | YouTube

Contributors

Checklist

  • Install go version >= 18
  • Docker Desktop
  • Cockroach cli
  • Mac/Linux machine

Node Runner

  • Generate a self-signed certificate for each node. see guide using open ssl.
  • Use different authority or wildcard matching authority of each node you intend to run.
  • In node/config.yml, set the key and the pem you used to generate the certificate.
  • Give the certificate pem file to data providers for authenticating with your Node. You can also run your own data providers.
  • Update your organization details in node/config.yml. The website must match the authority used to sign the certificate; an example will be if the authority is *.origineum.com, the website can be node-1.origineum.com. Otherwise, the node service will fail to start.
  • In .env, HOST_IP is the DNS for reaching your node. If you're running a docker container, you can override it and other env variables by passing from the terminal.
  • In .env PRIVATE_KEY is your Node signer with enough Klay tokens to pay for the request.
  • In .env COCKROACH_DNS_URL is your full connection string to https://cockroachlabs.cloud/ cluster. A free account will suffice for a considerable period.
  • In .env OAUTH_TOKEN is the Oauth token given to data providers using your Node.
  • Run make gomodtidy, make node-tables, make node-server-nolog HOST_IP=0.0.0.0:50054 or make node-server HOST_IP=0.0.0.0:50054 on your local machine to test it locally.

DP Runner

  • Using sample KLAY_USD and WEMIX_USD, add all the feeds your data provider will serve to the consumer contract.
  • Use the setup guide to understand and add a compatible feed. Guide here
  • Using the make command, generate a unique 32 bytes string identifier for each adapter feed. Example make adapter-id-gen ADAPTERS="KLAY_USD.json WEMIX_USD.json" will generate adapterId for each feed.
  • Optionally if you prefer to prettifier your feed after generating adapterId, use https://jsonformatter.curiousconcept.com/.
  • Deploy OracleProvider contract for each feed and replace the oracleAddress key.
  • Test if your Adapter will run successfully when sent to Node by running make adapter-dry-run ADAPTERS="KLAY_USD.json WEMIX_USD.json"
  • Add the certificate of the Node your data provider will be using to data-provider/certs/node. Update the path in data-provider/config.yml.
  • Update your organization details in data-provider/config.yml.
  • In .env, HOST_IP is the dns for reaching your data provider. As a rule of thumb, if you are running multiple data providers, don't run on the same host,
  • Add the list of feeds to be loaded to data-provider/config.yml. Any feed name not listed will not be sent to the node for aggregation.
  • Run make gomodtidy, make dp-client-nolog HOST_IP=0.0.0.0:50002 or make dp-client HOST_IP=0.0.0.0:50002 on your local machine to test it locally.

For detailed instructions, please look at the KlayOracle full documentation.

Klaytn Data Feeds & RWA

Feed Oracle Address Decimal
Klaytn Cypress (Mainnet)
KLAY/USD 0x62cB9Ccd9F08e27A89A9C8C5CCeEAEf7ddC4043B 9
DOT/USD 0x49573a03fDfBf54766c0BB3C20Db5aAfea749211 9
AVAX/USD 0x8D58564D0e7394902a10105BbE183c9A44f02d1d 9
AMZN/USD 0xf57761CC1FcF506Da4396E62C5920C1632c30620 9
ALGO/USD 0xcbE8E1F7aF9e21192E4260152aDC91c8805Be222 9
AAPL/USD 0x722222452eA9bE8dDF62118835394e8C079d2971 9
BTC/USD 0xc8D7Df132015f44FbB7D535Ca48677cC129566c8 9
ETH/USD 0xce4bC34b8718C61901AB76b81e4e6BA8d096eAce 9
BNB/USD 0x8D58564D0e7394902a10105BbE183c9A44f02d1d 9
SOL/USD 0x70f1bB87C395a377476903AAE8b1A37b76347c8D 9
LTC/USD 0x14cc5115AC7c9dE06151C91b6c9465ad381b0688 9
MATIC/USD 0x1FAD86EfBa4FADCF49E79aBFAFEB0F54Ef7342a0 9
XRP/USD 0x52fe38E36A3ec9Dc3dE1819a88411668E456bDE5 9
PEPE/USD 0x672589c68b8C92bd0d644d67Cc6a148b18407C80 9
TSLA/USD (Tesla) 0xc9654D64c0f783d87271c5edA514951436a9a8ea 9
NVDA/USD (Nivida) 0x81430EDf87Fe20A95d2766a8EA5f31d4D4509a09 9
MSFT/USD (Microsoft) 0xa618871566f9446AefC671792874fA6628A9BA49 9
META/USD (Facebook - META) 0x8DFAC6650073d5818Eab9F4a150eDE1B8471050D 9
JPM/USD (JP Morgan) 0xe2B5222eDA290b79Ee8cb2a6ba67Bfc1C377f972 9
GOOGL/USD (Alphabet Inc. CI A) 0x65a14cf12730eBF7874eE459F3C9F5d33e909c15 9
GOOG/USD (Alphabet Inc. CI C) 0x0080f3FF6ca9123Cf069D2C5A35d6463E6Faa0BD 9
Klaytn Baobab (Testnet)
KLAY/USD 0xA0ED7B1cFaE9cf93C407F17f39D817D6002163a9 9
DOT/USD 0xFF143bB9FC20BfCf73d9FC85b4562732B7781B42 9
AVAX/USD 0x55eA33667F78f6E0FeC977Cc30673e0Cf9b5457A 9
AMZN/USD 0x97BA0761eec90D3C0A76D2ca6533A8595c81d5E2 9
ALGO/USD 0x84F9583A0A18a70F396dEBDaCD700B0CD9784091 9
AAPL/USD 0x52fe38E36A3ec9Dc3dE1819a88411668E456bDE5 9
BTC/USD 0x1d14aD4E06065F53EaB313119A3B1933D764978b 9
ETH/USD 0x68ead609f859aD1a737a3dbaA73e25311046a5c2 9
BNB/USD 0xD8bB23aa6CD6BBE0B8fc52275398E219Eaa53102 9
SOL/USD 0x80C0BE0ABEA4db2A63c05c03969F279080181D37 9
LTC/USD 0x2DD00bb74D1C1eB9bc64BB9eC926A7cC4222c5bE 9
MATIC/USD 0x64d6a1501e1e5185BF327746eaefB193D10D5038 9
XRP/USD 0xbe21230F89329d3A32FC6ec89c0025Da4475dB16 9
PEPE/USD 0x80d8aBE62A1a4bc96643f5e89Dfe3Ef99B82759c 9
TSLA/USD (Tesla) 0xCdFCB548BB28F8D878e18234688eccF7E9E25a19 9
NVDA/USD (Nivida) 0x007C4f6AE43C2C059dAb11E289D7eD30cB301134 9
MSFT/USD (Microsoft) 0x19271a32944546701A034F3b661F4283064CBD97 9
META/USD (Facebook - META) 0x11a8341dEDe589773ce7e3c48801F77ec542e6FD 9
JPM/USD (JP Morgan) 0xb30259d8a55509091A0671018D75197F6c480463 9
GOOGL/USD (Alphabet Inc. CI A) 0xc406DC5F3469527362bEcB6ba59EC0c24AB2C03F 9
GOOG/USD (Alphabet Inc. CI C) 0x209F857D9695851e55700115788b9052F82835B2 9

Mantle Data Feeds & RWA

Feed Oracle Address Decimal
Mantle (Testnet)
MANTLE/USD 0xC41d55C1Da69634588FEcD28A1156D2249BD3dA1 9
DOT/USD 0xA0698f9889a1B7906B2C236FAb7a9c5d128fa32a 9
AVAX/USD 0x6f785c43FBB5569b7f1A57fe62fBCCE96175612a 9
AMZN/USD 0x2F09d2D8EFd85F4Fe03663933eDAD918513A3A9E 9
ALGO/USD 0xcFCec0C69438e0A125c4B0450d3793e6EdDf7B05 9
AAPL/USD 0x300C9dCa1E530E2b34C58Abe3848A5ba511ca624 9
BTC/USD 0x85190f5303D85c2668275cE7A07758ba22cE0C35 9
ETH/USD 0x7274F4c13438Bbf955eA87A883679511F8921f36 9
BNB/USD 0x336238318d3a8c421207193173f80101D2d78c7e 9
SOL/USD 0xC906384361FD1D58DE1C6f43Fe4Ad9239FFF701b 9
LTC/USD 0x7c023184b0949794F8df014915a8deBdE73A432a 9
MATIC/USD 0x1FAD86EfBa4FADCF49E79aBFAFEB0F54Ef7342a0 9
XRP/USD 0x0b84b6580b85e82C068324C379af136a820a28A0 9
PEPE/USD 0x3bbE624FCED00B4557dCd1d157d241a9dA0D1654 9
TSLA/USD (Tesla) 0x5E8466CD85Af8e3DF3FdC2d800c5361d6a6E9F4e 9
NVDA/USD (Nivida) 0x2070c4d9a6Bf7E291edED112584162A5469F53b4 9
MSFT/USD (Microsoft) 0xE4725EdF77460Bf1053a8c575c255E0818C8c04A 9
META/USD (Facebook - META) 0x463B123af02E3d75403Ed79d447aA0E8d7501106 9
JPM/USD (JP Morgan) 0x81B238602226Ea019876676E9617737e4BDC5447 9
GOOGL/USD (Alphabet Inc. CI A) 0x87bD12e9FB32d390b776A59aA63b102a7664A5F6 9
GOOG/USD (Alphabet Inc. CI C) 0x9b18663631A53d891f0C7199bb656A4863a94D5a 9

Video: How to Fetch Price Feed from Oracle

Fetch KLAY/USD Price Feed using DigiOracle formerly KlayOracle

About

All core packages that make up the DigiOracle protocol.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •