Что такое клиент Ethereum? Является ли это полным сетевым узлом, который может отправлять транзакции в блокчейн (если это правильный жаргон?), или это также может быть легкий JS-клиент, который подключается из браузера к полному узлу?
Может ли кто-нибудь пролить свет на то, какие клиенты существуют в настоящее время и какие роли они выполняют?
«Клиент Ethereum» — это просто термин. Это относится к любому узлу, способному анализировать и проверять блокчейн, его смарт-контракты и все, что с ними связано. Он также позволяет вам/предоставляет интерфейсы для создания транзакций и майнинга блоков, что является ключом для любого взаимодействия с блокчейном.
Как вы уже отметили, в настоящее время доступны три эталонные реализации:
Aleth
- Клиент C++: https://github.com/ethereum/aleth . (Ранее он был известен как cpp-ethereum
: https://github.com/ethereum/webthree-umbrella )Geth
- Golang клиент go-ethereum
проекта: https://github.com/ethereum/go-ethereumTrinity
- Клиент Python: https://github.com/ethereum/trinityВсе клиенты должны работать одинаково с точки зрения пользователя. Они предоставляют одинаковые интерфейсы и так далее. Например, если вы запускаете DApp, кошелек Ethereum или экземпляр браузера DApp, он не должен заметить никакой разницы в общении с клиентом.
Неофициальными клиентами, реализующими спецификацию желтой бумаги, являются:
Besu
- (бывший Pantheon
) клиент Java от PegaSys: https://github.com/hyperledger/besuEthereumJ
- Java-клиент от команды ether.camp: https://github.com/ethereum/ethereumjEthereumJS VM
- Виртуальная машина Javascript Ethereum: https://github.com/ethereumjs/ethereumjs-vmMana
- Эликсир от сети POA - https://github.com/mana-ethereum/manaMinimal
- Перейти на клиент umbracle - https://github.com/umbracle/minimalNethermind
- C#/.NET от NethermindParity Ethereum
- Клиент Rust от Parity Technologies: https://www.parity.io/ethereum/Неофициальные клиенты с графическим пользовательским интерфейсом:
Etherwall
, клиент Qt, как старые добрые биткойн-клиенты: https://github.com/almindor/etherwall Официальные эталонные реализации (CLI):
Pyethapp
- ( pyethapp has been deprecated
) Python-клиент pyethereum
проекта: https://github.com/ethereum/pyethappГрафические клиенты:
AlethZero
( Alethzero has been deprecated
): https://github.com/ethereum/alethzeroMist Browser
( Mist and Ethereum Wallet have been deprecated
): https://github.com/ethereum/mistСторонние клиенты:
ethereumH
- Клиент Haskell от consensys, но больше не разрабатывается: https://github.com/jamshidh/ethereum-client-haskell (проект давно не обновлялся)node-blockchain-server
- простой сервер Javascript: https://github.com/ethereumjs/node-blockchain-server (проект давно не обновлялся)ruby-ethereum
- Клиент Ruby: https://github.com/janx/ruby-ethereum (проект давно не обновлялся)ПРИМЕЧАНИЕ: все клиенты перечислены в алфавитном порядке.
Есть несколько «эталонных реализаций», которые поддерживает Ethereum Foundation.
Есть несколько причин для этого.
Биткойн был создан в изолированной среде, из-за чего в него вкрались некоторые ошибки, которые трудно исправить, поскольку они нарушают консенсус и требуют форка. Из-за этого любой, кто хочет создать приложение для поддержки протокола Биткойн, должен добавить эти ошибки, иначе они не смогут достичь консенсуса.
Благодаря поддержке нескольких клиентов с самого начала у вас есть несколько человек, интерпретирующих белую и желтую книгу, поэтому любые проблемы с консенсусом будут возникать намного быстрее, и они это сделали. К счастью, по мере развития технологий это происходит все реже и реже.
Если в какой-либо из реализаций Ethereum есть вектор атаки или ошибка, это означает, что с сетью обычно все в порядке, поскольку доступно большее разнообразие клиентов. Пока я пишу это, это, к сожалению, еще не на 100% верно, потому что у Geth есть большая часть сети, но мы надеемся, что в ближайшие месяцы использование других клиентов возрастет.
Не все языки хороши в одном и том же (некоторые мнения ниже)
Надеюсь, это поможет понять это.
Как вы упомянули, в вики упоминаются 3 официальных клиента.
кстати, поиск на гитхабе дал намного больше списка..
Это может быть связано с обновлением:
https://github.com/ethereum/wiki/wiki/Клиенты,-инструменты,-dapp-браузеры,-кошельки-и-другие-проекты
Я до сих пор не уверен, что может запустить полный клиент/узел. В Ethstats есть только Geth, Parity и C++, а также несколько неуказанных узлов:
На Ethernodes у Geth есть около двух третей, а у Parity большая часть другой трети. Я раньше не видел имен других клиентов. Я посмотрел пару крошечных. Moac просто предоставляет интерфейс для Geth, Parity и Eth. Точно так же Пирл (349) использует Geth . Eth (C++) имеет 9 узлов, ethereumJS — 27. Многие другие клиенты начинаются с g, что указывает на то, что они могут быть пользовательским/разветвленным клиентом Geth. Вот архивный снимок этой статистики.
Короче говоря, клиент Ethereum — это просто часть программного обеспечения, которое предоставляет приложению шлюз для взаимодействия с блокчейном ethereum.
Полные узлы, работающие на клиентах Эфириума, проверяют транзакции в Эфириуме. Существуют удаленные клиенты, такие как метамаски, которые зависят от полных клиентов для доступа к блокчейну. Удаленные клиенты не могут выполнять проверки в блокчейне, они обеспечивают функциональность кошелька, то есть они только создают/транслируют транзакции.
Клиенты могут быть написаны на многих языках, паритет (написанный на Rust) и Geth (написанный на golang) являются самыми известными...
В то время как Parity поддерживает все блокчейны на основе Ethereum, для разных блокчейнов вам требуются разные версии Geth.
Эти клиенты предоставляют API (JSON-RPC API), через который вы можете отправлять/получать запросы JSON.
Джон Литтл
Счастливая птица
tomasz_kajetan_stanczak
ДРП