Bitcoin Forum
May 09, 2024, 02:06:11 AM *
News: Latest Bitcoin Core release: 27.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: версии клиентов  (Read 620 times)
Alda Gordaya (OP)
Member
**
Offline Offline

Activity: 61
Merit: 10



View Profile
January 27, 2013, 05:27:33 AM
 #1

Что будет, если один из узлов сети будет иметь существенно отличающуюся версию?

https://en.bitcoin.it/wiki/Protocol_specification#version

вот если здесь будет не 106, а например 0x00FF0006 ?

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

Например, можно ли доопределить протокол так, если число отрицательное, то клиент работает в I2P и адрес будет добавлен дополнительным полем?



Вообще, такое впечатление, что адрес в протоколе используется только в этом единственном месте.
И непонятно для чего (зачем). ведь получающая нода итак знает свой адрес...

UPD:
нет, не в единственном, еще в сообщении addr
1715220371
Hero Member
*
Offline Offline

Posts: 1715220371

View Profile Personal Message (Offline)

Ignore
1715220371
Reply with quote  #2

1715220371
Report to moderator
1715220371
Hero Member
*
Offline Offline

Posts: 1715220371

View Profile Personal Message (Offline)

Ignore
1715220371
Reply with quote  #2

1715220371
Report to moderator
There are several different types of Bitcoin clients. The most secure are full nodes like Bitcoin Core, but full nodes are more resource-heavy, and they must do a lengthy initial syncing process. As a result, lightweight clients with somewhat less security are commonly used.
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
1715220371
Hero Member
*
Offline Offline

Posts: 1715220371

View Profile Personal Message (Offline)

Ignore
1715220371
Reply with quote  #2

1715220371
Report to moderator
Yurock
Sr. Member
****
Offline Offline

Activity: 462
Merit: 250


View Profile
January 27, 2013, 05:50:51 AM
 #2

Что будет, если один из узлов сети будет иметь существенно отличающуюся версию?
Как отреагирует получатель такого сообщения, это надо смотреть исходник. На сегодняшний день протокол Bitcoin определяется его реализацией в оригинальном софте.

Например, можно ли доопределить протокол так, если число отрицательное, то клиент работает в I2P и адрес будет добавлен дополнительным полем?
Думаю, это не понадобится. Узел и так будет знать, из какой сети к нему подключаются.

И непонятно для чего (зачем). ведь получающая нода итак знает свой адрес...
Иногда не знает. Например, если на компе нет глобальных IP-адресов, но входящие соединения пробрасываются через маршрутизатор.
Alda Gordaya (OP)
Member
**
Offline Offline

Activity: 61
Merit: 10



View Profile
January 27, 2013, 06:03:31 AM
 #3

Узел и так будет знать, из какой сети к нему подключаются.

тогда надо два протокола:
- один для IPv4/IPv6
- другой для I2P

потому что адреса в I2P длинные и просто так в поле для IPv6 не влезут

а где-то выше нужен будет дополнительный уровень абстракции
Yurock
Sr. Member
****
Offline Offline

Activity: 462
Merit: 250


View Profile
January 27, 2013, 08:36:14 AM
 #4

адреса в I2P длинные и просто так в поле для IPv6 не влезут
В общем, да.
giv
Sr. Member
****
Offline Offline

Activity: 254
Merit: 251


View Profile
January 27, 2013, 09:03:36 AM
 #5

Если вы внимательно посмотрите на мой скриншот здесь: https://bitcointalk.org/index.php?topic=138588.20, то увидите, что я так и делал - для своего пропатченного клиента ставил версию больше, чем у оригинального. Это нормально работало. Но сейчас я отказался от этой идеи. Изменение версии протокола хорошо, если ваш патч внедрен в основную ветку разработки, чтобы ВСЕ клиенты сети соответствовали принятой системе версионирования. Однако, если ваш патч еще не принят в основную ветку (или вы сами не хотите, чтоб он был принят), то манипулирование версиями может иметь непредсказуемые последствия. Простой пример: сейчас версия протокола 60002, для своей фичи вы выставляете версию, например, 100060002. После этого разработчики биткойна внедряют в протокол новую фичу и присваивают ему номер, например, 70003. Во всех стандартных клиентах появляется вот такой код:
Code:
if (nVersion >= 70003)
    DoSomething();
Клиент с вашим патчем будет соответствовать этому условию, однако, поддержки новой фичи еще в нем нет, а это непредсказуемое поведение. В лучшем случае ваш клиент забанят остальные клиенты за misbehavior. Поэтому в своем патче для i2p я отказался от идеи манипулирования версиями, буквально вчера я решил эту проблему немного другим способом, сегодня буду тестить.

If you like my I2P-patch for bitcoin-qt/bitcoind, please, donate my project! 1JTtvgy5CzwnsRj3vtHACdyKWxgTnYn754
----------------------
Если Вам нравится мой I2P-патч для bitcoin-qt/bitcoind, пожалуйста, поддержите мой проект! 1JTtvgy5CzwnsRj3vtHACdyKWxgTnYn754
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!