Bitcoin Forum
July 17, 2018, 04:34:55 PM *
News: Latest stable version of Bitcoin Core: 0.16.1  [Torrent]. (New!)
 
   Home   Help Search Donate Login Register  
Pages: [1]
  Print  
Author Topic: версии клиентов  (Read 537 times)
Alda Gordaya
Member
**
Offline Offline

Activity: 63
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
1531845295
Hero Member
*
Offline Offline

Posts: 1531845295

View Profile Personal Message (Offline)

Ignore
1531845295
Reply with quote  #2

1531845295
Report to moderator
1531845295
Hero Member
*
Offline Offline

Posts: 1531845295

View Profile Personal Message (Offline)

Ignore
1531845295
Reply with quote  #2

1531845295
Report to moderator
The World's Betting Exchange

Bet with play money. Win real Bitcoin. 5BTC Prize Fund for World Cup 2018.

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

Posts: 1531845295

View Profile Personal Message (Offline)

Ignore
1531845295
Reply with quote  #2

1531845295
Report to moderator
1531845295
Hero Member
*
Offline Offline

Posts: 1531845295

View Profile Personal Message (Offline)

Ignore
1531845295
Reply with quote  #2

1531845295
Report to moderator
1531845295
Hero Member
*
Offline Offline

Posts: 1531845295

View Profile Personal Message (Offline)

Ignore
1531845295
Reply with quote  #2

1531845295
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
Member
**
Offline Offline

Activity: 63
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: 258
Merit: 250


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!