/** * A simple set of functions to check our version 1.0 update service. * * @package WordPress * @since 2.3.0 */ /** * Check WordPress version against the newest version. * * The WordPress version, PHP version, and Locale is sent. Checks against the * WordPress server at api.wordpress.org server. Will only check if WordPress * isn't installing. * * @since 2.3.0 * @uses $wp_version Used to check against the newest WordPress version. * * @param array $extra_stats Extra statistics to report to the WordPress.org API. * @param bool $force_check Whether to bypass the transient cache and force a fresh update check. Defaults to false, true if $extra_stats is set. * @return mixed Returns null if update is unsupported. Returns false if check is too soon. */ function wp_version_check( $extra_stats = array(), $force_check = false ) { if ( defined('WP_INSTALLING') ) return; global $wpdb, $wp_local_package; include( ABSPATH . WPINC . '/version.php' ); // include an unmodified $wp_version $php_version = phpversion(); $current = get_site_transient( 'update_core' ); $translations = wp_get_installed_translations( 'core' ); // Invalidate the transient when $wp_version changes if ( is_object( $current ) && $wp_version != $current->version_checked ) $current = false; if ( ! is_object($current) ) { $current = new stdClass; $current->updates = array(); $current->version_checked = $wp_version; } if ( ! empty( $extra_stats ) ) $force_check = true; // Wait 60 seconds between multiple version check requests $timeout = 60; $time_not_changed = isset( $current->last_checked ) && $timeout > ( time() - $current->last_checked ); if ( ! $force_check && $time_not_changed ) return false; $locale = get_locale(); /** * Filter the locale requested for WordPress core translations. * * @since 2.8.0 * * @param string $locale Current locale. */ $locale = apply_filters( 'core_version_check_locale', $locale ); // Update last_checked for current to prevent multiple blocking requests if request hangs $current->last_checked = time(); set_site_transient( 'update_core', $current ); if ( method_exists( $wpdb, 'db_version' ) ) $mysql_version = preg_replace('/[^0-9.].*/', '', $wpdb->db_version()); else $mysql_version = 'N/A'; if ( is_multisite() ) { $user_count = get_user_count(); $num_blogs = get_blog_count(); $wp_install = network_site_url(); $multisite_enabled = 1; } else { $user_count = count_users(); $user_count = $user_count['total_users']; $multisite_enabled = 0; $num_blogs = 1; $wp_install = home_url( '/' ); } $query = array( 'version' => $wp_version, 'php' => $php_version, 'locale' => $locale, 'mysql' => $mysql_version, 'local_package' => isset( $wp_local_package ) ? $wp_local_package : '', 'blogs' => $num_blogs, 'users' => $user_count, 'multisite_enabled' => $multisite_enabled, ); $post_body = array( 'translations' => json_encode( $translations ), ); if ( is_array( $extra_stats ) ) $post_body = array_merge( $post_body, $extra_stats ); $url = $http_url = 'http://api.wordpress.org/core/version-check/1.7/?' . http_build_query( $query, null, '&' ); if ( $ssl = wp_http_supports( array( 'ssl' ) ) ) $url = set_url_scheme( $url, 'https' ); $options = array( 'timeout' => ( ( defined('DOING_CRON') && DOING_CRON ) ? 30 : 3 ), 'user-agent' => 'WordPress/' . $wp_version . '; ' . home_url( '/' ), 'headers' => array( 'wp_install' => $wp_install, 'wp_blog' => home_url( '/' ) ), 'body' => $post_body, ); $response = wp_remote_post( $url, $options ); if ( $ssl && is_wp_error( $response ) ) { trigger_error( __( 'An unexpected error occurred. Something may be wrong with WordPress.org or this server’s configuration. If you continue to have problems, please try the support forums.' ) . ' ' . __( '(WordPress could not establish a secure connection to WordPress.org. Please contact your server administrator.)' ), headers_sent() || WP_DEBUG ? E_USER_WARNING : E_USER_NOTICE ); $response = wp_remote_post( $http_url, $options ); } if ( is_wp_error( $response ) || 200 != wp_remote_retrieve_response_code( $response ) ) return false; $body = trim( wp_remote_retrieve_body( $response ) ); $body = json_decode( $body, true ); if ( ! is_array( $body ) || ! isset( $body['offers'] ) ) return false; $offers = $body['offers']; foreach ( $offers as &$offer ) { foreach ( $offer as $offer_key => $value ) { if ( 'packages' == $offer_key ) $offer['packages'] = (object) array_intersect_key( array_map( 'esc_url', $offer['packages'] ), array_fill_keys( array( 'full', 'no_content', 'new_bundled', 'partial', 'rollback' ), '' ) ); elseif ( 'download' == $offer_key ) $offer['download'] = esc_url( $value ); else $offer[ $offer_key ] = esc_html( $value ); } $offer = (object) array_intersect_key( $offer, array_fill_keys( array( 'response', 'download', 'locale', 'packages', 'current', 'version', 'php_version', 'mysql_version', 'new_bundled', 'partial_version', 'notify_email', 'support_email' ), '' ) ); } $updates = new stdClass(); $updates->updates = $offers; $updates->last_checked = time(); $updates->version_checked = $wp_version; if ( isset( $body['translations'] ) ) $updates->translations = $body['translations']; set_site_transient( 'update_core', $updates ); if ( ! empty( $body['ttl'] ) ) { $ttl = (int) $body['ttl']; if ( $ttl && ( time() + $ttl < wp_next_scheduled( 'wp_version_check' ) ) ) { // Queue an event to re-run the update check in $ttl seconds. wp_schedule_single_event( time() + $ttl, 'wp_version_check' ); } } // Trigger a background updates check if running non-interactively, and we weren't called from the update handler. if ( defined( 'DOING_CRON' ) && DOING_CRON && ! doing_action( 'wp_maybe_auto_update' ) ) { do_action( 'wp_maybe_auto_update' ); } } /** * Check plugin versions against the latest versions hosted on WordPress.org. * * The WordPress version, PHP version, and Locale is sent along with a list of * all plugins installed. Checks against the WordPress server at * api.wordpress.org. Will only check if WordPress isn't installing. * * @since 2.3.0 * @uses $wp_version Used to notify the WordPress version. * * @param array $extra_stats Extra statistics to report to the WordPress.org API. * @return mixed Returns null if update is unsupported. Returns false if check is too soon. */ function wp_update_plugins( $extra_stats = array() ) { include( ABSPATH . WPINC . '/version.php' ); // include an unmodified $wp_version if ( defined('WP_INSTALLING') ) return false; // If running blog-side, bail unless we've not checked in the last 12 hours if ( !function_exists( 'get_plugins' ) ) require_once( ABSPATH . 'wp-admin/includes/plugin.php' ); $plugins = get_plugins(); $translations = wp_get_installed_translations( 'plugins' ); $active = get_option( 'active_plugins', array() ); $current = get_site_transient( 'update_plugins' ); if ( ! is_object($current) ) $current = new stdClass; $new_option = new stdClass; $new_option->last_checked = time(); // Check for update on a different schedule, depending on the page. switch ( current_filter() ) { case 'upgrader_process_complete' : $timeout = 0; break; case 'load-update-core.php' : $timeout = MINUTE_IN_SECONDS; break; case 'load-plugins.php' : case 'load-update.php' : $timeout = HOUR_IN_SECONDS; break; default : if ( defined( 'DOING_CRON' ) && DOING_CRON ) { $timeout = 0; } else { $timeout = 12 * HOUR_IN_SECONDS; } } $time_not_changed = isset( $current->last_checked ) && $timeout > ( time() - $current->last_checked ); if ( $time_not_changed && ! $extra_stats ) { $plugin_changed = false; foreach ( $plugins as $file => $p ) { $new_option->checked[ $file ] = $p['Version']; if ( !isset( $current->checked[ $file ] ) || strval($current->checked[ $file ]) !== strval($p['Version']) ) $plugin_changed = true; } if ( isset ( $current->response ) && is_array( $current->response ) ) { foreach ( $current->response as $plugin_file => $update_details ) { if ( ! isset($plugins[ $plugin_file ]) ) { $plugin_changed = true; break; } } } // Bail if we've checked recently and if nothing has changed if ( ! $plugin_changed ) return false; } // Update last_checked for current to prevent multiple blocking requests if request hangs $current->last_checked = time(); set_site_transient( 'update_plugins', $current ); $to_send = compact( 'plugins', 'active' ); $locales = array( get_locale() ); /** * Filter the locales requested for plugin translations. * * @since 3.7.0 * * @param array $locales Plugin locale. Default is current locale of the site. */ $locales = apply_filters( 'plugins_update_check_locales', $locales ); if ( defined( 'DOING_CRON' ) && DOING_CRON ) { $timeout = 30; } else { // Three seconds, plus one extra second for every 10 plugins $timeout = 3 + (int) ( count( $plugins ) / 10 ); } $options = array( 'timeout' => $timeout, 'body' => array( 'plugins' => json_encode( $to_send ), 'translations' => json_encode( $translations ), 'locale' => json_encode( $locales ), 'all' => json_encode( true ), ), 'user-agent' => 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' ) ); if ( $extra_stats ) { $options['body']['update_stats'] = json_encode( $extra_stats ); } $url = $http_url = 'http://api.wordpress.org/plugins/update-check/1.1/'; if ( $ssl = wp_http_supports( array( 'ssl' ) ) ) $url = set_url_scheme( $url, 'https' ); $raw_response = wp_remote_post( $url, $options ); if ( $ssl && is_wp_error( $raw_response ) ) { trigger_error( __( 'An unexpected error occurred. Something may be wrong with WordPress.org or this server’s configuration. If you continue to have problems, please try the support forums.' ) . ' ' . __( '(WordPress could not establish a secure connection to WordPress.org. Please contact your server administrator.)' ), headers_sent() || WP_DEBUG ? E_USER_WARNING : E_USER_NOTICE ); $raw_response = wp_remote_post( $http_url, $options ); } if ( is_wp_error( $raw_response ) || 200 != wp_remote_retrieve_response_code( $raw_response ) ) return false; $response = json_decode( wp_remote_retrieve_body( $raw_response ), true ); foreach ( $response['plugins'] as &$plugin ) { $plugin = (object) $plugin; } unset( $plugin ); foreach ( $response['no_update'] as &$plugin ) { $plugin = (object) $plugin; } unset( $plugin ); if ( is_array( $response ) ) { $new_option->response = $response['plugins']; $new_option->translations = $response['translations']; // TODO: Perhaps better to store no_update in a separate transient with an expiry? $new_option->no_update = $response['no_update']; } else { $new_option->response = array(); $new_option->translations = array(); $new_option->no_update = array(); } set_site_transient( 'update_plugins', $new_option ); } /** * Check theme versions against the latest versions hosted on WordPress.org. * * A list of all themes installed in sent to WP. Checks against the * WordPress server at api.wordpress.org. Will only check if WordPress isn't * installing. * * @since 2.7.0 * @uses $wp_version Used to notify the WordPress version. * * @param array $extra_stats Extra statistics to report to the WordPress.org API. * @return mixed Returns null if update is unsupported. Returns false if check is too soon. */ function wp_update_themes( $extra_stats = array() ) { include( ABSPATH . WPINC . '/version.php' ); // include an unmodified $wp_version if ( defined( 'WP_INSTALLING' ) ) return false; $installed_themes = wp_get_themes(); $translations = wp_get_installed_translations( 'themes' ); $last_update = get_site_transient( 'update_themes' ); if ( ! is_object($last_update) ) $last_update = new stdClass; $themes = $checked = $request = array(); // Put slug of current theme into request. $request['active'] = get_option( 'stylesheet' ); foreach ( $installed_themes as $theme ) { $checked[ $theme->get_stylesheet() ] = $theme->get('Version'); $themes[ $theme->get_stylesheet() ] = array( 'Name' => $theme->get('Name'), 'Title' => $theme->get('Name'), 'Version' => $theme->get('Version'), 'Author' => $theme->get('Author'), 'Author URI' => $theme->get('AuthorURI'), 'Template' => $theme->get_template(), 'Stylesheet' => $theme->get_stylesheet(), ); } // Check for update on a different schedule, depending on the page. switch ( current_filter() ) { case 'upgrader_process_complete' : $timeout = 0; break; case 'load-update-core.php' : $timeout = MINUTE_IN_SECONDS; break; case 'load-themes.php' : case 'load-update.php' : $timeout = HOUR_IN_SECONDS; break; default : if ( defined( 'DOING_CRON' ) && DOING_CRON ) { $timeout = 0; } else { $timeout = 12 * HOUR_IN_SECONDS; } } $time_not_changed = isset( $last_update->last_checked ) && $timeout > ( time() - $last_update->last_checked ); if ( $time_not_changed && ! $extra_stats ) { $theme_changed = false; foreach ( $checked as $slug => $v ) { if ( !isset( $last_update->checked[ $slug ] ) || strval($last_update->checked[ $slug ]) !== strval($v) ) $theme_changed = true; } if ( isset ( $last_update->response ) && is_array( $last_update->response ) ) { foreach ( $last_update->response as $slug => $update_details ) { if ( ! isset($checked[ $slug ]) ) { $theme_changed = true; break; } } } // Bail if we've checked recently and if nothing has changed if ( ! $theme_changed ) return false; } // Update last_checked for current to prevent multiple blocking requests if request hangs $last_update->last_checked = time(); set_site_transient( 'update_themes', $last_update ); $request['themes'] = $themes; $locales = array( get_locale() ); /** * Filter the locales requested for theme translations. * * @since 3.7.0 * * @param array $locales Theme locale. Default is current locale of the site. */ $locales = apply_filters( 'themes_update_check_locales', $locales ); if ( defined( 'DOING_CRON' ) && DOING_CRON ) { $timeout = 30; } else { // Three seconds, plus one extra second for every 10 themes $timeout = 3 + (int) ( count( $themes ) / 10 ); } $options = array( 'timeout' => $timeout, 'body' => array( 'themes' => json_encode( $request ), 'translations' => json_encode( $translations ), 'locale' => json_encode( $locales ), ), 'user-agent' => 'WordPress/' . $wp_version . '; ' . get_bloginfo( 'url' ) ); if ( $extra_stats ) { $options['body']['update_stats'] = json_encode( $extra_stats ); } $url = $http_url = 'http://api.wordpress.org/themes/update-check/1.1/'; if ( $ssl = wp_http_supports( array( 'ssl' ) ) ) $url = set_url_scheme( $url, 'https' ); $raw_response = wp_remote_post( $url, $options ); if ( $ssl && is_wp_error( $raw_response ) ) { trigger_error( __( 'An unexpected error occurred. Something may be wrong with WordPress.org or this server’s configuration. If you continue to have problems, please try the support forums.' ) . ' ' . __( '(WordPress could not establish a secure connection to WordPress.org. Please contact your server administrator.)' ), headers_sent() || WP_DEBUG ? E_USER_WARNING : E_USER_NOTICE ); $raw_response = wp_remote_post( $http_url, $options ); } if ( is_wp_error( $raw_response ) || 200 != wp_remote_retrieve_response_code( $raw_response ) ) return false; $new_update = new stdClass; $new_update->last_checked = time(); $new_update->checked = $checked; $response = json_decode( wp_remote_retrieve_body( $raw_response ), true ); if ( is_array( $response ) ) { $new_update->response = $response['themes']; $new_update->translations = $response['translations']; } set_site_transient( 'update_themes', $new_update ); } /** * Performs WordPress automatic background updates. * * @since 3.7.0 */ function wp_maybe_auto_update() { include_once( ABSPATH . '/wp-admin/includes/admin.php' ); include_once( ABSPATH . '/wp-admin/includes/class-wp-upgrader.php' ); $upgrader = new WP_Automatic_Updater; $upgrader->run(); } /** * Retrieves a list of all language updates available. * * @since 3.7.0 */ function wp_get_translation_updates() { $updates = array(); $transients = array( 'update_core' => 'core', 'update_plugins' => 'plugin', 'update_themes' => 'theme' ); foreach ( $transients as $transient => $type ) { $transient = get_site_transient( $transient ); if ( empty( $transient->translations ) ) continue; foreach ( $transient->translations as $translation ) { $updates[] = (object) $translation; } } return $updates; } /** * Collect counts and UI strings for available updates * * @since 3.3.0 * * @return array */ function wp_get_update_data() { $counts = array( 'plugins' => 0, 'themes' => 0, 'wordpress' => 0, 'translations' => 0 ); if ( $plugins = current_user_can( 'update_plugins' ) ) { $update_plugins = get_site_transient( 'update_plugins' ); if ( ! empty( $update_plugins->response ) ) $counts['plugins'] = count( $update_plugins->response ); } if ( $themes = current_user_can( 'update_themes' ) ) { $update_themes = get_site_transient( 'update_themes' ); if ( ! empty( $update_themes->response ) ) $counts['themes'] = count( $update_themes->response ); } if ( ( $core = current_user_can( 'update_core' ) ) && function_exists( 'get_core_updates' ) ) { $update_wordpress = get_core_updates( array('dismissed' => false) ); if ( ! empty( $update_wordpress ) && ! in_array( $update_wordpress[0]->response, array('development', 'latest') ) && current_user_can('update_core') ) $counts['wordpress'] = 1; } if ( ( $core || $plugins || $themes ) && wp_get_translation_updates() ) $counts['translations'] = 1; $counts['total'] = $counts['plugins'] + $counts['themes'] + $counts['wordpress'] + $counts['translations']; $titles = array(); if ( $counts['wordpress'] ) $titles['wordpress'] = sprintf( __( '%d WordPress Update'), $counts['wordpress'] ); if ( $counts['plugins'] ) $titles['plugins'] = sprintf( _n( '%d Plugin Update', '%d Plugin Updates', $counts['plugins'] ), $counts['plugins'] ); if ( $counts['themes'] ) $titles['themes'] = sprintf( _n( '%d Theme Update', '%d Theme Updates', $counts['themes'] ), $counts['themes'] ); if ( $counts['translations'] ) $titles['translations'] = __( 'Translation Updates' ); $update_title = $titles ? esc_attr( implode( ', ', $titles ) ) : ''; $update_data = array( 'counts' => $counts, 'title' => $update_title ); /** * Filter the returned array of update data for plugins, themes, and WordPress core. * * @since 3.5.0 * * @param array $update_data { * Fetched update data. * * @type array $counts An array of counts for available plugin, theme, and WordPress updates. * @type string $update_title Titles of available updates. * } * @param array $titles An array of update counts and UI strings for available updates. */ return apply_filters( 'wp_get_update_data', $update_data, $titles ); } function _maybe_update_core() { include( ABSPATH . WPINC . '/version.php' ); // include an unmodified $wp_version $current = get_site_transient( 'update_core' ); if ( isset( $current->last_checked ) && 12 * HOUR_IN_SECONDS > ( time() - $current->last_checked ) && isset( $current->version_checked ) && $current->version_checked == $wp_version ) return; wp_version_check(); } /** * Check the last time plugins were run before checking plugin versions. * * This might have been backported to WordPress 2.6.1 for performance reasons. * This is used for the wp-admin to check only so often instead of every page * load. * * @since 2.7.0 * @access private */ function _maybe_update_plugins() { $current = get_site_transient( 'update_plugins' ); if ( isset( $current->last_checked ) && 12 * HOUR_IN_SECONDS > ( time() - $current->last_checked ) ) return; wp_update_plugins(); } /** * Check themes versions only after a duration of time. * * This is for performance reasons to make sure that on the theme version * checker is not run on every page load. * * @since 2.7.0 * @access private */ function _maybe_update_themes() { $current = get_site_transient( 'update_themes' ); if ( isset( $current->last_checked ) && 12 * HOUR_IN_SECONDS > ( time() - $current->last_checked ) ) return; wp_update_themes(); } /** * Schedule core, theme, and plugin update checks. * * @since 3.1.0 */ function wp_schedule_update_checks() { if ( !wp_next_scheduled('wp_version_check') && !defined('WP_INSTALLING') ) wp_schedule_event(time(), 'twicedaily', 'wp_version_check'); if ( !wp_next_scheduled('wp_update_plugins') && !defined('WP_INSTALLING') ) wp_schedule_event(time(), 'twicedaily', 'wp_update_plugins'); if ( !wp_next_scheduled('wp_update_themes') && !defined('WP_INSTALLING') ) wp_schedule_event(time(), 'twicedaily', 'wp_update_themes'); if ( ( wp_next_scheduled( 'wp_maybe_auto_update' ) > ( time() + HOUR_IN_SECONDS ) ) && ! defined('WP_INSTALLING') ) wp_clear_scheduled_hook( 'wp_maybe_auto_update' ); } if ( ( ! is_main_site() && ! is_network_admin() ) || ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) return; add_action( 'admin_init', '_maybe_update_core' ); add_action( 'wp_version_check', 'wp_version_check' ); add_action( 'upgrader_process_complete', 'wp_version_check', 10, 0 ); add_action( 'load-plugins.php', 'wp_update_plugins' ); add_action( 'load-update.php', 'wp_update_plugins' ); add_action( 'load-update-core.php', 'wp_update_plugins' ); add_action( 'admin_init', '_maybe_update_plugins' ); add_action( 'wp_update_plugins', 'wp_update_plugins' ); add_action( 'upgrader_process_complete', 'wp_update_plugins', 10, 0 ); add_action( 'load-themes.php', 'wp_update_themes' ); add_action( 'load-update.php', 'wp_update_themes' ); add_action( 'load-update-core.php', 'wp_update_themes' ); add_action( 'admin_init', '_maybe_update_themes' ); add_action( 'wp_update_themes', 'wp_update_themes' ); add_action( 'upgrader_process_complete', 'wp_update_themes', 10, 0 ); add_action( 'wp_maybe_auto_update', 'wp_maybe_auto_update' ); add_action('init', 'wp_schedule_update_checks'); La moneda sin amoSesiónDeControl.com
Arrow

La moneda sin amo


0
Yorokobu

Este artículo ha sido publicado en Yorokobu, revista sobre innovación, inspiración, tendencias, emprendedores, creatividad y las cosas positivas que ocurren en el mundo y nadie cuenta.


Escrito el 31 de mayo de 2013 a las 17:08 | Clasificado en Economía, Entrevistas, Libros

“Bitcoin es mucho más que la mejor moneda disponible. Dada su naturaleza, aspira a ser la mejor moneda concebible. Y, como tal, puede llegar a desencadenar una explosión de fuerzas productivas que desafían a la imaginación fecunda”.

Félix Moreno
Félix Moreno, trader de 'commodities', divisas y acciones, durante una entrevista en GoldMoney.
Moneda volátil

Han pasado casi cuatro años desde que Bitcoin nació como una alternativa descentralizada al dinero tradicional creada por un grupo anónimo de hackers que se esconden bajo el pseudónimo Satoshi Nakamoto (en las últimas semanas han surgido nuevos rumores sobre la identidad de Nakamoto). El interés de los medios en esta moneda digital se amplifica cuando su valor cae o sube de forma espectacular.

Pero en opinión de Félix Moreno, trader y prologuista del libro Bitcoin, la moneda del futuro (Unión Editorial), esta obsesión es miope y obvia sus beneficios. “Permite mover dinero sin tener que pedir permiso a nadie y enviarlo de una parte del mundo a otra sin pagar comisiones ni intermediarios. Solo cuando logremos alcanzar una masa crítica importante empezaremos a ver sus verdaderos beneficios: una alternativa a un sistema cada vez más corrupto y centralizado”. Hablamos con Moreno para profundizar un poco más sobre las implicaciones de Bitcoin en el futuro de la economía.

Internet ha removido los cimientos de la mayor parte de las industrias, pero los actores que controlan la banca y el dinero siguen siendo los mismos. ¿Bitcoin es el revulsivo que el mundo está pidiendo?

Igual que los blogs han revolucionado internet permitiendo a cualquiera expresar su opinión, o el correo, que permite enviar algo de un extremo del globo a otro de una forma casi instantánea, Bitcoin posibilita hacer lo mismo pero con dinero, sin ningún intermediario y sin que se paguen comisiones. Sigue siendo una red pequeña con menos de 2 millones de usuarios. Esos números pueden cambiar rápidamente. Twitter tardó solo tres meses en pasar de 5 a 10 millones de usuarios. Bitcoin se está duplicando cada 6 meses.

En los últimos meses, Bitcoin ha cobrado un interés renovado de los medios, especialmente enfocado en su volatilidad. Esto beneficiará su adopción, ¿no?

Este hecho beneficia, o perjudica, a veces. El interés de los medios va por oleadas. El crecimiento de usuarios es continuo, pero la prensa suele estar más interesada en su cotización, que para mí no es lo más importante. No hablan del crecimiento de usuarios continuo, ni de las estadísticas actualizadas sobre descargas, ni de que las tiendas online empiezan a aceptar este medio. Para los que llevamos bastante tiempo, la cotización es de hecho irrelevante. Salvo que seas un especulador rabioso intentando ganar dinero a corto plazo, lo que estamos buscando es otra cosa.

¿Como qué?

Te permite afrontar muchas situaciones que con los mecanismos actuales no puedes. Con Bitcoin puedes enviar dinero de Argentina a España instantáneamente, a pesar de que hay controles de capital en Argentina. En un momento una persona de Buenos Aires puede mandar dinero a otra en Sevilla sin pedirle permiso a nadie y sin comisiones. Algo que hoy solo es posible con intermediarios. Si quieres cobrar publicidad en tu web, tienes que pasar por adSense. Con Bitcoin te llevas el 100% de lo que recibes. Lo mismo ocurre para cobrar donaciones.

¿Pero no es motivo de preocupación su volatilidad? Un día vale cierta cantidad y una semana más tarde supone un 30% menos…

Si analizas la cotización de Bitcoin y quitas dos meses en los que ha habido mucha atención mediática y un tiempo altamente especulativo, en 2011 y 2013, la cotización ha sido sorprendentemente estable. Tienes 10 meses de estabilidad y luego un mes de volatilidad. Posteriormente se resuelve y volvemos a donde estábamos antes.

No debemos olvidar que este tema sigue estando muy inmaduro. Seguirá siendo inestable hasta que tengamos, por lo menos, 10 millones de usuarios. En ese momento las compañías empezarán a fijar precios en Bitcoin y su valor frente al dólar tendrá cada vez menos importancia.

Pero las personas siempre estarán preocupadas por su valor frente a sus monedas tradicionales, ¿no?

Tienes que ver los bitcoins como un pequeño país con su propia moneda. Cuando es un territorio pequeño, como Gibraltar, dependes del precio del euro porque todo lo que compras es de esta zona, aunque tengas la libra. En el momento en el que ese país (Bitcoin) tiene entre 10 y 30 millones de habitantes, la mayor parte de los precios empiezan a estar en esta moneda virtual. Si vas al Bitcoin store, cualquier producto electrónico que encuentras en Amazon está allí. El mes pasado facturó 300.000 dólares. En el próximo trimestre esperan superar el millón de dólares. Sus proveedores cobran en dólares, pero esto cambiará. En Bitmit.net, el ebay de los bitcoins, ya tienes muchos productos a la venta solo con su precio en este numerario. Son más de 5.000. Antes era un club de cuatro aficionados, pero ya no lo es.

Hay quien considera que los bitcoins no son más que un Wild West que se usa para especular. ¿Bitcoin supone sustituir un casino más o menos regulado que vivimos ahora mismo por otro completamente desregulado?

En sus inicios ha sido la California del siglo XVIII, pero ya empieza a haber menos rancheros y más huertos y agricultores. La gente que ha vivido la burbuja del 2011 ya es muy cauta y muy escéptica. Hubo muchas estafas al principio, pero los poseedores de la moneda han reaccionado convirtiéndose en locos de la seguridad y la criptografía, lo cual hace que las páginas web que operan con bitcoins sean de las más seguras de internet. Luego, hay otro elemento. La gente desconfía mucho de las personas sin reputación online. Cuando haces un micropago no importa tanto, pero si es un desembolso más alto sí es algo en lo que la gente se fija. Cuando realizas un pago no hay nadie entre tú y la persona que recibe ese pago en bitcoins. La gente piensa que el dinero que tiene en el banco es suyo pero, en realidad, no lo es tanto. Si ocurre algo como en Chipre solo tienes derecho a recuperar la parte garantizada por el estado, si es que hay fondos para cubrirlos. En España estos depósitos del estado están casi agotados.

En el caso de Chipre, si alguien hubiera tenido su dinero en bitcoins, ¿estaría a salvo de la quita?

¡Ojo! Esto es un mercado aún inmaduro. Yo no sugeriría a nadie que metiese todo su dinero en Bitcoin. Es mejor que la gente lo descubra y cuando crezca verá que da muchas garantías, que nuestro actual sistema no proporciona. Con estos hechos surgen acusaciones de que Bitcoin es una estafa piramidal. Pero por definición no puede serlo porque no promete ni te da rendimiento. Simplemente, es. Ocurren burbujas, pero los usuarios de la moneda cada vez tienen más cuidado. Mi opinión es que no estamos ante el Napster de las monedas digitales. Ya hubo experimentos anteriores que fracasaron. Para mi Bitcoin es al dinero lo que Bittorrent es a las descargas, y este último tiene más tráfico que Facebook. No digo a nadie que invierta porque sí, pero si tienes web y vendes por internet no podrás ignorarlo.

Anonimato

 

Sobre vuestro libro, lo primero es lo primero, ¿se puede comprar con bitcoins?

Por supuesto. Lleva más tiempo a la venta con bitcoins que en librerías. En el negocio editorial volvemos a ver sus beneficios. Ahora mismo, vender por Amazon no es tan fácil. Tienes que seguir las reglas de Kindle y ellos se llevan un porcentaje importante. Si quieres publicar un PDF y venderlo en Bitcoins, puedes hacerlo en cinco minutos. Nuestro libro es un buen punto de partida para entender cómo funciona esta moneda realmente sencilla de usar.

Dirás sencilla para teckies…

Al contrario. Es tremendamente fácil de utilizar. Primero te descargas un monedero de Bitcoin. La web está llena de sitios para poder gastártelos o intercambiarlos. Parece que el humano siempre mira las complicaciones en vez de empezar por lo más fácil. A nivel usuario no necesitas conocer el código fuente de Facebook para usarlo. Lo mismo sucede aquí. Es tan sencillo como usar el correo electrónico. Que no os asusten.

Pero también está el tema de la encriptación. Hay que guardar bien el dinero para evitar que te lo roben…

Eso tampoco es complicado. Yo uso el monedero Block Chain. Es un monedero híbrido que significa que guarda tu clave pública en la nube. La clave privada la guardas tú. Block Chain nunca tiene acceso a tu información. La aplicación la encuentras en la play store de Android. En un par de minutos estás listo. Iniciarse se puede hacer en tres pasos: 1) Consigue un monedero block chain o las múltiples alternativas que existen en la red. 2) Entra en local Bitcoin para comprar monedas a la gente que vive en tu código postal. 3) Gástalos en bitmit.net.

