#javascript #ipfs #js-ipfs
Вопрос:
В документации показано, что запрос должен быть в следующем формате:
завиток -X ПОСТ «https://ipfs.infura.io:5001/api/v0/pin/add?arg=amp;progress=»
В настоящее время я использую API JavaScript ipfs-http-клиент для выполнения Http-вызовов.
add
Функция из исходного кода, похоже, не предоставляет способа указать закрепление:
module.exports = (options) => {
const all = addAll(options)
return configure(() => {
return async function add (path, options = {}) { // eslint-disable-line require-await
return last(all({
path,
...options
}, options))
}
})(options)
}
Обновить
Я должен был яснее сформулировать свой вопрос. В основном я хочу иметь возможность «закреплять» свои хэши на узле IPFS. Похоже, существует два метода, которые позволяют вам добавить свой хэш в узел (один без закрепления, а другой с закреплением), оба из которых могут быть вызваны:
const result = await ipfs.add(data)
Мне интересно, как я должен выбрать, чтобы добавить хэш и закрепить его.
Ответ №1:
Вы можете добавлять и закреплять данные за одну операцию:
await ipfs.add(buf, {
pin: true // <-- this is the default
})
Или два:
const { cid } = ipfs.add(buf, {
pin: false
})
await ipfs.pin.add(cid)
В двух словах ipfs.add
добавляет содержимое в репозиторий узла IPFS и возвращает идентификатор CID этого содержимого, который можно закрепить во время добавления.
ipfs.pin.add
просто введите CID, что полезно, если у вас нет контента, но, возможно, вы хотите помочь воспроизвести его в сети. Сначала он проверит репозиторий, чтобы узнать, присутствует ли контент, — если нет, он найдет его в сети и добавит в репозиторий, а затем предотвратит сбор мусора (ручная операция, во время которой все не закрепленное содержимое удаляется из вашего репозитория).
Дополнительные сведения см. в документах для ipfs.add и ipfs.pin.add.
Комментарии:
1. Знаете ли вы, как долго сохраняется закрепленный контент, прежде чем его отправят на сбор мусора? В документации Infura говорится, что по крайней мере 6 месяцев, но я видел заявления людей о том, что они намного короче
Ответ №2:
Я никогда не использовал infura, и я действительно не понимаю, как должна работать их аутентификация (связанная страница не содержит много подробностей). Но если предположить, что он работает через токен аутентификации, это будет что-то в этом роде:
const IPFSClient = require('ipfs-http-client')
const { CID } = IPFSClient
const ipfs = IPFSClient({
url: new URL('https://ipfs.infura.io:5001'),
headers: {
authorization: `Bearer ${TOKEN}`
}
})
const cid = await ipfs.pin.add(new CID('QmWATWQ7fVPP2EFGu71UkfnqhYXDYH566qy47CnJDgvs8u'))
console.log(cid)
Клиент IPFS реализует тот же API, что и сам узел JS-IPFS, и вы можете найти подробную информацию о методах здесь https://github.com/ipfs/js-ipfs/blob/master/docs/core-api/
Если вы пытались найти, где что было отправлено на сервер, это происходит в addAll
функции, которая add
вызывала https://github.com/ipfs/js-ipfs/blob/c47a6335b77d5284711f13a83349000820f85775/packages/ipfs-http-client/src/pin/add-all.js#L10-L33
addAll
выводит несколько идентификаторов CID и повторно AsyncIterable<CID>
запускает и last(all(...))
просто выбирает последний CID
(будет только один идентификатор CID, потому add
что выводит только один).
Комментарии:
1. Я на самом деле заметил, что есть два
addAll
, один из которых вы связали, а этот без закрепления github.com/ipfs/js-ipfs/blob/. … Способ, которым вы их вызываете, кажется одинаковым, поэтому я не уверен, как вызвать функцию, которая закрепляет хэш.
Ответ №3:
Infura работает через токен аутентификации. Вы можете прочитать больше об этом в этом посте в блоге: https://blog.infura.io/part-2-getting-started-with-ipfs-on-infura/
Надеюсь, это должно прояснить любую путаницу и дать дополнительную информацию о том, как Infura работает с IPFS.
Комментарии:
1. Спасибо вам за ваш ответ. На самом деле меня больше интересовало, как «привязать» хэш к узлу IPFS.
2. Понял — прямо сейчас все загруженные файлы «закрепляются» при загрузке в IPFS через Infura, но в ближайшее время появятся некоторые обновления службы IPFS, в которых будет более подробная информация о закреплении