Comments 21
Примеры использования контрактов кстати есть на хабре (на Solidity — JavaScript-подобный язык), например habrahabr.ru/post/312008 и habrahabr.ru/post/327236
Ну и в дополнение про дыры — habrahabr.ru/company/neobit/blog/324456
Теперь есть куда отправлять друзей вместо попыток самому донести информацию
«время блокировки в Эфириуме намного ниже (примерно 15 секунд), чем для других блокчейнов, например, для биткоинов (примерно 10 секунд)» такие вещи вообще сводят с ума. примерно 15 секунд намного ниже чем примерно 10 секунд?
или перевод отвратительный или статья отвратительная.
Не совсем понял, зачем нужно было вводить сущность «топливо»? Почему не платить за каждый оператор виртуальной машины эфиром? И стоимость должна определяться динамически — майнерами. Выделил на контракт мало валюты — майнеры не заинтересовались, код контракта не выполняется. Всё по аналогии с комиссиями транзакций в биткоине. Сейчас же в эфириуме слишком много зависит от жёстко зашитых переменных в коде — система слишком централизована.
С хранением данных тоже как-то перемудрили. Неужели сложно было так же сделать некий «аукцион» — кто больше платит, те данные и храним?
Я понимаю, что я далеко не Виталик, и, наверное, по другому сделать было нельзя по тем или иным причинам, но блин… Хочется чего-нить такого — 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 пирам, а каждый из них может переслать своим пирам.
> Сообщением 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?
сколько? и как она растёт со временем и с количеством транзакций?
Как работает Эфириум (Ethereum)?