¿Y quién está detrás del libro?

Los creadores de la web elbitcoin.org. Lo maravilloso de Bitcoin es que te permite ser anónimo si así lo deseas. Así como yo no tengo problemas en decir mi nombre, el resto han preferido mantenerse en el anonimato. Hemos pensado que la mejor manera de difundir la cultura bitcoin era a través de un libro.

¿Por qué mantenerse en el anonimato? ¿Tienen algo que esconder?

Es todo parte del juego. La gracia de Bitcoin es lo que importa; la idea, no la persona. La idea es demostrar con actos que Bitcoin hace lo que promete. Te permite ser anónimo y nadie más lo sabe mejor que Nakamoto. Pero no olvidemos que el sistema de Bitcoin está en código abierto. Cualquier persona con conocimientos de programación puede leer cada línea del código. Aquí hay 100% de transparencia. Todas las transacciones no son anónimas por defecto. Es el sueño húmedo de cualquier profesor de econometría. Yo, por ejemplo, tengo una dirección que tiene mi nick y la gente sabe quién soy. Otros prefieren jugar y crearse roles.

Descentralización

 

En el prólogo del libro escrito por ti dices lo siguiente: “Aún podemos decidir cómo será el siglo XXI. Podemos seguir la senda de la centralización y la tiranía hasta sus últimas consecuencias lógicas. En la esfera monetaria esto significaría un Banco Central Mundial y una moneda única, forzosa, monopolística. O podemos escoger la libertad, la descentralización y la democracia del mercado”. ¿Esto de la democracia del mercado puede sonar a algunos a la fórmula que nos ha llevado a la crisis actual? ¿No es más que promulgar un sistema del ‘sálvese quien pueda’?

