В чем смысл создания новых интеллектуальных контрактных языков, таких как Solidity, вместо использования других языков?

Каковы плюсы и минусы создания новых языков, таких как Solidity для интеллектуальных контрактов, вместо использования других компьютерных языков, таких как Golang или Python?

18 голосов | спросил Satoshi Nakanishi 17 AMpSun, 17 Apr 2016 09:11:28 +030011Sunday 2016, 09:11:28

1 ответ


26

Каждый язык программирования предназначен для конкретной операционной среды и целевых задач; и эти ограничения приводят почти все проектные решения о том, какие функции поддерживать, а какие - опускать.

Некоторое время назад я потратил довольно много времени на создание Go -> EVM кросс-компилятор. Мне удалось запустить несколько простых программ, и это определенно было очень весело, но довольно скоро я начал сталкиваться с ограничениями EVM, которые сталкиваются с основными предположениями позади Go:

  • Каждому горотину требуется память не менее 64 КБ. Тривиально низкий для любого приличного оборудования в наши дни, но чрезмерно высокий и дорогой для EVM.
  • Go использует диспетчер памяти уровня операционной системы. Это означает, что для запуска программ Go на EVM нам нужно разработать диспетчер микропамяти поверх EVM, который может поддерживать операции, необходимые Go. Я разработал POC-версию Ассигнования памяти Buddy Memory , но это основано на том, что память ограничена и исправлена , и выделяет в нем произвольные куски. EVM, с другой стороны, является «бесконечным» и заряжает на максимальное выделенное смещение. Таким образом, все обычные algos распределения памяти будут страдать, так как они предполагают, что затраты на память постоянны, тогда как EVM является позиционной оценкой даже экспоненциальной.
  • Go - это сборник мусора, поэтому для каждого распределения памяти необходимо также поддерживать опорные счетчики, которые должны хорошо воспроизводиться с помощью распределителя памяти. Опять-таки невозможно решить, но связанные с ним операционные и нелинейные затраты на память делают это очень дорого.
  • Даже если проблемы с памятью будут решены, вам все равно нужно будет найти решения для примитивов syncronization, прерываний операционной системы и других конструкций strage, которые мы склонны воспринимать как должное, но EVM не имеет.

Эти проблемы были основными, почему я решил не продолжать мой порт Go в EVM, но они действительно подчеркивают, что современные языки основаны на бесчисленных функциях, поддерживаемых базовыми операционными системами, которые сами основаны на предположениях о том, что базовое оборудование способно и связанные с этим затраты.

EVM - это совсем другой зверь из этого аспекта, поэтому применение тех же допущений приводит к очень субоптимальному выполнению кода. Следовательно, почему было принято решение, разработать язык, специально предназначенный для среды исполнения EVM. На самом деле, вероятно, гораздо больше работы, чем перенос существующего синтаксиса (!), Но это также приводит к использованию удобной среды или наличия всех «документированных ограничений», которые хотя и действительны. Код Go , вы не можете использовать его, потому что «xyz».

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

ответил Péter Szilágyi 17 PMpSun, 17 Apr 2016 13:27:31 +030027Sunday 2016, 13:27: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