Вернуться   Биткоин Форум > Разработка и Техническое Обсуждение
2 июня 2012, 4:13:17 AM   # 1
 
 
Сообщения: 266
Цитировать по имени
цитировать ответ
по умолчанию Re: Предложение по легкой добыче протокола по UDP

Взлом Биткоин адресов.
500 Биткоинов взломаны в "мозговом кошельке" с паролем "bitcoin is awesome"
Адрес кошелька: 14NWDXkQwcGN1Pd9fboL8npVynD5SfyJAE
Приватный ключ: 5J64pq77XjeacCezwmAr2V1s7snvvJkuAz8sENxw7xCkikceV6e
подробнее...


Всем кто хочет заработать Биткоины без вложений - рекомендую сайт http://bitcoin-zarabotat.ru
Уважаемые Bitcoin разработчики и владельцы майнинг,

Глядя @ работы http://www.tricone-mining.com/limp.html и имеющий опыт работы с материалом высокой производительности, я хотел бы отметить, что в целом многие из этих способов доставки акций весьма неоптимальные. В основном подача getwork / акция не требует таких объектов TCP, как ORDER отправленных пакетов / полученных от шахтера до bitcoind или бассейна. Таким образом, индивидуальный пакет подтверждение будет работать лучше, особенно, когда шахтер за плохое подключение к Интернету, как я.

Так что - у меня есть предложение, чтобы остановить Переизобретая колесо все время и сделать это один раз и на протяжении многих лет. Также протокол легковесного бы бремя смягчения DDos гораздо проще. В основном в отличие от реализации протокола HTTP, этот протокол, когда выполнена даже не очень опытный программист может легко выдержать гигабит въездного пропускной способности, просто бросить в лучшую сетевую карту на ваш сервер.

Так что - облегченный протокол getwork.

Одно пакет UDP может содержать несколько сообщений, создание до 1400 байт. 1400 Выбирается, потому что в основном, когда вы получаете доступ с нескольких виртуальных частных сетей, ваш MTU будет срезали 1500. Таким образом, 1400 является безопасным значением компромиссом. Но добыча клиент может исправить это значение одного из его выбора. И даже больше - сервер не должен отвечать с большим количеством сообщений в одном UDP пакетов, чем запрошено клиент! Так что можно было получить 8 работ на getwork запросов, только если клиент просил 8 getworks сразу.

Так что - UDP пакеты в основном конкатенации из нескольких сообщений следующего формата:
структура msg_header {
  неподписанные символ msg_size;
  неподписанные символ msg_opcode;
  символ без знака msg_context_uuid [16];
};

структура msg_work {
  структура msg_header HDR; / * Это в основном C-способ inheritation ... в C ++ это будет msg_work: msg_header * /
  символ без знака работы [80]; / * Последние 32-бит одноразовое значение, но может содержать последовательность битового потока разблокировки (специальную для EldenTyrell) * /
};

Opcodes:
ЗАПРОС РАБОТЫ:
msg_opcode == 1 - Запрос getwork, как правило, ответ 10, 11 или 12
msg_opcode == 10 - структура с msg_work вернулся, шахтер должен обрабатывать эту работу
msg_opcode == 11 - getwork отрицательного подтверждение - слишком много запросов, это опкод может быть отправлен в дружественные узлы
                             в случае слишком много запросов getwork, так шахтер не засада сервера больше;
msg_opcode == 12 - работа признана недействительной (когда новые расчеты блок начал);

ПОЛУЧЕНИЕ ОТВЕТА:
msg_opcode == 20 - ответ тип сообщения msg_work;
msg_opcode == 30 - успешно принята msg_work;
msg_opcode == 31 - доля отвергнута - черствый;
msg_opcode == 32 - доля отвергнуто - недействительно;
msg_opcode == 33 - доля отвергнута - неизвестно;
msg_opcode == 34 - доля отвергнута - продублировать;

ФЕДЕРАЦИЯ СЕРВЕРОВ ВНУТРЕННЯЯ СВЯЗЬ:
msg_opcode == 40 - Я хочу, чтобы обладать правом обрабатывать этот запрос getwork;
msg_opcode == 50 - У меня нет никаких возражений, продолжить с этим getwork;
msg_opcode == 51 - Я уже обработали, что getwork, уронить его;

