{"id":21048270,"url":"https://github.com/angelbarrera92/ethereum-private-network","last_synced_at":"2026-04-17T08:02:00.533Z","repository":{"id":144305478,"uuid":"96630113","full_name":"angelbarrera92/Ethereum-Private-Network","owner":"angelbarrera92","description":"Creación de una red Ethereum privada en diferentes Cloud Providers","archived":false,"fork":false,"pushed_at":"2017-07-08T18:00:42.000Z","size":7,"stargazers_count":1,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-07-19T03:35:22.499Z","etag":null,"topics":["aws","ethereum","ethereum-blockchain"],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/angelbarrera92.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-07-08T16:17:15.000Z","updated_at":"2019-03-25T10:19:10.000Z","dependencies_parsed_at":null,"dependency_job_id":"1dfae862-896a-4296-ae69-f2eeec5bc8ad","html_url":"https://github.com/angelbarrera92/Ethereum-Private-Network","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/angelbarrera92/Ethereum-Private-Network","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angelbarrera92%2FEthereum-Private-Network","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angelbarrera92%2FEthereum-Private-Network/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angelbarrera92%2FEthereum-Private-Network/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angelbarrera92%2FEthereum-Private-Network/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/angelbarrera92","download_url":"https://codeload.github.com/angelbarrera92/Ethereum-Private-Network/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angelbarrera92%2FEthereum-Private-Network/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31920518,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-16T18:22:33.417Z","status":"online","status_checked_at":"2026-04-17T02:00:06.879Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws","ethereum","ethereum-blockchain"],"created_at":"2024-11-19T14:42:56.486Z","updated_at":"2026-04-17T08:02:00.436Z","avatar_url":"https://github.com/angelbarrera92.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Red privada Ethereum en Amazon (AWS)\n\nINTRODUCCION VA AQUI\n\n## Preparación\n\n### Creación de Security Group\nImportante abrir el puerto en TCP y UDP\n\n### Inicialización de un nodo. Amazon Linux AMI\n#### Instalación de geth\nDesafortunadamente no hay una distrubución de ```geth``` lista para instalar desde los repositorios de software de la AMI, por lo que debemos instalar ```geth``` desde el código fuente:\n```bash\nsudo yum update -y\nsudo yum install golang -y\ngit clone https://github.com/ethereum/go-ethereum.git\ncd go-ethereum/\nsudo make all\n```\nLos binarios compilados se encuentran en la siguiente ruta: ```~/go-ethereum/build/bin``` por lo que podemos añadir esta ruta al Path para que podamos usarlo de una forma mas comoda.\n```bash\nexport PATH=$PATH:/home/ec2-user/go-ethereum/build/bin\n```\nÙna vez hecho esto podemos comprobar la instalación escribiendo:\n```bash\n$ geth version\nGeth\nVersion: 1.6.7-unstable\nGit Commit: 65f0e905ddda9be97368839b67be5754b33a0eea\nArchitecture: amd64\nProtocol Versions: [63 62]\nNetwork Id: 1\nGo Version: go1.7.5\nOperating System: linux\nGOPATH=\nGOROOT=/usr/lib/golang\n```\n\n#### Inicialización de la red. Genesis\nPara inicializar la red vamos a clonarnos este repositorio en la maquina donde acabamos de instalar ```geth```\n```bash\ncd\ngit clone https://github.com/angelbarrera92/Ethereum-Private-Network.git\ncd Ethereum-Private-Network\ncd scripts\n./init_the_genesis.sh\n```\nDebe de mostrar unas trazas similares a: \n```bash\n./init_the_genesis.sh\nWARN [07-08|16:22:35] No etherbase set and no accounts found as default \nINFO [07-08|16:22:35] Allocated cache and file handles         database=/home/ec2-user/data/ethPrivate/geth/chaindata cache=16 handles=16\nINFO [07-08|16:22:35] Writing custom genesis block \nINFO [07-08|16:22:35] Successfully wrote genesis state         database=chaindata                                     hash=b38dfb…566e58\nINFO [07-08|16:22:35] Allocated cache and file handles         database=/home/ec2-user/data/ethPrivate/geth/lightchaindata cache=16 handles=16\nINFO [07-08|16:22:35] Writing custom genesis block \nINFO [07-08|16:22:35] Successfully wrote genesis state         database=lightchaindata                                     hash=b38dfb…566e58\n```\n#### Inicialización del nodo\nEstando en el directorio de scripts de este repositorio podemos ejecutar:\n```bash\n./node_init.sh\nWARN [07-08|16:32:25] No etherbase set and no accounts found as default \nINFO [07-08|16:32:25] Starting peer-to-peer node               instance=Geth/v1.6.7-unstable-65f0e905/linux-amd64/go1.7.5\nINFO [07-08|16:32:25] Allocated cache and file handles         database=/home/ec2-user/data/ethPrivate/geth/chaindata cache=128 handles=1024\nWARN [07-08|16:32:25] Upgrading chain database to use sequential keys \nINFO [07-08|16:32:25] Initialised chain configuration          config=\"{ChainID: 154321 Homestead: 0 DAO: \u003cnil\u003e DAOSupport: false EIP150: \u003cnil\u003e EIP155: 0 EIP158: 0 Metropolis: \u003cnil\u003e Engine: unknown}\"\nINFO [07-08|16:32:25] Disk storage enabled for ethash caches   dir=/home/ec2-user/data/ethPrivate/geth/ethash count=3\nINFO [07-08|16:32:25] Disk storage enabled for ethash DAGs     dir=/home/ec2-user/.ethash                     count=2\nWARN [07-08|16:32:25] Upgrading db log bloom bins \nINFO [07-08|16:32:25] Bloom-bin upgrade completed              elapsed=82.023µs\nINFO [07-08|16:32:25] Initialising Ethereum protocol           versions=\"[63 62]\" network=154321\nINFO [07-08|16:32:25] Loaded most recent local header          number=0 hash=b38dfb…566e58 td=200\nINFO [07-08|16:32:25] Loaded most recent local full block      number=0 hash=b38dfb…566e58 td=200\nINFO [07-08|16:32:25] Loaded most recent local fast block      number=0 hash=b38dfb…566e58 td=200\nINFO [07-08|16:32:25] Starting P2P networking \nINFO [07-08|16:32:25] Database conversion successful \nINFO [07-08|16:32:27] UDP listener up                          self=enode://b0cb65c92e1e3e06001e6ca70acc73e09104bac5915541b980983ae46d96bfd24ef94ff61e54b8d3aa10781deff93de36a73b6b2c3d9a030ba3d8126cbec5014@[::]:30303\nINFO [07-08|16:32:27] RLPx listener up                         self=enode://b0cb65c92e1e3e06001e6ca70acc73e09104bac5915541b980983ae46d96bfd24ef94ff61e54b8d3aa10781deff93de36a73b6b2c3d9a030ba3d8126cbec5014@[::]:30303\nINFO [07-08|16:32:27] IPC endpoint opened: /home/ec2-user/data/ethPrivate/geth.ipc \nWelcome to the Geth JavaScript console!\n\ninstance: Geth/v1.6.7-unstable-65f0e905/linux-amd64/go1.7.5\n modules: admin:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0\n\n\u003e \n```\nÀhora estaremos dentro de la consola de este nodo de Ethereum. \n\n#### Creación de una cuenta\nEstando dentro de la consola, podemos ejecutar:\n```bash\n\u003e personal.newAccount()\nPassphrase: \nRepeat passphrase: \n\"0x499689c2238cd94b7ce4b19c09d7e11071824795\"\n\u003e INFO [07-08|16:35:08] New wallet appeared                      url=keystore:///home/ec2-user/data/… status=Locked\n```\nỲ ya tendremos nuestra cuenta creada. Esta la usaremos para configurarla como destino de los Ether minados en esta red privada (Se configura automagicamente). Para comprobar el id de la cuenta destino del minado: \n```\neth.coinbase\n```\n#### Obtención del identificador del nodo.\nPara poder crear un cluster, debemos conocer el identificador de nuestro nodo. Para ello, siguiente en la consola de Ethereum tenemos que escribir el siguiente comando: \n```bash\n\u003e admin.nodeInfo\n{\n  enode: \"enode://b0cb65c92e1e3e06001e6ca70acc73e09104bac5915541b980983ae46d96bfd24ef94ff61e54b8d3aa10781deff93de36a73b6b2c3d9a030ba3d8126cbec5014@[::]:30303\",\n  id: \"b0cb65c92e1e3e06001e6ca70acc73e09104bac5915541b980983ae46d96bfd24ef94ff61e54b8d3aa10781deff93de36a73b6b2c3d9a030ba3d8126cbec5014\",\n  ip: \"::\",\n  listenAddr: \"[::]:30303\",\n  name: \"Geth/v1.6.7-unstable-65f0e905/linux-amd64/go1.7.5\",\n  ports: {\n    discovery: 30303,\n    listener: 30303\n  },\n  protocols: {\n    eth: {\n      difficulty: 200,\n      genesis: \"0xb38dfbafcacd3c8a6324969358b95d54cc36d7d87362045375b83d83d5566e58\",\n      head: \"0xb38dfbafcacd3c8a6324969358b95d54cc36d7d87362045375b83d83d5566e58\",\n      network: 154321\n    }\n  }\n}\n```\nPodemos observar varios datos: \n1. El identificador de ```protocols.eth.genesis``` es el mismo que ```\nprotocols.eth.head``` esto es de bido a que nuestra cadena solo tiene un bloque, el bloque relativo a nuestra genesis. \n2. El ```protocols.eth.network``` indica nuestro network id. \n3. El puerto ```ports.listener``` es el que hemos abierto anteriormente en la sección de security groups. \n\nEl dato que estabamos buscando es el valor de ```enode```. A este valor se le debe sustituir ```[::]``` por la ip de nuestra instancia. \nPara descubir la  ip publica de esta instancia (debemos abrir otra terminal para no cerrar geth)\n```bash\ncurl http://169.254.169.254/latest/meta-data/public-ipv4 \u0026\u0026 echo\n54.194.91.164\n```\nEntonces nuestro enode será: ```enode://b0cb65c92e1e3e06001e6ca70acc73e09104bac5915541b980983ae46d96bfd24ef94ff61e54b8d3aa10781deff93de36a73b6b2c3d9a030ba3d8126cbec5014@54.194.91.164:30303```\n#### Añadiendo nodos a nuestra red privada. \nHabiendo inicializado n nodos con el procedimiento descrito anteriormente, podemos escribir en la consola geth el siguiente comando: \n```bash\nadmin.addPeer()\n```\n#### Conexión de nodos\nUna vez obtenido un enode, podemos ir a otro nodo y añadirlo:\n```bash\n\u003e admin.addPeer(\"enode://b0cb65c92e1e3e06001e6ca70acc73e09104bac5915541b980983ae46d96bfd24ef94ff61e54b8d3aa10781deff93de36a73b6b2c3d9a030ba3d8126cbec5014@54.194.91.164:30303\")\ntrue\n\u003e admin.peers\n[{\n    caps: [\"eth/63\"],\n    id: \"b0cb65c92e1e3e06001e6ca70acc73e09104bac5915541b980983ae46d96bfd24ef94ff61e54b8d3aa10781deff93de36a73b6b2c3d9a030ba3d8126cbec5014\",\n    name: \"Geth/v1.6.7-unstable-65f0e905/linux-amd64/go1.7.5\",\n    network: {\n      localAddress: \"172.31.22.201:59654\",\n      remoteAddress: \"54.194.91.164:30303\"\n    },\n    protocols: {\n      eth: {\n        difficulty: 200,\n        head: \"0xb38dfbafcacd3c8a6324969358b95d54cc36d7d87362045375b83d83d5566e58\",\n        version: 63\n      }\n    }\n}]\n\u003e \n```\nCon ello ya tendremos una red de ethereum privada con dos nodos\n#### Inicialización del minado\nPara inicializar el minado en cada uno de los nodos, debemos escribir el siguiente comando: \n```\nminer.start(1)\n```\nLa primera vez que ejecutamos este comando tardara unos minutos en generar el DAG (TODO, completar documentacion).\n\nComo hemos puesto en el bloque de genesis una dificultad bastante baja, el minado se realizará de una forma bastante rapida. \n\nTeniendo un nodo minando y el otro pasivo, podemos ver en el nodo pasivo como el numero de bloques va incrementando ejecutando el comando: ```eth.blockNumber``` dentro de la consola de geth. \n\nCon este comando tambien podemos comprobar como los dos nodos, u n nodos, están sincronizados","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fangelbarrera92%2Fethereum-private-network","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fangelbarrera92%2Fethereum-private-network","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fangelbarrera92%2Fethereum-private-network/lists"}