Что такое ERC-20
![]()
ERC расшифровывается как Ethereum Request for Comment. По сути, это стандарты, которые были одобрены сообществом и используются для передачи технических требований и спецификаций для определенных вариантов использования.
ERC-20, в частности, представляет собой стандарт, который описывает техническую спецификацию взаимозаменяемого токена.
Взаимозаменяемый токен — это токен, в котором все «части» токена одинаковы. Обмен 1 ETH на другой 1 ETH ничего не меняет. У вас все еще есть 1 ETH. Таким образом, ETH — это взаимозаменяемый токен. Вся фиатная валюта также взаимозаменяема.
NFT — это примеры невзаимозаменяемых токенов (подробнее об этом позже), где каждый токен отличается от другого токена.
Большинство токенов на Ethereum соответствуют спецификации ERC-20. Следование такому стандарту, как ERC-20, позволяет разработчикам приложений, использующим токены ERC-20, легко поддерживать все токены ERC-20 без необходимости писать для них специальный код по отдельности.
Например, децентрализованные биржи, такие как Uniswap, позволяют вам обменивать любой токен на любой другой токен. Это возможно только потому, что почти все токены соответствуют стандарту ERC-20, поэтому Uniswap может написать код, который работает со всеми токенами, соответствующими стандарту.
Настройка среды
- Нужно иметь установденный metamask
- Указать в качестве сети Goerli Testnet. Почитать можно тут
- Для тестовой разработки можно запросить немного эфира https://faucets.chain.link/
https://goerli.etherscan.io/token/0x326c977e6efc84e512bb9c30f76e30c160ed06fb?a=0x2b76d0d6c9ef2844bdf1edbbf4de8d1b4cadc2be
Теперь можно начать!
Пишем код в Remix
Создадим новый файл кон в проекте и назваоем его wb3.sol (вы можеет выбрать любое название). И добавим в него следующий код:
Разберем эти строчки кода
Эта строка указывает используемую версию компилятора Solidity. ^0.8.0 означает любую версию выше 0.8.0. Обычно вы хотите использовать последнюю версию компилятора Solidity, поскольку новая версия обычно подразумевает либо новые функции, либо оптимизацию.
Эта строка импортирует стандарт токена ERC-20 от OpenZeppelin (OZ). OZ — компания, занимающаяся безопасностью Ethereum. Среди прочего, OZ разрабатывает эталонные контракты для популярных стандартов смарт-контрактов, которые тщательно протестированы и безопасны. Всякий раз, когда реализуете смарт-контракт, который должен соответствовать стандарту, постарайтесь найти эталонную реализацию OZ, а не переписывать весь стандарт с нуля.
Класс описывает новый контракт с именем WB3Token в нашем файле Solidity. Кроме того, в нем говорится, что этот контракт является экземпляром ERC20. ERC20 в данном случае относится к стандартному контракту, который мы импортировали из OpenZeppelin.
По сути, мы расширяем стандартный контракт ERC20, импортированный из OpenZeppelin. Таким образом, все функции и логика, встроенные в ERC20, доступны для использования, и мы можем добавить к ним собственную пользовательскую логику.
Это конструктор, который вызывается при первом развертывании смарт-контракта. В конструкторе нам нужны два аргумента от пользователя — _name и _symbol, которые определяют имя и символ нашей криптовалюты. Например. имя = Ethereum, символ = ETH.
Сразу после указания функции-конструктора мы вызываем ERC20(_name, _symbol). Контракт ERC20, который мы импортировали из OpenZeppelin, имеет собственный конструктор, для которого требуются параметры имени и символа. Поскольку мы расширяем контракт ERC20, нам нужно инициализировать контракт ERC20 при развертывании нашего. Итак, как часть нашего конструктора, нам также нужно вызвать конструктор контракта ERC20.
Поэтому мы предоставляем в наш контракт переменные _name и _symbol, которые сразу же передаем конструктору ERC20, тем самым инициализируя смарт-контракт ERC20.
_mint — это внутренняя функция стандартного контракта ERC20, что означает, что она может быть вызвана только самим контрактом. Внешние пользователи не могут вызывать эту функцию.
Поскольку вы, как разработчик, хотите получить токены при развертывании этого контракта, мы вызываем функцию _mint, чтобы расперделить в msg.sender. _mint принимает два аргумента — адрес для распределения и количество токенов.
msg.sender — это глобальная переменная, введенная виртуальной машиной Ethereum, которая представляет собой адрес, по которому была совершена эта транзакция. Поскольку именно вы будете развертывать этот контракт, ваш адрес будет указан в msg.sender.
10 * 10 ** 18 указывает, что вы хотите, чтобы на ваш адрес было выпущено 10 полных токенов.
По сути, Solidity не поддерживает числа с плавающей запятой, то есть десятичные числа. Кроме того, поскольку токены ERC20 имеют дело с деньгами, использование чисел с плавающей запятой — плохая идея.
В качестве примера рассмотрим простое вычисление (1/3) * 3 на языке, который поддерживает числа с плавающей запятой. Как вы думаете, что это возвращает?
Если вы думали, что он вернет 1, вы ошибаетесь.
Из-за неточностей в вычислениях с плавающей запятой, поскольку компьютеры не могут представлять бесконечное количество цифр, (1/3) * 3 на самом деле дает что-то вроде 0,999999999.
Таким образом, при представлении финансовых валют десятичные дроби не используются из-за ошибок в расчетах. В качестве альтернативы мы представляем каждую валюту как сумму относительно наименьшей неделимой части этой валюты. Например, 1 доллар представлен как 100 центов, поскольку вы не можете получить меньше 1 цента при работе с долларами США. В этой системе счисления 1 цент — это всего лишь 1, а не 0,01. 0,33 доллара США представлены как 33, а не (1/3).
Токены ERC20 по умолчанию работают с 18 знаками после запятой. Таким образом, 1 полный WB3Token в данном случае фактически представлен как 10 ^ 18. Следовательно, чтобы получить 10 полных LW3Token, мы используем 10 * 10 ** 18.
Криптовалюта — как её создавать?
Я уверен, все знают, что такое криптовалюта, и возможно вы даже знаете, с чем её едят, и сами пользовались. В 2009 году благодаря Satoshi Nakamoto была создана всем известная Bitcoin, благодаря которой её автор заработал приличное состояние.

