Skip to content

Instantly share code, notes, and snippets.

View pedroduartecosta's full-sized avatar
🏠
Working from home

Pedro Costa pedroduartecosta

🏠
Working from home
View GitHub Profile
//triggered when there's a consensus on the final result
event UpdatedRequest (
uint id,
string urlToQuery,
string attributeToFetch,
string agreedValue
);
//called by the oracle to record its answer
function updateRequest (
uint _id,
string memory _valueRetrieved
) public {
Request storage currRequest = requests[_id];
//check if oracle is in the list of trusted oracles
//and if the oracle hasn't voted yet
//event that triggers oracle outside of the blockchain
 event NewRequest (
uint id,
string urlToQuery,
string attributeToFetch
 );
function createRequest (
string memory _urlToQuery,
string memory _attributeToFetch
)
public
{
uint lenght = requests.push(Request(currentId, _urlToQuery, _attributeToFetch, ""));
Request storage r = requests[lenght-1];
// Hardcoded oracles address
// defines a general api request
struct Request {
uint id; //request id
string urlToQuery; //API url
string attributeToFetch; //json attribute (key) to retrieve in the response
string agreedValue; //value from key
mapping(uint => string) anwers; //answers provided by the oracles
mapping(address => uint) quorum; //oracles which will query the answer (1=oracle hasn't voted, 2=oracle has voted)
}
pragma solidity >=0.4.21 <0.6.0;
contract Oracle {
 Request[] requests; //list of requests made to the contract
 uint currentId = 0; //increasing request id
 uint minQuorum = 2; //minimum number of responses to receive before declaring final result
 uint totalOracleCount = 3; // Hardcoded oracle count
}

Keybase proof

I hereby claim:

  • I am pedroduartecosta on github.
  • I am pedroc (https://keybase.io/pedroc) on keybase.
  • I have a public key ASAzPvCsscwUOE487ulXNKdyfk-Vfu-9gwYaWGmGJq1f-wo

To claim this, I am signing this object:

@pedroduartecosta
pedroduartecosta / cloudSettings
Last active September 16, 2019 19:17
Visual Studio Code Settings Sync Gist
{"lastUpload":"2019-04-22T16:12:57.533Z","extensionVersion":"v3.2.9"}
val holdout = model.transform(test).select("prediction", "DelayOutputVar")
val rm = new RegressionMetrics(holdout.rdd.map(x =>
(x(0).asInstanceOf[Double], x(1).asInstanceOf[Double])))
println("sqrt(MSE): " + Math.sqrt(rm.meanSquaredError))
println("mean absolute error: " + rm.meanAbsoluteError)
println("R Squared: " + rm.r2)
println("Explained Variance: " + rm.explainedVariance + "\n")