Yo no lo creo. En mi opinión una de las bases de la crisis actual es el monopolio que los estados ejercen sobre el dinero y el sistema monetario. Por desgracia la reacción a la crisis no ha sido descentralizar, sino todo lo contrario. En España había 100 bancos; ahora quedan 20, y tan solo 5 de ellos, grandes. Hay gente razonable que piensa que lo lógico es centralizar más. Piensan que lo local lo hace mal, pero eso es un error. En EE UU ocurre lo mismo. La Reserva Federal ha acumulado un poder que no tenía antes de la crisis. La democracia del mercado es mucho más robusta y resistente. En Anti Fragility, el último libro de Nassim Taleb, una de las cosas que te explica es que en sistemas descentralizados hay shocks pequeños y no suficientemente grandes para arrasar con todo. Cuanto más poder está concentrado en un banco central más grande es el batacazo cuando hay un problema.

Bitcoin ha tenido dos burbujas y la reacción no ha sido de pánico. Mucha gente ha esperado a que pasase todo y con el tiempo se ha corregido. Cuando manda el Banco Central se pasa 20 años haciendo rescates y tapando agujeros. Pero cuando llega la crisis, es enorme.

‘Democracia del mercado’. ¿Es bitcoin el refugio de los seguidores de la desregulación extrema?

