Bitcoin Forum
December 18, 2017, 05:29:53 PM *
News: Latest stable version of Bitcoin Core: 0.15.1  [Torrent].
 
   Home   Help Search Donate Login Register  
Pages: [1]
  Print  
Author Topic: версии клиентов  (Read 537 times)
Alda Gordaya
Member
**
Offline Offline

Activity: 65



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

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

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

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

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

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



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

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

Posts: 1513618193

View Profile Personal Message (Offline)

Ignore
1513618193
Reply with quote  #2

1513618193
Report to moderator
1513618193
Hero Member
*
Offline Offline

Posts: 1513618193

View Profile Personal Message (Offline)

Ignore
1513618193
Reply with quote  #2

1513618193
Report to moderator
1513618193
Hero Member
*
Offline Offline

Posts: 1513618193

View Profile Personal Message (Offline)

Ignore
1513618193
Reply with quote  #2

1513618193
Report to moderator
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction. Advertise here.
1513618193
Hero Member
*
Offline Offline

Posts: 1513618193

View Profile Personal Message (Offline)

Ignore
1513618193
Reply with quote  #2

1513618193
Report to moderator
1513618193
Hero Member
*
Offline Offline

Posts: 1513618193

View Profile Personal Message (Offline)

Ignore
1513618193
Reply with quote  #2

1513618193
Report to moderator
1513618193
Hero Member
*
Offline Offline

Posts: 1513618193

View Profile Personal Message (Offline)

Ignore
1513618193
Reply with quote  #2

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

Activity: 462


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

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

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

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

Activity: 65



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

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

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

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

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

Activity: 462


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

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

Activity: 252


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:  

Sponsored by , a Bitcoin-accepting VPN.
Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!