{"id":604,"date":"2017-07-16T20:15:50","date_gmt":"2017-07-16T20:15:50","guid":{"rendered":"https:\/\/www.joseluisestevez.com\/?p=604"},"modified":"2017-07-16T20:15:50","modified_gmt":"2017-07-16T20:15:50","slug":"creando-aplicaciones-la-blockchain-ethereum-usando-java-web3j","status":"publish","type":"post","link":"https:\/\/www.joseluisestevez.com\/index.php\/2017\/07\/16\/creando-aplicaciones-la-blockchain-ethereum-usando-java-web3j\/","title":{"rendered":"Creando aplicaciones en la Blockchain de Ethereum usando Java y Web3j"},"content":{"rendered":"<p>Hola amigos, hoy les quiero hablar de la librer\u00eda Web3j en la cual he hecho varias pruebas y me parece genial ya que es muy ligera y contiene todo lo necesario para crear aplicaci\u00f3n y contratos inteligentes en la blockchain de ethereum.<\/p>\n<h3>\u00bfQue es\u00a0Web3j?<\/h3>\n<p>Es una biblioteca ligera escrita en Java 8, esta en una capa superior ya que necesita integrarse con un cliente o nodo de la red Ethereum, en mi entrada anterior\u00a0<a href=\"https:\/\/www.joseluisestevez.com\/index.php\/2017\/06\/22\/instalar-un-nodo-testnet-ethereum-rinkeby\/\">Instalar un nodo testnet de ethereum rinkeby<\/a> esta todo lo necesario para crear tu propio nodo y obtener monedas testnet para comenzar las pruebas.<\/p>\n<p><!--more--><\/p>\n<h3>Caracter\u00edsticas principales:<\/h3>\n<ol>\n<li>Interacci\u00f3n con los clientes Ethereum usando el \u00a0API JSON-RPC dando soporte a todos los tipos de m\u00e9todos disponibles<\/li>\n<li>Soporta todos los \u00a0nodos Geth y Parity para administrar cuentas y firmar transacciones<\/li>\n<li>Env\u00edo de solicitudes de clientes de forma as\u00edncrona y sincr\u00f3nica<\/li>\n<li>Generaci\u00f3n autom\u00e1tica de wrappers de funci\u00f3n de contrato inteligente Java de archivos Solidity ABI<\/li>\n<\/ol>\n<h3>Enlaces de inter\u00e9s:<\/h3>\n<p>Si necesitas m\u00e1s informaci\u00f3n acerca de este proyecto te dejo unos enlaces de la documentaci\u00f3n oficial:<\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/web3j\/web3j\" target=\"_blank\" rel=\"noopener\">GitHub<\/a><\/li>\n<li><a href=\"http:\/\/web3j.io\">Sitio web:<\/a><\/li>\n<li><a href=\"https:\/\/docs.web3j.io\/\">Documentaci\u00f3n<\/a><\/li>\n<li><a href=\"https:\/\/gitter.im\/web3j\/web3j\">Gitter<\/a>:<\/li>\n<\/ul>\n<h3>Creando una cuenta Ethereum en Java usando Web3j<\/h3>\n<p>Lo primero que vamos a hacer es crear una cuenta ethereum para recibir nuestro ether, para ello vamos a utilizar el api de web3j<\/p>\n<pre class=\"lang:java decode:true\">    public static String[] createNewWallet(String password) throws Exception {\r\n        try {\r\n            File file = new File(WALLET_PATH);\r\n            String name = null;\r\n            String json = null;\r\n            if (file.exists()) {\r\n                \/\/ al crear el monedero nos retorna el nombre del archivo generado dentro de la carpeta indicada\r\n                name = WalletUtils.generateFullNewWalletFile(password, file);\r\n                \/\/ vamos a abrir el monedero y retornar el json generado\r\n                Path path = FileSystems.getDefault().getPath(WALLET_PATH, name);\r\n                byte[] b = java.nio.file.Files.readAllBytes(path);\r\n                json = new String(b);\r\n                return new String[]{name, json};\r\n            } else {\r\n                throw new Exception(\"Invalid WALLET_PATH \" + WALLET_PATH);\r\n            }\r\n\r\n        } catch (Exception ex) {\r\n            throw ex;\r\n        }\r\n    }<\/pre>\n<p>En la sentencia anterior podemos destacar la siguiente linea:\u00a0<strong>WalletUtils.generateFullNewWalletFile(password, file);\u00a0<\/strong>Como podemos ver hemos usando la clase WalletUtils y hemos creado una cuenta ethereum de una forma muy simple.<\/p>\n<p>Invocamos nuestro m\u00e9todo de la forma siguiente:<\/p>\n<pre class=\"lang:default decode:true\">EthereumWallet e = EthereumWallet.getInstance();\r\nString[] wallet = e.createNewWallet(\"123456\");\r\nfor (String string : wallet) {\r\n    System.out.println(string);\r\n}<\/pre>\n<p>El arreglo generado contiene las siguientes cadenas:<\/p>\n<p>1.- Nombre del monedero:<\/p>\n<pre class=\"lang:default decode:true\">UTC--2017-07-16T16-58-10.930000000Z--54f80f2634207fba30525ebdd779cedd7e745cb4.json<\/pre>\n<p>2.- JSON con los datos del monedero:<\/p>\n<pre class=\"lang:java decode:true\">{\r\n\t\"address\": \"54f80f2634207fba30525ebdd779cedd7e745cb4\",\r\n\t\"id\": \"c3484c26-54af-4c4f-baf5-a10caf813031\",\r\n\t\"version\": 3,\r\n\t\"crypto\": {\r\n\t\t\"cipher\": \"aes-128-ctr\",\r\n\t\t\"ciphertext\": \"1a70945a3f05a3c2e2bb3def0cd3b88b735462067ebe5acc1f63a74f6b98bb15\",\r\n\t\t\"cipherparams\": {\r\n\t\t\t\"iv\": \"d3d05d62e600f3d1f91f64856db9a8c2\"\r\n\t\t},\r\n\t\t\"kdf\": \"scrypt\",\r\n\t\t\"kdfparams\": {\r\n\t\t\t\"dklen\": 32,\r\n\t\t\t\"n\": 262144,\r\n\t\t\t\"p\": 1,\r\n\t\t\t\"r\": 8,\r\n\t\t\t\"salt\": \"ba10abe0b7adb51bc52dacc477ebeb5e3008d5f72fa60bfee3a6d409483248fd\"\r\n\t\t},\r\n\t\t\"mac\": \"96ae81b9a7233c544cca25616f0b85adad7b9ec9b1e5a2e81dc686d7e4576086\"\r\n\t}\r\n}<\/pre>\n<p>Las cuentas en ethereum son ficheros JSON encriptados con una contrase\u00f1a. Este fichero debe guardarse con mucho cuidado y en un lugar seguro ya que podrias perder tus ether.<\/p>\n<h3>Abrir una cuenta Ethereum en Java usando Web3j<\/h3>\n<p>Ahora queremos comenzar a utilizar nuestra cuenta ethereum para ello vamos a ver el siguiente m\u00e9todo:<\/p>\n<pre class=\"lang:java decode:true\">public Credentials openWallet(String password, String walletName) throws Exception {\r\n    Credentials credentials = WalletUtils.loadCredentials(password, WALLET_PATH + walletName);\r\n    return credentials;\r\n}<\/pre>\n<p>Hemos usado nuevamente la clase\u00a0WalletUtils, esta vez el m\u00e9todo\u00a0loadCredentials que necesita el nombre de la cuenta ethereum y la contrase\u00f1a. Este nos retorna un objeto Credencial el cual nos da acceso a administrar nuestros ether de ese monedero.<\/p>\n<p>Este seria un ejemplo para utilizar el m\u00e9todo anterior:<\/p>\n<pre class=\"lang:default decode:true\">Credentials credentials = e.openWallet(\"123456\", \"UTC--2017-07-16T16-58-10.930000000Z--54f80f2634207fba30525ebdd779cedd7e745cb4.json\");\r\nString addressSender = credentials.getAddress();\r\nSystem.out.println(addressSender);<\/pre>\n<h3>Crear una instancia del objecto\u00a0Web3j<\/h3>\n<p>Para comenzar a usar los m\u00e9todos de webj3 necesitamos conectarnos al nodo que tenemos en ejecuci\u00f3n, recordando mi <a href=\"https:\/\/www.joseluisestevez.com\/index.php\/2017\/06\/22\/instalar-un-nodo-testnet-ethereum-rinkeby\/\">post anterior <\/a>hemos colocado el socket IPC en la siguiente ruta \u00ab\/opt\/apps\/geth.ipc\u00bb, ahora bien si queremos conectarnos directamente al socket y tener los eventos de la blockchain en tiempo real usaremos:<\/p>\n<pre class=\"lang:default decode:true\">private final static String IPC_SOCKET_PATH = \"\/opt\/apps\/geth.ipc\";\r\n\r\nweb3j = Web3j.build(new UnixIpcService(IPC_SOCKET_PATH));<\/pre>\n<p>O bien si no queremos usar Socket podemos usar HTTP con las siguiente sentencia:<\/p>\n<pre class=\"lang:default decode:true\">private final static String URL_JSON_RPC = \"http:\/\/127.0.0.1:38904\";\r\n\r\nweb3j = Web3j.build(new HttpService(URL_JSON_RPC));<\/pre>\n<h3>Ver el balance o saldo de una cuenta Ethereum en Java usando Web3j<\/h3>\n<p>Ahora si a todos se nos viene la primera pregunta y \u00bfComo vemos el saldo de nuestro monedero? Vamos a crear el siguiente m\u00e9todo que nos retorna el saldo del monedero.<\/p>\n<pre class=\"lang:default decode:true\">    public BigInteger getAddressBalance(String address) throws Exception {\r\n        try {\r\n            \/\/ Vamos a enviar una solicitud as\u00edncrona usando el objecto web3j \r\n            EthGetBalance ethGetBalance = web3j\r\n                    .ethGetBalance(address, DefaultBlockParameterName.LATEST)\r\n                    .sendAsync()\r\n                    .get();\r\n            \r\n            \/\/ saldo en wei\r\n            BigInteger wei = ethGetBalance.getBalance();\r\n            return wei;\r\n        } catch (Exception ex) {\r\n            throw ex;\r\n        }\r\n    }<\/pre>\n<p>Ya estamos utilizando el objecto web3j en esta caso hemos usado\u00a0web3j .ethGetBalance el cual en realidad hace un llamado al Api de Ethereum como se ve a continuaci\u00f3n:<\/p>\n<pre class=\"lang:default decode:true \">{\"jsonrpc\":\"2.0\",\"method\":\"eth_getBalance\",\"params\":[\"0x54f80f2634207fba30525ebdd779cedd7e745cb4\",\"latest\"],\"id\":1}<\/pre>\n<p>Vamos a ver un ejemplo del uso del m\u00e9todo que hemos creado:<\/p>\n<pre class=\"lang:default decode:true\">BigInteger wei =  e.getAddressBalance(addressSender);\r\nSystem.out.println(wei + \" wei\"); \/\/ Salida en wei \r\nBigDecimal x18 = new BigDecimal(\"1000000000000000000\");\r\nBigDecimal bigDecimal = new BigDecimal(wei);\r\nBigDecimal result = bigDecimal.divide(x18);\r\nSystem.out.println(result + \" ether\"); \/\/ salida en ether<\/pre>\n<h3>Recibiendo ether en nuestra cuenta Ethereum usando Web3j:<\/h3>\n<p>Para recibir ether tenemos los m\u00e9todos\u00a0Observable que implementa Java RX para el manejo de eventos, vamos a crear el siguiente m\u00e9todo:<\/p>\n<pre class=\"lang:default decode:true \">public void onTransactionReceived(Transaction tx) {\r\n        BigInteger wei = tx.getValue();\r\n        BigDecimal ether = Convert.fromWei(new BigDecimal(tx.getValue()), Convert.Unit.ETHER);\r\n        String to = tx.getTo();\r\n        String hash = tx.getHash();\r\n        String from = tx.getFrom();\r\n\r\n        if (addressMap.containsKey(tx.getTo())) {\r\n            \/\/ credito\r\n            System.out.println(\"Se ha recibido su dep\u00f3sito de \" + ether + \" ether enviado a su cuenta \" + to + \" enviado por \" + from + \" tx \" + hash);\r\n        } else if (addressMap.containsKey(tx.getFrom())) {\r\n            \/\/debito\r\n            System.out.println(\"Se ha hecho un retiro de \" + ether + \" ether desde su cuenta \" + to + \" hacia la cuenta destino \" + from + \" tx \" + hash);\r\n        }\r\n    }<\/pre>\n<p>Creamos el objecto Subscription para ver los eventos de web3j con:<\/p>\n<pre class=\"lang:default decode:true\">    subscription = web3j.blockObservable(false).subscribe(block -&gt; {\r\n        blockObservable(block);\r\n    }, Throwable::printStackTrace, () -&gt; System.out.println(\"block done\"));\r\n    web3j.transactionObservable().subscribe(tx -&gt; {\r\n        transactionObservable(tx);\r\n    }, Throwable::printStackTrace, () -&gt; System.out.println(\"tx done\"));\r\n    web3j.pendingTransactionObservable().subscribe(tx -&gt; {\r\n        pendingTransactionObservable(tx);\r\n    }, Throwable::printStackTrace, () -&gt; System.out.println(\"ptx done\"));<\/pre>\n<p>Ahora si recarguemos nuestro monedero en nuestro caso he enviado 0.03 ether desde la linea de comando de geth, en la cual tenemos saldo:<\/p>\n<pre class=\"lang:default decode:true \">&gt; eth.accounts[0];\r\n\"0xe2632021f255da92be0c0434855a63acbcbae286\"\r\n&gt; var sender = eth.accounts[0];\r\nundefined\r\n&gt; var receiver = '0x54f80f2634207fba30525ebdd779cedd7e745cb4'\r\nundefined\r\n&gt; var amount = web3.toWei(0.03, \"ether\")\r\nundefined\r\n&gt; personal.unlockAccount(sender, \"123456\")\r\n&gt; eth.sendTransaction({from:sender, to:receiver, value: amount})\r\n\"0xcc6403a6179698a653419cccac7458445ff318482054b6bfb0141e9323c9382e\"\r\n<\/pre>\n<p>y lo hemos recibido en nuestro monedero :<\/p>\n<pre class=\"lang:default decode:true\">Se ha recibido su dep\u00f3sito de 0.03 ether enviado a su cuenta 0x54f80f2634207fba30525ebdd779cedd7e745cb4 enviado por 0xe2632021f255da92be0c0434855a63acbcbae286 tx 0xcc6403a6179698a653419cccac7458445ff318482054b6bfb0141e9323c9382e\r\n<\/pre>\n<h3>Enviar ether desde nuestra cuenta Ethereum usando Web3j:<\/h3>\n<p>Ahora ya que ya tenemos balance en nuestra cuenta podemos enviar ethers usando el siguiente m\u00e9todo:<\/p>\n<pre class=\"lang:default decode:true\">public TransactionReceipt sendCoins(Credentials credentials, String toAddress, BigDecimal value) throws Exception {\r\n        try {\r\n            TransactionReceipt transactionReceipt = Transfer.sendFunds(web3j, credentials, toAddress, value, Convert.Unit.ETHER);\r\n            return transactionReceipt;\r\n        } catch (Exception ex) {\r\n            throw ex;\r\n        }\r\n    }<\/pre>\n<p>Ahora vamos a enviar ether usando el m\u00e9todo creado<\/p>\n<pre class=\"lang:default decode:true\">e.sendCoins(credentials, sendAccount, new BigDecimal(ethers));<\/pre>\n<p>Y vemos como se dispara el evento en nuestra billetera.<\/p>\n<pre class=\"lang:default decode:true\">Se ha hecho un retiro de 0.02 ether desde su cuenta 0xe2632021f255da92be0c0434855a63acbcbae286 hacia la cuenta destino 0x54f80f2634207fba30525ebdd779cedd7e745cb4 tx 0x9b0c842a143678cc7aeca7818ed82ea414727605e409a540bb84d92ca62b36c7\r\n<\/pre>\n<h3>Ver transacciones de mi monedero usando\u00a0ETHERSCAN<\/h3>\n<p>Ahora quiero listar todas las entradas y salidas de mi cuenta, de momento no he podido hacerlo con el api de web3j \u00a0y al parecer es un poco mas complejo ya que tendr\u00edamos que desarrollar un script en la consola de geth. Por ahora vamos a usar el API de <a href=\"https:\/\/etherscan.io\/apis\" target=\"_blank\" rel=\"noopener\">ETHERSCAN<\/a><\/p>\n<pre class=\"lang:default decode:true\">private final static String ENDPOINT_TRANSACTIONS_LIST = \"\/api?module=account&amp;action=txlist\";\r\nprivate final static String API_RESTFUL_URI = \"http:\/\/rinkeby.etherscan.io\";\r\n\r\n public static Transactions getTransactionsByAddress(String address) {\r\n        String endpoint = API_RESTFUL_URI + ENDPOINT_TRANSACTIONS_LIST;\r\n        \r\n        Client client = ClientBuilder.newClient();\r\n        Response response = client.target(endpoint)\r\n                .queryParam(\"address\", address)\r\n                .queryParam(\"startblock\", \"0\")\r\n                .queryParam(\"endblock\", \"99999999\")\r\n                .queryParam(\"sort\", \"asc\")\r\n                .queryParam(\"apikey\", ETHERSCAN_APIKEY)\r\n                .request(MediaType.APPLICATION_JSON)\r\n                .get();\r\n        \r\n        String json = response.readEntity(String.class);\r\n        \r\n        client.close();\r\n        ObjectMapper mapper = new ObjectMapper();\r\n        Transactions transactions = null;\r\n        if (response.getStatus() == 200) {\r\n            try {\r\n                transactions = mapper.readValue(json, Transactions.class);\r\n            } catch (IOException e) {\r\n                e.printStackTrace();\r\n            }\r\n        }\r\n\r\n        return transactions;\r\n    }<\/pre>\n<p>Probamos el m\u00e9todo con la siguiente sentencia de c\u00f3digo:<\/p>\n<pre class=\"lang:default decode:true \">Transactions tx = EtherscanService.getTransactionsByAddress(addressSender);\r\nList&lt;Result&gt; list = tx.getResult();\r\nfor (Result result : list) {\r\n    System.out.print(\" BlockHash \" + result.getBlockHash());\r\n}<\/pre>\n<p>He creado un peque\u00f1o monedero muy b\u00e1sico en ethereum con webj3 si quieres puedes hacer un fork del c\u00f3digo desde <a href=\"https:\/\/github.com\/jestevez\/ethereum-java-wallet\" target=\"_blank\" rel=\"noopener\">Github<\/a> o si quieres colaborar eres bienvenido.<\/p>\n<p>Si te gusta lo que publico puedes seguirme en las redes sociales y unos wei o satoshis son bienvenidos!<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Hola amigos, hoy les quiero hablar de la librer\u00eda Web3j en la cual he hecho varias pruebas y me parece genial ya que es muy ligera y contiene todo lo necesario para crear aplicaci\u00f3n y contratos inteligentes en la blockchain de ethereum. \u00bfQue es\u00a0Web3j? Es una biblioteca ligera escrita en Java 8, esta en una [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":605,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[79,8,86],"tags":[80,83,82,9,87],"class_list":["post-604","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ethereum","category-java","category-web3j","tag-ethereum","tag-geth","tag-go-ethereum","tag-java","tag-web3j"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Creando aplicaciones en la Blockchain de Ethereum usando Java y Web3j - El Blog de Jose Luis Estevez<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.joseluisestevez.com\/index.php\/2017\/07\/16\/creando-aplicaciones-la-blockchain-ethereum-usando-java-web3j\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Creando aplicaciones en la Blockchain de Ethereum usando Java y Web3j - El Blog de Jose Luis Estevez\" \/>\n<meta property=\"og:description\" content=\"Hola amigos, hoy les quiero hablar de la librer\u00eda Web3j en la cual he hecho varias pruebas y me parece genial ya que es muy ligera y contiene todo lo necesario para crear aplicaci\u00f3n y contratos inteligentes en la blockchain de ethereum. \u00bfQue es\u00a0Web3j? Es una biblioteca ligera escrita en Java 8, esta en una [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.joseluisestevez.com\/index.php\/2017\/07\/16\/creando-aplicaciones-la-blockchain-ethereum-usando-java-web3j\/\" \/>\n<meta property=\"og:site_name\" content=\"El Blog de Jose Luis Estevez\" \/>\n<meta property=\"article:published_time\" content=\"2017-07-16T20:15:50+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.joseluisestevez.com\/wp-content\/uploads\/2017\/07\/web3j_network.png\" \/>\n\t<meta property=\"og:image:width\" content=\"953\" \/>\n\t<meta property=\"og:image:height\" content=\"394\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"yeyo\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"yeyo\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.joseluisestevez.com\\\/index.php\\\/2017\\\/07\\\/16\\\/creando-aplicaciones-la-blockchain-ethereum-usando-java-web3j\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.joseluisestevez.com\\\/index.php\\\/2017\\\/07\\\/16\\\/creando-aplicaciones-la-blockchain-ethereum-usando-java-web3j\\\/\"},\"author\":{\"name\":\"yeyo\",\"@id\":\"https:\\\/\\\/www.joseluisestevez.com\\\/#\\\/schema\\\/person\\\/6a17b38fcac664fdb33a5fba8056d0ee\"},\"headline\":\"Creando aplicaciones en la Blockchain de Ethereum usando Java y Web3j\",\"datePublished\":\"2017-07-16T20:15:50+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.joseluisestevez.com\\\/index.php\\\/2017\\\/07\\\/16\\\/creando-aplicaciones-la-blockchain-ethereum-usando-java-web3j\\\/\"},\"wordCount\":818,\"image\":{\"@id\":\"https:\\\/\\\/www.joseluisestevez.com\\\/index.php\\\/2017\\\/07\\\/16\\\/creando-aplicaciones-la-blockchain-ethereum-usando-java-web3j\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.joseluisestevez.com\\\/wp-content\\\/uploads\\\/2017\\\/07\\\/web3j_network.png\",\"keywords\":[\"Ethereum\",\"Geth\",\"Go-Ethereum\",\"Java\",\"web3j\"],\"articleSection\":[\"Ethereum\",\"Java\",\"web3j\"],\"inLanguage\":\"es\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.joseluisestevez.com\\\/index.php\\\/2017\\\/07\\\/16\\\/creando-aplicaciones-la-blockchain-ethereum-usando-java-web3j\\\/\",\"url\":\"https:\\\/\\\/www.joseluisestevez.com\\\/index.php\\\/2017\\\/07\\\/16\\\/creando-aplicaciones-la-blockchain-ethereum-usando-java-web3j\\\/\",\"name\":\"Creando aplicaciones en la Blockchain de Ethereum usando Java y Web3j - El Blog de Jose Luis Estevez\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.joseluisestevez.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.joseluisestevez.com\\\/index.php\\\/2017\\\/07\\\/16\\\/creando-aplicaciones-la-blockchain-ethereum-usando-java-web3j\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.joseluisestevez.com\\\/index.php\\\/2017\\\/07\\\/16\\\/creando-aplicaciones-la-blockchain-ethereum-usando-java-web3j\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.joseluisestevez.com\\\/wp-content\\\/uploads\\\/2017\\\/07\\\/web3j_network.png\",\"datePublished\":\"2017-07-16T20:15:50+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.joseluisestevez.com\\\/#\\\/schema\\\/person\\\/6a17b38fcac664fdb33a5fba8056d0ee\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.joseluisestevez.com\\\/index.php\\\/2017\\\/07\\\/16\\\/creando-aplicaciones-la-blockchain-ethereum-usando-java-web3j\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.joseluisestevez.com\\\/index.php\\\/2017\\\/07\\\/16\\\/creando-aplicaciones-la-blockchain-ethereum-usando-java-web3j\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/www.joseluisestevez.com\\\/index.php\\\/2017\\\/07\\\/16\\\/creando-aplicaciones-la-blockchain-ethereum-usando-java-web3j\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.joseluisestevez.com\\\/wp-content\\\/uploads\\\/2017\\\/07\\\/web3j_network.png\",\"contentUrl\":\"https:\\\/\\\/www.joseluisestevez.com\\\/wp-content\\\/uploads\\\/2017\\\/07\\\/web3j_network.png\",\"width\":953,\"height\":394},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.joseluisestevez.com\\\/index.php\\\/2017\\\/07\\\/16\\\/creando-aplicaciones-la-blockchain-ethereum-usando-java-web3j\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/www.joseluisestevez.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Creando aplicaciones en la Blockchain de Ethereum usando Java y Web3j\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.joseluisestevez.com\\\/#website\",\"url\":\"https:\\\/\\\/www.joseluisestevez.com\\\/\",\"name\":\"El Blog de Jose Luis Estevez\",\"description\":\"Desarrollador Senior\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.joseluisestevez.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.joseluisestevez.com\\\/#\\\/schema\\\/person\\\/6a17b38fcac664fdb33a5fba8056d0ee\",\"name\":\"yeyo\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3565e9dac43d5a8d2b807866a3af3ab66eeacb68b2d28fc63b962ad40c6ef4c7?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3565e9dac43d5a8d2b807866a3af3ab66eeacb68b2d28fc63b962ad40c6ef4c7?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3565e9dac43d5a8d2b807866a3af3ab66eeacb68b2d28fc63b962ad40c6ef4c7?s=96&d=mm&r=g\",\"caption\":\"yeyo\"},\"description\":\"Arquitecto de Software emprendedor con ardua experiencia en el camino de la tecnolog\u00eda.\",\"sameAs\":[\"http:\\\/\\\/www.joseluisestevez.com\"],\"url\":\"https:\\\/\\\/www.joseluisestevez.com\\\/index.php\\\/author\\\/yeyo\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Creando aplicaciones en la Blockchain de Ethereum usando Java y Web3j - El Blog de Jose Luis Estevez","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.joseluisestevez.com\/index.php\/2017\/07\/16\/creando-aplicaciones-la-blockchain-ethereum-usando-java-web3j\/","og_locale":"es_ES","og_type":"article","og_title":"Creando aplicaciones en la Blockchain de Ethereum usando Java y Web3j - El Blog de Jose Luis Estevez","og_description":"Hola amigos, hoy les quiero hablar de la librer\u00eda Web3j en la cual he hecho varias pruebas y me parece genial ya que es muy ligera y contiene todo lo necesario para crear aplicaci\u00f3n y contratos inteligentes en la blockchain de ethereum. \u00bfQue es\u00a0Web3j? Es una biblioteca ligera escrita en Java 8, esta en una [&hellip;]","og_url":"https:\/\/www.joseluisestevez.com\/index.php\/2017\/07\/16\/creando-aplicaciones-la-blockchain-ethereum-usando-java-web3j\/","og_site_name":"El Blog de Jose Luis Estevez","article_published_time":"2017-07-16T20:15:50+00:00","og_image":[{"width":953,"height":394,"url":"https:\/\/www.joseluisestevez.com\/wp-content\/uploads\/2017\/07\/web3j_network.png","type":"image\/png"}],"author":"yeyo","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"yeyo","Tiempo de lectura":"8 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.joseluisestevez.com\/index.php\/2017\/07\/16\/creando-aplicaciones-la-blockchain-ethereum-usando-java-web3j\/#article","isPartOf":{"@id":"https:\/\/www.joseluisestevez.com\/index.php\/2017\/07\/16\/creando-aplicaciones-la-blockchain-ethereum-usando-java-web3j\/"},"author":{"name":"yeyo","@id":"https:\/\/www.joseluisestevez.com\/#\/schema\/person\/6a17b38fcac664fdb33a5fba8056d0ee"},"headline":"Creando aplicaciones en la Blockchain de Ethereum usando Java y Web3j","datePublished":"2017-07-16T20:15:50+00:00","mainEntityOfPage":{"@id":"https:\/\/www.joseluisestevez.com\/index.php\/2017\/07\/16\/creando-aplicaciones-la-blockchain-ethereum-usando-java-web3j\/"},"wordCount":818,"image":{"@id":"https:\/\/www.joseluisestevez.com\/index.php\/2017\/07\/16\/creando-aplicaciones-la-blockchain-ethereum-usando-java-web3j\/#primaryimage"},"thumbnailUrl":"https:\/\/www.joseluisestevez.com\/wp-content\/uploads\/2017\/07\/web3j_network.png","keywords":["Ethereum","Geth","Go-Ethereum","Java","web3j"],"articleSection":["Ethereum","Java","web3j"],"inLanguage":"es"},{"@type":"WebPage","@id":"https:\/\/www.joseluisestevez.com\/index.php\/2017\/07\/16\/creando-aplicaciones-la-blockchain-ethereum-usando-java-web3j\/","url":"https:\/\/www.joseluisestevez.com\/index.php\/2017\/07\/16\/creando-aplicaciones-la-blockchain-ethereum-usando-java-web3j\/","name":"Creando aplicaciones en la Blockchain de Ethereum usando Java y Web3j - El Blog de Jose Luis Estevez","isPartOf":{"@id":"https:\/\/www.joseluisestevez.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.joseluisestevez.com\/index.php\/2017\/07\/16\/creando-aplicaciones-la-blockchain-ethereum-usando-java-web3j\/#primaryimage"},"image":{"@id":"https:\/\/www.joseluisestevez.com\/index.php\/2017\/07\/16\/creando-aplicaciones-la-blockchain-ethereum-usando-java-web3j\/#primaryimage"},"thumbnailUrl":"https:\/\/www.joseluisestevez.com\/wp-content\/uploads\/2017\/07\/web3j_network.png","datePublished":"2017-07-16T20:15:50+00:00","author":{"@id":"https:\/\/www.joseluisestevez.com\/#\/schema\/person\/6a17b38fcac664fdb33a5fba8056d0ee"},"breadcrumb":{"@id":"https:\/\/www.joseluisestevez.com\/index.php\/2017\/07\/16\/creando-aplicaciones-la-blockchain-ethereum-usando-java-web3j\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.joseluisestevez.com\/index.php\/2017\/07\/16\/creando-aplicaciones-la-blockchain-ethereum-usando-java-web3j\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.joseluisestevez.com\/index.php\/2017\/07\/16\/creando-aplicaciones-la-blockchain-ethereum-usando-java-web3j\/#primaryimage","url":"https:\/\/www.joseluisestevez.com\/wp-content\/uploads\/2017\/07\/web3j_network.png","contentUrl":"https:\/\/www.joseluisestevez.com\/wp-content\/uploads\/2017\/07\/web3j_network.png","width":953,"height":394},{"@type":"BreadcrumbList","@id":"https:\/\/www.joseluisestevez.com\/index.php\/2017\/07\/16\/creando-aplicaciones-la-blockchain-ethereum-usando-java-web3j\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/www.joseluisestevez.com\/"},{"@type":"ListItem","position":2,"name":"Creando aplicaciones en la Blockchain de Ethereum usando Java y Web3j"}]},{"@type":"WebSite","@id":"https:\/\/www.joseluisestevez.com\/#website","url":"https:\/\/www.joseluisestevez.com\/","name":"El Blog de Jose Luis Estevez","description":"Desarrollador Senior","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.joseluisestevez.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Person","@id":"https:\/\/www.joseluisestevez.com\/#\/schema\/person\/6a17b38fcac664fdb33a5fba8056d0ee","name":"yeyo","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/3565e9dac43d5a8d2b807866a3af3ab66eeacb68b2d28fc63b962ad40c6ef4c7?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/3565e9dac43d5a8d2b807866a3af3ab66eeacb68b2d28fc63b962ad40c6ef4c7?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/3565e9dac43d5a8d2b807866a3af3ab66eeacb68b2d28fc63b962ad40c6ef4c7?s=96&d=mm&r=g","caption":"yeyo"},"description":"Arquitecto de Software emprendedor con ardua experiencia en el camino de la tecnolog\u00eda.","sameAs":["http:\/\/www.joseluisestevez.com"],"url":"https:\/\/www.joseluisestevez.com\/index.php\/author\/yeyo\/"}]}},"_links":{"self":[{"href":"https:\/\/www.joseluisestevez.com\/index.php\/wp-json\/wp\/v2\/posts\/604","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.joseluisestevez.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.joseluisestevez.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.joseluisestevez.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.joseluisestevez.com\/index.php\/wp-json\/wp\/v2\/comments?post=604"}],"version-history":[{"count":4,"href":"https:\/\/www.joseluisestevez.com\/index.php\/wp-json\/wp\/v2\/posts\/604\/revisions"}],"predecessor-version":[{"id":609,"href":"https:\/\/www.joseluisestevez.com\/index.php\/wp-json\/wp\/v2\/posts\/604\/revisions\/609"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.joseluisestevez.com\/index.php\/wp-json\/wp\/v2\/media\/605"}],"wp:attachment":[{"href":"https:\/\/www.joseluisestevez.com\/index.php\/wp-json\/wp\/v2\/media?parent=604"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.joseluisestevez.com\/index.php\/wp-json\/wp\/v2\/categories?post=604"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.joseluisestevez.com\/index.php\/wp-json\/wp\/v2\/tags?post=604"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}