Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
  • Jun 08 15:07
    lhoenig commented #100
  • Jun 08 14:52
    nft1126 commented #100
  • Jun 08 14:34
    lhoenig commented #100
  • Jun 08 14:34
    lhoenig commented #100
  • Jun 08 14:13
    nft1126 commented #100
  • May 13 21:53
    lhoenig commented #100
  • May 13 18:37
    citizen-stig commented #99
  • May 12 14:11
    lhoenig commented #100
  • Apr 02 13:07
    cTatu commented #103
  • Mar 11 09:31
    gskapka commented #78
  • Feb 12 13:08
    ytrezq commented #78
  • Feb 12 02:41
    ytrezq opened #104
  • Feb 09 05:47
    kroos47 commented #103
  • Feb 04 09:55
    kroos47 commented #103
  • Feb 04 09:55
    kroos47 closed #103
  • Feb 04 08:39
    kroos47 opened #103
  • Jan 14 08:12
    MoMannn closed #102
  • Jan 14 08:12
    MoMannn commented #102
  • Jan 13 14:15
    MoMannn edited #102
  • Jan 13 13:06
    MoMannn opened #102
Subhasish Goswami
@subhasishgoswami

@subhasishgoswami - this from provable.xyz: In production on blockchain mainnets since 2015. We have processed more than 1 millions requests to date - and counting!

@oraclize-support is there any information on how many of them have been successfully served. Like a percentage score of how many requests were served successfully out of total requests recieved.

Oraclize Support
@oraclize-support
@subhasishgoswai - ah. We respond to every mainnet request. Since everything is on chain it's verifiable by anyone. The success of the __callback however depends entirely on the smart-contract implementation which is not something we control.
Subhasish Goswami
@subhasishgoswami
Ok got it thanks
Lukas Hönig
@lhoenig_gitlab
Hi @oraclize-support, hope you're having a great weekend. Another question came up! :) We're now optimising our gasLimit we pass to provable_query, and I noticed something interesting. It seems that there has to be at least 15000 more gas passed than the __callback actually needs, otherwise the TX will fail due to "out of gas". I suspect this must be something that the caller, e.g. Provable enforces? Is this documented somewhere?
Roman
@numeralz

Hi @oraclize-support
i am calling provable_newRandomDSQuery, everything appears to work perfectly, however: the _result that comes back in the __callback seems to be the same every time:

https://ropsten.etherscan.io/address/0xd9eB0B9cC0b296D86547FE6c1466fcC16036894c#events

event log shows Request(id), then Response(id, result), where
result = uint256(keccak256(abi.encodePacked(_result)))

We are following the example of https://github.com/provable-things/ethereum-examples/blob/master/solidity/random-datasource/randomExample.sol

2 replies
amin3m
@amin3m
Hello @oraclize-support, where can I find a list of premium data providers supported by you ?
Oraclize Support
@oraclize-support
@ihoenig - this is not something we enforce. How can it be possible that you have to supply at least 15k more gas than required? The Provable service will simply always call your __callback with either the default amount of gas (200_000) or the amount you specify.
@amin3m - there exists no such list. What support are you hoping for?
Oraclize Support
@oraclize-support
@amin3m your request is based on the assumption that Provable wants to make any claim about the quality of the data - which is not the case. We simply deliver data from ANY datasource to your contracts, proving authenticity of data (meaning that what you receive onchain matches the claim of the datasource you have chosen). You always need to trust the datasource so it should be you choosing it, not us making recommendation (as that would facilitate collusions for instance)
amin3m
@amin3m
@oraclize-support thanks for your response, I'm just getting familiar with your product and I wanted to know if you'd be considering working with premium data providers in the future ?
Oraclize Support
@oraclize-support
@amin3m - we form the bridge between ETH and the dataprovider. We don't work with the data providers directly.
Lukas Hönig
@lhoenig_gitlab
@oraclize-support I have no idea, it doesn't make sense to me either! But that's what I observe at least. I'll try to get to the bottom of it.. must be something with my local setup then.
Lukas Hönig
@lhoenig_gitlab
Maybe I already found the answer: In our callback function, we initiate an on-chain storage. I'm not an expert on Ethereum opcodes yet but as I read this could need a kind of temporary storage that costs 15000 gas and gets released before the end of the function, yielding a 15000 gas "rebate", causing the final number to be seemingly less.
Lukas Hönig
@lhoenig_gitlab
(this could be wrong in the details but the general concept makes sense to me)
Oraclize Support
@oraclize-support
@numeralz - we are checking internally your case
Oraclize Support
@oraclize-support
@numeralz sorry, apparently our random ds service was having issues which have now been solved. You tests should be working again, let us know if it isn't so. Thanks a lot for reporting the problem!
1 reply
Oraclize Support
@oraclize-support

