5

Блокированные сети, такие как Ethereum, используют язык на основе стека на своих виртуальных машинах для обработки смарт-контрактов. Эта модель очень удобна, поскольку она обеспечивает простой механизм для измерения объема работы, требуемой для запуска программ: просто исправьте затраты для каждой примитивной операции и суммы.Как точно измерить усилия, необходимые для уменьшения λ-терма?

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

+3

Такая мера не может быть независимой от стратегии оценки. Внешняя оценка приведет к сокращению сроков до нормальной формы, что самое внутреннее не будет. Например, 'const() (fix id)'. При внешней оценке этот термин будет сведен к нормальной форме за один шаг. С самой внутренней оценкой это приведет к бесконечному циклу 'fix id', поэтому стоимость будет бесконечной. 'fix' - это' Data.Function'. – jpath

+0

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

+0

К шагу я имею в виду применение лямбда-абстракции к ** одному ** аргументу или применение примитивной операции к ее аргументам. – jpath

ответ

1

«Просто исправить стоимость для каждой примитивной операции и суммы» сделать нелегко. Сетевая цепочка динамически определяет истинное значение своего токена для любого значения, которое предоставляет минимум его токена. Например, газ стоит того, что мир хочет заплатить за его использование в качестве единицы расчета на мировом компьютере. Чтобы точно измерить усилия, потраченные сетью, чтобы обеспечить значение единицы его токена, нам нужен алгоритм DMMS (как описано в бумаге боковых цепей) &, что является не чем иным, как блок-цепочкой для проверки работоспособности.

Для каждой примитивной операции требуется ее собственная блочная цепь, чтобы ее значение определялось точно. Когда несколько маркеров реализованы по одной цепочке, например, цветные/пользовательские монеты, он не может точно измерить значение единицы.

В случае функционального языка можно представить себе блок-блок lisp с примитивами paul graham, реализованными как код операции (интерпретатор на основе стека не имеет значения), который будет завершен, но будет страдать от проблемы определения истинного значения каждого кода операции; самый дешевый всегда будет оскорблен, как видно на ethereum (дешевизна функции самоубийства была спама).

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

Люди, у которых есть альтернативы доказательству работы, не согласятся с вышеизложенным. Cryptocurrency - это новое поле, и математика недостаточно зрелая, чтобы кто-нибудь мог предъявить конкретные требования.

 Смежные вопросы

  • Нет связанных вопросов^_^