Bitcoin Forum

Local => Майнеры => Topic started by: Digor on March 02, 2015, 07:00:24 AM



Title: Помогите с написанием майнера (C#)
Post by: Digor on March 02, 2015, 07:00:24 AM
Здравствуйте. Поиск по форуму и гугление ничего не дали, поэтому решил создать этот топик. О Bitcoin знаю давно, всегда слежу за последними новостями, но с недавнего времени стал на теории изучать принципы его работы. И теперь я поставил перед собой задачу, написать свой простенький майнер, пусть он будет и не производительным, хочу на практике разобраться в принципах его работы. Но не знаю с чего начать. Как подключиться к сети, как получить текущую сложность, последний найденный блок и т.д. Я не знаю с чего начать и в какую сторону идти. Обязательно ли должен стоять биткоин кошелек и связываться через него? или можно обойтись и без него. Поделитесь кто что знает, буду очень признателен.


Title: Re: Помогите с написанием майнера (C#)
Post by: Digor on March 02, 2015, 08:18:57 AM
Ну что? никто не знает? может поделитесь любыми исходниками? библиотеки? любая инфа, как подключиться к сети биткоин, адреса, порты.


Title: Re: Помогите с написанием майнера (C#)
Post by: amaclin on March 02, 2015, 08:38:58 AM
Нууу.... Тут две подзадачи в одной задаче.

1) Подключиться к сети, скачать блокчейн, получать чужие транзакции.
2) Сформировать блок из транзакций (чужие + coinbase себе), подсчитать merkle hash, сформировать blockheader, потом в цикле от 0 до 4миллиардов перебрать все возможные nonce, пересчитать sha256d (header), если не найдется нужный хеш - начать заново

начать с изучения технических статей на bitcoin.it
потом желание делать это на C# само пропадёт


Title: Re: Помогите с написанием майнера (C#)
Post by: Digor on March 02, 2015, 08:54:12 AM
Нууу.... Тут две подзадачи в одной задаче.
1) Подключиться к сети, скачать блокчейн, получать чужие транзакции.
Вот этот пункт меня и интересует на данный момент, как происходят транзакции и формируются блоки более менее понятно. Сейчас передо мной задача именно подключения к сети.
Какие могут быть варианты?


Title: Re: Помогите с написанием майнера (C#)
Post by: amaclin on March 02, 2015, 09:10:28 AM
Quote
Вот этот пункт меня и интересует на данный момент, как происходят транзакции и формируются блоки более менее понятно. Сейчас передо мной задача именно подключения к сети.
Какие могут быть варианты?

Хардкодишь или записываешь в файл конфигурации десяток (сотню?) IP-адресов например отсюда
https://blockchain.info/connected-nodes
открываешь сокетное соединение по порту 8333
ну и дальше обмениваешься пакетами по протоколу, описанному вот тут:
https://en.bitcoin.it/wiki/Protocol_specification

Полезно будет поставить WireShark и внимательно посмотреть как работает Bitcoin Core Client
Там ничего сложного нет.



Title: Re: Помогите с написанием майнера (C#)
Post by: Digor on March 02, 2015, 09:42:10 AM
Спасибо за толчек :)
еще один вопрос, кошелек нужно ставить или можно обойтись без него?


Title: Re: Помогите с написанием майнера (C#)
Post by: amaclin on March 02, 2015, 09:45:58 AM
Спасибо за толчек :)
еще один вопрос, кошелек нужно ставить или можно обойтись без него?

Ну, вообще-то лучше поставить.
Тогда сможешь свою софтину коннектить не к какому-то далекому IP-адресу, а к 127.0.0.1:8333
Ну и база блоков в актуальном состоянии для майнера - это "маст хэв"

ЗЫ. Можно с тестнета начать.


Title: Re: Помогите с написанием майнера (C#)
Post by: Digor on March 02, 2015, 09:49:23 AM
А можно по подробнее о тестнет-е?


Title: Re: Помогите с написанием майнера (C#)
Post by: amaclin on March 02, 2015, 10:01:22 AM
А можно по подробнее об тестнет?

Блин, ну ты совсем нуп.
Кроме основной сети биткойна есть еще тестнет - тестовая сеть.
Если запустить клиента с параметром -testnet , то он соответственно законнектится к тестовой сети
Тестовая сеть имеет непринципиальные различия с основной сетью и предназначена именно для различных экспериментов
Тестовые койны принципиально не меняются ни на какую-другую валюту, их несложно раздобыть
В чем будет твоя выгода от использования тестовой сети:
1) блокчейн гораздо меньше - не 30 гигабайт, а один (точно не знаю сколько там)
2) сложность тестовой сети меньше - есть даже шанс что твой майнер сможет (если повезет) тебе тестовый блок смайнить

Короче, читай мануалы пока и разбирайся. Тут даже конкретных советов тебе трудно дать - куда ни ткнёшь - всё ты не знаешь.


Title: Re: Помогите с написанием майнера (C#)
Post by: Digor on March 02, 2015, 10:06:42 AM
Спс :) иду копать дальше ;D


Title: Re: Помогите с написанием майнера (C#)
Post by: A-Bolt on March 02, 2015, 10:17:17 AM
Ну что? никто не знает? может поделитесь любыми исходниками? библиотеки? любая инфа, как подключиться к сети биткоин, адреса, порты.

https://aois.blob.core.windows.net/public/Blockchain%20Programming%20in%20CSharp.pdf (https://aois.blob.core.windows.net/public/Blockchain%20Programming%20in%20CSharp.pdf)


Title: Re: Помогите с написанием майнера (C#)
Post by: Digor on March 02, 2015, 10:56:00 AM
Ну что? никто не знает? может поделитесь любыми исходниками? библиотеки? любая инфа, как подключиться к сети биткоин, адреса, порты.

https://aois.blob.core.windows.net/public/Blockchain%20Programming%20in%20CSharp.pdf (https://aois.blob.core.windows.net/public/Blockchain%20Programming%20in%20CSharp.pdf)

Спасибо за ссылку


Title: Re: Помогите с написанием майнера (C#)
Post by: Rabinovitch on March 05, 2015, 07:20:19 AM
К вашей удаче, на Земле существует человек, описавший это всё в подробностях:

http://www.righto.com/2014/02/bitcoin-mining-hard-way-algorithms.html (http://www.righto.com/2014/02/bitcoin-mining-hard-way-algorithms.html)

И даже описавший майнинг вручную, для большего погружения интересующихся в прроцесс: http://www.righto.com/2014/09/mining-bitcoin-with-pencil-and-paper.html (http://www.righto.com/2014/09/mining-bitcoin-with-pencil-and-paper.html)


Title: Re: Помогите с написанием майнера (C#)
Post by: yo-blin on March 10, 2015, 06:41:04 AM
https://github.com/lithander/Minimal-Bitcoin-Miner


Title: Re: Помогите с написанием майнера (C#)
Post by: Digor on March 10, 2015, 06:48:38 AM
Rabinovitch и yo-blin огромное Вам спасибо за информацию


Title: Re: Помогите с написанием майнера (C#)
Post by: Digor on March 10, 2015, 02:19:23 PM

1) Подключиться к сети


Может подскажете как подключиться к сети? Куда нужно обратиться чтоб получить блокчейн? Хочу разобраться именно в соло майнинге. Насколько я понимаю в таком случае обязательно нужен кошелек переведенный в режим сервера и уже к нему подключаться, если это не так, укажите верную дорогу ;D


Title: Re: Помогите с написанием майнера (C#)
Post by: amaclin on March 10, 2015, 03:08:02 PM
Quote
Может подскажете как подключиться к сети?

Я кажется ответил уже выше, не?

Хардкодишь или записываешь в файл конфигурации десяток (сотню?) IP-адресов например отсюда
https://blockchain.info/connected-nodes
открываешь сокетное соединение по порту 8333
ну и дальше обмениваешься пакетами по протоколу, описанному вот тут:
https://en.bitcoin.it/wiki/Protocol_specification

Полезно будет поставить WireShark и внимательно посмотреть как работает Bitcoin Core Client
Там ничего сложного нет.

Quote
Куда нужно обратиться чтоб получить блокчейн?
К одному из узлов сети. К любому.

 
Quote
Хочу разобраться именно в соло майнинге. Насколько я понимаю в таком случае обязательно нужен кошелек переведенный в режим сервера и уже к нему подключаться, если это не так, укажите верную дорогу ;D
Тебе нужна база блоков, а не кошелёк.
Но самый простой способ получить базу блоков - да, взять Bitcoin Core Client и выкачать её и сети


Title: Re: Помогите с написанием майнера (C#)
Post by: crazynetwork on December 23, 2016, 01:48:14 PM
Всем привет. Может кто знает где почитать подобную инфу про ZCASH или Ethereum ?
1. Куда конектиться
2. Какой ответ должен прийти (скорее всего json)