Pages:
Author

Topic: I2P & Bitcoin - page 9. (Read 26330 times)

legendary
Activity: 1498
Merit: 1021
Was mich nicht umbringt macht mich stärker [F.N.]
January 25, 2013, 12:29:54 AM
#2
Очевидно потому, что серверная часть крутиться под JVM ?
giv
sr. member
Activity: 254
Merit: 251
January 24, 2013, 12:19:28 PM
#1
Update 30.01.2013
Добавлена ссылка на bitcoind.
Update 01.02.2013
Теперь после перезапуска сервиса I2P кошелек нормально восстанавливает соединения.
Теперь bitcoin-qt и bitcoind будут в одном архиве.
Update 08.02.2013
Большое обновление:
реализованы входящие i2p-соединения,
добавлена возможность генерации i2p-адресов (опция -generatei2pdestination),
добавлена возможность запускать кошелек с постоянным i2p-адресом (опция -mydestination),
много мелких исправлений и улучшений.
Update 12.02.2013
Критическое обновление.
При определенных условиях было возможно обращение к несуществующему сокету.
Проблема устранена.
Update 13.02.2013
Небольшое обновление qt-клиента для linux (косметические улучшения), демон можно не обновлять.
Добавлены исполняемые файлы для Windows!
Update 19.02.2013
Увеличена константа, отвечающая за вероятность коннекта между клиентами
Исправлены ошибки, иногда мешавшие коннекту между клиентами
Update 24.02.2013
Переход на версию 0.8
Update 02.03.2013
Добавлена ссылка на патч-файл.
Update 04.03.2013
В исходники вшито несколько i2p-адресов. Теперь можно не указывать опцию -addnode!
Бинарник для линукса собран с той же версией BDB, что и у разработчиков биткоина - теперь базы полностью совместимы (кроме peers.dat). Возможно, потребуется перекачать все блоки (или скопировать их из оригинального клиента)
Мелкие исправления/улучшения.
Update 08.03.2013
Релиз 0.1
Update 28.03.2013
Портированы изменения из официального клиента 0.8.1
Бинарники собраны с поддержкой QR-кодов.
Update 04.07.2013
Релиз 0.2
Улучшена работа с I2P (скорость коннекта, стабильность работы)
Добавлены индикаторы в GUI: количество I2P-коннектов, I2P/не-I2P соединение, static/dynamic I2P-адрес.
Добавлена вкладка для I2P настроек в меню "Опции...". Теперь многие настройки можно менять из GUI, а не только из командной строки.
Генерация нового и отображение текущего I2P-адреса из GUI.
Update 11.07.2013
Переход на 0.8.3
Update 13.09.2013
Переход на 0.8.5
Update 24.12.2013
Переход на 0.8.6

Ссылки:
Исходники:
https://github.com/VirtualDestructor/bitcoin-qt-i2p
http://git.repo.i2p/w/bitcoin-qt-i2p.git

Готовые сборки для Windows и Linux x64:
https://sourceforge.net/projects/bitcoinqti2p

Кто не в курсе, что такое I2P, могут просветиться здесь
https://ru.wikipedia.org/wiki/I2P
http://lurkmore.to/I2p
https://bitcointalksearch.org/topic/i2p-140885

Мой проект - это патч для стандартного Сатоши-клиента (aka bitcoin-qt/bitcoind). Пока проект больше напоминает Proof-of-Concept, чем готовое приложение. Однако, не стоит забывать, что сам биткоин-клиент всё ещё находится в бета-стадии, и никого это не смущает. Реализована работа через I2P безо всяких сторонних библиотек. В программе используется SAM bridge, входящий в дистрибутив самого I2P. Т.к. база блоков совместима со стандартным клиентом, вы можете использовать блоки от вашего обычного кошелька, чтобы несколько суток не тянуть всю базу через I2P.

Инструкция по установке на Linux (на примере Ubuntu 12.04):
1) добавляем ppa для i2p и bitcoin-qt
Code:
sudo apt-add-repository ppa:i2p-maintainers/i2p
sudo apt-add-repository ppa:bitcoin/bitcoin