we would recommend having such checks in place whenever you interact with any external system which may depend on an external off-chain state @numeralz

specifically this time one of the Ledger devices which generates the proof got stuck (from our experience it can happen once or twice per year on average) so it had to be rebooted

it's a hardware device (TEE) afterall, so things like that can potentially happen - very infrequently, but you should always design your code for the worst case scenario, especially onchain :)
Jin Wei
@nft1126
hey @oraclize-support ,
I am having issues with getting result through callback function.
I tried to having tests with this example but just increased solidity version to 0.6.9
instead of importing provableAPI_0.4.25.sol, I am using updated version.
I am having tests on kovan network
Does provable service work on only main net?
Oraclize Support
@oraclize-support
@nft1126 - whilst we check the kovan integration, could you try on ropsten or rinkeby instead?
Jin Wei
@nft1126
yeah, rinkeby works fine.
one more blocker for me is to add custom headers to the request.
can you help me with that?
provable_query(60,"URL", ["json(myURL).events.0.score.score_away", "GET", "http://httpbin.org/headers", "{'headers': {'api-key': '0eae4d9ce9msh3ea0d3a4d0f44cfp1d65d5jsncb46bd230c27'}}"]);
here is the query I am using but it doesn't work.
I don't get correct result through callback function.
Jin Wei
@nft1126
actually, I am not sure if the param format that I passed through the function is correct or not.
Would you give me any good examples?
@oraclize-support
Jin Wei
@nft1126
@oraclize-support , would you help me with that?
Oraclize Support
@oraclize-support
@nft1126 - in order to craft a more complex URL query including your headers, you'll have to switch to the computation datasource. Here's a good example: https://github.com/provable-things/ethereum-examples/tree/master/solidity/truffle-examples/url-requests
Dhanush
@Dhanush49294653_twitter
hey @oraclize-support how can i fetch the __callback transaction hash?
Matt Sharp
@msharp19

@oraclize-support ive read above that its possible to have dynamic url get requests, this doesnt seem to be the case for me based on a LOT of testing. Im using https://github.com/provable-things/ethereum-api/blob/master/provableAPI_0.6.sol. I have tried building up the request dynamically:

bytes memory queryBytes = abi.encodePacked("json(", _coordinatorUrl, "/token/event/address/0x", toAsciiString(sender), "/transaction/", uintToString(id) , "/amount/", uintToString(amount), ").validated");
string memory queryString = string(queryBytes);

emit LogRequest(queryString);

if (provable_getPrice("URL") > address(this).balance) {
// Log the error
emit LogNewProvableQuery("Provable query was NOT sent, please add some ETH to cover for the query fee");

// Revert
revert();

} else {
// Send request and get query id
bytes32 queryId = provable_query("URL", queryString);

// Log the query sent
emit LogNewProvableQuery("Provable query was sent, standing by for the answer...");

// Return the queryId
return queryId;

}

LogRequest logs the correct query string but no call is ever made to my api. But when i take that SAME query string and hard code it like:

// Send request and get query id
bytes32 queryId = provable_query("URL", HARDCODED_queryString);

It works.... can you please help explain what I am doing wrong?

Oraclize Support
@oraclize-support
@msharp19 - do you have a query ID of one of your dynamically created queries? Have you used our check_query tool here to check your string concatenation methods are resulting in the expected query string?
Matt Sharp
@msharp19
I will give it a try but i have already output the query in a log and the value is correct (is the intended url that works)
Oraclize Support
@oraclize-support
@msharp19 - okay, report back when you have the check-query tool results!
Jin Wei
@nft1126
can you please let me know how we supply env args to python?
I have been doing some investigation about computation datasource and it seems we need to zip doker and python file and upload it to IPFS and get a new ID.
Jin Wei
@nft1126
But after having gone through the python file, I noticed that we need to supply env args like url and necessary parameters.
I am wondering when and how we supply these values.
Oraclize Support
@oraclize-support

@nft1126 - from docs.provable.xyz:

The developer can send to Provable the application binary or the script, its dependency and the Dockerfile by creating an archive and uploading it to IPFS. The query expects as first argument the IPFS multihash of that archive, while the following arguments will be passed to the execution environment as environmental variables, making them accessible by the application.
If you examine some of the other computation-datasource-using examples here: github.com/provable-things/ethereum-examples , you'll see how the query takes an array of args, the first of which is the IFPS hash of the computation archive you want to use, and the second is an array of arguments of your choosing, which args will be made available to the computation via environment variables.

Jin Wei
@nft1126
generally, which option requires more gas fee between computation and url?
Oraclize Support
@oraclize-support
@nft1126 - the computation datasource is generally used for more complex situations and so naturally tends to use more gas than the URL datasource.