Конечно, сразу же после появления успешной инновации на рынке появляются другие похожие продукты. Так и произошло, тут же как грибы начали появляться новые криптовалюты, какие-то просто копировали идею Bitcoin и были бесполезной альтернативой (с технической точки зрения), какие-то привносили что-то своё. Но как ни странно, ажиотаж криптовалюты не стих. До сих пор в сети Интернет появляются всё новые и новые ресурсы, которые предлагают купить/пользоваться их валютой.
И следует логичный вопрос: если первая криптовалюта появилась в 2008 году, то ведь давно уже в сети Интернет должны существовать ресурсы с гайдами, уроками и примерами создания таких вещей.
Действительно, такое есть, но, к сожалению, все уроки сводятся к: “Придумай, купи на сайте, внедри” или “Придумай, скачай, пользуйся с друзьями” и так далее. И никогда не рассматривается подробный процесс создания. В общем-то, данной статьёй я и хотел бы исправить настоящее положение вещей и всё-таки привнести в русскоговорящее комьюнити такую информацию и рассказать людям, как же всё-таки можно создать свою валюту.
Причин создания криптовалюты может быть море:
1. Например, у вас есть свой игровой сервер, и, вы хотите таким образом создать реальную игровую валюту;
2. Вы действительно хотите на этом заработать;
3. Вас подогревает интерес и вы хотите просто знать нутро цифровой валюты;
Это первые причины, которые пришли мне в голову, если у вас есть и другие причины — пишите их в комментарии.
Признаюсь честно, всё же одна страничка с гайдом по созданию виртуальной валюты в Интернете мною была найдена. И, грубо говоря, эту статью можно назвать очень вольным переводом, только с дополнениями и тому подобное, так как в оригинальной статье много недочётов и пробелов.
По ходу написания статьи я также буду создавать криптовалюту для пущей наглядности, да и чтобы самому не сбиться. Ссылка на репозиторий.
Итак, начнём:
Скачивание базового кода
“First things first”, как написано в оригинальной статье, мы должны подготовить окружение для разработки. Если найти на github-е любую криптовалюту, то вы можете увидеть, какое огромное количество кода там храниться. Конечно же, мы не будем писать всё с нуля, не нужно изобретать велосипед, тем более мы и не сможем, пока сами хотя бы не попробуем сделать для него руль.
И пример криптовалюты мы легко можем найти на просторах того же github. Конечно же, такой код я нашёл и скопировал в свой репозиторий, и вам нужно склонировать его к себе. Кто умеет, те пропускают этот раздел, а кто не умеет, те читают спойлер:
Есть много способов получить исходный код с github, но я расскажу про самый понятный и простой:
Переходите по ссылке и находите кнопку “Download ZIP”. У вас скачивается ZIP-архив, внутри которого находится весь исходный код.
Если же вы всё-таки хотите научиться использовать все возможности github и git, то в помощь вам вот эта книга, но предупреждаю, что это затратно по времени.

