Кубо: реализация IPFS в GO
Первая реализация IPFS.
Kubo был первой реализацией IPFS и сегодня является наиболее широко используемым. Реализация межпланетной файловой системы — стандарта Web3 для адресации контента, совместимого с HTTP. Таким образом, он поддерживается моделями данных IPLD и libp2p для сетевой связи. Кубо написан на Go.
Набор функций
Запускает узел IPFS как сетевую службу, которая является частью LAN и WAN DHT.
Функциональность HTTP-шлюза ( /ipfs
и /ipns
) для доверенного и ненадежного получения контента.
Реализация клиента и сервера HTTP Routing V1 ( /routing/v1
) для делегированного поиска маршрутизации
HTTP Kubo RPC API ( /api/v0
) для доступа к демону и управления им.
Интерфейс командной строки на основе ( /api/v0
) RPC API
WebUI для управления узлом Кубо
Поддержка блокировки контента для операторов публичных узлов
См. список
IPFS — это глобальная одноранговая файловая система с поддержкой версий. Он сочетает в себе хорошие идеи предыдущих систем, таких как Git, BitTorrent, Kademlia, SFS и Интернет. Это похоже на одиночный рой BitTorrent, обменивающийся объектами git. IPFS предоставляет интерфейс, такой же простой, как HTTP-сеть, но со встроенным постоянством. Вы также можете смонтировать мир в /ipfs.
Для получения дополнительной информации см.: https://docs.ipfs.tech/concepts/what-is-ipfs/.
Прежде чем открывать проблему, рассмотрите возможность использования одного из следующих мест, чтобы убедиться, что вы открываете тему в нужном месте:
Ошибки реализации kubo (ранее называвшегося go-ipfs) в этом репозитории.
Проблемы с документацией в вопросах ipfs/docs.
Проектирование IPFS в вопросах ipfs/specs.
Исследование новых идей в вопросах ipfs/notes.
Задавайте вопросы и знакомьтесь с остальным сообществом на форуме IPFS.
Или пообщайтесь с нами.
Вехи на GitHub
Что такое Кубо?
Что такое ИПФС?
Следующие вехи
Оглавление
Проблемы безопасности
Минимальные системные требования
Установить
Установить Го
Загрузите и скомпилируйте IPFS
Поиск неисправностей
Кросс-компиляция
МакПортс
Никс
Домашнее пиво
Шоколадный
Совок
АрчЛинукс
Генту Линукс
Никс
Солус
openSUSE
Гикс
Щелчок
Убунту ППА
Обновление
Использование ipfs-обновления
Загрузка сборок с помощью IPFS
Докер
Официальные готовые двоичные файлы
Неофициальные пакеты Linux
Неофициальные пакеты Windows
Неофициальные пакеты MacOS
Сборка из исходного кода
Начиная
Использование
Некоторые вещи, которые стоит попробовать
Поиск неисправностей
Пакеты
Разработка
Карта реализованных подсистем
CLI, HTTP-API, схема архитектуры
Тестирование
Зависимости развития
Заметки разработчика
Информация для сопровождающего
Содействие
Лицензия
Пожалуйста, следите за SECURITY.md
.
IPFS может работать на большинстве систем Linux, macOS и Windows. Мы рекомендуем запускать его на машине с объемом оперативной памяти не менее 4 ГБ и двумя ядрами ЦП (kubo имеет высокую степень параллелизма). На системах с меньшим объемом памяти он может быть не совсем стабильным, и вы работаете на свой страх и риск.
Инструкции по канонической загрузке IPFS находятся по адресу: https://docs.ipfs.tech/install/. Настоятельно рекомендуется следовать этим инструкциям, если вы не заинтересованы в разработке IPFS.
Официальные изображения опубликованы по адресу https://hub.docker.com/r/ipfs/kubo/:
? Релизы
Теги latest
и release
всегда указывают на последнюю стабильную версию.
vN.NN
указывает на конкретный тег выпуска.
Это изображения производственного уровня.
? Мы также предоставляем экспериментальные сборки для разработчиков.
master-latest
всегда указывает на HEAD
master
ветки
master-YYYY-DD-MM-GITSHA
указывает на конкретный коммит из master
ветки
Эти теги используются разработчиками для внутреннего тестирования и не предназначены для конечных пользователей или производственного использования.
$ docker pull ipfs/kubo:latest$ docker run --rm -it --net=host ipfs/kubo:latest
Чтобы настроить свой узел, передайте необходимую конфигурацию через -e
или с помощью сценариев монтирования в /container-init.d
.
Узнайте больше по адресу https://docs.ipfs.tech/install/run-ipfs-inside-docker/.
Официальные двоичные файлы опубликованы по адресу https://dist.ipfs.tech#kubo:
Оттуда:
Нажмите синюю кнопку «Загрузить Кубо» в правой части страницы.
Откройте/распакуйте архив.
Переместите kubo ( ipfs
) на свой путь ( install.sh
может сделать это за вас).
Если у вас нет доступа к dist.ipfs.tech, вы также можете загрузить kubo (go-ipfs) с:
страница выпусков этого проекта на GitHub
/ipns/dist.ipfs.tech
на шлюзе dweb.link
IPFS имеет инструмент обновления, доступ к которому можно получить через ipfs update
. Инструмент не устанавливается вместе с IPFS, чтобы сохранить независимость этой логики от основной базы кода. Чтобы установить инструмент ipfs-update
, загрузите его здесь.
Перечислите доступные версии реализации Kubo (go-ipfs):
$ ipfs cat /ipns/dist.ipfs.tech/kubo/versions
Затем, чтобы просмотреть доступные сборки для версии из предыдущей команды ( $VERSION
):
$ ipfs ls /ipns/dist.ipfs.tech/kubo/$VERSION
Чтобы загрузить данную сборку версии:
$ ipfs get /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_darwin-386.tar.gz # 32-битная сборка darwin $ ipfs get /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_ $VERSION_darwin-amd64.tar.gz # 64-битная сборка Darwin$ ipfs get /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_freebsd-amd64.tar.gz # 64-битная сборка freebsd$ ipfs get /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$ VERSION_linux-386.tar.gz # 32-битная сборка Linux$ ipfs get /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_linux-amd64.tar.gz # 64-битная сборка Linux $ ipfs get /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_linux -arm.tar.gz # linux Arm build$ ipfs get /ipns/dist.ipfs.tech/kubo/$VERSION/kubo_$VERSION_windows-amd64.zip # 64-битная сборка Windows
АрчЛинукс
Генту Линукс
Никс
Солус
openSUSE
Гикс
Щелчок
Убунту ППА
# pacman -S кубо
https://wiki.gentoo.org/wiki/Кубо
# выйти -a net-p2p/kubo
https://packages.gentoo.org/packages/net-p2p/kubo
С помощью чисто функционального менеджера пакетов Nix вы можете установить kubo (go-ipfs) следующим образом:
$ nix-env -i kubo
Вы также можете установить пакет, используя имя его атрибута, которое также является kubo
.
Пакет для Солуса
$ sudo eopkg install kubo
Вы также можете установить его через центр программного обеспечения Solus.
Пакет сообщества для go-ipfs
Пакет сообщества для go-ipfs не устарел.
Больше не поддерживается, см. обоснование в kubo#8688.
Домашняя страница PPA на Launchpad.
sudo add-apt-repository ppa:twdragon/ipfs обновление sudo apt sudo apt установить ipfs-kubo
sudo suecho 'deb https://ppa.launchpadcontent.net/twdragon/ipfs/ubuntu <> main' >> /etc/apt/sources.list.d/ipfsecho 'deb-src https://ppa. launchpadcontent.net/twdragon/ipfs/ubuntu <<ДИСТРО>> main' >> /etc/apt/sources.list.d/ipfsexitsudo обновление apt sudo apt установить ipfs-kubo
где <
— кодовое имя вашего дистрибутива Ubuntu (например, jammy
для 22.04 LTS). Во время первой установки сценарий обслуживания пакета может автоматически спросить вас, какой сетевой профиль, модель учета ЦП и/или существующий файл конфигурации узла вы хотите использовать.
ПРИМЕЧАНИЕ . Этот метод также может работать с любым совместимым дистрибутивом на основе Debian, в котором есть libc6
и APT в качестве менеджера пакетов.
Шоколадный
Совок
Больше не поддерживается, см. обоснование в kubo#9341.
Scoop предоставляет кубо как kubo
в своей корзине «дополнительно».
PS>совковое ведро добавить экстры PS> совок установить кубо
МакПортс
Никс
Домашнее пиво
Пакет ipfs в настоящее время указывает на kubo (go-ipfs) и поддерживается.
$ sudo port install ipfs
В macOS вы можете использовать чисто функциональный менеджер пакетов Nix:
$ nix-env -i kubo
Вы также можете установить пакет, используя имя его атрибута, которое также является kubo
.
Также поддерживается формула Homebrew ipfs.
$ brew install --formula ipfs
Для системы сборки kubo требуется Go и некоторые стандартные инструменты сборки POSIX:
GNU сделать
Гит
GCC (или другой совместимый компилятор C) (необязательно)
Чтобы выполнить сборку без GCC, выполните сборку с CGO_ENABLED=0
(например, make build CGO_ENABLED=0
).
Если вам нужно обновить: Загрузите последнюю версию Go.
Вам нужно будет добавить каталоги bin Go в переменную среды $PATH
, например, добавив эти строки в ваш /etc/profile
(для общесистемной установки) или $HOME/.profile
:
export PATH=$PATH:/usr/local/go/bin export PATH=$PATH:$GOPATH/bin
(Если у вас возникнут проблемы, см. инструкции по установке Go).
$ git clone https://github.com/ipfs/kubo.git $ cd kubo $ make install
Альтернативно, вы можете запустить make build
для сборки двоичного файла go-ipfs (сохранив его в cmd/ipfs/ipfs
) без его установки.
ПРИМЕЧАНИЕ. Если вы получаете сообщение об ошибке типа «неустранимая ошибка: stdlib.h: нет такого файла или каталога», значит, вам не хватает компилятора C. Либо перезапустите make
с CGO_ENABLED=0
, либо установите GCC.
Компилировать для другой платформы так же просто, как запустить:
make build GOOS=myTargetOS GOARCH=myTargetArchitecture
Для сборки в Windows доступны отдельные инструкции.
git
необходим для того, чтобы go get
получил все зависимости.
Менеджеры пакетов часто содержат устаревшие пакеты golang
. Убедитесь, что отчеты go version
не ниже 1.10. О том, как установить go, читайте выше.
Если вы заинтересованы в разработке, пожалуйста, установите также зависимости разработки.
Завершения команд оболочки можно создать с помощью одной из подкоманд ipfs commands completion
. Прочтите docs/command-completion.md, чтобы узнать больше.
См. папку «разное», чтобы узнать, как подключить IPFS к systemd или любой другой системе инициализации, которую использует ваш дистрибутив.
Чтобы начать использовать IPFS, вы должны сначала инициализировать файлы конфигурации IPFS в вашей системе. Это делается с помощью ipfs init
. См. ipfs init --help
для получения информации о необязательных аргументах, которые он принимает. После завершения инициализации вы можете использовать ipfs mount
, ipfs add
и любые другие команды для изучения!
Основное доказательство локальной работы ipfs:
echo "hello world" > hello ipfs add hello # This should output a hash string that looks something like: # QmT78zSuBmuS4z925WZfrqQ1qHaJ56DQaTfyMUF7F8ff5o ipfs cat
Для программного взаимодействия с Kubo см. наш список клиентов HTTP/RPC.
Если вы ранее устанавливали IPFS и столкнулись с проблемами при работе с более новой версией, попробуйте удалить (или создать резервную копию где-нибудь еще) каталог конфигурации IPFS (по умолчанию ~/.ipfs) и перезапустить ipfs init
. Это приведет к повторной инициализации файла конфигурации до значений по умолчанию и очистке локального хранилища данных от всех неверных записей.
Общие вопросы и запросы о помощи направляйте на наши форумы.
Если вы считаете, что нашли ошибку, проверьте список проблем и, если вы не видите там свою проблему, поговорите с нами в чате Matrix или сообщите о своей проблеме!
См. IPFS в документации GO.
Некоторые места, с которых можно начать работу с кодовой базой:
Основной файл: ./cmd/ipfs/main.go
Команды CLI: ./core/commands/
Bitswap (система торговли данными): go-bitswap
libp2p
libp2p: https://github.com/libp2p/go-libp2p
DHT: https://github.com/libp2p/go-libp2p-kad-dht
IPFS: команда Add
раскрыта
WIP : это схема архитектуры высокого уровня различных подсистем этой конкретной реализации. Чтобы быть в курсе того, как они взаимодействуют. Любой, у кого есть предложения, может оставить здесь комментарий о том, как мы можем это улучшить!
Источник
Описание: Пунктир означает «скорее всего, уйдет». «Устаревшие» части представляют собой тонкие оболочки некоторых команд для перевода между новой системой и старой системой. Затененные части на диаграмме «демона» предназначены для того, чтобы показать, что код один и тот же, просто мы включаем некоторые части, а некоторые отключаем в зависимости от того, выполняем ли мы на клиенте или на сервере.
make test
Если вы вносите изменения в буферы протокола, вам потребуется установить компилятор протокола.
Дополнительную документацию для разработчиков можно найти в документации.
Кубо обслуживается верфью.
Этот репозиторий является частью системы сортировки GO Triage компании Shipyard.
Процесс выпуска
Мы ❤️ всем нашим участникам; без вас этот проект не был бы тем, чем он является! Если вы хотите помочь, пожалуйста, посетите CONTRIBUTING.md.
Этот репозиторий подпадает под действие Кодекса поведения IPFS.
Члены сообщества IPFS оказывают поддержку Кубо на дискуссионном форуме здесь.
Нужна помощь с самой IPFS? Узнайте, где получить помощь и поддержку, по адресу https://ipfs.tech/help.
Этот проект имеет двойную лицензию на условиях Apache 2.0 и MIT:
Лицензия Apache, версия 2.0 (LICENSE-APACHE или http://www.apache.org/licenses/LICENSE-2.0)
Лицензия MIT (LICENSE-MIT или http://opensource.org/licenses/MIT)