Как стать автором
Обновить

Комментарии 21

Такой статьи не хватало. Жаль только примера использования нет. На С++ или на JavaScript что-нибудь вроде HelloWorld.
1018 Wei = 1 Eth? а точно не 10^18? (в комментах автору оригинальной статьи на это указали несколько раз).

Примеры использования контрактов кстати есть на хабре (на Solidity — JavaScript-подобный язык), например habrahabr.ru/post/312008 и habrahabr.ru/post/327236

Ну и в дополнение про дыры — habrahabr.ru/company/neobit/blog/324456
Большое спасибо за отличную статью!
Годная статья, спасибо!
Теперь есть куда отправлять друзей вместо попыток самому донести информацию
прочитал минимум две трети статьи и как то понимания не прибавилось.
«время блокировки в Эфириуме намного ниже (примерно 15 секунд), чем для других блокчейнов, например, для биткоинов (примерно 10 секунд)» такие вещи вообще сводят с ума. примерно 15 секунд намного ниже чем примерно 10 секунд?
или перевод отвратительный или статья отвратительная.
Не стоит делать вывод на основании опечатки, во втором случае 10 минут, а не секунд. По поводу понимания: «На самом деле данная статья дает много пищи для размышлений. Вам совершенно не стоит переживать на тот счет, если вы осилили данную статью со второго или третьего раза. Я лично перечитывал yellow paper и white paper для Эфириума множество раз, прежде чем начал вникать в суть дела.»
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Забавно. Раньше мне эфириум представлялся биткоином 2.0, в котором просто внутренний язык скриптов сделали тьюринг-полным, но теперь я вижу, что всё намного сложнее.
Не совсем понял, зачем нужно было вводить сущность «топливо»? Почему не платить за каждый оператор виртуальной машины эфиром? И стоимость должна определяться динамически — майнерами. Выделил на контракт мало валюты — майнеры не заинтересовались, код контракта не выполняется. Всё по аналогии с комиссиями транзакций в биткоине. Сейчас же в эфириуме слишком много зависит от жёстко зашитых переменных в коде — система слишком централизована.

С хранением данных тоже как-то перемудрили. Неужели сложно было так же сделать некий «аукцион» — кто больше платит, те данные и храним?

Я понимаю, что я далеко не Виталик, и, наверное, по другому сделать было нельзя по тем или иным причинам, но блин… Хочется чего-нить такого — geektimes.ru/post/222493, чтобы восхищаться гениальностью эфириума, как я восхищаюсь простотой и гениальностью биткоина, но пока эфириум мне нравится всё меньше и меньше.
да, тоже хотелось бы подробного объяснения причин введения топлива.
Транзакция считается корректной только тогда, когда она прошла процесс проверки – так называемый «майнинг»


Про какую транзакцию идет речь? А если я хочу передать некоторое кол-во эфиров с одного кошелька на другой кошелек — это же транзакция и для этого надо майнить? Лично мне не очень понятно.
Да, это транзакция, которую надо майнить. Вообще весь блокчейн держится на нодах и майнерах. Нода — это приложение-база данных о всех подтвержденных транзакциях в системе и неком пуле новых неподтвержденных. Нода на связи еще с несколькими нодами, чтобы оперативно получать / отдавать изменения. Майнеры цепляются к ноде, выбирают из пула самые вкусные транзакции (где вознаграждение побольше) и формируют из них новый блок определенного размера. Далее начинают подбирать хеш определенного вида для этого блока. Если успевают вперед других — то нода всем рассылает обновление и все майнеры начинают работать со следующим блоком (возможны коллизии, они решаемы без проблем). Транзакция считается более-менее надежно подтвержденной, когда ее хотябы три майнера подтвердили — меньше шансов, что ее откатят по коллизии.
Что-то нигде не описывают механизм обмена сообщениями — как узел инициирующий транзакцию рассылает её всем остальным узлам? Как потом скачивается новый блок?
Должен же быть какой-то протокол всех этих взаимодействий.