Установка библиотек и зависимостей
Об этом говорить мне проще всего, так как сам работаю на Ubuntu. Установить зависимости не составляет труда:
1. Открываете терминал нажатием Ctrl+Alt+T;
2. Вводите следующее:
3. Жмёте Enter;
4. По ходу установки пакетов разрешаете установку и прочее-прочее.
Честно говоря, на Mac OS поработать возможности не было, так что я приведу вам ровно то, что было написано в оригинальной статье:
Чтобы установить библиотеки, от которых зависит базовый код, вам нужно воспользваться MacPorts или Homebrew. Сам автор статьи предпочитает MacPorts, объясняя это тем, что он проще, сразу устанавливает в /opt и потому что он устанавливает универсальные сборки по умолчанию. Если же вы выберите Homebrew, то автор советует установить флаг напортив 32-bit. Но пример по установке всё же приведён через MacPorts.
- boost (C++ libraries)
- db48 (Berkeley DB 4.8)
- qt4-mac (Open Source QT 4.8.4, includes qmake)
- openssl (ssl dev libraries)
- git (to move source back and forth to the repository)
- miniupnpc (UPNP dev libraries, optional–honestly I say skip this crap)
Этот раздел будет чуть позже. В общем-то, все библиотеки и зависимости пригодятся нам позже — при сборке готового продукта, так что с этим я повременю, дабы не путать вас и себя.
Теперь, когда подготовка закончена, подойдём к самому главному — к редактированию кода.
Замена названия
Сейчас вы должны задуматься, как бы вы хотели, чтобы ваша криптовалюта называлась. Придумали? Отлично.
Базовый код, который вы скачали, является готовой, но ещё не скомпилированной криптовалютой, и эта криптовалюта называется FooCoin. Всё, что вам нужно сделать: это заменить везде в базовом коде названия FooCoin, Foo и т.д. на название вашей криптовалюты. Конечно, делать это вручную в 10 000 строках кода – дело долгое и бессмысленное.
Хорошо, что добрые люди давно облегчили нам задачу и сделали программы, которые позволяют массово заменять строки в файлах на другие.
Моя криптовалюта называется PuffCoin. Вот список тех слов, которые я буду заменять на свои:
Советую и вам составить подобный список.
Для замены есть множество программ, я сейчас перечислю некоторые.
Для Linux есть Regexxer (бесплатно). Для Mac OS — TextWrangler (её предлагает автор оригинальной статьи, бесплатно). Для Windows нашёл много, например: Search and Replace, Actual Search & Replace, HandyFile Find and Replace, NHRPLC. Надеюсь, проблем с их использованием не будет.

