Implantando la moneda Bitcoin en tu negocio

18-12-2015
 
Bitcoin Accepted Here

Bitcoin Accepted Here

Bitcoin es una moneda totalmente digital que funciona sobre la red bitcoin. Los Bitcoins se guardan en un monedero vitual(Wallet) que no deja de ser un fichero dentro de tu ordenador o teléfono. Para las transacciones(Cobrar o Pagar) se hace a través de la red Bitcoin donde se traspasan los Bitcoins de igual a igual de forma segura.

Todo el software de la red Bitcoin es opensource y nadie tiene un control sobre la red, todas las personas que conforman la red garantizan la neutralidad(nadie tiene control sobre ella). La seguridad esta garantizada gracias al sistema criptográfico que se utiliza para firmar las transacciones, y a los ‘Miners’, servidores que validan todas las transacciones(Una transacción no se considera segura hasta que almenos seis Miners no la han validado). Existe además una contabilidad anónima de todas las transacciones de la red.

Ventajas de usar los bitcoins

– Protección contra el fraude. Cuando cobras con tarjeta estas expuesto a que ese cobro sea fraudulento, aquí no puede pasar eso.
– Es muy fácil solicitar pagos o cobrar a través de mòbil o otros dispositivos.
– Es totalmente anónimo, a no ser que una de las dos partes lo comunique.
– No se necesitan bancos ni intermediarios. Solo la red de BitCoins.
– Es una moneda que se puede utilizar a nivel mundial.

Desventajas de usar los bitcoins

– Es un sistema de pago que todavía esta en pruebas, aunque es aceptado en muchos sitios.
– Aunque las transacciones son inmediatas, se tarda unos diez minutos en que los ‘Miners’ confirmen la transacciones. Para pagos grandes, es importante esperar a que esto suceda.
– Técnicamente, la gestión de los monederos(‘wallets’) y la seguridad de los mismos es compleja. Es recomendable usar un servicio externo especializado, existen muchos.
– Entender las transacciones cuesta lo suyo.

Como integrar los bitcoins en Java con bitcoinj

Para integrar el uso de bitcoins en nuestro software disponemos de la librería Java Bitcoinj disponible en Github https://bitcoinj.github.io. Es un simple Jar y nos lo podemos descargar de la siguiente dirección https://bitcoinj.github.io/#getting-started.

Para testear podemos hacer uso de ‘Testnet’ una red Bitcoin de pruebas o ejecutarla en ‘localhost’. Si queremos solicitar pagos es tan fácil como generar una dirección y enviarla por correo electrónico o generar un código QR:

/* Nos conectamos a la red */
NetworkParameters netParams = TestNet3Params.get();

ECKey key = new ECKey();
Address addressFromKey = key.toAddress(netParams);		

System.out.println("Nuestra dirección es "+addressFromKey);	

Así de fácil es crear una cuenta, aunque lo mejor es que creemos un ‘wallet'(Monedero virtual) donde podremos incluir tantas cuentas como queramos(Es recomendable tener una cuenta por pago):

/* Nos conectamos a la red */
NetworkParameters netParams = TestNet3Params.get();

/* Creamos el monedero */
Wallet wallet = new Wallet(netParams);
File walletFile = new File(“/micarpeta/mimonedero.wallet”);

/* incluimos 5 cuentas */
for (int i = 0; i < 5; i++) {
	wallet.importKey( new ECKey() );
	}

/* Guardamos el monedero */
wallet.saveToFile(walletFile);

System.out.println("Mi monedero: "+wallet)

Ya con el monedero podemos solicitar dinero a quien queramos, por ejemplo, en ‘testnet'(Red de pruebas) podemos solicitar bitcoins en esta web totalmente gratis http://tpfaucet.appspot.com/ . Para ver el estado de una cuenta existen multitud de servidores que nos permiten consultar la contabilidad pública de Bitcoin, por ejemplo https://testnet.blockexplorer.com/. Por cierto, el dinero tardará mas de diez minutos en estar confirmado en a la cuenta.

Ahora que ya tenemos nuestra cuenta y con dinero podemos empezar a trabajar con el ‘Wallet’. Para esto, bitcoinj nos provee de la classe ‘WalletAppKit’ para hacernos la vida mas fácil. Para consultar el estado de nuestra cuenta:

/* Nos conectamos a la red */
NetworkParameters netParams = TestNet3Params.get();

WalletAppKit kit=new WalletAppKit(netParams, new File( "/home/albert" ), "test") {
	@Override
	protected void onSetupCompleted() {
	    	System.out.println("setup ok. "+wallet().getKeychainSize());	
	    	}	
	};

/* Para que el wallet se auto guarde */			
kit.setAutoSave(true);

/* Conectamos y esperamos a que todo este ok, puede tardar minutos en la red tesnet */
kit.startAsync();		
kit.awaitRunning();
		
System.out.println( kit.wallet() );
System.out.println( "\n\nTotal BitCoins en cuenta: "+kit.wallet().getBalance() );

Finalmente, para poder pagar dinero lo podemos hacer con tres simples líneas de código, aunque también se pueden crear transacciones complejas, por ejemplo, con varios beneficiarios. Para enviar 0.010 bitcoins a la cuenta ‘n2eMqTT929pb1RDNuqEnxdaLau1rxy3efi’:

/* Definimos la cuenta destino */
Address forwardingAddress = new Address(netParams, "n2eMqTT929pb1RDNuqEnxdaLau1rxy3efi");      

/* Enviamos el dinero */
Wallet.SendResult sendResult = kit.wallet().sendCoins(kit.peerGroup(), forwardingAddress, Coin.parseCoin("0.010"));

/* Enviamos los datos a la red */
sendResult.broadcastComplete.get();

En fin, así de fácil o sencillo resulta trabajar con bitcoins. Desearos que os sea de utilidad y buen fin de semana 😀

Leave a Reply

© Albert Coronado Calzada