2) обновляемся
Code:
sudo apt-get update
sudo apt-get upgrade

3) ставим пакеты (java должна подтянутся автоматически по зависимостям)
Code:
sudo apt-get install i2p bitcoin-qt

4) любым редактором от рута открываем файл /etc/default/i2p
Code:
  RUN_DAEMON="true"  <- выставить в true
...
  MEMORYLIMIT="xxx"  <- укажите здесь значение, в зависимости от количества оперативной памяти (256 или 512 будет достаточно)

5) теперь запускаем i2p
Code:
sudo service i2p start

Инструкция по установке на Windows:
1) качаем дистрибутив i2p только с официального сайта http://www.i2p2.de/download
2) если не установлена Java, установщик i2p сообщит об этом. Java надо скачать тоже с официального сайта http://java.com/download/
3) ставим сначала Java, потом I2P
4) идем Панель управления - Администрирование - Службы. В списке находим I2P, проверяем, что он запущен (если нет - запускаем).

Инструкция по настройке (общая для Windows и Linux):
1) после установки и запуска ждем минут 5, пока i2p загрузится и запустит все сервисы.

2) в браузере открываем странцу http://127.0.0.1:7657/configclients. Если страница не открывается, это значит, что i2p не запущен (возможно возникли какие-то ошибки). После того, как страница открылась возле пункта SAM application bridge необходимо нажать кнопку Start, после этого поставить галочку в столбце Run at Startup?, потом нажать кнопку Save Client Configuration.

3) нужно удалить файл peers.dat (если он есть), он лежит тут  C:\Documents and Settings\YourUserName\Application data\Bitcoin (Win XP)  | C:\Users\YourUserName\Appdata\Roaming\Bitcoin (Vista and 7) | ~/.bitcoin (linux). Это нужно сделать, т.к. формат сериализации сетевых адресов в оригинальном клиенте и в моем патче не совместимы. Внимание! Если этого не сделать и оставить файл, это может привести к зависанию bitcoin-qt+i2p! Эту процедуру нужно провести только один раз перед первым запуском bitcoin-qt+i2p, после первого запуска пропатченный клиент создаст свой peers.dat нужного ему формата.

4) скачать пропатченный бинарник по ссылке выше и запустить его (не запускайте исполняемые файлы с привилегиями суперпользователя/администратора!)
Code:
bitcoin-qt -onlynet=native_i2p
Если вы хотите работать только в I2P укажите опцию -onlynet=native_i2p, как показано в примере выше. Если вы хотите работать одновременно и в I2P, и в обычном интернете - не указывайте этой опции совсем. В таком случае ваш кошелек будет являться гейтом между I2P-подсетью биткоин и остальной сетью.

Замечания:
Если вы хотите помочь биткоину в i2p, вы можете сообщить ваш dest-hash или b32-адрес своего кошелька в этой теме или другим способом, чтобы я мог вшить его в исходники к следующему релизу. Для этого ваш кошелек должен быть запущен с постоянным i2p-адресом, как это сделать см. ниже.
Для Linux: запускайте кошелек с указанием полного пути к исполняемому файлу, или из текущей директории (./bitcoin-qt), т.к. если вы просто укажете имя исполняемого файла, то запустится стандартный bitcoin-qt (если он у вас установлен).

Изменения в стандартных опциях:
1) добавлены новые параметры командной строки и конфигурационного файла:
Code:
-i2psessionname - имя I2P-сессии. Нужно просто для красоты. Можно не указывать. Значение по умолчанию "Bitcoin-client".
-samhost - адрес хоста, на котором запущена служба SAM (см. п.2 инструкции по настройке). Можно не указывать. Значение по умолчанию "127.0.0.1".
-samport - номер порта для предыдущей опции. Можно не указывать. Значение по умолчанию "7656".
-mydestination - ваш полный destination (публичный+приватный ключ). Можно не указывать. Если не указан, то при каждом запуске биткоин-клиент будет генерировать для вас случайный destination. Подробнее про эту опцию, см. ниже (Запуск кошелька с постоянным I2P-адресом).
-generatei2pdestination - без аргументов. Если указана эта опция, то кошелек запустится только для генерации i2p-адреса, после этого закроется.
2) добавлено значение
Code:
native_i2p
для параметра -onlynet.
3) Во всех параметрах требующих IP-адреса теперь можно указывать destination hash: <512 символов>AAAA, или b32-адрес: <52 символа>.b32.i2p

