Make external (non-IC) HTTP request from backend canister?

Wondering if anyone has any information about this as of yet :thinking:

Without something like WASI, making http requests to an endpoint not hosted on the IC cannot be supported out of the box.

Right now, the only solution I can see for solving this issue is to do a workaround where:

  1. the user initiates a request to a owner-maintained centralized server (:frowning_face:) hosted outside of the IC
  2. this server processes the request to fetch data from an external data source
  3. the server sends the response from the external data source to the backend canister using an IC agent
  4. the backend canister receives the request and emits an update saying that it’s done processing the request
  5. the user is notified of their request success/failures via some kind of polling response from the backend canister

Or, for a real crap solution: to just make the request to the non-ic-hosted service directly from the user’s local machine via frontend asset deployment, and update the backend canister directly from the response. This is, as you might suspect, inviting so many security issues there is really no point in developing it as the trustworthiness of the data is practically zero.

TL;DR: It possible right now to have an external server which pushes data to the IC from whatever source, but to my knowledge, it is not possible to request data from an external server from within a canister itself.

I am wondering if Dfinity has announced any plans for how to request data from external resources from within a canister? Something similar to ChainLink’s oracle node system perhaps?

1 Like