- Майним Bitcoin с помощью бумаги и ручки
- Майнинг
- SHA-256
- Майним вручную
- Что всё это значит для проектирования «железных» майнеров?
- Заключение
- Как создать собственную криптовалюту с нуля: все способы и пошаговая инструкция
- Как создать криптовалюту с нуля
- Чтобы создать собственную криптовалюту :
- Сколько стоит сделать криптовалюту
- Где хранить созданные токены ERC20
- Как создать новую криптовалюту на готовых платформах
- Ethereum
- Как сделать криптовалюту самому на Ethereum
- Плюсы системы:
- Минусы системы:
- Ripple
- Waves
- NEO
- Как самому создать криптовалюту на NEO
- Плюсы системы:
- Минусы системы:
- Можно ли создать свою криптовалюту бесплатно
- Рекомендации
Майним Bitcoin с помощью бумаги и ручки
В один прекрасный момент мне захотелось прикинуть, насколько быстро можно майнить биткойны вручную. Оказалось, что для майнинга используется хеширование SHA-256, а оно достаточно простое и может быть вычислено даже без компьютера. Само собой, процесс очень небыстрый и совершенно непрактичный. Но, пройдя все шаги на бумажке, можно хорошо разобраться в деталях работы алгоритма.
Один криптографический раунд
Майнинг
Ключевая часть всей системы безопасности биткойна — майнинг. Основная идея заключается в том, что майнеры группируют биткойн-транзакции в один блок, который уже подвергают хэшированию неисчислимое число для нахождения очень редкого значения хэша, подпадающего под специальные условия. Когда такое значение находится, блок считается смайненным и попадает в цепочку блоков. Само по себе хэширование не несёт никакой полезной цели кроме увеличения сложности поиска правильного блока. Таким образом, это одна из гарантий того, что никто в одиночку с любым существующим набором ресурсов не сможет взять под контроль всю систему. Подробнее про майнинг можно почитать в моей прошлой статье.
Криптографическая функция хэширования на вход получает блок с данными, а выдаёт небольшой, но непредсказуемый, выход. Она спроектирована так, что не существует быстрого способа получить нужный выход, и вы должны продолжать перебор пока не найдёте подходящее значение. Биткойн использует SHA-256 в качестве такой функции. Причём для усиления стойкости SHA-256 применяется к блоку дважды и называется уже двойным SHA-256.
В биткойне критерием валидности хэша является достаточное число нулей в его начале. [1] Найти такой хэш так же сложно, как, к примеру, найти номер машины или телефона, заканчивающийся на несколько нулей. Но, конечно, для хэша это экспоненциально сложнее. На текущий момент, правильный хэш должен содержать примерно 17 стартовых нулей, чему удовлетворяет только 1 из 1.4×10 20 . Если провести аналогию, то найти такое значение сложнее, чем обнаружить конкретную частичку среди всего песка на Земле.
На схеме ниже показан типичный блок в цепочке и его хэш. Желтым выделены байты, которые и участвуют в процессе хэширования. В данном примере хэш валиден и имеет достаточное число нулей в своём начале. Однако это нечастый случай, и обычно майнеру приходится перебирать значение поля nonce или других доступных для изменения данных.
Структура биткойн-блока
SHA-256
Алгоритм работает с данными, разбитыми на куски по 512 бит (64 байт), криптографически их смешивает и выдаёт 256-битный (32 байта) хэш. SHA-256 состоит из относительно простого раунда, повторяющегося 64 раза. Снизу, как раз, и показан такой раунд, принимающий на вход 8 4-байтовых слов — от A до H.
Один раунд SHA-256 для восьми входных слов A-H. Схема нарисована kockmeyer, CC BY-SA 3.0.
Синие блоки нелинейно перемешивают биты для усложнения криптографического анализа. Причём для еще большей надежности используются разные функции перемешивания (если вы сможете найти математическую лазейку для быстрого генерирования валидных хэшей, то возьмёте под контроль весь процесс майнинга биткойнов).
Функция большинства (Ma блок) побитово работает со словами A, B и C. Для каждой битовой позиции она возвращает 0, если большинство входных битов в этой позиции — нули, иначе вернёт 1.
Блок Σ0 циклически сдвигает A на 2 бита, затем исходное слово A циклически сдвигается на 13 бит, и, аналогично, на 22 бита. Получившиеся три сдвинутые версии A побитово складываются по модулю 2 (обычный xor, (A ror 2) xor (A ror 13) xor (A ror 22)).
Ch реализует функцию выбора. На каждой битовой позиции проверяется бит из E, если он равен единице, то на выход идёт бит из F с этой позиции, иначе бит из G. Таким образом, биты из F и G перемешиваются, исходя из значения E.
Σ1 по структуре аналогичен Σ0, но работает со словом E, а соответствующие сдвиговые константы — 6, 11 и 25.
Красные блоки выполняют 32-битное сложение, формируя новые значения для выходных слов A и E. Значение Wt генерируется на основе входных данных (это происходит в том участке алгоритма, который получает и обрабатывает хэшируемые данные. Он вне нашего рассмотрения). Kt — своя константа для каждого раунда. [2]
На схеме сверху заметно, что только A и E меняются за один криптографический раунд. Остальные слова не меняются, но сдвигаются на выходе — старое A превращается в выходное B, старое B — в новое C, и так далее. Хотя отдельный раунд алгоритма не сильно изменяет данные, но после 64 раундов, входная информация будет полностью зашифрованной. [3]
Майним вручную
На видео я показываю как можно пройти все описанные шаги с помощью ручки и бумаги. Я выполнил первый раунд хэширования для майнинга блока. Заняло это у меня 16 минут, 45 секунд.
Немного поясню что происходит: я записал слова от A до H в шестнадцатеричной форме, и под каждым сделал перевод в двоичный вид. Результат выполнения блока Ma находится под словом C, а значения A после сдвигов и сам выход Σ0 располагаются над строкой с A. Функция выбора появляется под G, и, наконец, соответствующие сдвинутые версии E и значение после блока Σ1 идут над строкой с E. В нижнем правом углу произвёл сложение, результат которого участвует в вычислении и нового A, и нового E (первые три красных блока суммирования). Справа сверху я рассчитал новое значение A, а посерёдке располагается уже расчет нового значения E. Все эти шаги обсуждались выше и легко могут быть отслежены на схеме.
Кроме того раунда, что показан в видео, я провёл еще один — последний 64-ый хэшируюший раунд для конкретного биткойн-блока. На фотографии значение хэша выделено желтым. Количество нулей подтверждает, что это валидный биткойн-хэш. Заметьте, что нули располагаются в конце хэша, а не в начале, как я писал ранее. Причина заключается в том, что биткойн, просто-напросто, переворачивает байты полученные SHA-256. [4]
Последний раунд SHA-256, в результате которого виден успешно смайненный биткойн-блок
Что всё это значит для проектирования «железных» майнеров?
Каждый шаг в SHA-256 очень просто выглядит в цифровой логике — простые битовые операции и 32-битные суммирования (если вы когда-либо изучали схемотехнику, то, скорее всего, уже представили себе как это может выглядеть в железе). Поэтому ASIC-микросхемы реализуют SHA-256 очень эффективно, размещая параллельно сотни блоков исполнения SHA-256 раундов. Фотография ниже показывает микросхему для майнинга, которая может вычислять 2-3 миллиарда хэшей в секунду. На Zeptobars можно поглядеть больше фото.
Снимок кремниевого кристалла ASIC-микросхемы Bitfury, которая может майнить биткойны со скоростью в 2-3 гигахэшей в секунду. Картинка с Zeptobars. (CC BY 3.0)
В противоположность биткойну, Litecoin, Dogecoin и другие похожие альтернативные -coin системы используют алгоритм хэширования scrypt, в котором изначально заложена сложность реализации в железе. Этот алгоритм во время выполнения хранит в памяти 1024 разных значений хэша, а уже на выходе комбинирует их для получения конечного результата. Поэтому требуется куда больше памяти и схематики для вычисления scrypt-хэшей по сравнению с SHA-256-хэшами. Влияние изменения алгоритма хэширования наглядно видно при сравнении соответствующего аппаратного обеспечения для майнинга — версии под scrypt (Litecoin и прочие) в тысячи раз медленнее, чем версии под SHA-256 (биткойн).
Заключение
SHA-256 неожиданно оказался настолько простым, что может быть вычислен даже вручную (алгоритм на эллиптических кривых, который используется для подписи биткойн-транзакции, был бы куда более мучительным, так как содержит кучу перемножений 32-байтных чисел). Расчет одного раунда SHA-256 занял у меня 16 минут, 45 секунд. С такой производительностью хэширование всего биткойн-блока (128 раундов [3]) займёт 1,49 суток, то есть получаем скорость хэширования в 0,67 хэшей в день (на самом деле, конечно же, с практикой процесс бы ускорился). Для сравнения, текущее поколение биткойн-майнеров производит несколько терахэшей в секунду, что примерно в квинтиллион раз быстрее меня. Думаю, очевидно, что ручной майнинг биткойнов не очень практичен. [5]
Читатель с reddit’a спросил о моих затратах энергии. Так как я не прилагаю каких-то серьезных физических усилий, то можно предположить что скорость метаболизма будет 1500 килокалорий в день, тогда получаем, что ручное хэширование требует почти 10 мегаджоулей за хэш. Типичное потребление энергии для железного майнера — 1000 магехэшей за джоуль. Таким образом, я менее энергоэффективен чем специализированная железка в 10^16 раз (10 квадриллионов). Другой вопрос в стоимости энергии. Дешевым источником питания являются пончики по 23 цента за 200 килокалорий. Электроэнергия у меня стоит 15 центов за киловатт-час, что дешевле пончиков в 6.7 раз. В итоге, стоимость энергии в пересчете на хэш для меня, как человека-майнера, в 67 квадриллионов раз выше. Да-а-а, понятно, что я не ухвачу удачу за хвост ручным майнингом биткойнов, и это еще не учитывая стоимость бумаги и ручек!
Источник
Как создать собственную криптовалюту с нуля: все способы и пошаговая инструкция
Создание криптовалюты — это комплекс операций, включающий написание кода, создание инфраструктуры и вывод монеты на рынок. Новую монету запускают для:
- Проведения ICO;
- Применения во внутренней деятельности предприятия;
- Внедрения нового технического решения в код;
- Удачной маркетинговой кампании с последующим заработком.
Кто-то воспринимают запуск частного токена как новый опыт в программировании или маркетинге и делают это для прокачки навыков. Кто-то вообще создает монеты фана ради — как было с Dogecoin.
Как создать криптовалюту с нуля
Чтобы создать собственную криптовалюту :
- Определимся, для чего она нужна.
- Выберем способ создания криптовалюты.
- Получим уникальный код.
- Продумаем маркетинговую кампанию.
- Организуем листинг на биржах и платформах, если нужно.
Каждый из этих этапов мы подробнее разберем, чтобы облегчить креативному и предприимчивому читателю извилистый и тернистый путь автора криптовалюты.
Сколько стоит сделать криптовалюту
Перед тем как создать свою крипту , необходимо рассчитать, что для этого нужно приобрести из технического обеспечения, а что у вас уже есть, что будет оптимально для выполнения вашей задачи. От этих расчетов зависит, сколько стоит сделать криптовалюту .
Кроме технического обеспечения, стоимость создания криптовалюты зависит от затрат на электроэнергию, которая будет тратиться в процессе работы.
Курс цифровых денег не зависит от внешних экономических факторов, государств, скачков доллара, и ничем реальным (тем же золотом) цифровые деньги не обеспечиваются. До того как создать свою монету криптовалюты , вы должны быть готовы к тому, что ее курс зависит от спекуляций и человеческого фактора: есть интерес, ажиотаж, интрига – курс растет, нет интереса – падает.
Где хранить созданные токены ERC20
“Матби” — это онлайн-кошелек. С “горячим” кошельком все намного проще: интерфейс сайта или мобильного приложения позволяет с ходу понять, как перевести средства другому пользователю или узнать свой адрес кошелька, чтобы передать его отправителю монет.
Вы можете хранить созданные ERC20 токены непосредственно в интерфейсе онлайн кошелька, и отправлять их вашим контрагентом.
В случае, если у пользователя возникнут вопросы, то команда “Матби” подготовила подробную видеоинструкцию .
Как создать новую криптовалюту на готовых платформах
Чтобы добавить на ваш сервис внутреннюю монету, или собрать средства на реализацию через ICO, можно использовать специальные платформы.
Например, монеты TRON и EOS не были сначала классическими цифровыми валютами. Эти токены были разработаны для проведения взаиморасчетов между участниками проектов.
Популярные площадки для разработки:
Ethereum
Этот блокчейн разработал канадско-российский программист Виталик Бутерин. Он предложил технологию смарт-контрактов — самоисполняющихся алгоритмов, предназначенных для заключения и поддержания коммерческих контрактов в технологии блокчейн. Благодаря этой разработке сеть Ethereum стала второй по популярности платформой на крипторынке не только среди стартапов, желающих провести ICO, но и среди крупнейших разработчиков ПО, как Microsoft, IBM и Acronis.
Как сделать криптовалюту самому на Ethereum
Создать криптовалюту на Ethereum нетрудно, желательно знать язык программирования Solidity и придерживаться стандартов ERC. Популярный ERC-20 поддерживает многие функции.
- Сначала нужно придумать название валюты и выбрать тикер — три или четыре буквы, которые будут кратко обозначать монету.
- Затем нужно установить максимальное значение токенов: сколько их будет существовать в природе.
- Определить, будет ли у монеты деление на мелкие части, как рубль делится на копейки или доллар — на центы. Если да, то на сколько частей можно поделить одну единицу.
- Готовые данные нужно перенести в смарт-контракт на GitHub. Для этого необходимо скачать два документа, которые заканчиваются на .sol. Вставляем данные шести публичных переменных:
- name — имя токена;
- symbol — символ, сокращённое название;
- decimals — количество символов после запятой;
- totalSupply — общее количество единиц токена;
- balanceOf — маппинг (процесс составления схемы того, какими данными нужно обмениваться, как они будут использоваться), который содержит балансы адресов;
- allowance — маппинг, который содержит данные о разрешениях на трату средств с чужих адресов.
- Затем нужно задеплоить данные, то есть развернуть их на платформе. На выпуск монеты уйдет около 15–20 минут.
Плюсы системы:
Преимущества сети Ethereum лежат на поверхности: популярный блокчейн — самый надежный для создания криптовалюты.
Минусы системы:
- Из-за возросшей на 700% популярности сеть испытывает большие перегрузки. Все транзакции совершаются медленно — от 15 минут и более, они становятся невыгодными из-за постоянно возрастающей комиссии за переводы. Поэтому многие проекты закрываются на этапе создания и отказываются от идеи выпуска токенов.
- Сеть требует знаний, поэтому создание монет на Ethereum нельзя назвать процессом «в один клик».
Ripple
Платформа Ripple основана на доверии (trust). Реестр площадки (XRP Ledger) представляет собой «кредитную сеть». Он предназначен для выпуска «кредитов» для токенов, созданных на основе его платформы.
Своя криптовалюта нужна для услуг, товаров и другое. «Кредиты» представляют собой электронные долговые обязательства. Эмитент гарантирует выплатить держателю токена оговоренную ценность.
В Ripple вы не сможете сразу раздавать токены. Пользователь, выпустивший собственную валюту, должен создать «линию доверия» (trustline). При формировании последней получатель должен указать в настройках своего кошелька адрес «портмоне» эмитента.
Waves
Платформа отличается высокой скоростью транзакций и настолько удобными инструментами, что создать криптовалютный токен на ней может даже новичок. На этом ее плюсы заканчиваются.
Waves не выпускает токены стандарта ERC-20, как Эфириум. Значит, торговать ими можно только на внутренней бирже платформы DEX, аудитория которой не так многочисленна и платежеспособна, как аудитория Ethereum. Токены вы создадите, но с их реализацией возникнут трудности.
NEO
Другой альтернативной площадкой для создания криптовалюты является NEO. Её называют китайским Ethereum за схожую функциональность систем и предназначение.
Как самому создать криптовалюту на NEO
Создания собственных криптомонет не отличается от Ethereum. Единственное, для выпуска монет на NEO необходимо соблюдать стандарт NEP-5.
- Зайдите на сайт NEO, нажмите на вкладку Client.
- Скачайте документы из раздела NEO-GUE и NEO-CLI.
- Заполните данные о монете и поместите их на GitHub.
Плюсы системы:
В отличие от главного конкурента — Ethereum, китайская платформа NEO поддерживает несколько языков программирования: Java, F#, C#, Kotlin, VB.Net, Microsoft.net, Go и Python. Это выгодно компаниям, которые хотят выпустить свои монеты. NEO поддерживает 1 000 транзакций в секунду и не берёт транзакционные сборы.
Минусы системы:
- Чтобы запустить токен на NEO, нужно заплатить около 500 монет GAS — токен сети, с помощью которого взимается комиссия (в зависимости от курса). Создание собственных активов на этой платформе занимает много времени.
- Пользователи сомневаются в децентрализованности платформы, так как все монеты проекта принадлежат компании OnChain. Значит, выпущенную монету на NEO будет контролировать закрытое комьюнити компании, а это противоречит принципу криптовалюты.
Можно ли создать свою криптовалюту бесплатно
Без вложений возможен запуск форка криптовалюты или разработка полностью оригинального собственного блокчейна . Чтобы создать крипту, требуются углубленные знания в программировании, много времени и усилий.
Оптимально для новичков без крупного капитала — использование базы Ethereum.
Рекомендации
- Проекту требуется «фишка», которая позволит клиентам найти что-то новое.
- Создать идею помогут обсуждения на тематических форумах, где можно узнать основные нужды держателей цифровых монет.
- Со способом разработки необходимо определиться заранее.
- Подбирать команду нужно тщательно.
- До запуска нужно найти майнеров, чтобы сеть могла стабильно работать.
- Для привлечения инвесторов можно использовать краудфандинговые площадки.
Глядя на курсы криптовалют и прогнозы на биржах, у многих возникает желание создать собственную криптовалюту. В реальности процесс не сложен. Есть много инструментов и сервисов, которые позволяют без знаний и с минимальными вложениями запустить новую цифровую валюту.
Источник