Также стоит переименовать файл foocoin-qt.pro на ***coin-qt.pro, написав название нижним регистром.
Выбор и настройка сетевых портов
Отлично, теперь перейдём к самому важному и интересному — технической стороне кода. Надеюсь, что сейчас перед вами открыта папка с базовым кодом.
Так как любые операции с цифровой валютой так или иначе происходят через какую-либо сеть, то для нашего приложения нужно указать сетевые порты, через которые все операции будут происходить.
Вам нужно выбрать 4 порта: два для P2P и RPC, и два для тестовых P2P и RPC (testnet) соединений. Конечно, порты нужно выбрать такие, чтобы они точно не использовались каким-нибудь другим приложением. Для этого можете перейти по ссылке и посмотреть, какие порты свободны. Лично я сделаю так же, как и автор оригинальной статьи, и для RPC выберу 55883 порт, для P2P выберу 55884 порт, а для testnet: RPC — 45883, P2P — 45884.
Для указания того, что нужно использовать именно эти порты, нужно заменить несколько строчек в некоторых файлах по примеру, приведённому ниже:
Файл src/bitcoinrpc.cpp: (RPC порт)
В следующей строке вы можете указать любой первоначальный адрес, по которому вы можете проверить дополнительные адреса. Если честно, то я не понял, для чего это, но у меня работало всё и без этого, так что это не обязательный параметр. Если кто может объяснить, то отпишитесь в комментариях. Заранее спасибо!
Файл src/net.cpp:
Строка 1000:
Настройка генерации валюты
Теперь перейдём к настройкам самой генерации вашей валюты. Каждая валюта генерируется в блоках, а в каждом блоке находится какое-то количество валюты.
В следующей строке вы можете изменить количество валюты, которое выдаётся за генерацию одного блока. Для этого вам просто нужно изменить:
Файл src/main.cpp:
Так как наша валюта является “крипто-”, значит, все транзакции происходят закрыто и только с использованием ключей. У каждого пользователя валюты есть публичный и приватный ключи. В коде у нас есть возможность самим установить, какой первый байт публичного ключа у нас будет. Это может быть символ или цифра. Выбрать цифру или символ можно из таблицы. Слева от символов “Character” стоят их числовые значения “Value”. Выберите символ и запомните его числовое значение. Так как моя криптовалюта называется PuffCoin, то я выбрал себе символ P, а его значение — 22.
Теперь нужно заменить на ваше значение следующую строку:
Файл src/base58.h:
Замена иконок и изображений
На выходе у нас будет готовое GUI приложение для пользователя и консольное приложение, используемое как для сервера, так и для клиента.
Для GUI тоже есть ресурсы, которые находятся в папке src/qt/res. Там хранятся иконки для приложения. Вы можете заменить какие-нибудь иконки своими, главное – это такое же имя и разрешение.

Также автор оригинальной статьи предлагает воспользоваться специальной утилитой для конвертирования иконок.
На этом первая часть гайда закончена. Надеюсь, что вскоре появится и вторая. Постараюсь сделать это побыстрее.
Как создать собственную криптовалюту с помощью JavaScript

