ipfs {ls||gato||obtener} se detiene, mientras que gateway.ipfs muestra el archivo de inmediato

Tenga en cuenta que lo siento si esta pregunta se basa en ipfs, donde estoy usando integrado a Ethereum pero de una manera muy básica.

En este siguiente ejemplo: un cliente almacena un valor hash ipfs dentro de un contrato en ethereum. El servidor accedería al valor hash de ipfs ya almacenado utilizando el mismo contrato. Cuando se obtiene el valor hash de ipfs en el servidor, el nodo del servidor podría obtener el archivo ipfs utilizando ipfs {ls||cat||get} < hash_value >. Pero cuando lo uso ipfs {ls||cat||get} < hash_value >puede ocurrir una parada. Como estoy haciendo todo este proceso dentro de un problema de detención de secuencia de comandos, bloquea mi secuencia de comandos.

Por el contrario, podría obtener los archivos de ipfs.gateway(que usa puertas de enlace públicas) usando wget(este proceso obliga a las puertas de enlace a almacenar en caché el contenido hasta que su recolector de basura despeje el espacio en disco).

[P] ¿Debería tratar de recuperar archivos usando wget -r "https://ipfs.io/ipfs/< some_hash >"ya que su conexión parece más confiable que usando ipfs {cat||ls||get} < my_hash >? No estoy cuestionando ipfs, solo quiero saber cuál es la causa de este problema o dónde cometí un error y encontrar una solución. Hasta ahora, el uso wgetde through ipfs.gatewayresolvió el problema de detención al que me enfrento.

Tenga en cuenta que mi servidor se ejecuta detrás de un cortafuegos (en un dominio universitario, por lo que tiene que haber un cortafuegos). En mi caso, si mi cliente está en la misma LAN detrás del mismo firewall, no hay problema de detención entre mi cliente y el servidor. Pero si el cliente está fuera de la LAN, se detiene como expliqué. El problema puede surgir debido al firewall, pero las puertas de enlace públicas aún podrían recuperar los datos agregados a través de ipfs, desde mi servidor.

Explicación de esta pregunta de la siguiente manera:

Tengo un nodo de cliente y servidor. En ambas máquinas, en segundo plano, estoy ejecutando el siguiente comando como se indica en los ipfstutoriales:

ipfs daemon &

En mi máquina cliente, agregué un archivo en ipfs:

[~]$ ipfs add hello.c
added < my_hash > hello.c

Después de eso en mi servidor, intento recuperar el archivo:

[~]$ ipfs {cat||ls||get} < my_hash >
//HALTS.

El siguiente mensaje de error apareció varias veces.

14:18:59.986 ERROR  dht: no addresses on peer being sent!
                    [local:<peer.ID UjQJqD>]
                    [sending:<peer.ID aYb9MJ>]
                    [remote:<peer.ID Z86ow1>] handlers.go:75

ipfs {cat||get||ls} < my_hash >se detiene y espero mucho tiempo pero no pasa nada, tal vez después de unas horas funcione (el sistema actúa de manera poco confiable en mi caso). Esta situación es extraña porque el mismo proceso funcionaba antes sin ningún problema y de repente puede dejar de funcionar como debería.

Por otro lado, puedo ver el archivo de inmediato en mi navegador después de ipfs addque termine: url: https://gateway.ipfs.io/ipfs/< some_hash >o podría descargar el archivo usando wget -r "https://ipfs.io/ipfs/< my_hash >"".

Tenga en cuenta que si se agrega una carpeta, ipfs add -r folder_namese puede recuperar del hash de la carpeta con el siguiente comando:

wget -nH --cut-dirs=2 --no-parent -r -l 0 -nc "https://ipfs.io/ipfs/< folders_hash >"

Gracias por su valioso tiempo y ayuda.

Solo para su información, IPFS no está directamente relacionado con el tema de este sitio, sin embargo, hay una discusión en curso sobre meta a la que quizás desee unirse .
Lo siento, no estaba seguro de dónde podía hacer la pregunta. Hay una sección de problemas de Github ( github.com/ipfs/go-ipfs/issues ) pero no pude comunicarme con nadie allí. Estoy usando IPFS integrado a Ethereum, por lo que tal vez los problemas que surjan puedan ayudar indirectamente a Ethereum.
Estoy a favor de permitir preguntas de ipfs aquí. Mientras tanto, ¿podría insertar su pregunta en un contexto de Ethereum, tal vez?
Seguro que haré lo mejor que pueda.
@5chdn Esta pregunta no parece ser sobre Ethereum, la plataforma de aplicaciones descentralizada y la cadena de bloques habilitada para contratos inteligentes, dentro del alcance definido en el centro de ayuda.
Solo para verificar, en realidad no está ingresando este comando exacto, ¿verdad? ¿Pero sólo uno de esos - es decir cat, ls, get- comandos? es decir , ipfs cat <hash>no ipfs {cat||ls||get} <hash>?
@ 5chdn Lo hice, y tampoco estás llegando a ningún consenso allí, ¿no?
@RichardHorrocks: Sí, estoy usando ipfs cat <hash>o ipfs ls <hash>o ipfs get <hash>. Perdón por la confusion.
No hay problema, solo pensé en comprobar :)

Respuestas (1)

Puedes correr ipfs diag netpara ver si hay compañeros conectados. Si dice que hay pares conectados pero aún no puede recuperar los datos, es posible que la información del par haya caducado y que el nodo tenga problemas para conectarse con otros pares debido al firewall.