Bitcoin Forum

Local => Кодеры => Topic started by: Slava79 on April 18, 2018, 05:10:58 PM



Title: Функциональный язык для смарт контрактов
Post by: Slava79 on April 18, 2018, 05:10:58 PM
Читал в последнее время о катастрофах, произошедших из за того, что смарт контракты были недостаточно хорошо протестированы, содержали баги итп.

Стало интересно, есть ли такая криптовалюта, в которой смарт контракты пишутся на функцинальном языке программирования, с использованием чистых функций? Что то типа Haskell, OCaml, F#?

Мне кажется это бы сильно уменьшило стоимость разработки и количество ошибок, тестировать было бы легче.

Немного погугулил, нашел только https://www.fstar-lang.org/ - его вроде как потенциально планируют для этих целей, но это не совсем то.


Title: Re: Функциональный язык для смарт контракто&#
Post by: MuaddibCo on April 18, 2018, 08:14:00 PM
Как архитектор с 20-ти летним стажем в программировании - количество багов никогда не определяется средствами программирования, но всегда прослойкой между стулом и монитором. Даже на самом лучшем языке люди совершают грубые ошибки, и во многом из-за уверенности, что среда разработки за них все подправит.


Title: Re: Функциональный язык для смарт контракто&#
Post by: Slava79 on April 19, 2018, 08:29:08 AM
Как архитектор с 20-ти летним стажем в программировании - количество багов никогда не определяется средствами программирования, но всегда прослойкой между стулом и монитором. Даже на самом лучшем языке люди совершают грубые ошибки, и во многом из-за уверенности, что среда разработки за них все подправит.

Конечно, согласен полностью.

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





Title: Re: Функциональный язык для смарт контракто&#
Post by: Slava79 on April 27, 2018, 08:39:38 AM
В дополнение, как иллюстрация реальности проблемы https://support.okex.com/hc/en-us/articles/360003019292-ERC-20-Tokens-Deposit-Suspended


Title: Re: Функциональный язык для смарт контракто&#
Post by: unixty on April 29, 2018, 03:25:23 PM
Как архитектор с 20-ти летним стажем в программировании - количество багов никогда не определяется средствами программирования, но всегда прослойкой между стулом и монитором. Даже на самом лучшем языке люди совершают грубые ошибки, и во многом из-за уверенности, что среда разработки за них все подправит.

Поэтому всегда нужен тот, кто сможет подправить тебя, устранить ошибки.
Не нужно надеяться только на себя, лучше подключить знающих людей, но и это конечно же не даст 100% реультата, но 99% все таки сможет дать.


Title: Re: Функциональный язык для смарт контракто&#
Post by: rumkin on May 02, 2018, 04:50:04 PM
Забавно только начал делать нечто подобное, правда язык выбрал не такой низкоуровневый. Стало интересно что из этого может получиться. Все-таки функциональные языки содержат меньше абстракций и более предсказуемы.


Title: Re: Функциональный язык для смарт контракто&#
Post by: Slava79 on May 02, 2018, 09:11:14 PM
Забавно только начал делать нечто подобное, правда язык выбрал не такой низкоуровневый. Стало интересно что из этого может получиться. Все-таки функциональные языки содержат меньше абстракций и более предсказуемы.

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


Title: Re: Функциональный язык для смарт контракто&#
Post by: JasonLeavers on May 02, 2018, 10:06:58 PM
Кардана обещают будет на Хаскелеподобном языке.


Title: Re: Функциональный язык для смарт контракто&#
Post by: rumkin on May 03, 2018, 01:48:57 AM
Согласен, я думаю что язык разумнее выбрать более распространенный. Я сейчас использую в своем прототипе JavaScript но придерживаюсь подхода чистых функций.

Я выбрал elm. Советую присмотреться: очень лаконичный, минимум конструкций и сущностей. Помимо стандартных для js типов есть кортежи.


Title: Re: Функциональный язык для смарт контракто&#
Post by: Slava79 on May 03, 2018, 06:05:54 AM
Согласен, я думаю что язык разумнее выбрать более распространенный. Я сейчас использую в своем прототипе JavaScript но придерживаюсь подхода чистых функций.

Я выбрал elm. Советую присмотреться: очень лаконичный, минимум конструкций и сущностей. Помимо стандартных для js типов есть кортежи.

Мне нравится Elm, но с ним есть проблема, он поддерживается одним человеком. Как вариант рассматриваю PureScript.


Title: Re: Функциональный язык для смарт контракто&#
Post by: rumkin on May 03, 2018, 01:42:10 PM
Мне нравится Elm, но с ним есть проблема, он поддерживается одним человеком. Как вариант рассматриваю PureScript.

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


Title: Re: Функциональный язык для смарт контракто&#
Post by: Slava79 on May 03, 2018, 02:20:18 PM

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

Насчет сообщества согласен пожалуй. Целевая группа пользователей Elm может заинтересоваться проектом.  Хм... Но с Elm еще одна загвоздка, там интерфейс взаимодействия с JavaScript не очень прозрачный.

По поводу песочницы - если использовать Nashorn из  JDK 10,  там есть возможность сандбоксинга. Можно подключить любые языки, которые компилируются в JavaScript.


Title: Re: Функциональный язык для смарт контракто&#
Post by: rumkin on May 03, 2018, 06:50:16 PM
Хм... Но с Elm еще одна загвоздка, там интерфейс взаимодействия с JavaScript не очень прозрачный.

А мне как раз-таки нравится его способ взаимодействия с JS ) Что именно вы имеете в виду и какие задачи плохо ложатся на его модель?

По поводу песочницы - если использовать Nashorn из  JDK 10,  там есть возможность сандбоксинга. Можно подключить любые языки, которые компилируются в JavaScript.

У меня вызывает сомнение целесообразность вложения труда/ресурсов в Java-проекты в виду а) проприетарности, б) назревающей конкуренции с WASM и грядущей войне VM, в которой я ставлю на последнего )). Но это если говорить о самой Java, не сравнивая ее с Elm.


Title: Re: Функциональный язык для смарт контракто&#
Post by: Slava79 on May 03, 2018, 09:00:24 PM
Quote
А мне как раз-таки нравится его способ взаимодействия с JS ) Что именно вы имеете в виду и какие задачи плохо ложатся на его модель?

Да не то чтобы плохо ложатся, но дополнительная работа по интеграции из-за портов. В PureScript практически просто вызывается функция.

Спорно конечно.

Quote
У меня вызывает сомнение целесообразность вложения труда/ресурсов в Java-проекты в виду а) проприетарности, б) назревающей конкуренции с WASM и грядущей войне VM, в которой я ставлю на последнего )). Но это если говорить о самой Java, не сравнивая ее с Elm.

а) Кроме Oracle у  Java есть еще пара  коммерческих реализаций и одна open source - OpenJDK.
б) Популярные языки имеют обыкновение жить долго и умирать медленно. Грядущие войны, катастрофы, кто знает что произойдет. Да и привычно как то. Старая добрая Java.


Title: Re: Функциональный язык для смарт контракто&#
Post by: rumkin on May 04, 2018, 11:59:34 AM

Да не то чтобы плохо ложатся, но дополнительная работа по интеграции из-за портов. В PureScript практически просто вызывается функция.


Но насколько я понял из PureScript легко вызвать JS, а для песочницы это ненужное поведение и это небходимо как-то отключать. А у Elm по-умолчанию внешний мир недоступен. Или я ошибаюсь насчет PS?





Title: Re: Функциональный язык для смарт контракто&#
Post by: Slava79 on May 04, 2018, 08:47:49 PM

Но насколько я понял из PureScript легко вызвать JS, а для песочницы это ненужное поведение и это небходимо как-то отключать. А у Elm по-умолчанию внешний мир недоступен. Или я ошибаюсь насчет PS?


Все правильно, но мне это как раз подходит. Я же делаю сандбуксинг из Java.