В настоящее время существует множество способов отправить кому-то деньги в цифровом виде. Большинство способов — через банк или несколько кошельков, но в последнее время стало популярным использование криптовалюты.
Криптовалюта — отличный способ анонимно отправлять деньги другим людям. Еще одним преимуществом криптовалют является то, что их сеть децентрализована, что означает, что никто не просматривает транзакцию и нет посредников. Некоторые люди думают, что это плохо, потому что большинство мошенников работают с криптовалютами, но некоторые думают, что это еще один шаг к конфиденциальности.
Сегодня мы собираемся создать криптовалюту с помощью JavaScript. Надеюсь, эта статья даст вам общее представление о том, как создать свою собственную криптовалюту, и вы сможете продолжить работу над этими навыками для улучшения конфиденциальности в своих финансах.
Требования
-
установлен на вашем компьютере
- Практическое знание Node
Вы всегда можете обратиться к репозиторию GitHub, если хотите взглянуть на код.
Погнали
Начнем с создания проекта Node. Перейдите в безопасный каталог и введите следующую команду, чтобы создать новый проект:
Это должно сгенерировать для вас файл. Если файл создан, то создается проект. package.json
Теперь давайте создадим новый файл с именем index.js . Сначала импортируйте пакет crypto , чтобы мы могли работать с хешами в нашем проекте. Пакет crypto помогает нам работать с хэшей, подписи и ключей. Это позволяет нам выполнять криптографическое преобразование в Node.
Это предустановленный пакет с Node, поэтому вам не нужно устанавливать его отдельно:
В этих проектах мы будем иметь дело с четырьмя классами:
- Transaction
- Block
- Chain
- Wallet
Сначала создадим Transaction класс.
Создание Transaction класса
Основными свойствами транзакции будут amount , senderPublicKey и recieverPublicKey . Итак, давайте настроим конструктор для свойств, чтобы мы могли использовать класс позже:
Нам также нужен метод для преобразования объекта класса в строку, чтобы преобразовать ее в хеш. Итак, мы создадим функцию для преобразования объекта в строку для дальнейшего использования:
Ваш полный Transaction класс должен выглядеть следующим образом:
Теперь мы можем хранить эти транзакции внутри блока, который мы создадим следующим.
Создание Block класса
Термин «блокчейн» означает именно то, что он звучит — цепочку блоков. Цепочка — это набор блоков (содержащих транзакции), связанных друг с другом, чтобы мы могли получить к ним систематический доступ.
Для начала давайте настроим конструкторы и свойства, которые мы будем использовать с Block классом:
В блоке у нас будет previousHash (хэш предыдущего блока в цепочке), transaction (объект класса Transaction ) и timestamp (время создания блока).
Теперь давайте создадим функцию для генерации хеша блока:
Сначала мы конвертируем объект в формат JSON. Затем мы создаем SHA256 хэш, который представляет собой метод хеширования, который нельзя расшифровать. Мы используем хеш для проверки блоков позже; он обеспечивает легитимность блока после проверки хэша.
Затем мы добавляем JSON в качестве данных, чтобы они были преобразованы в SHA256 хеш. Наконец, мы создаем HEX дайджест для хеша и возвращаем его.
Теперь снова мы создаем функцию для преобразования объекта блока в JSON:
Block Теперь ваш полный класс должен выглядеть так:
Теперь создадим Chain класс.
Создание Chain класса
Теперь, когда у нас есть Block готовый класс, мы можем заполнить эти блоки в файле Chain . Цепочка содержит каждый блок или каждую транзакцию, которая происходит в цепочке блоков. Как обсуждалось ранее, цепочка блоков содержит все блоки, связанные друг с другом, и нашему проекту нужен Chain класс, чтобы все блоки были собраны вместе в одном месте.
Поскольку нам нужно инициализировать цепочку только один раз, а не несколько раз, мы сразу же инициализируем ее в самом классе:
Давайте настроим наш конструктор так, чтобы у нас был готов первый блок в цепочке при каждом запуске программы. Это также настроит массив, в котором будут размещены наши блоки.
Мы делаем это, чтобы исключить любые ошибки в нашем проекте, потому что мы зависим от предыдущего блока в некоторых частях нашего кода, поэтому нам нужно сначала инициализировать фиктивный блок:
Теперь нам нужна функция для получения последнего хэша цепочки, чтобы использовать информацию в новых блоках:
Затем давайте создадим функцию, которая фактически создаст и вставит блок в наш цепочный массив:
Здесь мы сначала используем createVerify функцию из crypto пакета для проверки хэшей с открытыми ключами. Затем мы используем данные из JSON конкретной транзакции и, наконец, проверяем, предоставляя открытый ключ отправителя и подпись.
Это вернет логическое значение, которое мы можем использовать, чтобы проверить, была ли проверка успешной или неудачной. Если проверка прошла успешно, мы просто создаем новый блок с этой информацией и добавляем его в массив цепочки.
Теперь ваш Chain класс должен выглядеть так:
Создание Wallet класса
Теперь давайте создадим кошельки, которые пользователи смогут использовать для отправки криптовалюты другим людям. У каждого криптокошелька есть пара ключей: открытый ключ и закрытый ключ. Закрытые ключи используются для создания новых транзакций (например, для отправки криптовалюты), а открытый ключ используется для их проверки и получения криптовалют.
Давайте сначала настроим конструктор, чтобы мы могли сгенерировать пару ключей, как только кошелек будет запущен:
Здесь мы используем PEM формат ключей. Это хорошо известный формат, который можно сохранить на ПК пользователя. RSA Алгоритм позволяет создавать открытые и закрытые ключи.
Теперь давайте создадим функцию, которая поможет нам отправлять криптовалюту на другие кошельки в сети:
В приведенном выше коде мы берем amount и в recieverPublicKey качестве параметров и создаем новый объект из Transaction класса, используя эту информацию. Затем мы создаем хэш транзакции и подписываем его закрытым ключом. Наконец, мы добавляем его в цепочку с помощью insertBlock функции.
Тестирование
Теперь, когда все готово, вы можете все протестировать, создав кошельки и создав транзакции с их помощью:
В приведенном выше коде я создал кошельки со случайными именами (не совсем случайными, это злодеи в Наруто), а затем отправил деньги из одного кошелька в другой и, наконец, зарегистрировал цепочку, чтобы посмотреть, как она выглядит.
Для меня моя цепочка выглядела так (ваша может отличаться из-за разных хешей):
Что дальше?
Это были только основы создания криптовалют с использованием JavaScript. Вы не должны использовать это в производстве, потому что криптовалюты включают в себя много разных вещей, таких как майнинг, и при этом задействованы большие меры безопасности.
Если вы где-то застряли, вы всегда можете посетить репозиторий GitHub, чтобы взглянуть на код.
Простая алхимия. Как выпустить свою криптовалюту

