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();

Friday, 31 July 2020

How an EU tax could slash climate emissions far beyond Europe

Last week, European Union leaders approved the most aggressive climate-change plan in history.

The eye-catching part was the $600 billion dedicated to green measures, spread across a massive economic recovery package and the seven-year EU budget approved in concert. All of it will be directed toward achieving the previously announced European Green Deal goal of becoming “climate neutral” by midcentury.

But the sweeping deal also set the timetable for implementing a policy that could prove far more powerful—and controversial—than the funding, by providing a way to push down emissions far beyond Europe’s borders.

The text of the $2 trillion budget agreement calls for introducing a “carbon border adjustment mechanism” by 2023.

In the simplest form it would impose a tax on imported goods produced in ways that emit more greenhouse-gas emissions than are allowed by EU manufacturers. It might apply to a variety of carbon-intensive industries like cement, glass, steel, fertilizer, and fossil fuels.

“In the last 30 years, we’ve approached climate negotiations through the prism of voluntary standards and carrots,” says Nikos Tsafos, a senior fellow at the Center for Strategic and International Studies. “This is the first time we’re really adding sticks to the picture.”

“Breaking the logjam”

The logic for a carbon border tax is simple. Without it, the EU could claim emissions reductions even as production of its goods simply shifts to other parts of the world, where they can be produced in cheaper and dirtier ways that reduce any global climate gains. A carbon border tax also protects European manufacturers from cheaper products flowing in from nations with lower climate standards.

The bigger hope is that it could also compel companies outside the EU that want to sell their goods in these large markets to take more aggressive steps to cut their own emissions, says David Victor, co-director of the Laboratory on International Law and Regulation at the University of California, San Diego. In addition, it might lead to bilateral or trilateral trade deals, where major countries agree to abide by similar sets of climate rules for the sake of trading on equal terms with European nations, he says.

Victor argues that these sorts of binding deals could achieve far greater climate progress than international treaties like the Paris agreement, where any targets or rules must be loose enough to get nearly 200 nations onboard. If the EU brings along China, India, Japan, or the US into trade deals under such rules, it would pull together unified trading blocs representing giant shares of the world’s total emissions. And the sheer size of those markets could encourage still other nations to step up their climate efforts.

“That’s exactly the kind of strategy that, I think, will end up breaking the logjam on climate,” Victor says.

The idea is already emerging elsewhere as well. Notably, the US Democratic Party platform calls for imposing a “carbon adjustment fee”—no one wants to call it a tax—on products from countries that aren’t meeting their commitments under the Paris agreement. The US and EU together produce more than 20% of the world’s greenhouse-gas emissions.

But Tsafos says it’s far from clear whether a carbon border tax would turn the EU into a low-carbon island isolated by its own policies or “the center of an ever-expanding nexus of low-carbon states.” It could also create something in between: a global market fragmented between a handful of low-carbon nations and a bunch of high-carbon ones that simply carry on trading among each other.

Economic imperialism

Where it lands may depend on how the EU designs the tax, and where it sets the fee. But this all assumes the EU can successfully implement the policy at all. The detailed negotiations won’t begin until next year, and they will require several layers of approvals. And the effort is sure to face a series of legal, technical, and social justice challenges.

Among them: A number of non-EU nations will likely contest the proposal within the World Trade Organization. It will also require a massive effort to figure out ways to reliably assess and verify the carbon footprints of various products from a variety of companies in different nations. And some argue that it’s fundamentally unfair for Europe, which produced nearly a quarter of the world’s cumulative historical emissions, to penalize and impose its will on poor nations that have polluted far less over time, still have considerably lower emissions on a per capita basis, and are much earlier in their economic development.

“Although reasonable at face value, unilateral carbon border adjustments merely represent the latest form of economic imperialism,” argued Arvind Ravikumar, who leads the sustainable energy development lab at Harrisburg University of Science and Technology, in a MIT Technology Review op-ed earlier this week. “The decision to impose such taxes on developing countries reflects the colonial practice of wealth transfer from the developing to the developed world,” he added.

Others say the EU could potentially balance out inequities through various means, such as delaying or reducing the tax for certain nations, calculating it on the basis of historical emissions, or offsetting the costs with other investments designed to help poor nations move away from fossil fuels.

Ravikumar agrees there are ways to make carbon border adjustments fairer, but he says it could never be truly “equitable or just” if it’s unilaterally imposed by the EU. “I think these discussions around equitable policy design conveniently ignore the fundamental justice issue,” he wrote in a Twitter message.

The problem is that aggressive climate actions by any one nation, or even one major region like the EU, can never affect total emissions much on their own. Climate change is a global problem that we can’t really address until essentially all nations are taking serious steps.

So one way or another, Victor says, countries do need to find ways of spreading practices and policies to drive down global emissions at the scale and pace required by the escalating dangers.



from MIT Technology Review https://ift.tt/33aOUQT
Share:
//]]>

0 comments:

Post a Comment

Blog Archive

Definition List

Unordered List

Support