Совместимость:
1) Все остальные опции, кроме указанных, остались без изменения и работают как раньше
2) База peers.dat не совместима в обе стороны между стандартным клиентом и моим патчем. Этот файл должен быть удален при переходе от стандартного клиента к пропатченному и обратно. Этот файл не содержит ценной информации, так что бэкапить его не обязательно.
3) Все остальные базы полностью совместимы с оригинальным клиентом.
4) Полная обратная совместимость протокола! Пропатченный клиент совершенно спокойно может подключаться к стандартному клиенту и наоборот. Никаких манипуляций с версиями протокола! Изменения в протоколе проявляются, только если оба кошелька являются пропатченными.

Запуск кошелька с постоянным I2P-адресом:
По умолчанию, если не указан параметр -mydestination, при каждом запуске кошелек будет генерировать случайный destination (i2p-адрес). В таком случае даже вы не сможете узнать с каким i2p-адресом запустится ваш кошелек. Это ещё больше анонимизирует работу с биткоином, если же для каждой транзакции ещё генерировать новый биткоин-адрес - деанонимизировать вас становится сильно проблематично. Однако, если же вы хотите помочь сети, опубликовав свой i2p-адрес, или вам просто нравится какой-то i2p-адрес, вам нужно запускать кошелек с постоянным i2p-адресом. Для этого нужно указать в опции mydestination полный destination, т.е. нужно указывать base64 dest-hash (b32-адрес указывать здесь нельзя!), с которым вы хотите запустить кошелек, склеенный с вашим закрытым (приватным) ключом от I2P туннеля.
Пример:
Запуск из командной строки:
Code:
bitcoin-qt -mydestination=SVAxpjZzKn~HjvuqpoX5Y948CQnrPpw~9Y9n7itkniijx3NbgTQGJVmZJoc1ERXE87CqcLeeaWtAwqIwhYXL5Y5XkvaUAlAA5BD-9afCmyP42rtEluQLBAprd70UuN20ujuVm0HPyKcIyezphMHsK~GbYMNFiyTz8ko~Kd2wHaeXKWQh6pXyjQJzT4Bwcv1Y9JtPC5b1P5VpwQaLlMJJvblRi8jbRAbimjsxxrMSG6YX8Ks99tsdnQ6YOHGzTPoGpHFgBiROSYwXtC~BbFSv0XfhmN17ZfG6ZCXTbp-xVs-4txSyS~hnS9dL9xHWIv9MNbJzZhI7YztxWgMR3ZNMwR-W2fUeHAcZusmvbm3r-NpIC0O0p9LDDcu7Vxszk~QD~qylFfIT3j8kwu4RDExgqyelVdXVVSlyriHWoIdt9BklqwI1dbAEoLAfG7IZ3921dP4-MH7~AS8Jn3foNe8CAUvu2baRNRIAu75GknCFV5gGIuRRJjFNnrt~vaZfIQP6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3HWfbGlqztnwMY3ChbVHkDwJv52n9ElA-cWCRJp8lquVU4H-l2kY5Me1QlpY~7qFy
Или можно указать в bitcoin.conf:
Code:
$ cat ~/.bitcoin/bitcoin.conf
mydestination=SVAxpjZzKn~HjvuqpoX5Y948CQnrPpw~9Y9n7itkniijx3NbgTQGJVmZJoc1ERXE87CqcLeeaWtAwqIwhYXL5Y5XkvaUAlAA5BD-9afCmyP42rtEluQLBAprd70UuN20ujuVm0HPyKcIyezphMHsK~GbYMNFiyTz8ko~Kd2wHaeXKWQh6pXyjQJzT4Bwcv1Y9JtPC5b1P5VpwQaLlMJJvblRi8jbRAbimjsxxrMSG6YX8Ks99tsdnQ6YOHGzTPoGpHFgBiROSYwXtC~BbFSv0XfhmN17ZfG6ZCXTbp-xVs-4txSyS~hnS9dL9xHWIv9MNbJzZhI7YztxWgMR3ZNMwR-W2fUeHAcZusmvbm3r-NpIC0O0p9LDDcu7Vxszk~QD~qylFfIT3j8kwu4RDExgqyelVdXVVSlyriHWoIdt9BklqwI1dbAEoLAfG7IZ3921dP4-MH7~AS8Jn3foNe8CAUvu2baRNRIAu75GknCFV5gGIuRRJjFNnrt~vaZfIQP6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3HWfbGlqztnwMY3ChbVHkDwJv52n9ElA-cWCRJp8lquVU4H-l2kY5Me1QlpY~7qFy
Первые 516 символов (SVAxp......~vaZfIQP6AAAA) - это открытый (публичный) ключ. Он также играет роль адреса в I2P-сети, он же - dest-hash. Оставшиеся символы и есть приватный ключ I2P-адреса. Чтобы начать использовать I2P-адрес, необходимо знать его закрытый ключ (иначе любой мог бы захватить чей угодно адрес). Т.е., сообщив кому-то свой закрытый ключ, вы фактически отдаете ему в пользование свой I2P-адрес. Поэтому не передавайте свой закрытый ключ никому. Биткоин-кошелек никуда не отправляет этот ключ, а только использует для авторизации у I2P-сервиса. Публиковать нужно только открытый ключ, т.е. только первые 516 символов. Так же эти 516 символов перед публикацией можно укоротить, превратив в b32-адрес, с помощью этого скрипта https://bitcointalksearch.org/topic/i2p-140885.msg1501489#msg1501489. Указанные выше публичный+приватный ключ НЕ являются верными, использовать их не получится, они указаны просто для примера. Простейший способ сгенерировать себе постоянный адрес - запустить кошелек c параметром -generatei2pdestination. Вам будет показан сгенерированный адрес+приватный ключ, которые можно скопировать в конфиг-файл, а также base64-адрес и b32-адрес, которые можно опубликовать.