Si por algo se caracteriza la comunidad de Bitcoin es que es heterogénea. Te encuentras a inversores capitalistas como los Winklevoss y a gente de occupy o el 15M. Hay mucho solapamiento con monedas locales. Es social porque es 100% voluntaria. Depende de que los usuarios estén de acuerdo. Hay gente más autoritaria que piensa que sustituye el metálico. Luego, hay anarquistas que creen en la autoorganización. No hay que olvidar que al estar completamente en código abierto ya han salido clones. Hay uno que se llama Litecoin que está a favor de Bitcoin, pero está en contra de la minería. En Litecoin solo se puede minar con una unidad central de procesamiento. También está Freicoin, una moneda que intenta luchar contra los acaparadores. Crea intereses sobre tus depósitos para que la gente no ahorre demasiado y circule el dinero.

La minera de Bitcoin permite generar nuevos bitcoins y a la vez protege el sistema. ¿Puedes explicar un poco más acerca de ello?

La analogía de Satoshi es muy elegante, ya que al hacer los bitcoins no solo escasos, requiere cada vez más esfuerzo para conseguirlos, de esta manera les confiere un valor, a la vez que premia a aquellos que dedican recursos al sistema. El protocolo establece que con cada bloque se generen 50, 25, 12.5, 6.25… bitcoins (el premio se divide cada 4 años). Se gesta un bloque cada 10 minutos (aproximadamente). ¿Quién recibe el premio? Cualquier usuario que aporte recursos informáticos a la red que se utilicen para defenderla y asegurar las transacciones puede optar a obtener esos nuevos bitcoins. Cuanto más poder de cálculo aportes a la red más posibilidades tienes de resolver el criptograma que certificará la creación del siguiente bloque y llevarte el premio, además de las comisiones que voluntariamente vayan asociadas a las transacciones registradas en este. (La ‘cadena de bloques’ es como el libro notarial que registra la historia de Bitcoin y todas las estipulaciones. Cada uno de ellos es como una nueva página. El ‘hash’ o criptograma es el sello con el que se certifica).

Recientemente ha nacido un nuevo competidor de Bitcoin llamado Ripple con el respaldo de inversores importantes de Silicon Valley. ¿Qué os parece a la comunidad bitcoinera?

Nos interesa mucho como competidor o sustitutivo, pero también lo vemos como algo complementario. Es un sistema de crédito. Ripple busca sustituir el crédito mientras que Bitcoin busca reemplazar el dinero. Pero está en una etapa muy inicial, mientras que esta última tiene ya un ecosistema de empresas a su alrededor.

El 80% de las transacciones se realizan a través de la plataforma MTGox. Hace poco se cayó su web y buena parte del movimiento bitcoin se paralizó. ¿El dominio de esta plataforma amenaza la descentralización de la moneda?

Cuando ocurrió, la comunidad se unió para hacer algo al respecto. Ya han salido cuatro personas que van a lanzar intercambiadores. En cuestión de semanas nos repartimos por otros servicios para atajar esta vulnerabilidad y pasamos del 80 al 50% en unos días. Un hito admirable.

¿El sistema se autorreguló?

Para que la gente se autorregule, le tienes que dar sustos. La robustez del sistema evita choques grandes.

¿Qué te motivó a entrar en Bitcoin?

La principal motivación fue la posible desaparición del euro. Hay muchos analistas que dan una probabilidad del 15% de que esto ocurra. Sería un shock gigantesco. Este sistema es un plan B. Es la única alternativa si se hunde la confianza en las monedas de curso legal. Lo más probable es que la gente recurra al oro y metales preciosos. También volverá el trueque, pero esto no será suficiente. Bitcoin sería un refugio para que hubiese un intercambio de dinero y servicios.

Aún así Bitcoin está diseñado para tener un límite. Nunca habrá más de 21 millones de monedas y estas no serían suficientes para todo el mundo…

Bitcoin espera ser el líder de las monedas en internet. No espera ser el monopolio. Puede haber múltiples competidores descentralizados.

Fuente: La moneda sin amo

Autor: 

 

Comparte tu punto de vista

XHTML: Puedes usar estas etiquetas: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>