1

Is it possible for an ethereum smart contract to call an external API which then returns a list of value?

Nathan Aw

Nathan Aw
  • 1,954
  • 12
  • 27

2 Answers2

1

Inorder to call external APIs in contract, you have to use oraclize service.

Sample code for your reference....

pragma solidity ^0.4.16;
import "./usingOraclize.sol";  //Importing Oraclize
contract TestOraclizeCall is usingOraclize {
        uint public price;
       event Log(string text);
       //Constructor
       function TestOraclizeCall() {
             OAR = OraclizeAddrResolverI(0x5049063e4a7704ac155e4f1f42a4954bbef5bbde);
        }
  function __callback(bytes32 _myid, string _result) {
             require (msg.sender == oraclize_cbAddress());
             Log(_result);
              price = parseInt(_result, 2);
    }
    function update() payable {
            oraclize_query("URL","json(https://min-api.cryptocompare.com/data/price?fsym=ETH&tsyms=USD).USD");
    }

}

Crissi Mariam Robert
  • 1,174
  • 1
  • 9
  • 25
  • just what I needed! many thanks! only REST API JSON supported? – Nathan Aw Apr 02 '18 at 15:38
  • also, is this an async or sync call? – Nathan Aw Apr 02 '18 at 15:39
  • Since in-chain state has to be deterministic and verifiable by all nodes, now and in the future, "Oracles" write something unambiguous to the chain. That way, the nodes that might not be able to agree on what the API says/said, can certainly agree on what the Oracle said. https://ethereum.stackexchange.com/questions/11589/how-do-oracle-services-work-under-the-hood/11594#11594 – Rob Hitchens Apr 02 '18 at 16:54
0

Sure, read about this service - Oraclize

Vanja Dev
  • 861
  • 11
  • 13