Обнаруживаются узлы (для начала процесса нужно знать один адрес любого узла из сети) и скачиваются блоки видимо по Kademlia-подобной P2P сети (без DHT) https://github.com/ethereum/devp2p/blob/master/rlpx.md


The current version of RLPx provides a network layer for Ethereum.…
RLPx utilizes Kademlia-like routing which has been repurposed as a p2p neighbour discovery protocol.
Node discovery and network formation are implemented via a kademlia-like UDP.

https://github.com/ethereum/wiki/wiki/Ethereum-Wire-Protocol


Two peers connect & say Hello and send their Status message. Status includes the Total Difficulty(TD) & hash of their best block.
The client with the worst TD asks peer for full chain of just block hashes.
Chain of hashes is stored in space shared by all peer connections, and used as a "work pool".
While there are hashes in the chain of hashes that we don't have in our chain:
Ask for N blocks from our peer using the hashes. Mark them as on their way so we don't get them from another peer.

Сообщением NewBlock нашедший сообщает пирам о новом блоке. Кто предъявит более длинную цепочку, тот и прав (Consensus is based on choosing the block with the highest total difficulty. — https://github.com/ethereum/wiki/wiki/Mining). Пиры обмениваются новыми блоками (и видимо регулярно сообщают о новых total difficulty).


Сообщением Transactions любой узел предлагает транзакцию для помещения в очередь.
Эти сообщения узел рассылает своим 5 пирам, а каждый из них может переслать своим пирам.

> Сообщением NewBlock нашедший сообщает пирам о новом блоке. Кто предъявит более длинную цепочку, тот и прав
> Сообщением Transactions любой узел предлагает транзакцию для помещения в очередь. Эти сообщения узел рассылает своим 5 пирам, а каждый из них может переслать своим пирам

вопрос масштабирования, допустим блок кто-то рассчитал — как быстро он распространится по всей сети? Аналогично и с транзакцией при условии что сеть охватила всю планету? Вроде в биткойне есть какие-то полные ноды, которые как бы центральные узлы и видимо должны ускорять процесс распространения информации.

Полные ноды — не центральные узлы, а узлы p2p сети. В Эфирной сети тоже есть полные ноды (но вроде можно не сразу выкачивать весь блокчейн, а делать запросы getBlock когда потребуется). В https://ethereum.stackexchange.com/questions/4108/what-are-the-valuable-benefits-of-having-a-node пишут что без полной ноды для отправки транзакции нужен RPC-запрос к полной ноде (Light-client-protocol?). Полные ноды будут важны после (постоянно откладываемого) перехода с PoW (gpu-майнинг) на PoS (Форжинг/Минтинг).


Транзакции распространяются по сети за секунды (до десятка) — https://ethereum.stackexchange.com/questions/5699/how-long-is-it-from-the-time-a-transaction-is-sent-until-it-is-viewable-on-pendi — за счет того что в p2p сети каждый узел знает еще k узлов (например 5; они выбираются по псевдослучайному алгоритму) и производит broadcast как новых транзакций, так и блоков (эфирные блоки небольшие, размером в килобайты) — т.е. рассылка как в биткоине — https://bitcoin.stackexchange.com/questions/32237/how-are-transactions-broadcast-to-the-rest-of-the-network, https://bitcoin.org/bitcoin.pdf 5. Network — 1) New transactions are broadcast to all nodes.… 4) When a node finds a proof-of-work, it broadcasts the block to all nodes.


В эфире есть вознаграждение не только за блоки в основной (самой длинной) цепочке, но и за свежие Uncle Blocks — https://bitcoin.stackexchange.com/questions/39329/in-ethereum-what-is-an-uncle-block "Uncles are stale blocks, ie with parent that are ancestors (max 6 blocks back) of the including block. Valid uncles are rewarded in order to neutralise the effect of network lag on the dispersion of mining rewards, thereby increasing security. Uncles included in a block formed by the successful PoW miner receive 7/8 of the static block reward = 4.375 ether A maximum of 2 uncles allowed per block."


Не нашел размера сети в узлах, но на ethstats.net можно наблюдать за жизнью около сотни узлов (которые были добавлены на сайт) и за скоростью рассылки нового блока между ними. 75% блоков распространяются менее чем за 1,5 секунды, 90% блоков распространяются за 6 секунд. Там же видны какие-то peer count и pending transactions на узлах.

Благодарю за подробные объяснения, хотя то что сейчас транзакции и блоки относительно быстро расходятся по сети не означает что также будет с ростом сети, и даже не означает что зависимость линейная.
Кстати, мне кажется и Pow и PoS (с владением денег) это пустые идеи, никакой децентрализации тут не получится, как видно на примере биткойна мощности вполне можно сосредоточить в одних руках, а уж в возможности сосредоточить в одних руках деньги никто и не должен был бы сомневаться — мы живём в мире где 1% населения владеют почти половиной богатств.
Чтобы была децентрализация узлом сети должен быть реальный человек. Один человек — один голос.
зависимость линейная.

Зависимость в p2p сети (для диаметра сети и для количества "рукопожатий" от числа узлов) логарифмическая: https://en.wikipedia.org/wiki/Distributed_hash_table "Beyond basic routing correctness, two important constraints on the topology are to guarantee that the maximum number of hops in any route (route length) is low, so that requests complete quickly; and that the maximum number of neighbors of any node (maximum node degree) is low, so that maintenance overhead is not excessive. Of course, having shorter routes requires higher maximum degree."


Проблемы масштабирования — в первую очередь из-за быстрого роста объема блокчейна (десятки ГБ? https://www.reddit.com/r/ethereum/comments/5om2lw/current_ethereum_blockchain_size/, https://twitter.com/TuurDemeester/status/874149251462434816/photo/1), а не из-за роста размера сети.


Биткоин не в одних руках, а в 12 пулах, крупнейшие из которых имеют 17, 14, 12, 11 % — https://blockchain.info/pools от 340+ МВт https://geektimes.ru/post/245936/#comment_8364378 (~тонна CO2 за 1 биткоин, ~0.5 млн долларов в сутки на оплату электричества)

Ну сеть пока очень мала, хотя логарифмическая зависимость это неплохое масштабирование.
С объёмом блокчейна проблема не очень понятна — надо лишь залежавшиеся койны поднимать в свежие блоки (делать свежую транзакцию на тот же кошелёк), тогда в старых блоках ничего нужно не будет и их можно будет выбрасывать. Точнее тот кто в сети не участвует и не поднимает свои койны тому придётся платить за проведение транзакции нуждающейся в полном блокчейне.
Да, помимо того что 4 пула уже больше половины сети составляют, они ещё и вхолостую энергию в тепло переводят, просто супер методика.
Во первых, пулы майнят не своими мощностями, а мощностями пользователей. Если какой-то пул начнёт играть не по правилам, и об этом станет известно сообществу, существенную часть своих мощностей такой пул потеряет, так что всё в общем-то неплохо на данный момент.

Насчёт электроэнергии… А сколько энергии вхолостую в тепло переводит VISA или PayPal? А сколько человекочасов уходит на поддержание этих систем?) Поддержка криптовалют гораздо более экономична.
А что значит мощности пользователя? Это раньше это был компьютер дома у человека, а сейчас это железки в далёком китайском датацентре, они может формально и принадлежат каким-то пользователям, но при необходимости их легко изымут в пользу Китайского правительства или кого-то ещё.

> Насчёт электроэнергии… А сколько энергии вхолостую в тепло переводит VISA или PayPal?

сколько? и как она растёт со временем и с количеством транзакций?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории