В чем причина изобретения EVM?

В чем причина изобретения виртуальной машины Ethereum (EVM)? Почему бы не использовать существующую виртуальную машину, такую ​​как Java-VM. Большим преимуществом было бы использование существующих наборов инструментов для разработки Java.

24 голоса | спросил mKoeppelmann 21 Jam1000000amThu, 21 Jan 2016 02:52:33 +030016 2016, 02:52:33

3 ответа


14

Таким образом, важным моментом в вашем вопросе является то, почему новая виртуальная машина, а не виртуальная машина Java. ok, давайте вместо этого выбираем Java VM, что мы получим?

1 - complex . Байт-код (класс) => как его хранить, в блокчейне, для которого стоит? (Знание того, что один Java-метод может иметь размер до 64 КБ), поэтому такая виртуальная машина или язык не экономит место.

2 - бесполезные функции и проблемы безопасности . Сетевой доступ, поток ввода-вывода, файл W /R ... => каждая из этих функций подразумевает большую безопасность вопросы. подумайте об этом, вы можете написать код, который ping (смерти) другой машины или доступ к защищенным файлам или даже украсть секретные ключи майнера. Даже песочница может произойти, и файл «запись /чтение» может нарушить безопасность всей системы. поэтому нам нужно избавиться от всех этих функций, что является трудной задачей для лицензированной виртуальной машины. Нам нужно помнить, что VM Blockchain должна быть изолирована без возможности взаимодействия с внешним environement.

3 - , если вы используете JVM, это означает, что вы будете использовать Java или другой язык JVM, которые не адаптированы к контексту blockchain (отсутствие детерминизма, памяти и оборудования доступ, более высокая латентность выполнения, плавающая точка и т. д.). Представьте, что у вас есть байт-код Java с rand (), каков будет результат и как достичь консенсуса тогда?

4 - Слабое сопротивление DDos (как установить газоподобную систему в сложной VM, как Java VM?).

3 - JAVA VM является лицензированным продуктом Sun , поэтому вы не можете настроить его для интеграции это в среду Ethereum (например, как бы вы подсчитали стоимость газа, чтобы избежать атак Dos?)? для решения этой проблемы вам нужно написать свою собственную виртуальную машину Java, которая представляет собой сложную задачу: https: //softwareengineering.stackexchange.com/questions/71561/java-and-jvm-license .

Кроме того, вы можете проверить этот ответ о том, зачем создавать новый язык контракта: Что такое заслуга создания новых интеллектуальных контрактных языков, таких как Solidity, вместо использования других языков?

ответил Badr Bellaj 16 +03002016-10-16T15:40:58+03:00312016bEurope/MoscowSun, 16 Oct 2016 15:40:58 +0300 2016, 15:40:58
21

Виталик Бутерин выступил с сообщением об Ethereum для Hyperledger 28 апреля 2016 года и имел этот слайд:

Требования к EVM

â- Маленький размер кода (так что очень много контрактов от многие пользователи могут быть сохранены одним узлом)

â - защита виртуальной машины, разработанная для запуска ненадежных код от произвольных сторон

â- Несколько реализаций (для перекрестной проверки и для уменьшения централизации разработчиков в цепь)

â- Perfect детерминизм (для достижения консенсуса)

â- Бесконечное сопротивление петли

  • Это само должно быть выполнено отлично детерминировано; таймауты - это не-go

Виталик уточнил третий пункт в качестве централизации разработчиков, наблюдаемый в Биткойне, где одна реализация считается протоколом.

В презентации не было времени для обсуждения оценки с существующими виртуальными машинами.

ответил eth 28 PMpThu, 28 Apr 2016 18:35:45 +030035Thursday 2016, 18:35:45
7

Смарт-контракты должны иметь абсолютно детерминированный результат, поскольку на нем будут работать несколько машин. Также необходимо было сохранить состояние в блок-цепочке. Поскольку никакая виртуальная машина не отвечала этим требованиям, необходимо было создать новую. EVM был создан для удовлетворения всех требований, позволяя максимально использовать гибкость.

ответил Shelvacu 22 Jam1000000amFri, 22 Jan 2016 09:47:31 +030016 2016, 09:47:31

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132