5

Ethereumなどのブロックチェーンは、スマートコントラクト処理仮想マシンでスタックレジスタベースの言語を使用します。このモデルは、プログラムを実行するために必要な作業量を測定する単純なメカニズムを提供するので非常に便利です。各プリミティブ操作と合計のコストを修正するだけです。λ項を減らすために必要な努力を正確に測定する方法は?

仮想マシンの代わりに、スマートコントラクトを特長とするブロックチェーンが、ハスケルのコアなどの関数型プログラミング言語を使用しているとします。機能的なプログラムを実行するために必要な作業の量を測定する簡単で正確な方法はありますか?ノードがあらゆる評価戦略を使用できることを念頭に置いて、そのような測定は普遍的でなければなりません。

+3

このような措置は、評価戦略の独立性がありません。最も外側の評価は用語を通常の形に、その最も内側のものはそうしないように縮小する。たとえば、 'const()(fix id)'のようになります。最も外側の評価では、この用語は1つのステップで通常の形に縮小されます。一番内側の評価では、これは無限ループの 'fix id'を実行するので、コストは無限になります。 'fix'は' Data.Function'からのものです。 – jpath

+0

実際には、すべての可能な評価戦略に対して用語を標準形式に縮小するための最小ステップ数として定義すると、評価戦略とは独立しています。しかし、それは遅延評価を使用する際に必要なステップ数と同じであり、これは他の評価方法にとって有用な手段ではないと私は考えています。 – jpath

+0

ステップでは、λ抽象化を** one **引数に適用するか、またはプリミティブ操作をその引数に適用することを意味します。 – jpath

答えて

1

"各プリミティブ演算と合計のコストを修正するだけです"は簡単ではありません。ブロックチェーンネットワークは、そのトークンの最小値が提供する任意の値について、そのトークンの真の値を動的に決定する。たとえば、世界のコンピュータ上で計算の単位として使用するために、世界が支払うことを望むものはどれも価値があります。トークンの単価を保証するためにネットワークが費やした労力を正確に測定するには、DMMSアルゴリズム(サイドチェーンペーパーに記載されているように)&が必要です。これは作業証明のブロックチェーンに過ぎません。

各プリミティブ演算は、その値が正確に決定されるために独自のブロックチェーンを必要とします。 1つのブロックチェーンで複数のトークンが実装されている場合(たとえば、色付き/カスタムコインの場合)、ユニットの値を正確に測定することはできません。

関数型言語の場合、paul grahamの7つのプリミティブがopcode(スタックベースの解釈子は無関係です)で実装されたlispブロックチェーンを想像できますが、これは完全なチューリングですが、真の値を決定するという問題があります各オペコードの最も安価なものは、エテリアム(自殺機能の安さがスパムされている)で明らかであるように、常に虐待されるだろう。

したがって、機能的チューリング完全ブロックチェインを実現するには、それぞれプリミティブ計算に必要な労力の真の価値をそれぞれ独立に決定する7ブロックチェーンの編組ネットワークが必要です。

作業証明の代替案を持っている人は、上記に同意しません。 Cryptocurrencyは新しい分野であり、数学は誰でも具体的な主張をするのに十分成熟していません。

関連する問題