{"id":59,"date":"2024-05-26T18:45:50","date_gmt":"2024-05-26T21:45:50","guid":{"rendered":"https:\/\/solidchain.ar\/?p=59"},"modified":"2024-07-02T14:08:06","modified_gmt":"2024-07-02T17:08:06","slug":"instala-y-configura-tu-nodo-de-ethereum-guia-esencial","status":"publish","type":"post","link":"https:\/\/solidchain.ar\/index.php\/2024\/05\/26\/instala-y-configura-tu-nodo-de-ethereum-guia-esencial\/","title":{"rendered":"Instala y Configura tu Nodo de Ethereum: Gu\u00eda Esencial"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Ventajas de tener tu propio nodo<\/h2>\n\n\n\n<p>Tener tu propio nodo de Ethereum ofrece varias ventajas significativas como tener control total sobre las transacciones y los datos que procesas. No dependes de terceros para acceder a la blockchain, lo que aumenta la independencia y la seguridad. Al operar tu propio nodo, no necesitas confiar en nodos externos que podr\u00edan registrar tus actividades. Esto reduce los riesgos de vigilancia y aumenta la privacidad de tus transacciones y datos entre otras ventajas.<\/p>\n\n\n\n<p>Tambi\u00e9n tener tu propio nodo te permite probar contratos inteligentes y aplicaciones descentralizadas (dApps) en un entorno controlado, facilitando el desarrollo y la implementaci\u00f3n de nuevas soluciones en la red Ethereum y adem\u00e1s no necesitas confiar en servicios como Infura para interactuar con la red Ethereum. Esto puede ser crucial en situaciones donde la disponibilidad de estos servicios es limitada o se imponen restricciones.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">A tener en cuenta<\/h2>\n\n\n\n<p>A continuaci\u00f3n vamos a ir dando un paso a paso de lo que necesitamos tener e ir ejecutando para levantar nuestro nodo, no vamos a ahondar en la teor\u00eda de los nodos de etehreum pero vamos a dejar todos los links a la documentaci\u00f3n para los que quieras profundizar sobre el tema.<\/p>\n\n\n\n<p>Desde el cambio de Ethereum de PoW a PoS no solo debemos tener un cliente de ejecuci\u00f3n de la blokchain si no tambi\u00e9n un cliente de consenso, las opciones para un cliente de ejecuci\u00f3n que en este momento nos est\u00e1n dando son: Besu, Erigon, Geth y Nethermind y en cuanto a las opciones de clientes de consenso son: Lighthouse, Lodestar, Nimbus, Prysm y Teku para nuestro caso vamos a utilizar Geth y Prysm ambos est\u00e1n escritos en el lenguaje GO.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Requisitos t\u00e9cnicos<\/h2>\n\n\n\n<p>Este es un apartado no menor, la documentaci\u00f3n de <a rel=\"noreferrer noopener\" href=\"https:\/\/ethereum.org\/es\/developers\/docs\/nodes-and-clients\/run-a-node\/\" target=\"_blank\">Ethereum<\/a> nos indica los siguientes requisitos:<\/p>\n\n\n\n<h5 class=\"wp-block-heading\" id=\"requisitos-m%C3%ADnimos\">Requisitos m\u00ednimos<\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li>CPU con dos o m\u00e1s n\u00facleos<\/li>\n\n\n\n<li>8 GB de RAM<\/li>\n\n\n\n<li>SSD de 2 TB<\/li>\n\n\n\n<li>10 o m\u00e1s MBit\/s de banda ancha<\/li>\n<\/ul>\n\n\n\n<h5 class=\"wp-block-heading\" id=\"especificaciones-recomendadas\">Especificaciones recomendadas<\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li>CPU r\u00e1pida con cuatro o m\u00e1s n\u00facleos<\/li>\n\n\n\n<li>16 GB o m\u00e1s de RAM<\/li>\n\n\n\n<li>SSD r\u00e1pida con 2 o m\u00e1sTB<\/li>\n\n\n\n<li>25 o m\u00e1s MBit\/s de banda ancha<\/li>\n<\/ul>\n\n\n\n<p>En nuestra prueba logramos levantar el nodo con una PC con los siguientes requisitos:<\/p>\n\n\n\n<h5 class=\"wp-block-heading\" id=\"especificaciones-recomendadas\">Especificaciones de nuestro nodo<\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li>CPU Intel Core i7-4790 3.60Ghz<\/li>\n\n\n\n<li>RAM 16 GB DDR3<\/li>\n\n\n\n<li>SSD 500GB<\/li>\n\n\n\n<li>HDD 2TB<\/li>\n\n\n\n<li>100 MBit\/s de banda ancha<\/li>\n\n\n\n<li>SO Linux Mint 21.1 Cinnamon<\/li>\n<\/ul>\n\n\n\n<p>Si bien la documentaci\u00f3n dice que el almacenamiento debe ser obligatoriamente SSD \u00f3sea un disco solido por temas de velocidad de escritura y lectura pudimos encontrar una configuraci\u00f3n que mencionaremos mas adelante para usar un almacenamiento mixto.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Primeros pasos<\/h2>\n\n\n\n<p>Vamos a instalar el cliente Geth usando la siguiente <a rel=\"noreferrer noopener\" href=\"https:\/\/geth.ethereum.org\/docs\/getting-started\" target=\"_blank\">documentaci\u00f3n<\/a> y vamos a ejecutar las siguientes lineas:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo add-apt-repository -y ppa:ethereum\/ethereum\nsudo apt-get update\r\nsudo apt-get install ethereum<\/code><\/pre>\n\n\n\n<p>Ahora creamos nuestro directorio donde vamos a instalar el cliente de ejecuci\u00f3n y el cliente de consenso en el escritorio de nuestro nodo<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cd \/home\/&lt;User>\/Desktop\nmkdir ethereum\nmkdir ethereum\/consensus<\/code><\/pre>\n\n\n\n<p>Instalamos el cliente de consenso usando esta <a rel=\"noreferrer noopener\" href=\"https:\/\/docs.prylabs.network\/docs\/install\/install-with-script\" target=\"_blank\">documentaci\u00f3n<\/a> dentro de la carpeta consensus que acabamos de crear ejecutamos el siguiente comando:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl https:\/\/raw.githubusercontent.com\/prysmaticlabs\/prysm\/master\/prysm.sh --output prysm.sh &amp;&amp; chmod +x prysm.sh<\/code><\/pre>\n\n\n\n<p>En el mismo directorio vamos a crear el archivo JWT que necesita el cliente de consenso para hablar con el cliente de ejecuci\u00f3ny lo vamos a mover al directorio \/tmp<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.\/prysm.sh beacon-chain generate-auth-secret\ncp jwp.hex \/tmp\/jwtsecret<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Iniciando el nodo<\/h2>\n\n\n\n<p>Antes de poder iniciar el cliente de ejecuci\u00f3n debemos iniciar el clef con los siguientes comandos posicionados en la carpeta \/ethereum que hab\u00edamos creado en el escritorio.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>clef newaccount --keystore geth-tutorial\/keystore\nclef --keystore geth-tutorial\/keystore --configdir geth-tutorial\/clef --chainid 1<\/code><\/pre>\n\n\n\n<p>Podemos observar que se creo una carpeta nueva &#8220;geth-tutorial&#8221; en donde se va a ejecutar nuestro cliente de ejecuci\u00f3n, la consola en la que estamos ejecutando el clef debe quedar abierta.<\/p>\n\n\n\n<p>Ahora vamos a ejecutar nuestro cliente de ejecuci\u00f3n en una consola nueva, antes debemos crear una carpeta data para los datos mas pesados de nuestro cliente que se van a guardar en el disco HDD <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>mkdir \/mnt\/sda1\/ethereum\/data\ngeth --mainnet --datadir geth-tutorial --datadir.ancient=\/mnt\/sda1\/ethereum\/data --authrpc.addr localhost --authrpc.port 8551 --authrpc.vhosts localhost --authrpc.jwtsecret \/tmp\/jwtsecret --http --http.api eth,net --signer=geth-tutorial\/clef\/clef.ipc --http<\/code><\/pre>\n\n\n\n<p>Una vez ejecutado vemos que comenzara a sincronizar y descargar informaci\u00f3n necesaria de la blockchain, mientras el cliente de ejecuci\u00f3n comienza la sincronizaci\u00f3n ejecutaremos el cliente de consenso. Importante no cerrar la consola del cliente de ejecuci\u00f3n.<\/p>\n\n\n\n<p>Nos posicionamos en la carpeta Descktop\/ethereum\/consensus y ejecutamos:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.\/prysm.sh beacon-chain --execution-endpoint=http:\/\/localhost:8551 --mainnet --jwt-secret=\/tmp\/jwtsecret --checkpoint-sync-url=https:\/\/beaconstate.info --genesis-beacon-api-url=https:\/\/beaconstate.info<\/code><\/pre>\n\n\n\n<p>Si todo se ejecuto correctamente sin errores el nodo va a estar descargando datos de la blockchain y sincroniz\u00e1ndose. Este proceso en nuestro caso tardo unas 36hs y ocupo alrededor de 300Gb en el disco SSD y 800Gb en el disco HDD.<\/p>\n\n\n\n<p>Una ves terminada la sincronizaci\u00f3n puede probar ejecutando en una nueva consola el siguiente comando<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>geth attach http:\/\/127.0.0.1:8545<\/code><\/pre>\n\n\n\n<p>Esta consola nos va a dejar ejecutar comandos de utilidad como <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>eth.accounts;\no\nweb3.fromWei(eth.getBalance('0xca57F3b40B42FCce3c37B8D18aDBca5260ca72EC'), 'ether');<\/code><\/pre>\n\n\n\n<p>Con esto veremos la cuenta que esta asociada a nuestro nodo y con el otro comando podremos ver el balance de la billetera que queramos siendo ejecutada esta consulta en nuestro nodo<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Consideraciones<\/h2>\n\n\n\n<p>Esta es una gu\u00eda r\u00e1pida para la instalaci\u00f3n de un nodo de etehreum en mainnet , un nodo solo para consultas sobre la blockchain que podr\u00eda servir para no depende de un nodo remoto como infura, pero no es una gu\u00eda para un nodo de staking en el cual debe depositar 32ETH para poder validar bloques.<\/p>\n\n\n\n<p>Adem\u00e1s notamos que nuestro nodo esta muy justo con la memoria RAM habiendo momentos en los cuales supera los 16GB recomendar\u00edamos tener mas de 16GB y de ser posible usar un disco SSD de 2TB para tener mejor estabilidad en el nodo.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Documentacion<\/h2>\n\n\n\n<p><a href=\"https:\/\/ethereum.org\/es\/developers\/docs\/nodes-and-clients\/run-a-node\/\" target=\"_blank\" rel=\"noreferrer noopener\">ethereum.org<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/docs.prylabs.network\/docs\/install\/install-with-script\" target=\"_blank\" rel=\"noreferrer noopener\">docs.prylabs.network<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/geth.ethereum.org\/docs\/getting-started\" target=\"_blank\" rel=\"noreferrer noopener\">geth.ethereum.org<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ventajas de tener tu propio nodo Tener tu propio nodo de Ethereum ofrece varias ventajas [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":65,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[2],"tags":[],"class_list":["post-59","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blockchain"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/solidchain.ar\/index.php\/wp-json\/wp\/v2\/posts\/59","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/solidchain.ar\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/solidchain.ar\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/solidchain.ar\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/solidchain.ar\/index.php\/wp-json\/wp\/v2\/comments?post=59"}],"version-history":[{"count":5,"href":"https:\/\/solidchain.ar\/index.php\/wp-json\/wp\/v2\/posts\/59\/revisions"}],"predecessor-version":[{"id":64,"href":"https:\/\/solidchain.ar\/index.php\/wp-json\/wp\/v2\/posts\/59\/revisions\/64"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/solidchain.ar\/index.php\/wp-json\/wp\/v2\/media\/65"}],"wp:attachment":[{"href":"https:\/\/solidchain.ar\/index.php\/wp-json\/wp\/v2\/media?parent=59"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/solidchain.ar\/index.php\/wp-json\/wp\/v2\/categories?post=59"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/solidchain.ar\/index.php\/wp-json\/wp\/v2\/tags?post=59"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}