Вот основной обзор того, как он в настоящее время работает. Кто-то работает Bitcoin в качестве сервера, с возможностью подключения пароля, чтобы принимать соединение от удаленных клиентов. Сервер создает уникальный блок на одного клиента, сохраняет его в памяти, и отправляет его клиенту в хэш. Затем клиент хешей блок, добавляет первый байт сгенерированного хэша в буфер, и создает metahash буфера, когда он заполнен, и посылает его на сервер для последующей проверки. Клиент увеличивает одноразовый номер блока после каждого хеша, но не изменяет блок временной метки. Сервер будет периодически отправлять новые блоки для клиента, чтобы хеш, либо через каждые 2 минут, или когда клиент запрашивает новый блок, так как Nonce близка к переполнению. Каждые 10 секунд, сервер выбирает клиент с старейшими верифицированными metahashes и проверяет последнюю metahash от этого клиента. Сервер будет также отправлять обновление статуса для каждого клиента каждые 10 секунд.
В настоящее время существует абсолютно никакого встроенные негативных последствия для клиента отправки ошибочных данных, кроме не отключаясь для отправки искаженных пакетов. Журнал отладки будет содержать информацию о узлов, хотя плохое поведение. Однако на этой ранней стадии развития, она может быть ошибки, вызывающие проблемы, а не злонамеренных клиентов, так что это должно быть принято во внимание.
Некоторые вещи, чтобы рассмотреть следующие вопросы:
- Сформированные монеты распределяются либо на основе хаш в вносящих вклад клиента / с делится на все узлы Хаш / с, или с помощью каждого из клиентов всего хешей способствовали разделенное на всех хешей вклад. Это означает, что сгенерированные монеты будут иметь Прецизионную весь путь вплоть до самого маленький десятичный Bitcoin позволяет. Из-за округления вопросы наследования с операций с плавающей точкой, сервер будет израсходовать все оставшиеся дробных монет, которые почти всегда один значное число в наименьшей позиции десятичной.
- Из-за активности metahashing и сетей, шахтеры не будут столь же быстро, как шахтеры строго посвященными блокировать хэширование.
- Сформированные блоки могут поразить максимальный размер блока, если подключены достаточно клиентов. Я не смотрел на это глубоко, чтобы увидеть, что предел, но точно знаю, что это может быть возможным, чтобы достичь этого предела.
- Поставленные удаленные клиенты просто доказательство концепции. Клиент может быть создан на любом языке, который способен обрабатывать подключения к сокету, и с помощью JSON, а также использовать любые средства генерирования блоков, доступные для него, таких как GPU.
- Биткойн двоичный могут иметь проблемы отображения и / или с использованием монет, сгенерированные, которые меньше 0,01 BTC. Я предполагаю, что они не будут отображаться в клиенте вообще. Я тщательно не проверял это.
- Вполне возможно, что сервер будет нуждаться в большой пропускной способности, если подключены многие клиенты
Параметры командной строки Bitcoin сервера
- -удаленный сервер Включение удаленного сервера
- -remotebindaddr = х.х.х.х Bind сервер конкретного адаптера. По умолчанию 127.0.0.1. Обратите внимание, что это будет принимать соединения только с локального компьютера.
- -remotebindport = ххххх Привязка сервера к определенному порту. Значение по умолчанию 8335.
- -remotepassword = ххххх Установите пароль для доступа к серверу. Значение по умолчанию является пустым паролем.
- -distributiontype = подключен | вклад Устанавливает метод, используемый для распределения Bitcoins. "связанный" будет распределять монеты только для тех клиентов, которые были связаны, когда блок решаемой был создан. Распределение основано на каждых подсоединенных клиент Рассчитанных скоростей хэша от общей скорости хеширования в то время создаются новый блок. "способствовали" будут начисляться все хеши посылаются на сервер для данного адреса с момента последнего сгенерированного блока. Клиент может свободно переподключить и будет продолжать накапливать хэши к любому адресу, указанному клиентом. Распределение монет с помощью этого метода основано на хэш начисленных по каждому адресу, с общими хэш заказа составляет все. Сервер будет сохранять значения, когда он выключается, и загрузить их резервные копии на старте.
- -resethashescontributed Сброс счетчика хэш вклада от каждого адреса.
Клиентские параметры командной строки
- -Сервер = х.х.х.х Адрес сервера для подключения. По умолчанию 127.0.0.1.
- -Порт = ххххх Порт сервера. Значение по умолчанию 8335.
- -пароль = ххххх Пароль при подключении к серверу. Значение по умолчанию является пустым паролем.
- -Адрес = XXXXXXX Bitcoin адрес, который вы хотите генерироваться монеты отправлены. Значение по умолчанию является пустым. Пустой адрес сделает долю клиента генерируемых монет хранятся на сервере.
- -нити = х Запустить количество шахтерских потоков. Значение по умолчанию равно количеству ядер на вашем процессоре при использовании шахтера процессора, или 1 при использовании GPU шахтера.
Существует одна проблема, которую я не смог решить. Функции хэширования, кажется, сломана в релиз сборки в Microsoft Visual Studio. В частности, Midstate буфер содержит фиктивный Midstate при отправке клиенту. Я проверил по вопросам буфера, а также вопросы инициализации, но я не вижу ни одного. При размещении ошибки проверки коды и протоколирования ПОСЛЕ хэширования происходит, результаты вышли правильно. Удаление проверки кода вызывает проблемы вновь появиться и Midstate быть ошибочным. Пойди разберись. Во всяком случае отладка строит не показывает эту проблему. Там, вероятно, это ошибка где-то, так что, может быть, кто-то может заметить это.
Загрузки (Обновлено 2010-12-24)
Pooled Miner Server / Client источник на основе SVN 205
Окна Бинарники
Смотрите следующую нить для получения подробной информации о подключении шахтера к серверу управляет doublec
Регистрация объединенного горнодобывающего усилия Bitcoin