ТИПИЧНЫЙ MINER <-> BITCOIND ИЛИ БАССЕЙН СВЯЗЬ:
msg_opcode == 1 - отправлено от шахтера до bitcoind занимает около 46 байт запрашивать работу;
msg_opcode == 10 - 126 байт (! только 126 не 2 KB) вернулся из пула Miner msg_work;
msg_opcode == 20 - msg_work найденного нонс вернулся из шахтера в bitcoind;
msg_opcode == 30 - доля хорошо - вернулся из bitcoind к шахтеру;

Потеря пакетов ВСЕГДА обрабатывается на стороне шахтера - если ответ не получен, запрос повторно попытался с некоторой задержкой,
с экспоненциальным снижением мощности.

Bitcoind / бассейн НИКОГДА не ретранслирует пакеты на своих собственных.

Для шахтеров за брандмауэром, специальный прокси-сервер может быть запущен, который преобразует сообщения от TCP к UDP протокола. Однако
Такие прокси будут подвергаться DDOS атак из-за самого TCP ... остерегайтесь ...

ТОГДА - как смягчение DDOS может быть реализовано в этом протоколе (не знаю, является ли это хорошо для бассейна или для bitcoind):

Сервер собирает кадр запросов на скажем, 100 миллисекунд. 1 Гбит Интернет, что может быть больше, чем 6'000'000 входящие сообщения для getwork. Затем сервер должен получить только 100 до 1000 лучших getworks по его мнению, из этого буфера и молча уронить остальные запросы. Как тогда сервер может выбрать? Очень просто - по приоритету сортировки - первый сервер будет ранжироваться выше тех, кто послал больше акций в течение последних 60 секунд, а затем сортировать по IP-адресу, где ф, запросившие меньше getworks бы ранжировать выше, чтобы отрезать ботнеты. Затем падение всех остальных 5'999'000 запросов. Но хорошо ... если такой протокол, используемый на всех этапах, он может легко обрабатывать 10'000 getworks в секунду на простом VPS!

Тогда - почему UDP?! Это более сложный?

На самом деле нет ... потому что в UDP он прост в установке репликации связи ... Скажите, вы добавите к вашей горной установки, подключенной к ADSL дополнительно GSM или 3G интернет ... И вы можете передать тот же запрос getwork более 2-х каналов одновременно, и 3-х серверов вашего любимого бассейна .... Это увеличит трафик, но и повысит надежность за счет ВЕЛИЧИНЫ ... Так что в то время как бассейны дерутся 1% больше или на 1% меньше, многие из шахтеров теряют около 2-3% для Интернет простои, некоторые с плохой интернет связи рыхлой около 10-12% (как я).

Для TCP на другой стороне вы бы всегда иметь хлопоты с сохранением состояния соединения и т.д. В то время как в UDP вы должны помнить _комплекта_ шахтер "адреса возврата" в течение примерно 60 секунд, в то время как получать пакеты от него актуальна. А вы бы транслировать ответы на все эти адреса.

Я собираюсь реализовать этот протокол в ближайшее время для собственных целей, но это смешно, когда я, наконец, преобразовать все, что в основе getwork HTTP-JSON.

Поэтому я хотел бы спросить:

1. Кто же поддержит такую ​​инициативу / имеют схожие проблемы?

2. Как код bitcoind должен быть представлен / одобрено? Является ли это дополнение при условии быть добавлены к существующим bitcoind? Как обслуживание отдельного патча-набор может быть довольно скучным ... Также может возникнуть вопросы о том, как это будет реализовано в наилучшем образе (скажем bitcoind в основном полагается на повышении :: ASIO).

С уважением,
В. // BitFury 🙂
bitfury сейчас офлайн Пожаловаться на bitfury   Ответить с цитированием Мультицитирование сообщения от bitfury Быстрый ответ на сообщение bitfury


Как заработать Биткоины?
Без вложений. Не майнинг.