В мае этого года аналитики венчурной компании Heisenberg Capital заявили, что в скором времени все криптовалюты исчезнут, останется лишь биткоин, и по мере того, как он будет приближаться к ценовой отметке в $100 000, альткоины будут постепенно вымирать. Заявление экспертов вызвало много споров. Пока первой криптовалюте сложно преодолеть отметку в $10 000, не говоря уже о сотнях тысяч.
Однако конкуренция на крипторынке действительно велика, выжить в цифровой индустрии и тем более пробиться в топ-100 рейтинга крупнейших по капитализации цифровых монет могут лишь те проекты, которые имеют реальные рабочие инструменты и продукты. Поэтому прежде чем выпускать очередную монету, необходимо понять, для кого она предназначена, какую пользу будет нести и какими преимуществами обладать. От цели зависит и способ создания криптовалюты.
Способы создания цифрового токена
В основу каждой монеты заложен программный код. В нем прописаны технические характеристики и параметры работы сети. Создавая криптовалюту, код можно прописать с нуля или, взяв исходный код биткоина или другого альткоина, переделать его под себя.
Первый вариант — наиболее сложный, подходит для команды опытных разработчиков, которые обладают большим запасом денежных средств и готовы потратить на выпуск криптовалюты от нескольких месяцев до нескольких лет.
Второй вариант — выпуск форка какой-либо цифровой монеты. Это, по сути, создание клона известного токена, но с исправлением критических ошибок и с добавлением нового функционала. К примеру, сегодня на рынке больше 50 форков биткоина, наиболее известные монеты: Bitcoin Cash, Bitcoin Gold, Bitcoin Diamond.
Чаще всего, создавая внутренний токен для какого-либо сервиса или проведения ICO, разработчики используют специальные блокчейн-платформы, такие как Ethereum, NEO, NEM, Ripple или Waves. Существуют и особые фреймворки для создания криптовалют.
Обычно такие сервисы содержат только структуру блокчейна и его базовые модули, а все дополнительные компоненты разработчики добавляют самостоятельно. Плюсы фреймворков в том, что они позволяют бесплатно применять готовые наработки. В отличие от использования других платформ для создания цифровых токенов, фреймворки позволяют не перегружать проект лишним функционалом.
Популярные ресурсы для создания криптовалюты
GitHub.com — крупнейший веб-сервис для хостинга IT-проектов и их совместной разработки. На нем можно подобрать подходящий код и найти нужное ПО, к примеру пакет программного обеспечения Open-Transactions, который позволяет создавать цифровые монеты.
Ethereum — блокчейн-платформа, на которой создано большинство токенов для проектов, вышедших на ICO.
The World Exchange — платформа, созданная командой Ripple. Сервис позволяет не только пополнять кошелек, покупать и продавать монеты XRP, но и создавать собственные токены.
Hyperledger Fabric — фреймворк для создания смарт-контрактов и криптовалют, поддерживаемый Linux Foundation.
Exonum — еще один фреймворк с открытым исходным кодом для создания приложений на основе блокчейна.
WAVES — российская блокчейн-платформа для разработки цифровых монет, не соответствующих стандарту ERC20.
Сколько придется заплатить за создание криптовалюты
За самостоятельный запуск токена c помощью измененного программного кода известной цифровой монеты, к примеру, на блокчейне Ethereum, придется заплатить около 2 ETH (около 27 тыс. рублей по курсу на данный момент). Создание уникального альткоина при наличии специализированных знаний обойдется в 0,5-1 BTC (300-600 тыс. рублей).
Стоит учитывать, что зачастую различные программы и сервисы по созданию криптовалют берут дополнительную плату за выбор алгоритма консенсуса, хеширования и изменение сложности майнинга, тестовой сети, а также премайн, оповещения о проблемах. За создание пула для майнинга и кранов для раздачи монет оплата отдельная.
Сегодня существует немало компаний, которые готовы создать криптовалюту под ключ. Мы запросили прайсы в некоторых фирмах и выяснили, что средняя стоимость варьируется от 3 до 8 млн рублей. Первичный этап проектирования и прототипирования криптовалюты оплачивается отдельно, он стоит приблизительно 600-800 тыс. рублей. Можно создать и свою команду, чтобы разрабатывать криптовалюту вместе. Средняя заработная плата блокчейн-разработчиков в Москве составляет 80-150 тысяч рублей.