2019年09月20日

白書:次世代のスマート契約と分散アプリケーション・プラットフォーム(57)


  • The alternative to Turing-completeness is Turing-incompleteness, where  JUMP and  JUMPI   do not exist and only one copy of each contract is allowed to exist in the call stack at any given time. With this system, the fee system described and the uncertainties around the effectiveness of our solution might not be necessary, as the cost of executing a contract would be bounded above by its size. Additionally, Turing-incompleteness is not even that big a limitation; out of all the contract examples we have conceived internally, so far only one required a loop, and even that loop could be removed by making 26 repetitions of a one- line piece of code. Given the serious implications of Turing-completeness, and the limited benefit, why not simply have a Turing-incomplete language? In reality, however, Turing-incompleteness is far from a neat solution to the problem. To see why, consider the following contracts:
    チューリング - 完全性代替はチューリング - 不完全性です、そこではJUMPとJUMP I が存在しません、そしてただそれぞれの契約の1コピーだけが随時コールスタックに存在することが許されます。 このシステムで、契約を実行するコストがそのサイズによって上に境界を引かれるであろうから、説明された費用システムと我々の解決の効果の周りの不確実性は必要ないかもしれません。 さらに、チューリング - 不完全性はそれほど大きい限界でさえありません; すべての契約例から我々は内部に、これまでのところたった1がループをを必要とした、そしてそのループさえ、1行の一片のコードの26の反復をすることによって、取り去られる可能性があるかもしれない。 チューリング - 完全性の重大な帰結的意味と限定された恩恵を与えられて、なぜチューリング - 不完全な言語を単に持たないのか? しかしながら、実際は、チューリング - 不完全性は問題に対する手際が良い解決から遠いです。 なぜか見るために、次の契約を考慮してください:

    C0:  call(C1);  call(C1);
    C1:  call(C2);  call(C2);
    C2:  call(C3);  call(C3);
    ...
    C49:  call(C50);  call(C50);
    C50:  (run  one  step  of  a  program  and  record  the  change  in  storage)

    Now, send a transaction to A. Thus, in 51 transactions, we have a contract that takes up 250 computational steps. Miners could try to detect such logic bombs ahead of time by maintaining a value alongside each contract specifying the maximum number of computational steps that it can take, and calculating this for contracts calling other contracts recursively, but that would require miners to forbid contracts that create other contracts (since the creation and execution of all 26 contracts above could easily be rolled into a single contract). Another problematic point is that the address field of a message is a variable, so in general it may not even be possible to tell which other contracts a given  contract will call ahead of time. Hence, all in all, we have a surprising conclusion: Turing-completeness is surprisingly easy to manage, and the lack of Turing- completeness is equally surprisingly difficult to manage unless the exact same controls are in place - but in that case why not just let the protocol be Turing- complete?
    今、取引きをA.に送ってください。 それで、51の取引で、我々は250のコンピュータステップを取り上げる契約を持っています。 鉱夫が、それがとることができるコンピュータステップの最大番号を指定しているそれぞれの契約書と並んで値を維持して、そして回帰的に他の契約を呼んでいる契約のためにこれを計算することによって、事前にこのようなロジック爆弾を発見しようとすることが可能でしょうが、しかしそれは鉱夫に、(上記のすべての26の契約の生成と実行が容易に一つの契約に合体することができるでしょうから)、他の契約を作る契約を禁じるように要求するでしょう。 もう1つの問題のポイントはメッセージのアドレスフィールドが変数であるということで、それで一般に所定の契約が事前にどの他の契約を呼ぶであろうか言うことは可能でありさえしないかもしれません。 それ故、全般的に見て、我々は驚くべき結論を持っています: チューリング - 完全性が驚くほど処理することが容易である、そしてチューリング - 完全性の欠如は正確に同じコントロールが実施されていないなら管理することが等しく驚くほど難しい − しかしその場合でプロトコールをチューリング - 完全であるようにしていいはずです。

=====================================================================
 

人気ブログランキングへ人気ブログランキングへ

=====================================================================

posted by 平成アフィリエイトへの挑戦 at 11:57| 千葉 ☀| Comment(0) | イーサリアム | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス: [必須入力]

ホームページアドレス: [必須入力]

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。