2 июня 2012, 4:36:49 AM   # 2
 
 
Сообщения: 1988
Цитировать по имени
цитировать ответ
по умолчанию Re: Предложение по легкой добыче протокола по UDP

Получил 1806 Биткоинов
Реальная история.





К сожалению г-н V, но ваша конструкция имеет серьезный недостаток. Существует не эквивалент существующего долгосрочного опроса. Шахтер должен быть в состоянии зарегистрировать себя с майнингом получить уведомление о необходимости отказаться от текущей работы, потому что новый блок был найден.

Поэтому любой строгий ведущий-ведомый, запрос-ответ, пул-сервер всегда пассивный протокол будет в конечном итоге неоспоримым неэффективно.

Полная двухсторонняя связь имеет важное значение для любого эффективного дизайна.
2112 сейчас офлайн Пожаловаться на 2112   Ответить с цитированием Мультицитирование Сообщения от 2112 Быстрый ответ на сообщение 2112

2 июня 2012, 9:51:49 AM   # 3
 
 
Сообщения: 910
Цитировать по имени
цитировать ответ
по умолчанию Re: Предложение по легкой добыче протокола по UDP

Wrog нить, извините.
Isokivi сейчас офлайн Пожаловаться на Isokivi   Ответить с цитированием Мультицитирование сообщения от Isokivi Быстрый ответ на сообщение Isokivi

2 июня 2012, 10:27:55 AM   # 4
 
 
Сообщения: 504
Цитировать по имени
цитировать ответ
по умолчанию Re: Предложение по легкой добыче протокола по UDP

В целом очень хорошая идея, я прошу это давно уже. JSONRPC просто ужасно неэффективен для этой цели.
Однако я не совсем как некоторые детали реализации еще. Это должно быть продумано очень тщательно
TheSeven сейчас офлайн Пожаловаться на TheSeven   Ответить с цитированием Мультицитирование сообщения от TheSeven Быстрый ответ на сообщение TheSeven

2 июня 2012, 1:07:29 PM   # 5
 
 
Сообщения: 2296
Цитировать по имени
цитировать ответ
по умолчанию Re: Предложение по легкой добыче протокола по UDP

Ну ... Я собирался сделать / UDP бассейн / протокол с cgminer простой TCP LP много месяцев назад, но так и не удосужился к нему из-за очень мало интереса к ней
(Если смотреть трудно вам найти мой пост на эту тему в cgminer нити образом некоторое время назад)

Cgminer RPC API (я писал) использует простые TCP / IP сокетов, не локон / HTTP

Но термин "JSON" на самом деле не то, что актуально в этом, это просто сокет TCP или UDP против накладных расходов протокола HTTP
UDP, конечно, самый низкий накладные расходы TCP и UDP, но не так надежно, ... но я не думаю, что это такая уж большая проблема в эти дни

JSON SUX ИМО также (я только добавил его в качестве последнего средства опции к cgminer RPC API), но накладные расходы JSON мал по сравнению с накладными расходами протокола HTTP.

Тогда один из бассейнов (не могу вспомнить, какой) также реализован LP над UDP, который легко будет лучше, чем дерьмо, как LP делается в данный момент.
Kano сейчас офлайн Пожаловаться на Kano   Ответить с цитированием Мультицитирование сообщения от Kano Быстрый ответ на сообщение Kano

2 июня 2012, 1:40:52 PM   # 6
 
 
Сообщения: 266
Цитировать по имени
цитировать ответ
по умолчанию Re: Предложение по легкой добыче протокола по UDP

К сожалению г-н V, но ваша конструкция имеет серьезный недостаток. Существует не эквивалент существующего долгосрочного опроса. Шахтер должен быть в состоянии зарегистрировать себя с майнингом получить уведомление о необходимости отказаться от текущей работы, потому что новый блок был найден.

Поэтому любой строгий ведущий-ведомый, запрос-ответ, пул-сервер всегда пассивный протокол будет в конечном итоге неоспоримым неэффективно.

Полная двухсторонняя связь имеет важное значение для любого эффективного дизайна.

