1. На сколько я понимаю, рассчёт одного и того же блока идёт на нескольких компах, а финальную точку поставит только один и только он получит с этого профит. Это так?
Не так. Ещё раз,
в блоке есть:
- Хэш предыдущего блока
- Транзакции для истории
- Номер кошелька для получения вознаграждения
- nonce (счётчик)
Майнер миллионы раз в секунду пробует разные значения nonce в надежде, что в какой-то попытке SHA-256 блока окажется меньше числа, определяющего текущую сложность работы. Таким образом, все майнеры подписывают
разные блоки: даже если предположить, что список транзакций у них будет одинаков, у них будет отличаться номер кошелька для вознаграждения.
Процесс исключительно вероятностный, вероятность успеха при очередной попытке не зависит от предыдущих попыток. Это как результат подбрасывания монеты не зависит от предыдущих подбрасываний. Таким образом, нельзя сказать, что все пытались, а кто-то работу довёл до конца (поставил точку). Правильнее: все пытались, но повезло кому-то одному.
Поскольку процесс вероятностный, есть шанс, что два блока с номером N будут подписаны практически одновременно (содержимое их может отличаться). Тогда разные майнеры при расчёте блока N+1 будут ссылаться на разные блоки N (в зависимости от того, какой увидят первым). Цепочка разветвится. Сторонников одного из вариантов блока N будет большинство, у них будет больше шансов на генерацию очередного блока, в итоге их цепь будет расти быстрее. Клиент при скачивании истории предпочитает более длинный вариант цепи. Поэтому и нужно подтверждение транзакции из нескольких блоков: нужно удостовериться, что транзакция попала в победившую ветку цепи.
2. Где-то читал, что можно использовать не только свой комп, а некий кластер из нескольких компов. Хотелось бы подробностей из первых уст.
Допустим 10^4 майнеров майнят на одной машине каждый, у машин одинаковое железо. Тогда шанс у каждого получить вознаграждение в течение 10 минут работы - 10^(-4). Допустим, майнер хочет увеличить шанс на вознаграждение. Тогда он может запустить ещё одну машину, увеличив свой шанс до 2*10^(-4). Но даже при таких раскладах ему будет удаваться успешно подписать блок раз в несколько месяцев.
Допустим он предпочтёт получать малое вознаграждение, но стабильно. Тогда он может подключиться к mining pool - централизованному сервису для майнинга и майнить под его началом. Pool выдаёт прототип блока майнерам. Для учёта доли количества работы, совершённой каждым майнером, pool устанавливает сложность подбора хеша на несколько десятичных порядков проще, чем текущая сложность в сети, таким образом майнерам будет удаваться несколько раз в сутки подписать блок, который примет pool. Pool получает от своих майнеров множество блоков и проверяет их на соответствие сложности в биткоин сети, если подходит - success, pool заработал. Выплачивая награду своим майнерам с удачно подписанных блоков pool берёт небольшую комиссию за риск и свои услуги.
Я таким образом в 2011 за ~2 месяца намайнил через deepbit.net ~0.2BTC.