Implementé un sistema PoA con éxito. Pero después de la configuración inicial (por ejemplo, dos nodos), ¿cómo se agregan nuevos nodos? Entiendo que la aceptación de un nuevo nodo es un proceso de votación, pero no estoy seguro de cómo se implementa.
Aquí está el enlace que usé para la configuración: https://hackernoon.com/setup-your-own-private-proof-of-authority-ethereum-network-with-geth-9a0a3750cda8
Salida de la máquina 2 (que tiene los nodos 3,4). Los nodos 1 y 2 están en la máquina 1 y ambos son firmantes. Muestra en el nodo 3 que la cuenta está desbloqueada pero no está autorizada.
más nohup.out INFO [04-14|17:22:17] Recuento máximo de pares
ETH=25 LES=0 total=25 INFO [04-14|17:22:17] Iniciando instancia de nodo peer-to-peer=Geth /v1.8.2-stable-b8b9f7f4/linux-amd64/go1.9.4 INFO [04-14|17:22:17] Caché asignado y manejo de archivos base de
datos=/home/satoshimaca/blockchain2/node3/geth/chaindata cache=7 68 identificadores = 512 INFO [04-14|17:22:18] Configuración de cadena inicializada
config="{ChainID: 1515 Homestead: 1 DAO: DAOSupport: false EI P150: 2 EIP155: 3 EIP158: 3 Bizancio: 4 Constantinopla: Motor : clica}" INFO [04-14|17:22:18] Inicializando el protocolo Ethereum
versions="[63 62]" network=1515 INFO [04-14|17:22:18] Número de encabezado local más reciente cargado=0 hash=fdb68b…8a634f td=1 INFO [04-14|17:22:18 ] Número de bloque completo local más reciente cargado=0 hash=fdb68b…8a634f td=1 INFO [04-14|17:22:18] Número de bloque rápido local más reciente cargado=0 hash=fdb68b…8a634f td=1 INFO [04 -14|17:22:18] Transacciones del diario de transacciones locales cargadas=0 descartadas=0 INFO [04-14|17:22:18] Transacciones del diario de
transacciones locales regeneradas=0 cuentas=0 INFO [04-14|17:22 :18] Starting P2P networking INFO [04-14|17:22:20] UDP listener up
self=enode://7b13a6dc2fd5de476b2a579d702a36ec37587dad1cef7f99501835 4928a279a7733635e3cbd3b2fa1a261c2b37638f2aa46195bc7e1ebfa3c1875c84ecbc8087@[::]:30313 INFO [04-14|17:22:20] RLPx listener hasta
self=enode://7b13a6dc2fd5de476b2a579d702a36ec37587dad1cef7f99501835 4928a279a7733635e3cbd3b2fa1a261c2b37638f2aa46195bc7e1ebfa3c1875c84ecbc8087@[::]:30313 INFO [04-14|17:22:20] IPC endpoint opened
url=/home/satoshimaca/blockchain2/node3/geth.ipc INFO [04-14| 17:22:20] Punto final HTTP abierto url= http://localhost:8503
cors= vhosts=host local INFORMACIÓN [04-14|17:22:21]
Dirección de cuenta desbloqueada=0xC08832c6cB6df14340F3866B293a705FB9bc378B INFORMACIÓN [04-14|17:22 :21] Umbral de precio del grupo de transacciones actualizado precio=1 INFO [04-14|17:22:21] Etherbase configurada automáticamente
address=0xC08832c6cB6df14340F3866B293a705FB9bc378B INFO [04-14|17:22:21] Iniciando operación de minería INFO [04-14|17:22:21] Confirmar nuevo trabajo de minería number=1 txs=0 uncles=0 transcurrido=226.085µs WARN [04 -14|17:22:21] Falló el sellado del bloque
err=no autorizado
Aquí está la conexión para el nodo 3:
nohup geth --datadir node3/ --syncmode 'full' --port 30313 --rpc --rpcaddr 'localhost' --rpcport 8503 --rpcapi 'personal,db,eth,ne t,web3,txpool,miner' - -bootnodes 'enode://601ade737b81f16abdd0ce9983b63eb12050c4ef89c46b8fdbf3e3e6c951cc02dffe36f87200033107cf8b00 7355e780fba16b67d1d46603b1321f07314ea46b@10.132.0.2:30310' --networkid 1515 --gasprice '1' -unlock 'c08832c6cb6df14340f3866b293a70 5fb9bc378b' --password node3/pwdnode3.txt --mine &
Geth en el nodo 1 proporciona estos pares y este enodo:
> admin
{ datadir: "/home/satoshimaca/blockchain/node1", nodeInfo: { enode: "enode://64793e6e791115d315550d651cda00342b688ba36728b3d8070b04f4513ff65eb15ffb8f66387f1733340d8732e6ca956f0825cd3fc4e67686e04f63c5d0abc4@[::]:30311", id: "64793e6e791115d315550d651cda00342b688ba36728b3d8070b04f4513ff65eb15ffb8f66387f1733340d8732e6ca956f0825cd3fc4e67686e04f63c5d0abc4", ip: "::", listenAddr: " [::]:30311", nombre: "Geth/v1.8.2-stable-b8b9f7f4/linux-amd64/go1.9.4", puertos: { descubrimiento: 30311, oyente: 30311 }, protocolos: { eth: { config: {...}, difficulty: 15290, genesis: "0x702d8ca9647d171a6596a775888f71c7c0f3ddb011fbffcb921be685b2ef33b7", head: "0x574671023088dd06c2127cee4e2a70e30782ed3f525d28b537294ac0f3297099", network: 1515 } } }, peers: [{ caps: ["eth/62", "eth/63"], id: "d889d565b3ddc37491d131aed1c23d0a7b30a185bb925f325c7830b2ae710bc127010487f39f32d889afd1284ea31aa893adddda2197f2763485926970620381", name: "Geth/v1.8.2-stable-b8b9f7f4/linux-amd64/go1.9.4", network: { inbound: true, localAddress: "127.0.0.1:30311", remoteAddress: " 127.0.0.1:54108", estático: falso, de confianza: falso}, protocolos: {
Desde el nodo 1: la cuenta 1 definitivamente es un firmante y está desbloqueada, pero luego no está autorizada.
> clique.getSigners()
["0xc08832c6cb6df14340f3866b293a705fb9bc378b", "0xfc1bdf06d1150e6eeeb229a8500b09df8ccdcbbd", "0xfcad53c780a4f6c66b3daca331fe72fc6559c367"]
Agregar un nuevo nodo como sellador es tan simple como llamar:
clique.propose(<NEWSEALER>, true)
Necesitarás 50% + 1 votos.
Consulte ¿Cómo agregar un nuevo sellador en Geth 1.6 Prueba de autoridad? para más detalles.
Para obtener detalles sobre la especificación, consulte EIP 225 - https://github.com/ethereum/EIPs/issues/225
Trevor Oakley