Там нет такого недостатка, если вы внимательно смотреть на протоколе.
Сервер может ответить msg_opcode == 12 (работа признана недействительной)
ПЕРЕД Miner послал свою работу.

Так шахтер будет немедленно запросить новую работу, используя getwork.

Однако существует недостаток для самого getwork, так как он должен послать некоторые учетные данные!

Так getwork запрос должен выглядеть следующим образом:

структура msg_getwork {
  структура msg_header HDR;
  символ без знака креди [32];
};

где креди может содержать 25-байтовый адрес Bitcoin или какое-то хэш-сумму, которую сервер может распознать
или 25-байтовый адрес Bitcoin и некоторая защита вызов анти-ддос, что легко проверить, но трудно
ковать.


2 Kano:
О UDP против TCP. UDP является _stateless_ так же, как IP. И это важная особенность, если бы передавать пакеты через несколько ссылок на несколько серверов для обеспечения надежности. Надежность таких передач является способ лучше, чем TCP. И работа / ответ просто не требуют, чтобы все функции TCP, как упорядоченное и гарантированной доставки. Потому что особенности приходит с точки зрения затрат - сервер / клиент оба должны поддерживать состояние соединения TCP. Еще хуже условие происходит с длинным-опросом по HTTP, до тех пор, опрос не вещь, что HTTP-дизайнеры имели в своих умах, они хотели изначально HTTP, чтобы быть лицом без гражданства, а люди потом повторно использовать HTTP против их первоначальной идеи проекта, для реализации AJAX и т.д.
bitfury сейчас офлайн Пожаловаться на bitfury   Ответить с цитированием Мультицитирование сообщения от bitfury Быстрый ответ на сообщение bitfury

2 июня 2012, 2:00:52 PM   # 7
 
 
Сообщения: 1988
Цитировать по имени
цитировать ответ
по умолчанию Re: Предложение по легкой добыче протокола по UDP

Эти две цитаты из недавних сообщений противоречат друг другу.

Потеря пакетов ВСЕГДА обрабатывается на стороне шахтера - если ответ не получен, запрос повторно попытался с некоторой задержкой,
с экспоненциальным снижением мощности.

Bitcoind / бассейн НИКОГДА не ретранслирует пакеты на своих собственных.
Там нет такого недостатка, если вы внимательно смотреть на протоколе.
Сервер может ответить msg_opcode == 12 (работа признана недействительной)
ПЕРЕД Miner послал свою работу.

Я понимаю, что вы пытаетесь изобрести Whell как ZeroMQ или DCOM; но специализирован для добычи Bitcoin. На основе моих предыдущих дискуссий здесь я более или менее убеждены в том, что вы собираетесь либо выходят из строя или заново почему 0MQ или DCOM, казалось бы, слишком сложны, и в процессе переописать большинство из них.

У меня был долгий и продуктивный разговор с г-ном слякоти здесь относительно более общего протокола, но с тем же требованием двухсторонним асинхронного обмена сообщениями. Я не собираюсь повторить мои пункты здесь, просто дать ссылку:



Благодарим Вас за допер.
2112 сейчас офлайн Пожаловаться на 2112   Ответить с цитированием Мультицитирование Сообщения от 2112 Быстрый ответ на сообщение 2112

2 июня 2012, 2:50:40 PM   # 8
 
 
Сообщения: 266
Цитировать по имени
цитировать ответ
по умолчанию Re: Предложение по легкой добыче протокола по UDP

Эти две цитаты из недавних сообщений противоречат друг другу.

Потеря пакетов ВСЕГДА обрабатывается на стороне шахтера - если ответ не получен, запрос повторно попытался с некоторой задержкой,
с экспоненциальным снижением мощности.

Bitcoind / бассейн НИКОГДА не ретранслирует пакеты на своих собственных.
Там нет такого недостатка, если вы внимательно смотреть на протоколе.
Сервер может ответить msg_opcode == 12 (работа признана недействительной)
ПЕРЕД Miner послал свою работу.

