Ethereum + Swarm + λ = Moon, универсальный формат обмена кодами
Я только что опубликовал первую версию лунного языка. Я до сих пор не написал о нем надлежащего введения, но прежде я расскажу немного об одной из самых крутых его функций: децентрализованном импорте.
У Moon нет диспетчера пакетов, как у большинства языков, и приложения Moon не предназначены для размещения на обычных серверах. Вместо этого, когда вы хотите опубликовать библиотеку, программу или приложение, вы используете сеть Ethereum / Swarm. Вот как это работает:
- Вы создаете классную программу и называете ее
coolProgram.moon
. - Заходишь в терминал и набираешь
moon publish coolProgram.moon
. - Источник
coolProgram
отправляется в децентрализованное хранилище Swarm. - SwarmHash зарегистрирован на Ethereum под именем
coolProgram
. - Кто-то пытается использовать
coolProgram
в своем собственном лунном коде. - Moon следует обратным путем и восстанавливает ваш исходный код.
- …?
- Децентрализованный импорт!
Это круто по многим причинам. Он не только позволяет людям обмениваться кодом и приложениями так же легко, как и раньше, но также придает этим кодам / приложениям те же замечательные свойства, что и децентрализованные сети. Если coolProgram
- это, например, веб-приложение, люди сразу же смогут получить к нему доступ в браузерах DApp, таких как Mist. Не нужно беспокоиться о стоимости хостинга, DDOS-атаках, цензуре и т. д.: пока есть люди, использующие coolProgram
, он будет оставаться в сети!
Пример
Предположим, вы написали лунную программу, которая вычисляет чей-то Индекс массы тела. Вы называете это personBMI.moon:
(Пока не обращайте внимания на синтаксис, это все еще обсуждается.)
Теперь вы очень гордитесь своим творением и хотите, чтобы мир увидел его, но вы ничего не знаете о хостинге. Не беспокойтесь, Луна здесь для вас. Но сначала вам нужно проверить, есть ли в вашем CLI Ether:
Если его баланс равен нулю, не волнуйтесь. Публикация обходится очень дешево, поэтому вы можете просто попросить друга отправить несколько центов на адрес вашего интерфейса командной строки:
Получив его, вы можете опубликовать свой код с помощью moon publish
:
Вы увидите несколько сообщений с подробным описанием этого процесса:
И готово! Теперь любой другой человек в мире может использовать personBMI
, либо сославшись на него внутри программы Moon, либо вызвав его прямо на терминале:
Теперь предположим, что друг только что позвонил вам, чтобы спросить, нет ли у него лишнего веса. Вы могли бы быть откровенно честными об этом… или вы могли бы написать для этого (терминальный) DApp!
Сохраните его как whatsMyBMI.moon
и введите moon publish whatMyBMI
. Теперь вы можете просто попросить его спросить Мун напрямую:
Ваш (терминальный) DApp будет разрешен в Ethereum, загружен из Swarm, а затем запущен на консоли вашего друга. Круто, не правда ли? Попробуйте запустить его!
Примечание: если вас смущает тот факт, что мы используем print
s и getLine
s в самопровозглашенном чистом языке, не волнуйтесь: это просто адаптация нотации Идриса для монадические вычисления. Но это тема для другого поста. Загляните в Репозиторий Луны, чтобы узнать о других интересных вещах!