2016-11-30 3 views
0

Я хочу проверить, предоставлена ​​строка является допустимым IPFS или IPNS путь или нет.Как проверить предоставленную строку - допустимый путь IPFS или IPNS?

Например, когда я делаю:

ipfs ls <invalid-hash> 
//waits keep searching ... 

Это не возвращает ничего, но останавливается в программе, так что мне нужно будет ждать, не зная, данный хэш действителен или нет.

Я использовал: https://github.com/xicombd/is-ipfs, но строка invalid-hash, которую я передаю в функции, возвращает true, поэтому она не работает должным образом на моей стороне, никаких советов?

я мог ждать N-секунд в качестве порогового значения для ОПЗ, чтобы возвращать результаты для ipfs cat valid-hash, ipfs ls valid-hash но результаты ipfs cat valid-hash или ipfs ls valid-hash может занять больше времени, чем N-секунд, что не является доверительным полагаться на.

Например: (. Я бегу команды внутри приложения узла)

[$] node 
const isIPFS = require('is-ipfs') 
> isIPFS.multihash('QmYooooooooooooooooooooooooooooooooaoooooooooo') 
true //returns true but it is an invalid ipfs hash, should have returned false. 

Спасибо за ваше ценное время и помощь.

ответ

0

Похоже, что библиотека isIPFS проверяет достоверность хеша на синтаксическом уровне (начинается ли она с Qm? Это ожидаемая длина?), Но не проверяет, может ли файл быть адресован с помощью этого хэш.

На самом деле, я не думаю, что технически возможно утверждать, что никакой файл не может быть получен с использованием определенного хэша, кроме ожидания N секунд ответа.

Подумайте о IPFS так же, как вы думаете об HTTP. Иногда по некоторым причинам HTTP-запрос требует нескольких минут, но это не значит, что IP-порт, который вы пытаетесь подключить, ведет нигде. Ваш браузер или приложение решит тайм-аут через какое-то время, чтобы не ждать бесконечно, но вы не можете получить научное доказательство того, что ничего не может быть достигнуто с использованием определенного HTTP-адреса/IPFS-хэша.