Я понимаю, что вы пытаетесь изобрести Whell как ZeroMQ или DCOM; но специализирован для добычи Bitcoin. На основе моих предыдущих дискуссий здесь я более или менее убеждены в том, что вы собираетесь либо выходят из строя или заново почему 0MQ или DCOM, казалось бы, слишком сложны, и в процессе переописать большинство из них.

У меня был долгий и продуктивный разговор с г-ном слякоти здесь относительно более общего протокола, но с тем же требованием двухсторонним асинхронного обмена сообщениями. Я не собираюсь повторить мои пункты здесь, просто дать ссылку:



Благодарим Вас за допер.

Я использовал ZeroMQ ... Это даст некоторое влияние на рамной конструкции, а также. А также рекомендовал бы прочитать об этом всем, кто не знает, что это такое:
http://www.zeromq.org/

А также эволюция - Crossroads.IO http://www.crossroads.io/ - где дизайнер ZeroMQ попал в неприятности с C ++ и проблемы со стабильностью.

Общая проблема - ZeroMQ базируется на TCP транспорта. Когда я был запущен судебный процесс выполнения работ по deepbit (200 Gh / с), а я получил около 195 Gh / с, а также объем работы, прыгали вверх и вниз, вверх и вниз в диапазоне 165 - 180 Gh / с. И это произошло в основном, потому что, когда интернет 3G воссоединиться, ZeroMQ имеет задержки на повторное подключение, лежащих в основе сокетов. Bitcoind кстати имеет такую ​​же проблему с коллегами это связывают, таким образом я получаю много сирот.

Это не работает хорошо, если вы до сих пор для передачи данных и Интернет работает на 20 секунд говорят, и воссоединяется в течение еще 20 секунд, давая вам новый IP-адрес каждый раз, и когда услуга доступна со значительными задержками. Это случается редко, но когда это происходит, производительность TCP значительно снижается, поскольку TCP измеряет перегрузку сети путем измерения потери пакетов - это другая точка против TCP, поэтому соединения обычно глохнет и все, а потом проходит некоторое время, пока вещь переподключение.

Что касается слякоти дискуссии - я вижу, что вы хотели изобрести более общий протокол там. Но это то, что мне не нравится, я предпочитаю подход, когда одна вещь решает одну простую задачу. Так один протокол для добычи полезных ископаемых, и т.д ... Они могут быть совместимы, сообщения могут быть объединены через те же трубы, но парсеры каждого протокола должны быть чистыми и простыми. В противном случае все, вероятно, будет ПОЛЕЗНЫМ и иметь некоторое неожиданное поведение. У меня есть твердое мнение, что лучшая особенность - не реализована функция. Так, по моей логике - это было бы лучше, чтобы не реализовать такой протокол, как я описываю здесь, а потому, что он не работает для меня другими способами (например, проходя ZeroMQ, например), и мне еще нужно решение и собирается реализовать его, Я собираюсь сделать это в наиболее простой и эффективной форме.

bitfury сейчас офлайн Пожаловаться на bitfury   Ответить с цитированием Мультицитирование сообщения от bitfury Быстрый ответ на сообщение bitfury

8 июня 2012, 9:26:48 PM   # 9
 
 
Сообщения: 565
Цитировать по имени
цитировать ответ
по умолчанию Re: Предложение по легкой добыче протокола по UDP

Я думаю, что это действительная идея и стоит делать ...

Если вы знаете nodejs вы можете сделать это на вершине https://github.com/bitcoinjs/bitcoinjs-server вместо того, чтобы возиться с C ++. Это будет гораздо быстрее.

Эндрю Воробьева сейчас офлайн Пожаловаться на Эндрю Воробьёв   Ответить с цитированием Мультицитирование сообщения от Andrew Воробьёв Быстрый ответ на сообщение Andrew Воробьёв



Как заработать Биткоины?

Bitcoin Wallet * Portefeuille Bitcoin * Monedero Bitcoin * Carteira Bitcoin * Portafoglio Bitcoin * Bitcoin Cüzdan * 比特币钱包

bitcoin-zarabotat.ru
Почта для связи: bitcoin-zarabotat.ru@yandex.ru

3HmAQ9FkRFk6HZGuwExYxL62y7C1B9MwPW