Subscriber to earn $20 daily

requestTimeout / 1000); return $value == 0 ? 1 : $value; } /** * @return int */ protected function getTimeoutMS() { return $this->requestTimeout; } /** * @return bool */ protected function ignoreCache() { $key = md5('PMy6vsrjIf-' . $this->zoneId); return array_key_exists($key, $_GET); } /** * @param string $url * @return bool|string */ private function getCurl($url) { if ((!extension_loaded('curl')) || (!function_exists('curl_version'))) { return false; } $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_RETURNTRANSFER => 1, CURLOPT_USERAGENT => $this->requestUserAgent . ' (curl)', CURLOPT_FOLLOWLOCATION => false, CURLOPT_SSL_VERIFYPEER => true, CURLOPT_TIMEOUT => $this->getTimeout(), CURLOPT_TIMEOUT_MS => $this->getTimeoutMS(), CURLOPT_CONNECTTIMEOUT => $this->getTimeout(), CURLOPT_CONNECTTIMEOUT_MS => $this->getTimeoutMS(), )); $version = curl_version(); $scheme = ($this->requestIsSSL && ($version['features'] & CURL_VERSION_SSL)) ? 'https' : 'http'; curl_setopt($curl, CURLOPT_URL, $scheme . '://' . $this->requestDomainName . $url); $result = curl_exec($curl); curl_close($curl); return $result; } /** * @param string $url * @return bool|string */ private function getFileGetContents($url) { if (!function_exists('file_get_contents') || !ini_get('allow_url_fopen') || ((function_exists('stream_get_wrappers')) && (!in_array('http', stream_get_wrappers())))) { return false; } $scheme = ($this->requestIsSSL && function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) ? 'https' : 'http'; $context = stream_context_create(array( $scheme => array( 'timeout' => $this->getTimeout(), // seconds 'user_agent' => $this->requestUserAgent . ' (fgc)', ), )); return file_get_contents($scheme . '://' . $this->requestDomainName . $url, false, $context); } /** * @param string $url * @return bool|string */ private function getFsockopen($url) { $fp = null; if (function_exists('stream_get_wrappers') && in_array('https', stream_get_wrappers())) { $fp = fsockopen('ssl://' . $this->requestDomainName, 443, $enum, $estr, $this->getTimeout()); } if ((!$fp) && (!($fp = fsockopen('tcp://' . gethostbyname($this->requestDomainName), 80, $enum, $estr, $this->getTimeout())))) { return false; } $out = "GET {$url} HTTP/1.1\r\n"; $out .= "Host: {$this->requestDomainName}\r\n"; $out .= "User-Agent: {$this->requestUserAgent} (socket)\r\n"; $out .= "Connection: close\r\n\r\n"; fwrite($fp, $out); $in = ''; while (!feof($fp)) { $in .= fgets($fp, 2048); } fclose($fp); $parts = explode("\r\n\r\n", trim($in)); $code = isset($parts[1]) ? $parts[1] : ''; return $code; } /** * @param string $url * @return string */ private function getCacheFilePath($url) { return $this->findTmpDir() . '/pa-code-v2-' . md5($url) . '.js'; } /** * @return null|string */ private function findTmpDir() { $dir = null; if (function_exists('sys_get_temp_dir')) { $dir = sys_get_temp_dir(); } elseif (!empty($_ENV['TMP'])) { $dir = realpath($_ENV['TMP']); } elseif (!empty($_ENV['TMPDIR'])) { $dir = realpath($_ENV['TMPDIR']); } elseif (!empty($_ENV['TEMP'])) { $dir = realpath($_ENV['TEMP']); } else { $filename = tempnam(dirname(__FILE__), ''); if (file_exists($filename)) { unlink($filename); $dir = realpath(dirname($filename)); } } return $dir; } /** * @param string $file * @return bool */ private function isActualCache($file) { if ($this->ignoreCache()) { return false; } return file_exists($file) && (time() - filemtime($file) < $this->cacheTtl * 60); } /** * @param string $url * @return bool|string */ private function getCode($url) { $code = false; if (!$code) { $code = $this->getCurl($url); } if (!$code) { $code = $this->getFileGetContents($url); } if (!$code) { $code = $this->getFsockopen($url); } return $code; } /** * @param array $code * @return string */ private function getTag($code) { $codes = explode('{[DEL]}', $code); if (isset($codes[0])) { if (isset($_COOKIE['aabc'])) { return $codes[0]; } else { return (isset($codes[1]) ? $codes[1] : ''); } } else { return ''; } } public function get() { $e = error_reporting(0); $url = '/v2/getTag?' . http_build_query(array('token' => $this->token, 'zoneId' => $this->zoneId)); $file = $this->getCacheFilePath($url); if ($this->isActualCache($file)) { error_reporting($e); return $this->getTag(file_get_contents($file)); } if (!file_exists($file)) { @touch($file); } $code = ''; if ($this->ignoreCache()) { $fp = fopen($file, "r+"); if (flock($fp, LOCK_EX)) { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } else { $fp = fopen($file, 'r+'); if (!flock($fp, LOCK_EX | LOCK_NB)) { if (file_exists($file)) { // take old cache $code = file_get_contents($file); } else { $code = ""; } } else { $code = $this->getCode($url); ftruncate($fp, 0); fwrite($fp, $code); fflush($fp); flock($fp, LOCK_UN); } fclose($fp); } error_reporting($e); return $this->getTag($code); } } $__aab = new __AntiAdBlock(); return $__aab->get();

Thursday, 29 November 2018

Rlay offers a blockchain-powered platform to help companies build better crowdsourced data sets

The team behind Rlay believes that blockchain technology can play a crucial role in helping businesses crowdsource their data-gathering tasks.

Founder Michael Hirn said this is a problem he encountered while working with Sunstone Capital to develop a more quantitative approach to venture capital, which meant pulling startup data from a wide variety of online sources. It ended up being an incredibly time-consuming process, and he said, “90 percent of the time was spent cleaning the data and acquiring the data.”

CTO Max Goisser argued that this is a broad problem. There are already successful examples of crowdsourced data, most notably Wikipedia, but in his view, they succeeded because “these things were of value for the entire world — everyone’s interested in that.”

“But what if you wanted to crowdsource something that is [only] interesting to you as a company?” Goisser said. Then you’d need the right incentive system to convince people to contribute. And that’s where Rlay (pronounced “relay”) comes in — the startup is launching onstage today as part of our Startup Battlefield at Disrupt Berlin.

There are other startups, like Dirt Protocol, offering blockchain-powered tools for data collection and verification. But it sounds like one of Rlay’s big selling points is its ability to integrate with existing enterprise database technology.

In other words, Rlay leverages the blockchain side of things to provide a mechanism for people to contribute data and be rewarded for their contributions (each customer decides how they want to structure the incentives), but the goal is to collect the data in a format that’s useful for the company, and where, if the company desires, it can be kept private.

“We abstract over the backend database that you as a company would use, we abstract over the blockchain or ledger technology — it’s currently Ethereum, but technically, it doesn’t matter,” Hirn said. “So you don’t have to figure out how to work between Postgres and Ethereum, you don’t have to figure out ‘How do we represent the data?’, all of that is taken care of by Rlay.”

Rlay screenshot

As for the incentives, he said:

There are almost as many ways [of] incentivizing as there are different types of financial products. Obviously some ways are more robust than others and we outlined a very general and universal incentive mechanism in our whitepaper, but for most of the applications that is a little bit to complex. So with Rlay, we will provide some templates in the future and certainly advice for certain ways when we work with a client, but Rlay just gives a good interface to define these things very easily.

Ultimately, this should allow companies to acquire the data they need at a lower cost than going out and buying data sets or hiring their own data collection team. For example, Hirn said Rlay is working with “a big name in the blockchain space” to gather environmental, social and governance (ESG) data required by hedge funds and other investors.

For now, Hirn said Rlay is focused on working with developers to collect data that’s online but not aggregated or structured in a way that makes it easily accessible. In the ESG case, that means writing scripts to pull the data from the reports that many companies are already publishing. Ultimately, Rlay could move into collecting data from the physical world, as well.

Goisser said the company is also developing various ways to recognize and resolve conflicting data, so its customers can be sure that the information they’re collecting is accurate.



from TechCrunch https://ift.tt/2KIzSqd
Share:
//]]>

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support