Инструкции по сборке для linux:
0) установить необходимые библиотеки для сборки биткоина, никаких дополнительных зависимостей мой патч НЕ добавляет.
1) перейти в директорию с исходниками и запустить скрипт 1.build-unix.sh
Code:
./1.build-unix.sh

Инструкции по кросскомпиляции для windows под линуксом:
0) установить mingw32
1) скачать зависимости скриптом 1.env-setup.sh (нужно выполнять только один раз)
Code:
./1.env-setup.sh
2) собрать зависимости скриптом 2.build-deps.sh (нужно выполнять только один раз)
Code:
./2.build-deps.sh
3) собрать биткоин скриптом 3.build-linux-mingw.sh
Code:
./3.build-linux-mingw.sh

Все собранные бинарники будут сложены в директорию <директория с исходниками>/release
Скриптов для сборки под виндой у меня нет, т.к. для винды я собираю кросскомпиляцией, как показано выше.

ВНИМАНИЕ! Программа предоставляется "как есть" безо всяких гарантий. НЕ ЗАПУСКАЙТЕ ИСПОЛНЯЕМЫЕ ФАЙЛЫ С ПРАВАМИ СУПЕРПОЛЬЗОВАТЕЛЯ/АДМИНИСТРАТОРА!

Если Вам нравится мой проект, поддержите дальнейшую разработку 1JTtvgy5CzwnsRj3vtHACdyKWxgTnYn754

Примечание:
Ради справедливости, bitcoin-qt почти поддерживает i2p, хотя упоминание этого было выпилено из release notes. Но если открыть исходники, то можно увидеть, что работа в этом направлении велась. Однако, это была не нативная поддержка, а использовался GarliCat (https://www.cypherpunk.at/onioncat/wiki/GarliCat). Вообще, GarliCat является костылем для i2p, и это одна из главных причин, из-за которой от него отказались в биткойне (https://github.com/bitcoin/bitcoin/pull/1913). Upd: начиная с версии 0.7.2, упоминание i2p убрали не только из release notes, но и из исходников.
Pages:
Jump to: