На чём пишут блокчейны? Языки программирования
Введение
Во-первых, вот откуда можно почерпнуть данные по чейнам и/или языкам программирования:
- Общий список №01: https://chainlist.org
- Общий список №02 (из Китая): https://www.ccidgroup.com/info/1105/33813.htm
- EVM-список: https://bytwork.com/articles/blokcheyny-evm
- Блокчейн-проекты (компании) №01: https://golden.com/query/list-of-blockchain-companies-W9Z
- Список проектов №02: https://coinmarketcap.com
- Языки программирования в блокчейнах (англ.): https://appinventiv.com/blog/best-blockchain-programming-languages/
- Языки программирвания в блокчейн-проектах №01: https://medium.com/coinmonks/list-of-programming-languages-and-frameworks-used-in-41-crypto-projects-2b7223099c57
- Языки программирвания в блокчейн-проектах №02: https://mining-cryptocurrency.ru/yazyki-programmirovaniya-dlya-blokchejna-i-smart-kontraktov/
- Отчёт по языкам программирования за 2021 год: https://insights.stackoverflow.com/survey/2021#overview
Во-вторых, здесь речь идёт именно о блокчейнах, поэтому разного рода DAG-системы (IoTA, Byteball, Heshgraph, IoTeX, Holochain, etc.) в расчёт не приняты. DLT тоже опущены: XRP-ledger, ряд решений на IBM Hyperledger: тем более — все приватные (закрытые), корпоративные, подобные прочие решения, которые к блокчейнам не относятся. В-третьих, очевидные EVM-форки (Huobi ECO, OKeX-chain, Gate.io-chain, Harmony, Fantom, Aurora, etc.), кроме, пожалуй, L2-решений, но и из них не все взяты в расчёт. В-четвёртых, ряд решений объединены по понятным причинам: EOS, WAX (отчасти), Hive, Steem, Golos (отчасти); Arbitrum, Optimism, Loopring и другие, хотя не всегда это правильно в деталях (скажем, Polygon вынесен как яркий представитель Plasma-имплементаций) — в стратегии познания правильно точно. В-четвёртых, в расчёт приняты не самые популярные, но отличающиеся от иных чейны: Lisk, Elrond, Cardano. В-пятых, ограничился списком пока из 20, потому как общий анализ требует куда больше времени и сил:
- Avalanche;
- Bitcoin;
- BNB chain (BSC);
- Cardano;
- Celo;
- Cosmos (Tendermint, Terra, etc.),
- Elrond;
- EOS (Bitshares, Steem/Golos, Hive, Wax);
- Ethereum (EVM-совместимые);
- Lisk;
- Near;
- Nem;
- Neo;
- Polkadot;
- Polygon;
- Solana;
- Telos;
- Tezos;
- Waves;
- Zilliqa.
Приступим же?
Avalanche
Общие данные можно найти:
- В WP: https://assets.website-files.com/5d80307810123f5ffbb34d6e/6008d7bbf8b10d1eb01e7e16_Avalanche%20Platform%20Whitepaper.pdf
- Wiki: https://en.wikipedia.org/wiki/Avalanche_(blockchain_platform)
- Github: https://github.com/ava-labs/
- API: https://docs.avax.network/build/avalanchego-apis/
Базовый язык: Go (https://github.com/ava-labs/avalanchego). Помимо него есть:
- TypeScript;
- JavaScript (Vue);
- Python.
И, конечно же, в Avalanche есть есть Solidity, поскольку есть EVM-модуль: https://github.com/ava-labs/avalanche-smart-contract-quickstart.
Отмечу недавнюю фичу (2020): “являясь, по сути, AWS-для-финансов, Avalanche призвана обеспечить передовую инфраструктуру для создания децентрализованных финансовых приложений (DeFi), позволяя любому человеку запускать собственные блокчейны с пользовательскими валидаторами и выпускать активы в соответствии с любыми требуемыми функциями и правилами, включая пользовательские виртуальные машины и программируемое соблюдение законодательства”, — что фактически превращает ряд функций блокчейна в облачный сервис.
Bitcoin
Здесь всё немного сложнее, но в целом можно выделить:
- C++;
- C;
- Python.
Безусловно, здесь велик вклад именно Си++, но, если хочется погрузиться глубже, то рекомендую изучить Taproot — там сокрыто много интересного и полезного:
- https://coinshares.com/research/taproot-explained-bitcoin-protocol-upgrade
- https://bitcoinist.com/does-taproot-actually-enable-smart-contracts-on-bitcoin-the-debate-rages-on/
BNB chain (BSC)
На самом деле — самый что ни на есть стандартный EVM-блокчейн, контролируемый через псевдо-PoS консенсус с минимальным количеством валидаторов, но из-за популярности — отмечу и его. Языки следующие:
- Go;
- Typescript;
- Solidity.
Более того — можно даже разделить систему по этим языкам:
- Клиент BSC на основе форка go-ethereum, схема подписи ECDSA: Go;
- Javascript SDK для взаимодействия с чейном: Typescript;
- Genesis Contracts: Solidity.
Cardano
Собственно, с них когда-то всё и началось. Судите сами:
- Haskell;
- Javascript;
- Scala.
Неплохой набор…, если вы — высококлассный специалист. А если нет? Поэтому с одной стороны Cardano в 2021 году продвинулся по разработке больше всех (не факт, что дальше), но уже сегодня испытывает нехватку в трудовых резервах.
Celo
Здесь всё просто:
- Go;
- TypeScript.
Убедиться в этом тоже довольно легко: https://github.com/celo-org/celo-blockchain.
Cosmos
И хотя тут большая часть создаётся на Go: https://github.com/cosmos/cosmos-sdk, всё же есть и Rust-модуль: https://github.com/cosmos/cosmos-rust. Для Hub-ов же используется и Python.
Elrond
В этой системе помимо стандартных Go (https://github.com/ElrondNetwork/elrond-go) и Rust (https://github.com/ElrondNetwork/elrond-wasm-rs) есть много всего интересного, включая и WASM (https://ru.wikipedia.org/wiki/WebAssembly) именно.
EOS
Поскольку семейство Bitshares (Graphene) появилось давно — даже раньше Ethereum, хоть и смарт-контракты там в “нормальном” виде появились чуть позже, то ожидаемо применение:
- Си++;
- TypeScript.
Ethereum
Пожалуй, это самая развитое семейство (EVM) блокчейнов, кто бы и что бы ни говорил, поэтому и языков здесь несколько:
- Go (https://github.com/ethereum/go-ethereum);
- C++;
- Solidity (https://github.com/ethereum/solidity).
Безусловно также, что именно Solidity — простота этого языка — помогли вырваться Эфиру на почётное второе место в ТОП-е криптовалют и на много лет — на первое место именно с точки зрения развитости экосистемы самого чейна. От ETH2 многого не жду, тем паче — что даже название сменили, пока меняли, но всё же очевидно, что В. Бутерин лучше других подошёл к проблеме шардинга, обновления консенсуса, а значит — и ко всем иным вопросам, связанным с этими двумя.
Lisk
Не думаю, что этот блокчейн популярен, но то, что он полностью создан на JavaScript / TypeScript, заслуживает внимание само по себе как факт: https://github.com/LiskHQ.
Near
В связи с парадигмой “лучше проще, да лучше” также имеет несколько языков программирования для разных модулей — разные (https://github.com/near):
- Rust;
- JavaScript;
- TypeScript;
- Python.
При этом, благодаря новациям 2020 года, можно использовать и возможности EVM+Solidity: https://near.org/blog/running-ethereum-applications-on-near/.
Nem (Symbol)
Этот блокчейн ввёл много инноваций наряду и параллельно с другими: и пространство имён, и PoI-консенсус, и много другого https://nemproject.github.io/nem-docs/pages/Overview/docs.en.html. Отмечу ещё и вот что: “основная блокчейн-сеть NEM была написана на Java. Язык очень популярен в индустрии блокчейна; помимо НИХ он используется в контрактах IOTA, NEO и Hyperledger, IBM Blockchain, Tron, NEBLIO и Ethereum”, — но, как видим, сегодня это в большинстве случаев не так.
JS, которая, напомню, к Java не имеет никакого отношения, также в чейне используется по назначению: https://github.com/QuantumMechanics/NEM-sdk.
Neo
Этот блокчейн стоило указать хотя бы потому, что изначально он был написан на С# (си шарп). При этом “механизм написания смарт-контрактов NeoContract поддерживает такие языки программирования, как C#, VB.Net, F#, Java, Kotlin и Python”.
Polkadot
Это ещё один ярый приверженец Rust: https://github.com/paritytech/wasmi. По данным Гитхаба также используются:
- JavaScript;
- TypeScript;
- C++;
- Shell.
Polygon
Оставил его, так как он есть наследник Plasma. В остальном — всё довольно прозаично и нужно лишь открыть гит:
- Go;
- JavaScript;
- TypeScript;
- Rust;
- Solidity.
Пожалуй, добавлю лишь лучшую статью по L2, написанную на русском языке: cyberacademy-dev.medium.com/what-is-blockchain-layer-2-solutions-304408000675, где рассказано и про Polygon (Matic) в том числе.
Solana
Один из самых дорогих блокчейн проектов: Биткоин обошёлся в условный 0, Ethereum — в 18.5М, а вот Solana уже в сотни миллионов долларов. При этом стэк — вполне стандартный:
- Rust;
- JavaScript;
- TypeScript.
Telos
Когда-то, по данным https://blocktivity.info, сей блокчейн входил в ТОП перспективных. Стек основной у него следующий:
- Си++;
- JavaScript;
- TypeScript.
Фактически это форк EOS, созданный для совместимости с EVM-смарт-контрактами.
Tezos
Наряду с Ethereum, EOS, Cosmos, Polkadot, Waves этот блокчейн был создан благодаря эпохе ICO и прошёл много страданий, прежде чем закрепиться на крипто-Олимпе. Пожалуй, по всем параметрам — у него самый необычный стек:
Выделю отдельно следующее: “Michelson — низкоуровневый, специфический, стековый язык программирования, который используется для написания смарт-контрактов в блокчейне Tezos. Michelson был разработан для облегчения процедуры формальной верификации, позволяя пользователям подтверждать свойства своих контрактов”.
Waves
Здесь, пожалуй, стоит выделить язык смарт-контрактов RIDE. Помимо этого используются:
- Java;
- Scala;
- JavaScript;
- TypeScript;
- C;
- Go.
Подробней, пожалуй, можно почитать про RIDE: https://docs.waves.tech/ru/ride/ — тем более что где-где, а в Waves документации на русском языке хатает.
Zilliqa
Ещё один представитель экзотики:
- Си++;
- OCaml;
- Go;
- JavaScript;
- TypeScript.
На этом, пожалуй, и завершу.
Сводная аналитика
Итак, вот предварительные выводы:
- В начале были популярны блокчейны, написанные на Си++, в силу разных факторов, но прежде всего — безопасность и возможность написания обобщённого кода с помощью шаблонов (Bitcoin, Litecoin, Dogecoin, etc.: по наследству — и EOS, если понимать историю битшар и графен-семейства);
- Всё изменилось с приходом Ethereum & Solidity: EVM и вовсе стала переворотом в индустрии и выросли на поляне чейнов многие и на L1 и на L2 уровнях: BSC, Polygon, Arbitrum, Optimism, Fantom, Aura, Harmony, etc.:
- Сегодня же основная борьба идёт между Go — более “быстрым” в начале разработке, и Rust — более продвинутым в стилистике ошибок и других векторах;
- И всё же первое место с уверенным отрывом достаётся именно Go (см. таблицу ниже);
- При этом наработки Python, JavaScript для Web части и API — несомненны.
Вот какая предварительная и не во всём точная таблица в итоге получается:
Далее хотелось бы сопоставить это с рынком труда программистов, но не сегодня: не в этот раз — точно. Но точно будет и об этом публикация.
Что же дальше?
Дальше нужно изучить блокчейны, исходя из разных критериев:
- Консенсусов (PoI, PoS, PoW, etc.);
- Экологичности;
- Анонимности (LTC, Grin, Zcash, Monero, etc.);
- Уровней децентрализации;
- Других критериев…
И? И в итоге найти лучшие практики, чтобы понять перспективы развития: в конечном счёте от скорости и качества разработки зависит если не всё, то многое. Если вам это тоже интересна классификация — следите за этим Хабом, подписывайтесь на канал и
До!
Comments